Example #1
0
 def __init__(self, xray_structure, n_real=None, grid_step=None):
     assert [n_real, grid_step].count(None) == 1
     self.xray_structure = xray_structure
     if (n_real is None):
         a_cell, b_cell, c_cell = xray_structure.unit_cell().parameters(
         )[:3]
         nx,ny,nz = \
                int(a_cell/grid_step),int(b_cell/grid_step),int(c_cell/grid_step)
     else:
         nx, ny, nz = n_real[0], n_real[1], n_real[2]
     #u_base = flex.min_default(xray_structure.extract_u_iso_or_u_equiv(),0)
     u_base = xray_structure.min_u_cart_eigenvalue()
     self.sampled_model_density = ext.sampled_model_density(
         unit_cell=xray_structure.unit_cell(),
         scatterers=xray_structure.scatterers(),
         scattering_type_registry=xray_structure.scattering_type_registry(),
         fft_n_real=(nx, ny, nz),
         fft_m_real=(nx, ny, nz),
         u_base=u_base,
         wing_cutoff=1.e-6,
         exp_table_one_over_step_size=-1000,
         force_complex=False,
         sampled_density_must_be_positive=False,
         tolerance_positive_definite=1.e-5)
     assert approx_equal(self.sampled_model_density.u_extra(), 0.0)
Example #2
0
 def __init__(self, xray_structure,
                    n_real    = None,
                    grid_step = None):
   assert [n_real, grid_step].count(None) == 1
   self.xray_structure = xray_structure
   if(n_real is None):
      a_cell, b_cell, c_cell = xray_structure.unit_cell().parameters()[:3]
      nx,ny,nz = \
             int(a_cell/grid_step),int(b_cell/grid_step),int(c_cell/grid_step)
   else:
      nx,ny,nz = n_real[0],n_real[1],n_real[2]
   #u_base = flex.min_default(xray_structure.extract_u_iso_or_u_equiv(),0)
   u_base = xray_structure.min_u_cart_eigenvalue()
   self.sampled_model_density = ext.sampled_model_density(
      unit_cell                        = xray_structure.unit_cell(),
      scatterers                       = xray_structure.scatterers(),
      scattering_type_registry    = xray_structure.scattering_type_registry(),
      fft_n_real                       = (nx,ny,nz),
      fft_m_real                       = (nx,ny,nz),
      u_base                           = u_base,
      wing_cutoff                      = 1.e-6,
      exp_table_one_over_step_size     = -1000,
      force_complex                    = False,
      sampled_density_must_be_positive = False,
      tolerance_positive_definite      = 1.e-5)
   assert approx_equal(self.sampled_model_density.u_extra(), 0.0)
