MatLens · Ecuaciones y modelos

Resonancia magnética nuclear (RMN)

Procesado 1D de RMN de FID a espectro, en el orden habitual: retardo de grupo, offset DC, apodización, relleno con ceros, transformada de Fourier, fase, línea base, referenciado e integrales. Todo el procesado está en matlens/nmr/processing.py::process_fid; la lectura de los ficheros del fabricante (matlens/nmr/io.py, matlens/nmr/mnova.py) solo aporta el FID complejo y los parámetros de adquisición (NMRAcq: SW, SF, O1, núcleo y retardo de grupo).

Origen físico. Tras el pulso, la magnetización transversal precesa a la frecuencia de Larmor de cada núcleo, desplazada por el apantallamiento químico, y decae con T_2^*. El receptor de detección en cuadratura registra la señal compleja (FID) en el sistema rotatorio de la portadora:

f(t) = \sum_k A_k\, e^{i\phi_\text{inst}}\, e^{2\pi i \nu_k t}\, e^{-t/T_{2,k}^*} + \text{ruido}

La transformada de Fourier de cada término es una lorentziana compleja centrada en \nu_k de semianchura 1/(\pi T_2^*) (FWHM en Hz); su parte real (absorción) es positiva y simétrica solo cuando la fase total es cero, de ahí la corrección de fase. El área de la absorción es proporcional a A_k, es decir, al número de núcleos equivalentes, lo que justifica la integración cuantitativa. Supuestos: relajación completa entre barridos (d_1 \gtrsim 5T_1), excitación uniforme en toda la anchura espectral y respuesta lineal del receptor. Si no se cumplen (repetición rápida, NOE en ¹³C desacoplado, pulsos selectivos), las integrales dejan de ser proporcionales al número de núcleos, y MatLens no lo detecta.

Retardo de grupo y offset DC

Código: matlens/nmr/processing.py::remove_group_delay, matlens/nmr/processing.py::process_fid

Los espectrómetros Bruker con filtro digital (DQD) entregan un FID cuyas primeras g_d muestras son el transitorio del filtro. La parte entera \lfloor g_d \rfloor (puntos) se elimina con un desplazamiento circular del FID (np.roll, de modo que esos puntos pasan al final). La parte fraccionaria g_d - \lfloor g_d \rfloor equivale a un retardo temporal, que en frecuencia es una fase lineal; se corrige tras la FT como fase de primer orden

\phi_1^\text{gd} = -360^\circ\,(g_d - \lfloor g_d \rfloor), \qquad \text{pivote } p = 0.5 .

El offset DC es la media compleja del último 5 % del FID (\max(\lfloor N/20\rfloor, 1) puntos), donde la señal ya ha decaído, y se resta a todo el FID. Si el FID está truncado (la señal no ha decaído al final de la adquisición), esa media contiene señal y la resta introduce un artefacto en el centro del espectro.

SímboloSignificadoUnidades
g_dretardo de grupo del filtro digital (GRPDLY de Bruker)puntos
Nnúmero de puntos complejos del FID—

Apodización, relleno con ceros y transformada

Código: matlens/nmr/processing.py::apodize, matlens/nmr/processing.py::zero_fill, matlens/nmr/processing.py::fourier

f_\text{em}(t_j) = f(t_j)\,e^{-\pi\,\mathrm{LB}\,t_j}, \qquad t_j = \frac{j}{\mathrm{SW}}
f_\text{sine}(j) = f(j)\cos\!\left(\frac{\pi}{2}\frac{j}{N}\right)
SímboloSignificadoUnidades
\mathrm{LB}ensanchamiento exponencial (por defecto 0.3)Hz
\mathrm{SW}anchura espectral (inversa del intervalo de muestreo)Hz
Nnúmero de puntos del FID—
jíndice de muestra, 0 \dots N-1—

Significado. Multiplicar por e^{-\pi\,\mathrm{LB}\,t} convoluciona cada línea lorentziana con otra de FWHM \mathrm{LB}: la anchura observada pasa a ser 1/(\pi T_2^*) + \mathrm{LB}. Es el filtro adaptado para una línea lorentziana cuando \mathrm{LB} iguala la anchura natural (máxima relación señal/ruido), a costa de resolución. El coseno (campana seno desplazada 90°) atenúa el final del FID para suprimir los artefactos de truncamiento (sinc wiggles), sin desplazar las áreas. La ventana seno solo se usa llamando a apodize(kind="sine"); process_fid aplica siempre la exponencial.

