Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

MDAPY

Fast building, analysis, simulation and visualization of atomistic systems, in Python.

Tests Coverage PyPI version PyPI downloads Python 3.11 or newer Linux, macOS, Windows License: MPL-2.0 Paper: Comput. Phys. Commun. 290, 108764

Documentation · Quick tour · Lessons · Examples · Install · Tests · Cite

MDAPY 2.0 is a complete rewrite and is not compatible with MDAPY 1.x. It brings many more features, and we recommend upgrading: From MDAPY 1.x gives the 2.0 way of each common call. The code of 1.x stays on the branch 1.x.

If you like MDAPY, please give it a ⭐ star.

💡 Why MDAPY

  • Light. NumPy and polars are its only requirements. Packages such as matplotlib or ASE are optional, and it carries no other third-party code.
  • Robust. Tests cover more than 99 % of the code and compare each feature with analytic results and with mature software. All of them run automatically on Linux, macOS and Windows. Results are the same for any number of threads, and damaged files or impossible inputs give a clear error, not a crash.
  • Fast. The heavy parts run in C++, on a parallel engine of MDAPY's own. See the benchmarks.
  • Predictable. Names say what the code does: minimize, elastic_constants, CommonNeighborAnalysis. A System never changes in place, every analysis has the form compute(system) and returns NumPy arrays, and one unit system, Å, eV and ps, runs through everything.
  • Stable. From 2.0.0 on, code that works keeps working: the API changes only with 3.0, a replaced name warns long before it goes, and a result changes only to fix a bug, named in the release notes. See Compatibility.
  • Integrated. One package and one System, from the first structure to the last picture. It converts systems to and from ASE, OVITO, pymatgen and freud, takes any ASE calculator or LAMMPS interaction, shares a process with PyTorch, and works as one step of high-throughput calculations.
  • Documented. Every feature has its own page, with an example, its parameters, its results and its references, and lessons lead from the first structure on.

🧰 What it does

Area What is in it
Build Crystals, polycrystals, alloys, defects and dislocations
Analyze More than 40 analyses of structure, local order, defects and dynamics
Simulate Native EAM and NEP, interfaces to LAMMPS and ASE; relaxation and dynamics; elastic constants, phonons, free energies, melting points and phase diagrams
MLIP Training sets from VASP, descriptors, errors of a model, the frames worth computing
Visualize Ray-traced pictures on the processor or the graphics card, movies and plots
Exchange Eight file formats, and systems shared with ASE, OVITO, pymatgen and freud

🎨 Examples

Click a picture for its example, with the whole code.

A movie that flies through a copper polycrystal
Fly through a crystal

Polycrystals
Polycrystals
Gradient grains
Gradient grains
Graphene grains
Graphene grains
Ice polycrystal
Ice polycrystal
Quasirandom alloys
Quasirandom alloys
Dislocations
Dislocations
Structure types
Structure types
Voronoi cells
Voronoi cells
Point groups
Point groups
Atomic strain
Atomic strain
Rings
Rings
Clusters
Clusters
Ice and water
Ice and water
Atom paths
Atom paths
Polyhedra
Polyhedra
Gamma surfaces
Gamma surfaces
NEP against DFT
NEP against DFT
Phase diagrams
Phase diagrams
Surface meshes
Surface meshes
Model uncertainty
Model uncertainty
High throughput
High throughput

More in the documentation, from the quick tour on.

📦 Install

pip install --pre mdapy

The first release of 2.0 is a preview, and --pre asks pip for it: without it, pip installs 1.x. MDAPY needs Python 3.11 or newer. Installation describes the other ways to install it, from a source archive or from git, what those need, and the optional packages.

🧪 Tests

git clone https://github.com/mushroomfire/mdapy.git
cd mdapy
pip install -e ".[dev]"
pytest

Tests that need another program are skipped where it is missing. Contributing lists what a complete run needs.

📖 Citing MDAPY

If MDAPY contributes to a publication, please cite:

Yong-Chao Wu and Jian-Li Shao, mdapy: A flexible and efficient analysis software for molecular dynamics simulations, Computer Physics Communications 290, 108764 (2023). doi:10.1016/j.cpc.2023.108764

Papers citing MDAPY lists, by year, the work done with it.

📄 License

Mozilla Public License 2.0, see LICENSE: MDAPY may be used in any software, open or closed, and changes to its own files are shared under the same license.

📜 Code history

MDAPY has been written three times.

Series Years How it was built Code
0.x 2022–2025 Python, with Taichi for the kernels Branch mdapy_old, last release 0.11.5
1.x 2025–2026 Rewritten with every kernel in C++, and with NumPy and polars as its only requirements Branch 1.x, last release 1.0.10, documentation
2.x 2026– Rewritten again from scratch, for the reasons below This branch

Taichi was no longer updated, which also limited the versions of Python that 0.x could run on. 1.x was rewritten to be easy to update and maintain, and it needs only NumPy and polars, no longer SciPy and Taichi.

2.x goes further: it is easier to maintain, more stable and more consistent, lighter without external code, with many more features and a clearer organization. In particular:

  • OpenMP. The OpenMP runtime of 1.x could clash with those of other packages. 2.x runs a thread pool of its own, so it shares a process with PyTorch and LAMMPS.
  • Third-party code. 1.x carried ten third-party codes to build and keep working. 2.x carries none.
  • The API. In 1.x an analysis was a method that changed the system. In 2.x a System never changes and every analysis is a class with one form.
  • Tests. Tests cover more than 99 % of the code and compare each feature with analytic results and with mature software, which makes 2.x more stable.
  • Many small calculations. The threads can be limited for each process, so thousands of small calculations side by side do not fight for cores.
  • Graphical interfaces. Long computations report their progress, can be cancelled and leave Python running, so a graphical interface is easy to build on 2.x.

Metadata

Release files for mdapy 2.0.0rc1

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

Source distribution (sdist)

Source distribution for mdapy 2.0.0rc1
File Size Uploaded Provenance Actions
mdapy-2.0.0rc1.tar.gz 670.2 kB With provenance Details for mdapy-2.0.0rc1.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for mdapy 2.0.0rc1
File Actions
mdapy-2.0.0rc1-cp312-abi3-win_amd64.whl CPython 3.12 abi3 Windows x86-64 Details for mdapy-2.0.0rc1-cp312-abi3-win_amd64.whl
mdapy-2.0.0rc1-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 abi3 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details for mdapy-2.0.0rc1-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
mdapy-2.0.0rc1-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 abi3 Linux glibc 2.27+ ARM64, Linux glibc 2.28+ ARM64 Details for mdapy-2.0.0rc1-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
mdapy-2.0.0rc1-cp312-abi3-macosx_14_0_arm64.whl CPython 3.12 abi3 macOS 14.0+ ARM64 Details for mdapy-2.0.0rc1-cp312-abi3-macosx_14_0_arm64.whl
mdapy-2.0.0rc1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for mdapy-2.0.0rc1-cp311-cp311-win_amd64.whl
mdapy-2.0.0rc1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details for mdapy-2.0.0rc1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
mdapy-2.0.0rc1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.27+ ARM64, Linux glibc 2.28+ ARM64 Details for mdapy-2.0.0rc1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
mdapy-2.0.0rc1-cp311-cp311-macosx_14_0_arm64.whl CPython 3.11 CPython 3.11 macOS 14.0+ ARM64 Details for mdapy-2.0.0rc1-cp311-cp311-macosx_14_0_arm64.whl

Total release size: 11.1 MB

Release files / mdapy-2.0.0rc1.tar.gz

Download URL mdapy-2.0.0rc1.tar.gz
Size 670.2 kB
Tags Source
SHA-256 checksum
How to use checksums
483a8806b4c3dba6f4523ec3ef94f9219807c1631b032054dbf7ce4bf2f0ba06
BLAKE2b-256 checksum
How to use checksums
8fb26a1355b663bf80a5b9c7d7d445a6dc1721bc08cafe431c377180873b64f9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 6, 2026.

Transparency log

Release files / mdapy-2.0.0rc1-cp312-abi3-win_amd64.whl

