Este é o pacote R para GRAPPLE (Genome-wide mR Analysis under Pervasive PLEiotropy), uma estrutura abrangente para Randomização Mendeliana.
Para obter detalhes sobre a estrutura GRAPPLE, consulte nosso manuscrito.
O pacote GRAPPLE pode ser instalado em R a partir deste repositório Github:
library(devtools)
install_github("jingshuw/grapple")
Também pode ser necessário instalar o PLINK para agregação de LD e preparar um conjunto de dados de referência de agregação de LD adequado para PLINK, se for necessário que o GRAPPLE execute o pré-processamento de dados. Um recurso do conjunto de dados de referência da população europeia para aglomeração, que também é usado no artigo GRAPPLE, é o painel de referência europeu de 1000 genomas baixado aqui http://fileserve.mrcieu.ac.uk/ld/data_maf0.01_rs_ref.tgz , da citação MRCIEU.
A análise com GRAPPLE começa com o pré-processamento das estatísticas resumidas brutas do GWAS, que inclui a seleção de instrumentos genéticos, harmonização dos conjuntos de dados para compartilhar o mesmo efeito e alelo de referência, cálculo de uma matriz de correlação do ruído em associações marginais estimadas que é compartilhada entre SNPs, e selecionar uma lista de SNPs candidatos para detecção de marcador de modo.
Para fazer isso, o GRAPPLE precisa de uma lista de arquivos brutos de estatísticas de resumo do GWAS. Cada arquivo GWAS é um arquivo ".csv" ou ".txt" contendo um quadro de dados de pelo menos 6 colunas com estes nomes de colunas: SNP
, effect_allele
, other_allele
, beta
, se
, pval
. A coluna SNP
contém rsID para cada SNP. Ambas as colunas effect_allele
e other_allele
precisam ter letras maiúsculas. A coluna beta
contém o tamanho do efeito estimado para características contínuas e razão de probabilidade logarítmica para característica binária, e a coluna se
é o desvio padrão do beta
correspondente.
Todos os arquivos de estatísticas resumidas do GWAS no formato acima usados no artigo GRAPPLE podem ser baixados dos conjuntos de dados. Para a fonte original publicamente disponível de cada arquivo, consulte a Seção 3 das Informações Suplementares do manuscrito.
O pré-processamento detalhado do GRAPPLE precisa de um arquivo para a doença (arquivo de resultado) e dois arquivos para cada fator de risco, onde um é para seleção de SNP (arquivo de seleção) e o outro é para estimar os efeitos marginais dos SNPs neste fator de risco ( arquivo de exposição). Permitimos indivíduos sobrepostos para os dados GWAS nos arquivos de resultado e exposição, onde deve haver o menor número possível de indivíduos sobrepostos entre os arquivos de seleção e outros arquivos para evitar viés de seleção de SNP. Às vezes pode ser difícil encontrar esses conjuntos de dados GWAS para seleção de SNP. Uma opção é usar dados GWAS de outros ancestrais.
Como exemplo, pode-se baixar os arquivos de estatísticas resumidas para IMC e T2D dos conjuntos de dados, e também baixar o painel de referência e descompactar o arquivo ".tgz" na pasta atual. Então, podemos começar selecionando SNPs desses arquivos 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"
A extração dos SNPs independentes pode levar alguns minutos, dependendo do tamanho dos arquivos de estatísticas resumidas do GWAS.
data.list <- getInput(sel.file, exp.file, out.file, plink_refdat, max.p.thres = 0.01, plink_exe = 'plink')
Esta função extrai todos os SNPs independentes cujos valores p de seleção não excedem 0,01. Ele retorna três elementos. Um deles é 'data', que é um quadro de dados das estatísticas resumidas dos SNPs selecionados, o outro é 'marker.data', que é um quadro de dados para todos os SNPs marcadores candidatos. A diferença entre 'data' e 'marker.data' é que usamos um r2 (0,001) mais rigoroso na agregação de LD para a seleção de instrumentos genéticos para garantir a independência do que na seleção de SNPs marcadores candidatos (r2 = 0,05). O terceiro elemento é a matriz de correlação estimada para as coortes do GWAS.
Usamos PLINK para realizar agregação de LD. O nome/caminho padrão do comando plink é "plink" (passado pelo argumento plink_exe
). Para usuários com sistemas Linux/Windows, este comando não funcionaria e é necessário especificar o caminho do arquivo exe, como "./plink" dependendo de onde instalam o plink. Se R não executar o comando plink, haverá um erro informando que o arquivo agrupado não foi encontrado.
Se o número de fatores de risco for 1, o GRAPPLE pode detectar o número de vias pleiotrópicas encontrando o número de modos na probabilidade do perfil robusto, dado um limite de seleção de valor p.
Podemos tentar o exemplo acima.
## 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
Existe apenas um modo de probabilidade, portanto não encontramos nenhuma evidência de múltiplas vias pleiotrópicas. Isso nos dá alguma garantia de usar MR-RAPs para estimar o efeito causal do fator de risco.
result <- grappleRobustEst(data.list$data, p.thres = 1e-4)
Esta função retorna nossos resultados de estimativa.
Aqui está outro exemplo onde podemos detectar vários 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 três modos na probabilidade do perfil. Verificando os SNPs marcadores, os genes marcadores e a característica GWAS mapeada, podemos descobrir que o LDL-C pode ser uma característica confundidora. Podemos então executar o ajuste GRAPPLE para os efeitos do 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)
Após ajuste para LDL-C, não encontramos nenhuma evidência de que exista um efeito causal da PCR na DAC.