def d_max_min (self, file_name=None, file_param_name=None, array_name=None, array_names=None) : from iotbx.reflection_file_editor import get_best_resolution miller_arrays = [] if (file_name is None) and (file_param_name is None) : for phil_name, file_name in self._param_files.iteritems() : input_file = self.get_file(file_name) if (input_file is not None) : miller_arrays.extend(input_file.file_server.miller_arrays) else : hkl_file = self.get_file(file_name, file_param_name) if (hkl_file is None) : return (None, None) for miller_array in hkl_file.file_server.miller_arrays : label = miller_array.info().label_string() if (array_name is not None) : if (label == array_name) : miller_arrays = [miller_array] break elif (array_names is not None) : if (label in array_names) : miller_arrays.append(miller_array) else : miller_arrays.append(miller_array) (d_max, d_min) = get_best_resolution(miller_arrays) return (d_max, d_min)
def d_max_min(self, file_name=None, file_param_name=None, array_name=None, array_names=None): from iotbx.reflection_file_editor import get_best_resolution miller_arrays = [] if (file_name is None) and (file_param_name is None): for phil_name, file_name in six.iteritems(self._param_files): input_file = self.get_file(file_name) if (input_file is not None): miller_arrays.extend(input_file.file_server.miller_arrays) else : hkl_file = self.get_file(file_name, file_param_name) if (hkl_file is None): return (None, None) for miller_array in hkl_file.file_server.miller_arrays : label = miller_array.info().label_string() if (array_name is not None): if (label == array_name): miller_arrays = [miller_array] break elif (array_names is not None): if (label in array_names): miller_arrays.append(miller_array) else : miller_arrays.append(miller_array) (d_max, d_min) = get_best_resolution(miller_arrays) return (d_max, d_min)
def run(mtz, mtz_out, fraction, flag_name=None, ccp4=True, use_lattice_symmetry=True, n_shells=20): # Open mtz miller_arrays = iotbx.mtz.object(mtz).as_miller_arrays() print "Opening", mtz print " Using information from", miller_arrays[0].info().label_string() input_symm = crystal.symmetry( unit_cell=miller_arrays[0].unit_cell(), space_group_info=miller_arrays[0].space_group().info(), assert_is_compatible_unit_cell=False, force_compatible_unit_cell=False) d_max, d_min = get_best_resolution(miller_arrays, input_symm) print " d_max, d_min=", d_max, d_min print " Symm:", input_symm.space_group_info(), input_symm.unit_cell() print # Extend flag complete_set = make_joined_set(miller_arrays).complete_set() if use_lattice_symmetry: from cctbx.sgtbx import lattice_symmetry print "Lattice symmetry:" cb_op_to_niggli = complete_set.change_of_basis_op_to_niggli_cell() tmp_ma = complete_set.change_basis( cb_op_to_niggli ) lattice_group = lattice_symmetry.group(tmp_ma.unit_cell(), max_delta=5.0) print " ", tmp_ma.unit_cell(), lattice_group.laue_group_type() print new_r_free_array = complete_set.generate_r_free_flags(fraction=fraction, max_free=None, lattice_symmetry_max_delta=5.0, use_lattice_symmetry=use_lattice_symmetry, n_shells=n_shells) print new_r_free_array.show_r_free_flags_info() if ccp4: new_r_free_array = new_r_free_array.customized_copy(data=r_free_utils.export_r_free_flags_for_ccp4(flags=new_r_free_array.data(), test_flag_value=True)) print # Write mtz file mtz_object = iotbx.mtz.object(mtz).add_crystal("crystal", "project", new_r_free_array.unit_cell()). \ add_dataset(name="dataset", wavelength=0). \ add_miller_array(miller_array=new_r_free_array, column_root_label=flag_name).mtz_object() #mtz_object.show_summary(out=sys.stdout, prefix=" ") mtz_object.write(file_name=mtz_out) print print "Writing:", mtz_out print
def run(mtz, mtz_out, fraction, flag_name=None, ccp4=True, use_lattice_symmetry=True, n_shells=20): # Open mtz miller_arrays = iotbx.mtz.object(mtz).as_miller_arrays() print "Opening", mtz print " Using information from", miller_arrays[0].info().label_string() input_symm = crystal.symmetry( unit_cell=miller_arrays[0].unit_cell(), space_group_info=miller_arrays[0].space_group().info(), assert_is_compatible_unit_cell=False, force_compatible_unit_cell=False) d_max, d_min = get_best_resolution(miller_arrays, input_symm) print " d_max, d_min=", d_max, d_min print " Symm:", input_symm.space_group_info(), input_symm.unit_cell() print # Extend flag complete_set = make_joined_set(miller_arrays).complete_set() if use_lattice_symmetry: from cctbx.sgtbx import lattice_symmetry print "Lattice symmetry:" cb_op_to_niggli = complete_set.change_of_basis_op_to_niggli_cell() tmp_ma = complete_set.change_basis( cb_op_to_niggli ) lattice_group = lattice_symmetry.group(tmp_ma.unit_cell(), max_delta=5.0) print " ", tmp_ma.unit_cell(), lattice_group.laue_group_type() print new_r_free_array = complete_set.generate_r_free_flags(fraction=fraction, max_free=None, lattice_symmetry_max_delta=5.0, use_lattice_symmetry=use_lattice_symmetry, n_shells=n_shells) print new_r_free_array.show_r_free_flags_info() if ccp4: new_r_free_array = new_r_free_array.customized_copy(data=r_free_utils.export_r_free_flags_for_ccp4(flags=new_r_free_array.data(), test_flag_value=True)) print # Write mtz file mtz_object = iotbx.mtz.object(mtz).add_crystal("crystal", "project", new_r_free_array.unit_cell()). \ add_dataset(name="dataset", wavelength=0). \ add_miller_array(miller_array=new_r_free_array, column_root_label=flag_name).mtz_object() #mtz_object.show_summary(out=sys.stdout, prefix=" ") mtz_object.write(file_name=mtz_out) print print "Writing:", mtz_out print
def copy_flag_to_mtz(flag_array, flag_name, flag_value, mtz_in, mtz_out, log_out=sys.stdout): # Open mtz miller_arrays = iotbx.mtz.object(mtz_in).as_miller_arrays() print >> log_out, "Opening", mtz_in if flag_name in [arr.info().label_string() for arr in miller_arrays]: print >> log_out, "Error: The column %s already exists in the mtz file: %s" % ( flag_name, mtz_in) return print >> log_out, " Using information from", miller_arrays[0].info( ).label_string() input_symm = crystal.symmetry( unit_cell=miller_arrays[0].unit_cell(), space_group_info=miller_arrays[0].space_group().info(), assert_is_compatible_unit_cell=False, force_compatible_unit_cell=False) d_max, d_min = get_best_resolution(miller_arrays, input_symm) print >> log_out, " d_max, d_min=", d_max, d_min print >> log_out, " Symm:", input_symm.space_group_info( ), input_symm.unit_cell() print >> log_out # Extend flag complete_set = make_joined_set(miller_arrays).complete_set() r_free_flags = r_free_utils.extend_flags( r_free_flags=flag_array.customized_copy(crystal_symmetry=input_symm), test_flag_value=flag_value, array_label=flag_name, complete_set=complete_set, accumulation_callback=None, preserve_input_values=True, d_max=d_max, d_min=d_min, log=log_out).common_set( complete_set) #resolution_filter(d_min=d_min-0.01) print >> log_out r_free_flags.customized_copy( data=r_free_flags.data() == flag_value).show_r_free_flags_info( out=log_out) # Write mtz file mtz_object = iotbx.mtz.object(mtz_in).add_crystal("crystal", "project", r_free_flags.unit_cell()). \ add_dataset(name="dataset", wavelength=0). \ add_miller_array(miller_array=r_free_flags, column_root_label=flag_name).mtz_object() mtz_object.write(file_name=mtz_out)
def run(mtz, mtz_out, mtz_ref, flag_name=None, flag_value=None): ref_arrays = iotbx.mtz.object(mtz_ref).as_miller_arrays() print "Opening reference:", mtz_ref flag_array, flag_name = get_flag_array(ref_arrays, flag_name) # Get flag number if flag_value is None: flag_scores = get_r_free_flags_scores(miller_arrays=[flag_array], test_flag_value=flag_value) flag_value = flag_scores.test_flag_values[0] print " Guessing flag number:", flag_value else: print " Specified flag number:", flag_value print " d_max, d_min=", get_best_resolution([flag_array], flag_array.crystal_symmetry()) print " Symm:", flag_array.space_group().info(), flag_array.unit_cell() print copy_flag_to_mtz(flag_array, flag_name, flag_value, mtz, mtz_out) print print "Written:", mtz_out print
def run(mtz, mtz_out, mtz_ref, flag_name=None, flag_value=None): ref_arrays = iotbx.mtz.object(mtz_ref).as_miller_arrays() print "Opening reference:", mtz_ref # Get flag array flag_array = None if flag_name is None: flags = filter(lambda x: is_rfree_array(x, x.info()), ref_arrays) if len(flags) == 0: print " No R free flags like column found." quit() elif len(flags) > 1: print " More than one column which looks like R free flag:" for f in flags: print " ", f.info().label_string() quit() else: flag_name = flags[0].info().label_string() flag_array = flags[0] print " Guessing R free flag:", flag_name else: flags = filter(lambda x: flag_name==x.info().label_string(), ref_arrays) if len(flags) == 0: print " Specified flag name not found:", flag quit() else: print " Use specified flag:", flag flag_array = flags[0] # Get flag number if flag_value is None: flag_scores = get_r_free_flags_scores(miller_arrays=[flag_array], test_flag_value=flag_value) flag_value = flag_scores.test_flag_values[0] print " Guessing flag number:", flag_value else: print " Specified flag number:", flag_value print " d_max, d_min=", get_best_resolution([flag_array], flag_array.crystal_symmetry()) print " Symm:", flag_array.space_group().info(), flag_array.unit_cell() print # Open mtz miller_arrays = iotbx.mtz.object(mtz).as_miller_arrays() print "Opening", mtz if flag_name in [arr.info().label_string() for arr in miller_arrays]: print "Error: The column %s already exists in the mtz file: %s" % (flag_name, mtz) quit() print " Using information from", miller_arrays[0].info().label_string() input_symm = crystal.symmetry( unit_cell=miller_arrays[0].unit_cell(), space_group_info=miller_arrays[0].space_group().info(), assert_is_compatible_unit_cell=False, force_compatible_unit_cell=False) d_max, d_min = get_best_resolution(miller_arrays, input_symm) print " d_max, d_min=", d_max, d_min print " Symm:", input_symm.space_group_info(), input_symm.unit_cell() print # Extend flag complete_set = make_joined_set(miller_arrays).complete_set() r_free_flags = r_free_utils.extend_flags( r_free_flags=flag_array.customized_copy(crystal_symmetry=input_symm), test_flag_value=flag_value, array_label=flag_name, complete_set=complete_set, accumulation_callback=None, preserve_input_values=True, d_max=d_max, d_min=d_min, log=sys.stdout).common_set(complete_set) #resolution_filter(d_min=d_min-0.01) print print r_free_flags.customized_copy(data=r_free_flags.data()==flag_value).show_r_free_flags_info() # Write mtz file #mtz_dataset = create_mtz_dataset(miller_arrays) #mtz_dataset.add_miller_array(miller_array=r_free_flags, column_root_label=flag_name) #mtz_object = mtz_dataset.mtz_object() mtz_object = iotbx.mtz.object(mtz).add_crystal("crystal", "project", r_free_flags.unit_cell()). \ add_dataset(name="dataset", wavelength=0). \ add_miller_array(miller_array=r_free_flags, column_root_label=flag_name).mtz_object() #mtz_object.add_history("copy and extend test flag from "+mtz_ref) #mtz_object.show_summary(out=sys.stdout, prefix=" ") mtz_object.write(file_name=mtz_out) print print "Writing:", mtz_out print