Skip to content

Stream and Markers

stream(...) projects a macro sample into a stream of discrete units.

Marker panels can be declared with markers(...) and attached to a stream. This belongs with material-side workflows: it maps material from a container into unit-level iteration rather than describing a separate execution family.

Markers

text
let panel = markers(["CD3", "CD19"]);

markers([...]) declares a controlled set of marker names for later use. Marker names are not hard-coded by the grammar.

Stream

text
let events = stream(sample = cells, unit = single_cell, panel = panel);

Arguments:

ArgumentRequiredMeaning
sampleyesInput macro sample container.
unityesUnit type, such as single_cell, molecule, or ion.
panelnoMarker panel reference.

stream(...) returns a unit_stream_ref.

Unit Lifetime

Units do not exist independently outside the stream workflow. They are normally introduced by a repeat binding over a stream:

text
repeat cell in events {
    keep_tube << [cell];
}

When a unit is collected back into a physical container, use transfer syntax:

text
keep_tube << [cell];

Examples

text
let molecules = stream(sample = prepared_tube, unit = molecule);
let ions = stream(sample = ion_chamber, unit = ion);

Streams are for discrete unit workflows. They are not a general replacement for container transfer.

Released under the Apache-2.0 license.