- Fixed variable shadowing in
polyhedra_from_atom_indicesthat caused only the first polyhedron to receive correct vertices. - Invalid atom indices passed to
polyhedra_from_atom_indicesnow raiseValueErrorwith a descriptive message instead of a rawKeyError.
polyhedra_from_atom_indicesnow uses precomputed index-to-atom mappings for O(1) lookups instead of repeated linear scans.
- Expanded test coverage across
configuration,coordination_polyhedron,orientation_parameters,polyhedra_recipe,trajectory, andutilsmodules.
- The
progressparameter onTrajectory.from_structures(),Trajectory.from_xdatcar(), andTrajectory.from_xdatcars()is nowboolinstead ofbool | str. The"notebook"option has been removed;tqdm.autonow handles automatic terminal/Jupyter detection. Replaceprogress="notebook"withprogress=True. Passing a non-bool now raisesTypeErrorwith a migration hint. - Renamed
SymmetryMeasure.stringattribute toSymmetryMeasure.name. - Removed unused
verboseparameter fromTrajectory.from_structures(),from_xdatcar(), andfrom_xdatcars(). - Removed unused
offsetparameter fromTrajectory.extend().
Trajectory.extend()now extends both structures and configurations. Previously only configurations were extended, causing the two lists to fall out of sync.
- Comprehensive documentation overhaul with narrative pages, guides, and grouped API reference.
- Added getting started guide and core concepts page.
- Added guides for polyhedra recipes, continuous symmetry measures, neighbour analysis, and trajectory analysis.
- Replaced auto-generated module stubs with a single grouped API reference page.
- Added citing and changelog pages.
- Modernised Sphinx configuration: replaced deprecated
recommonmarkwithmyst-parser, addedintersphinxcross-references to pymatgen, numpy, scipy, and matplotlib. - Filled ~30 missing docstrings across the codebase.
- Switched from
tqdm/tqdm.notebooktotqdm.autofor progress bars. - Removed unused imports from
trajectorymodule.
- Cached
symmetry_measureproperty onCoordinationPolyhedronto avoid redundant CSM calculations on repeated access. edge_graphandsymmetry_measurenow return defensive copies to prevent callers from corrupting the internal cache.- Replaced N! permutation loop in
RotationAnalyserwith symmetry-reduced approach using bsym, giving ~50x speedup for octahedral geometries.
- Fixed
OrientationDict.all_rotational_distancestype annotation (np.ndarray, notfloat).
- Removed redundant
assert isinstancechecks across the codebase. - Added input shape validation to
RotationAnalyser.discrete_orientation.
- Removed dependency on
pymatgen.analysis.chemenv. CSM (continuous symmetry measure) calculation and reference geometry data are now implemented internally. minimum_symmetry_measure()now takesdistorted_points: np.ndarrayinstead ofAbstractGeometry.oct_rotational_order_parameter()now takespoints: np.ndarrayinstead ofAbstractGeometry.- Removed
abstract_geometryproperty andconstruct_abstract_geometry()method fromCoordinationPolyhedron.
- Added
polyhedral_analysis.csmmodule with internalcontinuous_symmetry_measure()function using SVD-based Procrustes analysis. - Added
polyhedral_analysis.reference_geometriesmodule with hardcoded ideal vertex coordinates for 17 reference geometries (CN 4-8).
- Split mypy type checking into a separate CI job.
- Migrated from setup.py to pyproject.toml.
- Removed requirements.txt, .coveragerc, and .mypy.ini (consolidated into pyproject.toml).
- Version now read at runtime via importlib.metadata.
- Updated type hints to modern Python 3.11+ syntax.
- Updated README with description, features, installation, and quick start example.
- Reduced CSM (continuous symmetry measure) permutations using symmetry equivalence via bsym. Only symmetry-inequivalent vertex permutations are evaluated, giving 12-49x speedups depending on geometry symmetry.
- Removed duplicate "Dodecahedron with triangular faces" entry from CN=8 geometry list.
- Fixed mypy errors across codebase.
- Now requires Python >=3.11 (previously >=3.7).
- Removed numpy<2.0 version cap; now compatible with numpy 2.x.
- Minimum pymatgen version bumped to >=2024.7.18.
- New runtime dependencies: bsym, cmcrameri.
- Added orientation plotting.
- Added off-centre displacement calculation.
- Added octahedral orthogonality metric.
- Added radial distortion parameter.
- Added polyhedron centroid methods.
- Added mapping from global to local vertex indices.
- Revised vertex distance and vertex pair angle calculations.
- CI updated to test Python 3.11, 3.12, 3.13, 3.14.
- CI now triggers only on pull requests.
Initial release.