Archivos por shot
| Archivo | Contenido | Lector |
|---|---|---|
<shot>-imp.txt |
líneas espectrales de impurezas vs. tiempo ( |
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_133eIpolsolatraenysc = -1, así que la columna
escalada es −(emisión). Elyscde cada señal queda endf.attrs["ysc"], y
Shot.emission()devuelve la emisión física (positiva). Para ajustar, usar
siempreemission().
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.