Recent Releases of pysisyphus
pysisyphus - pysisyphus 1.0.0 release
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
pysisyphusand associated projects from @sheepforce - Support for Wavefunctions and Molecular Integrals with focus on single reference methods (see
wavefunctionsubdir)- 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_diabatizationand 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_rotorsubdir)- 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_rotorand the documentation TBD
- Ab-initio calculation of Marcus dimension (10.1039/D3SC01402A)
- See tests in
tests/test_marcusdim - See documentation in TBD
- See tests in
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.allenergies, Geometry.td1tdms
- New method: Geometry.calcrelaxeddensity(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/25uracildimerrmsdrestraint 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
calculatorsfor 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
- hessianproj.gethessian_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.getwignersampler() 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
- augmentbond returned wrong geometry in runopt 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
- Python
Published by eljost 11 months ago
pysisyphus - Bugfix release
Bugfixes & Improvements
- More robust handling of internal coordinate rebuilding
- Python
Published by eljost about 4 years ago
pysisyphus - Bugifx release
Addition
- Internal coordinates of model layer can now be rebuilt on-the-fly in
LayerOptoptimizations.
Bugfixes & Improvements
- AFIR-HDF5 dump is now closed between calculations, allowing
pysisplot --afirwhile the calculation is still running - Loading initial Hessians with coordiante type
cartwas faulty.
- Python
Published by eljost about 4 years ago
pysisyphus - ONIOM optimization, AFIR improvements, New coordinate systems
Deprecations, Breaking Changes
- Updated handling of coordinate rebuilding. Previously, only the invalid coordinates (bends close to being linear, torsions with (nearly) collinear atoms) were dropped and no new coordinates were determined. Now a new set of coordinates is determined for the given coordinates and used in conjunction with the remaining valid coordinates.
Addition
- Support for nix flakes, provided by @sheepforce
- AFIR-Hessian
scripts/orca2cdd.pyfor simple CDD-cube generation with Multiwfn from ORCA.cisand.gbwfiles- New coordinate systems:
hredundandhdlcthat also contain the atomic Cartesian coordinates in addition to the regular set of internals. Alsocartesianandmwcartesianwhich will eventually supersedecart. The former coordinate systems implement theCoordSysprotocol and should be more future-proof, e.g., with them Cartesian constraints using Lagrange multipliers could be implemented. See the commit message of c2a901b22828df20dbef1acc33fd1a78d0be7e61 for a more thorough discussion. - Flexible optimizer
LayerOpt(type: layersin YAML input), tailored to optimize multilayer-systems, e.g., in ONIOM calculations - Started to work on supporting rate calculations in pysisyphus, including simple tunnel corrections. See
get_rates_for_geoms()andrender_rx_rates()indrivers/rates.py. - Extrapolation (before and after) a given set of geometries (see
pysistrj --help | grep extrapol) --kcalflag inpysisplotto output energies inkcal mol⁻¹instead ofkJ mol⁻¹. Implemeting this was probably a bad idea and it may be removed again in future versions, because I really don't like cal :)- Support for
.mol2inputs. Currently, the order"@<TRIPOS>MOLECULEand@<TRIPOS>ATOMis expected.
Bugfixes & Improvements
- Fixed energy/forces-mixing in EnergyMin calculator (see 10.1063/5.0021923)
climb_lanczosis now supported by all subclasses ofChainOfStates, e.g., NEB. Previously it was restricted toGrowingString. By enabling it, the lowest curvature mode will be determined using the Lanczos algorithm on all climbing images. The lowest curvature will be used instead of the regular tangent.- Improved plot appearance in
pysisplot --cosforces - Enabled
cartesiancoordinate system for COS optimizations - Take CG steps if possible, while growing a string. Previously only SD steps were taken while growing.
- Fixed many Sphinx-warnings while generating the documentation
- Convergence thresholds/targets are now reported in optimizations and IRC integrations. Fixes #196.
Miscellaneous
- Added two AFIR examples:
examples/opt/23_orca_afirandexamples/opt/24_xtb_three_frag_afir - Documented AFIR calculator
- Python
Published by eljost about 4 years ago
pysisyphus - Updates for nix-CI
Small post release containing several fixes for the nix-CI running on gitlab. This release includes no functional changes.
- Python
Published by eljost over 4 years ago
pysisyphus - Bugfixes, improved thermochemistry, Nix improvements, pKa calculation
Deprecations and Breaking Changes
- Entries for Gaussian-related utilities (
formchk,unfchk,rwfdump) in.pysisyphusrcmust be updated. Please see the documentation. For the above mentioned commands the trailing_cmdhas been dropped (fchk_cmd=[path to fchk]is now onlyfchk=[path to fchk]). Alternatively, if the binaries are available on$PATHthey should be found automatically by pysisyphus and their addition to.pysisyphusrcis not required. Whether the binaries are found is easily checked by executingpysisrcon the command line.
Addition
- Ability to dump calculations results to JSON (provide
dump: trueto calculator in YAML input) - Remote calculator to execute calculations on external machines using
Fabric pysisreplaceentry point to substitute atoms in existing geometries with new residues, e.g, OEt, OMe or Ph. Idea from 10.1002/wcms.1510pysisrcentry point to check available software and to generate a proper.pysisyphusrc- An additional block can be given in
barrierblock for calculation of solvated energies (seeexamples/complex/08_trispericyclic) scripts/aciddrain.pyfor batch calculation of pKa-values using luigi and LFER fitting (linear free energy relationship)EnergyMincalculator to optimize to allow, e.g., different multiplicities along a COS, see 10.1063/5.0021923- Methods to center and randomly rotate geometries (
Geometry.center()andGeometry.rotate()) - Formed/broken bonds are now reported along an IRC integration
Bugfixes & Improvements
- TDEN overlaps are much faster
- Fixed several deprecation warnings
- Update Github action workflows
- Improved integration with thermoanalysis and fixed calculation of wavenumbers of normal modes
- Amound of requested memory is now checked and adjusted if too much was requested
endoptcan now be requested without previous IRC run- Gathered more global configuration values in
config.py, e.g., default temperature and pressure, default sub-directory to store external QC program logs - Disabled long running tests in CI to save time in the test suite
- @sheepforce updated nix-related files
- Parsing of TURBOMOLE Hessians for bigger systems was faulty (fixes #173)
Miscellaneous
- QC-logfiles etc. are now dumped to
qm_calcssubdirectory - Christmas themed logo for next christmas season ;)
- Tighted default
overachieve_factorto5 - Switched from
setup.pytosetup.cfgandpyproject.toml
- Python
Published by eljost over 4 years ago
pysisyphus - First beta of 0.7.5
Deprecations and Breaking Changes
- Entries for Gaussian-related utilities (
formchk,unfchk,rwfdump) in.pysisyphusrcmust be updated. Please see the documentation. For the above mentioned commands the trailing_cmdhas been dropped (fchk_cmd=[path to fchk]is now onlyfchk=[path to fchk]). Alternatively, if the binaries are available on$PATHthey should be found automatically by pysisyphus and their addition to.pysisyphusrcis not required. Whether the binaries are found is easily checked by executingpysisrcon the command line.
- Python
Published by eljost over 4 years ago
pysisyphus - Conical intersection optimization, Normal Mode visualization, Improved Bends and Torsions
Addition
- Calculator for Conical intersection optimization (
type: conical), implementing the updated branching plane algorithm. Seeexamples/opt/17_orca_conical_intersection. - Simple ursina-based script that can read and visualize pysisyphus HDF5 Hessians to animate imaginary modes (
scripts/modes3d.py) - Dipole moment calculation in OpenMM calculator
- New internal coordinates: BondedFragment and DummyTorsion; suitable for optimization of water interaction energies, as needed for parametrizing CGENFF.
- Alternative implementations of bends and torsions, using atan2 instead of acos, that are numerically more stable. 2nd derivatives of Torsions are now calculated using the code-generated derivatives, starting from the atan2 expression.
- Support for
exitsign to cleanly shutdown calculations perfdriver to benchmark calculation-speedups with varyingpal- Implemented Bofills TS-Hessian update
hessian_update: ts_bofill - Support for ALPB solvent in XTB calculator
- Frozen atoms can now be excluded from the internal coordinate setup algorithm (please see the documentation)
Bugfixes
pr_ntoargument to OverlapCalculator was ignored- Don't try to call thermoanalysis, when it is not installed
- IRC classes now respect
out_dirargument - Requesting 2nd derivative of Rotations w.r.t. Cartesian coordinates led to a crash
Miscellaneous
- Version string is now dumped to RUN.yaml
- Improved Growing-Newton-Trajectory class
- Improved printing of internal coordinates in
pysistrj --internals - Relaxed scans are more robust
- Speeded up some internal coordinates by avoiding calls to numpy methods
- MO-coefficients can now be set in .gbw files
- Initial dimer calculation can now be read from a HDF5 Hessian imaginary mode
- Energy change is now reported in the first column of an optimization
- Switched from plain down-scaling to shifted-Newton-step when proposed RFO-step is too big
- Interpolation in internal coordinates is now more robust
- Python
Published by eljost over 4 years ago
pysisyphus - Bugfixes, Refactoring for more consistency
Addition
- Added ability to retry/rerun crashed calculations (
retry_calc: 1). For now only supported by ORCA. - Support for
fragments: totalinendopt:section. This allows optimizing the system as whole as well as optimizing the separate fragments - Single geometries from multi-geometry input files can now be accessed via pythons index-notation:
fn: multi_geoms.trj[1]would only load the second geometry frommulti_geoms.trj - Very basic support for preconditioning of position and rotation.
precontr:in YAML input; runs beforepreopt. Still very slow for sizable systems. pr_ntokeyword support forOverlapCalculatorto dynamically select the number of NTO pairs in overlap calculations
Bugfixes
- Hessian was unnecessarily recalculated in TS optimizations after COS runs
- Fixed Eckart projection to remove translation and rotation. Adapted from geomeTRIC
- Eckart projection in calculation of initial displacement from TS in IRC runs was never carried out
- Made parsing & storing of MO and CI coefficients in
store_overlap_data()much more consistent
Miscellaneous
- coord_type in optimizations and wavenumber of imaginary mode in IRC runs is now reported
- Added separate ORCA5 calculator (
type: orca5) so ORCA4 and ORCA5 can be setup in parallel - Refactored geometry loading via
get_geomsandread_geomsintrj.pyto support arbitrary kwargs - All
preopt/tsopt/endoptsections can now contain ageomsection, e.g., to control the coord_type - Requested and actual energy lowering is now reported in IRC runs
- Wavenumber/frequencies are now also reported when thermoanalysis is printed
- Python
Published by eljost almost 5 years ago
pysisyphus - Bugfixes & expanded documentation
Bugfixes
- Added missing files for worked example of trispericyclic reaction in
examples/complex/08_trispericyclic/ - Initial displacement from TS using 3rd derivatives of the energy (
displ: energy_cubic) should now be more reliable. The resulting HDF5 dump can be reused via thedispl_third_h5: [path to hdf5]option (see the IRC documentation)
Miscellaneous
- Improved calculator documentation for ORCA, XTB, Turbomole and Calculators in general
- Added Citation.cff
- Updated Turbomole tests and added Turbomole Growing String examples using the native pysisyphus calculator as well as the QCEngine wrapper
- Python
Published by eljost almost 5 years ago
pysisyphus - Translation-Rotation internal coordinates, OpenMM calculator, Relaxed scans
Addition
- Geometry loading from pubchem via
pubchem:[name], e.g.,pubchem:thymineorpubchem:methane - Growing Newton Trajectory (experimental) as described in 10.1063/1.1885467
- Enabled TRIC for improved optimizations of solvated and/or non-covalently bound systems (see 10.1063/1.4952956,
coord_type: tric) - Calculators for preconditioning of translation and rotation described here 10.1002/jcc.26495, useful for docking and preparing input geometries for COS methods.
- Driver for 1d relaxed scans in internal coordinates (keyword
scan). See 8. Relaxed Scans in the documentation - Basic support for reading & writing CHARMM coordinate card files
- OpenMM calculator using ParmEd
Bugfixes
- Improved parsing & writing of PDB files
- Post-HF Psi4 calculations returned only HF energy
Miscellaneous
- Refactored
RedundantCoordsand updatedpysistrj --internals - ONIOM calculator now uses sparse matrices for calculations involving the Jacobian
- Python
Published by eljost almost 5 years ago
pysisyphus - MicroOptimizer
Addition
- MicroOptimizer; allows implementing microcycles for multi-level calculations
- Python
Published by eljost about 5 years ago
pysisyphus - ONIOM improvments, Batch calculations, Thermochemistry
Addition
scripts/frag.pyfor easy fragmentation to generate indices for ONIOM calculations- Experimental ONIOM2-optimizer (
type: oniom) supporting microiterations - Freezing atoms, see the documentation
- Partial linesearch for LBFGS-optimizer (
line_search=True, disabled by default) -Composite calculator to support composite methods ;) - Matrix/Batch calculations using
MultiCalc - Improved IPIServer; now supports coordinate update
pysis -cp [new dest] [add files]now supports copying additional files [add files] to [new dest]- Thermochemical analysis when
thermoanalysispackage is installed - Improved reporting of barriers after endopt
- IRC trajectories are now dumped while running
- Initial displacement from TS using 3rd derivatives along transition vector
- Electronic embedding with charge redistribution in ONIOM calculator
Bugfixes
- Interpolation in internal coordinates is now more robust, when some primitives become ill defined
- Numerous fixes & fixed DeprecationWarnings
Miscellaneous
- IRC now supports
out_dirargument - Simplified functions for geometry loading, now
geom_loadershould always be used EulerPCnow supports looser cycles that aid in the beginning of tricky IRC integrations- IRCs now respect stop/converged signs
- Updated versioneer to 0.19
- Python
Published by eljost about 5 years ago
pysisyphus - ONIOM improvments, Batch calculations, Thermochemistry
Addition
scripts/frag.pyfor easy fragmentation to generate indices for ONIOM calculations- Experimental ONIOM2-optimizer (
type: oniom) supporting microiterations - Freezing atoms, see the documentation
- Partial linesearch for LBFGS-optimizer (
line_search=True, disabled by default) -Composite calculator to support composite methods ;) - Matrix/Batch calculations using
MultiCalc - Improved IPIServer; now supports coordinate update
pysis -cp [new dest] [add files]now supports copying additional files [add files] to [new dest]- Thermochemical analysis when
thermoanalysispackage is installed - Improved reporting of barriers after endopt
- IRC trajectories are now dumped while running
- Initial displacement from TS using 3rd derivatives along transition vector
- Electronic embedding with charge redistribution in ONIOM calculator
Bugfixes
- Interpolation in internal coordinates is now more robust, when some primitives become ill defined
- Numerous fixes & fixed DeprecationWarnings
Miscellaneous
- IRC now supports
out_dirargument - Simplified functions for geometry loading, now
geom_loadershould always be used EulerPCnow supports looser cycles that aid in the beginning of tricky IRC integrations- IRCs now respect stop/converged signs
- Updated versioneer to 0.19
- Python
Published by eljost about 5 years ago
pysisyphus - Constraints, new internal coordinates, OpenBabel forcefields, MD improvments
Addition
- Support for constraints with
coord_type: redund, see the documentation - Several new (internal, more or less...) coordinates
- CartesianX, CartesianY, CartesianZ
- TranslationX, TranslationY, TranslationZ and beginnings of rotational coordinates as in geomeTRIC (see 10.1063/1.4952956 and geomeTRIC)
- New method to obtain TS-guess based on 10.1002/jcc.23910 that makes use of the new constraints support. See tests/testbirkholzinterpolation for an unit test.
- xtb-python calculator (PyXTB)
- OpenBabel force field calculator, using the python interface
- Ability to specify different isotope masses, e.g., to constrain atoms in IRC runs (see examples/complex/08hcndeuteriumtsoptirc)
- Many improvements for the internal (still experimental) MD module
- Very experimental metadynamics support
- Colvar (CV) gradients from automatic differentiation or explicit implementation
- Added Bond, Bend and Dihedral CVs (periodicity of dihedrals is not yet implemented)
- Plotting of free energy curve/surface for 1 and 2 CVs using
pysisplot --gau [gau1] [gau2] - MD can now be started from YAML input
- Plotting with
pysisplot --md(total energy, conserved quantity, temperature, including running average) - Fixed CSVR thermostat
- Added Berendsen thermostat
- Dumping to HDF5
- Added wrapper script to validate pysisyphus MD runs with physical-validation (see 10.1371/journal.pone.0202764)
- Internal, small (solvent) molecule DB, preoptimized at different levels of theory, that can also be accessed from the Packmol wrapper
pysispack - Easy access and usage of benchmark/test sets (Baker, Baker-TS, S22, Birkholz, ...) via benchmarks-subpackage
- Added test set for COS calculations, intended for GFN2-XTB optimizations
- Parser for [Geometries]-section in .molden-files
rx_modeargument for TSHessianOptimizers. Allows for easy specification of complicated approximate eigenvectors, used for selecting an initial eigenvector for uphill following.-
rot_disable_pos_curvandtrans_force_f_perparguments for the Dimer calculator. The first one fixes the initial Dimer orientation until the curvature becomes negative. The latter argument controls whether always perpendicular and parallel force components are returned. - I-PI-Server calculator that supports the I-PI socket protocol. The present implementation works, e.g., with DFTB+ as client. See examples/opt/10h2oxtbipiserver for an example.
Bugfixes
- PrimType could not be specified in YAML input when additional primitive internals were requested
- Velocity is now properly rescaled after removal of v_com
- Dropped assert that prevented runs with multiple geoms
- Wrong final energy for Baker-TS case 15
Miscellaneous
- Printing of additional platform information
- PySCF verbosity can no be controlled with the
verbosityargument - First PR from outside of our group, thanks to @bapride11, who improved the Dimer calculator (added
rotation_remove_trans) - Optimization thresholds are now also plotted in
pysisplot --opt - Simplified implementation of the using()-decorator that declares test dependencies
- LinearBends/LinearAngles aren't propagated to the TS guess in
run_tsopt_from_cos, as this is usually a bad idea. Now only the bonding skeleton is propagated to the TS guess.
- Python
Published by eljost over 5 years ago
pysisyphus - DFTB+ calculator, Davidson algorithm, Preconditioner improvements, faster Nix installation
Addition
- DFTB+ calculator that supports ES tracking
- Davidson algorithm to converge normal modes after TS optimization. Allows verifying the nature/order of the saddle point, without explicit Hessian calculation (
do_davidson: True). See examples/tsopt/04dielsalderxtbtsopt_davidson for an example. - New, faster algorithms to detect bonds and bends in large(r) systems. Dihedral detection is yet to be updated and still slow for big systems.
- More finegrained control over preconditioner construction, selectable via
kind: full|full_fast|bonds_bends|bonds- full/full_fast: Use bonds, bends, dihedrals
- bonds_bends: Use bonds and bends
- bonds: Only bonds.
- Preconditioner construction was vastly accelerated.
- Backtracking line search that also uses gradient information. Useful for XTB calculations, as the gradient is always available with the energy
- Support for (re)using GFN-FF topology files in the XTB calculator
- Nix installation using cached binaries, thanks to Cachix and @sheepforce. See the documentation on how to set up binary caching.
Bugfixes
- Updated code to work with recently released h5py 3.0.0
pysisplot -ocrash when no rendered CDDs were available- Handling of TS-optimization after COS optimization when HEI is first or last image
- Line search now checks for very small alphas and aborts if necessary
Miscellaneous
- Added scikit-learn dependency, as the new bond detection uses a KD-Tree
- Updated GS2 IRC integrator
- Python
Published by eljost over 5 years ago
pysisyphus - Robustness fixes
Addition
- Linesearch in min and max subspaces for RSPRFO (disabled be default). Use
min_line_search: True,max_line_search: Trueto enable it - AFIR enhancments:
- Support for arbitrary number of fragments
- Different rhos (push/pull) and gammas can now be specified for every fragment pair
- Hydrogens are ignored by default. Use
ignore_hydrogen: Falseto enable AFIR forces on hydrogens
pysistrj [input] --topdbconverts geometries to PDB with automated fragment detectionquietmode for XTB calculator (prevents creation of log files etc.)- Enabled minimum dynamic path from YAML input (still undocumented, see `examples/mdp/01_trispericyclic)
run_tsopt_from_cosnow supportscoord_type: cart|dlc(default dlc)- Basic test suite that ships with a pysisyphus installation (execut with
pytest --pyargs pysisyphus.tests -v) - Enabled QCEngine calculator from YAML input
- On-the-fly internal coordinate rebuilding for GrowingString
- After endopt not only RMSDs are compared, but also bond matrices, making it easier to judge if a COS/TSOpt/IRC/EndOpt run was successful
- Basic Dalton calculator using
daltonproject(energies & gradient) - MO re-normalization for TDEN overlaps when AO overlaps are reconstructed from MO coefficients (disabled by default, use
mo_renorm: True) - Ability to select which set of MO coefficients (reference/current) is used to recover AO overlaps (default cur, use
mos_ref: cur|ref)
Bugfixes
- Nix build of wfoverlap failed
- Disabled Eckart projection in hessian saving of analytical potentials
- Orthogonal direction for LinearBend and LinearDisplacement is now kept throughout the lifetime of the coordinate
- Allow
pysis [yaml] --cp [dest]to be run outside the dir[yaml]resides in - Dihedral generation in situations with 4 collinear atoms
- Generation of 3N-6 DLCs is now enforced
- More reasonable threshold for inverting WIlson B-matrix (1e-7 for eigenvalues of G matrix, corresponding to 3.16e-4 for singular values)
Miscellaneous
- No more "hand-coded" constants, now the
scipy.constantspackage is used - Double damping is now enabled by default in StringOptimizer (
double_damp: true)
- Python
Published by eljost over 5 years ago
pysisyphus - Nix support and many robustness fixes
Addition
- Installation of pysisyphus & dependencies like QC codes using Nix thanks to @sheepforce
- DLC coordinate weighting
- On-the-fly primitive coordinate rebuilding if the current set becomes invalid/ill-defined
- Arbitrary precision calculation of internal derivatives using mpmath
- Revamped RFOptimizer
- Added second type for linear bends (LinearDisplacement) and OutOfPlane coordinate (both are not used yet)
- RMSDs and barrier heights are now reported after "endopt" runs if possible
Bugfixes
- Generated derivatives for dihedrals fail at 0° and 180° ... disabled them for now
- pinv is now used with proper rcond value ...
Miscellaneous
- Removed redund_v2. LinearBends are now used by default if necessary
- Primitive internal setup & update was moved outside the RedundantCoord class into separate function, which should facilitate reuse
- Generated code for primitives is now verified against finite differences
- Python
Published by eljost almost 6 years ago
pysisyphus - Revamped Growing String Method
Addition
- Added parsers for cjson (as produced by Avogadro) and Z-Matrix
- (L)-BFGS with double damping
- rmsforceonly argument for Optimizers to use only rms(forces) for checking convergence
- Reworked GSM implementation
- Enabled Climbing Image
- GSM reparametrization is much more robust
- Added L-BFGS to StringOptimizer (with double damping)
- DLC recreation can now be toggled
- Energy-weighted parametrization for increased density around the Highest Energy Image
- Upwinding tangents are used throughout, except for the frontier nodes
- Per-Image coordinate scaling can be used in StringOptimizer
- Added new
geom:block to the YAML input - Optimization convergence can now be signalled by the operator by creating a
convergedfile - Added more safeguards to runtsoptfrom_cos w.r.t. selecting the initial root to follow
- Added
memargument toXTBcalculator. Enabled GFN-FF
Bugfixes
- HDF5 files in optimizations are now opened/closed in every cycle, instead of keeping them open all the time.
- Present comment was ignored in Geometry.as_xyz()
- String has to be fully grown to indicate convergence
- HEI splining was faulty
- Present Hessian at optimized TS was not carried over to IRC calculation but it was recalculated (costly)
Miscellaneous
- Improved logging in L-BFGS optimizations
- Python
Published by eljost almost 6 years ago
pysisyphus - Multiwfn logging
- Multiwfn calls are now logged
- Default commands are used when checking for the availability of software (Multiwfn, Jmol, ...)
- Added TD-DFT optimization example using ORCA
- Python
Published by eljost almost 6 years ago
pysisyphus - Robustness fixes
Addition
- TIP3P water calculator
- Restricted Step Algorithm (RSA) for geometry optimizations
- Reference to pysisyphus-paper; corresponding BibTex entry is display by
pysis --bibtex - HDF5 Hessian dump after "do_hess: True"
Bugfixes
- Made OverlapCalculator (hopefully) more robust
- Multiwfn (MWFN) crashes shouldn't crash pysisyphus anymore
- After MWFN crash subsequent MWFN calls are avoided/disabled
- Proper fallbacks for the "cdds" argument are used when MWFN and/or Jmol are not available
Miscellaneous
- Started to add basic MD functionality (constraints via RATTLE, thermostating via CSVR) but this won't be ready anytime soon
- Python
Published by eljost almost 6 years ago
pysisyphus -
- Added "pcm" and "solvent" keywords to Psi4 calculator
- Allowed more complex basis set input for Psi4 calculator
- Python
Published by eljost almost 6 years ago
pysisyphus -
Deprecated
- "opt_ends" option in "irc" section. This is now handled in the "endopt" section.
Addition
- Analytical Rastrigin function with many local minima
- Updated stocastic search code & added tests
- Very simple and barebones PDB parser & writer
- Ability to omit Link atoms in ONIOM
- ONIOM Hessian
- ONIOM gradient & Hessian are now calculated using a Jacobian, which simplifies the code
- Enabled ONIOM for YAML input
- Added support for fragments and simple selection by regular expressions to Geometry
- Optimizer data is not dumped to YAML anymore, but written to separate HDF5 groups, which is way way faster
- Calculated Hessians from optimizations/IRCs are now dumped into a more useful HDF5 file with additional information. The file can easily be used as input for the "thermoanalysis" software to calculate thermochemical corrections (G, H, S, etc.)
- Imaginary frequencies (< -10 cm⁻¹) after final hessian calculation are now written to .trj for easy inspection
- Location of .pysisyphusrc can now be read from PYSISRC environment variable
- Added thin packmol wrapper (pysispack) for easy creation of initial MD configurations
- MD related functionality now operates in sane units
- Initial GFN1-XTB hessian for (TS)-optimizations using different calculators
- Simple intial Hessians for cartesian geometries through back-transformation of internal coordinate model Hessians
- NumFreq can now be requested for ORCA calculator
- Added "endopt" section (simlar to "preopt") to configure optimizations started from IRC endpoints
- Josephine
Bugfixes
- overachieve_factor is now also respected with "baker" thresh
- Definition of dihedrals in rings
- Multistep jobs (preopt, opt, tsopt) lead to overwritten yaml dumps. This is now fixed.
- Simplified/unified plotting of COS methods (cosens/cosforces)
- Unit conversion for inline xyz coordinates
- Sometimes the last IRC points were not dumped to HDF5
Miscellaneous
- Unified Hessian attributes in IRC integrators that use Hessians
- Deprecated old code
- Dropped dependencies: attrs, pandas, pytest-harvest
- Updated plotting documentation
- Python
Published by eljost about 6 years ago
pysisyphus -
- Support for NumFreq in ORCA calculator
- Initial Hessian using GFN1-xtb
- Python
Published by eljost about 6 years ago
pysisyphus -
- Removed attrs and pandas dependencies
- Made pytest-harvest optional
- Python
Published by eljost about 6 years ago
pysisyphus -
- Reworked Free-End and Adaptive NEB
- Enabled Free-End-Adaptive-NEB
- New Dimer calculator can now be used after COS calculation
- Added test case for AFIR calculator
- Deprecated old code
- Python
Published by eljost about 6 years ago
pysisyphus - 0.4
So, finally there is a useful release on PyPI.
- Python
Published by eljost about 6 years ago
pysisyphus - 0.4rc8
First release containing the new redundant coordinate implementation that supports linear bends.
- Python
Published by eljost about 6 years ago