Tamarind Bio 是做什麼的?
Tamarind Bio 是一個雲端平台,可在受管理的 GPU 上執行計算生物學工具——結構預測、蛋白質與抗體設計、對接、結合親和力、多序列比對 (MSA) 生成以及分子動力學模擬。使用者提交序列或結構,即可獲得預測的結構、設計方案和生物物理學評分,無需自行配置硬體。它透過一個統一的作業 API,公開了數百種工具(AlphaFold、Boltz-2、Chai-1、RFdiffusion、ProteinMPNN、BoltzGen、ESMFold2、DiffDock、Autodock Vina 等)。
官方文件: app.tamarind.bio/api-docs · 平台 UI 位於 app.tamarind.bio
規範來源——請取得這些資料,不要依賴過時的副本
Tamarind 發布即時、機器可讀的來源。建議在執行時期取得這些資料,而非信任任何硬編碼的清單——工具名稱、架構和端點會頻繁變更:
https://app.tamarind.bio/llms.txt— LLM 索引:指向規格、API 文件和 MCP 指南的連結。https://app.tamarind.bio/openapi.yaml— 針對 8 個核心作業端點(submit-job/-batch、jobs、result、upload、files、delete-job/-file;認證方式為ApiKeyAuth)的 OpenAPI 3.0 規格。請取得它以了解確切的資料結構。探索/管理端點(/tools、/usage-statistics、pipeline…)並未包含在其中——請為此使用 MCP/REST 探索工具。https://docs.tamarind.bio/llms.txt— 文件索引;每個頁面都有.md格式(例如docs.tamarind.bio/tamarind/batch.md、/tamarind/api.md、/tamarind/pipelines.md)。- 即時工具探索 —
GET /tools(REST) 或 MCPgetAvailableTools+getJobSchema(jobType)是了解存在哪些工具及其參數的事實來源。
此技能教授表象 + 這些來源未說明的非顯著行為(請參閱參考檔案)。若對資料結構有疑問,請取得 openapi.yaml。
何時使用此技能
當使用者想要以下操作時,請使用 Tamarind:
- 預測結構 蛋白質、複合物或蛋白質-配體系統(AlphaFold、Boltz-2、Chai-1、ESMFold2、Chai/Boltz 共折疊)
- 設計蛋白質或結合劑(RFdiffusion、BoltzGen、BindCraft、ProteinMPNN/LigandMPNN 逆向折疊)
- 設計或表徵抗體/奈米抗體(序列生成、人源化、可開發性、免疫原性)
- 對接小分子 至蛋白質(DiffDock、Autodock Vina)或預測 結合親和力
- 生成 MSA 以供下游折疊使用
- 在受管理的 GPU 上執行分子動力學 或其他生物物理工作流程
- 批次篩選 許多序列或設計通過相同工具
- 將工具串聯成管道(例如,設計 → 折疊 → 評分),使用一個作業的輸出作為下一個作業的輸入
此技能是正確的選擇,當工作應在 Tamarind 的受管理雲端上執行,而非在本機安裝時。對於純本機的化學資訊學或一次性序列 I/O,請改用本機函式庫(RDKit、BioPython)。
存取與認證
- 在 app.tamarind.bio 登入,並從帳戶/API 設定中建立一個 API 金鑰。
- 使用
x-api-key標頭驗證每個 REST 請求。 - 切勿對金鑰進行硬編碼。 從
TAMARIND_API_KEY環境變數或.env檔案(使用python-dotenv)讀取它。切勿將金鑰提交到版本控制。
定價: 每位使用者可獲得 10 個免費作業。若需更大量使用,請聯絡 [email protected] 購買訂閱。
export TAMARIND_API_KEY="your_api_key"
# 列出可用的工具
curl https://app.tamarind.bio/api/tools \
-H "x-api-key: $TAMARIND_API_KEY"
基礎 URL: https://app.tamarind.bio/api/
沒有官方的 Python SDK — 名為 tamarind 的 PyPI 套件是一個不相關的 Neo4j 工具。請勿執行 uv pip install tamarind。請撰寫純 requests 呼叫來使用 REST API(端點資料結構在 openapi.yaml 中),或為代理主機使用 MCP 伺服器。
兩種呼叫 Tamarind 的方式
MCP 伺服器(最適合 AI 代理)
Tamarind 在 https://mcp.tamarind.bio/mcp 託管一個 MCP 伺服器(透過 X-API-Key 標頭進行 API 金鑰認證)。當您的代理主機支援 MCP 時,建議優先使用它——這些工具鏡像 REST API,並具有適合代理的架構:
listModalities()/listTags()— 即時過濾詞彙(分子類型/功能),包含標籤和工具計數;呼叫這些來學習有效的modality/function值,而不是對其進行硬編碼getAvailableTools(modality?, function?, search?, custom?)— 探索工具(category/tag是已棄用但仍然有效的別名)getJobSchema(jobType)— 某個工具的準確參數架構,以及一個exampleJob起始負載(在提交之前驗證它)validateJob(jobName, type, settings)— 在提交之前進行乾執行驗證submitJob(jobName, type, settings)/submitBatch(batchName, type, settings[], jobNames[])getJobs(jobName?, batch?, limit?, includeSequences?)— 列出/檢查作業和狀態(預設會省略龐大的每作業輸入 blob;傳遞includeSequences=true以保留它)getJobLogs(jobName)— 取得輸出日誌以進行除錯listJobFiles(jobName)— 列出輸出檔案(傳回s3Path以供串聯)getResult(jobName, fileName?)— 下載結果uploadFile(filename)— 預先簽署的上傳 URL;或uploadFileContent(filename, content, encoding?)以在代理主機無法存取 S3 時(沙盒代理)透過 MCP 傳送檔案內容
範圍說明:MCP 查詢工具(getJobs、getResult、listJobFiles…)的作用範圍限定於已認證的帳戶。
REST API(通用)
使用帶有 requests 的純 HTTP——端點資料結構在 openapi.yaml 中。核心迴圈如下;references/workflows.md 包含完整的範例。
核心工作流程
請務必遵循探索 → 架構 → 驗證 → 提交 → 輪詢 → 結果的順序。請勿對工具名稱或設定進行硬編碼——目錄經常變更。
import os, time, requests
BASE = "https://app.tamarind.bio/api"
HEADERS = {"x-api-key": os.environ["TAMARIND_API_KEY"]}
# 1. 探索工具。REST /tools 傳回完整清單;在客戶端進行過濾。
tools = requests.get(f"{BASE}/tools", headers=HEADERS).json()
alphafold = next(t for t in tools if t["name"] == "alphafold")
# 2. 取得所選工具的準確架構。
# REST:每個 /tools 條目已包含其內聯的 `settings` 架構
# (參數清單)——找到名稱與您的作業類型相符的條目。
# MCP: getJobSchema(jobType) 傳回相同的每工具詳細資訊。
# 3. 提交作業。`settings` 是特定於工具的——請準確比對架構。
payload = {
"jobName": "my-alphafold-run", # ^[a-zA-Z0-9_-]+$,最多 100 個字元,唯一
"type": "alphafold",
"settings": {
"sequence": "MKTVRQERLKSIVRILERSKEPVSGAQLAEELSVSRQVIVQDIAYLRSLGYNIVATPRGYVLAGG",
"numRecycles": 3,
},
}
resp = requests.post(f"{BASE}/submit-job", headers=HEADERS, json=payload)
resp.raise_for_status() # 200 成功;400 錯誤請求;403 超過預算;401 未經授權
# 4. 輪詢以確認完成。
# 注意回應形狀:GET /jobs?jobName=<name> 會直接傳回作業行
# (沒有 "jobs" 包裝器);清單查詢(無 jobName)會傳回
# {"jobs": [...]}。請勿在按名稱查詢的回應上索引 ["jobs"][0]。
while True:
job = requests.get(f"{BASE}/jobs", headers=HEADERS,
params={"jobName": "my-alphafold-run"}).json()
if job["JobStatus"] in ("Complete", "Stopped", "Deleted"):
break
time.sleep(30)
# 5. 取得結果。POST /result 會傳回一個預先簽署的 URL *字串*;
# 取得該 URL 以下載實際的結果 zip 檔(兩步驟)。
url = requests.post(f"{BASE}/result", headers=HEADERS,
json={"jobName": "my-alphafold-run"}).text.strip('"')
open("my-alphafold-run.zip", "wb").write(requests.get(url).content)
有關使用 MCP 工具的此迴圈的代理化版本,以及更豐富的範例,請參閱 references/workflows.md。
探索工具
目錄中有數百種工具。請務必在執行時期進行列舉——切勿依賴硬編碼的清單。
REST GET /tools 傳回完整清單(它不會在伺服器端進行過濾);每個項目是 {name, displayName, github, paper, description, settings},其中 settings 是該工具的內聯參數架構。在客戶端進行過濾:
tools = requests.get(f"{BASE}/tools", headers=HEADERS).json() # 一個清單
boltz = [t for t in tools if "boltz" in t["name"].lower()]
注意:兩個介面都為每個工具名稱傳回一行——REST /tools 和 MCP getAvailableTools 都已去重(MCP 保留最新的工具版本),因此名稱相符會傳回單一行。
MCP getAvailableTools(search=..., modality=..., function=...) 在伺服器端進行過濾,並為每個工具新增 categories/tags(category/tag 是已棄用的 modality/function 別名,仍然有效)。請勿對詞彙進行硬編碼——它會發生變化。從 listModalities() / listTags() 取得即時值(每個都會傳回 value、label、description 和 toolCount),或讀取每個 getAvailableTools 回應上傳回的 availableCategories / availableTags 方面陣列。Modalities 是分子類型(protein、antibody、peptide、small-molecule、nucleic-acid…);functions 是工具的功能(structure-prediction、binder-design、protein-ligand-docking…)。
一組具有代表性的廣泛使用工具(請使用 /tools 驗證):alphafold、boltz (Boltz-2)、chai (Chai-1)、esmfold / esmfold2、rfdiffusion、proteinmpnn、ligandmpnn、boltzgen、bindcraft、diffdock。請參閱 references/tool_catalog.md 以了解完整的類別/標籤對應圖以及如何讀取工具元資料。
選擇正確的工具
目錄中每個任務都有許多工具;請勿對喜好進行硬編碼——請依 function(和 modality)進行過濾,然後閱讀每個候選工具的 description,並將其與使用者的實際目標進行比對(您擁有的輸入、您需要的輸出、速度或「無 MSA」等約束條件)。description 和 tags 欄位是公開的「用途」訊號;讓它們,以及 validateJob,來驅動選擇。按任務快速導覽:
- 折疊單一蛋白質/複合物 (
function=structure-prediction):AlphaFold3 類的復刻版——boltz/chai/openfold/protenix/intfold——是所有情況(包括僅蛋白質系統)的準確預設選擇;它們也能處理核酸 + 小分子複合物,因此當系統中包含配體/RNA/DNA 時請使用它們(而boltz還新增了結合親和力)。alphafold(AF2) 對於單體 + 多聚體(使用:連接鏈)仍然是可靠的選擇。esmfold是單一序列(無 MSA)且速度快——當您想要速度且沒有 MSA 時使用它;esmfold2較新,並且預設以 MSA 為條件(其model設定提供更快的單一序列模式)。存在針對抗體(abodybuilder、immunebuilder)、環狀肽(highfold)和構象集合(afcluster、alphaflow)的專業折疊工具——請進行過濾並閱讀描述。 - 設計結合劑 (
function=binder-design):bindcraft(從頭設計微型蛋白結合劑)和boltzgen(針對蛋白質和小分子目標的結合劑,包括奈米抗體/抗體/胜肽)是首選的從頭結合劑工具;rfdiffusion也能進行結合劑設計,並且是基序支架 / 多樣化現有主鏈的選擇。抗體專用生成器位於function=antibody-design下。 - 為已知主鏈設計序列 (
function=inverse-folding):proteinmpnn(通用)、ligandmpnn(配體感知),以及耐熱/可溶性/抗體 MPNN 變體。逆向折疊接受一個結構並輸出序列——將它們折疊回來以進行驗證(請參閱串聯)。 - 對接小分子 (
function=protein-ligand-docking):建議優先使用boltz/chai——它們將配體共折疊到複合物中,並預測結合結構,而不是對接到固定的受體;當您需要針對已知口袋進行快速、大規模篩選時,請使用autodock-vina。 - 預測結合親和力 (
function=binding-affinity) 或 生成 MSA(搜尋msa)——請進行過濾並閱讀。
當使用者指定特定工具時,請評估該工具並對其 tag 群組中的替代方案進行合理性檢查——通常會存在更快或更適合的同類工具。當不確定時,請使用 getJobSchema/validateJob 在提交前確認候選工具確實接受您擁有的輸入。
作業設定、架構與驗證
每個工具都有自己的 settings 架構。請在提交前取得它:
- REST
/tools條目:每個settings參數是一個精簡的字典。只有name和required始終存在;type、default、description、options僅在相關時才會出現(約 60% 有type)——因此請使用param.get("type"),而非param["type"]。進階門控金鑰(exclude、conditionals)完全不在 REST 回應中。 - MCP
getJobSchema(jobType):完整架構,包括exclude、conditionals和邊界。當您需要推理這些門控金鑰時,請使用 MCP。(restrictOrgs在兩個介面上都被剝離——您無法使用的組織門控參數會被直接省略;請參閱references/api_reference.md。)
在提交前請務必執行 validateJob (MCP)——它是可靠的防護。它在不提交的情況下執行與 /submit-job 相同的驗證,並顯示第一個缺少或無效的欄位。請勿嘗試手動推導應從架構金鑰中剝離哪些欄位(無論如何,您透過 REST 都看不到它們)——讓 validateJob 告訴您。(回應可能包含一個 source 欄位,例如 "static-fallback"——一個關於哪個架構來源進行驗證的內部註記;valid: true/false 是您應據以行動的訊號。)
validateJob 會回顯一個 normalized 的設定檢視,並填入預設值。請提交您驗證過的相同乾淨 settings;將 normalized 視為參考資訊(它可能包含您未設定的預設值,並且對於某些工具,還包含平台管理的欄位),因此請根據您自己的設定來建構提交內容,而不是根據標準化的 blob。
序列: 胺基酸字串;使用
…
[因翻譯而截斷]