#!/usr/bin/env cwl-runner cwlVersion: v1.2 class: Workflow id: structure_predict label: "Core 1: Structure prediction (ESMFold / Boltz-2)" doc: | Catalog entry `structure_predict` (Model surface, biolm-protocols catalog.json). Predicts 3D structure for a set of sequences with a single BioLM structure model. No protocol orchestration needed - this is a direct `biolm model run` call. requirements: InlineJavascriptRequirement: {} StepInputExpressionRequirement: {} inputs: sequences_file: type: File doc: "FASTA (or CSV/JSON) file of sequences to fold. See examples/structure_predict.job.yml." model_name: type: string default: esmfold doc: "Structure model slug: esmfold (primary) or boltz-2 (optional, per catalog.json)." backend: type: string default: platform doc: "'platform' (biolm.ai) or 'hub' (route via hub_url / BIOLM_BASE_API_URL)." hub_url: type: string? doc: "Hub gateway base URL, required when backend=hub." biolm_token: type: string? doc: "BIOLM_TOKEN; omit to use the ambient environment or ~/.biolm/credentials." demo: type: boolean default: false doc: "Cheap smoke-test mode: caps batch_size to 1 for a fast, low-cost run." steps: fold: run: ../tools/biolm-model-run.cwl in: backend: backend hub_url: hub_url biolm_token: biolm_token model_name: model_name action: valueFrom: "predict" input_file: sequences_file batch_size: source: demo valueFrom: "$(self ? 1 : null)" progress: valueFrom: $(false) out: [result] outputs: structures: type: File outputSource: fold/result doc: "JSON array of {pdb, mean_plddt, ...} records, one per input sequence."