chmpy
A library for computational chemistry in python.
Documentation»
Report a bug
·
Request a new feature
chmpy supports handling molecules, crystals, Hirshfeld & promolecule density isosurfaces, spherical harmonic shape descriptors and much more...
Installation
Basic installation can be done through the python package manager pip:
pip install chmpy
# or to install directly from GitHub:
pip install git+https://github.com/peterspackman/chmpy.git
Plotting and mesh handling are optional extras, so the default install stays small:
pip install 'chmpy[plots]' # matplotlib, for the plotting helpers
pip install 'chmpy[mesh]' # trimesh, for isosurfaces and meshes
pip install 'chmpy[all]' # everything
For development or modifications, install locally using pip:
pip install -e .
Features
While the library is intended to be flexible and make it easy to build complex pipelines or properties, the following is a brief summary of intended features:
- Load crystal structures from
.cif,.res,POSCARfiles. - Evaluate promolecule and procrystal electron densities.
- Easily generate Hirshfeld or promolecule isosurfaces and associated properties.
- Easily generate spherical harmonic shape descriptors for atoms, molecules, or molecular fragments.
- Efficiently calculate crystal slabs, periodic connectivity and more...
- Automatic parallelization of some calculations using OpenMP (set the
OMP_NUM_THREADSenvironment variable) - View structures directly in a terminal, with no graphical display, via
chmpy-vieworchmpy.tui.render
It should also serve as a simple, easy to read library for learning how to represent crystal structures, molecules etc. and evaluate scientifically relevant information quickly and efficiently using python.
Examples
Crystal structures and molecules
Loading a crystal structure from a CIF (.cif) or SHELX (.res)
file, or a molecule from an XMOL (.xyz) file is straightforward:
from chmpy import Crystal, Molecule
c = Crystal.load("tests/acetic_acid.cif")
print(c)
# <Crystal C2H4O2 Pna2_1>
# Calculate the unique molecules in this crystal
c.symmetry_unique_molecules()
# [<Molecule: C2H4O2(2.12,1.15,0.97)>]
m = Molecule.load("tests/water.xyz")
print(m)
# <Molecule: H2O(-0.67,-0.00,0.01)>
Hirshfeld and promolecule density isosurfaces
Hirshfeld and promolecule density isosurfaces
Generation of surfaces with the default settings can be done with minimal hassle, simply by using the corresponding members of the Crystal class:
c = Crystal.load("tests/test_files/acetic_acid.cif")
# This will generate a high resolution surface
# for each symmetry unique molecule in the crystal
surfaces = c.hirshfeld_surfaces()
print(surfaces)
# [<trimesh.Trimesh(vertices.shape=(3598, 3), faces.shape=(7192, 3))>]
# We can generate lower resolution surfaces with the separation parameter
surfaces = c.hirshfeld_surfaces(separation=0.5)
print(surfaces)
# [<trimesh.Trimesh(vertices.shape=(584, 3), faces.shape=(1164, 3))>]
# Surfaces can be saved via trimesh, or a utility function provided in chmpy
from chmpy.util.mesh import save_mesh
save_mesh(surfaces[0], "acetic_acid.ply")
The resulting surface should look something like this when visualized:
Metadata
Release files for chmpy 1.5.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 | |
|---|---|---|---|
| chmpy-1.5.0.tar.gz | 4.0 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| chmpy-1.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 8.0 MB
Release files / chmpy-1.5.0.tar.gz
| Download URL | chmpy-1.5.0.tar.gz |
|---|---|
| Size | 4.0 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9500a735a60720aea756ac8d5f7c5f48af7100d5f3e90eb1ac1a1a8ef8f59420
|
|
BLAKE2b-256 checksum How to use checksums |
a7196de5d8d4665085c37529caeccc260ea7be5344c2a84acc3d64415844cfe3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 13, 2026.
Transparency logRelease files / chmpy-1.5.0-py3-none-any.whl
| Download URL | chmpy-1.5.0-py3-none-any.whl |
|---|---|
| Size | 4.1 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
503cfea738d223bd9dc589532f06bdf88d7abebbfebd34ef199781ac7f3d5ff6
|
|
BLAKE2b-256 checksum How to use checksums |
bbdf7b01186e5af64ed15113eac5a586c7b540ddcbbb7ef3d16b545dc0d0ca4b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 13, 2026.
Transparency log