Files per shot
| File | Contents | Reader |
|---|---|---|
<shot>-imp.txt |
impurity spectral lines vs. time ( |
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_133andIpolsolacome withysc = -1, so the scaled column
is −(emission). Each signal'syscis kept indf.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.