CALVADOS / OpenMM simulations of elastin-like polypeptides (ELPs).
This project is managed with uv. Install it
by following the official instructions,
then clone the repo and run uv sync.
git clone git@github.com:Delft-iGEM/ELP-Simulations.git
cd ELP-Simulations
uv syncIn VSCode, select .venv/bin/python as your interpreter. From a terminal,
activate the env with:
source .venv/bin/activateInstall uv once on a login node by following the
official instructions.
Then add the following to your ~/.bashrc to redirect uv's caches off the
small /home quota:
export UV_CACHE_DIR=/scratch/$USER/.uv-cache
export UV_PYTHON_INSTALL_DIR=/scratch/$USER/.uv-python
mkdir -p "$UV_CACHE_DIR" "$UV_PYTHON_INSTALL_DIR"
export PATH="$HOME/.local/bin:$PATH"Reload your shell (source ~/.bashrc), then clone the repo to /scratch
and sync. This must be done from a login node — compute nodes have no
internet access:
cd /scratch/$USER
git clone git@github.com:Delft-iGEM/ELP-Simulations.git
cd ELP-Simulations
uv sync --frozenThe simulations use CALVADOS on top of OpenMM. If you haven't worked with CALVADOS before, skim the examples in their repo first.
To create a new simulation, copy an existing folder under simulations/
and rename it. The folder name should match sim_name and be descriptive —
e.g. i70-surfaceattached for 70 VPGIG repeats, surface-attached. You can
use tools.elibpy.humanize_seq for naming inspiration.
Inside the simulation folder, prepare.py defines the usual CALVADOS
Config and Components setup; edit parameters there. ELP sequences can
be built with:
from tools.elibpy import build_sequence_with_featuresYou don't have to use elibpy — plain strings in the sequences dict
work fine too.
For anything that needs to happen on the OpenMM System itself (custom
restraints, extra forces, etc.), use the build_sim hook in prepare.py.
It runs after sim.build_system() and before sim.simulate(), so the
system exists and is ready to be modified.
The runtime/ folder is generated and not committed. You should NOT
need to edit anything inside it by hand: prepare.py regenerates it
idempotently, so running prepare on any machine produces the exact same result.
After uv sync, the sim CLI is available inside the venv. Activate it once:
source .venv/bin/activate # Linux / macOS
.venv\Scripts\activate # Windows (PowerShell)Then use sim for all simulation tasks:
sim list # list available simulations
sim prepare i70-surfaceattached # generate runtime/ folder
sim run i70-surfaceattached # run locally
sim submit i70-surfaceattached # sbatch on DelftBlueInstall completion once (detects your shell automatically — bash, zsh, fish, or PowerShell):
sim --install-completionRestart your shell (or source ~/.bashrc), then Tab after sim prepare or
sim run to autocomplete simulation names.
To see the raw completion script without installing it:
sim --show-completionPrefix any command with uv run:
uv run sim prepare i70-surfaceattached
uv run sim run i70-surfaceattached