예제 #1
0
 def asu_omit_map_as_sf(m_asu, s, e):
   m_asu_omit = maptbx.set_box_copy(value = 0, map_data_to = m_asu,
     start = s, end = e)
   m_asu_omit.reshape(self.acc_asu)
   asu_m_omit = asu_map_ext.asymmetric_map(self.sgt, m_asu_omit, self.n_real)
   return self.zero_cmpl_ma.customized_copy(
     indices = self.zero_cmpl_ma.indices(),
     data    = asu_m_omit.structure_factors(self.zero_cmpl_ma.indices()))
예제 #2
0
    def __init__(self,
                 crystal_gridding,
                 fmodel,
                 map_type,
                 max_boxes,
                 box_size_as_fraction=None):
        sgt = fmodel.f_obs().space_group().type()
        assert sgt.number() == 1

        def get_map(fmodel, map_type, external_complete_set=None):
            f_map = fmodel.electron_density_map().map_coefficients(
                map_type=map_type, isotropize=True, fill_missing=False)
            fft_map = miller.fft_map(crystal_gridding=crystal_gridding,
                                     fourier_coefficients=f_map)
            return fft_map.real_map_unpadded()

        f_model = fmodel.f_model_scaled_with_k1()
        fft_map = miller.fft_map(crystal_gridding=crystal_gridding,
                                 fourier_coefficients=f_model)
        f_model_map_data = fft_map.real_map_unpadded()
        zero_complex_ma = f_model.customized_copy(
            data=flex.complex_double(f_model.data().size(), 0))
        b = maptbx.boxes(fraction=0.3,
                         n_real=f_model_map_data.focus(),
                         max_boxes=max_boxes,
                         log=sys.stdout)
        self.map_result = flex.double(flex.grid(b.n_real))
        self.r = flex.double()
        for s, e in zip(b.starts, b.ends):
            f_model_map_data_omit = maptbx.set_box_copy(
                value=0, map_data_to=f_model_map_data, start=s, end=e)
            f_model_omit = f_model.structure_factors_from_map(
                map=f_model_map_data_omit,
                use_scale=True,
                anomalous_flag=False,
                use_sg=False)
            fmodel_ = mmtbx.f_model.manager(f_obs=fmodel.f_obs(),
                                            r_free_flags=fmodel.r_free_flags(),
                                            f_calc=f_model_omit,
                                            f_mask=zero_complex_ma)
            self.r.append(fmodel_.r_work())
            f_map_data = get_map(fmodel=fmodel_, map_type=map_type)
            etmp = [e[0] - 1, e[1] - 1,
                    e[2] - 1]  # because .copy() includes right edge
            box = maptbx.copy(f_map_data, s, etmp)
            box.reshape(flex.grid(box.all()))
            maptbx.set_box(map_data_from=box,
                           map_data_to=self.map_result,
                           start=s,
                           end=e)
        sd = self.map_result.sample_standard_deviation()
        self.map_result = self.map_result / sd
        self.map_coefficients = fmodel.f_obs().structure_factors_from_map(
            map=self.map_result,
            use_scale=True,
            anomalous_flag=False,
            use_sg=False)
 def omit_box(self, s, e, md_asu):
   md_asu_omit = maptbx.set_box_copy(value = 0, map_data_to = md_asu,
     start = s, end = e)
   md_asu_omit.reshape(self.acc)
   asu_map_omit = asu_map_ext.asymmetric_map(self.sgt, md_asu_omit, self.n_real)
   ma_omit = self.zero_cmpl_ma.customized_copy(
     indices = self.zero_cmpl_ma.indices(),
     data    = asu_map_omit.structure_factors(self.zero_cmpl_ma.indices()))
   fft_map = cctbx.miller.fft_map(
     crystal_gridding = self.crystal_gridding, fourier_coefficients = ma_omit)
   md = fft_map.real_map_unpadded()
   asu_map = asu_map_ext.asymmetric_map(self.sgt, md)
   md_asu_omit = asu_map.data()
   md_asu_omit = md_asu_omit.shift_origin()
   return ma_omit, md_asu_omit
예제 #4
0
 def omit_box(self, s, e, md_asu):
     md_asu_omit = maptbx.set_box_copy(value=0,
                                       map_data_to=md_asu,
                                       start=s,
                                       end=e)
     md_asu_omit.reshape(self.acc)
     asu_map_omit = asu_map_ext.asymmetric_map(self.sgt, md_asu_omit,
                                               self.n_real)
     ma_omit = self.zero_cmpl_ma.customized_copy(
         indices=self.zero_cmpl_ma.indices(),
         data=asu_map_omit.structure_factors(self.zero_cmpl_ma.indices()))
     fft_map = cctbx.miller.fft_map(crystal_gridding=self.crystal_gridding,
                                    fourier_coefficients=ma_omit)
     md = fft_map.real_map_unpadded()
     asu_map = asu_map_ext.asymmetric_map(self.sgt, md)
     md_asu_omit = asu_map.data()
     md_asu_omit = md_asu_omit.shift_origin()
     return ma_omit, md_asu_omit
 def __init__(
       self,
       crystal_gridding,
       fmodel,
       map_type,
       max_boxes,
       box_size_as_fraction=None):
   sgt = fmodel.f_obs().space_group().type()
   assert sgt.number() == 1
   def get_map(fmodel, map_type, external_complete_set=None):
     f_map = fmodel.electron_density_map().map_coefficients(
         map_type     = map_type,
         isotropize   = True,
         fill_missing = False)
     fft_map = miller.fft_map(
       crystal_gridding     = crystal_gridding,
       fourier_coefficients = f_map)
     return fft_map.real_map_unpadded()
   f_model = fmodel.f_model_scaled_with_k1()
   fft_map = miller.fft_map(
     crystal_gridding     = crystal_gridding,
     fourier_coefficients = f_model)
   f_model_map_data = fft_map.real_map_unpadded()
   zero_complex_ma = f_model.customized_copy(
     data = flex.complex_double(f_model.data().size(), 0))
   b = maptbx.boxes(
     fraction = 0.3,
     n_real   = f_model_map_data.focus(),
     max_boxes=max_boxes,
     log=sys.stdout)
   self.map_result = flex.double(flex.grid(b.n_real))
   self.r = flex.double()
   for s,e in zip(b.starts, b.ends):
     f_model_map_data_omit = maptbx.set_box_copy(
       value         = 0,
       map_data_to   = f_model_map_data,
       start         = s,
       end           = e)
     f_model_omit = f_model.structure_factors_from_map(
       map            = f_model_map_data_omit,
       use_scale      = True,
       anomalous_flag = False,
       use_sg         = False)
     fmodel_ = mmtbx.f_model.manager(
       f_obs        = fmodel.f_obs(),
       r_free_flags = fmodel.r_free_flags(),
       f_calc       = f_model_omit,
       f_mask       = zero_complex_ma)
     self.r.append(fmodel_.r_work())
     f_map_data = get_map(fmodel=fmodel_, map_type=map_type)
     etmp = [e[0]-1, e[1]-1, e[2]-1] # because .copy() includes right edge
     box = maptbx.copy(f_map_data, s, etmp)
     box.reshape(flex.grid(box.all()))
     maptbx.set_box(
       map_data_from = box,
       map_data_to   = self.map_result,
       start         = s,
       end           = e)
   sd = self.map_result.sample_standard_deviation()
   self.map_result = self.map_result/sd
   self.map_coefficients = fmodel.f_obs().structure_factors_from_map(
     map            = self.map_result,
     use_scale      = True,
     anomalous_flag = False,
     use_sg         = False)