BiosimulantBiosimulant
Docs
Search labs...
Sign inGet Started

Boltz: Boltz2AffinityPredictor Lab

About lab

Boltz: Boltz2AffinityPredictor Lab

This lab runs Boltz-2 to jointly predict the 3D structure of a protein-ligand complex and a binding-affinity summary from sequence-only inputs. The protein is provided as an amino-acid string and the ligand as a SMILES string. The lab ships with a real protein/ligand example baked into lab.yaml so a fresh run produces a renderable complex and an affinity readout without any extra setup.

The wrapper drives the upstream Boltz CLI pinned at boltz[cuda]==2.0.2, runs the diffusion and recycling pipeline on a GPU runner, and returns the parsed affinity and confidence summaries plus file-backed structure artifacts (mmCIF by default).

This lab is for single-complex, sequence-only Boltz-2 affinity runs. It does not handle batch screening, custom MSAs without an MSA server, alternative Boltz model variants, or non-Boltz structural runtimes. Those belong in adjacent labs.

What You'll See

The lab opens as a small canvas with one Boltz-2 node and a run-results panel. With the bundled defaults, the run produces:

  • a structure3d view of the predicted protein-ligand complex,
  • an affinity summary with binding probability and predicted affinity,
  • a confidence summary with pTM, ipTM, and pLDDT bands for the top-ranked prediction,
  • run metadata with the truncated Boltz stdout/stderr and the resolved output paths.

The first screenshot shows the canvas and results panel with the interactive 3D complex structure and confidence annotations. The second scrolls down to the same run's confidence, affinity, and summary-table metrics.

Boltz2 affinity lab canvas with predicted protein-ligand complex structure

Boltz2 affinity confidence, affinity, and summary metrics

How to Read the Visualizations

The structure3d view shows the predicted complex assembled from the top-ranked Boltz output. Use it to sanity-check that the ligand is positioned in a plausible binding pocket on the predicted fold. If the ligand sits outside the protein density, the prediction is unreliable for that pair regardless of what the affinity summary says.

The affinity summary reports a binding probability (dimensionless, 0 to 1) and a predicted affinity expressed as pIC50. Higher pIC50 is a stronger predicted bind. Treat both as Boltz-2 model outputs, not experimental measurements: they are useful for ranking related candidates against the same target, less useful as absolute numbers.

The confidence summary captures Boltz's internal confidence bands. pTM and ipTM track global and interface fold confidence (0 to 1, higher is better). pLDDT is per-residue confidence (0 to 100, higher is better). Low ipTM with reasonable pTM usually means the protein fold is fine but the ligand placement is uncertain.

In the screenshot run, the top-ranked prediction reports high confidence metrics for the default protein-ligand pair: confidence score about 0.92, pTM about 0.93, ipTM about 0.91, and complex pLDDT about 0.92. The affinity table reports predicted affinity about 2.18 pIC50 with binder probability about 0.54.

The run metadata records which Boltz version executed, the resolved output directory, the truncated stdout/stderr from the Boltz CLI, and status: ok or status: error so a failed run is still inspectable.

What This Lab Contains

  • lab.yaml describes the lab, exposes its inputs and outputs, and pins the bundled defaults.
  • wiring-layout.json places the model on the canvas.
  • model/model.yaml describes the model package, parameters, and ports.
  • models/core/src/boltz2_affinity_predictor.py contains the wrapper and managed-runtime install logic.
  • models/visualisation/src/docking_visualisation.py turns the structure, affinity, confidence, and run metadata records into Biosimulant visuals.
  • model/tests/ checks the wrapper, manifest, and lab contract.

The bundled defaults are encoded as strings inside lab.yaml (default_protein_sequence, default_ligand_smiles). There is no model/data/ directory because Boltz-2 takes sequence-only inputs.

Inputs

The model accepts four input signals. Each one falls back to the matching default_* parameter in lab.yaml when the signal is not wired, which is what makes the lab runnable out of the box.

  • protein_sequence (string): amino-acid sequence string. Defaults to the bundled example protein.
  • ligand_smiles (string): SMILES string for the ligand. Defaults to the bundled example tyrosine derivative.
  • msa_path (path, optional): path to a pre-computed MSA (.a3m). When unset and use_msa_server: true, Boltz queries the configured MSA server instead.
  • run_options (record, optional): Boltz options dict merged onto the defaults. Useful for overriding recycling_steps, sampling_steps, diffusion_samples, output_format, or accelerator on a per-run basis without changing lab.yaml.

