Colocalización de QTL usando coloc

Después de que GWAS encuentre loci de señal significativos, es necesario explicar cómo los loci de señal significativos afectan el fenotipo. Un método de interpretación común es el análisis de colocalización.

Los análisis de colocalización convencionales incluyen:

1) Colocalización de GWAS y eQTL;

2) Colocalización de GWAS y sQTL;

3) GWAS y meQTL co-localizan;

4) Colocalización de GWAS y pQTL;

Entre ellos, la co-localización GWAS y eQTL son las más utilizadas.

El análisis de colocalización tiene como objetivo determinar la variación causal que dos rasgos pueden compartir en una región genómica determinada. La colocalización mencionada en este artículo es un análisis de colocalización basado en la inferencia bayesiana. El software utilizado es el paquete en lenguaje  coloc R.

install.packages("coloc")

1 Descargue e instale coloc

if(!require("remotes"))
  install.packages("remotes")
  install.packages("dplyr")
library(remotes)
install_github("chr1swallace/coloc",build_vignettes=TRUE)
library("coloc")
library(dplyr)

Para atraer nuevas ideas: el principio y algoritmo de colocalización

La introducción oficial  coloc a​ es la siguiente:

El paquete coloc se puede utilizar para realizar análisis de colocalización genética de dos fenotipos potencialmente relacionados, para preguntar si comparten variantes genéticas causales comunes en una región determinada.

Por lo tanto, el propósito de la colocalización es probar si los dos fenotipos de entrada comparten la misma variación causal en una región determinada . La colocalización en este artículo se basa en la inferencia bayesiana. Acerca del principio de la inferencia bayesiana, consulte la siguiente información:

  1. 文献 1: Prueba bayesiana de colocalización entre pares de estudios de asociación genética utilizando estadísticas resumidas
  2. Capítulo 2: Obtener antecedentes y relajar el supuesto de variante causal única en los análisis de colocalización
  3. documentación oficial coloc

Específicamente, cuando se detecta que una señal GWAS y un eQTL se co-localizan, consideraremos que los loci en la señal GWAS pueden afectar el fenotipo al cambiar el proceso biológico de expresión génica.

Hay cuatro escenarios para el análisis de colocalización:

La primera hipótesis H0: el fenotipo 1 (GWAS) y el fenotipo 2 (tomando eQTL como ejemplo) no están relacionados significativamente con todos los sitios SNP en una determinada región genómica;
La segunda hipótesis H1/H2: el fenotipo 1 (GWAS) o el fenotipo 2 (tomando eQTL como ejemplo) está significativamente relacionado con el sitio SNP en una determinada región genómica;
La tercera hipótesis H3: el fenotipo 1 (GWAS) y el fenotipo 2 (tomando eQTL como ejemplo) están significativamente relacionados con los sitios SNP en una determinada región genómica, pero están impulsados ​​por diferentes sitios de variación causal;
La cuarta hipótesis H4: el fenotipo 1 (GWAS) y el fenotipo 2 (tomando eQTL como ejemplo) están significativamente relacionados con los sitios SNP en una determinada región genómica y están impulsados ​​por el mismo sitio de variación causal;

Con base en los cuatro escenarios anteriores, esperamos que el cuarto escenario H4 sea estadísticamente más probable, lo que puede explicar cómo los sitios de señalización importantes afectan el fenotipo;

Por lo tanto, el análisis de colocalización consiste esencialmente en probar la probabilidad posterior del cuarto tipo;

Después de hablar sobre los conceptos relacionados del análisis de colocalización, tomemos "Co-localización GWAS y eQTL" como ejemplo para hablar sobre cómo usar coloc para el análisis de colocalización.

Preparación para el análisis de colocalización.

Creo que notaste este pasaje al leer la documentación oficial:

