Este es el paquete R para GRAPPLE (Análisis de RM de todo el genoma bajo PLEiotropía generalizada), un marco integral para la aleatorización mendeliana.
Para obtener detalles sobre el marco GRAPPLE, consulte nuestro manuscrito.
El paquete GRAPPLE se puede instalar en R desde este repositorio de Github:
library(devtools)
install_github("jingshuw/grapple")
Es posible que también sea necesario instalar PLINK para la agrupación de LD y preparar un conjunto de datos de referencia de agrupación de LD adecuado para PLINK, si requiere que GRAPPLE realice el preprocesamiento de datos. Un recurso del conjunto de datos de referencia de la población europea para la agrupación, que también se utiliza en el artículo GRAPPLE, es el panel de referencia europeo de 1000 genomas descargado aquí http://fileserve.mrcieu.ac.uk/ld/data_maf0.01_rs_ref.tgz , de la cita de MRCIEU.
El análisis con GRAPPLE comienza con el preprocesamiento de las estadísticas resumidas de GWAS sin procesar, que incluye la selección de instrumentos genéticos, la armonización de los conjuntos de datos para compartir el mismo efecto y el alelo de referencia, el cálculo de una matriz de correlación del ruido en las asociaciones marginales estimadas que se comparte entre los SNP. y seleccionar una lista de SNP candidatos para la detección de marcadores de modo.
Para hacer esto, GRAPPLE necesita una lista de archivos de estadísticas resumidas de GWAS sin procesar. Cada archivo GWAS es un archivo ".csv" o ".txt" que contiene un marco de datos de al menos 6 columnas con estos nombres de columna: SNP
, effect_allele
, other_allele
, beta
, se
, pval
. La columna SNP
contiene rsID para cada SNP. Tanto la columna effect_allele
como other_allele
deben tener letras mayúsculas. La columna beta
contiene el tamaño del efecto estimado para los rasgos continuos y el log odds ratio para el rasgo binario, y la columna se
es la desviación estándar de la beta
correspondiente.
Todos los archivos de estadísticas resumidas de GWAS en el formato anterior que se utilizan en el documento GRAPPLE se pueden descargar desde conjuntos de datos. Para conocer la fuente original disponible públicamente de cada archivo, consulte la Sección 3 de la Información complementaria del manuscrito.
El preprocesamiento detallado de GRAPPLE necesita un archivo para la enfermedad (archivo de resultados) y dos archivos para cada factor de riesgo, donde uno es para la selección de SNP (archivo de selección) y el otro es para estimar los efectos marginales de los SNP en este factor de riesgo ( archivo de exposición). Permitimos la superposición de individuos para los datos de GWAS en los archivos de resultados y exposición, y debe haber la menor cantidad posible de individuos superpuestos entre los archivos de selección y otros archivos para evitar el sesgo de selección de SNP. A veces puede resultar difícil encontrar conjuntos de datos GWAS para la selección de SNP. Una opción es utilizar datos GWAS de otros ancestros.
Como ejemplo, se pueden descargar los archivos de estadísticas resumidas para IMC y DT2 de los conjuntos de datos, y también descargar el panel de referencia y descomprimir el archivo ".tgz" en la carpeta actual. Luego, podemos comenzar seleccionando SNP de estos archivos como instrumentos genéticos.
library(GRAPPLE)
sel.file <- "BMI-ukb.csv"
exp.file <- "BMI-giant17eu.csv"
out.file <- "T2D-diagram12-M.csv"
plink_refdat <- "./data_maf0.01_rs_ref/data_maf0.01_rs_ref"
La extracción de los SNP independientes puede tardar unos minutos dependiendo del tamaño de los archivos de estadísticas resumidas de GWAS.
data.list <- getInput(sel.file, exp.file, out.file, plink_refdat, max.p.thres = 0.01, plink_exe = 'plink')
Esta función extrae todos los SNP independientes cuyos valores p de selección no superan 0,01. Devuelve tres elementos. Uno es 'datos', que es un marco de datos de las estadísticas resumidas de los SNP seleccionados, el otro es 'marker.data', que es un marco de datos para todos los SNP marcadores candidatos. La diferencia entre 'datos' y 'marcador.datos' es que utilizamos un r2 más estricto (0,001) en la agrupación de LD para la selección de instrumentos genéticos para garantizar la independencia que en la selección de SNP marcadores candidatos (r2 = 0,05). El tercer elemento es la matriz de correlación estimada para las cohortes de GWAS.
Usamos PLINK para realizar la agrupación de LD. El nombre/ruta predeterminado del comando plink es "plink" (pasado a través del argumento plink_exe
). Para usuarios con sistemas Linux/Windows, este comando no funcionaría y es necesario especificar la ruta del archivo exe, como "./plink", dependiendo de dónde instalen plink. Si R no puede ejecutar el comando plink, habrá un error indicando que no se encuentra el archivo agrupado.
Si el número de factores de riesgo es 1, GRAPPLE puede detectar el número de vías pleiotrópicas encontrando el número de modos en la probabilidad del perfil robusto, dado un umbral de selección de valor p.
Podemos probar el ejemplo anterior.
## Here we take the p-value threshold be 1e-4, but one can try a series of p-values and see if the result is consistent
diagnosis <- findModes(data.list$data, p.thres = 1e-4)
diagnosis$modes
diagnosis$p
Sólo hay un modo en la probabilidad, por lo que no encontramos ninguna evidencia de múltiples vías pleiotrópicas. Nos da cierta garantía utilizar MR-RAP para estimar el efecto causal del factor de riesgo.
result <- grappleRobustEst(data.list$data, p.thres = 1e-4)
Esta función devuelve nuestros resultados estimados.
Aquí hay otro ejemplo donde podemos detectar múltiples modos.
library(GRAPPLE)
sel.file <- "CRP-Prins17.csv"
exp.file <- "CRP-Dehghan11.csv"
out.file <- "CAD-Nelson17.csv"
data.list <- getInput(sel.file, exp.file, out.file, plink_refdat, max.p.thres = 0.01)
diagnosis <- findModes(data.list$data, p.thres = 1e-4, marker.data = data.list$marker.data)
diagnosis$p
Encontramos tres modos en el perfil de verosimilitud. Al comprobar los SNP marcadores, los genes marcadores y el rasgo GWAS mapeado, podemos encontrar que el LDL-C puede ser un rasgo de confusión. Luego podemos ejecutar GRAPPLE ajustando los efectos del LDL-C.
library(GRAPPLE)
sel.file <-c(sel.file, "LDL-gera18.csv")
exp.file <- c(exp.file, "LDL-glgc13.csv")
out.file <- "CAD-Nelson17.csv"
data.list <- getInput(sel.file, exp.file, out.file, plink_refdat, max.p.thres = 0.01)
result <- grappleRobustEst(data.list$data, p.thres = 1e-4)
Después de ajustar por LDL-C, no podemos encontrar ninguna evidencia de que exista un efecto causal de la PCR sobre la CAD.