I'd like to report a reproduction error. The first system of the SI described in [1], namely singlet_000 does not seem to converge to the nearest first order saddle point. The attached slides and reproduction document details everything needed to reproduce the error. Basically it seems like Sella "misses" the nearest saddle and instead converges to a trivial rotation.
For clarity all the details are in this issue, but they can also be validated offline with the following files:
sella_anomaly_slides.pdf
sella_repro.pdf
Anomaly and background



Baseline setup
To ensure maximal reproduciblity, we assume a pixi installation 1, which may be obtained via:
# Linux & macOS
curl -fsSL https://pixi.sh/install.sh | bash
Now we can setup the directory structure, and get the supplementary information from here (with a web-browser, also attached):
mkdir -p sella_reproducer
cd sella_reproducer
# Extract this, can be done manually as well
unzip ct2c00395_si_001
Now we can setup the environment.
cd sella_reproducer
pixi init
pixi add ase nwchem
pixi add --pypi sella
Reproduction
The extracted script from the supplementary information has all the details needed, so it can be run almost as-is. The primary change is to ensure that the NWCHEM location is taken from the environment. So apply this patch.
--- calc_orig.py 2024-11-09 16:37:11.341264575 +0000
+++ calc.py 2024-11-09 16:37:13.914580395 +0000
@@ -16,10 +16,10 @@
run_path = 'runs'
# Path to local scratch directory for NWChem scratch files
-scratch_path = '/scratch/ehermes'
+scratch_path = '/tmp'
# Full path to your nwchem executable
-nwchem_path = '/home/ehermes/build/nwchem/bin/LINUX64/nwchem'
+nwchem_path = os.environ["NWCHEM_COMMAND"]
# Memory for NWChem to allocate. You probably don't need to change this.
memory = '2 gb'
With the standard approach, that is:
cd sella_reproducer/sella_si
# save the patch into patch_os.diff (also attached)
patch < patch_os.diff
Now we’re ready to run this.
cd sella_reproducer/sella_si
pixi shell
export NWCHEM_COMMAND=$(which nwchem)
python calc.py
This should take around four minutes, 44 steps, and 108 frames in the
trajectory. By the end of this, the figures in the slides can be extracted by
visualizing the generated trajectory with ASE.
cd sella_reproducer/sella_si
pixi shell
ase gui runs/singlets/000/singlets_000.traj
# energy values are also present
The Hessian confirmation checks use the standard ase.vibrations module, and
are available on request.
Footnotes
1 If you already have a working sella setup you may skip this and use that instead.
- Hermes, E. D., Sargsyan, K., Najm, H. N. & Zádor, J. Sella, an Open-Source Automation-Friendly Molecular Saddle Point Optimizer. J. Chem. Theory Comput. 18, 6974–6988 (2022).
I'd like to report a reproduction error. The first system of the SI described in [1], namely
singlet_000does not seem to converge to the nearest first order saddle point. The attached slides and reproduction document details everything needed to reproduce the error. Basically it seems like Sella "misses" the nearest saddle and instead converges to a trivial rotation.For clarity all the details are in this issue, but they can also be validated offline with the following files:
sella_anomaly_slides.pdf
sella_repro.pdf
Anomaly and background
Baseline setup
To ensure maximal reproduciblity, we assume a
pixiinstallation 1, which may be obtained via:Now we can setup the directory structure, and get the supplementary information from here (with a web-browser, also attached):
mkdir -p sella_reproducer cd sella_reproducer # Extract this, can be done manually as well unzip ct2c00395_si_001Now we can setup the environment.
cd sella_reproducer pixi init pixi add ase nwchem pixi add --pypi sellaReproduction
The extracted script from the supplementary information has all the details needed, so it can be run almost as-is. The primary change is to ensure that the
NWCHEMlocation is taken from the environment. So apply this patch.--- calc_orig.py 2024-11-09 16:37:11.341264575 +0000 +++ calc.py 2024-11-09 16:37:13.914580395 +0000 @@ -16,10 +16,10 @@ run_path = 'runs' # Path to local scratch directory for NWChem scratch files -scratch_path = '/scratch/ehermes' +scratch_path = '/tmp' # Full path to your nwchem executable -nwchem_path = '/home/ehermes/build/nwchem/bin/LINUX64/nwchem' +nwchem_path = os.environ["NWCHEM_COMMAND"] # Memory for NWChem to allocate. You probably don't need to change this. memory = '2 gb'With the standard approach, that is:
Now we’re ready to run this.
This should take around four minutes, 44 steps, and 108 frames in the
trajectory. By the end of this, the figures in the slides can be extracted by
visualizing the generated trajectory with ASE.
The Hessian confirmation checks use the standard
ase.vibrationsmodule, andare available on request.
Footnotes
1 If you already have a working
sellasetup you may skip this and use that instead.