Minimum Energy Path Discovery tools for efficient reaction path calculations.
This repository contains:
- NEB and related path minimizers
- MLPGI path support
- MSMEP recursive path splitting
- elementary-step analysis utilities
pip install "git+https://github.com/mtzgroup/mepd.git"For local development:
uv sync
uv run pytestfrom mepd import Chain, ChainInputs, NEB, NEBInputs, StructureNode
from mepd.engines.qcop import QCOPEngine
from mepd.optimizers.cg import ConjugateGradient
import mepd.chainhelpers as ch
from qcio import Structure
start = Structure.from_xyz("start.xyz")
end = Structure.from_xyz("end.xyz")
engine = QCOPEngine(compute_program="chemcloud")
start_node = StructureNode(structure=start)
end_node = StructureNode(structure=end)
start_opt = engine.compute_geometry_optimization(start_node)[-1]
end_opt = engine.compute_geometry_optimization(end_node)[-1]
chain = Chain.model_validate({
"nodes": [start_opt, end_opt],
"parameters": ChainInputs(k=0.1, delta_k=0.09),
})
initial_chain = ch.run_geodesic(chain, nimages=15)
neb = NEB(
initial_chain=initial_chain,
parameters=NEBInputs(v=True),
optimizer=ConjugateGradient(timestep=0.5),
engine=engine,
)
result = neb.optimize_chain()The public CLI exposes path minimization and NEB refinement commands:
mepd run --start start.xyz --end end.xyz --inputs inputs.toml
mepd run-refine examples/oxycope.xyz -i expensive.toml -ci cheap.toml --mode neb
mepd refine previous_result.xyz --inputs expensive.toml --mode neb
mepd make-default-inputs --name inputs.toml
mepd-elementarystep path.xyzUse the Python API for lower-level NEB, MLPGI, MSMEP, and elementary-step workflows.
For questions, contact: