S42 Barreras de la GWAS ultrarrápida — Explosión computacional de big data con 500.000 personas
En S42 (PLINK2 y modelos lineales mixtos), abordamos el modelo lineal mixto (LMM) que controla los falsos positivos causados por la estructura poblacional mediante la matriz de parentesco genético (GRM) y la descomposición en valores propios. En cohortes del orden de miles de individuos, las herramientas LMM tradicionales como GEMMA o GCTA funcionan bien.
Sin embargo, con la llegada de la era del big data de cohortes de cientos de miles de personas, como UK Biobank y FinnGen, los LMM tradicionales se han topado frontalmente con un muro computacional. Cuando el número de muestras aumenta a , solo la capacidad de memoria para almacenar la matriz GRM de tamaño alcanza aproximadamente . Sin 2 TB de memoria no es posible cargar la matriz, y la complejidad computacional de la descomposición en valores propios multiplica el tiempo de cálculo hasta varios meses.
Además, en el análisis de enfermedades raras con una proporción desequilibrada entre casos y controles inferior a 1:100, el supuesto de normalidad asintótica del test de Wald tradicional comienza a debilitarse, lo que puede inflar significativamente los valores P falsos positivos. En esta sección examinamos la metodología de aprendizaje en bloque Ridge de dos pasos de REGENIE, surgida para superar estas limitaciones de big data, y el principio de aproximación del punto de silla (SPA, Saddlepoint Approximation) adoptado por SAIGE. Ambas herramientas apuntan al mismo problema (datos grandes e desequilibrados), pero emplean algoritmos distintos para la corrección.
Derivación de los algoritmos clave de REGENIE y SAIGE
1. REGENIE: Regresión Ridge de dos pasos y partición por bloques (Block Binning)
REGENIE modela los efectos poligénicos del genoma completo mediante regresión Ridge por bloques, sin necesidad de cargar toda la matriz GRM .
Paso 1 (Step 1): Cálculo del predictor genómico Ridge
Dividimos los SNPs que han pasado el control de calidad en bloques consecutivos de 1.000 unidades: . Dentro de cada bloque , ajustamos modelos de regresión Ridge para múltiples parámetros de regularización y obtenemos los predictores locales .
Aquí, es el predictor ajustado de dimensión construido a partir de la combinación del bloque y el parámetro de regularización , y la parte entre paréntesis corresponde a los coeficientes de la regresión Ridge. Se aplica una regresión Ridge de Nivel 2 a los predictores de bloque acumulados para componer el valor final de predicción poligénica . La cantidad que debe cargarse en la memoria a la vez se reduce a por unidad de tamaño de bloque (por defecto, 1.000) en lugar del total de SNPs .
Paso 2: Prueba de un solo SNP con aplicación LOCO
Para cada SNP , se realiza una regresión simple introduciendo como covariable el predictor que excluye el cromosoma correspondiente (LOCO: Leave-One-Chromosome-Out).
2. SAIGE: Derivación de la aproximación del punto de silla (Saddlepoint Approximation, SPA)
SAIGE resuelve el problema en el que se rompe el supuesto de normalidad de la estadística en datos de enfermedades raras o con proporciones extremas de controles (por ejemplo, 500 casos frente a 499.500 controles) mediante la aproximación del punto de silla (SPA).
La siguiente función generadora de cumulantes (CGF) es una forma simplificada que omite las covariables y la corrección del modelo mixto para ilustrar el principio. En la implementación real, SAIGE construye la CGF incluyendo los residuos genotípicos corregidos por el modelo mixto y el procedimiento de razón de varianzas. La CGF y sus derivadas primera y segunda son las siguientes:
Dado un valor observado de la estadística, , si se encuentra la solución de la ecuación de punto de silla , entonces, a través de la fórmula de Lugannani-Rice, se puede aproximar la probabilidad de cola exacta .
Ejemplo de cálculo a pequeña escala: por qué la aproximación normal falla en datos extremadamente desequilibrados
Veamos un ejemplo muy pequeño en el que podemos calcular exactamente para comprobar cuánto puede fallar la aproximación normal. Supongamos que seleccionamos solo 5 individuos que poseen la variante rara (). Bajo la hipótesis nula, la probabilidad de que cada uno desarrolle la enfermedad es la misma, , y son independientes. La estadística de puntuación es , y el valor observado es si 3 de estos 5 individuos son realmente pacientes.
El número de pacientes sigue una distribución binomial , por lo que la probabilidad de obtener un valor observado o superior puede calcularse exactamente.
Por otro lado, si aplicamos la aproximación normal a la misma situación, tenemos , por lo que
Entre la probabilidad exacta (aprox. ) y la aproximación normal (aprox. ) existe una diferencia de unas 130,000 veces. Si se adopta la aproximación normal tal cual como el p-valor de GWAS, se informará erróneamente una significancia absurdamente fuerte para una señal que, en realidad, podría aparecer por azar.
La aproximación de punto de silla (SPA) es un método para reducir esta distorsión. Sin embargo, la ecuación CGF anterior generalmente no tiene una solución en forma cerrada, por lo que en la práctica se debe encontrar la raíz numéricamente (SAIGE también utiliza el mismo método internamente). En este ejemplo, la raíz es , y al sustituirla en la fórmula de Lugannani-Rice, el valor aproximado de SPA es aproximadamente . Aunque sigue siendo unas 3 veces menor que el valor del cálculo exhaustivo (), es incomparablemente más cercano a la aproximación normal (aprox. ). Debido a que es una situación extrema con solo 5 muestras, persiste un error propio de la distribución de red (discreta); a medida que el tamaño de la muestra aumenta, la SPA se aproxima más al cálculo exhaustivo. Ejecute el siguiente código para comparar los tres valores (cálculo exhaustivo, aproximación normal y SPA).
Práctica de REGENIE & R SPA
Pipeline de ejecución de la etapa 2 de REGENIE y código de implementación de la aproximación de punto de silla (SPA) en R.
Etapa 1: Pipeline de REGENIE CLI (Step 1 & Step 2)
#!/usr/bin/env bash# Canalización ultrarrápida de GWAS en dos pasos con REGENIEset -e
# [Paso 1] Obtener el predictor poligénico mediante regresión ridge de todo el genoma (--bsize 1000)regenie \ --step 1 --bed ukb_qc_array \ --phenoFile phenotypes.txt --covarFile covariates.txt \ --bsize 1000 --bt --lowmem --out regenie_step1_out
# [Paso 2] Operación por SNP sobre variantes imputadas + corrección de Firth aproximada propia de REGENIE# (--firth --approx: opción de REGENIE para corregir el desequilibrio, distinta de la SPA de SAIGE)regenie \ --step 2 --pgen ukb_imputed_chr1 \ --phenoFile phenotypes.txt --covarFile covariates.txt \ --pred regenie_step1_out_pred.list \ --bsize 400 --bt --firth --approx --out regenie_step2_chr1_outPaso 2: Implementación de la corrección mediante aproximación de puntos de silla (SPA) en R
# Implementación de la aproximación de punto de silla (SPA) en R — reproduce el ejemplo manual de cinco personas del texto
cgf_k <- function(t, mu, x) sum(log(1 - mu + mu * exp(t * x))) - t * sum(x * mu)
cgf_k1 <- function(t, mu, x) sum((x * mu * exp(t * x)) / (1 - mu + mu * exp(t * x))) - sum(x * mu)
cgf_k2 <- function(t, mu, x) sum((x^2 * mu * (1 - mu) * exp(t * x)) / (1 - mu + mu * exp(t * x))^2)
# Como K1(t)-s_obs crece de forma monótona con t, Newton-Raphson sin restricciones puede
# divergir fácilmente según el valor inicial (en este ejemplo también diverge a NaN al comenzar en t=0).
# En la práctica se usa una bisección segura que va estrechando el intervalo.
solve_zeta <- function(s_obs, mu, x, lower = -50, upper = 50) {
f <- function(t) cgf_k1(t, mu, x) - s_obs
uniroot(f, c(lower, upper), tol = 1e-9)$root
}
# Ejemplo del texto: las cinco personas (x=1) tienen mu=0.05; s observado = 3 - 5*0.05 = 2.75
mu <- rep(0.05, 5); x <- rep(1, 5); s_obs <- 2.75
# 1) Cálculo exhaustivo (valor verdadero)
exact_p <- sum(dbinom(3:5, size = 5, prob = 0.05))
# 2) Aproximación normal (Wald)
var_s <- sum(x^2 * mu * (1 - mu))
normal_p <- 1 - pnorm(s_obs / sqrt(var_s))
# 3) Aproximación de punto de silla (SPA, Lugannani-Rice)
zeta <- solve_zeta(s_obs, mu, x)
w <- sign(zeta) * sqrt(2 * (zeta * s_obs - cgf_k(zeta, mu, x)))
v <- zeta * sqrt(cgf_k2(zeta, mu, x))
spa_p <- 1 - pnorm(w) + dnorm(w) * (1 / w - 1 / v)
cat(sprintf("Valor p del cálculo exhaustivo: %.5e\n", exact_p))
cat(sprintf("Valor p de la aproximación normal: %.5e\n", normal_p))
cat(sprintf("Valor p de la aproximación de punto de silla (SPA): %.5e\n", spa_p))Mapeo de CS
- Divide y vencerás (Divide and Conquer): Paradigma algorítmico que, en lugar de cargar cientos de miles de SNPs en la memoria, divide los datos en bloques de 1.000 para realizar una regresión Ridge de primer paso y combinar los resultados.
- Aproximación del punto de silla (Saddlepoint Approximation): Técnica numérica precisa que transforma la probabilidad de cola de la distribución de estadísticos complejos en una trayectoria de paso por el punto de silla en el plano complejo, permitiendo un cálculo rápido con un error mucho menor que la aproximación normal (si la muestra es muy pequeña, puede quedar un error residual característico de la distribución discreta).
- Optimización numérica y PCG: Técnica utilizada por SAIGE para evitar el cálculo de la inversa de la matriz de covarianza y reducir el uso de memoria a mediante métodos numéricos iterativos para resolver ecuaciones lineales.
Errores frecuentes
- Inclusión de SNPs imputados en el Paso 1: El Paso 1 de REGENIE suele entrenar el predictor poligénico con decenas de miles a cientos de miles de SNPs de array que han pasado el control de calidad (el límite superior exacto depende del tamaño de la muestra y la configuración de memoria). Incluir directamente más de 10 millones de SNPs imputidos aumenta el tiempo de cálculo y el uso de memoria para los bloques Ridge hasta niveles difíciles de manejar.
- Falta de LOCO en el Paso 2: Si no se utiliza el predictor poligénico con Leave-One-Chromosome-Out (LOCO) que excluye el cromosoma correspondiente durante la prueba de variantes individuales del Paso 2, se produce un error al eliminar previamente la señal propia.
- No establecer el umbral de corrección de Firth: Si se desactiva la corrección Firth/SPA para variantes con pocas muestras de caso y se ejecuta una regresión logística simple, los valores P pueden inflarse significativamente.
Para profundizar más
El texto ha sido reescrito directamente por el equipo de investigación de BPD. Para explorar en profundidad los algoritmos GWAS a gran escala más recientes, consulte las siguientes fuentes originales:
- Artículo original de REGENIE: Mbatchou et al. (2021), Cálculo eficiente de la regresión de genoma completo para rasgos cuantitativos y binarios, Nature Genetics, 53(7):1097-1103. (PubMed 34017140)
- Artículo original de SAIGE: Zhou et al. (2018), Control eficiente del desequilibrio caso-control y la relación muestral en estudios de asociación genética a gran escala, Nature Genetics, 50(9):1335-1341.
- Documentación del pipeline Pan-UK Biobank: Broad Institute, Metodología técnica y pipeline de control de calidad de Pan-UK Biobank (
pan.ukbb.broadinstitute.org). - Artículo original de Lugannani & Rice: Lugannani & Rice (1980), Aproximaciones del punto silla para sumas de variables aleatorias, Advances in Applied Probability, 12(2):475-490.
De este modo, hemos examinado en detalle el núcleo de los pipelines de GWAS, desde la descomposición en valores propios (S42) de los modelos lineales mixtos (LMM) hasta la aceleración del análisis de biobancos a gran escala con 500.000 participantes mediante las técnicas de Ridge por bloques y las aproximaciones del punto silla (S43) implementadas en REGENIE y SAIGE.
En el siguiente capítulo, S44, pasaremos al análisis de mapeo fino (SuSiE y CAVIAR) para seleccionar entre los cientos de variantes asociadas identificadas por GWAS aquellas que son verdaderas variantes causales de la enfermedad.