pyMultiwfn
A Python wrapper for automating Multiwfn 3.8 (07/01/2026) batch calculations.
This project is currently in progress and is regularly maintained.
Documentation for pymultiwfn can be found here.
Installation
You can now install directly from PyPI (via pip or your manager of choice, e.g., uv):
pip install pymultiwfn
Running calculations
The most simple entry-point to analysis is through the MultiwfnAnalysis class.
Different Multiwfn menu entries can then by added as analyses and a MultiwfnJob will be created when the analysis is run().
There is also a possibility to create MultiwfnJob objects directly, which could be useful when executing custom menu sequences for tailored applications.
The Multiwfn object currently holds a path to the Multiwfn executable.
If it is not specified, the bundled version is used.
from pymultiwfn import MultiwfnAnalysis, Menu
analysis = MultiwfnAnalysis("benzene.wfn", analyses=[
Menu.HIRSHFELD_CHARGE,
Menu.MAYER_BOND_ORDER,
])
analysis.run()
print(analysis.results[0].to_dict())
The MultiwfnResult dataclasses hold different types of parsed results, which can easily be serialised into JSON.
Tutorials
Tutorials can be found in the tutorials folder, reflecting the case studies. These are complete with a set of expected results to compare against.
Contributing
We actively welcome contributions from the community. If you do decide to contribute please follow the guidelines below. When using our code for other projects, please respect the Mozilla Public License 2.0. In particular:
- You must provide the original/modified files licensed under MPL, alongside a list of changes from the original files.
- If using for closed source development, you must probide original source code of the files ("file-based copyleft") under MPL alongside your software.
Development
Make sure you have uv installed on your system.
Then any uv command should create a fully functional local environment:
git clone git@github.com:szczypinski-group/pyMultiwfn.git
cd pyMultiwfn
uv sync
uvx pre-commit install
Linting
Default linting settings and formatting settings (using ruff) have been created within pyproject.toml and will
be applied if the optional dependencies have been installed.
Unit testing
We try to include positive and negative unit tests for each new function. Ensure the tests pass before submitting a pull request:
uv run pytest
Code standards
- Use explicit imports wherever possible.
- For class and function definition/calls, split arguments into multiple lines.
- Always call functions with keyword arguments.
Conventional commits
We try to follow the conventional commits. In particular, please link to the issue that your commits are related to:
docs: update use cases in README.md
The use cases now follow the new code structure. Related to #24. Also included more detailed contribution guidelines.
Contact
If you have any question or inquiries, please create a new issue.
Referencing
If you are using this package, please reference the original Multiwfn package:
- Tian Lu, J. Chem. Phys., 161, 082503 (2024) DOI: 10.1063/5.0216272.
Metadata
Release files for pymultiwfn 2.0.0
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 |
|---|---|---|---|---|
| pymultiwfn-2.0.0.tar.gz | 26.5 MB | Without provenance | Details for pymultiwfn-2.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pymultiwfn-2.0.0-py3-none-any.whl | Python 3 | none | any | Details for pymultiwfn-2.0.0-py3-none-any.whl |
Total release size: 50.4 MB
Release files / pymultiwfn-2.0.0.tar.gz
| Download URL | pymultiwfn-2.0.0.tar.gz |
|---|---|
| Size | 26.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f4d231f6e13954da3d023a8b020641d1257a0b4f24e5cc224049900d58758efe
|
|
BLAKE2b-256 checksum How to use checksums |
7a1d8b90d9513648ea0f59d3b2dceec5a65c7e291003fa4cce5da072562a5d54
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pymultiwfn-2.0.0-py3-none-any.whl
| Download URL | pymultiwfn-2.0.0-py3-none-any.whl |
|---|---|
| Size | 23.9 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e59fee7fbbf3e3551b54498ba43e75a1ca609f7c5a5256ef619084d9c969425b
|
|
BLAKE2b-256 checksum How to use checksums |
162c70f84f5c35ae920ba0addf74f194c1e9c96b819e09d12ee7523d5a18a749
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for pymultiwfn 2.0.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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
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.