Skip to content

MLatom 3.25.3

Choose a tag to compare

@dralgroup dralgroup released this 10 Sep 02:35
· 4 commits to main since this release
  • Fixed: transition-state optimizations and IRC runs handed geomeTRIC an initial Hessian in the wrong unit — Hartree/Angstrom^2 where geomeTRIC expects Hartree/Bohr^2, about 3.6 times too large, so the optimizer started from a badly scaled Hessian. Paths and the steps taken to reach them change.
  • Fixed: KREG Hessians were missing a term — the second derivative of the reduced-distance descriptors was not included, so every predicted Hessian was wrong.
  • Fixed: density fitting with PySCF returned an energy that was not the energy — for methane at B3LYP/6-31G, density_fitting=True gave -0.73 Hartree where the answer is -40.51, and nothing was raised. The energy now comes from the calculation that actually ran.
  • Fixed: frequency calculations through ASE died on any structure with an imaginary frequency — optprog=ase failed inside ASE with Too few vibration modes after selection, which is every saddle point.
  • The nudged elastic band now returns a band, and finds the saddle. Seven middle images instead of three, image-dependent pair-potential interpolation, the improved tangent, and FIRE in two stages: relax the band, then switch on the climbing image. What comes back is the relaxed path itself, reactant to product, available as geomopt.band and plottable with band.plot_energy_profile(); the transition state is the highest image. Previously the return value was a log of model calls in whatever order the optimizer asked, and the "transition state" was whichever image it touched last.
  • Every nudged-elastic-band image, the endpoints included, now gets a calculator: the improved-tangent method the new band uses asks the endpoints for their energies.
  • Fixed: nudged-elastic-band and dimer transition-state searches failed on ASE 3.27 and newer with No module named 'ase.neb'. ASE moved those into ase.mep.
  • Fixed: driving Gaussian for an MLatom method — geometry optimization, frequencies, IRC, QST2, IR — failed on a fresh install with only Failed to open output file from external program. MLatom writes that file through fortranformat, which it never declared as a dependency.
  • Fixed: $mlatom input.inp did not run at all from a pip-installed MLatom. The build stripped the executable bit from shell_cmd.py, so running it directly gave Permission denied. Every published wheel had this, 3.25.2 included. The mlatom command itself was unaffected.
  • Fixed: a MACE calculation left PyTorch in double precision for the rest of the session, so the next model built in the same session crashed with mat1 and mat2 must have the same dtype.
  • Fixed: three further places set PyTorch's default precision for the whole process and left it changed, one of them at import time.
  • Fixed: the ASE calculator kept the molecule and the optimization trajectory in module-level variables, so two calculations running at the same time in one process shared them.
  • MLatom now allows the PyTorch versions it is actually tested with — torch from 2.1.2 up to but excluding 2.8, and torchani 2.2.x, replacing the exact pins torch==2.1.2 / torchani==2.2.3. Ranges rather than pins because PyTorch publishes no build newer than 2.2.2 for Intel Macs, where an exact pin made MLatom uninstallable.
  • AIMNet2 needs pip install "aimnet==0.0.1", the version our interface targets; the README said pip install aimnet, which installs a rewritten package that does not work with the models MLatom ships.
  • The documentation and READMEs now say plainly that MLatom is developed and tested on Linux, the only platform it is verified on; macOS is often usable but untested, and Windows is not supported.
  • If you run NumPy 2: MLatom ships a separate KREG binary for it, and that one has not been rebuilt since the Hessian fix above. The released package installs NumPy 1, where the fixed binary is the one used.