Una única región genómica no corresponde a todo el genoma ni a un cromosoma completo. Coloc tampoco divide automáticamente los cromosomas o un genoma en regiones. Se supone que el usuario puede observar sus datos, identificar una región con señales GWAS superpuestas entre dos estudios y decidir qué conjunto de SNP incluir.

Esto significa que el software no seleccionará automáticamente la región de colocalización por usted , sino que dejará la selección de la región de colocalización al usuario. También enfatiza que la región de colocalización no puede ser el cromosoma completo o el genoma completo. . Por lo tanto, definir la región de colocalización es una parte particularmente importante del análisis de colocalización, y la región de colocalización sirve a los pares de datos de colocalización (es decir, los dos fenotipos de colocalización que desea examinar), por lo que el proceso general es primero determinar el fenotipo a ser examinado y luego determinar el área a examinar .

Selección de fenotipos a probar.

El llamado fenotipo a probar se refiere a los datos emparejados que finalmente se utilizan para calcular la probabilidad de colocalización.

En el análisis GWAS, el análisis de correlación generalmente se realiza en un solo rasgo.

En el análisis QTL, muchos fenotipos suelen correlacionarse al mismo tiempo.

        Por ejemplo, en el análisis eQTL, cada gen representa un fenotipo,

        En caQTL, cada región abierta representa un fenotipo.

En este momento, el fenotipo que probamos son los datos emparejados de cada región abierta de gen . Por lo tanto, primero debemos determinar todos los datos emparejados y luego asignarles regiones de colocalización respectivamente.

Aquí, hago referencia a  coloc la literatura recomendada en el sitio web oficial y hago un resumen simple. Los académicos interesados ​​pueden leer el texto original para explorar en detalle:

tipo de colocalización Dirección del artículo área de colocalización
eQTL-meQTL Comunicaciones de la naturaleza 2018 LeadSNP aguas arriba y aguas abajo 250 kb
eQTL-GWAS Naturaleza 2017 GWAS independiente arriba y abajo 1mb
eQTL-pQTL Naturaleza 2018 Dividir regiones según la distancia genética
meQTL-GWAS AJRCCM 2018 500 kb aguas arriba y aguas abajo del sitio de metilación
pQTL-eQTL Comunicaciones de la naturaleza 2018 plomo-pSNP arriba y abajo 1mb
caQTL-GWAS/eQTL Comunicaciones de la naturaleza 2018 Áreas identificadas por otros estudios
SIERVO-SERVIDOR Enfermedades Inflamatorias Intestinales 2018 50 kb por encima y por debajo de cada SNP

Muchos de estos documentos mencionan el concepto de sitio independiente . Un sitio independiente se refiere a una región en la que ningún otro SNP está vinculado a este SNP más que un umbral determinado. Este umbral es generalmente �2<0,2. También hay algunos estudios. Usando �2<0.1, esta parte del trabajo se puede completar usando  plink  .

Selección de áreas de colocalización

El área de co-localización se selecciona para calcular la probabilidad posterior de co-localización para todos los pares de datos obtenidos en el paso anterior según el conocimiento previo. Durante el cálculo, la co-localización se calculará en función de los valores de efecto, MAF y otros estadísticas de todos los SNP en el área de co-localización Probabilidad. Por lo tanto, la selección de regiones de colocalización a menudo depende de la selección de pares de datos de colocalización. Las regiones colocalizadas utilizadas en otros estudios también se enumeran en la tabla anterior. coloc El sitio web oficial ofrece dos soluciones, basadas en tagSNP y basadas en distancia genética. La distancia genética aquí puede especificarla usted mismo de acuerdo con la situación real.

Prepare el formato de datos requerido por coloc

Primero, echemos un vistazo a  coloc qué datos se necesitan:

##  $ beta    : Named num [1:50] 0.288 0.3 0.334 0.444 0.494 ...
##   ..- attr(*, "names")= chr [1:50] "s1" "s2" "s3" "s4" ...
##  $ varbeta : Named num [1:50] 0.00681 0.0105 0.00733 0.00591 0.01514 ...
##   ..- attr(*, "names")= chr [1:50] "s1" "s2" "s3" "s4" ...
##  $ snp     : chr [1:50] "s1" "s2" "s3" "s4" ...
##  $ position: int [1:50] 1 2 3 4 5 6 7 8 9 10 ...
##  $ type    : chr "quant"
##  $ sdY     : num 1.12

En resumen, la información necesaria se divide en las siguientes categorías:

  1. Información básica de SNP, incluido el ID de SNP (no necesariamente rsID) y la posición de SNP
  2. Información del efecto del análisis de correlación, incluido el valor beta y la varianza del efecto varbeta. Si no existe tal elemento, se requieren P, MAF y N.
  3. sdY, la desviación estándar de Y. Si no existe tal elemento, se requieren los dos elementos siguientes:
    1. MAF, frecuencia de alelo menor
    2. N, tamaño de la muestra
  4. tipo, el tipo de análisis, hay  dos tipos quant : ​y  cc ​, que representan la asociación de rasgos cuantitativos y el análisis de casos/controles, respectivamente.

Cada software de análisis de correlación tiene diferentes nombres para la información estadística. Ajuste y calcule de acuerdo con los resultados del software de análisis que utilice . Los datos que utilicé se generaron con MatrixEQTL y sus resultados incluyen las siguientes columnas:

  • p: valor p sin corregir
  • fdr: valor p corregido
  • beta: tamaño del efecto, que es la pendiente de la regresión lineal
  • Estadístico t: estadístico de la prueba T

Se puede ver que el resultado predeterminado no incluye varbeta, por lo que debemos calcularlo nosotros mismos, usamos la siguiente fórmula para calcular varbeta:

�������=(������)2

Finalmente, cabe señalar que colocel formato de datos aceptado  es una lista, no un marco de datos , y  typedebe  sdYespecificarse después de convertirlo a una lista. En otras palabras, typesolo es necesario especificar un valor. Para conocer el formato específico, consulte a los ejemplos oficiales de formato de archivo anteriores.

Realizar análisis de colocalización

Después de generar el formato de datos requerido por coloc, podemos realizar un análisis de co-localización. Como se mencionó en la sección anterior, el análisis de co-localización se basa en pares de datos de co-localización, es decir, cada par de datos de co-localización corresponde a Una región de colocalización, cada región de colocalización corresponde a todos los SNP de dos fenotipos dentro de la región de colocalización. En pocas palabras, si hay varios pares de datos y varias regiones de colocalización, es necesario extraer los SNP de los fenotipos de los dos rasgos varias veces. Este proceso se puede implementar mediante bucles, o se pueden extraer todos los datos en una vez. Ve a la lista y analízalos uno por uno. Yo uso este último.

Pensamiento de coubicación

Los datos que vamos a utilizar son la co-localización de eQTL y meQTL. Nuestra idea de investigación es:

  1. Encuentre el eSNP principal de cada gen en eQTL
  2. Encuentre todos los meSNP que se superponen con este eSNP principal. Estos meSNP pueden corresponder a diferentes sondas de metilación.
  3. Encuentre el meSNP principal correspondiente a estas sondas de metilación
  4. Calcule la fuerza de enlace (�2) entre el plomo-meSNP en el tercer paso y el plomo-eSNP en el primer paso, y seleccione la sonda de metilación correspondiente al plomo-meSNP con la mayor fuerza de enlace.
  5. Utilice el rango de 1 MB en sentido ascendente y descendente de cada gen como región de colocalización para el análisis.

Descargar datos de práctica

A continuación, utilizaré datos de bases de datos públicas para la co-localización. Los datos utilizados son datos cis-eQTL de PancanQTL [1] y  datos cis-meQTL [2] de Pancan-meQTL

Procesar datos sin procesar

