#!/usr/bin/env cwl-runner cwlVersion: v1.2 class: Workflow id: inverse_fold label: "Extra 7: Inverse fold design" doc: | Catalog entry `inverse_fold` (Protocol surface, biolm-protocols catalog.json, protocol `biolm/inverse-fold-v1`). Structure-conditioned sequence design with ProteinMPNN from a backbone PDB. Runs via `biolm protocol run-local`. requirements: InlineJavascriptRequirement: {} inputs: pdb: type: File doc: "Backbone PDB file to condition sequence design on." batch_size: type: int default: 16 doc: "Number of designed sequences to sample." temperature: type: float default: 0.1 doc: "ProteinMPNN sampling temperature." protocol_file: type: File default: class: File location: ../protocols/inverse_fold/protocol.yaml doc: "Pinned protocol YAML. Default: in-repo protocols//protocol.yaml." backend: type: string default: platform doc: "'platform' (biolm.ai) or 'hub' (route task-model calls via hub_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 at most 2." output_dir: type: string? doc: "Optional pipeline output directory passed through to run-local." steps: build_inputs: run: class: ExpressionTool requirements: InlineJavascriptRequirement: {} inputs: pdb: File batch_size: int temperature: float demo: boolean outputs: inputs_json: File expression: | ${ var payload = { "pdb": inputs.pdb.contents, "batch_size": inputs.demo ? Math.min(2, inputs.batch_size) : inputs.batch_size, "temperature": inputs.temperature }; return { "inputs_json": { "class": "File", "basename": "inverse_fold.inputs.json", "contents": JSON.stringify(payload, null, 2) } }; } in: pdb: source: pdb loadContents: true batch_size: batch_size temperature: temperature demo: demo out: [inputs_json] run_protocol: run: ../tools/biolm-protocol-run-local.cwl in: backend: backend hub_url: hub_url biolm_token: biolm_token protocol_file: protocol_file inputs_json: build_inputs/inputs_json output_dir: output_dir out: [result] outputs: result: type: File outputSource: run_protocol/result doc: "JSON record with ProteinMPNN-designed sequences."