Skip to main content

PyDMF: A Python package for double-ended reaction path/transition state optimization

CI

Overview

This package provides a Python implementation of the direct MaxFlux (DMF) method and the flat-bottom elastic network model (FB-ENM). These tools offer a variational framework for reaction-path optimization and an efficient approach to generating physically plausible initial paths.

The software is intended for researchers who use ASE-compatible calculators and require either a method for obtaining near–transition-state structures without relying on second or higher energy derivatives, or a method for interpolating between two structures in a chemically plausible manner.

  • Compared with existing double-ended reaction-path optimization methods (e.g., NEB), DMF improves computational efficiency in terms of both the number of energy-evaluation points along the path and the number of optimization iterations.

  • Compared with existing initial-path generation approaches (e.g., IDPP), FB-ENM provides more energetically preferable paths with improved robustness.

Recent Updates

  • v1.2.0: GPU acceleration is now available, thanks to a contribution by @t-0hmura . See README_TORCH.md and PR #3 for details.

Requirements

Installation

We generally recommend installing this package via conda, as cyipopt is most reliably installed through conda.

conda create -n pydmf python=3.10
conda activate pydmf
conda install -c conda-forge ase cyipopt
pip install pydmf

If you prefer to install cyipopt without using conda, please follow its official installation guide. After installing cyipopt, you can install PyDMF via pip:

pip install pydmf

Example usage

Basic usage

PyDMF is used as part of an ASE script. For the basics of ASE, please refer to its official documentation. An example script is provided in sample/sample.py of PyDMF GitHub repository:

import numpy as np
from ase.io import write, read
from ase.calculators.emt import EMT
from dmf import DirectMaxFlux, interpolate_fbenm

# read react.xyz and prod.xyz
ref_images = [read('react.xyz'), read('prod.xyz')]

# generate initial path by FB-ENM
mxflx_fbenm = interpolate_fbenm(ref_images,correlated=True)

# write initial path and its coefficients
write('sample_ini.traj',mxflx_fbenm.images)
coefs = mxflx_fbenm.coefs.copy()
np.save('sample_ini_coefs',coefs)

# set up a variational problem of the direct MaxFlux method
mxflx = DirectMaxFlux(ref_images,coefs=coefs,nmove=3,update_teval=True)

# set up calculators
for image in mxflx.images:
    image.calc = EMT()

# solve the variational problem
mxflx.add_ipopt_options({'output_file':'sample_ipopt.out'})
mxflx.solve(tol='middle')

# write final path and history of x(tmax)
write('sample_fin.traj',mxflx.images)
write('sample_tmax.traj',mxflx.history.images_tmax)

You can run it simply by:

git clone https://github.com/shin1koda/dmf
cd dmf/samples
python sample.py

Running the script produces several output files, including:

  • sample_ini.traj: FB-ENM–interpolated path written in ASE trajectory format
  • sample_fin.traj: Optimized reaction path using the EMT potential
  • sample_tmax.traj: History of the estimated highest-energy point during optimization

Parallel energy/force evaluation

PyDMF supports parallel energy and force evaluations at the energy evaluation points along the path. See README_PARALLEL.md for details.

Documentation

For more details, please refer to the API documentation.

Citation

  1. S.-i. Koda and S. Saito, Locating Transition States by Variational Reaction Path Optimization with an Energy-Derivative-Free Objective Function, JCTC, 20, 2798–2811 (2024). doi: 10.1021/acs.jctc.3c01246
  2. S.-i. Koda and S. Saito, Flat-bottom Elastic Network Model for Generating Improved Plausible Reaction Paths, JCTC, 20, 7176−7187 (2024). doi: 10.1021/acs.jctc.4c00792
  3. S.-i. Koda and S. Saito, Correlated Flat-bottom Elastic Network Model for Improved Bond Rearrangement in Reaction Paths, JCTC, 21, 3513−3522 (2025). doi: 10.1021/acs.jctc.4c01549

Please cite:

  • Ref. 1 when you use the direct MaxFlux method
  • Ref. 2 when you use the flat-bottom elastic network model
  • Ref. 3 when you use the correlated flat-bottom elastic network model

PyDMF has been used in the following applications.

  • dmf-g16 (developed by our group): Wrapper software that enables DMF calculations with Gaussian and its native input formats. Paper & GitHub.

  • ColabReaction (developed by Karasawa et al.): Web-based application that integrates PyDMF and ML potential UMA. Application, paper, & GitHub.

Community guidelines

Contributing

Contributions to this project are welcome. If you would like to contribute new features, improvements, or documentation, please open a pull request on GitHub.
Before submitting a PR, we recommend opening a short issue to discuss the proposed change.

Reporting issues

If you encounter a problem, unexpected behavior, or a potential bug, please report it through the GitHub issue tracker:

https://github.com/shin1koda/dmf/issues

When reporting an issue, please include:

  • A clear description of the problem
  • Steps to reproduce the issue
  • Your environment (Python version, ASE version, cyipopt version, etc.)
  • Any relevant error messages or logs

Seeking support

If you have questions about the usage of the package, or need help integrating it into your workflow, feel free to open an issue labeled “question” on GitHub.
We will do our best to provide guidance based on availability.

License

This project is distributed under the MIT License.

Metadata

Release files for pydmf 1.2.2

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

Source distribution (sdist)

Source distribution for pydmf 1.2.2
File Size Uploaded
pydmf-1.2.2.tar.gz 57.5 kB Details

Built distribution (wheel)

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

Total release size: 114.3 kB

Release files / pydmf-1.2.2.tar.gz

Download URL pydmf-1.2.2.tar.gz
Size 57.5 kB
Tags Source
SHA-256 checksum
How to use checksums
100910b61790b7301e5e377c1e88bdce71564010e09dd52d465fdd582cc22b21
BLAKE2b-256 checksum
How to use checksums
d72f90aae4773c68687c160a7ef6d3968d8f85f55c6ae6ba922e277598d3ea46
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 14, 2026.

Transparency log

Release files / pydmf-1.2.2-py3-none-any.whl

Download URL pydmf-1.2.2-py3-none-any.whl
Size 56.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
46a1f44d59b455353ec5831713afe92c829014361aa44c9223bb8a20c3493f01
BLAKE2b-256 checksum
How to use checksums
1676465b465d5d524cf5745fc6412a923d643b674d1fc1d2afc99e5cbd5a7e80
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 14, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.2.2 This release

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.0

2 release files

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