Docs

aug analiza descargas de ASDEX Upgrade (AUG) con inyecciones LBO. Lee las
trazas (-imp, -rest) y los perfiles (-lboN), detecta y caracteriza cada
inyección, ajusta el tiempo de confinamiento de impurezas \tau_\mathrm{imp}
y hace las figuras.

Versión actual: 0.5.0 (ver el changelog).

Documento Contenido
Instalación y uso rápido esta página
Datos y lectura (aug.io) formato de archivos, árbol de carpetas, REGIME_MAP, QC
Shot y GroupShots objetos principales y sus métodos
Pipeline de inyecciones (aug.analysis, aug.models) método paso a paso, columnas de la tabla, flags
Figuras (aug.plot) funciones de gráficos
Comparación entre especies (aug.analysis.compare) métricas de forma, subida y τ normalizados
Parámetros de plasma (aug.analysis.plasma) τ_E, H98, I_RMP, gradientes de borde por inyección
W44+ con Aurora (aug.analysis.atomic) balance de ionización del W, ventana de la línea W44, LBO de juguete
Simulación LBO con Aurora (aug.analysis.aurora_lbo) transporte completo de Aurora y ajuste de D, v a las curvas medidas
Changelog cambios por versión

Instalación

El pyproject.toml está en asdex-upgrade/, no en la raíz del repo. El
proyecto se maneja con uv:

cd /ruta/a/tokamak-uc-repo/asdex-upgrade
uv sync        # crea .venv, instala aug -e y todo lo demás

Uso rápido

from aug import GroupShots

group = GroupShots.from_directory(DATA_PATH, name="AUG")   # escanea carpetas + QC de archivos
group.summary()                                            # un renglón por shot
group.flagged                                              # shots con archivos malos (ej. #38884)

shot = group[39428]
t, I_W = shot.emission()              # emisión física de la línea de núcleo (W44_133 con signo corregido)
shot.find_injections()                # inyecciones de -lboN.txt + detectadas en la señal

res = shot.analyze_injections()       # pipeline completo -> InjectionSet
res.table[["inj", "t_onset", "t_onset_to_peak_ms",
           "tau_1exp_ms", "tau_slow_2exp_ms", "recommended", "tau_imp_ms", "flags"]]

# todo el dataset (Fe, Ni, Mo, W)
res_all = group.analyze_injections()
res_all.table.to_csv("tau_por_inyeccion.csv", index=False)

# figuras
from aug.plot.injections import plot_decay_fits, plot_aligned_injections
plot_decay_fits(res_all, res_all.table.query("species == 'Fe'"))

El notebook asdex-upgrade/notebooks/09W4/09W4.ipynb tiene un ejemplo
completo y comentado.

Estructura

src/aug/
├── __init__.py          Shot, GroupShots, Spectrum
├── shot.py              Shot: una descarga
├── groups.py            GroupShots: colección de Shot
├── spectrum.py          Spectrum (EUV; formato aún pendiente)
├── io/
│   ├── traces.py        read_imp, read_rest, build_catalog, REGIME_MAP, DEFAULT_SIGNALS
│   ├── profiles.py      read_lbo, read_lbo_profiles
│   └── qc.py            check_files (header Trace= y duplicados MD5)
├── analysis/
│   ├── injections.py    find_injections, characterize_injection, analyze_shot, ...
│   ├── compare.py       comparison_table, decay_shape, multiline_timing, ...
│   ├── plasma.py        parameter_table, profile_gradients, h98_scaling, ...
│   ├── atomic.py        load_w_atom_data, w44_profile_metrics, toy_lbo_signal, ...
│   └── aurora_lbo.py    make_sim, run_lbo, fit_injection (Aurora completo)
├── models/
│   └── exponential.py   fit_single_exp, fit_double_exp, select_decay_model, ...
└── plot/
    ├── shot.py          figuras de un shot (legacy v0.1)
    ├── group.py         figuras de un grupo (legacy v0.1)
    └── injections.py    figuras del pipeline de inyecciones (v0.2)