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.
Protocol Operations
| Family | Pages |
|---|---|
| Material mutation | Material Mutation and Transfer, Stream and Markers |
| Material handling | Agitation |
| Environment application | Environment Application |
| Binary separation | Separation and Fractionation |
| Ordered fractionation | Separation and Fractionation |
| Readout | Readout, Data Schema |
| Execution requirements | Execution Requirements |
| Control flow | Control Flow and Schedule |
Each page uses runnable examples where the concept has a small source example.
