Skip to main content

packing materials and molecules in boxes using for machine learnt interatomic potentials

Project description

Python versions Build Status Coverage Status License

what is packmm

packmm is a simple python package that allows to build atomistic and molecular systems which are of interest for materials and molecular modelling.

It tries to generate realistic starting configuration by employing machine learnt interatomic potential for describing interactions between atoms and Monte Carlo, Molecular Dynamics and hybrid Monte Carlo.

It provides both a cli and a python api, with some examples below.

Quick install

   uv pip install pack-mm

or install the latest

  uv pip install git+https://github.com/ddmms/pack-mm.git

Jupyter notebook examples

CLI examples

MOF in spherical pocket

   packmm --system examples/data/UiO-66.cif --molecule H2O --nmols 10  --where sphere --centre 10.0,10.0,10.0 --radius 5.0 --geometry

Zeolite in cylindrical channel

   packmm --system examples/data/MFI.cif --molecule H2O --nmols 30  --where cylinderY --centre 10.0,10.0,13.0 --radius 3.5 --height 19.00  --no-geometry

NaCl on surface

   packmm --system examples/data/NaCl.cif --molecule H2O --nmols 30  --where box --centre 8.5,8.5,16.0 --a 16.9 --b 16.9 --c 7.5 --no-geometry

MOF ellipsoid

first add a methanol

packmm --system examples/data/Cu2L.cif --molecule examples/data/Ethanol.xyz --nmols 1  --where sphere --centre 5.18,8.15,25.25 --radius 1 --model small-0b2 --geometry

packmm --system Cu2L-ethanol.cif --molecule H2O --nmols 10  --where ellipsoid --centre 5.18,8.15,25.25 --a 5.18 --b 8.15 --c 8.25 --no-geometry --model small-0b2

Liquid water

packmm --molecule H2O --nmols 33  --where anywhere  --cell-a 10.0 --cell-b 10.0 --cell-c 10.0  --model small-0b2

interstitials

packmm --system Pd-super.cif --molecule H2 --nmols 50  --where anywhere   --model small-0b2

before optimisation

after optimisation

full list of options

  packmm --help

   Usage: packmm [OPTIONS]

 Pack molecules into a system based on the specified parameters.

