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]])
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