Input nodes¶
An input node holds the values you supply to a pipeline: input file paths and scalar parameters. It runs no tool, its key/value dictionary is its output, fed to downstream nodes through their connectors.
rf_in = g.add_input_node(
input_pdb="/vol/inputs/1l9h.pdb",
contigs="[150-150]",
num_designs="2",
)
Keys must match the downstream tool¶
For a value to reach a tool, its key must
match one of that tool’s declared input name fields, and that name must appear
as a {slot} in the tool’s command template. Read the names from the manifest:
bv show <tool> --format json
For example, bv show proteinmpnn --format json declares inputs pdb_path,
num_seq_per_target, sampling_temp, so the input node uses exactly those
keys. A value whose key matches no slot is silently dropped, which is the usual
cause of a parameter “not taking effect.” See Tools and the registry for reading manifests
in full.
Files vs. scalars¶
Both kinds of value are taken directly, biocomposer never rewrites a value you set yourself:
File paths (values that exist on disk) are staged into the tool’s sandbox at run time and the command receives the staged filename.
Scalars (numbers, short strings like
"[150-150]"or"0.1") are substituted literally into the command line.
Input nodes override upstream outputs¶
A node’s inputs are merged with input-node values applied last, so a value you
set on an input node overrides any value an upstream tool produced for the same
key. For example, if a step receives a generated pdb from upstream but you also
pass input_pdb=... on an input node into it, your input-node value is chosen. Only
set a key when you intend that override. See Input merging and key clashes for the full rule
(including which of two colliding tool outputs wins).
Multiple input nodes¶
A node may take several input nodes (plus one upstream tool). This is common with map and decision nodes, where one input node supplies the collection-producing tool and another supplies shared scalar parameters:
mpnn_in = g.add_input_node(num_seq_per_target="2", sampling_temp="0.1")
g.add_edge((rfdiffusion, proteinmpnn), (mpnn_in, proteinmpnn))
Reference¶
- class biocomposer.InputNode
Bases:
object- set_input(**kwargs)