Docs

Archivos por shot

Archivo Contenido Lector
<shot>-imp.txt líneas espectrales de impurezas vs. tiempo (\Delta t = 2 ms) read_imp
<shot>-rest.txt señales globales: IpiFP, Wmhd, nedl_H1, Te_c;3, PECRH, PNI, Ipolsola, Zeff, ... read_rest
<shot>-lboN.txt perfiles radiales (ne, ...) en el instante IDA más cercano a la inyección N read_lbo

Formato de -imp/-rest: la línea 1 es Trace=<shot>/... npt=<n>, la línea
2 tiene NOMBRE : ysc=<a> : yof=<b> por señal, y después vienen las columnas
numéricas (t y las señales). read_imp devuelve un DataFrame con t y
cada señal escalada como raw * ysc + yof.

Signo. W44_133 e Ipolsola traen ysc = -1, así que la columna
escalada es −(emisión). El ysc de cada señal queda en df.attrs["ysc"], y
Shot.emission() devuelve la emisión física (positiva). Para ajustar, usar
siempre emission().

Tiempo de -lboN.txt. Es el tiempo del perfil IDA y no el disparo del
LBO (el desfase va de −15 a +100 ms). Como referencia temporal, usar el
onset detectado (aug.analysis).

Árbol de carpetas y REGIME_MAP

build_catalog(data_path) recorre data_path recursivamente y asigna
metadatos según el nombre de la carpeta:

Carpeta régimen especie calefacción (verificada en -rest)
EDA_Fe-LBO EDA Fe ECRH (0.4 a 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 a 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 (reservadas, aún sin datos)

Las carpetas con *-imp.txt que no están en el mapa se omiten con un aviso.
Para agregar una, extender REGIME_MAP o pasar regime_map= a
build_catalog / GroupShots.from_directory.

Línea por defecto (DEFAULT_SIGNALS)

Es la de mayor carga disponible, que emite en el núcleo: W44_133,
Fe23_203, Ni25_176, Mo31_152. Las otras (Fe14, Fe15, Ni16, Ni17, Mo30)
son más periféricas.

Control de calidad (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) (el default) lo corre y
marca esos shots en group.flagged. Caso conocido: #38884, cuyos
-imp/-rest son copia de los de #38900.