Core Concepts
Culsma represents a laboratory protocol as source text that can be checked and executed by a kernel pipeline.
Protocol
A protocol is the top-level executable unit.
protocol FlowCytometryProtocol {
...
}Protocols contain declarations and statements. The CLI runs a protocol through parse, compile, validation, planning, runtime execution, and replay.
Content
Content describes the material identity being tracked. It uses a canonical kind and type, plus optional identifiers and metadata.
content(kind = formulation, type = buffer, code = "STAINBUF", attrs = { role: wash })Content identity is distinct from where the material is located.
Container
A container is a logical vessel identity that can hold content.
tube(label = "AcquisitionSample", capacity = 3000uL)Runtime material state tracks container contents, quantities, and metadata.
Operation
Operations are executable protocol actions. A common material operation is quantified transfer:
acquisition_sample << [working_cells:300uL, acquisition_buffer:700uL];Operations lower into plan steps and then execute through the runtime.
Environment
An environment block applies execution conditions to enclosed steps.
with env(thermal = 4C, duration = 30min) {
hold(working_cells);
}Environment conditions are execution context, not biological-result prediction.
Readout
Readout operations consume container or stream state and produce structured data references.
let cell_events = stream(sample = acquisition_sample, unit = single_cell, panel = immunophenotyping_panel);
let flow_events = img(sample = cell_events, quantity = customized, schema_ref = flow_event_schema, save_raw = true);