Se recomienda utilizar  data.table para lectura y  tidyverse procesamiento de datos. El código es simple, elegante y potente. Supongamos que ha importado los datos y los ha nombrado  eQTL ​y  meQTL​, el siguiente análisis se basará en esto.

suppressMessages(library(tidyverse))
suppressMessages(library(data.table))

Preprocesamiento de datos

El MAF aquí se calcula utilizando datos TCGA y la dirección de descarga se proporciona aquí.

# 导入MAF信息
maf = fread("BRCA_MAF.txt")
meQTL = fread("BRCA_tumor.cis_meQTL.tsv") %>%
    rename(
        pvalue   = `p-value`,
        `t-stat` = status
    ) %>%
    mutate(varbeta = (beta / `t-stat`) ^ 2) %>%
    separate(
        col    = "alleles",
        into   = c("ref", "alt"),
        sep    = "/",
        fill   = "right",
        remove = TRUE
    ) %>%
    separate(
        col    = "snp_position",
        into   = c("chr", "position"),
        sep    = ":",
        fill   = "right",
        remove = TRUE
    ) %>%
    mutate_at(
        "position",
        as.numeric
    ) %>%
    left_join(
        y = maf,
        by = c("snp", "position", "ref", "alt")
    ) %>%
    select(snp, chr, position, ref, alt, maf, probes, beta, varbeta, pvalue)
eQTL = fread("BRCA_cis_eQTL_fdr005.tsv") %>%
    rename(pvalue  = `p-value`) %>%
    mutate(varbeta = (beta / `t-stat`) ^ 2) %>%
    separate(
        col    = "alleles",
        into   = c("ref", "alt"),
        sep    = "/",
        fill   = "right",
        remove = TRUE
    ) %>%
    left_join(
        y  = maf,
        by = c("snp", "position", "ref", "alt")
    ) %>%
    select(snp, chr, position, ref, alt, maf, gene, beta, varbeta, pvalue)

Extraer QTL principal

lead_eSNP = eQTL %>%
    group_by(gene) %>%
    arrange(pvalue) %>%
    distinct(gene, .keep_all = TRUE) %>%
    rename_at(
        vars(c("beta", "varbeta", "pvalue")))
​
lead_meSNP = meQTL %>%
    group_by(probes) %>%
    arrange(pvalue) %>%
    distinct(probes, .keep_all = TRUE)

Definir pares de datos co-localizados

coloc_pair_list = apply(
    lead_eSNP %>%
        mutate(gene2 = gene) %>%
        column_to_rownames("gene2") %>%
        mutate_at(
            .vars = vars(c("position", ends_with("_eqtl"))),
            .funs = as.numeric
        ),
    MARGIN = 1,
    FUN = function(x) {
        result                   = as.list(x)
        result[["maf"]]          = as.numeric(result[["maf"]])
        result[["position"]]     = as.numeric(result[["position"]])
        result[["beta_eqtl"]]    = as.numeric(result[["beta_eqtl"]])
        result[["varbeta_eqtl"]] = as.numeric(result[["varbeta_eqtl"]])
        result[["pvalue_eqtl"]]  = as.numeric(result[["pvalue_eqtl"]])
        return(result)
    },
    simplify = FALSE
)

Encuentre el meSNP que se superpone a cada eSNP principal en meQTL

overlapped_meSNP = lapply(
    X = coloc_pair_list,
    FUN = function(x) {
        meQTL %>% filter(snp %in% x[["snp"]])
    }
)

Calcule la fuerza de enlace y determine la sonda de metilación con la fuerza de enlace más alta

Este paso es todo lo que necesita para comprender el principio. Hay muchas formas de calcular LD. Aquí elegí  LDlinkRel paquete de software. La dirección del servicio web en línea de esta herramienta es: LDlink . El siguiente código generará la sonda de metilación con la mayor fuerza de enlace y la información estadística correspondiente.

