# Path: condor/utils/log.py
# def log(logger, message, lvl, exception=None, rollback=1):
# def log_execution_time(logger):
#     def st_time(func):
#         def st_func(*args, **keyArgs):


import sys
import numpy
import logging
import condor
import condor.utils.log
import condor.utils.spheroid_diffraction
import condor.utils.diffraction
import condor.utils.bodies
import condor.utils.emdio
        import h5py
from condor.utils.log import log_and_raise_error,log_warning,log_info,log_debug
from condor.utils.variation import Variation
from .particle_abstract import AbstractContinuousParticle
    Class for a particle model

    *Model:* Refractive index map sampled on a cubic grid (continuum approximation)

    Args:
      :geometry (str): Geometry type

        *Choose one of the following options:*

          - ``'custom'`` - provide map either with an HDF5 file (``map3d_filename``, ``map3d_dataset``) or with a numpy array (``map3d``)

          - ``'icosahedron'`` - create map of a uniformly filled icosahedron

          - ``'cube'`` - create map of a uniformly filled cube

          - ``'sphere'`` - create map of a uniformly filled sphere

          - ``'spheroid'`` - create map of a uniformly filled spheroid

      :diameter (float): Particle diameter (not map diameter)

    Kwargs:
      :diameter_variation (str): See :meth:`condor.particle.particle_abstract.AbstractContinuousParticle.set_diameter_variation` (default ``None``)

      :diameter_spread (float): See :meth:`condor.particle.particle_abstract.AbstractContinuousParticle.set_diameter_variation` (default ``None``)

      :diameter_variation_n (int): See :meth:`condor.particle.particle_abstract.AbstractContinuousParticle.set_diameter_variation` (default ``None``)

      :dx: Distance between grid points of the map. This needs to be specified only if ``geometry=`custom''. Depending on whether the geometry is specified by file (``map3d_filename``, ``map3d_dataset``) or by numpy array (``map3d``) for more documentation see :meth:`set_custom_geometry_by_h5file` or :meth:`set_custom_geometry_by_array` respectively (default ``None``)


# Path: condor/utils/log.py
# def log(logger, message, lvl, exception=None, rollback=1):
# def log_execution_time(logger):
#     def st_time(func):
#         def st_func(*args, **keyArgs):


# Path: condor/particle/particle_map.py
import sys
import numpy
import logging
import condor
import condor.utils.log
import condor.utils.spheroid_diffraction
import condor.utils.diffraction
import condor.utils.bodies
import condor.utils.emdio
        import h5py
from condor.utils.log import log_and_raise_error,log_warning,log_info,log_debug
from condor.utils.variation import Variation
from .particle_abstract import AbstractContinuousParticle

    Class for a particle model

    *Model:* Refractive index map sampled on a cubic grid (continuum approximation)

    Args:
      :geometry (str): Geometry type

        *Choose one of the following options:*

          - ``'custom'`` - provide map either with an HDF5 file (``map3d_filename``, ``map3d_dataset``) or with a numpy array (``map3d``)

          - ``'icosahedron'`` - create map of a uniformly filled icosahedron

          - ``'cube'`` - create map of a uniformly filled cube

          - ``'sphere'`` - create map of a uniformly filled sphere

          - ``'spheroid'`` - create map of a uniformly filled spheroid

      :diameter (float): Particle diameter (not map diameter)

    Kwargs:
      :diameter_variation (str): See :meth:`condor.particle.particle_abstract.AbstractContinuousParticle.set_diameter_variation` (default ``None``)

      :diameter_spread (float): See :meth:`condor.particle.particle_abstract.AbstractContinuousParticle.set_diameter_variation` (default ``None``)

      :diameter_variation_n (int): See :meth:`condor.particle.particle_abstract.AbstractContinuousParticle.set_diameter_variation` (default ``None``)

      :dx: Distance between grid points of the map. This needs to be specified only if ``geometry=`custom''. Depending on whether the geometry is specified by file (``map3d_filename``, ``map3d_dataset``) or by numpy array (``map3d``) for more documentation see :meth:`set_custom_geometry_by_h5file` or :meth:`set_custom_geometry_by_array` respectively (default ``None``)


      :map3d: See :meth:`set_custom_geometry_by_array` (default ``None``)