Skip to content

BUG?: Anomalous convergence for benchmark system #57

Description

@HaoZeke

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

Image

Image

Image

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.

  1. 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).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions