コード例 #1
0
ファイル: reflections.py プロジェクト: keitaroyam/cctbx_fork
 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)
コード例 #2
0
ファイル: reflections.py プロジェクト: yayahjb/cctbx_project
 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)
コード例 #3
0
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 
コード例 #4
0
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 
コード例 #5
0
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)
コード例 #6
0
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
コード例 #7
0
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