-
Notifications
You must be signed in to change notification settings - Fork 0
ES Formato de sesion
⚙️ Página generada — no la edites aquí. Origen:
docs/formato_sesion.md. Corrígela en el repositorio y el wiki se regenera solo.
Módulos: gui/session_io.py (GUI) · core/session.py (headless) · gui/state.py (ProjectState)
Menú: Archivo → Guardar sesión… / Archivo → Cargar sesión…
Una sesión JSON captura todo lo necesario para reproducir el estado de trabajo: el espectro, la calibración, el modelo de componentes, las opciones de ajuste, la configuración de distribución y el último resultado de ajuste. Permite cerrar la aplicación y retomar exactamente donde se dejó, o compartir un análisis completo.
El payload (idéntico entre la GUI Qt y la capa headless core.session) tiene esta
estructura de primer nivel:
{
"version": 1,
"program": "core.session",
"file_path": "/ruta/al/espectro.ws5",
"file_name": "espectro.ws5",
"counts": [ ... ], // cuentas crudas embebidas (N canales)
"calibration": { ... }, // dict de calibración o null
"state_and_parameters_text": "",
"model_state": { ... }, // ver abajo
"last_fit": { ... } // ver abajo
}Cuentas embebidas. El array
countsguarda el espectro crudo dentro del JSON, de modo que la sesión se puede recargar aunque el fichero original ya no exista. Al cargar, sifile_pathexiste se relee del disco; si no, se usan lascountsembebidas y se redobla con el folding point detectado.
Es el corazón de la sesión: define los componentes y todas las opciones del modelo
(ModelState.to_model_state_dict):
| Clave | Tipo | Contenido |
|---|---|---|
vars |
dict | Valores planos: vmax, center, baseline, slope, voigt_sigma, sat_scale, y s{idx}_{param} por componente |
fixed |
dict | Flags fijo/libre por cada clave de vars
|
sextet_enabled |
dict |
{idx: bool} — qué componentes están activos |
component_kind |
dict | {idx: "Sextete"/"Doblete"/"Singlete"/"Relajacion"/"BlumeTjon"/"NeelSize"} |
intensity_mode |
dict | {idx: "free"/...} |
quad_treatment |
dict | {idx: "1st_order"/...} |
fit_velocity, fit_center, fit_sigma
|
bool | Qué parámetros de calibración se ajustan |
line_profile |
str |
"Lorentziana" / "Voigt"
|
likelihood |
str |
"gauss" / "poisson"
|
robust_loss |
str |
"linear" / "soft_l1" / "huber"
|
absorber_model |
str |
"thin" / "thickness"
|
propagate_calib, global_opt
|
bool | Opciones avanzadas |
multistart_n |
int | Nº de reinicios multistart (0–10) |
n_components |
int | Nº de componentes |
constraints |
list | Restricciones lineales entre parámetros |
La GUI añade además claves propias al guardar: mode_combo_idx (modo discreto/
distribución/2D), dist_* (forma, regularización, ruta de distribución fija),
show_residual, show_legend, etc.
Resultado del último ajuste (vacío si no se ha ajustado):
"last_fit": {
"free_keys": ["s1_bhf", "s1_delta", ...],
"covariance": [[...]], // matriz de covarianza o null
"parameter_errors": { "s1_bhf": 0.3, ... },
"fit_statistics": { "chi2": ..., "red_chi2": ..., "aic": ..., ... },
"correlations": { ... },
"info_text": ""
}Un mismo model_state sirve como plantilla reutilizable. apply_template
(en ModelState) vuelca el modelo sobre el estado actual pero:
-
Ignora
center: cada espectro detecta su propio folding point. - Valida los enums: solo acepta tipos de componente, modos de intensidad y tratamientos cuadrupolares conocidos.
-
Fuerza
int3fijo:int3es la referencia NORMOS, siempre fija.
Esto permite cargar una plantilla de componentes (p.ej. "magnetita: 2 sextetes")
sobre cualquier espectro nuevo. Los ejemplos viven en data_sample/ como JSON.
core.session.HeadlessSession genera y consume el mismo formato:
from core.session import HeadlessSession, ModelState
import json
session = HeadlessSession(ModelState.defaults())
session.load_ws5("espectro.ws5", vmax=12.0)
session.apply_template_model_state(json.load(open("plantilla.json"))["model_state"])
result = session.run_fit() # {values, errors, stats, free_keys}
payload = session.session_payload() # mismo esquema que la GUI
json.dump(payload, open("sesion.json", "w"), indent=2, ensure_ascii=False)El CLI mossbauer_fit_cli.py usa exactamente este flujo.
El formato es compatible hacia atrás con las sesiones de la antigua GUI Tk. Al cargar sesiones antiguas:
- Sin
mode_combo_idx: el modo se infiere dedist_variable(BHF→1, ΔEQ→2, IS→3, variantes 2D→4/5/6). -
dist_refine_global(campo legacy de v4.5): se ignora silenciosamente. - Claves desconocidas: se ignoran sin error.
© Jorge Sánchez Marcos, Nieves Menéndez González — Departamento de Química Física, UAM · Wiki generado desde docs/ para Fitbauer v5.0.0
Fitbauer v5.0.0
Start
- Home
- Installation
- User flows Data
- Folding
- Calibration (33 T)
- Spectrum comparison Fitting
- Distribution fitting
- Peak detection
- Profile likelihood
- Batch fitting Reference
- Command-line tools
- NORMOS (.JOB)
- Session format
- Sextet model (spec)
- Architecture
Inicio
- Inicio
- Instalación
- Flujos de usuario Datos
- Plegado (folding)
- Calibración (33 T)
- Comparación de espectros Ajuste
- Distribuciones
- Detección de mínimos
- Verosimilitud perfilada
- Ajuste en serie Referencia
- Línea de comandos
- NORMOS (.JOB)
- Formato de sesión
- Modelo de sextete (spec)
- Arquitectura