Skip to content

Commit c6c662d

Browse files
authored
Merge pull request #2070 from materialsproject/alab-schema
Alab (Experiment) schema modification
2 parents c857d37 + 301c4d6 commit c6c662d

1 file changed

Lines changed: 26 additions & 1 deletion

File tree

mpcontribs-lux/mpcontribs/lux/projects/alab/schemas/experiments.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,27 @@ class Experiment(BaseModel, extra="forbid"):
4040
description="Root experiment type (NSC, Na, PG, MINES, TRI)"
4141
)
4242

43+
global_formula: str = Field(
44+
description=(
45+
"The canonical formula for the target material, independent of per-run precursor adjustments."
46+
"Represents what the experiment was ultimately trying to synthesize. This should be same as `formula`."
47+
),
48+
)
49+
4350
experiment_subgroup: str | None = Field(
4451
default=None, description="Experiment subgroup (e.g., NSC_249, Na_123)"
4552
)
4653

47-
target_formula: str = Field(description="Target chemical formula")
54+
target_formula: str | None = Field(
55+
default=None,
56+
description=(
57+
"The formula used internally to determine precursor weights."
58+
"May differ from the true intended formula (global_formula) due to experimental"
59+
"constraints (e.g. oxygen mass balancing corrections, excess"
60+
"alkali for battery materials). Not always a chemically meaningful"
61+
"representation of what was attempted. Can be null if there is no adjustment for experiment."
62+
),
63+
)
4864

4965
last_updated: datetime = Field(description="Last modification timestamp")
5066

@@ -56,6 +72,11 @@ class Experiment(BaseModel, extra="forbid"):
5672
default=None, description="Optional notes about the experiment"
5773
)
5874

75+
precursor_powders: list[str] | None = Field(
76+
default=None,
77+
description="List of precursor powder names used in the experiment",
78+
)
79+
5980
# === Heating fields (prefix: heating_) ===
6081
heating_method: Literal["standard", "atmosphere", "manual", "none"] | None = Field(
6182
default=None, description="Heating method used"
@@ -85,6 +106,10 @@ class Experiment(BaseModel, extra="forbid"):
85106
default=None, description="Whether low temperature calcination was used"
86107
)
87108

109+
heating_furnace_name: str | None = Field(
110+
default=None, description="Heating furnace type"
111+
)
112+
88113
# === Recovery fields (prefix: recovery_) ===
89114
recovery_total_dosed_mass_mg: float | None = Field(
90115
default=None, description="Total mass of all powders dosed in mg"

0 commit comments

Comments
 (0)