Build amorphous solids and liquid mixtures from Materials Project structures using Packmol and machine learning interatomic potentials
Project description
Muse
Muse (Mixture builder for simulation environments) is a Python package for rapidly building amorphous solids and liquid mixtures from relaxed solid-state structures on Materials Project. It uses Packmol for packing molecules into simulation cells and supports density equilibration through molecular dynamics with machine learning interatomic potentials (MLIPs), especially universal interatomic potentials (UIPs) such as MACE and CHGNet.
Features
- Structure generation — Build binary/multicomponent amorphous mixtures from Materials Project crystal structures via
mix_numberandmix_cell - Density equilibration — Run NVT → NPT molecular dynamics workflows to compute equilibrium densities with
DensityCalc - Thermodynamic analysis — Plot binary mixing enthalpy (G–x), density–composition, and excess volume diagrams with Redlich–Kister fits
- Trajectory I/O — Convert pymatgen trajectories to extended XYZ format
- HPC integration — Submit SLURM batch jobs programmatically
Installation
pip install muse-xtal
Optional extras
# MACE calculator support
pip install "muse-xtal[mace]"
# Development tools (ruff, pytest)
pip install "muse-xtal[dev]"
# Documentation building
pip install "muse-xtal[docs]"
Prerequisites
Muse requires Packmol to be installed and available on your PATH. You can compile it from source:
bash scripts/install-packmol.sh
You also need a Materials Project API key set as the MP_API_KEY environment variable (or in a .env file).
Quick Start
from muse.transforms.mixture import mix_number
# Build a NaCl–KCl mixture (3:1 ratio, ~20 atoms)
atoms = mix_number(
recipe={"NaCl": 3, "KCl": 1},
tolerance=2.0,
scale=1.05,
seed=42,
)
print(atoms) # Atoms object ready for simulation
Density equilibration with MACE
import numpy as np
from ase import units
from mace.calculators import MACECalculator
from muse.calcs.density import DensityCalc
calc = MACECalculator(model_paths="path/to/model", device="cpu")
density_calc = DensityCalc(
calculator=calc,
optimizer="FIRE",
steps=500,
mask=np.eye(3),
rtol=1e-3,
atol=5e-4,
)
results = density_calc.calc(
atoms=atoms,
temperature=1100, # K
externalstress=0.0, # eV/ų
)
print(f"Density: {results['mass_density']:.4f} amu/ų")
Documentation
Full documentation is available at chiang-yuan.github.io/muse.
Citation
If you use Muse in your research, please cite:
@software{chiang2023muse,
author = {Chiang, Yuan},
title = {muse-xtal},
version = {0.2.0},
year = {2023},
doi = {10.5281/zenodo.10369245},
url = {https://github.com/chiang-yuan/muse}
}
Contributing
Contributions are welcome! See CONTRIBUTING.md for guidelines.
License
This project is licensed under the MIT License — 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 muse_xtal-0.2.0.tar.gz.
File metadata
- Download URL: muse_xtal-0.2.0.tar.gz
- Upload date:
- Size: 21.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d78f5828d86e6d5d4806e68da6eb50788a5258bd5205e554782880c1ecb6414a
|
|
| MD5 |
e3ea2757748f6cb7e24785f0c7463997
|
|
| BLAKE2b-256 |
35439431dd8ed8a45246d8bdb5e684112961490b62e4c698ad3cb993fe28bfb6
|
Provenance
The following attestation bundles were made for muse_xtal-0.2.0.tar.gz:
Publisher:
release.yml on chiang-yuan/muse
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
muse_xtal-0.2.0.tar.gz -
Subject digest:
d78f5828d86e6d5d4806e68da6eb50788a5258bd5205e554782880c1ecb6414a - Sigstore transparency entry: 1339881005
- Sigstore integration time:
-
Permalink:
chiang-yuan/muse@3798d4f283c017783455f83f98772c2ded66b716 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/chiang-yuan
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@3798d4f283c017783455f83f98772c2ded66b716 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file muse_xtal-0.2.0-py3-none-any.whl.
File metadata
- Download URL: muse_xtal-0.2.0-py3-none-any.whl
- Upload date:
- Size: 24.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aff178d1f97d35f03b976ef45e14f73f28f6cf29ce3bcbcd684e4fc402fd7ad8
|
|
| MD5 |
0379befdef95be734278b1a380f87856
|
|
| BLAKE2b-256 |
d23783e9f85ef7163fc5303582ac4c816dae0c809c47f5329cccddd09f10620e
|
Provenance
The following attestation bundles were made for muse_xtal-0.2.0-py3-none-any.whl:
Publisher:
release.yml on chiang-yuan/muse
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
muse_xtal-0.2.0-py3-none-any.whl -
Subject digest:
aff178d1f97d35f03b976ef45e14f73f28f6cf29ce3bcbcd684e4fc402fd7ad8 - Sigstore transparency entry: 1339881011
- Sigstore integration time:
-
Permalink:
chiang-yuan/muse@3798d4f283c017783455f83f98772c2ded66b716 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/chiang-yuan
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@3798d4f283c017783455f83f98772c2ded66b716 -
Trigger Event:
workflow_dispatch
-
Statement type: