Skip to content

Implement Database for Laser Beams, Experiments, and Facilities #10

@szabo137

Description

@szabo137

Description:

Design and implement a structured database to store and query information about laser systems, electron beams, experiments, and facilities.
The goal is to clearly separate generic (idealized) definitions from deployed (real-world) systems and to provide a consistent data model accessible from Julia.

Planned Structure:

  1. Generic Definitions: canonical laser and beam templates (e.g. Ti:Sapphire, GaussianElectronBeam).
  2. Deployed Systems: real-world systems at specific facilities (e.g. RELAX @ HiBEF).
  3. Experiments: combinations of deployed systems with collision partners.
  4. Facilities: top-level containers grouping systems and experiments.

Core Deliverables:

  • Define corresponding Julia structs (GenericLaser, DeployedLaser, ColliderExperiment, Facility).
  • Implement JSON-based storage for all entities (e.g. generic_lasers.json, facilities.json, ...).
  • Provide a Database module for loading and querying entries.
  • Add example data and usage patterns.
  • Include unit tests for parsing, linking, and querying the database.

Open Questions:

  • Should links between entries (e.g. facility ↔ experiment) be represented as strings, symbols, or singleton types?
  • Is there a Julia package suitable for storing bibliographic references (BibTeX-like) independent of citation format?

Example Queries:

  • path to the database
Database.DATAPATH 
  • reading all entries of a kind
Database.all_lasers()
Database.all_electrons()
Database.all_experiments()
Database.all_facilities()
  • contributing certain entry
Database.contribute!(::AbstractLaserBeam)
Database.contribute!(::AbstractElectronBeam)
Database.contribute!(::AbstractExperiment)
Database.contribute!(::AbstractFacility)

Next Steps:

  • Define and implement data model structs
  • Implement JSON schema and IO
  • Build Database query interface
  • Add initial dataset and tests

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions