Source code for models.measurement

from models.odm.datamodel import DataModel
from pydantic import Field
import datetime
from typing import Optional
from datetime import datetime, timezone
from typing import Literal
from pydantic import Field, AliasChoices

class Measurement(DataModel): 
    proposal_number:str
    facility:Literal["SNS", "HFIR", "LCLS"]
    instrument: Literal["REF_L"]
    laboratory:Literal["ORNL", "SLAC"]
    probe:Literal["neutrons", "xray", "other"]
    technique: Literal["Reflectivity"] 
    technique_description: str # prepend the technique value above of the raw data
    is_simulated:bool =False
    run_title:str
    run_number:Optional[str]
    run_start: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
    raw_file_path:str

    
[docs] class Reflectivity(Measurement): q_1_angstrom:list[float] = Field(default_factory=list) r:list[float] = Field(default_factory=list) d_r: list[float] = Field(default_factory=list) d_q: list[float] = Field(default_factory=list) measurement_geometry:str #float reduction_time: datetime = Field(default_factory=lambda: datetime.now(timezone.utc)) reduction_version: str
[docs] class EIS(Measurement): frequency:float duration:float real_z: float imaginery_z: float phase:float potential:str