Skip to main content

Active learning and optimization toolkit for chemical and materials research

Project description

ALchemist

ALchemist: Active Learning Toolkit for Chemical and Materials Research

ALchemist is a modular Python toolkit that brings active learning and Bayesian optimization to experimental design in chemical and materials research. It is designed for scientists and engineers who want to efficiently explore or optimize high-dimensional variable spaces—without writing code—using an intuitive graphical interface.

NREL Software Record: SWR-25-102


📖 Documentation

Full user guide and documentation:
https://nrel.github.io/ALchemist/


🚀 Overview

ALchemist accelerates discovery and optimization by combining:

  • Flexible variable space definition: Real, integer, and categorical variables with bounds or discrete values.
  • Probabilistic surrogate modeling: Gaussian process regression via BoTorch or scikit-optimize backends.
  • Advanced acquisition strategies: Efficient sampling using qEI, qPI, qUCB, and qNegIntegratedPosteriorVariance.
  • Modern web interface: React-based UI with FastAPI backend for seamless active learning workflows.
  • Autonomous optimization: Human-out-of-the-loop optimization for real-time process control.
  • Experiment tracking: CSV logging, reproducible random seeds, and error tracking.
  • Extensibility: Abstract interfaces for models and acquisition functions enable future backend and workflow expansion.

Use Cases

  • Interactive Optimization: Desktop GUI or web UI for manual experiment design
  • Programmatic Workflows: Python Session API for scripts and notebooks
  • Autonomous Operation: REST API for real-time process control (reactors, synthesis, etc.)
  • Remote Collaboration: Web-based interface accessible from any device

🧭 Quick Start

Installation

Requirements: Python 3.11 or higher

We recommend using Anaconda to manage your Python environments.

1. Create a new environment:

conda create -n alchemist-env python=3.11
conda activate alchemist-env

2. Install ALchemist:

Option A: From PyPI (recommended):

pip install alchemist-nrel

Option B: From GitHub:

pip install git+https://github.com/NREL/ALchemist.git

Option C: Development install (for contributors):

git clone https://github.com/NREL/ALchemist.git
cd ALchemist
pip install -e .

All dependencies are specified in pyproject.toml and will be installed automatically.

Note: The web UI is pre-built and included in the package. You do not need Node.js/npm to use ALchemist unless you're developing the frontend.

Running ALchemist

Web Application (Recommended):

alchemist-web
# Opens at http://localhost:8000

Desktop Application:

alchemist
# Launches CustomTkinter GUI

Development Mode (Frontend Developers):

# Terminal 1: Backend with hot-reload
python run_api.py

# Terminal 2: Frontend with hot-reload
cd alchemist-web
npm install  # First time only
npm run dev
# Opens at http://localhost:5173

Docker Deployment:

docker pull ghcr.io/nrel/alchemist:latest
docker run -p 8000:8000 ghcr.io/nrel/alchemist:latest

# Or build from source:
cd docker
docker-compose up --build

For step-by-step instructions, see the Getting Started section of the documentation.


📁 Project Structure

ALchemist/
├── alchemist_core/       # Core Python library
├── alchemist-web/        # React frontend application
├── api/                  # FastAPI backend
├── docker/               # Docker configuration files
├── scripts/              # Build and development scripts
├── tests/                # Test suite
├── docs/                 # Documentation (MkDocs)
├── memory/               # Development notes and references
└── run_api.py           # API server entry point

🛠️ Development Status

ALchemist is under active development at NREL as part of the DataHub project within the ChemCatBio consortium. It is designed to be approachable for non-ML researchers and extensible for advanced users. Planned features include:

  • Enhanced initial sampling and DoE methods
  • Additional model types and acquisition strategies
  • Improved visualization tools
  • GUI reimplementation in PySide6 for broader compatibility
  • Support for multi-output models and multi-objective optimization

🐞 Issues & Troubleshooting

If you encounter any issues or have questions, please open an issue on GitHub or contact ccoatney@nrel.gov.

For the latest known issues and troubleshooting tips, see the Issues & Troubleshooting Log.

We appreciate your feedback and bug reports to help improve ALchemist!


📄 License

This project is licensed under the BSD 3-Clause License. See the LICENSE file for details.


🔗 Repository

https://github.com/NREL/ALchemist

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

alchemist_nrel-0.3.0.tar.gz (2.6 MB view details)

Uploaded Source

Built Distribution

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

alchemist_nrel-0.3.0-py3-none-any.whl (2.2 MB view details)

Uploaded Python 3

File details

Details for the file alchemist_nrel-0.3.0.tar.gz.

File metadata

  • Download URL: alchemist_nrel-0.3.0.tar.gz
  • Upload date:
  • Size: 2.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for alchemist_nrel-0.3.0.tar.gz
Algorithm Hash digest
SHA256 e0e1fad47e7dcbbedf8685184cd1fd19be08a936f83ba2d4080a6910076cc8e7
MD5 f79d654fabda2591f4b66e5d628e19c0
BLAKE2b-256 caa330c7721343273388dd6816dea6e0db86925fc6f5e2e7a887e91287c557a6

See more details on using hashes here.

Provenance

The following attestation bundles were made for alchemist_nrel-0.3.0.tar.gz:

Publisher: publish-pypi.yml on NREL/ALchemist

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

File details

Details for the file alchemist_nrel-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: alchemist_nrel-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for alchemist_nrel-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 47f93748a93b42559ea4f1fd14dbfdd0ffa4117435c544b36d5b4381542ace43
MD5 bd6a1f3bfc1b61ce6a004de56da7ada9
BLAKE2b-256 f96835ffb642c8e119cec78a0e250b2557e385a7b8c660c7ccdec3083f30c648

See more details on using hashes here.

Provenance

The following attestation bundles were made for alchemist_nrel-0.3.0-py3-none-any.whl:

Publisher: publish-pypi.yml on NREL/ALchemist

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