🧬boltz-protein-screen
- プラグイン
- boltz
- ソース
- GitHub で見る ↗
説明
Boltzを使用して既存のタンパク質バインダーをスクリーニングします。 次のような場合に使用: 提供されたタンパク質、ペプチド、抗体、ナノボディ、またはバインダーライブラリをターゲットに対してランキングする場合。 新規タンパク質の設計や低分子化合物のスクリーニングには使用しません。
原文を表示
Screen existing protein binders with Boltz. Use when ranking a supplied protein, peptide, antibody, nanobody, or binder library against a target. Not for designing new proteins or screening small molecules.
ユースケース
- ✓タンパク質バインダーをターゲット対してランキングする
- ✓既存のペプチドスクリーニング
- ✓抗体の結合能を評価する
- ✓ナノボディライブラリから有望候補を選抜する
本文(日本語訳)
ワークフロー
boltz-api が PATH に存在しない場合は、再試行前に boltz-cli-setup を使用してインストール/アップデートの案内を受けてください。
コマンドが認証の欠如または期限切れを報告した場合は、再試行前に boltz-cli-setup を使用して boltz-api auth login --device-code を開始してください。事前に許可を求める必要はありません。
エージェントホストのサンドボックスが boltz-api のインストール/認証/API呼び出しをブロックする場合は、再試行前に boltz-cli-setup を使用して、ユーザー全体のCLIインストール・ブラウザログイン・認証情報の保存・一時ファイル・APIアクセスに必要なホストサンドボックスのバイパス/エスカレーションをリクエストしてください。
次のような場合に使用: ユーザーがすでに候補タンパク質 / ペプチド / 抗体 / ナノボディを持っている場合。
-
バインダーライブラリを
proteins(候補複合体のリスト)に正規化します。単純な配列ライブラリの場合、各エントリは1つのタンパク質エンティティを持ちます。マルチチェーン候補(抗体の重鎖+軽鎖)も使用できます。 -
ターゲットのバリアントを選択します:
structure_template— ユーザーがCIF/PDBファイルまたはURLを持っている場合。どのチェーンをポリマーまたはリガンドとするか、保持する残基(crop_residues)、および任意でepitope_residues/flexible_residuesを指定します。no_template— ユーザーが配列のみを持っている場合。target.entitiesとして渡し、任意でepitope_residuesを追加します。
-
ユーザーがジオメトリ制約を求めない限り、
bonds/constraintsは追加しないでください。 -
ペイロードのYAMLまたはJSONを作成し、
estimate-costを実行してUSDのコストを表示し、明示的な確認を待ちます。 -
startでジョブを送信し、IDを取得します。 -
エージェントランタイムのバックグラウンド/ノンブロッキングコマンド機能を使用して
download-resultsを起動します。- Claude Code の場合:
run_in_background: trueを指定したBashを使用します。 - Codex の場合:
yield_time_ms: 1000を指定したフォアグラウンドのシェルコマンドとしてdownload-resultsを実行します。Codexがsession_idを返した場合は保持しておきますが、download-statusと実行ディレクトリを信頼できる情報源として扱います。 - 同スレッドのハートビート自動化を公開しているCodexアプリ/デスクトップランタイムでは、
download-statusを定期的にチェックし、ダウンロードが終了状態に達したら簡潔な完了または失敗の通知を投稿するハートビートを作成します。
ダウンローダーを起動した後は、必ずジョブID・実行名・出力ディレクトリを報告してください。ハートビートが作成された場合は次回チェックの間隔を、そうでない場合は
download-statusコマンドを含めてください。 - Claude Code の場合:
-
<output-root>/<run-name>/results/index.jsonlのヒット結果をbinding_confidenceの降順でランク付けします。タイブレーカーとしてiptmとmin_interaction_paeを使用します。optimization_scoreはこのエンドポイントでは出力されません。出力レイアウトとメトリクスの詳細については references/results.md を参照してください。
コマンドパターン
# 実行前にプレースホルダーを具体的な絶対パスに置き換えてください。
# 短くわかりやすい実行名を使用してください。例: protein-screen-<target>-<library>-v1
boltz-api protein:library-screen estimate-cost \
--input @yaml:///absolute/path/payload.yaml
boltz-api protein:library-screen start \
--idempotency-key "<run-name>" \
--input @yaml:///absolute/path/payload.yaml \
--raw-output --transform id
# 表示されたジョブIDをこのコマンドにコピーし、エージェントランタイムの
# バックグラウンド/ノンブロッキングモードで起動してください。
# Claude Code: run_in_background=true を指定したBash。
# Codex: yield_time_ms=1000 を指定したフォアグラウンドのシェルコマンド。
# 返された session_id があれば保持してください。
# Codex では "&" の追加や nohup の使用はしないでください。
boltz-api download-results \
--id "<job-id-from-start>" --name "<run-name>" \
--root-dir "/absolute/path/boltz-experiments" \
--poll-interval-seconds 30
ペイロードのキーは proteins、target — これらがAPIボディのフィールド名です。
必ず守ること
structure_templateの場合、structure.dataフィールド内に@data:///abs/path/target.cifでCIF/PDBのバイトを埋め込んでください。素の@pathは使用しないでください(自動ファイルタイプ検出によってCIFがplainテキストとしてbase64フィールドに送られ、サーバーパーサーが破損した事例があります)。- 残基インデックスは0始まりです。
epitope_residuesとflexible_residuesはcrop_residuesのサブセットである必要があります。 - ペイロードのフィールド名は、
references/api.mdに示されているAPIボディ名と完全に一致させてください。 - 出力ルート・ペイロードファイル・埋め込みターゲットファイルには絶対パスを使用してください。後続のコマンドで実行ディレクトリに
cdしないでください。同じ--root-dirを渡し、絶対パスを使用することで相対パスのズレを防ぎます。 estimate-costとstartには、--input @yaml:///absolute/path/payload.yamlまたは@json:///absolute/path/payload.jsonによる1つにまとめたトップレベルのペイロードを優先してください。--idempotency-keyと--workspace-idはトップレベルのフラグとして指定します。--input内にも同じキーがある場合、トップレベルのフラグが優先されます。- 直接オブジェクトフラグも
--target @yaml:///absolute/path/target.yamlや繰り返しの--protein @json:///absolute/path/protein-1.jsonのようにオーバーライドとして使用できます。stdinへのYAML/JSONのパイプも機能しますが、APIボディのフィールド名を使用する必要があります。@file://や@./は絶対に使用しないでください。 --idempotency-keyと--nameには同じスラッグを使用してください。- Claude Codeなどの許可制エージェントでは、各Boltz呼び出しを
boltz-apiで始まるトップレベルのコマンドとして維持してください。ユーザーがその形式を明示的に許可していない限り、boltz-apiの呼び出しに対してsh -c・インライン環境変数の代入・エイリアス・ラッパースクリプト・ループ・パイプラインは使用しないでください。--raw-output --transform idを使用して出力されたIDを読み取り、そのリテラルIDを次のdownload-resultsコマンドに貼り付けてください。 download-resultsにはエージェントランタイムのバックグラウンド/ノンブロッキングコマンドモードを優先してください。Codexでは特に、download-resultsをフォアグラウンドで保持しシェルツールのyieldを1000ミリ秒に設定してください。コマンドがまだ実行中の場合、Codexはsession_idを返します。Codexでは&の追加やnohupの使用をしないでください。ツールランナーが.boltz-run.jsonの書き込み完了前にシェルバックグラウンドの子プロセスをクリーンアップする可能性があります。- バックグラウンド/セッション開始後は、手動で待機したり、アドホックなポーリングループを実行したりしないでください。所要時間はライブラリ内の候補数にほぼ比例します: 100件未満は数分で完了することが多く、100〜1,000件は数分から数十分、それ以上の大規模スクリーニングは入力内容やシステム負荷によってさらに長くなる場合があります。固定の所要時間を提示しないでください。
--poll-interval-seconds 30はダウンローダーのデフォルトとして適切です。download-resultsはデフォルトでJSONL形式の進捗をstderrに出力します。人が読めるログが必要な場合のみ--progress-format text --verboseを追加してください。 - 同スレッドのハートビート自動化をサポートするCodexアプリ/デスクトップランタイムでは、
download-results起動後にハートビートをスケジュールしてください。ハートビートはboltz-api --format json download-status --name "<run-name>" --root-dir "/absolute/path/boltz-experiments"を実行し、終了状態になったら停止します。候補数によってチェック間隔を決定してください: 100件未満は1〜2分ごと、100〜1,000件は5分ごと、1,000件超は15分ごと。重要なステータス変化や完了/失敗の通知のみを投稿してください。保存したsession_idに対するポーリングは、ユーザーが明示的に進捗を確認したい場合のみ、空のwrite_stdinで行ってください。現在のターン内で手動ポーリングループを実行しないでください。 - 現在のホストがハートビート自動化をサポートしていない場合、自動的な次回チェックを約束しないでください。ジョブID・実行名・出力ディレクトリ・
download-statusの確認に必要なコマンドを報告してください。 - デタッチされたダウンロードを再開する必要がある場合は、同じ
--name "<run-name>"と--root-dirを指定してboltz-api download-resultsを再実行してください。 - コストはターゲットと候補の合計複合体長に応じてティア制になっており、合計長がティアを決定します。金額を自分で述べたり推定したりしないでください。コストについて言及する場合は
estimate-costを実行し、その返り値のみを引用してください。
エスケープハッチ
- ペイロードリファレンス: https://api.boltz.bio/docs/api/python/resources/protein/subresources/library_screen/methods/start
- CLIフラグ名:
boltz-api protein:library-screen start --help
proteins リストの構造と両方の target バリアント(chain_selection を使った structure_template、およびエピトープヒントを使った no_template)については references/api.md を参照してください。スクリーニングされたバインダーのランク付けや出力の説明を行う際は、ダウンロード後に references/results.md を参照してください。
出力
download-results 完了後、results/index.jsonl でランク付けを行います。ローカルファイルのレイアウトとメトリクスの意味については references/results.md を参照してください。
原文(English)を表示
Workflow
If boltz-api is missing from PATH, use boltz-cli-setup for install/update guidance before retrying.
If a command reports missing or expired authentication, use boltz-cli-setup to start boltz-api auth login --device-code before retrying; do not ask permission first.
If the agent host sandbox blocks boltz-api install/auth/API calls, use boltz-cli-setup to request the host sandbox bypass/escalation needed for user-wide CLI install, browser login, credential storage, temp files, or API access before retrying.
Use this skill when the user already has candidate proteins / peptides / antibodies / nanobodies.
- Normalize the binder library into
proteins— a list of candidate complexes. For a simple sequence library each entry has one protein entity; multi-chain candidates (antibody heavy+light) are also allowed. - Pick the target variant:
structure_template— user has a CIF/PDB file or URL; select which chains are polymer vs ligand, which residues to keep (crop_residues), and optionallyepitope_residues/flexible_residues.no_template— user has only sequences; pass them astarget.entitiesplus optionalepitope_residues.
- Don't add
bonds/constraintsunless the user asks for geometry constraints. - Author the payload YAML or JSON, run
estimate-cost, show the USD cost, wait for explicit confirmation. startto submit. Capture the ID.- Launch
download-resultswith the agent runtime's background/non-blocking command facility. In Claude Code, use Bash withrun_in_background: true. In Codex, rundownload-resultsas a foreground shell command withyield_time_ms: 1000; if Codex returns asession_id, keep it for optional same-thread polling, but treatdownload-statusplus the run directory as the durable source of truth. In Codex app/desktop runtimes that expose same-thread heartbeat automations, create a heartbeat that checksdownload-statusperiodically and posts a concise completion or failure update when the download reaches a terminal state. After launching the downloader, always report the job ID, run name, and output directory. Include the next check cadence if the heartbeat was created; otherwise include thedownload-statuscommand. - Rank hits from
<output-root>/<run-name>/results/index.jsonlbybinding_confidencedescending. Useiptmandmin_interaction_paeas tiebreakers.optimization_scoreis not emitted for this endpoint. Read references/results.md for output layout and metric details.
Command Pattern
# Replace placeholders with concrete absolute paths before running.
# Use a short descriptive run name, for example: protein-screen-<target>-<library>-v1
boltz-api protein:library-screen estimate-cost \
--input @yaml:///absolute/path/payload.yaml
boltz-api protein:library-screen start \
--idempotency-key "<run-name>" \
--input @yaml:///absolute/path/payload.yaml \
--raw-output --transform id
# Copy the printed job ID into this command, then launch it in the agent
# runtime's background/non-blocking mode.
# Claude Code: Bash with run_in_background=true.
# Codex: foreground shell command with yield_time_ms=1000; keep the returned session_id if one is provided.
# Do not append "&" or use nohup in Codex.
boltz-api download-results \
--id "<job-id-from-start>" --name "<run-name>" \
--root-dir "/absolute/path/boltz-experiments" \
--poll-interval-seconds 30
Payload keys are proteins, target — API body field names.
Always Do This
- For
structure_template, embed CIF/PDB bytes with@data:///abs/path/target.cifinside thestructure.datafield. Don't use bare@path(automatic file-type detection once sent CIF as plain text into a base64 field and broke the server parser). - Residue indices are 0-based.
epitope_residuesandflexible_residuesmust be subsets ofcrop_residues. - Keep payload field names exactly as the API body names shown in
references/api.md. - Use absolute paths for the output root, payload files, and embedded target files. Do not
cdinto the run directory for follow-up commands; pass the same--root-dirand use absolute paths so later relative paths do not drift. - Prefer one merged top-level payload via
--input @yaml:///absolute/path/payload.yamlor@json:///absolute/path/payload.jsonforestimate-costandstart. Keep--idempotency-keyand--workspace-idtop-level; if they also appear inside--input, the top-level flags win. - Direct object flags still work as overrides, such as
--target @yaml:///absolute/path/target.yamlor repeated--protein @json:///absolute/path/protein-1.jsonentries. Piped YAML / JSON on stdin also works, but it must use API body field names. Never use@file://or@./. - Use the same slug as both
--idempotency-keyand--name. - In permission-gated agents such as Claude Code, keep each Boltz call as a top-level command that starts with
boltz-api. Prefer concrete arguments oversh -c, inline environment assignments, aliases, wrapper scripts, loops, or pipelines around theboltz-apiinvocation unless the user already allowed that exact command form. Use--raw-output --transform id, read the printed ID, then paste that literal ID into the nextdownload-resultscommand. - Prefer the agent runtime's background/non-blocking command mode for
download-results. In Codex specifically, keepdownload-resultsin the foreground and set the shell tool yield to 1000 ms; Codex will return asession_idif the command is still running. Do not append&or usenohupin Codex because the tool runner may clean up shell-backgrounded descendants before.boltz-run.jsonis fully written. - After the background/session starts, do not manually wait on it or run ad hoc polling loops. Wall-clock time scales roughly with the number of candidates in the library: under 100 often finishes in a few minutes, 100-1,000 may take several minutes to tens of minutes, and larger screens can take longer or hours depending on inputs and system load. Don't quote a fixed duration.
--poll-interval-seconds 30is a reasonable downloader default.download-resultsemits JSONL progress on stderr by default; add--progress-format text --verboseonly when you explicitly want human-readable logs. - In Codex app/desktop runtimes with same-thread heartbeat automation support, schedule a heartbeat after launching
download-results. The heartbeat should runboltz-api --format json download-status --name "<run-name>" --root-dir "/absolute/path/boltz-experiments"and stop once terminal. Choose cadence by candidate count: under 100 -> every 1-2 minutes; 100-1,000 -> every 5 minutes; over 1,000 -> every 15 minutes. Post only material status changes or terminal completion/failure. Poll the savedsession_idwith an emptywrite_stdinonly for interactive, user-requested progress checks. Never run a manual poll loop in the current turn. - If the current host has no heartbeat automation support, do not claim an automatic next check. Report the job ID, run name, output directory, and the command needed to check
download-status. - If detached download needs to be restarted, re-run
boltz-api download-resultswith the same--name "<run-name>"and the same--root-dir. - Cost is tiered by total complex length (target + candidate); the combined length sets the tier. Do not state or estimate a dollar figure yourself — to say anything about cost, run
estimate-costand quote only the number it returns.
Escape Hatch
- Payload reference: https://api.boltz.bio/docs/api/python/resources/protein/subresources/library_screen/methods/start
- CLI flag names:
boltz-api protein:library-screen start --help
Read references/api.md for the proteins list shape and both target variants (structure_template with chain_selection, and no_template with epitope hints). Read references/results.md after download when ranking screened binders or explaining outputs.
Outputs
Rank from results/index.jsonl after download-results; use references/results.md for local file layout and metric meanings.
原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。