Material Mutation and Transfer
Material mutation uses the << operator to move or merge material into a destination.
target << [source:5uL];The left side is the destination container. The source list on the right describes material sources and optional transfer quantities.
Quantified Transfer
The flow-cytometry protocol uses quantified transfer.
target << [source:5uL];This mutates runtime material state and appears in the execution plan as a material operation.
The quantity must carry a physical unit. This is valid:
target << [source:5uL];This is not a quantified transfer:
target << [source:1];Full Transfer
A source item can also be unquantified:
target << [source];That expresses full-transfer or merge semantics for the source item.
Do not mix quantified and unquantified source items in one transfer statement:
target << [source_a:5uL, source_b]; // invalid style mixMultiple Sources
Multiple sources can be listed:
target << [sample:80uL, buffer:20uL];Ordinary source lists mean that multiple sources flow into the same target. They do not imply ordered mapping across a group.
Source-Local Separation
A transfer source can select one side of a binary separation without first binding a named sep(...) group:
waste << [sample.partition(magnetic_program(duration = 5min))[1]:120uL];The selector is source-local. It partitions the source for this transfer, moves the selected slot into the target, and leaves the unselected material in the source container. It does not create an indexed group binding.
Use sep(...) instead when both slots need names or later reuse.
Ordered Mapping with series
For group targets, ordered mapping uses series(...).
group_ref << [series(stock, [5uL, 10uL, 20uL])];The value list must match the target group size. series(...) is only a mutation source-list form; it is not a general-purpose list mapping expression.
Unit Collection
Culsma also allows collecting a unit back into a container:
keep_tube << [cell];This is used with stream/unit workflows and belongs to more advanced authoring.
Same-Container No-Op
If a source item resolves to the same container as the target, the item is legal and is treated as a no-op at material execution.
What Transfer Is Not
<< no longer carries a source-level program argument. Actions such as vortexing, shaking, or stirring belong to agit(...), not to transfer syntax.
