Skill Tracer
Skills › Scientific Agent Skills › tamarind › examples.md

examples.md

119 lines · skills/tamarind/references/examples.md at 5f2bc03

Open on GitHub
1# Tamarind Bio illustrative settings and output interpretation
2
3Reviewed **2026-09-30** using the [live public catalog](https://app.tamarind.bio/tools.json),
4[REST contract](https://app.tamarind.bio/api/openapi.json), and tool documentation.
5These examples are **not authenticated `validate-job` results**. Replace file
6placeholders, read `GET /tools/{name}/schema`, then validate each settings object
7before a compute submission. Historical exact error messages are not a contract.
8

Tamarind Bio illustrative settings and output interpretation

Reviewed 2026-09-30 using the live public catalog, REST contract, and tool documentation. These examples are **not authenticated validate-job results**. Replace file placeholders, read GET /tools/{name}/schema, then validate each settings object before a compute submission. Historical exact error messages are not a contract.

Raw lines 1 to 8
9## Authentication and discovery check
11This read-only check does not submit jobs. Supply the user's deployment and key:
13```python
14import os
15import requests
17base = os.environ.get("TAMARIND_BASE_URL", "https://app.tamarind.bio/api").rstrip("/")
18headers = {"x-api-key": os.environ["TAMARIND_API_KEY"]}
19response = requests.get(f"{base}/tools", headers=headers, timeout=(10, 60))
20response.raise_for_status()
21tools = response.json()
22assert isinstance(tools, list)
23print("[OK] Account tool catalog returned", len(tools), "entries")
24```
26To check a payload next, use `/validate-job` as shown in [workflows](workflows.md).
27That call requires authentication even though it does not spend a compute job.

Authentication and discovery check

This read-only check does not submit jobs. Supply the user's deployment and key:

import os
import requests

base = os.environ.get("TAMARIND_BASE_URL", "https://app.tamarind.bio/api").rstrip("/")
headers = {"x-api-key": os.environ["TAMARIND_API_KEY"]}
response = requests.get(f"{base}/tools", headers=headers, timeout=(10, 60))
response.raise_for_status()
tools = response.json()
assert isinstance(tools, list)
print("[OK] Account tool catalog returned", len(tools), "entries")

To check a payload next, use /validate-job as shown in workflows. That call requires authentication even though it does not spend a compute job.

Raw lines 9 to 28
29## AlphaFold monomer and multimer
31`sequence` is the public catalog's required setting for `alphafold`:
33```json
34{"sequence": "MQIFVKTLTGKTITLEVEPSDTIENVKAKIQDKEGIPPDQQRLIFAGKQLEDGRTLSDYNIQKESTLHLVLRLRGG"}
35```
37For a homodimer, this illustrative short sequence pair shows colon separation:
39```json
40{"sequence": "MKTAYIAKQRQISFVKSHFSRQLEERLGLIE:MKTAYIAKQRQISFVKSHFSRQLEERLGLIE"}
41```
43It does not establish that these chains interact. Read optional model-count,
44recycle, MSA, and template fields from the account schema instead of assuming
45string versus numeric representations or defaults.

AlphaFold monomer and multimer

sequence is the public catalog's required setting for alphafold:

{"sequence": "MQIFVKTLTGKTITLEVEPSDTIENVKAKIQDKEGIPPDQQRLIFAGKQLEDGRTLSDYNIQKESTLHLVLRLRGG"}

For a homodimer, this illustrative short sequence pair shows colon separation:

{"sequence": "MKTAYIAKQRQISFVKSHFSRQLEERLGLIE:MKTAYIAKQRQISFVKSHFSRQLEERLGLIE"}

It does not establish that these chains interact. Read optional model-count, recycle, MSA, and template fields from the account schema instead of assuming string versus numeric representations or defaults.

Raw lines 29 to 46
47## Boltz and Chai sequence modes
49```json
50{"inputFormat": "sequence", "sequence": "MKTAYIAKQRQISFVKSHFSRQLEERLGLIEVQAPILSRVGDGTQDNLSGAEKAVQVKVKALP"}
51```
53The current public catalog makes `inputFormat` **optional with default
54`"sequence"`** for both tools. Boltz advertises `sequence`, `list`, `molecules`,
55and `yaml`; Chai advertises `sequence`, `molecules`, and `list` (no YAML mode in
56this catalog). Set a mode explicitly when useful, then supply its conditional
57fields. Do not claim that omitting `inputFormat` universally fails validation.

Boltz and Chai sequence modes

{"inputFormat": "sequence", "sequence": "MKTAYIAKQRQISFVKSHFSRQLEERLGLIEVQAPILSRVGDGTQDNLSGAEKAVQVKVKALP"}

The current public catalog makes inputFormat **optional with default "sequence"** for both tools. Boltz advertises sequence, list, molecules, and yaml; Chai advertises sequence, molecules, and list (no YAML mode in this catalog). Set a mode explicitly when useful, then supply its conditional fields. Do not claim that omitting inputFormat universally fails validation.

Raw lines 47 to 58
59## DiffDock with a SMILES ligand
61```json
62{"proteinFile": "target.pdb", "ligandFormat": "SMILES",
63 "ligandSmiles": "CC(=O)Oc1ccccc1C(=O)O"}
64```
66Upload an actual target first. The current `proteinFile` declaration accepts PDB
67and CIF extensions. `ligandFormat` defaults to `"sdf/mol2 file"`; set `"SMILES"`
68to activate `ligandSmiles`. The file branch uses `ligandFile` with SDF/MOL2.

DiffDock with a SMILES ligand

{"proteinFile": "target.pdb", "ligandFormat": "SMILES",
 "ligandSmiles": "CC(=O)Oc1ccccc1C(=O)O"}

Upload an actual target first. The current proteinFile declaration accepts PDB and CIF extensions. ligandFormat defaults to "sdf/mol2 file"; set "SMILES" to activate ligandSmiles. The file branch uses ligandFile with SDF/MOL2.

Raw lines 59 to 69
70## AutoDock Vina with a SMILES ligand
72```json
73{"receptorFile": "receptor.pdb", "ligandFormat": "smiles",
74 "ligandSmiles": "CC(=O)Oc1ccccc1C(=O)O"}
75```
77This is the **catalog-backed minimum branch**, not a complete scientific docking
78protocol. Vina uses `receptorFile`, accepts PDB/CIF, and its `ligandFormat` values
79are lowercase `"sdf"`/`"smiles"` with default `"sdf"`. Determine a meaningful
80search box from the receptor/pocket and read its current fields, units, and
81sampling settings from the full account schema. The public required-settings
82catalog does not verify optional box parameter names or their defaults; do not
83reuse coordinates from an unrelated target or claim arbitrary example coordinates
84are required API settings.

AutoDock Vina with a SMILES ligand

{"receptorFile": "receptor.pdb", "ligandFormat": "smiles",
 "ligandSmiles": "CC(=O)Oc1ccccc1C(=O)O"}

This is the catalog-backed minimum branch, not a complete scientific docking protocol. Vina uses receptorFile, accepts PDB/CIF, and its ligandFormat values are lowercase "sdf"/"smiles" with default "sdf". Determine a meaningful search box from the receptor/pocket and read its current fields, units, and sampling settings from the full account schema. The public required-settings catalog does not verify optional box parameter names or their defaults; do not reuse coordinates from an unrelated target or claim arbitrary example coordinates are required API settings.

Raw lines 70 to 85
86## ProteinMPNN inverse folding
88```json
89{"pdbFile": "backbone.pdb", "designedResidues": {"A": "1 2 3 4 5"}}
90```
92The selected residues must exist on chain A of the uploaded structure. The
93catalog currently declares PDB/CIF input and a space-separated residue-list
94representation. Its empty-map default does not justify assuming which chains or
95residues will be redesigned. Inspect the full schema to choose a model variant,
96sample count, and explicit design region, then validate. Fold generated sequences
97through the folding tool's `sequence` field, not a template parameter.

ProteinMPNN inverse folding

{"pdbFile": "backbone.pdb", "designedResidues": {"A": "1 2 3 4 5"}}

The selected residues must exist on chain A of the uploaded structure. The catalog currently declares PDB/CIF input and a space-separated residue-list representation. Its empty-map default does not justify assuming which chains or residues will be redesigned. Inspect the full schema to choose a model variant, sample count, and explicit design region, then validate. Fold generated sequences through the folding tool's sequence field, not a template parameter.

Raw lines 86 to 98
99## Outputs and failure interpretation
101- `Score` is optional and can be JSON text, a number, or null; parse by actual
102 type. Metrics and output filenames depend on the tool/task/version.
103- `/tools` can expose `outputs.mainCSV`, task-specific `outputs.byTask`, column
104 metadata, and `filterMetrics`. Use these and the actual archive to find data;
105 do not assume every folder emits `rank_*.pdb` or every tool has pLDDT.
106- pLDDT, pTM, and interface confidence are model confidence estimates, not proof
107 of affinity, specificity, or experimental validation. Assess geometries and
108 chemical validity and compare only compatible metrics/scales.
109- `Complete` permits result retrieval but does not prove usable scientific
110 output. `Stopped`/`Failed` require log inspection (`fileName: "output.log"`).
111- `/result` 202 means archive preparation: wait and repeat retrieval. It is not
112 an instruction to run the scientific job again.
113- `/validate-job` success returns the normalized settings to submit. An unknown
114 key warning still needs correction; a typo in an optional field can otherwise
115 run with the wrong default.
116- Relative uploaded paths and `JobName/path/to/file.ext` references are distinct
117 from inline content. Avoid inventing storage keys or treating arbitrary text
118 as an existing file. Current documentation says redundant email prefixes are
119 stripped; older double-prefix errors are no longer universal.

Outputs and failure interpretation

  • Score is optional and can be JSON text, a number, or null; parse by actual type. Metrics and output filenames depend on the tool/task/version.
  • /tools can expose outputs.mainCSV, task-specific outputs.byTask, column metadata, and filterMetrics. Use these and the actual archive to find data; do not assume every folder emits rank_*.pdb or every tool has pLDDT.
  • pLDDT, pTM, and interface confidence are model confidence estimates, not proof of affinity, specificity, or experimental validation. Assess geometries and chemical validity and compare only compatible metrics/scales.
  • Complete permits result retrieval but does not prove usable scientific output. Stopped/Failed require log inspection (fileName: "output.log").
  • /result 202 means archive preparation: wait and repeat retrieval. It is not an instruction to run the scientific job again.
  • /validate-job success returns the normalized settings to submit. An unknown key warning still needs correction; a typo in an optional field can otherwise run with the wrong default.
  • Relative uploaded paths and JobName/path/to/file.ext references are distinct from inline content. Avoid inventing storage keys or treating arbitrary text as an existing file. Current documentation says redundant email prefixes are stripped; older double-prefix errors are no longer universal.
Raw lines 99 to 119