A lattice-based coarse-grained Monte Carlo engine for polymer phase behaviour and biomolecular condensates.
Project description
PIMMS: Polymer Interactions in Multi-component MixtureS
PIMMS is a lattice-based, coarse-grained Monte Carlo simulation engine for exploring the phase behaviour and conformational properties of polymer systems — single homo- or hetero-polymers, many-chain mixtures, and biomolecular condensates — in both 2D and 3D.
📖 Full documentation: https://idptools-pimms.readthedocs.io
What is PIMMS?
PIMMS discretises space into a square (2D) or cubic (3D) lattice. A polymer is a chain of beads on that lattice, with consecutive beads occupying lattice-adjacent sites (in the Chebyshev sense, so chains can fold compactly), and every site holds at most one bead (hard-sphere exclusion). You define a system in a plain-text keyfile and the interactions in a parameter file, then run it with a single command-line executable:
PIMMS -k KEYFILE.kf
The engine samples configurations with Metropolis Monte Carlo. Interactions act over three nested length scales (short / long / super-long range) plus solvation and backbone-angle terms, all set in the parameter file, so you can build anything from a single self-avoiding chain to a multi-component condensate. A rich move set — local crankshaft moves, whole-chain reptation (slither) and cooperative pull megamoves, rigid-body cluster moves, virtual-move Monte Carlo (VMMC), and temperature-switch (TSMMC) excursions — samples efficiently and escapes kinetic traps, under either periodic or hard-wall boundaries.
The hot loops are written in optimised Cython that compiles to native C, with an optional multi-threaded OpenMP kernel for large systems. Trajectories are written as standard .pdb + .xtc (via mdtraj), and the bundled lemonade package provides fast, hierarchical post-hoc analysis (conformational properties, cluster/condensate physics, coexistence densities and interfacial tension). See the documentation for the full model, keyword reference, and worked examples.
Who develops PIMMS?
Alex Holehouse developed an initial version of PIMMS during his time in the Pappu lab, where it was used in a number of publications (most notably in Martin/Holehouse/Peran et al. Science 2020, which used an old Python 2.7 implementation available on Zenodo). Since starting his own lab, the majority of PIMMS has been rewritten, and Dr. Ryan Emenecker has joined as a core developer. PIMMS is developed and maintained exclusively by the Holehouse lab at Washington University in St. Louis, with contributions from many lab members of the years.
Installation
PIMMS is available on PyPI. Because the performance-critical parts are written in Cython, installing PIMMS compiles native C extensions on your machine, so you need a working C compiler (clang on macOS, gcc on Linux) and Python ≥ 3.8 (3.10+ recommended; our development/test environment is 3.12).
These steps mirror the installation guide in the documentation.
1. Create a clean environment (with conda or uv):
# with conda
conda create -n pimms python=3.12 -y
conda activate pimms
# ...or with uv
uv venv --python 3.12
source .venv/bin/activate
2. Install the dependencies (with uv, prefix each with uv pip instead of pip):
pip install numpy scipy cython versioningit
pip install mdtraj
3. Install PIMMS from PyPI:
pip install idptools-pimms
4. Install PIMMS directly from GitHub:
pip install --no-build-isolation git+https://github.com/holehouse-lab/PIMMS.git
...or from a source checkout (recommended if you intend to develop PIMMS):
git clone https://github.com/holehouse-lab/PIMMS.git
cd PIMMS
pip install -e . --upgrade --force-reinstall # ...or: uv pip install -e . --no-deps --reinstall
Verify the install with PIMMS --version and PIMMS --info (which lists every keyfile keyword).
Referencing PIMMS
A dedicated PIMMS methods paper is in preparation; this section will be updated with its citation once it is available. In the meantime, if PIMMS is useful in your work, please cite the repository:
Holehouse, A. S. & Emenecker, R. J. PIMMS: Polymer Interactions in Multi-component MixtureS. Holehouse Lab, Washington University in St. Louis. https://github.com/holehouse-lab/PIMMS
License
PIMMS is released under the GNU Lesser General Public License v3.0 (LGPLv3). See LICENSE for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file idptools_pimms-1.0.1.tar.gz.
File metadata
- Download URL: idptools_pimms-1.0.1.tar.gz
- Upload date:
- Size: 5.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
28aa85f4f5e4e116e1a76bedd73fe755c88a91cc78b3c144cf9e3e449d9f145b
|
|
| MD5 |
fea8316905f54e0edc34ff1ec38968f9
|
|
| BLAKE2b-256 |
4f42412bc20b85ec3d5e4d88211520c0cb646739ad19c6d69f6e8c4c29d06b50
|
File details
Details for the file idptools_pimms-1.0.1-cp312-cp312-macosx_26_0_arm64.whl.
File metadata
- Download URL: idptools_pimms-1.0.1-cp312-cp312-macosx_26_0_arm64.whl
- Upload date:
- Size: 6.5 MB
- Tags: CPython 3.12, macOS 26.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5cf69583951d090c2c70cd69ea6258c9f180319214aa1f36b75e6abcbec800b3
|
|
| MD5 |
86879bfa9a19175cee3cb9eee5a46cc2
|
|
| BLAKE2b-256 |
7ad620c2144e872bd877ee92e3310191151e914e9739fac2973e4e03c4613b52
|