def d2_target_d_params_finite(f_obs, xray_structure, eps=1.e-8): result = flex.double() scatterers = xray_structure.scatterers() xray_structure_eps = xray_structure.deep_copy_scatterers() scatterers_eps = xray_structure_eps.scatterers() for i_scatterer in xrange(len(scatterers)): if (not scatterers[i_scatterer].flags.use_u_aniso()): np = 7 else: np = 12 dx = [] for ix in xrange(np): gs = [] for signed_eps in [eps, -eps]: si_eps = scatterer_as_list(scatterers[i_scatterer]) si_eps[ix] += signed_eps scatterers_eps[i_scatterer] = scatterer_from_list(si_eps) sf = structure_factors(xray_structure=xray_structure_eps, miller_set=f_obs) dp = sf.d_target_d_params(f_obs=f_obs, target_type=least_squares) gs.append(dp) result.extend((gs[0] - gs[1]) / (2 * eps)) scatterers_eps[i_scatterer] = scatterers[i_scatterer] return result
def d_target_d_params_finite(f_obs, xray_structure, eps=1.e-8): result = flex.double() scatterers = xray_structure.scatterers() xray_structure_eps = xray_structure.deep_copy_scatterers() scatterers_eps = xray_structure_eps.scatterers() for i_scatterer in xrange(len(scatterers)): if (not scatterers[i_scatterer].flags.use_u_aniso()): np = 7 else: np = 12 dx = [] for ix in xrange(np): ts = [] for signed_eps in [eps, -eps]: si_eps = scatterer_as_list(scatterers[i_scatterer]) si_eps[ix] += signed_eps scatterers_eps[i_scatterer] = scatterer_from_list(si_eps) sf = structure_factors(xray_structure=xray_structure_eps, miller_set=f_obs) sum_target_f = 0 for obs, f in zip(f_obs.data(), sf.fs()): target = least_squares(obs=obs, calc=f) sum_target_f += target.f() ts.append(sum_target_f) result.append((ts[0] - ts[1]) / (2 * eps)) scatterers_eps[i_scatterer] = scatterers[i_scatterer] return result
def d_target_d_params_finite(f_obs, xray_structure, eps=1.e-8): result = flex.double() scatterers = xray_structure.scatterers() xray_structure_eps = xray_structure.deep_copy_scatterers() scatterers_eps = xray_structure_eps.scatterers() for i_scatterer in xrange(len(scatterers)): if (not scatterers[i_scatterer].flags.use_u_aniso()): np = 7 else: np = 12 dx = [] for ix in xrange(np): ts = [] for signed_eps in [eps, -eps]: si_eps = scatterer_as_list(scatterers[i_scatterer]) si_eps[ix] += signed_eps scatterers_eps[i_scatterer] = scatterer_from_list(si_eps) sf = structure_factors( xray_structure=xray_structure_eps, miller_set=f_obs) sum_target_f = 0 for obs,f in zip(f_obs.data(), sf.fs()): target = least_squares(obs=obs, calc=f) sum_target_f += target.f() ts.append(sum_target_f) result.append((ts[0]-ts[1])/(2*eps)) scatterers_eps[i_scatterer] = scatterers[i_scatterer] return result
def d2_target_d_params_finite(f_obs, xray_structure, eps=1.e-8): result = flex.double() scatterers = xray_structure.scatterers() xray_structure_eps = xray_structure.deep_copy_scatterers() scatterers_eps = xray_structure_eps.scatterers() for i_scatterer in xrange(len(scatterers)): if (not scatterers[i_scatterer].flags.use_u_aniso()): np = 7 else: np = 12 dx = [] for ix in xrange(np): gs = [] for signed_eps in [eps, -eps]: si_eps = scatterer_as_list(scatterers[i_scatterer]) si_eps[ix] += signed_eps scatterers_eps[i_scatterer] = scatterer_from_list(si_eps) sf = structure_factors( xray_structure=xray_structure_eps, miller_set=f_obs) dp = sf.d_target_d_params(f_obs=f_obs, target_type=least_squares) gs.append(dp) result.extend((gs[0]-gs[1])/(2*eps)) scatterers_eps[i_scatterer] = scatterers[i_scatterer] return result