lead_probe = mapply(
    FUN = function(coloc_list, meqtl_overlap) {
        # 没有重叠的情况直接输出空结果
        if(length(meqtl_overlap[["snp"]]) == 0) {
            return(list(
                probe        = NA,
                beta_meqtl   = NA,
                varbeta      = NA,
                pvalue_meqtl = NA
            ))
        }
        # 多个meSNP对应到同一个探针时,直接输出探针
        if(length(unique(meqtl_overlap[["probes"]])) == 1) {
            return(
                list(
                    probe         = meqtl_overlap[["probes"]][1],
                    beta_meqtl    = meqtl_overlap[["beta"]][1],
                    varbeta_meqtl = meqtl_overlap[["varbeta"]][1],
                    pvalue_meqtl  = meqtl_overlap[["pvalue"]][1]
                )
            )
        } else {
            lead_esnp = coloc_list[["snp"]]
            # 获得重合meSNP对应的探针的lead—meSNP用来计算LD
            lead_mesnps_query = unique(lead_meSNP$snp[lead_meSNP$probes %in% meqtl_overlap$probes])
            ld_with_lead_esnp = sapply(
                X = lead_mesnps_query,
                FUN = function(x) {
                    if (length(x) == 0) {
                        return(0)
                    } else {
                        tryCatch({
                            ld_matrix = LDlinkR::LDpair(
                                var1  = x,
                                var2  = lead_esnp,
                                pop   = "CEU",
                                # 这里的token需要自己申请
                                token = "自己申请"
                            )
                            return(ld_matrix[["r2"]][1])
                        },
                        error = function(error) {
                            print(paste(x, lead_esnp, error, sep = "\t"))
                            return(0)
                        })
                    }
                },
                simplify = "array"
            )
            max_ld = max(ld_with_lead_esnp)
            if(max_ld == 0 | is.na(max_ld)) {
                return(list(
                    probe        = NA,
                    beta_meqtl   = NA,
                    varbeta      = NA,
                    pvalue_meqtl = NA
                ))
            } else {
                max_ld_snp = names(ld_with_lead_esnp)[which(ld_with_lead_esnp == max_ld)]
                # 如果多个probe都有最大连锁,取最显著的
                max_ld_probe   = (lead_meSNP %>% filter(snp %in% max_ld_snp) %>% arrange(pvalue))$probes[1]
                max_ld_beta    = (lead_meSNP %>% filter(snp %in% max_ld_snp) %>% arrange(pvalue))$beta[1]
                max_ld_varbeta = (lead_meSNP %>% filter(snp %in% max_ld_snp) %>% arrange(pvalue))$varbeta[1]
                max_ld_pvalue  = (lead_meSNP %>% filter(snp %in% max_ld_snp) %>% arrange(pvalue))$pvalue[1]
                return(
                    list(
                        probe        = max_ld_probe,
                        beta_meqtl   = max_ld_beta,
                        varbeta      = max_ld_varbeta,
                        pvalue_meqtl = max_ld_pvalue
                    )
                )
            }
        }
    },
    coloc_pair_list,
    overlapped_meSNP,
    SIMPLIFY = FALSE
)

Extraiga todos los SNP dentro de regiones co-localizadas

Definimos la región de colocalización como la ventana de asociación cis de cada gen, que es de 1 mb aguas arriba y aguas abajo. Dado que la distancia de asociación del eQTL que utilizamos también es de 1 mb, extraemos directamente todos los cis-eQTL asociados con cada gen, y se ubicado dentro de nuestra región de colocalización.

# 提取共定位区域内的所有eSNP
eSNP_by_gene = sapply(
    X = unique(eQTL[["gene"]]),
    FUN = function(egene) {
        eQTL %>% filter(gene == egene)
    },
    simplify = FALSE,
    USE.NAMES = TRUE
)
​
# 提取共定位区域内的所有meSNP
meSNP_by_gene = lapply(
    X = eSNP_by_gene,
    FUN = function(esnps) {
        meQTL %>% filter(snp %in% esnps[["snp"]])
    }
)

Realizar análisis de colocalización

Al co-localizar es necesario prestar atención. Hay muchas situaciones que pueden causar problemas con los datos, como que meQTL no se superpone con eQTL, el SNP utilizado no es una mutación unidireccional y no se puede calcular LD, etc. función, debe diseñar una captura de excepción para manejar estas situaciones.

coloc_result = mapply(
    FUN = function(df_1, df_2, n_1, n_2, type_1 = "quant", type_2 = "quant") {
    # 如果没有重叠的SNP,就跳过共定位
        if (nrow(df_1) == 0 | nrow(df_2) == 0) {
            return(
                list(
                    n_snps = 0,
                    PP3    = 0,
                    PP4    = 0
                )
            )
        }
        df_1 = df_1 %>%
            rename(MAF = maf, p = pvalue) %>%
            arrange(p) %>%
            # coloc要求不能有重复的SNP,所以只保留更显著的
            distinct(snp, .keep_all = TRUE) %>%
            select(snp, position, p, beta, varbeta, MAF) %>%
            filter(!is.na(MAF)) %>%
            as.list()
        df_1[["N"]] = n_1
        df_1[["type"]] = type_1

        df_2 = df_2 %>%
            rename(MAF = maf, p = pvalue) %>%
            arrange(p) %>%
            distinct(snp, .keep_all = TRUE) %>%
            select(snp, position, p, beta, varbeta, MAF) %>%
            filter(!is.na(MAF)) %>%
            as.list()
        df_2[["N"]] = n_2
        df_2[["type"]] = type_2

        if (length(df_1[["snp"]])== 0 | length(df_2[["snp"]]) == 0) {
            return(
                list(
                    n_snps = 0,
                    PP3    = 0,
                    PP4    = 0
                )
            )
        }

        if (is.null(coloc::check_dataset(df_1)) & is.null(coloc::check_dataset(df_2))) {
            invisible(capture.output({
                coloc_result = coloc::coloc.abf(
                    dataset1 = df_1,
                    dataset2 = df_2
                )
            }))
            return(
                list(
                    n_snps = coloc_result[["summary"]][["nsnps"]],
                    PP3    = coloc_result[["summary"]][["PP.H3.abf"]],
                    PP4    = coloc_result[["summary"]][["PP.H4.abf"]]
                )
            )
        } else {
            return(
                list(
                    n_snps = 0,
                    PP3    = 0,
                    PP4    = 0
                )
            )
        }
    },
    df_1      = eSNP_by_gene,
    df_2      = meSNP_by_gene,
    n_1       = 1092,
    n_2       = 664,
    SIMPLIFY  = FALSE,
    USE.NAMES = TRUE
)

Fusionar todos los datos

En el proceso de extracción de plomo-eSNP, obtuvimos los genes colocalizados, luego obtuvimos las sondas de metilación colocalizadas calculando la fuerza del enlace y finalmente realizamos una prueba de colocalización, y ahora fusionamos esta información en una. En la lista, finalmente se genera una tabla de datos para facilitar la salida. Ahora tenemos tres listas, que almacenan respectivamente información de SNP, información del gen eQTL, información de la sonda de metilación y resultados de colocalización.

# 把所有的必要信息组合起来
final_coloc_result_list = mapply(
    FUN = function(coloc_pairs_eqtl, coloc_pairs_meqtl, coloc_result) {
        return(c(
            coloc_pairs_eqtl,
            coloc_pairs_meqtl,
            coloc_result
        ))
    },
    coloc_pairs_eqtl  = coloc_pair_list,
    coloc_pairs_meqtl = lead_probe,
    coloc_result      = coloc_result,
    SIMPLIFY          = FALSE
)

# 将列表合并成数据框
final_coloc_result_table = do.call(rbind, final_coloc_result_list) %>%
    as.data.frame() %>%
    # 转换后数据类型全部丢失,需要手动设置回来
    mutate_at(
        .vars = vars(c("snp", "chr", "ref", "alt", "gene", "probe")),
        .funs = as.character
    ) %>%
    mutate_at(
        .vars = vars(-c("snp", "chr", "ref", "alt", "gene", "probe")),
        .funs = as.numeric
    ) %>%
    mutate_all(
        .funs = function(x) {
            ifelse(is.na(x) | x == "NA", NA, x)
        }
    ) %>%
    # 如果探针缺失,则共定位信号为0
    mutate(PP4 = ifelse(is.na(probe), 0, PP4)) %>%
    arrange(desc(PP4))

Los resultados de colocalización parcial fusionados se muestran a continuación:

chasquido maf gene p_eqtl yo_probe pvalue_meqtl n_snps PP4
rs2239961 0.2202381 FLJ39582 3.21E-58 cg17353431 1.40E-97 4 1
rs9896243 0.15888278 LRRC37A2 1.01E-54 cg01570182 1.01E-38 2 1
rs4982912 0.31730769 CBLN3 2.57E-42 cg13105904 1.42E-45 3 1
rs9897978 0.34798535 CDRT15P 7.77E-40 cg11395062 1.25E-25 1 1
rs11868472 0.43543956 MXRA7 4.19E-32 cg27546012 1.10E-25 1 1
rs4751321 0.24679487 TCERG1L 2.39E-28 cg09858951 2.85E-21 1 1
rs16831518 0.19413919 ATP1A4 1.45E-20 cg19308497 3.91E-28 3 1
rs9896243 0.15888278 LRRC37A 8.53E-18 cg01570182 1.01E-38 2 1
rs7132019 0.37957875 SPSB2 4.09E-71 cg26269324 2.26E-45 50 1
rs2992756 0.47149533 KLHDC7A 9.11E-35 cg05040210 9.17E-37 19 1

referencia

  1. ^ Jing Gong, Shufang Mei, Chunjie Liu, Yu Xiang, Youqiong Ye, Zhao Zhang, Jing Feng, Renyan Liu, Lixia Diao, An-Yuan Guo, Xiaoping Miao, Leng Han, PancanQTL: identificación sistemática de cis-eQTL y trans- eQTL en 33 tipos de cáncer, Nucleic Acids Research, volumen 46, número D1, 4 de enero de 2018, páginas D971–D976  https://doi.org/10.1093/nar/gkx861IF: 14.9 Q1
  2. ^ Jing Gong, Hao Wan, Shufang Mei, Hang Ruan, Zhao Zhang, Chunjie Liu, An-Yuan Guo, Lixia Diao, Xiaoping Miao, Leng Han, Pancan-meQTL: una base de datos para evaluar sistemáticamente los efectos de las variantes genéticas sobre la metilación en cáncer humano, Investigación de ácidos nucleicos, volumen 47, número D1, 8 de enero de 2019, páginas D1066–D1072  https://doi.org/10.1093/nar/gky814IF: 14.9 Q1

3 Análisis

3.1 Importar datos del fenotipo 1 (GWAS):

gwas <- read.table(file="E:/path_to_GWAS/GWAS.txt", header=T);

Los datos de GWAS incluyen: número rs rs_id, valor P pval_nominal, etc.:

Nota: Si el fenotipo es una variable binaria (caso y control), elija uno de los dos archivos de entrada:
1) número rs rs_id , valor P pval_nominal , valor del efecto SNP beta , varianza del valor del efecto varbeta ;
2) número rs rs_id , valor P pval_nominal , caso en todos Proporción en la muestra s

3.2 Importar datos del fenotipo 2 (eQTL):

eqtl <- read.table(file="E:/path_to_eqtl/eQTL.txt", header=T);

Los datos de eQTL incluyen: número de rs rs_id, gen gene_id, frecuencia de alelo menor maf, valor de P, pval_nominaletc.:

Nota: Si el fenotipo es una variable continua, elija uno de los tres archivos de entrada:
1) número rs rs_id , valor P pval_nominal , desviación estándar del fenotipo sdY ;
2) número rs rs_id , valor P pval_nominal , valor del efecto beta , varianza del valor del efecto  varbeta , tamaño de la muestra N , tiempos Frecuencia alélica  MAF ;
3) número rs rs_id , valor P pval_nominal , frecuencia alélica menor  MAF ;

3.3 Fusionar datos GWAS y eQTL:

input <- merge(eqtl, gwas, by="rs_id", all=FALSE, suffixes=c("_eqtl","_gwas"))
head(input)

3.4 Análisis de colocalización

result <- coloc.abf(dataset1=list(pvalues=input$pval_nominal_gwas, type="cc", s=0.33, N=50000), dataset2=list(pvalues=input$pval_nominal_eqtl, type="quant", N=10000), MAF=input$maf)
El tipo="cc" del conjunto de datos1 significa que el fenotipo de GWAS es de dos categorías (caso y control); el tipo
="quant" del conjunto de datos2 significa que el fenotipo (cantidad de expresión genética) del eQTL es continuo.
N se refiere a el tamaño de la muestra;

3.5 Detección de sitios co-localizados

Por lo general, muchas publicaciones consideran que los sitios con PPA > 0,95 son sitios de colocalización, y algunas publicaciones relajarán el requisito a 0,75.

Aquí se supone que la probabilidad posterior es mayor que 0,95 como sitio colocalizado:

library(dplyr)
need_result=result$results %>% filter(SNP.PP.H4 > 0.95)

El resultado es el siguiente:

Como puede verse en la figura, la probabilidad posterior del sitio SNP.4811 es 1. ¿Cómo encontrar esta ubicación? El número rs de este sitio se puede encontrar a través del valor P correspondiente (1.81e-42);

4 Interpretación de resultados

Para los resultados de salida, solo debemos prestar atención a la última columna de información SNP.PP.H4, que corresponde a la cuarta hipótesis H4 mencionada anteriormente en el tweet.

SNP.PP.H4Representa la probabilidad posterior de que la señal significativa de GWAS y el sitio eQTL sean el mismo sitio, con un rango de 0 a 1, donde 0 indica una probabilidad del 0 % y 1 indica una probabilidad del 100 %. Cuanto mayor sea la probabilidad posterior, mejor.

5 cosas a tener en cuenta

1) Dado que el análisis de colocalización se calcula en función de una determinada región genómica, no incluya toda la información del genoma completo (debería ser vago), una no tiene sentido y la otra requiere mucho tiempo y aumenta la carga de trabajo de la computadora. ;

2) Aunque no necesitamos incluir toda la información del genoma, eso no significa que solo la información de un sitio de mutación sea suficiente.

3) Por lo tanto, el enfoque correcto es extraer primero los datos resumidos de GWAS de las regiones aguas arriba y aguas abajo de los sitios variantes importantes en GWAS (puede decidir qué tan grande es esta región, no existe un estándar de oro). Idealmente, después de la extracción, el genoma donde se encuentran los sitios de variantes importantes. El número de SNP en una región oscila entre 1.000 y 10.000.

4) Este método supone que solo hay un locus causal , por lo que si el fenotipo 1 (GWAS) y el fenotipo 2 (tomando eQTL como ejemplo) tienen múltiples loci significativos en una determinada región, este método no se puede utilizar para localizarlos. una limitación de este método, por lo que si hay varios sitios importantes en una determinada región genómica, considere otras herramientas (herramientas que permiten la co-localización de múltiples sitios causales)

Supongo que te gusta

Origin blog.csdn.net/weixin_46587777/article/details/132368665
Recomendado
Clasificación