This release is a pre-release and may not be stable for production use.
Fast building, analysis, simulation and visualization of atomistic systems, in Python.
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. ASystemnever changes in place, every analysis has the formcompute(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.
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
Systemnever 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)
| 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)
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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logSecurity 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.
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 logA 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.