Separation and Fractionation
Culsma separates material with sep(...) and creates ordered fractions with frac(...).
Both forms take a sample and a program.
sep(...)
sep(...) splits one container into a fixed two-slot group.
text
let g = sep(sample = lysate, program = centrifuge_program(drive = 12000g));The result is a sep_container_group. Access its slots with group[0] and group[1].
text
output << [g[0]:40uL];Separation Programs
sep(...) accepts mechanism-specific programs.
| Program | Required fields | Optional fields | Meaning |
|---|---|---|---|
centrifuge_program(...) | drive | keep_source | Centrifuge separation. |
magnetic_program(...) | none | duration, device | Magnetic separation. |
disrupt_program(...) | none | duration | Disruption or lysis-oriented separation. |
field_program(...) | field | duration | Field-driven separation. |
filtration_program(...) | membrane, drive | none | Filtration separation. |
phase_partition_program(...) | solvent | none | Phase partition. |
precipitation_program(...) | reagent | duration | Precipitation. |
Slot Meaning
The two slots have stable meanings determined by the program.
| Program | group[0] | group[1] |
|---|---|---|
centrifuge_program | supernatant | pellet |
magnetic_program | bound | flowthrough |
disrupt_program | lysate | debris_or_residue |
field_program | target_band_fraction | non_target_fraction |
filtration_program | filtrate | retentate |
phase_partition_program | target_phase | other_phase |
precipitation_program | precipitate | supernatant |
keep_source
keep_source is only for centrifuge_program(...).
text
let g = sep(
sample = lysate,
program = centrifuge_program(drive = 12000g, keep_source = pellet)
);keep_source = supernatant reuses the input container for group[0]. keep_source = pellet reuses the input container for group[1].
If keep_source is omitted, both slots are new containers.
frac(...)
frac(...) creates an ordered fraction group.
text
let fg = frac(
sample = tube,
program = density_gradient_program(axis = "density", order = "top_to_bottom", bins = 8)
);The result is a fraction_group. Access slots with fg[0], fg[1], and so on.
Fractionation Programs
| Program | Required fields | Meaning |
|---|---|---|
density_gradient_program(...) | axis, order, bins | Density or layer-based fractionation. |
chromatography_program(...) | axis, order, bins | Retention-order fractionation. |
Index Rules
Group indexes are zero-based.
sep_container_groupsupports onlygroup[0]andgroup[1].fraction_group[i]must be within0 <= i < binswhenbinsis known.- Slices, multidimensional indexes, and dynamic index semantics are not part of this authoring surface.
