Skip to main content
ALomancy

ALomancy

Modular Active Learning Workflows for Modern Computational Chemistry

PyPI version Python 3.9+ License: MIT Tests codecov Code style: ruff Documentation Status

Installation • Quick Start • Documentation • Examples • Contributing


🎯 Overview

ALomancy is a Python framework for running active learning (AL) workflows for training machine-learned inter-atomic potentials (MLIPs). This package focusses on customization and reproducibility to build robust training datasets and train MLIPs.

Key Features

  • 🚀 Automated AL Workflows: End-to-end active learning with minimal manual intervention
  • 🔧 HPC Integration: Built-in support for remote job submission on HPC clusters
  • ⚡ Parallelization: Ensures that jobs run concurrently where possible increasing speed to results
  • 🔄 Extensible Design: Abstract base classes for easy customization and extension
  • 📊 Analysis Tools: Built-in utilities for monitoring and analyzing AL progress

Workflow Overview

flowchart TD
    A((Initial Dataset)) --> B[Train MLIP Committee]
    B --> C[Structure Generation]
    C --> D((Uncertainty-based Selection))
    D --> E[High-Accuracy Evaluation]
    E --> F((Update Training Dataset))
    F --> B

    style A fill:#e66027
    style B fill:#e87322
    style C fill:#eb861e
    style D fill:#efa119
    style E fill:#708e4c
    style F fill:#328566

🚀 Installation

pip install alomancy

From Source

git clone https://github.com/julianholland/ALomancy.git
cd ALomancy
uv sync            # creates .venv with alomancy (editable) + the dev tools

Without uv: pip install -e . (add pytest ruff mypy pre-commit yourself; the dev tools are a uv dependency group, not a pip extra).

Dependencies

  • Python 3.10+
  • ASE — Atomic Simulation Environment
  • expyre-wfl — Remote HPC job execution
  • MACE — Machine Learning Accelerated Computational Engine
  • sage-lib — Hybrid HDF5+SQLite structure database
  • mp-api — Materials Project API

⚡ Quick Start

1. Basic Active Learning Workflow

from alomancy import ALomancy

# The config picks everything: the AL skeleton (general.al_workflow) and
# every module (training.trainer, structure_generation.generator,
# high_accuracy_evaluation.evaluator). Every run setting (start_from,
# num_of_al_loops, verbose, ...) lives under the YAML's `general:` section.
ALomancy("standard_config.yaml").run()

2. Configuration File

Create a standard_config.yaml file to specify your computational setup:

general:
  al_workflow: "committee_uncertainty"
  elements: ["C", "O"]   # atomic symbols, not atomic numbers
  # Optional: start from existing data instead of generating it. See
  # docs/starting_a_run.md for all four start modes.
  # start_from:
  #   xyz: "my_dft_data.xyz"
  num_of_al_loops: 5
  verbose: 1
  dataset_kwargs:
    target_config_types: ["IsolatedAtom"]
    test_ratio: 0.1
  committee_uncertainty_kwargs:
    num_of_models_in_committee: 5

initialization:
  name: "init"
  max_time: "04:00:00"
  hpc:
    hpc_name: "local"
    partitions: [""]
    pre_cmds: []

training:
  name: "mace_training"
  trainer: "mace"   # selects the registered mlip_trainer backend
  max_time: "24:00:00"
  hpc:
    hpc_name: "gpu_cluster"
    partitions: ["gpu"]
    pre_cmds: ["module load cuda", "source activate mace"]

structure_generation:
  name: "md_generation"
  generator: "md"   # "md" (default) or "ezga"
  max_time: "12:00:00"
  hpc:
    hpc_name: "gpu_cluster"
    partitions: ["gpu"]
    pre_cmds: ["module load cuda", "source activate mace"]

high_accuracy_evaluation:
  name: "dft_evaluation"
  evaluator: "qe"   # "qe" (default) or "vasp"
  max_time: "48:00:00"
  hpc:
    hpc_name: "cpu_cluster"
    partitions: ["cpu"]
    pre_cmds: ["module load quantum-espresso"]

3. Adding a New Backend

There's no subclassing to extend ALomancy: each pluggable category (trainer, structure generator, DFT evaluator, initialiser) is a module registered against a name in src/alomancy/registry.py, resolved lazily from config at runtime (training.trainer, structure_generation.generator, high_accuracy_evaluation.evaluator). Adding a new backend means writing a new module with the category's expected entry points (output_paths, read_existing_result, and the category-specific worker function) and registering it — see any existing module under mlip/, structure_generation/, or high_accuracy_evaluation/dft/ for the pattern.

📚 Examples

Check out the examples/ directory for complete workflow examples:

  • Basic Usage: Simple active learning workflow setup
  • Custom HPC Configuration: Advanced cluster configuration
  • Analysis Scripts: Post-processing and visualization tools

🏗️ Project Structure

alomancy/
├── analysis/           # Analysis and visualization tools
├── configs/           # Configuration management
├── core/              # Core active learning framework
├── high_accuracy_evaluation/  # DFT calculation modules
├── initialize/        # Initialization structure generation
├── mlip/              # Machine learning potential training
├── structure_generation/      # MD and structure generation
└── utils/             # Utility functions and helpers

🔧 Key Components

Core Framework

  • ALomancy: The single entry point (from alomancy import ALomancy; ALomancy("config.yaml").run(), or alomancy run config.yaml); builds whichever AL skeleton general.al_workflow names
  • CommitteeUncertaintyWorkflow: The default AL skeleton (al_workflow: committee_uncertainty); resolves its trainer/structure-generator/DFT-evaluator/initialiser from config via the shared module registry rather than subclassing
  • GlobalDatabase: Persistent HDF5+SQLite store for all DFT-evaluated structures; deduplication by (config_type, formula)
  • Structured Logging: All output routed through Python logging; verbose=0/1/2 controls console level; file always captures DEBUG

MLIP Training

  • MACE Integration: Committee training with uncertainty quantification
  • Remote Submission: HPC job management for GPU-accelerated training

Structure Generation

  • Molecular Dynamics: ASE-based MD simulations with MACE potentials
  • Uncertainty Sampling: Intelligent structure selection based on model disagreement

High-Accuracy Evaluation

  • Pluggable DFT backend: Quantum Espresso (calculator: "qe", default) or VASP (calculator: "vasp") selected via config key; lazy imports keep optional dependencies isolated
  • Job Management: Parallel submission and monitoring of DFT jobs; output directories use ase_output_ prefix

🤝 Contributing

We welcome contributions! Please see our Contributing Guide for details.

Development Setup

# Clone the repository
git clone https://github.com/julianholland/ALomancy.git
cd ALomancy

# Install in development mode (alomancy editable + dev tools, from uv.lock)
uv sync

# Run tests
uv run pytest

# Run linting
ruff check .
ruff format .

Running Tests

# Run all tests
pytest

# Run specific test categories
pytest tests/core_tests/
pytest tests/mlip_train_tests/
pytest tests/high_acc_tests/

# Run with coverage
pytest --cov=alomancy

📝 Citation

If you use ALomancy in your research, please cite:

@software{alomancy2025,
  title={ALomancy: Modular Active Learning Workflows for Modern Computational Chemistry},
  author={Julian Holland},
  year={2025},
  url={https://github.com/julianholland/ALomancy},
  version={0.1.0}
}

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • The Fritz Haber Institute

📞 Support


Metadata

Release files for alomancy 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for alomancy 1.0.0
File Size Uploaded
alomancy-1.0.0.tar.gz 978.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for alomancy 1.0.0
File Interpreter ABI Platform
alomancy-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.5 MB

Release files / alomancy-1.0.0.tar.gz

Download URL alomancy-1.0.0.tar.gz
Size 978.0 kB
Tags Source
SHA-256 checksum
How to use checksums
99ac1aaea3b87de63491aa88ae435a68f3321c106b6b8e87bbbb568c21110dbe
BLAKE2b-256 checksum
How to use checksums
7c0c20c9677f633decd8b1c18e906173d8b7fda15649747cc8a00d2fa52bbfc1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","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":null}

Release files / alomancy-1.0.0-py3-none-any.whl

Download URL alomancy-1.0.0-py3-none-any.whl
Size 541.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fe27076a2486af1add2ff004613fae75dab97c78fb8b0be39983314ea52a70ab
BLAKE2b-256 checksum
How to use checksums
848a86ebbdbd638d3e19d48f3ab001b2eab15de3704d847bd980d898b9ec730d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","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":null}

Release history Release notifications | RSS feed

1.0.2

2 release files

1.0.1

2 release files

This release

1.0.0 This release

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.7

2 release files

0.4.6

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page