-
Notifications
You must be signed in to change notification settings - Fork 0
ES Deteccion de minimos
⚙️ Página generada — no la edites aquí. Origen:
docs/deteccion_minimos.md. Corrígela en el repositorio y el wiki se regenera solo.
Módulo: gui/minima_analysis.py · Clase: MinimaAnalysisMixin
Acción de GUI: Ajuste → Inicializar desde mínimos
Antes de ajustar, el usuario necesita un punto de partida razonable para los parámetros de cada componente. La detección automática de mínimos localiza los picos de absorción en el espectro (mínimos de transmisión) y los convierte en parámetros iniciales de sextetes, dobletes y singletes. El algoritmo combina detección multi-escala CWT y canal directo para ser robusto frente a:
- sextetes con líneas solapadas o de anchuras variables;
- dobletes estrechos que el CWT a escalas grandes podría fundir en un pico;
- espectros con ruido alto o línea base inclinada.
La absorción neta se calcula como:
donde
Se suaviza
Los umbrales son:
con factores core/param_overrides.py (tabla _PD).
La transformada wavelet continua (CWT) con la ondícula Ricker (Mexican hat):
se aplica a
Implementación con np.convolve (reemplaza scipy.signal.cwt eliminada en SciPy 1.12):
el kernel se convuelve con la señal en modo "same". Para evitar que el kernel
supere la longitud de la señal (que provocaría un ValueError por la semántica de
mode="same" con señales cortas), la semilongitud del kernel se clampea:
La cresta CWT (ridge) es el máximo entre escalas en cada canal:
Los picos en scipy.signal.find_peaks usando
los umbrales
Para rescatar dobletes estrechos que el CWT a escalas grandes podría fundir en un
único "pico", se buscan picos también en la absorción con suavizado fino (ventana
~0.15 mm/s, siempre impar). La absorción suavizada se renormaliza al rango de
Los índices CWT (
- Los picos directos son la lista base (evitan el artefacto de "pico de valle" que el CWT a escalas grandes puede generar entre dos líneas de un doblete).
- Se añade un pico CWT solo si no está entre dos picos directos consecutivos (señal de artefacto de valle) y no es duplicado de uno ya presente (distancia ≤ 1 canal).
Para cada pico fusionado:
- Si hay respuesta CWT positiva, la escala de mayor respuesta determina la
anchura:
$\Gamma \approx 2 \cdot a_\mathrm{best} \cdot \Delta v$ . - Si no hay respuesta CWT positiva, se estima el FWHM directamente sobre la señal suavizada fina: se buscan los cruces al 50 % del valor del pico a izquierda y derecha.
Los picos se ordenan por profundidad suavizada (descendente) y se seleccionan
greedily, añadiendo un pico solo si está a más de
Una vez detectados los mínimos, la lógica de inicialización (on_init_from_minima)
asigna componentes:
-
Heurística de forma (
_depth_profile_hint): si un pico domina en profundidad con posición < 2.5 mm/s → Singlete; si dos picos son comparables y la separación está en el rango doblete → Doblete. -
Búsqueda de sextete (
_best_sextet_from_peaks): ajuste lineal$v_j = \delta + (B_{hf}/B_0) \cdot r_j^{(33)}$ por mínimos cuadrados sobre combinaciones de 5–6 picos; se acepta si el RMS < umbral y el BHF es físico. -
Estimación con 2 picos visibles (
_try_2peak_sextet_estimate): si sólo hay 2 picos, se estima el BHF a partir del espaciado externo (líneas 1–2 o 5–6). - Componentes restantes: los picos no asignados forman dobletes (si la separación está en rango físico) o singletes adicionales.
Las profundidades iniciales se reescalan para que el modelo propuesto no exceda la absorción máxima de los datos.
- La CWT reemplaza a
scipy.signal.cwt + ricker(eliminadas en SciPy 1.12). - El clampeo del kernel (
half = min(max(5a,3), (N-1)//2)) corrige elValueError: could not broadcast input arrayque ocurría en señales cortas (~254 puntos tras el recorte de bordes del folding). - Los parámetros de la detección (umbrales, rangos, tolerancias) son configurables
en
core/param_overrides.pymediante_PD(peak detection) y_FI(fit init).
© 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