Skip to content

Technique-Specific Sample Preparation Details Unused #3

@dragon-ai-agent

Description

@dragon-ai-agent

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions