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