torchcell.datamodels.schema.PreCulture

class PreCulture(*, provenance_gaps: list[~torchcell.verification.sourced.ProvenanceGap] = <factory>, source: ~torchcell.datamodels.schema.PreCultureSource, medium: ~torchcell.datamodels.schema.Media | None = None, generations: float | None = None, duration_hours: float | None = None, od600_at_transfer: float | None = None, source_label: str | None = None, provenance: list[~torchcell.verification.sourced.SourcedValue] = <factory>)[source]

Bases: ProvenanceGapMixin

The culture step BEFORE treatment, which sets the cells’ state at time zero.

A signed generation count in a source (Hillenmeyer -5gen vs 5gen) encodes two facts: the magnitude is the treatment exposure (Environment.duration_generations), and the SIGN says whether a pre-culture happened (negative = frozen_stock; positive = a YPD log-phase pre-culture of about 10 generations). source_label keeps the source token verbatim so the split is auditable. medium is None for a frozen_stock start.

model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'frozen': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].