Skip to main content

NEBCert

CI License: MIT DOI

Quality checks for nudged-elastic-band (NEB) reaction paths, transition states and tunnelling-corrected rate constants. NEBCert reads an ORCA NEB / NEB-CI / NEB-TS output (or a table of image energies), checks the band and the transition state, and computes Eyring rate constants with Wigner and Eckart tunnelling factors.

A PASS means that the checks that were run found nothing wrong. It does not show that the path is the minimum-energy path, that the transition state connects the intended minima, or that the barrier is accurate at the chosen level of theory.

What it checks

Check PASS WARNING FAIL
Band (NEB) converged band, no interior minimum deeper than 0.5 kcal/mol force > 0.05 eV/Å at the image nearest the barrier (skipped after a converged TS optimisation); interior minimum (more than one step) band or TS optimisation not converged; end points identical; flat profile
Transition state exactly one imaginary mode with |ν| ≥ 50 cm⁻¹ and no other imaginary mode extra small imaginary modes (|ν| < 50 cm⁻¹); only small ones; IRC reported as failed no imaginary mode; two or more with |ν| ≥ 50 cm⁻¹
Eyring rate barrier given as a Gibbs energy of activation — —
Tunnelling T = 298.15 K above the crossover temperature T_c = hc|ν|/(2πk_B) 298.15 K below T_c: Wigner invalid, one-dimensional Eckart only an estimate barrier height ≤ 0

With an electronic barrier (no zero-point, thermal or entropic terms, as from a band) the Eyring number is reported as NOT_APPLICABLE: it is not a TST rate constant, and it does not count towards the overall status, which is the worst of the individual statuses. NEBCert does not run or read IRC calculations; --irc records the user's statement that an IRC connected the intended minima.

For ORCA outputs NEBCert reads the last PATH SUMMARY table, the climbing image, the NEB and TS convergence banners, the PATH SUMMARY FOR NEB-TS transition state and the final frequencies. When an optimised NEB-TS transition state is present its energy is the barrier; otherwise the energy of a converged climbing image, and otherwise the maximum of a natural cubic spline through the images. A table printed before the images were computed (E = 0, as left by a job whose image calculations failed) is rejected.

The Eckart factor is κ(T) = exp(V₁/kT)/kT ∫ P(E) exp(−E/kT) dE with the transmission probability of the asymmetric Eckart barrier (Eckart 1930; Johnston and Heicklen 1962), the barrier width fixed by the imaginary frequency, and the integral evaluated by adaptive quadrature (scipy quad).

Validation (validation/)

All scripts and results are in validation/; every number below is regenerated by them.

  • Tunnelling and rate constants (compare_overreact.py, eckart_highprecision.py): on 720 combinations of imaginary frequency (200–3000 cm⁻¹), forward and reverse barriers (2–40 and 2–60 kcal/mol) and temperature (200–1000 K), κ_Eckart agrees with a 40-digit mpmath reference to 1.7 × 10⁻⁹ (relative). overreact deviates from the same reference by up to 1.3 × 10⁻², above 10⁻³ at 73 points, all with κ < 1.9. κ_Wigner and the Eyring rate agree with overreact to 3 × 10⁻¹¹ and 1.3 × 10⁻⁹.
  • Version 1.0.0 (the only release published before 1.2.0; legacy100_grid.py): its κ_Eckart differs from the reference by more than a factor of 2 at 529 of the 720 points (median ratio 6.8, range 3 × 10⁻⁸ to 2 × 10⁴³).
  • Real ORCA 6.1.1 calculations (make_neb_inputs.py, benchmark_neb.py; B3LYP-D3(BJ)/def2-SVP; results in validation/results/neb_benchmark.csv, figure validation/figures/fig3_profiles.png). Eight reactions with NEB-TS and frequencies (H + HCl, OH + H₂, CH₃ + H₂, Cl⁻ + CH₃Cl, HCOH → H₂CO, H₂CO → H₂ + CO, HCN → HNC, NH₃ inversion), three degraded runs and one failed job.
    • Values read from the .out file agree with ORCA's full-precision files: band energies within 0.006 kcal/mol (.final.interp; the output table has five decimals), TS energies within 0.003 kcal/mol (_NEB-TS_converged.xyz), frequencies within 0.005 cm⁻¹ (.hess). κ_Eckart for the eight transition states agrees with the mpmath reference to 3 × 10⁻⁹.
    • Verdicts: PASS for six reactions; WARNING for HCOH → H₂CO and H₂CO → H₂ + CO, whose imaginary frequencies (2060 and 1880 cm⁻¹) put 298.15 K below the crossover temperature (κ_Eckart = 1.8 × 10⁵ and 7.6 × 10⁶). FAIL for a band stopped after three iterations (its highest image, 45.8 kcal/mol, against a converged barrier of 2.3 kcal/mol) and for a band whose end points collapsed into the same structure; the failed job is rejected. A 3-image NEB-CI passes, with the climbing-image barrier equal to the 8-image NEB-TS barrier (84.36 kcal/mol; the spline maximum is 85.62).
    • Version 1.1.0 warned on every reaction (the --irc bug), passed the failed job and crashed on the collapsed band. Version 1.0.0 passed the failed job, crashed on the collapsed band, and its κ_Eckart was 1.6 to 6 × 10⁴⁶ times the reference for the eight transition states.

Not validated

  • The VASP neb.dat and Gaussian IRC parsers have not been tested on real output; the Gaussian IRC parser is not used by the command-line interface.
  • Paths with several steps are flagged, not split.

Installation

pip install "git+https://github.com/sircalch/nebcert@v1.2.0"

From source:

git clone https://github.com/sircalch/nebcert.git
cd nebcert
pip install -e .[dev]

Command line

# ORCA NEB / NEB-CI / NEB-TS output (frequencies are read from a NEB-TS ... Freq run)
nebcert assess -i reaction.out --reaction "H + HCl -> H2 + Cl" --functional "B3LYP-D3(BJ)/def2-SVP" -o report/

# Gibbs energy of activation for the Eyring rate constant
nebcert assess -i reaction.out --gibbs-barrier-kcal 12.4 -o report/

# Table of image energies plus frequencies
nebcert assess -i neb.dat --frequencies "-1250,150,300,800" -o report/

# Synthetic demonstration (not a real calculation)
nebcert demo -o demo/

The report directory contains report.html, figures, a summary table (CSV and LaTeX), a draft methods paragraph that states the results of the checks, and citation.bib.

Python

from nebcert import (calculate_neb_profile_analysis, verify_ts_frequency_and_irc,
                     calculate_eyring_tst_rates, calculate_quantum_tunneling_corrections,
                     assess_reaction_pathway_quality)
from nebcert.parsers.orca_neb import parse_orca_neb_output

d = parse_orca_neb_output("reaction.out")
ts = d["ts"]
neb = calculate_neb_profile_analysis(d["energies_ev"], d["coordinates_s_ang"], d["tangent_forces"],
                                     band_converged=d["neb_converged"],
                                     ts_energy_rel_ev=ts["barrier_fwd_ev"] if ts else None,
                                     ts_optimisation_converged=ts["converged"] if ts else None)
freq = verify_ts_frequency_and_irc(d["frequencies"])
tst = calculate_eyring_tst_rates(neb.e_forward_barrier_ev, barrier_type="electronic")
tun = calculate_quantum_tunneling_corrections(abs(freq.imaginary_frequency_cm1),
                                              neb.e_forward_barrier_ev, neb.e_reverse_barrier_ev)
report = assess_reaction_pathway_quality({"reaction": "H + HCl -> H2 + Cl"}, neb, freq, tst, tun)
print(report.overall_status, report.validation_score)
for message in report.recommendations:
    print("-", message)

Citation

nebcert cite

prints the APA and BibTeX entries for the installed version (concept DOI 10.5281/zenodo.22217586).

License

MIT, see LICENSE.

Metadata

Release files for nebcert 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nebcert 1.2.0
File Size Uploaded Provenance
nebcert-1.2.0.tar.gz 38.6 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for nebcert 1.2.0
File Interpreter ABI Platform
nebcert-1.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 76.0 kB

Release files / nebcert-1.2.0.tar.gz

Download URL nebcert-1.2.0.tar.gz
Size 38.6 kB
Tags Source
SHA-256 checksum
How to use checksums
ea0757bee0a3f9e6e52a66182ffaf07d40167a217580e620175a50592f839230
BLAKE2b-256 checksum
How to use checksums
254146144a14b363f6b10231b8b471ded2f57855a34ca278af2b55445e55c4a3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release files / nebcert-1.2.0-py3-none-any.whl

Download URL nebcert-1.2.0-py3-none-any.whl
Size 37.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
039cb6484de5857948b47250b739a1816f43887e9599bf3788fbe609266b12d8
BLAKE2b-256 checksum
How to use checksums
1946960d6bf63cbfa6aac30fc8136bbb078b5891b4c2450ec96f60b3b6db832c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Security for nebcert 1.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for nebcert-1.2.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.2.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page