SPATULA
(Symmetry Pattern Analysis Toolkit for Understanding Local Arrangements) is a Python package for computing the continuous symmetry ordering of the neighbors of a point in space.
In general, this is to compute the local ordering of particles (molecules) in simulations or experiments over time.
The package serves as an extension of freud with a new order parameter.
spatula
currently supports all point groups of finite order:
- All crystallographic point groups
- Cyclical groups C_n
- Cyclical groups with vertical reflection C_{nv}
- Cyclical groups with horizontal reflection C_{nh}
- Dihedral groups D_n
- Dihedral groups with horizontal reflection D_{nh}
- Dihedral groups with diagonal reflections D_{nd}
- Polyhedral groups T, T_h, T_d, O, O_h, I, I_h
- Rotoreflection groups S_n
- Inversion group: C_i
- Reflection group: C_s
- Reference Documentation: Examples, tutorials, and package Python APIs.
- Installation Guide: Instructions for installing and compiling spatula.
- GitHub repository: Download the spatula source code.
- Issue tracker: Report issues or request features.
- HOOMD-blue: Perform MD / MC simulations that can be analyzed with spatula.
- freud: Analyze particle simulations.
- signac: Manage your workflow with signac.
When using spatula to process data for publication, please refer to the documentation instructions.
Spatula is available on PyPI and conda-forge. See the Installation Guide for more information.
import freud
import spatula
system = freud.data.UnitCell.fcc().generate_system(3)
optimizer = spatula.optimize.Union.with_step_gradient_descent(
optimizer=spatula.optimize.Mesh.from_grid()
)
PGOP_Oh_Ih = spatula.PGOP(["Oh","Ih"], optimizer)
PGOP_Oh_Ih.compute(system, sigmas=None, neighbors={"r_max": 1.2, "exclude_ii": True})
print(PGOP_Oh_Ih.order)