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
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)