Relleno con ceros hasta 2^{\lceil \log_2(N\cdot z_f)\rceil} puntos (z_f = 2 por defecto). El relleno interpola el espectro (resolución digital \mathrm{SW}/N_\text{fft} Hz/punto); con z_f \ge 2 recupera la información de la parte imaginaria en la real, pero no mejora la resolución física. Antes de la FFT el primer punto se multiplica por 0.5 (corrección del primer punto: la regla del trapecio para la integral de Fourier en t=0; sin ella aparece un escalón de línea base). El espectro se centra con fftshift y se invierte para que los ppm decrezcan de izquierda a derecha.

Eje de desplazamiento químico y referenciado

Código: matlens/nmr/processing.py::ppm_axis, matlens/nmr/processing.py::reference

\delta_j = \delta_\text{portadora} + \frac{\nu_j}{\mathrm{SF}}, \qquad \nu_j \in \left[\tfrac{\mathrm{SW}}{2}, -\tfrac{\mathrm{SW}}{2}\right), \qquad \delta_\text{portadora} = \frac{O_1}{\mathrm{SF}}

con \mathrm{SF} en MHz, O_1 y \nu en Hz y \delta en ppm (Hz/MHz = ppm; si el fabricante da la ppm de la portadora se usa directamente). Los n valores de \nu_j se toman con linspace(SW/2, -SW/2, n, endpoint=False). El desplazamiento químico se define respecto a una referencia, \delta = (\nu - \nu_\text{ref})/\nu_\text{ref}\times10^6; la aproximación \nu_\text{ref} \approx \mathrm{SF} introduce un error relativo del orden de 10^{-6}\,\delta, despreciable.

El referenciado desplaza el eje: \delta \leftarrow \delta + (\delta_\text{verdadero} - \delta_\text{observado}). Tablas de disolventes: ¹H (CDCl₃ 7.26, DMSO-d6 2.50, D₂O 4.79, CD₃OD 3.31, acetona-d6 2.05, C₆D₆ 7.16, CD₃CN 1.94, TMS 0.00) y ¹³C (CDCl₃ 77.16, DMSO-d6 39.52, CD₃OD 49.00, acetona-d6 29.84, C₆D₆ 128.06, CD₃CN 1.32, TMS 0.00), valores de Fulmer et al. (2010). El valor del agua residual (D₂O 4.79) depende de la temperatura; MatLens no lo corrige.

Corrección de fase y fase automática ACME

Código: matlens/nmr/processing.py::phase, matlens/nmr/processing.py::autophase_acme

S'(j) = S(j)\,\exp\!\left[i\,\frac{\pi}{180}\left(\phi_0 + \phi_1\left(\frac{j}{n} - p\right)\right)\right]

con \phi_0, \phi_1 en grados y pivote p = 0.5 (centro del espectro). \phi_0 corrige el desfase del receptor (igual para todas las frecuencias); \phi_1, lineal en frecuencia, corrige el retardo entre el pulso y el inicio de la adquisición.

Algoritmo de fase automática. Si process_fid no recibe \phi_0 y \phi_1, minimiza, sobre el espectro normalizado a \max\lvert S\rvert = 1:

J(\phi_0,\phi_1) = -\sum_j h_j \ln(h_j + 10^{-12}) + \gamma\, n \sum_{R_j<0} R_j^2, \qquad h_j = \frac{\lvert R_{j+1}-R_j\rvert}{\sum_k \lvert R_{k+1}-R_k\rvert}

con R = \mathrm{Re}\,S' y \gamma = 5\times10^{-3}. El primer término es la entropía de Shannon de la primera derivada: un espectro bien faseado concentra la variación en pocos puntos (líneas estrechas y simétricas) y su entropía es mínima. El segundo penaliza la absorción negativa, que distingue la fase correcta de la invertida 180°.

  1. Puntos de partida: \phi_0 \in \{-180, -135, \dots, 135\}^\circ (8 valores), \phi_1 = 0.
  2. Desde cada uno, Nelder–Mead con xatol = 0.01, fatol = 1e-10, maxiter = 3000; sin cotas.
  3. Se conserva el resultado de menor J y \phi_0 se lleva a [-180, 180); \phi_1 no se reduce.

No se calcula incertidumbre de las fases. La fase automática falla con espectros dominados por una sola línea intensa de disolvente, con líneas anchas o dispersivas por naturaleza, o con mucho ruido; en esos casos conviene fijar las fases a mano.

Nota (diferencia con la literatura): la penalización de intensidades negativas es \gamma\, n \sum R_j^2 sobre el espectro normalizado, una forma simplificada de la función de penalización de Chen et al.

Referencia: Chen, Weng, Goh & Garland, J. Magn. Reson. 158 (2002) 164–168, doi:10.1016/S1090-7807(02)00069-1.

Línea base

Código: matlens/nmr/processing.py::process_fid

Por defecto se resta una línea base arPLS (matlens/core/spectra.py, mínimos cuadrados penalizados asimétricamente reponderados; véase la página de matemáticas) con \lambda = 10^7, calculada sobre el eje en ppm creciente y aplicada a la parte real. Se puede desactivar (baseline_method=None). Una línea base demasiado flexible (λ pequeño) absorbe parte de las señales anchas y reduce sus integrales.

Integración

Código: matlens/nmr/processing.py::integrate_regions, matlens/nmr/processing.py::auto_regions

I_r = \int_{\delta_a}^{\delta_b} y\,d\delta \;\;(\text{trapecios}), \qquad I_r^\text{norm} = I_r\,\frac{v_\text{ref}}{I_\text{ref}}

donde I_\text{ref} es la integral de la región de referencia (índice 0 por defecto) y v_\text{ref} su valor asignado (1 por defecto, o el número de protones de esa señal). Los puntos de la región se ordenan por ppm creciente antes de integrar, de modo que las integrales de absorción positiva son positivas; una región con menos de dos puntos vale 0. Si I_\text{ref} = 0 no se normaliza (los valores normalizados quedan en 0).

Las regiones automáticas son tramos contiguos con y > 0.01\max y, fusionados si distan menos de 0.05 ppm y ampliados 0.025 ppm a cada lado.

Límites. Una lorentziana tiene colas largas: una región de \pm k semianchuras alrededor del centro solo contiene la fracción (2/\pi)\arctan k del área (≈ 94 % para k = 10). Si las regiones de señales distintas tienen anchuras relativas diferentes, las razones se sesgan. Los satélites de ¹³C (±0.55 % cada uno para ¹H) y los picos de espín lateral caen fuera o dentro de la región según su anchura. No se propaga incertidumbre a las integrales; el ruido aporta una dispersión \sigma_I \approx \sigma_y\,\Delta\delta\,\sqrt{n_\text{puntos}} que MatLens no informa.

Avisos de validez. Este módulo no emite avisos de validez propios: las comprobaciones de este procesado son responsabilidad del usuario (fase, línea base, relajación completa).

Ejemplo resuelto

Caso sintético: SW = 4000 Hz, SF = 400 MHz, portadora a 4.00 ppm, N = 4096 puntos, dos singletes (7.26 ppm con amplitud 1 y 2.00 ppm con amplitud 3, T_2^* = 0.3 s), fase de orden cero instrumental de 40°, ruido gaussiano \sigma = 0.002 (semilla fija). Se ejecuta process_fid(fid, acq, lb_hz=0.3, zf=2) (ACME + arPLS) y integrate_regions con la región de 7.26 ppm como referencia = 1.

  • Puntos tras relleno con ceros: 8192; resolución digital 0.4883 Hz/punto.
  • Fase encontrada por ACME: \phi_0 = -36.32°, \phi_1 = -1.09° (la convención de signo de phase multiplica por e^{i\phi}; el valor que anula una fase instrumental de +40° es −40°, y la diferencia con ese valor ideal es el error de la fase automática en este caso: 3.68°).
  • Máximo del espectro real en 2.002 ppm.
Región (ppm)Integral I_rNormalizada
7.5 – 7.05.30231
2.25 – 1.7516.3253.079

La razón 3 : 1 esperada de las amplitudes se recupera en la integral normalizada; la desviación residual procede del ruido, de las colas lorentzianas fuera de la región y de la línea base.

Referencias: implementación propia salvo ACME. Desplazamientos de disolventes: Fulmer et al., Organometallics 29 (2010) 2176–2179, doi:10.1021/om100106e. Fundamento general: Keeler, Understanding NMR Spectroscopy, 2.ª ed., Wiley 2010, cap. 5 (procesado de datos).

Generado desde MatLens c0ab138. ← Todas las técnicas