Outputs

  • affinity_summary (record): binding probability and predicted affinity (pIC50) for the top-ranked prediction.
  • confidence_summary (record): pTM, ipTM, and pLDDT bands for the top-ranked prediction.
  • structure_artifacts (record): absolute paths to the Boltz output structure files (mmCIF or PDB depending on output_format).
  • run_metadata (record): runtime metadata, Boltz version, output directory, truncated stdout/stderr, and status: ok or status: error.

Running in Biosimulant Desktop

Import the lab once with the Biosim CLI, then open it from the desktop app. The bundled defaults mean the first run requires no parameter editing.

biosimulant labs import labs/boltz-boltz2-affinity-predictor

To predict a different complex, override protein_sequence and ligand_smiles in the lab's run sidebar (or wire them to a source module that produces the strings). The model treats wired input signals as overrides on top of the defaults, so partial overrides work too.

Notes

  • Boltz-2 is GPU-bound. Remote runs use the GPU-enabled runtime image; local runs need a CUDA device or they will be unusably slow.
  • Managed runtime mode installs boltz[cuda]==2.0.2 on first run. Plan for a multi-minute first-run install; subsequent runs are offline.
  • The bundled defaults rely on use_msa_server: true because no MSA file is shipped. To run fully offline, set default_msa_path to a local .a3m and toggle use_msa_server off.
  • The lab's runtime.duration is intentionally short. Boltz is event-driven; the wrapper runs the prediction inside a single advance window.
  • The lab sets runtime.settle_steps: 1 so the downstream visualization module can consume the final structure artifacts without extending simulated time.

Multi-model lab with an embedded visualisation sibling for Boltz-2 affinity-focused protein-ligand predictions. Ships with a real protein/ligand pair so the lab runs out of the box on a GPU runner.

Runtime

Duration0.01
Comms Step0.01
Settle Steps1

Runs

Total1
Completed1
Failed0

Metadata

Packageboltz-boltz2affinitypredictor-lab
Created2026-05-03
Updated2026-05-28
dockingboltzstructural-biologyprotein-ligandaffinitygpuvisualisationother

Manifest

