Skip to content

Commit

Permalink
Release 2.0.0
Browse files Browse the repository at this point in the history
  • Loading branch information
reiher-research-group committed Aug 26, 2024
1 parent 8795858 commit aa27197
Show file tree
Hide file tree
Showing 109 changed files with 11,810 additions and 4,160 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ venv/
.coverage
.coverage.*
.cache
.hypothesis
coverage.xml

# Sphinx documentation
Expand Down
26 changes: 26 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,32 @@
Changelog
=========

Release 2.0.0
-------------

New Jobs:
- Automatic QM region selection for QM/MM.
- Job that tries to find a new reaction starting from a transition state guess only.
- Job that carries out a fast dissociation reaction trial protocol after optimizing the input structure.
- Remove `scine_step_refinement` job.

New Settings:
- Add the option `allow_exhaustive_product_decomposition` to jobs that carry out reaction trials, which allows products to decompose and re-optimize them until no further decomposition is observed.
- Add the option `always_add_barrierless_step_for_reactive_complex` to jobs that carry out reaction trials, which enables that a barrierless elementary step is added for the reactive complex formation of a bimolecular reaction irrespective of the complexation energy.
- Add option `store_structures_with_frequency` and `store_structures_with_fraction` that allow storing a portion of structures per sub-task.
- Add option `spin_propensity_ts_check` to `scine_react_ts_guess` job to specify a spin multiplicity range to be checked for the transition state different to the spin multiplicity range to be checked for the reactants and products (`spin_propensity_check`)

Technical changes:
- Ensure that the calculated spin states are considered in the calculation of the dissociation energy in the `DissociationCut` jobs and in structure optimizing jobs (`GeometryOptimization` and `ReactTsGuess`)
- Write normalized modes in database.
- Improve dependency handling and add more typehints.
- Optimize only unique structures of the endpoints of an IRC calculation.
- Deduplicate code for analyzing both sides of the IRC part in the `scine_react_job`.
- Stricter conditions to distribute charges if `expect_charge_separation` is set to `True` by prohibiting changing
already changed charge.
- Comply docstrings with numpy styling.
- Introduce Enums for ReaDuct calls.

Release 1.3.0
-------------

Expand Down
9 changes: 8 additions & 1 deletion README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,14 @@ release as archived on `Zenodo <https://doi.org/10.5281/zenodo.6695461>`_ (DOI
In addition, we kindly request you to cite the following article when using Puffin:
J. P. Unsleber, S. A. Grimmel, M. Reiher,
"Chemoton 2.0: Autonomous Exploration of Chemical Reaction Networks",
arXiv:2202.13011 [physics.chem-ph].
*J. Chem. Theory Comput.*, **2022**, *18*, 5393.

Furthermore, when publishing results obtained with any SCINE module, please cite the following paper:

T. Weymuth, J. P. Unsleber, P. L. Türtscher, M. Steiner, J.-G. Sobez, C. H. Müller, M. Mörchen,
V. Klasovita, S. A. Grimmel, M. Eckhoff, K.-S. Csizi, F. Bosia, M. Bensberg, M. Reiher,
"SCINE—Software for chemical interaction networks", *J. Chem. Phys.*, **2024**, *160*, 222501
(DOI `10.1063/5.0206974 <https://doi.org/10.1063/5.0206974>`_).


Support and Contact
Expand Down
14 changes: 8 additions & 6 deletions conanfile.txt
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
[requires]
scine_utilities/9.0.0@
scine_molassembler/2.0.1@
scine_database/1.3.0@
scine_xtb_wrapper/3.0.0@
scine_sparrow/5.0.0@
scine_readuct/5.1.0@
scine_utilities/10.0.0@
scine_molassembler/3.0.0@
scine_database/1.4.0@
scine_xtb_wrapper/3.0.1@
scine_sparrow/5.1.0@
scine_swoose/2.1.0@
scine_readuct/6.0.0@

[options]
scine_utilities:python=True
scine_molassembler:python=True
scine_database:python=True
scine_sparrow:python=True
scine_swoose:python=True
scine_xtb_wrapper:python=True
scine_readuct:python=True

Expand Down
1 change: 1 addition & 0 deletions container/apptainer/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -52,3 +52,4 @@ A more complete run could thus look like this:
apptainer run --bind /scratch/puffin:/socket \
--bind /scratch/puffin/jobs:/jobs \
puffin.sif
7 changes: 0 additions & 7 deletions docs/source/api.rst
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,6 @@ Module: jobloop
.. automodule:: scine_puffin.jobloop
:members:

Module: jobs.templates.job
--------------------------

.. automodule:: scine_puffin.jobs.templates.job
:members:


Module: programs.program
------------------------

Expand Down
14 changes: 13 additions & 1 deletion docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
import sphinx_rtd_theme
import scine_puffin
import recommonmark
import sys
import pathlib
from recommonmark.transform import AutoStructify

# -- General configuration ------------------------------------------------
Expand All @@ -25,7 +27,6 @@
'sphinx.ext.githubpages',
'sphinx.ext.intersphinx',
'sphinx.ext.mathjax',
'sphinx_autodoc_typehints',
'sphinx.ext.viewcode',
'matplotlib.sphinxext.plot_directive',
'numpydoc',
Expand Down Expand Up @@ -177,10 +178,21 @@
'Miscellaneous'),
]