Example #3
0
 def __init__(self, manager, xray_structure, miller_set, algorithm="fft"):
     scattering_type_registry = xray_structure.scattering_type_registry()
     if (len(scattering_type_registry.unassigned_types()) > 0):
         self.show_unknown_scatterers(registry=scattering_type_registry)
     time_all = user_plus_sys_time()
     managed_calculation_base.__init__(self,
                                       manager,
                                       xray_structure,
                                       miller_set,
                                       algorithm="fft")
     assert miller_set.d_min() > manager.d_min() * (1 - 1e-6)
     manager.setup_fft()  # before timing
     time_sampling = user_plus_sys_time()
     sampled_density = ext.sampled_model_density(
         unit_cell=xray_structure.unit_cell(),
         scatterers=xray_structure.scatterers(),
         scattering_type_registry=scattering_type_registry,
         fft_n_real=manager.rfft().n_real(),
         fft_m_real=manager.rfft().m_real(),
         u_base=manager.u_base(),
         wing_cutoff=manager.wing_cutoff(),
         exp_table_one_over_step_size=manager.exp_table_one_over_step_size(
         ),
         force_complex=manager.force_complex(),
         sampled_density_must_be_positive=manager.
         sampled_density_must_be_positive(),
         tolerance_positive_definite=manager.tolerance_positive_definite())
     time_sampling = time_sampling.elapsed()
     time_fft = user_plus_sys_time()
     if (not sampled_density.anomalous_flag()):
         sf_map = manager.rfft().forward(sampled_density.real_map())
         collect_conj = True
     else:
         sf_map = manager.cfft().backward(sampled_density.complex_map())
         collect_conj = False
     time_fft = time_fft.elapsed()
     time_from_map = user_plus_sys_time()
     self._f_calc_data = maptbx.structure_factors.from_map(
         space_group=miller_set.space_group(),
         anomalous_flag=sampled_density.anomalous_flag(),
         miller_indices=miller_set.indices(),
         complex_map=sf_map,
         conjugate_flag=collect_conj).data()
     time_from_map = time_from_map.elapsed()
     time_apply_u_extra = user_plus_sys_time()
     sampled_density.eliminate_u_extra_and_normalize(
         miller_set.indices(), self._f_calc_data)
     time_apply_u_extra = time_apply_u_extra.elapsed()
     introspection.virtual_memory_info().update_max()
     manager.estimate_time_fft.register(
         n_scatterers=xray_structure.scatterers().size(),
         n_miller_indices=miller_set.indices().size(),
         time_sampling=time_sampling,
         time_fft=time_fft,
         time_from_or_to_map=time_from_map,
         time_apply_u_extra=time_apply_u_extra)
     global_counters.from_scatterers_fft.process(time_all.elapsed())
 def __init__(self, manager,
                    xray_structure,
                    miller_set,
                    algorithm="fft"):
   time_all = user_plus_sys_time()
   managed_calculation_base.__init__(self,
     manager, xray_structure, miller_set, algorithm="fft")
   assert miller_set.d_min() > manager.d_min() * (1-1e-6)
   manager.setup_fft() # before timing
   time_sampling = user_plus_sys_time()
   sampled_density = ext.sampled_model_density(
     unit_cell=xray_structure.unit_cell(),
     scatterers=xray_structure.scatterers(),
     scattering_type_registry=xray_structure.scattering_type_registry(),
     fft_n_real=manager.rfft().n_real(),
     fft_m_real=manager.rfft().m_real(),
     u_base=manager.u_base(),
     wing_cutoff=manager.wing_cutoff(),
     exp_table_one_over_step_size=manager.exp_table_one_over_step_size(),
     force_complex=manager.force_complex(),
     sampled_density_must_be_positive=
       manager.sampled_density_must_be_positive(),
     tolerance_positive_definite=manager.tolerance_positive_definite())
   time_sampling = time_sampling.elapsed()
   time_fft = user_plus_sys_time()
   if (not sampled_density.anomalous_flag()):
     sf_map = manager.rfft().forward(sampled_density.real_map())
     collect_conj = True
   else:
     sf_map = manager.cfft().backward(sampled_density.complex_map())
     collect_conj = False
   time_fft = time_fft.elapsed()
   time_from_map = user_plus_sys_time()
   self._f_calc_data = maptbx.structure_factors.from_map(
     space_group=miller_set.space_group(),
     anomalous_flag=sampled_density.anomalous_flag(),
     miller_indices=miller_set.indices(),
     complex_map=sf_map,
     conjugate_flag=collect_conj).data()
   time_from_map = time_from_map.elapsed()
   time_apply_u_extra = user_plus_sys_time()
   sampled_density.eliminate_u_extra_and_normalize(
     miller_set.indices(),
     self._f_calc_data)
   time_apply_u_extra = time_apply_u_extra.elapsed()
   introspection.virtual_memory_info().update_max()
   manager.estimate_time_fft.register(
     n_scatterers=xray_structure.scatterers().size(),
     n_miller_indices=miller_set.indices().size(),
     time_sampling=time_sampling,
     time_fft=time_fft,
     time_from_or_to_map=time_from_map,
     time_apply_u_extra=time_apply_u_extra)
   global_counters.from_scatterers_fft.process(time_all.elapsed())