╭─ Options ────────────────────────────────────────────────────────────────────────────────────────╮
│ --system                                 TEXT                        The original box in which   │
│                                                                      you want to add particles.  │
│                                                                      If not provided, an empty   │
│                                                                      box will be created.        │
│                                                                      [default: None]             │
│ --molecule                               TEXT                        Name of the molecule to be  │
│                                                                      processed, ASE-recognizable │
│                                                                      or ASE-readable file.       │
│                                                                      [default: H2O]              │
│ --nmols                                  INTEGER                     Target number of molecules  │
│                                                                      to insert.                  │
│                                                                      [default: -1]               │
│ --ntries                                 INTEGER                     Maximum number of attempts  │
│                                                                      to insert each molecule.    │
│                                                                      [default: 50]               │
│ --seed                                   INTEGER                     Random seed for             │
│                                                                      reproducibility.            │
│                                                                      [default: 2025]             │
│ --where                                  [anywhere|sphere|box|cylin  Where to insert the         │
│                                          derZ|cylinderY|cylinderX|e  molecule. Choices:          │
│                                          llipsoid]                   'anywhere', 'sphere',       │
│                                                                      'box', 'cylinderZ',         │
│                                                                      'cylinderY', 'cylinderX',   │
│                                                                      'ellipsoid'.                │
│                                                                      [default: anywhere]         │
│ --centre                                 TEXT                        Centre of the insertion     │
│                                                                      zone, coordinates in Å,     │
│                                                                      e.g., '5.0, 5.0, 5.0'.      │
│                                                                      [default: None]             │
│ --radius                                 FLOAT                       Radius of the sphere or     │
│                                                                      cylinder in Å, depending on │
│                                                                      the insertion volume.       │
│                                                                      [default: None]             │
│ --height                                 FLOAT                       Height of the cylinder in   │
│                                                                      Å.                          │
│                                                                      [default: None]             │
│ --a                                      FLOAT                       Side of the box or          │
│                                                                      semi-axis of the ellipsoid, │
│                                                                      in Å, depends on the        │
│                                                                      insertion method.           │
│                                                                      [default: None]             │
│ --b                                      FLOAT                       Side of the box or          │
│                                                                      semi-axis of the ellipsoid, │
│                                                                      in Å, depends on the        │
│                                                                      insertion method.           │
│                                                                      [default: None]             │
│ --c                                      FLOAT                       Side of the box or          │
│                                                                      semi-axis of the ellipsoid, │
│                                                                      in Å, depends on the        │
│                                                                      insertion method.           │
│                                                                      [default: None]             │
│ --device                                 TEXT                        Device to run calculations  │
│                                                                      on (e.g., 'cpu' or 'cuda'). │
│                                                                      [default: cpu]              │
│ --model                                  TEXT                        ML model to use.            │
│                                                                      [default: medium-omat-0]    │
│ --arch                                   TEXT                        MLIP architecture to use.   │
│                                                                      [default: mace_mp]          │
│ --temperature                            FLOAT                       Temperature for the Monte   │
│                                                                      Carlo acceptance rule.      │
│                                                                      [default: 300.0]            │
│ --cell-a                                 FLOAT                       Side of the empty box along │
│                                                                      the x-axis in Å.            │
│                                                                      [default: 20.0]             │
│ --cell-b                                 FLOAT                       Side of the empty box along │
│                                                                      the y-axis in Å.            │
│                                                                      [default: 20.0]             │
│ --cell-c                                 FLOAT                       Side of the empty box along │
│                                                                      the z-axis in Å.            │
│                                                                      [default: 20.0]             │
│ --fmax                                   FLOAT                       force tollerance for        │
│                                                                      optimisation if needed.     │
│                                                                      [default: 0.1]              │
│ --geometry              --no-geometry                                Perform geometry            │
│                                                                      optimization at the end.    │
│                                                                      [default: geometry]         │
│ --out-path                               TEXT                        path to save various        │
│                                                                      outputs.                    │
│                                                                      [default: .]                │
│ --install-completion                                                 Install completion for the  │
│                                                                      current shell.              │
│ --show-completion                                                    Show completion for the     │
│                                                                      current shell, to copy it   │
│                                                                      or customize the            │
│                                                                      installation.               │
│ --help                                                               Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pack_mm-0.0.25.tar.gz (16.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pack_mm-0.0.25-py3-none-any.whl (11.0 kB view details)

Uploaded Python 3

File details

Details for the file pack_mm-0.0.25.tar.gz.

File metadata

  • Download URL: pack_mm-0.0.25.tar.gz
  • Upload date:
  • Size: 16.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pack_mm-0.0.25.tar.gz
Algorithm Hash digest
SHA256 a358f95fb4b8dfbd2682379e1e4110e02de5decf223ff2ecfabe9a9473bd9d5d
MD5 a4b30155dc97237678ca8e803429b874
BLAKE2b-256 7dfb0e4049c4f4aeee028467360bc68c952356f264ecf3e9c58796021aa3065c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pack_mm-0.0.25.tar.gz:

Publisher: python-publish.yml on ddmms/pack-mm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pack_mm-0.0.25-py3-none-any.whl.

File metadata

  • Download URL: pack_mm-0.0.25-py3-none-any.whl
  • Upload date:
  • Size: 11.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pack_mm-0.0.25-py3-none-any.whl
Algorithm Hash digest
SHA256 9f0ef313be3feac0d58c871509179a1ebfee8925a854ed40e436371b0b83dc1f
MD5 cec57c9b265cc1195c841503eca92a45
BLAKE2b-256 46387b775608349c2f5053f2557b7342188f522c1f1a5ffdb71a1d5885c8f21b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pack_mm-0.0.25-py3-none-any.whl:

Publisher: python-publish.yml on ddmms/pack-mm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page