Toolkit for automated Martini protein/DNA surface-system setup, including linker-aware orientation and pull/bonded coupling generation.
MartiniSurf builds complete GROMACS-ready simulation folders for:
- Protein-surface systems (Martini 3 workflow)
- DNA-surface systems (Martini2 DNA workflow)
- Linker-mediated immobilization workflows
- Published docs (GitHub Pages): https://biokt.github.io/MartiniSurf/
- Beginner-friendly complete guide (including full flag-by-flag reference):
docs/USER_GUIDE.md
Main capabilities:
- Coarse-graining via
martinize2(protein) ormartinize-dna.py(DNA) - Surface generation or reuse of provided surfaces
- Not explicit linker (anchor) or linker-based orientation
- Automatic topology assembly
conda create -n martinisurf python=3.11 -y
conda activate martinisurf
pip install -r requirements.txt
pip install -e .MartiniSurf expects the following tools in your environment:
martinize2for protein mode- Python 2.7 for DNA mode (
martinize-dna.py) - GROMACS for running the generated workflows
Examples are grouped by topic under martinisurf/examples/protein, martinisurf/examples/dna, and martinisurf/examples/surfaces.
The main ready-to-use workflows are:
martinisurf/examples/protein/04_anchor_solvate_ionizemartinisurf/examples/dna/03_linker_solvate_ionize_freezemartinisurf/examples/protein/05_pre_cg_nad_substrate
Typical run pattern for the full workflow examples (protein/04, dna/03, protein/05):
cd martinisurf/examples/protein/04_anchor_solvate_ionize
bash run.sh
bash work_flow_gromacs.shDNA workflow note:
dna/03runsminimization -> nvt -> deposition (NPT) -> production (NVT).- The pressure-coupled equilibration is handled in
deposition; there is no separate DNAnpt.mdpstage in this example.
- Protein workflow + optional linker generation with AutoMartini M3:
- Notebook:
martinisurf/examples/MartiniSurf_Protein.ipynb - Open in Colab: https://colab.research.google.com/github/BioKT/MartiniSurf/blob/master/martinisurf/examples/MartiniSurf_Protein.ipynb
- Notebook:
- DNA workflow + optional linker generation with auto_martini M2:
- Notebook:
martinisurf/examples/MartiniSurf_DNA.ipynb - Open in Colab: https://colab.research.google.com/github/BioKT/MartiniSurf/blob/master/martinisurf/examples/MartiniSurf_DNA.ipynb
- Notebook:
--anchorand--linker-groupaccept either legacy global residue ids or chain-based residue ids from the input PDB:- Legacy:
--anchor 1 8 10 11 - Chain-based:
--anchor B 8 10 11 - Chain-based groups are converted internally to global residue ids in input order, so the first group still becomes
Anchor_1, the secondAnchor_2, and so on.
- Legacy:
- Chain-based syntax is available for
--pdbworkflows. - In
--complex-config, chain-basedprotein.anchor_groupsare also supported whenprotein.reference_pdbpoints to the source PDB used to build the pre-CG complex. - The linker topology file must exist next to linker GRO with matching basename:
- Example:
linker.gro->linker.itp
- Example:
- You can reverse linker orientation with:
--invert-linker
- For multiple linker instances, pull/index groups are generated per linker automatically.
- If not provided manually, linker distances are estimated from Martini bead-size sigma rules.
Use:
martinisurf -hThe help output is grouped by blocks:
- Input and molecule
- Martinization controls
- Surface controls
- Classical anchor mode
- Linker mode
- Output
By default, MartiniSurf writes:
Simulation_Files/
0_topology/
system.top
system_res.top
index.ndx
system_itp/
1_mdp/
2_system/
Run test suite:
pytest -qMartiniSurf interfaces with external scientific tools and libraries that keep their original licenses. You are responsible for complying with licenses of dependencies and external binaries in your environment.
