Published August 31, 2025 | Version 1.0.0
Software Open

eljost/pysisyphus: pysisyphus 1.0.0 release

  • 1. Ernst-Abbe-Hochschule Jena
  • 2. Friedrich Schiller University Jena
  • 3. Xiamen University
  • 4. @github

Description

Pysisyphus 1.0.0

Since the first commit on Wednesday July 5 2017 until today, pysisyphus came a long way. This release is a significant milestone for pysisyphus and adds many new features in the form of complex workflows that are seamlessly automated, numerous other additions, improvements, as well as various bugfixes.

The most notable features are outlined below: Pysisyphus now understands wavefunctions from various single-reference methods, can calculate different molecular integrals over Gaussian-type-orbitals and can calculate many useful molecular quantities in ground and excited states.

By shifting the focus on parsing the wavefunctions directly, many new exciting features become possible. Instead of wasting substantial time on implementing flags to carry out specific property calculations for each calculator and writing the associated parsing code, I put a focus on parsing the selected set of common wavefunction files. With the wavefunction and accompanying molecular integrals a great deal of interesting quantities can be calculated, e.g., overlap matrices, (transition) multipole moments, Coulomb tensors etc.

Nontheless, all good things come to an end. As an eager scientist working under the WissZeitVG your number one priority is not to congest the university and of course I complied. As I'm no more in acadima, I no longer have access to commerical/closed-source codes like Gaussian or Turbmole nor to the vast number of interesting papers, published by the scientifc community over the years.

As I'm not paid anymore, to work on pysisyphus I wont be able to keep up the support for it, as I did previously. So please consider this to be the final release of pysisyphus. Maybe, if I find some spare time I can fix an issue or add a new feature from a big backlog, that exists on my machine.

If you have a comment or a story to share, let me know at info@pysisyphus.org.

Release Highlights

  • Updated nix expressions for pysisyphus and associated projects from @sheepforce
  • Support for Wavefunctions and Molecular Integrals with focus on single reference methods (see wavefunction subdir)
    • Parsing of many different wavefunction formats: .molden, .fchk, .aomix, ORCA .json/.bson/.molden, XTB .molden, TREXIO, Molcas HDF5 files
    • Support for Cartesian and Spherical GTO basis functions
    • Population and bond order analysis: Mulliken, IAO (10.1021/ct400687b), Mayer Bond Orders
    • MO-localiatzion
      • Foster-Boys
      • Pipek-Mezey
      • Cholesky
    • Molecular integration grids using Becke weighting
    • Molecular integral backends with multiple backends
      • Python and Numba backends from sympleints, libcint
      • Overlap integrals
      • Kinetic integrals
      • Multipole integrals (Dipole, Quadrupole, Spherical Multipoles up to Quadrupole)
    • Calculation of cube files via pysisyphus-addons
      • Detachment-attachment densities to visualized excited states (10.1021/j100039a012)
      • (Spin) Densities
  • (Grid) Distributed multipole analysis (10.1021/ct050190+)
    • Uses code-generated integrals from sympleints; currently up to quadrupoles are implemented
    • Uses code-generated multipole-shift operators
    • See tests in tests/test_dma
  • Seamless property based Diabatization using unrelaxed densities from a single TDA/TD-DFT calculation to generate diabatic states and expectation values, e.g., diabatic couplings
    • Boys diabatization using (transition) dipole moments
    • Edmiston-Ruedenberg diabatization using Coulomb integrals via pysisyphus-addons (10.1021/jp101235a)
      • Implemented using fast density fitting integrals generated via sympleints
      • Cost-function maximization is carried out using gradients and Hessian matrices from automatic differentiation with JAX
      • Support for its $\varepsilon$ formulation that takes solvent parameters and temperature into account (see (10.1063/1.4766463)
    • Simple interface is currently restricted to ORCA 5.0.4
    • See tests in tests/test_diabatization and the documentation
  • 1d Numerov's method for wavefunction calculation (10.1039/C6CP06698D, 10.1016/j.cplett.2019.04.016)
    • Sparse formulation
    • Support for periodic potentials
    • See tests in tests/test_numerov
  • Automated calculation of hindered rotor partition functions using Gaussian Process Regression (see hindered_rotor subdir)
    • Simple molecular fragmentation
    • Automatic calculation of rotor moments of inertia (10.1063/1.473958)
    • Automatic calculation of periodic potentials
    • Nuclear wavefunctions and associated energy levels from periodic Numerov's method
    • See tests in tests/test_hindered_rotor and the documentation TBD
  • Ab-initio calculation of Marcus dimension (10.1039/D3SC01402A)
    • See tests in tests/test_marcusdim
    • See documentation in TBD

New Features

  • ES-overlaps for unrestricted calculations for TDA/TD-DFT like methods
  • Perturbative spin-orbit-couplings for TDDFT calculations using libcint 1-electron-spin-orbit integrals Support for pretabulated effective charges or Boettger factors (10.1021/jacsau.2c00659)
  • Geodesic interpolation via interface to geodesic-interpolate (10.1063/1.5090303, #310 from @cvsik)
  • Updated Geometry API
    • Programmatic access (attributes/methods) to excited state related quantities and wavefunctions
    • New attributes: Geometry.wavefunction, Geometry.all_energies, Geometry.td_1tdms
    • New method: Geometry.calc_relaxed_density(root)
    • Attributes and methods mentioned above are currently implemented for Gaussian16, ORCA 5.04, Turbomole 7.8 and PySCF calculators
  • Local force constants and decomposition of normal modes (10.1016/j.cplett.2020.137337). There is no simple to use interface yet. See tests at tests/test_local_force_constants
  • Calculation of Boltzmann weights from given energy levels and temperatures
  • Parallel COS calculations w/ dask from YAML input (#258, @Marclie)
  • Affine transformations in 3d
  • Calculation of charge-transfer numbers
  • RMSD external potential (See 10.1002/jcc.20110 and examples/opt/25_uracil_dimer_rmsd_restraint for an example)
  • Finite Difference Hessian
  • Switch from PyXTB to TBLite
  • 3-image MEISC selection algorithm from 10.1063/5.0021923
  • Basic crest wrapper for conformer generation
  • Calculation of anharmonic partition functions. See tests at tests/test_partfuncs.
  • New optimizer: Cubic Newton (arxiv.org/abs/2112.02089)
  • Transition orbital projection approach for excited state tracking. See 10.1063/5.0081207. Use via ovlp_type: top.
  • Dedicated MoCoeffs class in calculators for dealing with MO-Coefficients in an efficient manner

Improvements

  • Refactored Optimizer code
    • Energies and its derivatives are now calculated separately from Optimizer.get_step()
    • Optimizer.run() main loop is now a generator
  • Refactored COS code
    • More methods are now pure and can't initiate unintended calculations
    • Lanczos-iterations are now enabled for NEBs to converge the tangent to the true transition vector
    • Added approximate Hessian generation from COS as described in 10.1021/ct400319w, 123dd57f)
    • ChainOfStates.propagate() to propagate root info along COS images, e.g., when doing ES-COS calculations
    • Allow initializing GSM with more than 2 images
  • If available, the charge is also saved to HDF5 Hessians
  • Geometry.jmol() now accepts console commands
  • More robust Hessian projection when imposing Eckart conditions by enforcing standard orientation
  • Reworked run.run_calculations()
    • More robust passing of chkfiles
    • Support for calculations on different molecules
    • Correct dumping of calculated Hessians
    • Estimation of remaining calculation time
    • Skipping of previously finished calculations for seamless restarting of failed calculations
  • hessian_proj.get_hessian_projector() now also supports a gradient vector in the construction of the projector
  • pysistrj
    • Add --sample command to sample N geoms from given geometries
    • Add --spline to select evenly distributed number of geometries from given geometries
  • Refactored initializer in LineSearch class
  • dynamics.wigner.get_wigner_sampler() now accepts a seed for reproducibility
  • Calculation of excited state overlaps now also involves solving a min-cost-problem for improved state-pair assignment
  • Entangle OverlapCalculator.track_root() to make using the code easier
  • Improved thermochemistry report
  • Normal modes with imaginary eigenvalues are now reported in pysisthermo
  • Serpentine potential & test
  • Improved reaction rates report
  • LINEAR shortcut for creating linear bend & its complement when providing typed_prims input
  • Generation of interfragment bonds was reworked. Now much less interfragment bonds are created
  • Ability to converge to higher-order saddle points, e.g., of 2nd order
  • Converged quantities in geometry optimizations are now indicated by an *
  • Lanczos method implementation gives more output, uses a stricter approach (57b05493)
  • OpenMolcas calculator is now much more flexible and now supports CASPT2 gradients
  • Composite-calculator support more complex expressions (767434e)
  • Reworked relaxed scans
    • Optimized geometries are now correctly dumped while scan is running
    • Add visualization via pysisplot --scan

Fixes

  • yaml constructor for angstrom was faulty
  • since scipy 1.11 (-1)!! is 0 and not -1 anymore ...
  • Add warning when thermoanalysis package is missing and fixed failing import
  • Dont't crash in pysis merge when OBabel FF opt fails
  • Cubic displacement from TS when initializing IRCs was faulty
  • ursina is now listed as optional dependency in setup.cfg
  • augment_bond returned wrong geometry in run_opt driver
  • max linesearch was broken in TSHessianOptimizer
  • DLC constraints didn't really work
  • FakseASE was incompatible w/ ase >= 3.23.0
  • IRC Rx. coordinate was inaccurate
  • Filter out eigenvectors w/ vanishing gradient in RFOptimizer
  • Don't add hydrogen_bonds that are already bonds. Sped up their detection.
  • g-factor for link atoms in ONIOM calculations is now chosen based on the atom pair identities
  • MOPAC calculator method was always PM7 and user input was ignored
  • Interpolator classes now return interpolated geometries with the original coord_type (c1b14bf7)

Deprecations & Deletions

  • Removed MicroOptimizer and associated code
  • Finally removed deprecated/* and tests_staging/* directories

Files

eljost/pysisyphus-1.0.0.zip

Files (26.8 MB)

Name Size Download all
md5:1621c68c76c7ccfd267e4084f6720229
26.8 MB Preview Download

Additional details

Related works

Is supplement to
Software: https://github.com/eljost/pysisyphus/tree/1.0.0 (URL)

Software