Skip to content

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.

text
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.

text
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.

text
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:

text
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.

text
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.

text
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);

Released under the Apache-2.0 license.