def tst_02(args, prefix=None): if prefix is None: prefix = 'tst_02' # Full good answer model pdb_file_name_answer_full = "%s_answer_full.pdb" % prefix pdb_inp = iotbx.pdb.input(source_info=None, lines=pdb_str_answer_full) pdb_inp.write_pdb_file(file_name="%s_answer.pdb" % prefix) ph_answer_full = pdb_inp.construct_hierarchy() ph_answer_full.atoms().reset_i_seq() xrs_answer_full = pdb_inp.xray_structure_simple() # Poor full model that we want to refine so it matches the answer pdb_file_name_poor = "%s_poor.pdb" % prefix pdb_inp = iotbx.pdb.input(source_info=None, lines=pdb_str_poor_full) pdb_inp.write_pdb_file(file_name="%s_poor.pdb" % prefix) ph_poor_full = pdb_inp.construct_hierarchy() ph_poor_full.atoms().reset_i_seq() xrs_poor_full = pdb_inp.xray_structure_simple() # Compute target map fc = xrs_answer_full.structure_factors(d_min=3.5).f_calc() fft_map = fc.fft_map(resolution_factor=0.25) fft_map.apply_sigma_scaling() target_map_data = fft_map.real_map_unpadded() ccp4_map(crystal_symmetry=fc.crystal_symmetry(), file_name="%s_map.ccp4" % prefix, map_data=target_map_data) # Output map coefficients mtz_dataset = fc.as_mtz_dataset(column_root_label="FC") mtz_object = mtz_dataset.mtz_object() mtz_object.write(file_name="%s_map.mtz" % prefix) hierarchy, multiple_model_hierarchy = run( args=args, map_data=target_map_data, crystal_symmetry=fc.crystal_symmetry(), pdb_string=pdb_str_poor_full) pdb_inp = hierarchy.as_pdb_input(crystal_symmetry=fc.crystal_symmetry()) xrs_refined = pdb_inp.xray_structure_simple() hierarchy.write_pdb_file(file_name="%s_refined.pdb" % prefix) multiple_model_hierarchy.write_pdb_file( file_name="%s_refined_all_states.pdb" % prefix) rmsd = xrs_refined.sites_cart().rms_difference( xrs_answer_full.sites_cart()) print "RMSD from TARGET for FULL-model refinement: %8.2f " % (rmsd) return rmsd
def tst_02(args,prefix=None): if prefix is None: prefix='tst_02' # Full good answer model pdb_file_name_answer_full = "%s_answer_full.pdb"%prefix pdb_inp = iotbx.pdb.input(source_info=None, lines = pdb_str_answer_full) pdb_inp.write_pdb_file(file_name="%s_answer.pdb"%prefix) ph_answer_full = pdb_inp.construct_hierarchy() ph_answer_full.atoms().reset_i_seq() xrs_answer_full = pdb_inp.xray_structure_simple() # Poor full model that we want to refine so it matches the answer pdb_file_name_poor = "%s_poor.pdb"%prefix pdb_inp = iotbx.pdb.input(source_info=None, lines = pdb_str_poor_full) pdb_inp.write_pdb_file(file_name="%s_poor.pdb"%prefix) ph_poor_full = pdb_inp.construct_hierarchy() ph_poor_full.atoms().reset_i_seq() xrs_poor_full = pdb_inp.xray_structure_simple() # Compute target map fc = xrs_answer_full.structure_factors(d_min=3.5).f_calc() fft_map = fc.fft_map(resolution_factor = 0.25) fft_map.apply_sigma_scaling() target_map_data = fft_map.real_map_unpadded() ccp4_map(crystal_symmetry=fc.crystal_symmetry(), file_name="%s_map.ccp4" %prefix, map_data=target_map_data) # Output map coefficients mtz_dataset = fc.as_mtz_dataset(column_root_label="FC") mtz_object = mtz_dataset.mtz_object() mtz_object.write(file_name = "%s_map.mtz"%prefix) hierarchy,multiple_model_hierarchy=run( args=args,map_data=target_map_data, crystal_symmetry=fc.crystal_symmetry(), pdb_string=pdb_str_poor_full) pdb_inp=hierarchy.as_pdb_input(crystal_symmetry=fc.crystal_symmetry()) xrs_refined=pdb_inp.xray_structure_simple() hierarchy.write_pdb_file(file_name="%s_refined.pdb"%prefix) multiple_model_hierarchy.write_pdb_file( file_name="%s_refined_all_states.pdb"%prefix) rmsd=xrs_refined.sites_cart().rms_difference(xrs_answer_full.sites_cart()) print "RMSD from TARGET for FULL-model refinement: %8.2f " %(rmsd) return rmsd
def tst_01(): print "\nTesting merge_model\n" prefix='tst_01' # Full good answer model pdb_file_name_answer_full = "%s_answer_full.pdb"%prefix pdb_inp = iotbx.pdb.input(source_info=None, lines = pdb_str_answer_AE) pdb_inp.write_pdb_file(file_name="%s_answer.pdb"%prefix) ph_answer_full = pdb_inp.construct_hierarchy() ph_answer_full.atoms().reset_i_seq() xrs_answer_full = pdb_inp.xray_structure_simple() # Two models we want to merge pdb_file_name_two_models = "%s_poor_two_models.pdb"%prefix pdb_inp = iotbx.pdb.input(source_info=None, lines = pdb_str_two_models) pdb_inp.write_pdb_file(file_name="%s_two_models.pdb"%prefix) xrs_two_models_full = pdb_inp.xray_structure_simple() # Compute target map fc = xrs_answer_full.structure_factors(d_min=3.5).f_calc() fft_map = fc.fft_map(resolution_factor = 0.25) fft_map.apply_sigma_scaling() target_map_data = fft_map.real_map_unpadded() ccp4_map(crystal_symmetry=fc.crystal_symmetry(), file_name="%s_map.ccp4" %prefix, map_data=target_map_data) # Output map coefficients mtz_dataset = fc.as_mtz_dataset(column_root_label="FC") mtz_object = mtz_dataset.mtz_object() mtz_object.write(file_name = "%s_map.mtz"%prefix) from mmtbx.building.merge_models import run as merge_models hierarchy=merge_models( map_data=target_map_data, pdb_inp=pdb_inp, dist_max=100, verbose=True) pdb_inp=hierarchy.as_pdb_input(crystal_symmetry=fc.crystal_symmetry()) xrs=pdb_inp.xray_structure_simple() hierarchy.write_pdb_file(file_name="%s_refined.pdb"%prefix) rmsd=xrs.sites_cart().rms_difference(xrs_answer_full.sites_cart()) print "RMSD from TARGET allowing any CROSSOVERS: %8.2f " %(rmsd) return rmsd
def tst_01(): print "\nTesting merge_model\n" prefix = 'tst_01' # Full good answer model pdb_file_name_answer_full = "%s_answer_full.pdb" % prefix pdb_inp = iotbx.pdb.input(source_info=None, lines=pdb_str_answer_AE) pdb_inp.write_pdb_file(file_name="%s_answer.pdb" % prefix) ph_answer_full = pdb_inp.construct_hierarchy() ph_answer_full.atoms().reset_i_seq() xrs_answer_full = pdb_inp.xray_structure_simple() # Two models we want to merge pdb_file_name_two_models = "%s_poor_two_models.pdb" % prefix pdb_inp = iotbx.pdb.input(source_info=None, lines=pdb_str_two_models) pdb_inp.write_pdb_file(file_name="%s_two_models.pdb" % prefix) xrs_two_models_full = pdb_inp.xray_structure_simple() # Compute target map fc = xrs_answer_full.structure_factors(d_min=3.5).f_calc() fft_map = fc.fft_map(resolution_factor=0.25) fft_map.apply_sigma_scaling() target_map_data = fft_map.real_map_unpadded() ccp4_map(crystal_symmetry=fc.crystal_symmetry(), file_name="%s_map.ccp4" % prefix, map_data=target_map_data) # Output map coefficients mtz_dataset = fc.as_mtz_dataset(column_root_label="FC") mtz_object = mtz_dataset.mtz_object() mtz_object.write(file_name="%s_map.mtz" % prefix) from mmtbx.building.merge_models import run as merge_models hierarchy = merge_models(map_data=target_map_data, pdb_inp=pdb_inp, dist_max=100, verbose=True) pdb_inp = hierarchy.as_pdb_input(crystal_symmetry=fc.crystal_symmetry()) xrs = pdb_inp.xray_structure_simple() hierarchy.write_pdb_file(file_name="%s_refined.pdb" % prefix) rmsd = xrs.sites_cart().rms_difference(xrs_answer_full.sites_cart()) print "RMSD from TARGET allowing any CROSSOVERS: %8.2f " % (rmsd) return rmsd