Skip to content

Language Guide ​

Culsma organizes source syntax around protocol operations: material mutation, environment application, separation, fractionation, readout, execution requirements, and control flow. Supporting forms such as groups, streams, marker panels, schemas, and schedules are placed next to the operation they serve.

This guide explains protocol authoring through runnable examples. For normative grammar, operator contracts, diagnostics, execution semantics, and conformance requirements, use the Culsma Language Reference.

Typed Parameters ​

A qualified member, such as ReadoutQuantity.FLUORESCENCE, identifies both the parameter family and the value. A member from another family is invalid even if its text is identical. Aliases and protocol arguments preserve that identity. Each operation still applies its own allowed-value and related-parameter rules.

Closed types such as PlateFormat and ScheduleMode have fixed members. Open parameters such as observation units, content attributes, chromatography axes, filtration drives and data kinds accept explicitly installed Python enum subclasses. A subclass has one enum family and a stable ID/version. Culsma source references installed members; it does not declare Python classes or import them. Legal bare tokens and strings remain accepted at compatibility boundaries. Historical custom text remains text and does not install an extension.

Foundations ​

Start with these pages to learn the objects that later protocol operations use.

  1. Protocols and Bindings
  2. Containers and Content
  3. Units
  4. Groups and Plate Selectors

Protocol Operations ​

FamilyPages
Material mutationMaterial Mutation and Transfer, Stream and Markers
Material handlingAgitation
Environment applicationEnvironment Application
Binary separationSeparation and Fractionation
Ordered fractionationSeparation and Fractionation
ReadoutReadout, Data Schema
Execution requirementsExecution Requirements
Control flowControl Flow and Schedule

Each page uses runnable examples where the concept has a small source example.

Released under the Apache-2.0 license.