Changes From Source#
Changes level 2 makes to the data in the MAST archive: how it is resampled in time, and changes to values, grouped by level 2 dataset. The data files do not flag these changes. See also Release History.
Policy#
Action |
When |
|---|---|
Correct |
The cause is established, the true value is known independently, and the result can be checked against unaffected channels |
Withhold (publish NaN) |
The value is inconsistent with related channels and the correct value is unknown |
Keep |
The value records what a calculation was given, such as EFIT’s inputs |
Summary#
Dataset |
Variable |
UDA source |
Correction |
Shots |
|---|---|---|---|---|
|
AMB |
Withheld |
25366 onwards |
|
|
ASM |
Sign reversed |
24782–30473 |
|
|
XMB |
Sign reversed |
11708–24781 |
|
|
XMB |
Offset subtracted |
11708–30473 |
|
|
XMC |
Scaled to tesla |
All |
|
|
EFM |
Kept |
25470–25793 |
|
All variables |
EFM |
Missing values are NaN, not −999 |
All |
|
|
AMC |
Scaled to coil current |
All |
Scale factors#
Variable |
Channels |
Factor |
Shots |
Reason |
|---|---|---|---|---|
|
|
×0.5 |
All |
Parallel feed reads twice the coil current |
|
|
×12 |
All |
Current stored per turn |
|
|
×8 |
All |
Current stored per turn |
|
|
×23 |
All |
Current stored per turn |
|
|
×4 |
All |
Current stored per turn |
|
Every channel |
×2×10⁻⁶ |
All |
Voltage to tesla |
|
|
×−1 |
24782–30473 |
Wiring polarity |
|
|
×−1 |
11708–24781 |
Wiring polarity |
Unit conversions declared in the archive (such as kA to A) are not listed.
Time grids#
All datasets except thomson_scattering and wall are resampled onto uniform
grids with a zero-order hold: each grid point takes the most recent sample at or
before it. Grids start at −0.1 s (−0.01 s for spectrometer_visible).
Dataset |
Time axes |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Not every shot has time_omaha or time_bes.
Grid times are exact; a change can appear up to one step late.
Data before the grid start is not published. About 95% of shots have plasma onset between −0.13 s and −0.04 s; the earliest is −0.92 s.
thomson_scatteringkeeps the laser pulse times;wallhas no time axis.
magnetics#
Flux loop CC04 withheld (AMB)#
Field |
Value |
|---|---|
Variable |
|
UDA signal |
|
Shots |
25366 onwards |
Correction |
Withheld (NaN) |
Introduced |
Background. On shots 25470–25793, CC04 reads with its sign reversed relative to
the other centre column loops (CC03, CC05, CC07, CC09): slope −1.000, correlation
−0.9997 over 183 shots. From 25794 it is flat at about 6×10⁻⁵ Wb. EFIT’s
inputs hold the same values (see equilibrium).
Assumptions.
The cause is unknown, so we withhold rather than flip.
The last shot that agrees with the other loops is 25365 and the first reversed is 25470; nothing in between has plasma. We withhold from 25366.
141 of the 324 shots in 25470–25793 have no plasma or no CC04 data, so the whole window is withheld.
Change. CC04 is NaN from 25366. It keeps its place on flux_loop_channel, so the
array shape does not change.
Impact. Use NaN-aware reductions. The original values are unchanged in UDA
(AMB_FL/CC04). For earlier shots, see Known limitations.
Saddle coil field: M02, M08 and M012 sign-corrected (ASM)#
Field |
Value |
|---|---|
Variable |
|
UDA signal |
|
Shots |
24782–30473 |
Correction |
×−1 |
Introduced |
Background. These coils were wired with reversed polarity, and ASM_SAD applies a
fixed sign flip to compensate. The wiring was changed between shots 24742 and
24783, after which the flip reverses these coils relative to the others. The raw
signal (XMB_SAD) flips at the same point:
shot | raw M02 M08 M12 | analysed M02 M08 M12
24736 | -1.04 -1.00 -1.09 | +1.03 +0.99 +1.00
24741 | -1.03 -1.01 -1.07 | +1.03 +0.99 +1.00
| ---- wiring changed between 24742 and 24783 ----
24785 | +1.02 +0.98 +1.01 | -1.19 -1.07 -0.97
Each coil regressed on the median of the others: +1 agrees, −1 reversed.
Across the 12,778 shots with ASM_SAD, only these three coils stand out:
Channel |
Shots reversed |
Shots agreeing |
|---|---|---|
M02 |
814 |
4409 |
M08 |
825 |
4330 |
M012 |
815 |
4427 |
Every other coil |
40 or fewer (noise) |
about 5250 |
Assumptions. The analysed data agrees with the other coils before 24782 and is reversed from 24785, with no usable data in between. The sign is the only difference: once corrected, the three coils agree with the eight unaffected ones.
Change. ×−1 for shots 24782–30473; earlier shots unchanged.
Impact. Differs from ASM_SAD by a sign over 24782–30473.
Derived signals. UDA signals computed from these coils (ASM_SAD/D02 2-8,
ASM_SAD/D05 6-12 and the locked mode detector ASM_OUT) are not published.
Recompute them from the corrected coils if needed.
Saddle coil voltage: M02, M08 and M012 sign-corrected (XMB)#
Field |
Value |
|---|---|
Variable |
|
UDA signal |
|
Shots |
11708–24781 |
Correction |
×−1 |
Introduced |
The raw voltages follow the wiring, so these channels are reversed before the
wiring change: the opposite range to the saddle coil field. This variable is already
processed (offset subtracted, below), so it is corrected to the field’s sign
convention. Differs from XMB_SAD by a sign over 11708–24781.
Saddle coil voltage: offset subtracted (XMB)#
Field |
Value |
|---|---|
Variable |
|
UDA signal |
|
Shots |
11708–30473 |
Correction |
Mean of the first ten samples subtracted |
Introduced |
The raw voltages sit on an offset. Level 2 subtracts the mean of each channel’s
first ten samples, assuming they precede the plasma and the offset is constant;
any drift remains. Differs from XMB_SAD by a constant per channel.
Centre column Mirnov coils scaled to tesla (XMC)#
Field |
Value |
|---|---|
Variable |
|
UDA signal |
|
Shots |
All |
Correction |
×2×10⁻⁶ |
The archive stores these as raw voltages; level 2 multiplies by 2×10⁻⁶ to give tesla. The factor’s origin is undocumented and unverified, so treat absolute magnitudes with caution. Shape and timing are unaffected.
equilibrium#
CC04 kept in EFIT’s inputs (EFM)#
Field |
Value |
|---|---|
Variable |
|
UDA signal |
|
Shots |
25470–25793 |
Correction |
None |
Index 3 holds the reversed CC04 values EFIT was given (see
magnetics). They are kept as a record of the fit’s inputs; use
n_flux_loop_order to exclude them. flux_loop_reconstructed is unaffected.
EFIT’s flux loop weights and χ² (EFM_FWTSI, EFM_SILOP_CHISQ) are zero on these
shots, so whether EFIT used CC04 is unknown.
Missing values are NaN, not −999 (EFM)#
Field |
Value |
|---|---|
Variable |
All variables |
UDA signal |
EFIT data ( |
Shots |
All |
Correction |
Missing values are NaN |
Some archive EFIT data marks missing values as −999, which looks like a real value. Level 2 uses NaN; a check of ten shots (15000–30421) found no −999. Treat −999 as missing if you read EFIT data from UDA.
pf_active#
Coil currents scaled to the coil current (AMC)#
Field |
Value |
|---|---|
Variable |
|
UDA signal |
|
Shots |
All |
Correction |
Fixed factor per channel (see Scale factors) |
Introduced |
Background. The archive stores feed currents per turn. The solenoid’s parallel feed reads twice its coil current.
Change. Each coil is multiplied by its number of turns (12 for P2 inner, 8 for P2 outer and P3, 23 for P4 and P5, 4 for P6) and the solenoid is halved. Checked against EFIT’s PF current inputs, and by re-running FreeGSNKE on a case that failed unscaled.
Impact. The factors came in over three changes, so older files may be scaled differently. See Release History.
gas_injection#
Valve channels change across MAST (XDC)#
valve_voltage is the voltage on each valve; valve_target_voltage is the target
waveform for each valve group, G1–G12. Both come from UDA’s XDC gas signals.
The archive’s valve set changes over MAST, so valve_voltage has different
channels by shot range:
Shots |
|
|---|---|
1–25911 |
12, by target group: |
25912–26755 |
19 valves, including |
26756–28355 |
18: |
28356–30471 |
20: as above plus |
From 28356, labels in both variables are lower case (tc5a, g1). No data for
shots 25912–25936 or 28356–28451.
Targets and valves. From 25912, valve_voltage has fuelling_groups and
impurity_groups attributes mapping each target to its valves. The mapping comes
from MAST operations records, not the data.
Target |
Valves |
Kind |
|---|---|---|
|
|
Fuelling |
|
|
Fuelling |
|
|
Fuelling |
|
|
Fuelling |
|
|
Impurity |
|
|
Impurity |
|
|
Impurity |
|
|
Impurity |
|
|
Impurity |
|
|
Impurity |
|
|
Fuelling |
|
|
Fuelling |
The attributes are JSON with full UDA names; channel labels are the last part of each name:
import json
import xarray as xr
gas = xr.open_zarr("https://s3.echo.stfc.ac.uk/mast/level2/shots/30421.zarr", group="gas_injection")
groups = json.loads(gas.valve_voltage.attrs["fuelling_groups"])
label = lambda name: name.replace("/", "_").split("_")[-1]
valves = groups["/xdc/gas/t/g1"] # ["/xdc/gas/f/tc5a", "/xdc/gas/f/tc5b", "/xdc/gas/f/tc11"]
gas.valve_voltage.sel(valve_channel=[label(v) for v in valves])
Empty targets.
Fuelling targets (
G1–G4,G11,G12) on many shots, consistent with fuelling mode, where the valves share one flow request.G8from about shot 27300 (obsolete HEO valves).All targets from about shot 25800 to 27200; cause unknown.
The ECEL and HFS valves are intermittent and not published.
Known limitations#
Not fixed at the time of writing.
Data |
Limitation |
|---|---|
|
Empty: there is no |
|
The last three channels are |
|
Intermittently flat on 792 shots in 22372–25365, published as near-zero noise rather than NaN |
|
15 of the 19 loops in |
Flux loop |
Position (R = 1.7463 m, Z = −0.5322 m) does not mirror |
|
EFIT’s definition (boundary poloidal field), but the description gives the IMAS one, 4∫p dV / (R₀ μ₀ Ip²), which is about 20% lower (shot 30039, 0.3 s: 0.61 against 0.49). #158 |
|
|
|
Declared in W/m², but IMAS types it in W; unresolved |
Not published |
Halo currents ( |
Reporting a problem#
Open an issue on fair-mast with the signal, shot range and what you expected.