Skip to content

Delft-iGEM/ELP-Simulations

Repository files navigation

iGEM 2026 TU Delft — ELP Simulations

CALVADOS / OpenMM simulations of elastin-like polypeptides (ELPs).

Setup

This project is managed with uv. Install it by following the official instructions, then clone the repo and run uv sync.

Personal machine

git clone git@github.com:Delft-iGEM/ELP-Simulations.git
cd ELP-Simulations
uv sync

In VSCode, select .venv/bin/python as your interpreter. From a terminal, activate the env with:

source .venv/bin/activate

DelftBlue

Install 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 --frozen

Writing simulations

The 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_features

You 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.

Preparing and running simulations

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 DelftBlue

Shell autocomplete

Install completion once (detects your shell automatically — bash, zsh, fish, or PowerShell):

sim --install-completion

Restart 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-completion

Running without the venv active

Prefix any command with uv run:

uv run sim prepare i70-surfaceattached
uv run sim run     i70-surfaceattached

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors