Skip to content

SMACT v4.0.0

Latest

Choose a tag to compare

@KingaMas KingaMas released this 03 Mar 18:18
· 155 commits to master since this release

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.dict to composition_dict to avoid shadowing the built-in
  • Enforce zip(strict=True) across all source code — silently mismatched sequences now raise ValueError

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_filter and smact_validity

Bug fixes

  • Fix noble gas TypeError crash with explicit oxidation state sets
  • Fix RuntimeError in SmactStructure.from_mp() BVAnalyzer fallback
  • Fix wurtzite builder oxidation states mismatch
  • Replace recursive GCD with functools.reduce to prevent stack overflow
  • Fix SmactStructure.__eq__ to handle different species counts
  • Convert recursive parse_formula to 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