torchcell.datamodels.schema.CrisprConstruct
- class CrisprConstruct(*, effector: str, guide_sequence: str | None = None, n_guides: int | None = None, library_pool: str | None = None, effector_plasmid_ref: ArtifactRef | None = None)[source]
Bases:
ModelStrictThe engineered CRISPR machinery introduced to perturb a gene – a first-class MATERIAL ENTITY (the guide RNA + Cas effector we actually put in the cell).
Composed (field
crispr) onto every CRISPR perturbation leaf so the guide payload is defined ONCE and shared across two axes: an ACTIVE-Cas cut that deletes a gene (CrisprDeletionPerturbationon the presence/absence axis) and a DEAD-Cas guide-directed effector that modulates expression (CrisprActivationPerturbation/CrisprInterferencePerturbationon the expression axis). The CRISPR tool is thus orthogonal to the outcome axis – same guide-directed machinery, different consequence set by the effector.effectoris the Cas fusion (sourced, never guessed; e.g.SaCas9,dSpCas9-RD1152,dLbCas12a-VP,dCas9-Mxi1).guide_sequenceis the short spacer INLINED as the perturbation identity; it is nullable so a screen that identifies only target genes (Mormino: spacers live upstream in the source library) can scaffold-and-defer.effector_plasmid_refis an off-graphArtifactRefleftNonetoday (“field now, plasmid later”) so upgrading to full-plasmid / SBOL capture is a NON-breaking extension – the record shape does not change when fidelity is upgraded. Design:[[plan.torchcell-crispr-expression-perturbation.2026.07.12]].- model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].