Problem
BioStride defines an abstract TechniqueSpecificPreparation class with subclasses for specific techniques (CryoEMPreparation, XRayPreparation, SAXSPreparation) to capture specialized sample prep info, but the schema provides no way to attach these objects to a SamplePreparation.
Current State
- Rich technique-specific classes exist: CryoEMPreparation (blot_time, blot_force), XRayPreparation (crystallization details), SAXSPreparation
- SamplePreparation has a preparation_type enum but no reference to technique-specific objects
- SamplePreparation does not inherit from TechniqueSpecificPreparation
- Important preparation parameters cannot be populated in examples
Impact
Critical preparation metadata risks being lost:
- Cryo-EM: blotting and plunge-freezing settings (blot_time, blot_force, etc.)
- X-ray crystallography: crystal growth conditions
- SAXS: technique-specific sample handling parameters
This gap forces ad-hoc workarounds or omission of essential laboratory details.
Suggested Solutions
Option 1: Subclass approach
Make technique-specific classes inherit from SamplePreparation:
- CryoEMPreparation is_a SamplePreparation
- XRayPreparation is_a SamplePreparation
- SAXSPreparation is_a SamplePreparation
Option 2: Polymorphic slot
Add a preparation_details slot to SamplePreparation that accepts instances of the appropriate technique-specific class based on preparation_type.
Alignment with Standards
This aligns with:
- OBI modeling where specific protocols are subclasses of generic protocol classes
- Real-world experimental reporting needs where preparation details are crucial for reproducibility
- FAIR data principles requiring complete method descriptions
Priority
High - Essential for comprehensive metadata capture and protocol reproducibility.
Problem
BioStride defines an abstract TechniqueSpecificPreparation class with subclasses for specific techniques (CryoEMPreparation, XRayPreparation, SAXSPreparation) to capture specialized sample prep info, but the schema provides no way to attach these objects to a SamplePreparation.
Current State
Impact
Critical preparation metadata risks being lost:
This gap forces ad-hoc workarounds or omission of essential laboratory details.
Suggested Solutions
Option 1: Subclass approach
Make technique-specific classes inherit from SamplePreparation:
Option 2: Polymorphic slot
Add a preparation_details slot to SamplePreparation that accepts instances of the appropriate technique-specific class based on preparation_type.
Alignment with Standards
This aligns with:
Priority
High - Essential for comprehensive metadata capture and protocol reproducibility.