autodoc_default_options = {
"autosummary": True,
"members": True,
"undoc-members": True,
"inherited-members": True,
"class-doc-from": "both",
}

# Example configuration for intersphinx: refer to the Python standard library.
intersphinx_mapping = {
'python': ('https://docs.python.org/3/', None),
'numpy': ('https://numpy.org/doc/stable', None),
'scipy': ('https://docs.scipy.org/doc/scipy-1.7.1/', None),
'matplotlib': ('https://matplotlib.org/stable', None),
}
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here.
sys.path.insert(0, pathlib.Path(__file__).parents[2].resolve().as_posix())
1 change: 1 addition & 0 deletions docs/source/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,5 @@ Puffin
programs
jobs
api
utilities
changelog
77 changes: 4 additions & 73 deletions docs/source/jobs.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,77 +12,8 @@ the custom ``module``/``Calculator``.
For more information about this interface please see the documentation of
SCINE: Core and possibly also SCINE: Utils.

Conformer Generation
````````````````````
.. autoclass:: scine_puffin.jobs.conformers.Conformers
.. autosummary::
:toctree: generated
:recursive:

SCINE: AFIR
```````````
.. autoclass:: scine_puffin.jobs.scine_afir.ScineAfir

SCINE: Bond Orders
``````````````````
.. autoclass:: scine_puffin.jobs.scine_bond_orders.ScineBondOrders

SCINE: Geometry Optimization
````````````````````````````
.. autoclass:: scine_puffin.jobs.scine_geometry_optimization.ScineGeometryOptimization

SCINE: Hessian
``````````````````
.. autoclass:: scine_puffin.jobs.scine_hessian.ScineHessian

SCINE: IRC Scan
``````````````````
.. autoclass:: scine_puffin.jobs.scine_irc_scan.ScineIrcScan

SCINE: Artificial Force Induced Reaction Probe
``````````````````````````````````````````````
.. autoclass:: scine_puffin.jobs.scine_react_complex_afir.ScineReactComplexAfir

SCINE: Newton Trajectory Reaction Probe
```````````````````````````````````````
.. autoclass:: scine_puffin.jobs.scine_react_complex_nt.ScineReactComplexNt

SCINE: Newton Trajectory 2 Reaction Probe
`````````````````````````````````````````
.. autoclass:: scine_puffin.jobs.scine_react_complex_nt2.ScineReactComplexNt2

SCINE: Single Point
```````````````````
.. autoclass:: scine_puffin.jobs.scine_single_point.ScineSinglePoint

SCINE: Transition State Optimization
````````````````````````````````````
.. autoclass:: scine_puffin.jobs.scine_ts_optimization.ScineTsOptimization

Specialized Jobs
----------------