{
  "io": {
    "inputs": [
      {
        "name": "protein_sequence",
        "label": "Target Protein Sequence",
        "maps_to": "boltz_boltz2_affinity_predictor.protein_sequence",
        "description": "Amino-acid sequence passed directly to the Boltz-2 protein input."
      },
      {
        "name": "ligand_smiles",
        "label": "Ligand SMILES",
        "maps_to": "boltz_boltz2_affinity_predictor.ligand_smiles",
        "description": "Ligand structure encoded as a SMILES string and passed directly to Boltz-2."
      },
      {
        "name": "msa_path",
        "label": "Precomputed MSA Path",
        "maps_to": "boltz_boltz2_affinity_predictor.msa_path",
        "description": "Optional path to a precomputed MSA file; leave unset when the MSA server is used."
      },
      {
        "name": "run_options",
        "label": "Boltz Run Options",
        "maps_to": "boltz_boltz2_affinity_predictor.run_options",
        "description": "Optional structured Boltz workflow controls such as MSA-server use, output format, and sampling settings."
      }
    ],
    "outputs": [
      {
        "name": "affinity_summary",
        "label": "Affinity-Style Summary",
        "maps_to": "boltz_boltz2_affinity_predictor.affinity_summary",
        "description": "Parsed Boltz-2 affinity outputs, including binder probability and predicted affinity-like value when emitted."
      },
      {
        "name": "confidence_summary",
        "label": "Structure Confidence Summary",
        "maps_to": "boltz_boltz2_affinity_predictor.confidence_summary",
        "description": "Parsed Boltz-2 confidence outputs for the top-ranked predicted complex."
      },
      {
        "name": "structure_artifacts",
        "label": "Predicted Complex Structure Artifacts",
        "maps_to": "boltz_boltz2_affinity_predictor.structure_artifacts",
        "description": "File-backed structure artifacts, usually mmCIF, used by the 3D structure visualisation."
      },
      {
        "name": "run_metadata",
        "label": "Boltz Run Metadata",
        "maps_to": "boltz_boltz2_affinity_predictor.run_metadata",
        "description": "Runtime status, command metadata, logs, and caveats for the latest Boltz invocation."
      }
    ]
  },
  "tags": [
    "docking",
    "boltz",
    "structural-biology",
    "protein-ligand",
    "affinity",
    "gpu"
  ],
  "title": "Boltz: Boltz2AffinityPredictor Lab",
  "models": [
    {
      "path": "owned/models/boltz_boltz2_affinity_predictor",
      "alias": "boltz_boltz2_affinity_predictor",
      "parameters": {
        "override": true,
        "accelerator": "gpu",
        "runtime_mode": "managed",
        "output_format": "mmcif",
        "sampling_steps": 200,
        "use_msa_server": true,
        "recycling_steps": 3,
        "diffusion_samples": 1,
        "default_ligand_smiles": "N[C@@H](Cc1ccc(O)cc1)C(=O)O",
        "default_protein_sequence": "MVTPEGNVSLVDESLLVGVTDEDRAVRSAHQFYERLIGLWAPAVMEAAHELGVFAALAEAPADSGELARRLDCDARAMRVLLDALYAYDVIDRIHDTNGFRYLLSAEARECLLPGTLFSLVGKFMHDINVAWPAWRNLAEVVRHGARDTSGAESPNGIAQEDYESLVGGINFWAPPIVTTLSRKLRASGRSGDATASVLDVGCGTGLYSQLLLREFPRWTATGLDVERIATLANAQALRLGVEERFATRAGDFWRGGWGTGYDLVLFANIFHLQTPASAVRLMRHAAACLAPDGLVAVVDQIVDADREPKTPQDRFALLFAASMTNTGGGDAYTFQEYEEWFTAAGLQRIETLDTPMHRILLARRATEPSAVPEGQASENLYFQ"
      },
      "provenance": {
        "owned_path": "owned/models/boltz_boltz2_affinity_predictor"
      }
    },
    {
      "path": "owned/models/visualisation",
      "alias": "visualisation",
      "parameters": {
        "integration_step": 0.01
      },
      "provenance": {
        "owned_path": "owned/models/visualisation"
      }
    }
  ],
  "wiring": [
    {
      "to": [
        "visualisation.boltz_boltz2_affinity_predictor_affinity_summary"
      ],
      "from": "boltz_boltz2_affinity_predictor.affinity_summary"
    },
    {
      "to": [
        "visualisation.boltz_boltz2_affinity_predictor_confidence_summary"
      ],
      "from": "boltz_boltz2_affinity_predictor.confidence_summary"
    },
    {
      "to": [
        "visualisation.boltz_boltz2_affinity_predictor_structure_artifacts"
      ],
      "from": "boltz_boltz2_affinity_predictor.structure_artifacts"
    },
    {
      "to": [
        "visualisation.boltz_boltz2_affinity_predictor_run_metadata"
      ],
      "from": "boltz_boltz2_affinity_predictor.run_metadata"
    }
  ],
  "runtime": {
    "duration": 0.01,
    "settle_steps": 1,
    "initial_inputs": {},
    "communication_step": 0.01
  },
  "description": "Multi-model lab with an embedded visualisation sibling for Boltz-2 affinity-focused protein-ligand predictions. Ships with a real protein/ligand pair so the lab runs out of the box on a GPU runner.",
  "schema_version": "2.0"
}

Sign in to start your own run. Public-lab history stays visible here.

Logs50
2026-05-03 22:11:03 UTCinfosystem
Preparing remote execution...
2026-05-03 22:11:05 UTCinfosystem
Staging package artifacts for remote execution...
2026-05-03 22:11:08 UTCinfosystem
Submitting remote job...
2026-05-03 22:12:04 UTCinfosystem
Running simulation remotely...
2026-05-03 22:12:27 UTCinfosandbox
BSIM_PROGRESS:{"message": "Validating Boltz-2 inputs", "phase": "inputs"}
2026-05-03 22:12:27 UTCinfosandbox
BSIM_PROGRESS:{"message": "Writing Boltz-2 request payload", "phase": "inputs"}
2026-05-03 22:12:28 UTCinfosandbox
BSIM_PROGRESS:{"message": "Preparing Boltz-2 runtime", "phase": "runtime"}
2026-05-03 22:12:29 UTCinfosandbox
BSIM_PROGRESS:{"message": "Using external Boltz executable at /usr/local/bin/boltz", "phase": "runtime"}
2026-05-03 22:12:29 UTCinfosandbox
BSIM_PROGRESS:{"message": "Inspecting and repairing Boltz cache if needed", "phase": "runtime"}
2026-05-03 22:12:30 UTCinfosandbox
BSIM_PROGRESS:{"message": "Launching boltz predict", "phase": "inference"}
2026-05-03 22:12:32 UTCinfosystem
Validating Boltz-2 inputs
2026-05-03 22:12:33 UTCinfosystem
Writing Boltz-2 request payload
2026-05-03 22:12:34 UTCinfosystem
Preparing Boltz-2 runtime
2026-05-03 22:12:36 UTCinfosystem
Using external Boltz executable at /usr/local/bin/boltz
2026-05-03 22:12:37 UTCinfosystem
Inspecting and repairing Boltz cache if needed
2026-05-03 22:12:38 UTCinfosystem
Launching boltz predict
2026-05-03 22:12:57 UTCinfosandbox
BSIM_PROGRESS:{"duration": 30.0, "message": "Boltz-2 prediction is still running (30s elapsed)", "phase": "inference", "tick": 1}
2026-05-03 22:12:59 UTCinfosystem
Boltz-2 prediction is still running (30s elapsed)
2026-05-03 22:13:27 UTCinfosandbox
BSIM_PROGRESS:{"duration": 60.0, "message": "Boltz-2 prediction is still running (60s elapsed)", "phase": "inference", "tick": 2}
2026-05-03 22:13:28 UTCinfosystem
Boltz-2 prediction is still running (60s elapsed)
2026-05-03 22:13:56 UTCinfosandbox
BSIM_PROGRESS:{"duration": 90.0, "message": "Boltz-2 prediction is still running (90s elapsed)", "phase": "inference", "tick": 3}
2026-05-03 22:13:58 UTCinfosystem
Boltz-2 prediction is still running (90s elapsed)
2026-05-03 22:14:28 UTCinfosandbox
BSIM_PROGRESS:{"duration": 120.0, "message": "Boltz-2 prediction is still running (120s elapsed)", "phase": "inference", "tick": 4}
2026-05-03 22:14:30 UTCinfosystem
Boltz-2 prediction is still running (120s elapsed)
2026-05-03 22:14:58 UTCinfosandbox
BSIM_PROGRESS:{"duration": 150.0, "message": "Boltz-2 prediction is still running (150s elapsed)", "phase": "inference", "tick": 5}
2026-05-03 22:14:59 UTCinfosystem
Boltz-2 prediction is still running (150s elapsed)
2026-05-03 22:15:27 UTCinfosandbox
BSIM_PROGRESS:{"duration": 180.0, "message": "Boltz-2 prediction is still running (180s elapsed)", "phase": "inference", "tick": 6}
2026-05-03 22:15:29 UTCinfosystem
Boltz-2 prediction is still running (180s elapsed)
2026-05-03 22:15:57 UTCinfosandbox
BSIM_PROGRESS:{"duration": 210.0, "message": "Boltz-2 prediction is still running (210s elapsed)", "phase": "inference", "tick": 7}
2026-05-03 22:15:58 UTCinfosystem
Boltz-2 prediction is still running (210s elapsed)
2026-05-03 22:16:26 UTCinfosandbox
BSIM_PROGRESS:{"duration": 240.0, "message": "Boltz-2 prediction is still running (240s elapsed)", "phase": "inference", "tick": 8}
2026-05-03 22:16:28 UTCinfosystem
Boltz-2 prediction is still running (240s elapsed)
2026-05-03 22:16:58 UTCinfosandbox
BSIM_PROGRESS:{"duration": 270.0, "message": "Boltz-2 prediction is still running (270s elapsed)", "phase": "inference", "tick": 9}
2026-05-03 22:17:00 UTCinfosystem
Boltz-2 prediction is still running (270s elapsed)
2026-05-03 22:17:27 UTCinfosandbox
BSIM_PROGRESS:{"duration": 300.0, "message": "Boltz-2 prediction is still running (300s elapsed)", "phase": "inference", "tick": 10}
2026-05-03 22:17:29 UTCinfosystem
Boltz-2 prediction is still running (300s elapsed)
2026-05-03 22:17:57 UTCinfosandbox
BSIM_PROGRESS:{"duration": 330.0, "message": "Boltz-2 prediction is still running (330s elapsed)", "phase": "inference", "tick": 11}
2026-05-03 22:17:58 UTCinfosystem
Boltz-2 prediction is still running (330s elapsed)
2026-05-03 22:18:26 UTCinfosandbox
BSIM_PROGRESS:{"duration": 360.0, "message": "Boltz-2 prediction is still running (360s elapsed)", "phase": "inference", "tick": 12}
2026-05-03 22:18:28 UTCinfosystem
Boltz-2 prediction is still running (360s elapsed)
2026-05-03 22:18:58 UTCinfosandbox
BSIM_PROGRESS:{"duration": 390.0, "message": "Boltz-2 prediction is still running (390s elapsed)", "phase": "inference", "tick": 13}
2026-05-03 22:19:00 UTCinfosystem
Boltz-2 prediction is still running (390s elapsed)
2026-05-03 22:19:28 UTCinfosandbox
BSIM_PROGRESS:{"duration": 420.0, "message": "Boltz-2 prediction is still running (420s elapsed)", "phase": "inference", "tick": 14}
2026-05-03 22:19:29 UTCinfosystem
Boltz-2 prediction is still running (420s elapsed)
2026-05-03 22:19:57 UTCinfosandbox
BSIM_PROGRESS:{"duration": 450.0, "message": "Boltz-2 prediction is still running (450s elapsed)", "phase": "inference", "tick": 15}
2026-05-03 22:19:59 UTCinfosystem
Boltz-2 prediction is still running (450s elapsed)
2026-05-03 22:20:26 UTCinfosandbox
BSIM_PROGRESS:{"duration": 480.0, "message": "Boltz-2 prediction is still running (480s elapsed)", "phase": "inference", "tick": 16}
2026-05-03 22:20:28 UTCinfosystem
Boltz-2 prediction is still running (480s elapsed)
2026-05-03 22:20:39 UTCinfosandbox
BSIM_PROGRESS:{"message": "boltz predict finished", "phase": "inference"}
2026-05-03 22:20:40 UTCinfosandbox
BSIM_PROGRESS:{"message": "Boltz-2 prediction finished", "phase": "inference"}
JSON
{
  "outputs": {
    "boltz_boltz2_affinity_predictor": {
      "affinity_summary": {
        "type": "record",
        "source": "boltz_boltz2_affinity_predictor",
        "name": "affinity_summary",
        "emitted_at": 0.01,
        "spec": {
          "signal_type": "record",
          "kind": "state",
          "dtype": null,
          "shape": null,
          "emitted_unit": null,
          "accepted_profiles": null,
          "interpolation": "zoh",
          "max_age": null,
          "stale_policy": "warn",
          "schema": {
            "payload": "json"
          },
          "description": "Parsed Boltz affinity summary for the latest run"
        },
        "value": {
          "payload": {
            "affinity_pred_value": 2.184854030609131,
            "affinity_probability_binary": 0.5395844578742981,
            "affinity_pred_value1": 2.3018550872802734,
            "affinity_probability_binary1": 0.44812509417533875,
            "affinity_pred_value2": 2.067852735519409,
            "affinity_probability_binary2": 0.6310437917709351
          }
        }
      },
      "confidence_summary": {
        "type": "record",
        "source": "boltz_boltz2_affinity_predictor",
        "name": "confidence_summary",
        "emitted_at": 0.01,
        "spec": {
          "signal_type": "record",
          "kind": "state",
          "dtype": null,
          "shape": null,
          "emitted_unit": null,
          "accepted_profiles": null,
          "interpolation": "zoh",
          "max_age": null,
          "stale_policy": "warn",
          "schema": {
            "payload": "json"
          },
          "description": "Parsed Boltz confidence summary for the top-ranked prediction"
        },
        "value": {
          "payload": {
            "confidence_score": 0.9206151366233826,
            "ptm": 0.9331286549568176,
            "iptm": 0.9058650135993958,
            "ligand_iptm": 0.9058650135993958,
            "protein_iptm": 0,
            "complex_plddt": 0.9243025779724121,
            "complex_iplddt": 0.8609288334846497,
            "complex_pde": 0.5228868126869202,
            "complex_ipde": 2.0138497352600098,
            "chains_ptm": {
              "0": 0.934418261051178,
              "1": 0.9448723196983337
            },
            "pair_chains_iptm": {
              "0": {
                "0": 0.934418261051178,
                "1": 0.4091123640537262
              },
              "1": {
                "0": 0.9058650135993958,
                "1": 0.9448723196983337
              }
            }
          }
        }
      },
      "structure_artifacts": {
        "type": "record",
        "source": "boltz_boltz2_affinity_predictor",
        "name": "structure_artifacts",
        "emitted_at": 0.01,
        "spec": {
          "signal_type": "record",
          "kind": "state",
          "dtype": null,
          "shape": null,
          "emitted_unit": null,
          "accepted_profiles": null,
          "interpolation": "zoh",
          "max_age": null,
          "stale_policy": "warn",
          "schema": {
            "payload": "json"
          },
          "description": "Absolute paths to the latest Boltz output artifacts"
        },
        "value": {
          "payload": {
            "prediction_dir": "/tmp/bsim-clones/remote-artifacts/2f7e5b91-c26a-4e02-8474-3f5a95a9312c/boltz_boltz2_affinity_predictor/request",
            "structure_file": "/tmp/bsim-clones/remote-artifacts/2f7e5b91-c26a-4e02-8474-3f5a95a9312c/boltz_boltz2_affinity_predictor/request/request_model_0.cif",
            "confidence_file": "/tmp/bsim-clones/remote-artifacts/2f7e5b91-c26a-4e02-8474-3f5a95a9312c/boltz_boltz2_affinity_predictor/request/confidence_request_model_0.json",
            "affinity_file": "/tmp/bsim-clones/remote-artifacts/2f7e5b91-c26a-4e02-8474-3f5a95a9312c/boltz_boltz2_affinity_predictor/request/affinity_request.json",
            "pae_file": "/tmp/bsim-clones/remote-artifacts/2f7e5b91-c26a-4e02-8474-3f5a95a9312c/boltz_boltz2_affinity_predictor/request/pae_request_model_0.npz",
            "pde_file": "/tmp/bsim-clones/remote-artifacts/2f7e5b91-c26a-4e02-8474-3f5a95a9312c/boltz_boltz2_affinity_predictor/request/pde_request_model_0.npz",
            "plddt_file": "/tmp/bsim-clones/remote-artifacts/2f7e5b91-c26a-4e02-8474-3f5a95a9312c/boltz_boltz2_affinity_predictor/request/plddt_request_model_0.npz"
          }
        }
      },
      "run_metadata": {
        "type": "record",
        "source": "boltz_boltz2_affinity_predictor",
        "name": "run_metadata",
        "emitted_at": 0.01,
        "spec": {
          "signal_type": "record",
          "kind": "state",
          "dtype": null,
          "shape": null,
          "emitted_unit": null,
          "accepted_profiles": null,
          "interpolation": "zoh",
          "max_age": null,
          "stale_policy": "warn",
          "schema": {
            "payload": "json"
          },
          "description": "Execution metadata and captured logs for the latest Boltz invocation"
        },
        "value": {
          "payload": {
            "status": "completed",
            "command": [
              "/usr/local/bin/boltz",
              "predict",
              "/tmp/boltz2-run-xcl7r6rw/request.yaml",
              "--out_dir",
              "/tmp/boltz2-run-xcl7r6rw/output",
              "--accelerator",
              "gpu",
              "--devices",
              "1",
              "--output_format",
              "mmcif",
              "--recycling_steps",
              "3",
              "--sampling_steps",
              "200",
              "--diffusion_samples",
              "1",
              "--cache",
              "/__modal/volumes/vo-dfUaIL1uGeVQVITc1qHrdd/runtime-cache/boltz",
              "--use_msa_server",
              "--override"
            ],
            "cwd": "/tmp/boltz2-run-xcl7r6rw",
            "input_yaml_path": "/tmp/boltz2-run-xcl7r6rw/request.yaml",
            "output_dir": "/tmp/boltz2-run-xcl7r6rw/output",
            "cache_dir": "/__modal/volumes/vo-dfUaIL1uGeVQVITc1qHrdd/runtime-cache/boltz",
            "use_msa_server": true,
            "stdout": "Downloading and extracting the CCD data to /__modal/volumes/vo-dfUaIL1uGeVQVITc1qHrdd/runtime-cache/boltz/mols. This may take a bit of time. You may change the cache directory with the --cache flag.\nDownloading the Boltz-2 weights to /__modal/volumes/vo-dfUaIL1uGeVQVITc1qHrdd/runtime-cache/boltz/boltz2_conf.ckpt. You may change the cache directory with the --cache flag.\nDownloading the Boltz-2 affinity weights to /__modal/volumes/vo-dfUaIL1uGeVQVITc1qHrdd/runtime-cache/boltz/boltz2_aff.ckpt. You may change the cache directory with the --cache flag.\nChecking input data.\nProcessing 1 inputs with 1 threads.\nGenerating MSA for /tmp/boltz2-run-xcl7r6rw/request.yaml with 1 protein entities.\nRunning structure prediction for 1 input.\n\nPredicting: |          | 0/? [00:00<?, ?it/s]\nPredicting:   0%|          | 0/1 [00:00<?, ?it/s]\nPredicting DataLoader 0:   0%|          | 0/1 [00:00<?, ?it/s]\nPredicting DataLoader 0: 100%|██████████| 1/1 [02:08<00:00,  0.01it/s]Number of failed examples: 0\n\nPredicting DataLoader 0: 100%|██████████| 1/1 [02:08<00:00,  0.01it/s]\n\nPredicting property: affinity\n\nChecking input data for affinity.\nRunning affinity prediction for 1 input.\n\nPredicting: |          | 0/? [00:00<?, ?it/s]\nPredicting:   0%|          | 0/1 [00:00<?, ?it/s]\nPredicting DataLoader 0:   0%|          | 0/1 [00:00<?, ?it/s]\nPredicting DataLoader 0: 100%|██████████| 1/1 [01:22<00:00,  0.01it/s]Number of failed examples: 0\n\nPredicting DataLoader 0: 100%|██████████| 1/1 [01:22<00:00,  0.01it/s]\n",
            "stderr": "\n  0%|          | 0/1 [00:00<?, ?it/s]\n\n  0%|          | 0/150 [elapsed: 00:00 remaining: ?]\u001b[A\n\nSUBMIT:   0%|          | 0/150 [elapsed: 00:00 remaining: ?]\u001b[A\n\nCOMPLETE:   0%|          | 0/150 [elapsed: 00:00 remaining: ?]\u001b[A\n\nCOMPLETE: 100%|██████████| 150/150 [elapsed: 00:00 remaining: 00:00]\u001b[A\nCOMPLETE: 100%|██████████| 150/150 [elapsed: 00:01 remaining: 00:00]\n\n100%|██████████| 1/1 [00:02<00:00,  2.26s/it]\n100%|██████████| 1/1 [00:02<00:00,  2.26s/it]\nUsing bfloat16 Automatic Mixed Precision (AMP)\nGPU available: True (cuda), used: True\nTPU available: False, using: 0 TPU cores\nHPU available: False, using: 0 HPUs\n/usr/local/lib/python3.11/site-packages/pytorch_lightning/trainer/connectors/logger_connector/logger_connector.py:76: Starting from v1.9.0, `tensorboardX` has been removed as a dependency of the `pytorch_lightning` package, due to potential conflicts with other packages in the ML ecosystem. For this reason, `logger=True` will use `CSVLogger` as the default logger, unless the `tensorboard` or `tensorboardX` packages are found. Please `pip install lightning[extra]` or one of them to enable TensorBoard support by default\n/usr/local/lib/python3.11/site-packages/pytorch_lightning/utilities/migration/utils.py:56: The loaded checkpoint was produced with Lightning v2.5.0.post0, which is newer than your current Lightning version: v2.5.0\nLOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n/usr/local/lib/python3.11/site-packages/pytorch_lightning/utilities/_pytree.py:21: `isinstance(treespec, LeafSpec)` is deprecated, use `isinstance(treespec, TreeSpec) and treespec.is_leaf()` instead.\n/usr/local/lib/python3.11/site-packages/pytorch_lightning/utilities/migration/utils.py:56: The loaded checkpoint was produced with Lightning v2.5.0.post0, which is newer than your current Lightning version: v2.5.0\nLOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n/usr/local/lib/python3.11/site-packages/pytorch_lightning/utilities/_pytree.py:21: `isinstance(treespec, LeafSpec)` is deprecated, use `isinstance(treespec, TreeSpec) and treespec.is_leaf()` instead.\n",
            "runtime_mode": "external",
            "runtime_dir": "/tmp/.runtime/boltz2",
            "runtime_bootstrapped": false,
            "runtime_setup_commands": [],
            "cache_repaired": false,
            "retry_count": 0,
            "resolved_boltz_executable": "/usr/local/bin/boltz",
            "returncode": 0,
            "prediction_dir": "/tmp/bsim-clones/remote-artifacts/2f7e5b91-c26a-4e02-8474-3f5a95a9312c/boltz_boltz2_affinity_predictor/request"
          }
        }
      }
    }
  },
  "state": {
    "boltz_boltz2_affinity_predictor": {}
  },
  "visuals": [
    {
      "module": "boltz_boltz2_affinity_predictor",
      "module_class": "Boltz2AffinityPredictor",
      "visuals": [
        {
          "render": "structure3d",
          "data": {
            "title": "Predicted Complex Structure",
            "source": {
              "kind": "artifact",
              "artifact_id": "structure-446bae1bb4bbb329",
              "path": "/tmp/bsim-clones/remote-artifacts/2f7e5b91-c26a-4e02-8474-3f5a95a9312c/boltz_boltz2_affinity_predictor/request/request_model_0.cif"
            },
            "format": "mmcif",
            "annotations": [
              {
                "label": "Confidence Score",
                "value": 0.9206151366233826
              },
              {
                "label": "pTM",
                "value": 0.9331286549568176
              },
              {
                "label": "ipTM",
                "value": 0.9058650135993958
              },
              {
                "label": "Complex pLDDT",
                "value": 0.9243025779724121
              },
              {
                "label": "Affinity Prediction",
                "value": 2.184854030609131
              },
              {
                "label": "Binder Probability",
                "value": 0.5395844578742981
              }
            ],
            "initial_view": {
              "reset_camera": true
            }
          },
          "description": "Top-ranked Boltz structure prediction for the latest protein-ligand run."
        },
        {
          "render": "table",
          "data": {
            "title": "Boltz Summary",
            "columns": [
              "Metric",
              "Value"
            ],
            "rows": [
              [
                "Confidence Score",
                "0.9206151366233826"
              ],
              [
                "pTM",
                "0.9331286549568176"
              ],
              [
                "ipTM",
                "0.9058650135993958"
              ],
              [
                "Complex pLDDT",
                "0.9243025779724121"
              ],
              [
                "Affinity Prediction",
                "2.184854030609131"
              ],
              [
                "Binder Probability",
                "0.5395844578742981"
              ]
            ]
          },
          "description": "Key affinity and confidence metrics extracted from the latest Boltz outputs."
        }
      ]
    }
  ],
  "duration": 0.01,
  "communication_step": 0.01,
  "modules": [
    "boltz_boltz2_affinity_predictor"
  ],
  "lab_commit": "72d5c53a7961d9fdf6cb0c99b11c4fe7ca52a5613e876fb8f8ec11e4ce4651b0",
  "model_resolutions": [
    {
      "alias": "boltz_boltz2_affinity_predictor",
      "model_id": "embedded:owned/models/boltz_boltz2_affinity_predictor",
      "repo_full_name": null,
      "commit_sha": null
    }
  ],
  "module_ports": {
    "boltz_boltz2_affinity_predictor": {
      "inputs": [
        "ligand_smiles",
        "msa_path",
        "protein_sequence",
        "run_options"
      ],
      "outputs": [
        "affinity_summary",
        "confidence_summary",
        "run_metadata",
        "structure_artifacts"
      ]
    }
  },
  "dependency_installs": [],
  "dependency_policy_enabled": true
}