Highlights
SMACT v4.0.0 is a major release that adds property prediction, mixed-valence screening, full type annotations, and comprehensive code quality improvements.
Breaking changes
- Drop Python 3.10 support; minimum version is now Python 3.11
- Rename
SmactFilterOutputs.dicttocomposition_dictto avoid shadowing the built-in - Enforce
zip(strict=True)across all source code — silently mismatched sequences now raiseValueError
New features
- Property prediction: composition-to-property prediction using pre-trained ROOST models, with ensemble uncertainty quantification and a model registry
- Mixed-valence support for
smact_validity - ElementEmbeddings integration via
smact.io - Full type annotations across all public APIs with pyright "standard" mode enforcement
- Consensus-based oxidation state filtering in
smact_filterandsmact_validity
Bug fixes
- Fix noble gas
TypeErrorcrash with explicit oxidation state sets - Fix
RuntimeErrorinSmactStructure.from_mp()BVAnalyzer fallback - Fix wurtzite builder oxidation states mismatch
- Replace recursive GCD with
functools.reduceto prevent stack overflow - Fix
SmactStructure.__eq__to handle different species counts - Convert recursive
parse_formulato iterative with depth limit - Correct geometric formulas in lattice parameter calculations
Code quality
- Migrate test suite to pytest with coverage raised to >85% (318 tests)
- Linting with ruff across all rule categories
- Tests run on Python 3.11/3.12/3.13 across Ubuntu/macOS/Windows
Full changelog: https://github.com/WMD-group/SMACT/blob/master/docs/CHANGELOG.md