Gaussian: Partial Charges - Charge Model 5
``````````````````````````````````````````
.. autoclass:: scine_puffin.jobs.gaussian_charge_model_5.GaussianChargeModel5

Orca: Geometry Optimization
```````````````````````````
.. autoclass:: scine_puffin.jobs.orca_geometry_optimization.OrcaGeometryOptimization

Turbomole: Geometry Optimization
`````````````````````````````````
.. autoclass:: scine_puffin.jobs.turbomole_geometry_optimization.TurbomoleGeometryOptimization

Turbomole: Single Point
````````````````````````
.. autoclass:: scine_puffin.jobs.turbomole_single_point.TurbomoleSinglePoint

Turbomole: Hessian
```````````````````
.. autoclass:: scine_puffin.jobs.turbomole_hessian.TurbomoleHessian

Turbomole: Bond Orders
```````````````````````
.. autoclass:: scine_puffin.jobs.turbomole_bond_orders.TurbomoleBondOrders

Debugging: Sleep
````````````````
.. autoclass:: scine_puffin.jobs.sleep.Sleep
scine_puffin.jobs
10 changes: 10 additions & 0 deletions docs/source/utilities.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
Utilities
=========

A module that gathers various modules with helper functions for multiple jobs.

.. autosummary::
:toctree: generated
:recursive:

scine_puffin.utilities
2 changes: 1 addition & 1 deletion scine_puffin/_version.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
See LICENSE.txt for details.
"""

__version__ = "1.3.0"
__version__ = "2.0.0"
39 changes: 21 additions & 18 deletions scine_puffin/bootstrap.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ def bootstrap(config: Configuration):
Parameters
----------.
config :: scine_puffin.config.Configuration
config : scine_puffin.config.Configuration
The current configuration of the Puffin.
"""
# Prepare directories
Expand Down Expand Up @@ -71,25 +71,9 @@ def bootstrap(config: Configuration):
utils = Utils(config.programs()["utils"])
utils.install(utils_build_dir, install_dir, config["resources"]["cores"])

# Install all other programs
for program_name, settings in config.programs().items():
if program_name in ['core', 'utils'] or not settings["available"]:
continue
print("")
print("Preparing " + program_name.capitalize() + "...")
print("")
module = importlib.import_module("scine_puffin.programs." + program_name)
class_ = getattr(module, program_name.capitalize())
program = class_(settings)
program_build_dir = os.path.join(build_dir, program_name)
program.install(program_build_dir, install_dir, config["resources"]["cores"])

# Setup environment
# General setup
# setup Python path already now for crosslinking for Python type stubs
env = {}
executables = {}
python_version = sys.version_info
executables["OMP_NUM_THREADS"] = str(config["resources"]["cores"])
env["PYTHONPATH"] = (
os.path.join(
install_dir,
Expand Down Expand Up @@ -121,6 +105,25 @@ def bootstrap(config: Configuration):
"dist-packages",
)
)
os.environ["PYTHONPATH"] = env["PYTHONPATH"]

# Install all other programs
for program_name, settings in config.programs().items():
if program_name in ['core', 'utils'] or not settings["available"]:
continue
print("")
print("Preparing " + program_name.capitalize() + "...")
print("")
module = importlib.import_module("scine_puffin.programs." + program_name)
class_ = getattr(module, program_name.capitalize())
program = class_(settings)
program_build_dir = os.path.join(build_dir, program_name)
program.install(program_build_dir, install_dir, config["resources"]["cores"])

# Setup environment
# General setup
executables = {}
executables["OMP_NUM_THREADS"] = str(config["resources"]["cores"])
env["PATH"] = os.path.join(install_dir, "bin")
env["LD_LIBRARY_PATH"] = os.path.join(install_dir, "lib") + ":" + os.path.join(install_dir, "lib64")
env["SCINE_MODULE_PATH"] = os.path.join(install_dir, "lib") + ":" + os.path.join(install_dir, "lib64")
Expand Down
Loading

0 comments on commit aa27197

Please sign in to comment.