{
"fields": [
{
"name": "job_name",
"label": "Job name",
"default": "ligandmpnn-demo",
"kind": "text",
"help": "A label for this run and its results.",
"group": "Inputs",
"task": "",
"required": false,
"options": [],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "pdb_path",
"label": "Structure (PDB)",
"default": "",
"kind": "file",
"help": "Upload a protein or protein–ligand PDB, or choose a bundled official example. Required unless multiple structures are supplied.",
"group": "Inputs",
"task": "",
"required": false,
"options": [],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ".pdb,.ent",
"help_note": "PDB contents are mapped to --pdb_path. Preserve HETATM records for ligand, nucleotide and metal context. This upstream parser reads PDB, not mmCIF."
},
{
"name": "pdb_path_multi",
"label": "Multiple structures (JSON)",
"default": "",
"kind": "textarea",
"help": "Object mapping unique names to PDB contents or bundled references. Leave the single-structure field blank.",
"group": "Inputs",
"task": "",
"required": false,
"options": [],
"rows": 3,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": "",
"help_note": "Example: {\"first\": \"bio-tools://ligandmpnn/inputs/1BC8.pdb\", \"second\": \"bio-tools://ligandmpnn/inputs/4GYT.pdb\"}. The service creates a native --pdb_path_multi file with job-local paths; server paths are not accepted."
},
{
"name": "chains_to_design",
"label": "Chains to design or score",
"default": "",
"kind": "text",
"help": "Comma-separated chain IDs, e.g. A,B. Other chains remain fixed context. Blank selects all parsed protein chains.",
"group": "Inputs",
"task": "",
"required": false,
"options": [],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "parse_these_chains_only",
"label": "Parse only these chains",
"default": "",
"kind": "text",
"help": "Comma-separated chain IDs. Excludes every other chain, including its ligand atoms, from parsing and output; blank keeps all chains.",
"group": "Inputs",
"task": "",
"required": false,
"options": [],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "parse_atoms_with_zero_occupancy",
"label": "Include atoms with zero occupancy",
"default": false,
"kind": "checkbox",
"help": "Upstream normally discards atoms whose occupancy is zero.",
"group": "Inputs",
"task": "",
"required": false,
"options": [],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "model_type",
"label": "Model",
"default": "protein_mpnn",
"kind": "select",
"help": "The upstream default is ProteinMPNN. Select LigandMPNN to condition sequence design or scoring on non-protein atoms.",
"group": "Model",
"task": "",
"required": false,
"options": [
{
"value": "protein_mpnn",
"label": "ProteinMPNN"
},
{
"value": "ligand_mpnn",
"label": "LigandMPNN"
},
{
"value": "soluble_mpnn",
"label": "SolubleMPNN"
},
{
"value": "per_residue_label_membrane_mpnn",
"label": "Membrane: per-residue labels"
},
{
"value": "global_label_membrane_mpnn",
"label": "Membrane: global label"
}
],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "checkpoint_protein_mpnn",
"label": "ProteinMPNN checkpoint",
"default": "proteinmpnn_v_48_020.pt",
"kind": "select",
"help": "Official checkpoint filename in the configured model directory. Noise is the training backbone noise in angstroms.",
"group": "Model",
"task": "",
"required": false,
"options": [
{
"value": "proteinmpnn_v_48_002.pt",
"label": "0.02 Å — proteinmpnn_v_48_002.pt"
},
{
"value": "proteinmpnn_v_48_010.pt",
"label": "0.10 Å — proteinmpnn_v_48_010.pt"
},
{
"value": "proteinmpnn_v_48_020.pt",
"label": "0.20 Å — proteinmpnn_v_48_020.pt"
},
{
"value": "proteinmpnn_v_48_030.pt",
"label": "0.30 Å — proteinmpnn_v_48_030.pt"
}
],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "checkpoint_ligand_mpnn",
"label": "LigandMPNN checkpoint",
"default": "ligandmpnn_v_32_010_25.pt",
"kind": "select",
"help": "Official checkpoint filename in the configured model directory. Noise is the training backbone noise in angstroms.",
"group": "Model",
"task": "",
"required": false,
"options": [
{
"value": "ligandmpnn_v_32_005_25.pt",
"label": "0.05 Å — ligandmpnn_v_32_005_25.pt"
},
{
"value": "ligandmpnn_v_32_010_25.pt",
"label": "0.10 Å — ligandmpnn_v_32_010_25.pt"
},
{
"value": "ligandmpnn_v_32_020_25.pt",
"label": "0.20 Å — ligandmpnn_v_32_020_25.pt"
},
{
"value": "ligandmpnn_v_32_030_25.pt",
"label": "0.30 Å — ligandmpnn_v_32_030_25.pt"
}
],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "checkpoint_soluble_mpnn",
"label": "SolubleMPNN checkpoint",
"default": "solublempnn_v_48_020.pt",
"kind": "select",
"help": "Official checkpoint filename in the configured model directory. Noise is the training backbone noise in angstroms.",
"group": "Model",
"task": "",
"required": false,
"options": [
{
"value": "solublempnn_v_48_002.pt",
"label": "0.02 Å — solublempnn_v_48_002.pt"
},
{
"value": "solublempnn_v_48_010.pt",
"label": "0.10 Å — solublempnn_v_48_010.pt"
},
{
"value": "solublempnn_v_48_020.pt",
"label": "0.20 Å — solublempnn_v_48_020.pt"
},
{
"value": "solublempnn_v_48_030.pt",
"label": "0.30 Å — solublempnn_v_48_030.pt"
}
],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "checkpoint_per_residue_label_membrane_mpnn",
"label": "Membrane: per-residue labels checkpoint",
"default": "per_residue_label_membrane_mpnn_v_48_020.pt",
"kind": "select",
"help": "Official checkpoint filename in the configured model directory. Noise is the training backbone noise in angstroms.",
"group": "Model",
"task": "",
"required": false,
"options": [
{
"value": "per_residue_label_membrane_mpnn_v_48_020.pt",
"label": "0.20 Å — per_residue_label_membrane_mpnn_v_48_020.pt"
}
],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "checkpoint_global_label_membrane_mpnn",
"label": "Membrane: global label checkpoint",
"default": "global_label_membrane_mpnn_v_48_020.pt",
"kind": "select",
"help": "Official checkpoint filename in the configured model directory. Noise is the training backbone noise in angstroms.",
"group": "Model",
"task": "",
"required": false,
"options": [
{
"value": "global_label_membrane_mpnn_v_48_020.pt",
"label": "0.20 Å — global_label_membrane_mpnn_v_48_020.pt"
}
],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "batch_size",
"label": "Batch size",
"default": 1,
"kind": "number",
"help": "Samples evaluated together; reduce to 1 for a small CPU run.",
"group": "Sampling and scoring",
"task": "",
"required": false,
"options": [],
"rows": null,
"minimum": 1,
"maximum": 1000,
"step": 1,
"maxlength": null,
"accept": ""
},
{
"name": "number_of_batches",
"label": "Number of batches",
"default": 1,
"kind": "number",
"help": "Total samples = batch size × number of batches. For scoring, upstream recommends at least 10 batches to average decoding-order effects.",
"group": "Sampling and scoring",
"task": "",
"required": false,
"options": [],
"rows": null,
"minimum": 1,
"maximum": 100,
"step": 1,
"maxlength": null,
"accept": ""
},
{
"name": "temperature",
"label": "Sampling temperature",
"default": 0.1,
"kind": "number",
"help": "Positive temperature; higher values give more sequence diversity.",
"group": "Sampling and scoring",
"task": "design",
"required": false,
"options": [],
"rows": null,
"minimum": 1e-06,
"maximum": null,
"step": "any",
"maxlength": null,
"accept": ""
},
{
"name": "seed",
"label": "Random seed",
"default": 0,
"kind": "number",
"help": "Zero chooses a random seed. A nonzero seed is reproducible within the same runtime.",
"group": "Sampling and scoring",
"task": "",
"required": false,
"options": [],
"rows": null,
"minimum": 0,
"maximum": 2147483647,
"step": 1,
"maxlength": null,
"accept": ""
},
{
"name": "use_sequence",
"label": "Condition scores on sequence",
"default": true,
"kind": "checkbox",
"help": "Use the sequence in the PDB as well as the backbone. Disable for backbone-only probabilities. Scoring writes a .pt dictionary of per-residue probabilities and statistics.",
"group": "Sampling and scoring",
"task": "autoregressive_score,single_aa_score",
"required": false,
"options": [],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "fixed_residues",
"label": "Fixed residues",
"default": "",
"kind": "text",
"help": "Space-separated PDB residue IDs, e.g. C1 C2 C3. These residues retain their input amino acids.",
"group": "Residue constraints",
"task": "",
"required": false,
"options": [],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": "",
"help_note": "Uses chain + author residue number + optional insertion code, e.g. B82A. Unlike original ProteinMPNN, numbering gaps are not filled with X."
},
{
"name": "fixed_residues_multi",
"label": "Fixed residues per structure (JSON)",
"default": "",
"kind": "textarea",
"help": "Object keyed by the names in pdb_path_multi, with a space-separated residue list per structure. Overrides the common list for that structure.",
"group": "Residue constraints",
"task": "",
"required": false,
"options": [],
"rows": 3,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "redesigned_residues",
"label": "Redesign only these residues",
"default": "",
"kind": "text",
"help": "Space-separated PDB residue IDs; every other residue is fixed. Choose this or fixed_residues.",
"group": "Residue constraints",
"task": "",
"required": false,
"options": [],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": "",
"help_note": "Uses chain + author residue number + optional insertion code, e.g. B82A. Unlike original ProteinMPNN, numbering gaps are not filled with X."
},
{
"name": "redesigned_residues_multi",
"label": "Redesign only these residues per structure (JSON)",
"default": "",
"kind": "textarea",
"help": "Object keyed by the names in pdb_path_multi, with a space-separated residue list per structure. Overrides the common list for that structure.",
"group": "Residue constraints",
"task": "",
"required": false,
"options": [],
"rows": 3,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "symmetry_residues",
"label": "Tied residue groups",
"default": "",
"kind": "text",
"help": "Comma-separated residues within each group, | between groups: C1,C2,C3|C4,C5|C6,C7. Groups cannot overlap.",
"group": "Residue constraints",
"task": "",
"required": false,
"options": [],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "symmetry_weights",
"label": "Tied residue weights",
"default": "",
"kind": "text",
"help": "Matching weights for every group: 0.33,0.33,0.33|0.5,0.5|0.5,0.5. Required with explicit design symmetry; finite negative weights are supported.",
"group": "Residue constraints",
"task": "design",
"required": false,
"options": [],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "homo_oligomer",
"label": "Tie all parsed protein chains",
"default": false,
"kind": "checkbox",
"help": "Upstream ties matching PDB residue numbers and insertion codes across ALL parsed chains with equal weights. Chains must have identical residue IDs. Use parse-only chains to restrict the assembly.",
"group": "Residue constraints",
"task": "",
"required": false,
"options": [],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "bias_AA",
"label": "Global amino-acid bias",
"default": "",
"kind": "text",
"help": "Comma-separated AA:value pairs, e.g. W:3.0,P:3.0,C:3.0,A:-3.0. Positive values favor an amino acid.",
"group": "Sequence preferences",
"task": "design",
"required": false,
"options": [],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "omit_AA",
"label": "Globally omitted amino acids",
"default": "",
"kind": "text",
"help": "One-letter codes to exclude, e.g. CDFGHILMNPQRSTVWY leaves A, E and K. LigandMPNN samples the 20 standard amino acids.",
"group": "Sequence preferences",
"task": "design",
"required": false,
"options": [],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "bias_AA_per_residue",
"label": "Per-residue amino-acid bias",
"default": "",
"kind": "textarea",
"help": "JSON keyed by PDB residue IDs, e.g. {\"C1\": {\"G\": -0.3, \"P\": 10.8}}.",
"group": "Sequence preferences",
"task": "design",
"required": false,
"options": [],
"rows": 3,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "bias_AA_per_residue_multi",
"label": "Per-residue amino-acid bias per structure",
"default": "",
"kind": "textarea",
"help": "JSON keyed by pdb_path_multi names; each value is a per-residue object. Overrides common guidance for that structure.",
"group": "Sequence preferences",
"task": "design",
"required": false,
"options": [],
"rows": 3,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "omit_AA_per_residue",
"label": "Per-residue amino-acid exclusions",
"default": "",
"kind": "textarea",
"help": "JSON keyed by PDB residue IDs, e.g. {\"C1\": \"ACDEFGHIKLMNPQRSTVW\"} leaves Y at C1.",
"group": "Sequence preferences",
"task": "design",
"required": false,
"options": [],
"rows": 3,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "omit_AA_per_residue_multi",
"label": "Per-residue amino-acid exclusions per structure",
"default": "",
"kind": "textarea",
"help": "JSON keyed by pdb_path_multi names; each value is a per-residue object. Overrides common guidance for that structure.",
"group": "Sequence preferences",
"task": "design",
"required": false,
"options": [],
"rows": 3,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "ligand_mpnn_use_atom_context",
"label": "Use ligand atom context",
"default": true,
"kind": "checkbox",
"help": "LigandMPNN only: condition on nearby non-protein atoms, including small molecules, nucleotides and metals.",
"group": "Atomic and membrane context",
"task": "",
"required": false,
"options": [],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "ligand_mpnn_use_side_chain_context",
"label": "Use fixed side chains as context",
"default": false,
"kind": "checkbox",
"help": "LigandMPNN only: use side-chain atoms of fixed residues as additional context.",
"group": "Atomic and membrane context",
"task": "",
"required": false,
"options": [],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "ligand_mpnn_cutoff_for_score",
"label": "Ligand score cutoff (Ã…)",
"default": 8.0,
"kind": "number",
"help": "Selects residues near context atoms for the reported ligand confidence. It does not set the model’s atom-context neighborhood.",
"group": "Atomic and membrane context",
"task": "",
"required": false,
"options": [],
"rows": null,
"minimum": 1e-06,
"maximum": null,
"step": "any",
"maxlength": null,
"accept": ""
},
{
"name": "transmembrane_buried",
"label": "Buried membrane residues",
"default": "",
"kind": "text",
"help": "Per-residue membrane model only: space-separated PDB residue IDs, e.g. C1 C2 C3 C11. Class 2 (hydrophobic).",
"group": "Atomic and membrane context",
"task": "",
"required": false,
"options": [],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "transmembrane_interface",
"label": "Membrane interface residues",
"default": "",
"kind": "text",
"help": "Per-residue membrane model only: e.g. C4 C5 C6 C22. Class 1 (polar); unlisted residues are class 0. Lists must not overlap.",
"group": "Atomic and membrane context",
"task": "",
"required": false,
"options": [],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "global_transmembrane_label",
"label": "Global membrane label",
"default": "0",
"kind": "select",
"help": "Global membrane model only: 0 = soluble, 1 = transmembrane.",
"group": "Atomic and membrane context",
"task": "",
"required": false,
"options": [
{
"value": "0",
"label": "Soluble"
},
{
"value": "1",
"label": "Transmembrane"
}
],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "pack_side_chains",
"label": "Pack designed side chains",
"default": false,
"kind": "checkbox",
"help": "Run the official side-chain packing model after sequence design.",
"group": "Side-chain packing",
"task": "design",
"required": false,
"options": [],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "number_of_packs_per_design",
"label": "Packs per sequence",
"default": 4,
"kind": "number",
"help": "Independent packed structures per generated sequence. Use 1 for one pack; upstream run.py produces no packed files at 0 despite the README’s fast-example text.",
"group": "Side-chain packing",
"task": "design",
"required": false,
"options": [],
"rows": null,
"minimum": 1,
"maximum": 32,
"step": 1,
"maxlength": null,
"accept": ""
},
{
"name": "sc_num_denoising_steps",
"label": "Packing denoising steps",
"default": 3,
"kind": "number",
"help": "Number of recycling/denoising steps per pack.",
"group": "Side-chain packing",
"task": "design",
"required": false,
"options": [],
"rows": null,
"minimum": 1,
"maximum": 100,
"step": 1,
"maxlength": null,
"accept": ""
},
{
"name": "sc_num_samples",
"label": "Packing mixture samples",
"default": 16,
"kind": "number",
"help": "Samples drawn from each mixture distribution; the highest-likelihood sample is used.",
"group": "Side-chain packing",
"task": "design",
"required": false,
"options": [],
"rows": null,
"minimum": 1,
"maximum": 1000,
"step": 1,
"maxlength": null,
"accept": ""
},
{
"name": "pack_with_ligand_context",
"label": "Pack with ligand context",
"default": true,
"kind": "checkbox",
"help": "Consider ligand, DNA and other context atoms during packing.",
"group": "Side-chain packing",
"task": "design",
"required": false,
"options": [],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "repack_everything",
"label": "Repack fixed residues too",
"default": false,
"kind": "checkbox",
"help": "Off preserves side chains at fixed positions and uses them as packing context.",
"group": "Side-chain packing",
"task": "design",
"required": false,
"options": [],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "force_hetatm",
"label": "Write packed context atoms as HETATM",
"default": false,
"kind": "checkbox",
"help": "Force context atoms in packed output PDBs to use HETATM records.",
"group": "Side-chain packing",
"task": "design",
"required": false,
"options": [],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "packed_suffix",
"label": "Packed PDB suffix",
"default": "_packed",
"kind": "text",
"help": "Suffix appended to packed PDB filenames; letters, digits, underscores, dots and hyphens only.",
"group": "Side-chain packing",
"task": "design",
"required": false,
"options": [],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "save_stats",
"label": "Save design statistics",
"default": false,
"kind": "checkbox",
"help": "Write .pt statistics including sequences, probabilities, decoding order, masks, seed and temperature.",
"group": "Output",
"task": "design",
"required": false,
"options": [],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "fasta_seq_separation",
"label": "FASTA chain separator",
"default": ":",
"kind": "text",
"help": "Separator between chains in output FASTA. PDB output preserves chain IDs and residue numbering.",
"group": "Output",
"task": "design",
"required": false,
"options": [],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": 10,
"accept": ""
},
{
"name": "file_ending",
"label": "Output filename ending",
"default": "",
"kind": "text",
"help": "Optional ending such as _xyz; letters, digits, underscores, dots and hyphens only.",
"group": "Output",
"task": "",
"required": false,
"options": [],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "zero_indexed",
"label": "Number output designs from zero",
"default": false,
"kind": "checkbox",
"help": "Start designed PDB file numbering at 0 instead of 1.",
"group": "Output",
"task": "design",
"required": false,
"options": [],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
},
{
"name": "verbose",
"label": "Print progress",
"default": true,
"kind": "checkbox",
"help": "Include upstream progress messages in the run log.",
"group": "Output",
"task": "",
"required": false,
"options": [],
"rows": null,
"minimum": null,
"maximum": null,
"step": null,
"maxlength": null,
"accept": ""
}
],
"tasks": [
{
"value": "design",
"label": "Design sequences"
},
{
"value": "autoregressive_score",
"label": "Autoregressive scores"
},
{
"value": "single_aa_score",
"label": "Single-residue scores"
}
],
"task_group": "Inputs",
"field_groups": [
{
"label": "Inputs",
"docs_url": "https://github.com/dauparas/LigandMPNN/blob/26ec57ac976ade5379920dbd43c7f97a91cf82de/README.md#design-examples"
},
{
"label": "Model",
"docs_url": "https://github.com/dauparas/LigandMPNN/blob/26ec57ac976ade5379920dbd43c7f97a91cf82de/README.md#available-models"
},
{
"label": "Sampling and scoring",
"docs_url": "https://github.com/dauparas/LigandMPNN/blob/26ec57ac976ade5379920dbd43c7f97a91cf82de/README.md#scoring-examples"
},
{
"label": "Residue constraints",
"docs_url": "https://github.com/dauparas/LigandMPNN/blob/26ec57ac976ade5379920dbd43c7f97a91cf82de/README.md#design-examples"
},
{
"label": "Sequence preferences",
"docs_url": "https://github.com/dauparas/LigandMPNN/blob/26ec57ac976ade5379920dbd43c7f97a91cf82de/README.md#design-examples"
},
{
"label": "Atomic and membrane context",
"docs_url": "https://github.com/dauparas/LigandMPNN/blob/26ec57ac976ade5379920dbd43c7f97a91cf82de/README.md#design-examples"
},
{
"label": "Side-chain packing",
"docs_url": "https://github.com/dauparas/LigandMPNN/blob/26ec57ac976ade5379920dbd43c7f97a91cf82de/README.md#side-chain-packing-examples"
},
{
"label": "Output",
"docs_url": "https://github.com/dauparas/LigandMPNN/blob/26ec57ac976ade5379920dbd43c7f97a91cf82de/README.md#design-examples"
}
]
}