π API Documentationο
moxel packageο
MOXΡλ is a Python package for parallel calculation of energy voxels, with emphasis on reticular chemistry.
Note
Currently, interactions are modelled with the Lennard-Jones (LJ) potential.
Submodulesο
moxel.utils moduleο
- class moxel.utils.Grid(grid_size=25, cutoff=10, epsilon=50, sigma=2.5)ο
Bases:
objectA 3D energy grid over a crystal structure.
- Parameters:
grid_size (int, default=25) β Number of grid points along each dimension.
cutoff (float, default=10) β Cutoff radius (β«) for the LJ potential.
epsilon (float, default=50) β Epsilon value (Ξ΅/K) of the probe atom.
sigma (float, default=2.5) β Sigma value (Ο/β«) of the probe atom.
- structureο
Available only after
Grid.load_structure()has been called.
- structure_nameο
Available only after
Grid.load_structure()has been called.- Type:
str
- cubic_boxο
Available only after
Grid.calculate()has been called.- Type:
bool
- voxelsο
Available only after
Grid.calculate()has been called.- Type:
array of shape (grid_size, grid_size, grid_size)
- calculate(cubic_box=False, length=30, potential='lj')ο
Iterate over the grid and return voxels.
For computational efficiency and to assure (approximately) the same spatial resolution, the grid is overlayed over a supercell scaled according to MIC, see
mic_scale_factors().If lattice angles are significantly different than 90Β°, to avoid distortions set
cubic_boxtoTrue. In this case, the grid is overlayed over a cubic box of sizelengthcentered at the origin but periodicity is no longer guaranteed.- Parameters:
potential (str, default='lj') β The potential used to calculate voxels. Currently, only the LJ potential is supported.
cubic_box (bool, default=False) β If
True, the simulation box is cubic.length (float, default=30) β The size of the cubic box in Γ . Takes effect only if
cubic_box=True.
- Returns:
voxels β The energy voxels as \(e^{-\beta \mathcal{V}}\), to ensure numerical stability.
- Return type:
array of shape (grid_size, grid_size, grid_size)
Notes
For structures that can not be processsed, their voxels are filled with zeros.
- lj_potential(coords)ο
Calculate LJ potential at cartesian or fractional coordinates.
- Parameters:
coordinates (array_like of shape (3,)) β If
cubic_box=Truecartesian. Else, fractional.- Returns:
energy β Energy as \(e^{-\beta \mathcal{V}}\), to ensure numerical stability.
- Return type:
float
- load_structure(cif_pathname)ο
Load a crystal structure from a
.ciffile.- Parameters:
cif_pathname (str) β Pathname to the
.ciffile.
- moxel.utils.batch_clean_and_merge(batch_dirnames, out_pathname=None)ο
Clean a single batch, or first clean and then merge multiple batches. All batches must have the form:
batch βββvoxels.npy βββnames.json
Cleaning is required since the voxels for some structures might be zero, see
Grid.calculate().If
len(batch_dirnames) == 1the cleaned voxels for are stored underbatch_dirnames[0]/clean_voxels.npyand the names of their corresponding structures underbatch_dirnames[0]/clean_names.json.If
len(batch_dirnames) > 1the voxels (cleaned and merged) are stored underout_pathname/clean_voxels.npyand the names of their corresponding structures underout_pathname/clean_names.json. That is:out_pathname βββclean_voxels.npy βββclean_names.json
- Parameters:
batch_dirnames (list) β List of pathnames to the directories of the batches.
out_pathname (str, optional) β Pathname to the directory holding the clean voxels and names. The directory is created if it doesnβt exist. Takes effect only if
len(batch_dirnames) > 1. IfNonevoxels and names are stored under./clean_voxels.npyand./clean_names.json.
- Returns:
exit_status β If no voxels are missing
0else1.- Return type:
int
- moxel.utils.mic_scale_factors(r, lattice_vectors)ο
Return scale factors to satisfy minimum image convention (MIC) [1] .
- Parameters:
r (float) β The cutoff radius used in MIC convetion.
lattice_vectors (array of shape (3, 3)) β The lattice vectors of the unit cell. Each row corresponds to a lattice vector.
- Returns:
scale_factors β
scale_factors[i]scaleslattice_vectors[i].- Return type:
array of shape (3,)
References
- moxel.utils.plot_voxels(voxels, *, fill_pattern=None, colorbar=True, cmap='viridis', **kwargs)ο
Visualizing voxels with Axes3d.voxels.
- Parameters:
voxels (3D array) β
fill_pattern (3D array of bool, optional) β A 3D array of truthy values, indicating which voxels to fill. If not specified, all voxels are filled.
colorbar (bool, default=True) β Whether to include a colorbar.
cmap (str, default='viridis') β Colormap that colorizes the voxels based on their value.
**kwargs β
Valid keyword arguments for Axes3d.voxels.
Warning
Do not pass the argument
facecolorsof Axes3d.voxels. This argument is used under the hood byplot_voxels_mpl()to generate the colors of the voxels based on the specifiedcmap.
- Returns:
fig
- Return type:
- moxel.utils.voxels_from_dir(cif_dirname, grid_size=25, cutoff=10, epsilon=50, sigma=2.5, cubic_box=False, length=30, out_pathname=None)ο
Calculate voxels from
.ciffiles incif_dirnameand save them inout_pathnameasarrayof shape(n_samples, grid_size, grid_size, grid_size), wheren_samplesis the number of.ciffiles incif_dirname.- Parameters:
cif_dirname (str) β Pathname to the directory containing the
.ciffiles.grid_size (int, default=25) β Number of grid points along each dimension.
cutoff (float, default=10) β Cutoff radius (β«) for the LJ potential.
epsilon (float, default=50) β Epsilon value (Ξ΅/K) of the probe atom.
cubic_box (bool, default=False) β If
True, the simulation box is cubic.length (float, default=30) β The size of the cubic box in Γ . Takes effect only if
cubic_box=True.sigma (float, default=25) β Sigma value (Ο/β«) of the probe atom.
out_pathname (str, optional) β Pathname to the file holding the voxels. If not specified, voxels are stored in
./voxels.npy.
Notes
Samples in output array follow the order in
sorted(os.listdir(cif_dirname)).For structures that can not be processsed, their voxels are filled with zeros.
- moxel.utils.voxels_from_file(cif_pathname, grid_size=25, cutoff=10, epsilon=50, sigma=2.5, cubic_box=False, length=30, only_voxels=True)ο
Return voxels from
.ciffile.- Parameters:
cif_pathname (str) β Pathname to the
.ciffile.grid_size (int, default=25) β Number of grid points along each dimension.
cutoff (float, default=10) β Cutoff radius (β«) for the LJ potential.
epsilon (float, default=50) β Epsilon value (Ξ΅/K) of the probe atom.
sigma (float, default=25) β Sigma value (Ο/β«) of the probe atom.
cubic_box (bool, default=False) β If
True, the simulation box is cubic.length (float, default=30) β The size of the cubic box in Γ . Takes effect only if
cubic_box=True.only_voxels (bool, default=True) β Determines
outtype.
- Returns:
out β If
only_voxels=True, array of shape(grid_size, grid_size, grid_size). Otherwise,Grid.- Return type:
arrayorGrid
Notes
For structures that can not be processsed, their voxels are filled with zeros.
- moxel.utils.voxels_from_files(cif_pathnames, grid_size=25, cutoff=10, epsilon=50, sigma=2.5, cubic_box=False, length=30, out_pathname=None)ο
Calculate voxels from a list of
.ciffiles and save them inout_pathnameasarrayof shape(n_samples, grid_size, grid_size, grid_size), wheren_samplesis the number of is the number of.ciffiles incif_pathnames.- Parameters:
cif_pathanmes (list) β List of pathnames to the
.ciffiles.grid_size (int, default=25) β Number of grid points along each dimension.
cutoff (float, default=10) β Cutoff radius (β«) for the LJ potential.
epsilon (float, default=50) β Epsilon value (Ξ΅/K) of the probe atom.
sigma (float, default=25) β Sigma value (Ο/β«) of the probe atom.
cubic_box (bool, default=False) β If
True, the simulation box is cubic.length (float, default=30) β The size of the cubic box in Γ . Takes effect only if
cubic_box=True.out_pathname (str, optional) β Pathname to the file holding the voxels. If not specified, voxels are stored in
./voxels.npy.
Notes
Samples in output array follow the order in
cif_pathnames.For structures that can not be processsed, their voxels are filled with zeros.