def exercise_01(d_min=1.0):
  """
  Exercise maptbx.target_and_gradients_diffmap in action: minimization.
  """
  xrs = get_xrs()
  map_target, f_calc = get_map(xrs=xrs)
  assert approx_equal(xrs.sites_cart(), [[0,0,0]])
  for sx in [-1,0,1]:
    for sy in [-1,0,1]:
      for sz in [-1,0,1]:
        xrs_cp = xrs.deep_copy_scatterers()
        xrs_cp = xrs_cp.translate(x=0.3*sx, y=0.5*sy, z=0.7*sz)
        assert approx_equal(xrs_cp.sites_cart(), [[0.3*sx,0.5*sy,0.7*sz]],1.e-6)
        crystal_gridding = maptbx.crystal_gridding(
          unit_cell             = xrs_cp.unit_cell(),
          space_group_info      = xrs_cp.space_group_info(),
          pre_determined_n_real = map_target.accessor().all())
        o = minimization.run(
          xray_structure   = xrs_cp,
          miller_array     = f_calc,
          crystal_gridding = crystal_gridding,
          map_target       = map_target,
          step             = d_min/4,
          target_type      = "diffmap")
        assert approx_equal(xrs.sites_cart(), [[0,0,0]])
Esempio n. 2
0
 def refine(self, weight, sites_cart=None, xray_structure=None):
   assert xray_structure is not None and [sites_cart,xray_structure].count(None)==1
   self.refined = minimization.run(
     xray_structure              = xray_structure,
     miller_array                = self.miller_array,
     crystal_gridding            = self.crystal_gridding,
     map_target                  = self.map_target,
     max_iterations              = self.max_iterations,
     min_iterations              = self.min_iterations,
     step                        = self.step,
     real_space_target_weight    = weight,
     restraints_target_weight    = self.restraints_target_weight,
     geometry_restraints_manager = self.geometry_restraints_manager,
     target_type                 = "diffmap")
def exercise_02():
  """
  Exercise maptbx.target_and_gradients_diffmap in action: minimization
  (bigger model).
  """
  def compute_map(xray_structure, d_min=1.5, resolution_factor=1./4):
    fc = xray_structure.structure_factors(d_min = d_min).f_calc()
    fft_map = fc.fft_map(resolution_factor=resolution_factor)
    fft_map.apply_sigma_scaling()
    result = fft_map.real_map_unpadded()
    return result, fc, fft_map
  xrs = random_structure.xray_structure(
    space_group_info  = sgtbx.space_group_info("P212121"),
    elements          = ["N","C","O","S","P"]*10,
    volume_per_atom   = 50)
  map_target,tmp,tmp = compute_map(xray_structure = xrs)
  xrs_sh = xrs.deep_copy_scatterers()
  xrs_sh.shake_sites_in_place(mean_distance=0.8)
  start_error = flex.mean(xrs.distances(other = xrs_sh))
  assert start_error>0.7
  map_current, miller_array, crystal_gridding = compute_map(
    xray_structure = xrs_sh)
  for step in [miller_array.d_min()/4]*5:
    minimized = minimization.run(
      xray_structure              = xrs_sh,
      miller_array                = miller_array,
      crystal_gridding            = crystal_gridding,
      map_target                  = map_target,
      max_iterations              = 500,
      min_iterations              = 25,
      step                        = step,
      geometry_restraints_manager = None,
      target_type                 = "diffmap")
    xrs_sh = minimized.xray_structure
    map_current = minimized.map_current
    final_error = flex.mean(xrs.distances(other = minimized.xray_structure))
  assert approx_equal(start_error, 0.8, 1.e-3)
  assert final_error < 1.e-4
def exercise_04():
  """
  Exercise maptbx.target_and_gradients_simple in action: minimization
  (bigger model).
  """
  def compute_map(xray_structure, d_min=1., resolution_factor=1./4):
    fc = xray_structure.structure_factors(d_min = d_min).f_calc()
    fft_map = fc.fft_map(resolution_factor=resolution_factor)
    fft_map.apply_sigma_scaling()
    result = fft_map.real_map_unpadded()
    return result, fc, fft_map
  xrs = random_structure.xray_structure(
    space_group_info  = sgtbx.space_group_info("P212121"),
    elements          = ["N","C","O","S","P"]*10,
    volume_per_atom   = 150)
  map_target,tmp,tmp = compute_map(xray_structure = xrs)
  xrs_sh = xrs.deep_copy_scatterers()
  xrs_sh.shake_sites_in_place(mean_distance=0.3)
  start_error = flex.mean(xrs.distances(other = xrs_sh))
  assert start_error > 0.29
  map_current, miller_array, crystal_gridding = compute_map(
    xray_structure = xrs_sh)
  xrs_sh_ = xrs_sh.deep_copy_scatterers()
  minimized = minimization.run(
    xray_structure              = xrs_sh_,
    miller_array                = miller_array,
    crystal_gridding            = crystal_gridding,
    map_target                  = map_target,
    max_iterations              = 500,
    min_iterations              = 25,
    step                        = 0.5,
    geometry_restraints_manager = None,
    target_type                 = "simple")
  xrs_sh_ = xrs_sh_.replace_sites_cart(minimized.sites_cart)
  final_error = flex.mean(xrs.distances(other = xrs_sh_))
  assert final_error < 0.015