def __init__(self, diameter, diameter_variation = None, diameter_spread = None, diameter_variation_n = None, number = 1., arrival = "synchronised", position = None, position_variation = None, position_spread = None, position_variation_n = None, material_type = None, massdensity = None, atomic_composition = None, electron_density = None): # Initialise base class AbstractContinuousParticle.__init__(self, diameter=diameter, diameter_variation=diameter_variation, diameter_spread=diameter_spread, diameter_variation_n=diameter_variation_n, rotation_values=None, rotation_formalism=None, rotation_mode="extrinsic", number=number, arrival=arrival, position=position, position_variation=position_variation, position_spread=position_spread, position_variation_n=position_variation_n, material_type=material_type, massdensity=massdensity, atomic_composition=atomic_composition, electron_density=electron_density)
def __init__(self, diameter, diameter_variation=None, diameter_spread=None, diameter_variation_n=None, flattening=0.75, flattening_variation=None, flattening_spread=None, flattening_variation_n=None, rotation_values=None, rotation_formalism=None, rotation_mode="extrinsic", number=1., arrival="synchronised", position=None, position_variation=None, position_spread=None, position_variation_n=None, material_type='water', massdensity=None, atomic_composition=None, electron_density=None): # Initialise base class AbstractContinuousParticle.__init__( self, diameter=diameter, diameter_variation=diameter_variation, diameter_spread=diameter_spread, diameter_variation_n=diameter_variation_n, rotation_values=rotation_values, rotation_formalism=rotation_formalism, rotation_mode=rotation_mode, number=number, arrival=arrival, position=position, position_variation=position_variation, position_spread=position_spread, position_variation_n=position_variation_n, material_type=material_type, massdensity=massdensity, atomic_composition=atomic_composition, electron_density=electron_density) self.flattening_mean = flattening self.set_flattening_variation( flattening_variation=flattening_variation, flattening_spread=flattening_spread, flattening_variation_n=flattening_variation_n)
def get_next(self): """ Iterate the parameters and return them as a dictionary """ O = AbstractContinuousParticle.get_next(self) O["particle_model"] = "sphere" return O
def get_next(self): """ Iterate the parameters and return them as a dictionary """ O = AbstractContinuousParticle.get_next(self) O["particle_model"] = "spheroid" O["flattening"] = self._get_next_flattening() return O
def __init__(self, diameter, diameter_variation = None, diameter_spread = None, diameter_variation_n = None, flattening = 0.75, flattening_variation = None, flattening_spread = None, flattening_variation_n = None, rotation_values = None, rotation_formalism = None, rotation_mode = "extrinsic", number = 1., arrival = "synchronised", position = None, position_variation = None, position_spread = None, position_variation_n = None, material_type = 'water', massdensity = None, atomic_composition = None, electron_density = None): # Initialise base class AbstractContinuousParticle.__init__(self, diameter=diameter, diameter_variation=diameter_variation, diameter_spread=diameter_spread, diameter_variation_n=diameter_variation_n, rotation_values=rotation_values, rotation_formalism=rotation_formalism, rotation_mode=rotation_mode, number=number, arrival=arrival, position=position, position_variation=position_variation, position_spread=position_spread, position_variation_n=position_variation_n, material_type=material_type, massdensity=massdensity, atomic_composition=atomic_composition, electron_density=electron_density) self.flattening_mean = flattening self.set_flattening_variation(flattening_variation=flattening_variation, flattening_spread=flattening_spread, flattening_variation_n=flattening_variation_n)
def get_next(self): """ Iterate the parameters and return them as a dictionary """ O = AbstractContinuousParticle.get_next(self) O["particle_model"] = "map" O["geometry"] = self.geometry if self.geometry == "spheroid": O["flattening"] = self.flattening return O
def get_conf(sef): """ Get configuration in form of a dictionary. Another identically configured ParticleMap instance can be initialised by: .. code-block:: python conf = P0.get_conf() # P0: already existing ParticleSphere instance P1 = condor.ParticleSpheroid(**conf) # P1: new ParticleSphere instance with the same configuration as P0 """ return AbstractContinuousParticle.get_conf(self)
def __init__(self, diameter, diameter_variation=None, diameter_spread=None, diameter_variation_n=None, number=1., arrival="synchronised", position=None, position_variation=None, position_spread=None, position_variation_n=None, material_type=None, massdensity=None, atomic_composition=None, electron_density=None): # Initialise base class AbstractContinuousParticle.__init__( self, diameter=diameter, diameter_variation=diameter_variation, diameter_spread=diameter_spread, diameter_variation_n=diameter_variation_n, rotation_values=None, rotation_formalism=None, rotation_mode="extrinsic", number=number, arrival=arrival, position=position, position_variation=position_variation, position_spread=position_spread, position_variation_n=position_variation_n, material_type=material_type, massdensity=massdensity, atomic_composition=atomic_composition, electron_density=electron_density)
def get_conf(self): """ Get configuration in form of a dictionary. Another identically configured ParticleMap instance can be initialised by: .. code-block:: python conf = P0.get_conf() # P0: already existing ParticleSpheroid instance P1 = condor.ParticleSpheroid(**conf) # P1: new ParticleSpheroid instance with the same configuration as P0 """ conf = {} conf.update(AbstractContinuousParticle.get_conf(self)) conf["flattening"] = self.flattening_mean fvar = self._flattening_variation.get_conf() conf["flattening_variation"] = fvar["mode"] conf["flattening_spread"] = fvar["spread"] conf["flattening_variation_n"] = fvar["n"] return conf
def get_conf(self): """ Get configuration in form of a dictionary. Another identically configured ParticleMap instance can be initialised by: .. code-block:: python conf = P0.get_conf() # P0: already existing ParticleMap instance P1 = condor.ParticleMap(**conf) # P1: new ParticleMap instance with the same configuration as P0 """ conf = {} conf.update(AbstractContinuousParticle.get_conf(self)) conf["geometry"] = self.geometry if self.geometry == "custom": m, dx = self.get_original_map() conf["map3d"] = m conf["dx"] = dx if self.geometry == "spheroid": conf["flattening"] = self.flattening return conf
def __init__( self, geometry, diameter=None, diameter_variation=None, diameter_spread=None, diameter_variation_n=None, dx=None, map3d=None, map3d_filename=None, map3d_dataset=None, emd_id=None, rotation_values=None, rotation_formalism=None, rotation_mode="extrinsic", flattening=0.75, number=1.0, arrival="synchronised", position=None, position_variation=None, position_spread=None, position_variation_n=None, material_type=None, massdensity=None, atomic_composition=None, electron_density=None, ): # Initialise base class AbstractContinuousParticle.__init__( self, diameter=diameter, diameter_variation=diameter_variation, diameter_spread=diameter_spread, diameter_variation_n=diameter_variation_n, rotation_values=rotation_values, rotation_formalism=rotation_formalism, rotation_mode=rotation_mode, number=number, arrival=arrival, position=position, position_variation=position_variation, position_spread=position_spread, position_variation_n=position_variation_n, material_type=material_type, massdensity=massdensity, atomic_composition=atomic_composition, electron_density=electron_density, ) # Check for valid geometry if geometry not in ["icosahedron", "cube", "sphere", "spheroid", "custom"]: log_and_raise_error( logger, "Cannot initialize %s because '%s' is not a valid argument for 'geometry'." % (kwargs["geometry"], self.__class__.__name__), ) sys.exit(1) self.geometry = geometry # Has effect only for spheroids self.flattening = flattening # Init chache self._cache = {} self._dx_orig = None self._map3d_orig = None if geometry == "custom": if map3d is not None: if dx is None: log_and_raise_error( logger, "Cannot initialize custom geometry with 'map3d' but without grid spacing 'dx'." ) sys.exit(1) else: log_debug(logger, "Attempting to initialise custom geometry with 'map3d'.") if map3d_filename is not None or map3d_dataset is not None or emd_id is not None: log_and_raise_error( logger, "Cannot initialize custom geometry because of ambiguous keyword arguments." ) sys.exit(1) self.set_custom_geometry_by_array(map3d, dx) elif map3d_filename is not None and map3d_dataset is not None: if dx is None: log_and_raise_error( logger, "You are trying to initialise the map with an HDF5 file. You also need to provide the grid spacing 'dx'", ) sys.exit(1) log_debug( logger, "Attempting to initialise custom geometry with 'map3d_filename', 'map3d_dataset' and 'dx'." ) if not map3d_filename.endswith(".h5"): log_and_raise_error(logger, "Map file is not an HDF5 file!") sys.exit(1) if map3d is not None or emd_id is not None: log_and_raise_error( logger, "Cannot initialize custom geometry because of ambiguous keyword arguments." ) sys.exit(1) self.set_custom_geometry_by_h5file(map3d_filename, map3d_dataset, dx) elif map3d_filename is not None: if not map3d_filename.endswith(".map") and not map3d_filename.endswith(".mrc"): log_and_raise_error(logger, "Map file is not an MRC/MAP file!") sys.exit(1) self.set_custom_geometry_by_mrcfile(map3d_filename) elif emd_id is not None: log_debug(logger, "Attempting to initialise custom geometry with 'emd_id'.") if map3d_filename is not None or map3d_dataset is not None or map3d is not None or dx is not None: log_and_raise_error( logger, "Cannot initialize custom geometry because of ambiguous keyword arguments." ) sys.exit(1) self.set_custom_geometry_by_emd_id(emd_id) if diameter is None: self.diameter_mean = self._dx_orig * self._map3d_orig.shape[-1]
def __init__(self, geometry, diameter=None, diameter_variation=None, diameter_spread=None, diameter_variation_n=None, dx=None, map3d=None, map3d_filename=None, map3d_dataset=None, emd_id=None, rotation_values=None, rotation_formalism=None, rotation_mode="extrinsic", flattening=0.75, number=1., arrival="synchronised", position=None, position_variation=None, position_spread=None, position_variation_n=None, material_type=None, massdensity=None, atomic_composition=None, electron_density=None): # Initialise base class AbstractContinuousParticle.__init__( self, diameter=diameter, diameter_variation=diameter_variation, diameter_spread=diameter_spread, diameter_variation_n=diameter_variation_n, rotation_values=rotation_values, rotation_formalism=rotation_formalism, rotation_mode=rotation_mode, number=number, arrival=arrival, position=position, position_variation=position_variation, position_spread=position_spread, position_variation_n=position_variation_n, material_type=material_type, massdensity=massdensity, atomic_composition=atomic_composition, electron_density=electron_density) # Check for valid geometry if geometry not in [ "icosahedron", "cube", "sphere", "spheroid", "custom" ]: log_and_raise_error( logger, "Cannot initialize %s because \'%s\' is not a valid argument for \'geometry\'." % (kwargs["geometry"], self.__class__.__name__)) sys.exit(1) self.geometry = geometry # Has effect only for spheroids self.flattening = flattening # Init chache self._cache = {} self._dx_orig = None self._map3d_orig = None if geometry == "custom": if map3d is not None: if dx is None: log_and_raise_error( logger, "Cannot initialize custom geometry with \'map3d\' without known grid spacing (\'dx\')." ) sys.exit(1) else: log_debug( logger, "Attempting to initialise custom geometry with \'map3d\'." ) if map3d_filename is not None or map3d_dataset is not None or emd_id is not None: log_and_raise_error( logger, "Cannot initialize custom geometry because of ambiguous keyword arguments." ) sys.exit(1) self.set_custom_geometry_by_array(map3d, dx) elif map3d_filename is not None and map3d_dataset is not None: if dx is None: log_and_raise_error( logger, "You are trying to initialise the map with an HDF5 file. You also need to provide the grid spacing \'dx\'" ) sys.exit(1) log_debug( logger, "Attempting to initialise custom geometry with \'map3d_filename\', \'map3d_dataset\' and \'dx\'." ) if not map3d_filename.endswith(".h5"): log_and_raise_error(logger, "Map file is not an HDF5 file!") sys.exit(1) if map3d is not None or emd_id is not None: log_and_raise_error( logger, "Cannot initialize custom geometry because of ambiguous keyword arguments." ) sys.exit(1) self.set_custom_geometry_by_h5file(map3d_filename, map3d_dataset, dx) elif map3d_filename is not None: if not map3d_filename.endswith( ".map") and not map3d_filename.endswith(".mrc"): log_and_raise_error(logger, "Map file is not an MRC/MAP file!") sys.exit(1) self.set_custom_geometry_by_mrcfile(map3d_filename) elif emd_id is not None: log_debug( logger, "Attempting to initialise custom geometry with \'emd_id\'." ) if map3d_filename is not None or map3d_dataset is not None or map3d is not None or dx is not None: log_and_raise_error( logger, "Cannot initialize custom geometry because of ambiguous keyword arguments." ) sys.exit(1) self.set_custom_geometry_by_emd_id(emd_id) if diameter is None: self.diameter_mean = self._dx_orig * self._map3d_orig.shape[-1]