コード例 #1
0
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
コード例 #2
0
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
コード例 #3
0
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
コード例 #4
0
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