{"slug": "bioemu2-a-foundation-model-for-biomolecular-structure-and-dynamics", "title": "BioEmu2: A foundation model for biomolecular structure and dynamics", "summary": "Microsoft Research AI for Science released BioEmu2, a biomolecular foundation model that predicts folded structures, samples equilibrium ensembles, and generates time-lagged trajectories for systems containing proteins, nucleic acids, ligands, and other chemical components. BioEmu2 runs on Linux with an NVIDIA GPU of compute capability 7.5 or newer (T4, A100, RTX A6000, L40S, H100, B200) via the `cuda` extra, while Volta GPUs such as the V100 need the `cuda12` extra with PyTorch CUDA 12.6; context-parallel sampling requires at least four GPUs. The package targets Python 3.12, 3.13, or 3.14, with benchmark metrics evaluated only on Python 3.12.", "body_md": "**Predict folded structures, sample equilibrium ensembles, and propagate structures forward in time.**\n\n[Installation](#installation) · [Quick start](#quick-start) · [Tutorials](#tutorials) · [Documentation](https://github.com/microsoft/bioemu2/blob/main/docs)\n\n<sub>BioEmu2 simulating the PUMA BH3 peptide binding MCL-1.</sub>\n\nBioEmu2, short for \"biomolecular emulator\", is developed by Microsoft Research AI for Science.\n\nKey features include:\n\n- molecular systems containing proteins, nucleic acids, ligands, and other chemical components;\n- equilibrium sampling and structure prediction from the command line or Python;\n- time-lagged trajectory generation with implicit transfer operator models;\n- contact conditioning and inference-time steering toward desired properties;\n- context-parallel sampling of structures that do not fit on one GPU.\n\nBioEmu2 requires Linux and an NVIDIA GPU; macOS and Windows are not supported.\nThe `cuda` extra installs CUDA 13 cuEquivariance, which requires compute\ncapability 7.5 or newer, such as NVIDIA T4, A100, RTX A6000, L40S, H100, and B200\n([CUDA 13 release notes](https://docs.nvidia.com/cuda/archive/13.0.0/cuda-toolkit-release-notes/index.html#deprecated-architectures)).\nGPUs with compute capability 7.0 (Volta, such as NVIDIA V100) need the CUDA 12\n[installation](#installation) instead.\nWe have tested V100 (compute capability 7.0), T4 (7.5, with the CUDA 12\ninstallation), A100 and RTX A6000 (8.0 and 8.6), and B200 (10.0); other eligible\nGPUs have not been verified end to end. Check\nyour GPU's compute capability with\n`nvidia-smi --query-gpu=name,compute_cap --format=csv`.\n\nContext-parallel sampling requires at least four GPUs.\n\nUse Python 3.12, 3.13, or 3.14 on a supported Linux machine. We recommend\ninstalling BioEmu2 in an isolated\n[virtual environment](https://docs.python.org/3/library/venv.html) or\n[conda environment](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html).\nTo install in an isolated virtual environment, create and activate it from the\nrepository root:\n\n```\npython3.12 -m venv .venv\nsource .venv/bin/activate\n```\n\nReplace `python3.12` with the name or path of your Python 3.12, 3.13, or 3.14\nexecutable if needed. Use `python -m pip` so packages are installed into the\nactive Python environment rather than a different interpreter's `pip`.\n\nRun the installation command for your GPU from the repository root.\nFor GPUs with compute capability 7.5 or newer, such as NVIDIA T4, A100,\nRTX A6000, L40S, H100, and B200, use the `cuda` extra:\n\n```\npython -m pip install \".[cuda]\"\n```\n\nCompute capability 7.0 (Volta, such as NVIDIA V100) is the oldest supported;\non these GPUs, use the `cuda12` extra with the PyTorch CUDA 12.6 package index:\n\n```\npython -m pip install \".[cuda12]\" \\\n  --extra-index-url https://download.pytorch.org/whl/cu126\n```\n\nGPUs with compute capability below 7.0 are not supported.\n\nWe 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.\n\nFor development, see [DEVELOPER.md](https://github.com/microsoft/bioemu2/blob/main/DEVELOPER.md).\n\nFor Jupyter or VS Code notebooks, follow the [notebook\nquickstart](#notebook-quickstart) to install visualization dependencies and\nregister a kernel.\n\nSample eight equilibrium conformations of adenylate kinase (PDB 1AKE):\n\n```\nbioemu2 sample-equilibrium \\\n  --pdb-id 1AKE \\\n  --out outputs/adk\n```\n\nOr predict a folded structure from a PDB entry:\n\n```\nbioemu2 predict-structure \\\n  --pdb-id 1UBQ \\\n  --num-samples 1 \\\n  --out outputs/ubiquitin\n```\n\nPropagate each sampled adenylate kinase conformation by 1 ns:\n\n```\nbioemu2 propagate \\\n  --x0-cif outputs/adk/topology.cif \\\n  --x0-xtc outputs/adk/samples.xtc \\\n  --lag-time-ns 1 \\\n  --out outputs/adk-propagated\n```\n\nRun `bioemu2 --help` to list all commands.\n\nConstruct an `EmuSession` to sample and propagate structures:\n\n``` python\nfrom pathlib import Path\n\nfrom bioemu2 import EmuSession, System, load_model, save_frames\n\nmodel = load_model()\n\n# Predict a folded structure for ubiquitin.\nubiquitin = System.from_pdb_id(\"1UBQ\")\nprediction = EmuSession(ubiquitin, model=model, mode=\"structure\").sample(num_samples=1)\nsave_frames(prediction, Path(\"outputs/ubiquitin\"))\n\n# Sample equilibrium conformations of adenylate kinase.\nadk = System.from_pdb_id(\"1AKE\")\nemu = EmuSession(adk, model=model, mode=\"equilibrium\")\nsamples = emu.sample(num_samples=8)\nsave_frames(samples, Path(\"outputs/adk\"))\n\n# Propagate each adenylate kinase conformation by 1 ns.\nendpoints = emu.propagate(samples, lag_time_ns=1.0)\nsave_frames(endpoints, Path(\"outputs/adk-propagated\"))\n```\n\n`save_frames()` writes `samples.xtc` and `topology.cif` to each output\ndirectory.\n\nSee [define molecular systems](https://github.com/microsoft/bioemu2/blob/main/docs/system.md), [predict and sample\nstructures](https://github.com/microsoft/bioemu2/blob/main/docs/sampling.md), and [propagate structures](https://github.com/microsoft/bioemu2/blob/main/docs/propagation.md)\nfor more options. The functional Python APIs provide\n[high-level sampling](https://github.com/microsoft/bioemu2/blob/main/docs/functional-api.md#sample-structures) and\n[propagation](https://github.com/microsoft/bioemu2/blob/main/docs/functional-api.md#propagate-structures) functions similar to\nthe CLI commands, plus lower-level workflows for explicit control of\nembeddings and samplers.\n\nChoose a steering sampler to favour structures with desired properties:\n\n```\nbioemu2 sample-equilibrium \\\n  --system src/bioemu2/assets/examples/systems/myoglobin_101m.yaml \\\n  --out outputs/myoglobin \\\n  --sampler edm_gd\n```\n\nSee [steer sampling](https://github.com/microsoft/bioemu2/blob/main/docs/steering.md) and [define steering\npotentials](https://github.com/microsoft/bioemu2/blob/main/docs/potentials.md) to select an algorithm and configure its\nobjective.\n\nContext parallelism distributes the model's pair representations across a square mesh of GPUs, reducing the memory required on each device:\n\n```\nCUDA_VISIBLE_DEVICES=0,1,2,3 \\\ntorchrun --standalone --nproc-per-node=4 \\\n  --module bioemu2.cp sample-equilibrium \\\n  --pdb-id 1AKE \\\n  --checkpoint bioemu2-preview \\\n  --num-samples 3 \\\n  --out outputs/adk-cp\n```\n\nSee [sample large structures with context\nparallelism](https://github.com/microsoft/bioemu2/blob/main/docs/context-parallel-sampling.md) for mesh requirements, the\nPython API, and current limitations.\n\nRetrieve an alignment from ColabFold or load your own A3M files, inspect the\nraw sequences, and select or randomly subsample rows with Python indexing.\nPass the resulting `MSA` directly to `EmuSession` to control the alignment\nused for structure prediction, equilibrium sampling, or propagation without\nmanually constructing embeddings.\n\nSee [use multiple sequence alignments](https://github.com/microsoft/bioemu2/blob/main/docs/msa.md) for local-file loading,\n[MSA subsampling](https://github.com/microsoft/bioemu2/blob/main/docs/msa.md#select-rows-and-subsample-an-msa), and\n[custom-MSA inference](https://github.com/microsoft/bioemu2/blob/main/docs/msa.md#use-a-custom-msa-for-inference).\n\n- [Define molecular systems](https://github.com/microsoft/bioemu2/blob/main/docs/system.md) from PDB IDs, structure files, or sequences.\n- [Convert Boltz input YAML](https://github.com/microsoft/bioemu2/blob/main/docs/boltz.md) into systems you can sample from.\n- [Customise multiple-sequence alignments](https://github.com/microsoft/bioemu2/blob/main/docs/msa.md) used to condition sampling.\n- [Predict and sample structures](https://github.com/microsoft/bioemu2/blob/main/docs/sampling.md) for a system.\n- [Improve sampling speed and scale to bigger systems](https://github.com/microsoft/bioemu2/blob/main/docs/speed-and-capacity.md) by choosing batch size and precision.\n- [Load a model checkpoint](https://github.com/microsoft/bioemu2/blob/main/docs/checkpoints.md) , choose where checkpoints are cached, or use a local checkpoint.\n- [Propagate structures through time](https://github.com/microsoft/bioemu2/blob/main/docs/propagation.md) .\n- [Reuse trunk embeddings](https://github.com/microsoft/bioemu2/blob/main/docs/reuse-embeddings.md) across sampling and propagation calls, in memory or on disk.\n- [Use the functional Python API](https://github.com/microsoft/bioemu2/blob/main/docs/functional-api.md) to sample and propagate without an`EmuSession` .\n- [Steer sampling](https://github.com/microsoft/bioemu2/blob/main/docs/steering.md) towards structures with desired properties.\n- [Define steering potentials](https://github.com/microsoft/bioemu2/blob/main/docs/potentials.md) that encode the properties you want to favour.\n- [Sample large structures](https://github.com/microsoft/bioemu2/blob/main/docs/context-parallel-sampling.md) across multiple GPUs with context parallelism.\n\nThe [`examples`](https://github.com/microsoft/bioemu2/blob/main/examples) directory contains complete workflows as regular\nPython files split into executable cells with `# %%` markers. This Python\nInteractive format provides notebook-style cells while keeping the examples as\nplain `.py` files. They require a Linux machine with a supported NVIDIA GPU and\nnetwork access.\n\nActivate a Python environment as described in [installation](#installation).\nFrom the repository root, install BioEmu2 with the visualization dependencies\nand register a kernel. The `viz` extra includes `ipykernel` and `py3Dmol`:\n\n```\npython -m pip install \".[cuda,viz]\"\npython -m ipykernel install --user --name bioemu2 --display-name \"BioEmu2\"\n```\n\nOn compute capability 7.0 GPUs, such as NVIDIA V100, replace the first command with:\n\n```\npython -m pip install \".[cuda12,viz]\" \\\n  --extra-index-url https://download.pytorch.org/whl/cu126\n```\n\nSelect the **BioEmu2** kernel in Jupyter or VS Code. If registration succeeds\nbut the kernel does not appear in VS Code, restart VS Code and try again.\nTo check that it uses the environment you installed into, run\n`import sys; print(sys.executable)` in a cell. The examples load system YAML\nfrom the installed `bioemu2` package,\nregardless of the working directory. Relative `outputs/` paths are written\nunder the current working directory.\n\nOpen a single-GPU example in VS Code and select **Run Cell**, or run **Jupyter:\nRun Current File in Interactive Window** from the Command Palette. Launch the\ncontext-parallel example with `torchrun` as described in the\n[context-parallel sampling guide](https://github.com/microsoft/bioemu2/blob/main/docs/context-parallel-sampling.md#python-api).\n\nTo run without VS Code, convert an example with\n[Jupytext](https://jupytext.readthedocs.io/) and open it in JupyterLab:\n\n```\npython -m pip install jupytext jupyterlab\njupytext --to notebook examples/sample_structures.py\njupyter lab examples/sample_structures.ipynb\n```\n\nSelect the **BioEmu2** kernel, then run individual cells or choose **Run All\nCells** from the **Run** menu.\n\nIn VS Code, you can instead run **Jupyter: Export Current Python File as Jupyter\nNotebook** from the Command Palette. Generated `.ipynb` files are ignored by\nGit.\n\nBioEmu2 is released under the [MIT License](https://github.com/microsoft/bioemu2/blob/main/LICENSE). It includes code and\nreference data adapted from other open-source projects; the [third-party\nnotices](https://github.com/microsoft/bioemu2/blob/main/NOTICES.md) identify those components and their licenses.", "url": "https://wpnews.pro/news/bioemu2-a-foundation-model-for-biomolecular-structure-and-dynamics", "canonical_source": "https://github.com/microsoft/bioemu2", "published_at": "2026-10-21 16:04:47+00:00", "updated_at": "2026-10-21 16:13:10.596337+00:00", "lang": "en", "topics": ["ai-research", "machine-learning", "artificial-intelligence"], "entities": ["Microsoft Research", "BioEmu2", "NVIDIA", "A100", "H100", "B200", "PyTorch"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/bioemu2-a-foundation-model-for-biomolecular-structure-and-dynamics", "markdown": "https://wpnews.pro/news/bioemu2-a-foundation-model-for-biomolecular-structure-and-dynamics.md", "text": "https://wpnews.pro/news/bioemu2-a-foundation-model-for-biomolecular-structure-and-dynamics.txt", "jsonld": "https://wpnews.pro/news/bioemu2-a-foundation-model-for-biomolecular-structure-and-dynamics.jsonld"}}