Docs

Files per shot

File Contents Reader
<shot>-imp.txt impurity spectral lines vs. time (\Delta t = 2 ms) read_imp
<shot>-rest.txt global signals: IpiFP, Wmhd, nedl_H1, Te_c;3, PECRH, PNI, Ipolsola, Zeff, ... read_rest
<shot>-lboN.txt radial profiles (ne, ...) at the IDA time closest to injection N read_lbo

-imp/-rest format: line 1 is Trace=<shot>/... npt=<n>, line 2 has
NOMBRE : ysc=<a> : yof=<b> for each signal, and the numeric columns follow
(t and the signals). read_imp returns a DataFrame with t and each
signal scaled as raw * ysc + yof.

Sign. W44_133 and Ipolsola come with ysc = -1, so the scaled column
is −(emission). Each signal's ysc is kept in df.attrs["ysc"], and
Shot.emission() returns the physical (positive) emission. Always fit on
emission().

Time in -lboN.txt. It is the time of the IDA profile, not the LBO
firing time (the offset ranges from −15 to +100 ms). Use the detected onset
(aug.analysis) as the time reference.

Folder tree and REGIME_MAP

build_catalog(data_path) walks data_path recursively and assigns metadata
from the folder name:

Folder regime species heating (checked in -rest)
EDA_Fe-LBO EDA Fe ECRH (0.4 to 1.2 MW)
EDA_Fe-LBO-H EDA Fe ECRH-high (~4.6 MW)
EDA_Fe-LBO-NBI EDA Fe NBI+ECRH
EDA_W-LBO EDA W ECRH (2 to 4.5 MW)
EDA_W-LBO-NBI EDA W NBI+ECRH
I-mode_Mo-LBO I-mode Mo ECRH
I-mode_Ni-LBO I-mode Ni ECRH
RMP_W-LBO RMP W NBI+ECRH (~6 + 1.6 MW)
H-mode_Fe-LBO, H-mode_Ni-LBO H-mode Fe/Ni (reserved, no data yet)

Folders with *-imp.txt files that are not in the map are skipped with a
warning. To add one, extend REGIME_MAP or pass regime_map= to
build_catalog / GroupShots.from_directory.

Default line (DEFAULT_SIGNALS)

The highest charge state available, which emits in the core: W44_133,
Fe23_203, Ni25_176, Mo31_152. The others (Fe14, Fe15, Ni16, Ni17, Mo30)
sit further out.

Quality control (aug.io.qc)

from aug.io.qc import check_files
qc = check_files(build_catalog(DATA_PATH))
qc[~qc.header_ok]          # trazas cuyo header dice otro shot
qc[qc.duplicate_of.str.len() > 0]

GroupShots.from_directory(..., flag_bad_files=True) (the default) runs it and
flags those shots in group.flagged. Known case: #38884, whose -imp/-rest
files are copies of #38900's.