Proto is not affiliated with Arc Institute. This toolkit is open source and builds on the implementation produced by this organization. Product names, logos, and trademarks are the property of their respective owners.
Background
Germinal produces epitope-targeted antibody binders computationally from a target structure and an epitope definition, an alternative to animal- or library-based discovery such as immunization, phage display, and hybridoma screening. The Germinal publication reports experimental binding success rates of 4 to 22 percent across the benchmarks it evaluates. Germinal combines ColabDesign with AlphaFold2-Multimer hallucination, antibody language-model gradients (IgLM, AbLang), AbMPNN sequence redesign (Dreyer et al., 2023), and structure validation against Chai-1, AlphaFold3, or Protenix, followed by PyRosetta interface scoring and a multi-stage filter cascade. Relative to earlier antibody hallucination methods, Germinal additionally applies epitope-hotspot conditioning (the optimization is constrained so the binder contacts the user-specified residues), antibody language-model guidance (biasing designs toward sequences resembling natural antibodies), an early filtering stage that discards weak candidate designs before the computationally expensive structure-prediction step, and a structure-validation model that is independent of the model used during hallucination.Tools
Germinal Antibody Design (germinal-design)
Runs one complete Germinal antibody-design campaign against a single target. Given a target PDB, a target chain, and the epitope hotspot residues, it runs a fixed (version-pinned) copy of the upstream run_germinal.py script, repeating hallucination, then AbMPNN redesign, then structure validation and filtering until either max_trajectories or max_passing_designs is reached, and returns ranked designs with predicted complex structures and per-design metrics (interface pTM, pAE, pDockQ2, pLDDT, and others). Upstream configuration defaults are preserved exactly; the only change is setting the structure-validation model (structure_model) to Chai-1, because Chai-1 installs automatically.API Reference
Input: GerminalInput
Input: GerminalInput
Structure object, or a dict in the shape produced by Structure.model_dump(mode='json'). Must include a chain matching target_chain."A") or comma-separated for multi-chain targets (e.g. "A,B")."B" (matches Germinal’s source convention in configs/target/pdl1.yaml)."<chain_letter><resnum>" format (e.g. ["A37", "A39", "A41"]). These are the residues the designed binder is forced to contact.target=<name> selector and as a prefix in output filenames. If None, the inference layer derives one from a hash of the PDB content."W40") used as the Chai-1 contact-restraint anchor. Mirrors Germinal’s hotspot_residue field in configs/target/*.yaml.Config: GerminalConfig
Config: GerminalConfig
vhh, scfv"chai" (auto-installed); "af3" and "protenix" require user-provisioned weights/env (see README → Backend Configuration).Available options: chai, af3, protenixexternal_plddt (VHH: > 0.87, scFv: > 0.85). Distinct from upstream’s in-loop plddt_threshold save filter — use germinal_overrides.external_iptm (preset: > 0.74).external_pae in Å (VHH: < 7.5, scFv: < 8).external_ptm (preset: > 0.84).pdockq2 (preset: > 0.23).run_germinal.py (e.g. {"logits_steps": 100, "weights_iptm": 1.0}). Applied verbatim as <key>=<value> CLI args.{"initial" | "final": {<filter_name>: {"value": <v>, "operator": <op>}}}. Merged on top of the design_type preset.True is coerced to 1 and False to 0."cuda"; CPU is not supported by the upstream pipeline.None waits indefinitely.BaseToolOutput.approx_equal), and the seed participates in cache keys. When None, cacheable seed-sensitive tools skip cache until seeded.Output: GerminalOutput
Output: GerminalOutput
accepted, redesign_candidate, and trajectory stages.failure_counts.csv (trajectories attempted, designs accepted, and per-filter failure counts).| Metric | Type | Range | Availability |
|---|---|---|---|
plddt | float | 0.0 to 1.0 | always |
ptm | float | 0.0 to 1.0 | always |
i_ptm | float | 0.0 to 1.0 | always |
i_pae | float | ≥ 0.0 | always |
pae | float | ≥ 0.0 | always |
loss | float | unbounded | always |
lm_ll | float | unbounded | always |
helix | float | unbounded | always |
beta_strand | float | unbounded | always |
clashes | int | ≥ 0.0 | after filtering |
sc_rmsd | float | ≥ 0.0 | after filtering |
binder_near_hotspot | bool | unbounded | after filtering |
cdr3_hotspot_contacts | int | ≥ 0.0 | after filtering |
percent_interface_cdr | float | 0.0 to 1.0 | after filtering |
interface_shape_comp | float | 0.0 to 1.0 | after filtering |
interface_hbonds | int | ≥ 0.0 | after filtering |
surface_hydrophobicity | float | 0.0 to 1.0 | after filtering |
interface_hydrophobicity | float | ≥ 0.0 | after filtering |
pdockq2 | float | 0.0 to 1.0 | after filtering |
external_plddt | float | 0.0 to 1.0 | after validation |
external_iptm | float | 0.0 to 1.0 | after validation |
external_ptm | float | 0.0 to 1.0 | after validation |
external_pae | float | ≥ 0.0 | after validation |
external_i_pae | float | ≥ 0.0 | after validation |
external_i_plddt | float | 0.0 to 1.0 | after validation |
external_plddt_binder | float | 0.0 to 1.0 | after validation |
external_chain_ptm | float | 0.0 to 1.0 | after validation |
external_binder_pae | float | ≥ 0.0 | after validation |
external_aggregate_score | float | unbounded | after validation |
ipsae | float | 0.0 to 1.0 | after validation |
ipsae_pdockq2 | float | 0.0 to 1.0 | after validation |
lis_lis | float | unbounded | after validation |
lis_lia | float | unbounded | after validation |
binder_score | float | unbounded | after filtering |
interface_packstat | float | 0.0 to 1.0 | after filtering |
interface_dG | float | unbounded | after filtering |
interface_dSASA | float | ≥ 0.0 | after filtering |
interface_dG_SASA_ratio | float | unbounded | after filtering |
interface_fraction | float | 0.0 to 1.0 | after filtering |
interface_nres | int | ≥ 0.0 | after filtering |
interface_hbond_percentage | float | 0.0 to 1.0 | after filtering |
interface_delta_unsat_hbonds | int | ≥ 0.0 | after filtering |
interface_delta_unsat_hbonds_percentage | float | 0.0 to 1.0 | after filtering |
clashes_unrelaxed | int | ≥ 0.0 | after filtering |
hydrophobic_patches_binder | int | ≥ 0.0 | after filtering |
hydrophobic_patches_struct | int | ≥ 0.0 | after filtering |
sap_score | float | unbounded | after filtering |
cdr_sap | float | unbounded | after filtering |
cdr_hotspot_contacts | int | ≥ 0.0 | after filtering |
percent_interface_cdr3 | float | 0.0 to 1.0 | after filtering |
alpha_interface | float | 0.0 to 1.0 | after filtering |
beta_interface | float | 0.0 to 1.0 | after filtering |
loops_interface | float | 0.0 to 1.0 | after filtering |
alpha_all | float | 0.0 to 1.0 | after filtering |
beta_all | float | 0.0 to 1.0 | after filtering |
loops_all | float | 0.0 to 1.0 | after filtering |
n_framework_mutations | int | ≥ 0.0 | after filtering |
Applications
This tool performs de novo therapeutic antibody discovery: generating epitope-targeted VHH or scFv binders against a chosen target. It requires only a target structure and an epitope definition, and produces a ranked set of designs with predicted complex structures and per-design quality metrics, ready for selection and experimental testing.Usage Tips
design_typeselects the run preset."vhh"(single-domain nanobody, the default) or"scfv"; each loads the upstream preset with different filter thresholds, so leave the*_thresholdfields set toNoneto let the correct preset apply.- Reduce
max_trajectorieswhen testing. The upstream default of10000corresponds to a run that takes hours to days; use a small value while testing, and setmax_passing_designsbelowmax_trajectoriesto stop early once enough designs pass the filters. structure_modelselects the structure-validation model. Validation uses a model independent of the hallucination step. The published filter thresholds were calibrated against AlphaFold3, so acceptance rates may differ under the"chai"default and the*_thresholdfields may need adjusting to match the reported rates.germinal_overridespasses additional settings to the underlying pipeline. Any upstream configuration option that is not exposed as a dedicated field can be supplied here as a<key>=<value>pair.
Toolkit Notes
These apply to every Germinal tool in this toolkit (germinal-design).
- Requires a GPU and can run for a long time. An NVIDIA GPU with at least 40 GB of GPU memory is required (at least 80 GB for scFv mode or targets longer than 250 residues); running on CPU is not supported. A full run with default settings takes hours to days, so reduce
max_trajectorieswhen testing. - Structure-validation model setup varies.
structure_model="chai"needs no manual setup."af3"requires AlphaFold3 weights that you must request and install yourself (access is restricted; request it through DeepMind’s form) along with a container image."protenix"requires a separate Protenix environment. - Bundled dependencies carry their own licenses. The pipeline requires PyRosetta (academic, non-profit, and government use is governed by the University of Washington CoMotion license; commercial use requires a separate license; redistribution is not permitted; consult the current PyRosetta licensing page for terms and availability) and IgLM (academic, non-commercial use only); Chai-1 is Apache-2.0 and AbLang2 is BSD-3-Clause. See the License note above and the linked terms.
- One campaign per call. Each call is a single complete run against one target. To screen several targets, call the tool once per target (for example, in a loop) rather than expecting one call to process multiple targets at once.

Arc Institute