This release is a pre-release and may not be stable for production use.
BioEmu2
A foundation model for biomolecular structure and dynamics
Predict folded structures, sample equilibrium ensembles, and propagate structures forward in time.
Installation · Quick start · Tutorials · Documentation
BioEmu2 simulating the PUMA BH3 peptide binding MCL-1.
BioEmu2, short for "biomolecular emulator", is developed by Microsoft Research AI for Science.
Key features include:
- molecular systems containing proteins, nucleic acids, ligands, and other chemical components;
- equilibrium sampling and structure prediction from the command line or Python;
- time-lagged trajectory generation with implicit transfer operator models;
- contact conditioning and inference-time steering toward desired properties;
- context-parallel sampling of structures that do not fit on one GPU.
System requirements
BioEmu2 requires Linux and an NVIDIA GPU; macOS and Windows are not supported.
The cuda extra installs CUDA 13 cuEquivariance, which requires compute
capability 7.5 or newer, such as NVIDIA T4, A100, RTX A6000, L40S, H100, and B200
(CUDA 13 release notes).
GPUs with compute capability 7.0 (Volta, such as NVIDIA V100) need the CUDA 12
installation instead.
We have tested V100 (compute capability 7.0), T4 (7.5, with the CUDA 12
installation), A100 and RTX A6000 (8.0 and 8.6), and B200 (10.0); other eligible
GPUs have not been verified end to end. Check
your GPU's compute capability with
nvidia-smi --query-gpu=name,compute_cap --format=csv.
Context-parallel sampling requires at least four GPUs.
Installation
Use Python 3.12, 3.13, or 3.14 on a supported Linux machine. We recommend installing BioEmu2 in an isolated virtual environment or conda environment. To install in an isolated virtual environment, create and activate it from the repository root:
python3.12 -m venv .venv
source .venv/bin/activate
Replace python3.12 with the name or path of your Python 3.12, 3.13, or 3.14
executable if needed. Use python -m pip so packages are installed into the
active Python environment rather than a different interpreter's pip.
Run the installation command for your GPU from the repository root.
For GPUs with compute capability 7.5 or newer, such as NVIDIA T4, A100,
RTX A6000, L40S, H100, and B200, use the cuda extra:
python -m pip install ".[cuda]"
Compute capability 7.0 (Volta, such as NVIDIA V100) is the oldest supported;
on these GPUs, use the cuda12 extra with the PyTorch CUDA 12.6 package index:
python -m pip install ".[cuda12]" \
--extra-index-url https://download.pytorch.org/whl/cu126
GPUs with compute capability below 7.0 are not supported.
We tested BioEmu2 and evaluated its benchmark metrics with Python 3.12. Python 3.13 and 3.14 pass the test suite, but we have not evaluated benchmark metrics with them.
For development, see DEVELOPER.md.
For Jupyter or VS Code notebooks, follow the notebook quickstart to install visualization dependencies and register a kernel.
Quick start
CLI
Sample eight equilibrium conformations of adenylate kinase (PDB 1AKE):
bioemu2 sample-equilibrium \
--pdb-id 1AKE \
--out outputs/adk
Or predict a folded structure from a PDB entry:
bioemu2 predict-structure \
--pdb-id 1UBQ \
--num-samples 1 \
--out outputs/ubiquitin
Propagate each sampled adenylate kinase conformation by 1 ns:
bioemu2 propagate \
--x0-cif outputs/adk/topology.cif \
--x0-xtc outputs/adk/samples.xtc \
--lag-time-ns 1 \
--out outputs/adk-propagated
Run bioemu2 --help to list all commands.
Python API using EmuSession
Construct an EmuSession to sample and propagate structures:
from pathlib import Path
from bioemu2 import EmuSession, System, load_model, save_frames
model = load_model()
# Predict a folded structure for ubiquitin.
ubiquitin = System.from_pdb_id("1UBQ")
prediction = EmuSession(ubiquitin, model=model, mode="structure").sample(num_samples=1)
save_frames(prediction, Path("outputs/ubiquitin"))
# Sample equilibrium conformations of adenylate kinase.
adk = System.from_pdb_id("1AKE")
emu = EmuSession(adk, model=model, mode="equilibrium")
samples = emu.sample(num_samples=8)
save_frames(samples, Path("outputs/adk"))
# Propagate each adenylate kinase conformation by 1 ns.
endpoints = emu.propagate(samples, lag_time_ns=1.0)
save_frames(endpoints, Path("outputs/adk-propagated"))
save_frames() writes samples.xtc and topology.cif to each output
directory.
See define molecular systems, predict and sample structures, and propagate structures for more options. The functional Python APIs provide high-level sampling and propagation functions similar to the CLI commands, plus lower-level workflows for explicit control of embeddings and samplers.
More workflows
Steer sampling
Choose a steering sampler to favour structures with desired properties:
bioemu2 sample-equilibrium \
--system src/bioemu2/assets/examples/systems/myoglobin_101m.yaml \
--out outputs/myoglobin \
--sampler edm_gd
See steer sampling and define steering potentials to select an algorithm and configure its objective.
Sample large structures across multiple GPUs
Context parallelism distributes the model's pair representations across a square mesh of GPUs, reducing the memory required on each device:
CUDA_VISIBLE_DEVICES=0,1,2,3 \
torchrun --standalone --nproc-per-node=4 \
--module bioemu2.cp sample-equilibrium \
--pdb-id 1AKE \
--checkpoint bioemu2-preview \
--num-samples 3 \
--out outputs/adk-cp
See sample large structures with context parallelism for mesh requirements, the Python API, and current limitations.
Inspect and subsample MSAs
Retrieve an alignment from ColabFold or load your own A3M files, inspect the
raw sequences, and select or randomly subsample rows with Python indexing.
Pass the resulting MSA directly to EmuSession to control the alignment
used for structure prediction, equilibrium sampling, or propagation without
manually constructing embeddings.
See use multiple sequence alignments for local-file loading, MSA subsampling, and custom-MSA inference.
Tutorials
- Define molecular systems from PDB IDs, structure files, or sequences.
- Convert Boltz input YAML into systems you can sample from.
- Customise multiple-sequence alignments used to condition sampling.
- Predict and sample structures for a system.
- Improve sampling speed and scale to bigger systems by choosing batch size and precision.
- Load a model checkpoint, choose where checkpoints are cached, or use a local checkpoint.
- Propagate structures through time.
- Reuse trunk embeddings across sampling and propagation calls, in memory or on disk.
- Use the functional Python API to sample and propagate without an
EmuSession. - Steer sampling towards structures with desired properties.
- Define steering potentials that encode the properties you want to favour.
- Sample large structures across multiple GPUs with context parallelism.
Notebook quickstart
The examples directory contains complete workflows as regular
Python files split into executable cells with # %% markers. This Python
Interactive format provides notebook-style cells while keeping the examples as
plain .py files. They require a Linux machine with a supported NVIDIA GPU and
network access.
Activate a Python environment as described in installation.
From the repository root, install BioEmu2 with the visualization dependencies
and register a kernel. The viz extra includes ipykernel and py3Dmol:
python -m pip install ".[cuda,viz]"
python -m ipykernel install --user --name bioemu2 --display-name "BioEmu2"
On compute capability 7.0 GPUs, such as NVIDIA V100, replace the first command with:
python -m pip install ".[cuda12,viz]" \
--extra-index-url https://download.pytorch.org/whl/cu126
Select the BioEmu2 kernel in Jupyter or VS Code. If registration succeeds
but the kernel does not appear in VS Code, restart VS Code and try again.
To check that it uses the environment you installed into, run
import sys; print(sys.executable) in a cell. The examples load system YAML
from the installed bioemu2 package,
regardless of the working directory. Relative outputs/ paths are written
under the current working directory.
Open a single-GPU example in VS Code and select Run Cell, or run Jupyter:
Run Current File in Interactive Window from the Command Palette. Launch the
context-parallel example with torchrun as described in the
context-parallel sampling guide.
To run without VS Code, convert an example with Jupytext and open it in JupyterLab:
python -m pip install jupytext jupyterlab
jupytext --to notebook examples/sample_structures.py
jupyter lab examples/sample_structures.ipynb
Select the BioEmu2 kernel, then run individual cells or choose Run All Cells from the Run menu.
In VS Code, you can instead run Jupyter: Export Current Python File as Jupyter
Notebook from the Command Palette. Generated .ipynb files are ignored by
Git.
License
BioEmu2 is released under the MIT License. It includes code and reference data adapted from other open-source projects; the third-party notices identify those components and their licenses.
Metadata
Release files for bioemu2 0.1.0rc0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| bioemu2-0.1.0rc0.tar.gz | 473.0 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| bioemu2-0.1.0rc0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 988.2 kB
Release files / bioemu2-0.1.0rc0.tar.gz
| Download URL | bioemu2-0.1.0rc0.tar.gz |
|---|---|
| Size | 473.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
12a0f2bf1ea22135bc811a9858445ed3861db98deed9ad1f9c3a1ea09015bdc6
|
|
BLAKE2b-256 checksum How to use checksums |
c74fd431b9e6a23e2d37e3fb7853ed103b59cfe6af96057147bdb6cc54bdb296
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.
Transparency logRelease files / bioemu2-0.1.0rc0-py3-none-any.whl
| Download URL | bioemu2-0.1.0rc0-py3-none-any.whl |
|---|---|
| Size | 515.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4f87583ec03fac0119acb96e1f6302c5800442452d3520f2017f034e62b0990b
|
|
BLAKE2b-256 checksum How to use checksums |
10ae365968b92bbf4086af8d9613dd10fc03eeb81f6bcf3a40d43a26b42b237b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.
Transparency logSecurity for bioemu2 0.1.0rc0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for bioemu2-0.1.0rc0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.