Download URL mdapy-2.0.0rc1-cp312-abi3-win_amd64.whl
Size 1.4 MB
Tags CPython 3.12 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
e44254d8905fc793e90aafae6622046fa6e0f024ac6904456d21dbfad8957590
BLAKE2b-256 checksum
How to use checksums
db1d4a639eac95d70f2ddf8527a165279cfcaf48d8820bf11369a89cac1e8dfb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 6, 2026.

Transparency log

Release files / mdapy-2.0.0rc1-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL mdapy-2.0.0rc1-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 1.4 MB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
01c47da68ef947e39d3a60c36069b715dcd7164ffe54155173b277e671de8fe1
BLAKE2b-256 checksum
How to use checksums
2f5f44109e50ff2859d712b98f8f544577abeee9dab2562d3930a9dfd4fcdd89
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 6, 2026.

Transparency log

Release files / mdapy-2.0.0rc1-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl

Download URL mdapy-2.0.0rc1-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Size 1.3 MB
Tags CPython 3.12 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
06471bd8337a76bc0dde8f940b993a26386138849b874db22e9a3c04d282daae
BLAKE2b-256 checksum
How to use checksums
11a56a32ee7f6865aaffba82e27c04a511a2ee5a0dbba73acf2bb14e5d2af6cf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 6, 2026.

Transparency log

Release files / mdapy-2.0.0rc1-cp312-abi3-macosx_14_0_arm64.whl

Download URL mdapy-2.0.0rc1-cp312-abi3-macosx_14_0_arm64.whl
Size 1.1 MB
Tags CPython 3.12 abi3 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
e5c35e2736e36434da9bf415593a9912fd14696d520b04848ab36cec85ff8098
BLAKE2b-256 checksum
How to use checksums
c0a543e4633a578c66828965a17b9b9bf725058232c937799966e356fddbc486
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 6, 2026.

Transparency log

Release files / mdapy-2.0.0rc1-cp311-cp311-win_amd64.whl

Download URL mdapy-2.0.0rc1-cp311-cp311-win_amd64.whl
Size 1.4 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
e5f181a62598a91654291ae57aad0278f7d19a5a55d95fc86d51fc4858a0d190
BLAKE2b-256 checksum
How to use checksums
188d37d73e3f4d295754ec2c288ef3850abc4a90326804a06bdcf90b4439a4a1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 6, 2026.

Transparency log

Release files / mdapy-2.0.0rc1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL mdapy-2.0.0rc1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 1.4 MB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
5c0e971de42338792c4a594526a3f45086173de658bbeb5b3c1a3aa53bd9af45
BLAKE2b-256 checksum
How to use checksums
3c0cda7b1489bc0ebbb9916f9a2014c2cc4a2ecdcb58260d823c0b0c1e9bc61d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 6, 2026.

Transparency log

Release files / mdapy-2.0.0rc1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl

Download URL mdapy-2.0.0rc1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Size 1.3 MB
Tags CPython 3.11 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
b93a97305e20726518bfc31188c89b86dd04359a0da2c65f289bfc8ac664e1fd
BLAKE2b-256 checksum
How to use checksums
d737a634dfa8d703c8ca787bd6e72ff11084ea03d112bddc6c2d2ced14203f70
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 6, 2026.

Transparency log

Release files / mdapy-2.0.0rc1-cp311-cp311-macosx_14_0_arm64.whl

Download URL mdapy-2.0.0rc1-cp311-cp311-macosx_14_0_arm64.whl
Size 1.1 MB
Tags CPython 3.11 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
d6edcabfb91840bf6c76e25e738cc6881f54c9e9bf184487fb20a1e81e649194
BLAKE2b-256 checksum
How to use checksums
a74365a0be38e46219f6d1834bf0bbc88b8ddbf932956e0f9c4c5a0bb2bff013
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 6, 2026.

Transparency log

Security for mdapy 2.0.0rc1

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 9 files in this release have been uploaded with provenance metadata.

Select from 9 files

Attestation for mdapy-2.0.0rc1.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 Nov 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
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