Breaking Changes
-
Python 3.11+ and PyTorch 2.8+ required - Dropped support for Python 3.10
and PyTorch < 2.8.torchaninow requires >= 2.8 for the ANI2x/ANI2xt engines. -
Bundled AIMNet2
.jptmodels removed - AIMNet2 is now provided by the
aimnetpackage (a core dependency) instead of files shipped inside Auto3D.
Models are auto-downloaded and sha256-validated into~/.cache/aimneton
first use; setAIMNET_CACHE_DIRto override the cache location. Network
access is required once per model. -
Default AIMNet energies and forces differ from 3.x - The
aimnet
registry.ptexternalizes D3 dispersion (vs the embedded-D3.jptused in
3.x). AbsoluteE_totvalues shift and conformer rankings may differ
slightly as a result. -
Thermo entropy property renamed - The thermochemistry output SDF property
S_hartreeis nowS_hartree_per_K, correctly reflecting its units
(Hartree/Kelvin). Update any code that reads the old property name.
Added
-
Registry model selection -
optimizing_enginenow accepts anyaimnet
registry name (aimnet2,aimnet2-2025,aimnet2-nse,aimnet2-pd, ...) and
custom model file paths, in addition toAIMNET,ANI2x, andANI2xt.
AIMNETremains an alias for the registry defaultaimnet2. -
CLI surfaces the registry -
auto3d models listnow shows the AIMNet2
registry families, andauto3d models inforeports the correct 14-element
AIMNet2 set (H, B, C, N, O, F, Si, P, S, Cl, As, Se, Br, I). -
First-class property subcommands -
auto3d energy,auto3d optimize,
auto3d thermo, andauto3d tautomersexpose single-point energy, geometry
optimization, thermochemistry, and tautomer ranking from the CLI (previously
Python-only). Each supports--engine,--gpu/--no-gpu,--gpu-idx,
-o/--output, and--json. -
auto3d models test <engine>- loads an engine and runs a tiny forward
pass as a health check (catches a missing torchani, a failed aimnet registry
download, or a broken custom model file before a full run). -
Live optimization progress - interactive
auto3d runshows a live panel
(converged / active / dropped / step) during geometry optimization instead of
a static spinner. -
CLI ergonomics -
auto3d rungains--job-nameand--save-intermediate;
config initgains--force; choice flags use enums with shell completion;
input paths are validated up front; and commands return differentiated exit
codes (2 config/input, 3 dependency, 4 GPU, 5 model). -
API additions (backwards-compatible) -
calc_spe,opt_geometry, and
calc_thermoacceptout_path,use_gpu, andallow_tf32. A canonical
generate_conformersalias formain()is exported (mainstill works), and
get_stable_tautomers/select_tautomersare now part of the public API
(Auto3D.__all__).main()returns aWorkflowResult-- astrsubclass
holding the output SDF path (drop-in for the previous return) plus
n_molecules/n_conformerscounts.
Changed
-
use_ensembleno longer loads a bundled 8-model ensemble file. A single
registry member is used; passinguse_ensemble=Truenow emits a warning. -
allow_tf32now applies to the energy/optimize/thermo paths. These
previously selected the device inline and ignored TF32; they now route through
the shared device + torch configuration, so enabling TF32 affects them too
(a small numerical change for anyone who had set it expecting it to apply). -
Thermochemistry reference temperature is now 298.15 K - The default
temperature for thermodynamic property calculation changed from 298 K to the
standard 298.15 K.
Fixed
smiles2mols()no longer silently drops inputs that share an InChIKey -
Distinct inputs that collapse to the same standard InChIKey (e.g. some
tautomers, or the same molecule written two ways) are now disambiguated with a
suffixed id and a log message instead of being dropped.- Energy-guarded conformer deduplication - Conformers within the heavy-atom
RMSD threshold are merged only when their energies also agree within
DEFAULT_DUPLICATE_ENERGY_TOL, so genuine O-H/N-H rotamers are no longer
collapsed. - Thermochemistry robustness - Spin multiplicity is derived from the
molecule's radical electrons (with a warning that NNP energies are
closed-shell), and imaginary vibrational modes are ignored rather than
failing the whole molecule. - GPU index is validated up front - An out-of-range
gpu_idxnow raises a
clear configuration error instead of crashing inside a worker; a CPU run with
a list of GPU indices no longer spawns redundant contending workers. - CLI reports a real failure count -
auto3d runreports the number of
input molecules that produced no conformer instead of always reporting zero. - Deterministic file handling -
combine_smipreserves input order, and
.smimolecule indexing is gap-free when blank lines are present. - Read the Docs build - the docs build now runs on Python 3.11 to match
requires-python, fixing the failing hosted documentation build.
Removed
- Dead
torch.jit.optimized_executionguard in the batch optimizer (a no-op for
the eager-mode model wrapper).