diff --git a/mpcontribs-lux/mpcontribs/lux/projects/alab/schemas/experiments.py b/mpcontribs-lux/mpcontribs/lux/projects/alab/schemas/experiments.py index d242ad272..6d6d0018e 100644 --- a/mpcontribs-lux/mpcontribs/lux/projects/alab/schemas/experiments.py +++ b/mpcontribs-lux/mpcontribs/lux/projects/alab/schemas/experiments.py @@ -40,11 +40,27 @@ class Experiment(BaseModel, extra="forbid"): description="Root experiment type (NSC, Na, PG, MINES, TRI)" ) + global_formula: str = Field( + description=( + "The canonical formula for the target material, independent of per-run precursor adjustments." + "Represents what the experiment was ultimately trying to synthesize. This should be same as `formula`." + ), + ) + experiment_subgroup: str | None = Field( default=None, description="Experiment subgroup (e.g., NSC_249, Na_123)" ) - target_formula: str = Field(description="Target chemical formula") + target_formula: str | None = Field( + default=None, + description=( + "The formula used internally to determine precursor weights." + "May differ from the true intended formula (global_formula) due to experimental" + "constraints (e.g. oxygen mass balancing corrections, excess" + "alkali for battery materials). Not always a chemically meaningful" + "representation of what was attempted. Can be null if there is no adjustment for experiment." + ), + ) last_updated: datetime = Field(description="Last modification timestamp") @@ -56,6 +72,11 @@ class Experiment(BaseModel, extra="forbid"): default=None, description="Optional notes about the experiment" ) + precursor_powders: list[str] | None = Field( + default=None, + description="List of precursor powder names used in the experiment", + ) + # === Heating fields (prefix: heating_) === heating_method: Literal["standard", "atmosphere", "manual", "none"] | None = Field( default=None, description="Heating method used" @@ -85,6 +106,10 @@ class Experiment(BaseModel, extra="forbid"): default=None, description="Whether low temperature calcination was used" ) + heating_furnace_name: str | None = Field( + default=None, description="Heating furnace type" + ) + # === Recovery fields (prefix: recovery_) === recovery_total_dosed_mass_mg: float | None = Field( default=None, description="Total mass of all powders dosed in mg"