Il s'agit du package R pour GRAPPLE (Genome-wide mR Analysis under Pervasive PLEiotropy), un cadre complet pour la randomisation mendélienne.
Pour plus de détails sur le framework GRAPPLE, veuillez vous référer à notre manuscrit.
Le package GRAPPLE peut être installé dans R à partir de ce référentiel Github :
library(devtools)
install_github("jingshuw/grapple")
Il peut également être nécessaire d'installer PLINK pour l'agglomération LD et de préparer un ensemble de données de référence d'agglomération LD approprié pour PLINK, s'il a besoin de GRAPPLE pour effectuer le prétraitement des données. Une ressource de l'ensemble de données de référence de la population européenne pour l'agglutination, qui est également utilisée dans l'article GRAPPLE, est le panel de référence européen de 1 000 génomes téléchargé ici http://fileserve.mrcieu.ac.uk/ld/data_maf0.01_rs_ref.tgz. , de la citation MRCIEU.
L'analyse avec GRAPPLE commence par le prétraitement des statistiques récapitulatives brutes du GWAS, qui comprend la sélection d'instruments génétiques, l'harmonisation des ensembles de données pour partager le même effet et le même allèle de référence, le calcul d'une matrice de corrélation du bruit dans les associations marginales estimées qui est partagée entre les SNP, et sélectionner une liste de SNP candidats pour la détection de marqueur de mode.
Pour ce faire, GRAPPLE a besoin d'une liste de fichiers de statistiques récapitulatives brutes GWAS. Chaque fichier GWAS est un fichier ".csv" ou ".txt" contenant une trame de données d'au moins 6 colonnes avec ces noms de colonnes : SNP
, effect_allele
, other_allele
, beta
, se
, pval
. La colonne SNP
contient le rsID pour chaque SNP. Les colonnes effect_allele
et other_allele
doivent avoir des lettres majuscules. La colonne beta
contient la taille d'effet estimée pour les traits continus et le rapport de cotes logarithmique pour le trait binaire, et la colonne se
représente l'écart type du beta
correspondant.
Tous les fichiers de statistiques récapitulatives GWAS au format ci-dessus utilisés dans le document GRAPPLE peuvent être téléchargés à partir d'ensembles de données. Pour la source originale publiquement disponible de chaque fichier, veuillez vous référer à la section 3 des informations supplémentaires du manuscrit.
Le prétraitement détaillé de GRAPPLE nécessite un fichier pour la maladie (fichier de résultats) et deux fichiers pour chaque facteur de risque, l'un étant destiné à la sélection des SNP (fichier de sélection) et l'autre à l'estimation des effets marginaux des SNP sur ce facteur de risque ( fichier d'exposition). Nous autorisons le chevauchement des individus pour les données GWAS dans les fichiers de résultats et d'exposition, car il devrait y avoir aussi peu d'individus qui se chevauchent que possible entre les fichiers de sélection et les autres fichiers pour éviter les biais de sélection du SNP. Parfois, il peut être difficile de trouver de tels ensembles de données GWAS pour la sélection SNP. Une option consiste à utiliser les données GWAS provenant d’autres ascendances.
A titre d'exemple, on peut télécharger les fichiers de statistiques récapitulatives pour l'IMC et le DT2 à partir des ensembles de données, ainsi que télécharger le panneau de référence et décompresser le fichier ".tgz" dans le dossier actuel. Ensuite, nous pouvons commencer par sélectionner les SNP de ces fichiers comme instruments génétiques.
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"
L'extraction des SNP indépendants peut prendre quelques minutes en fonction de la taille des fichiers de statistiques récapitulatives GWAS.
data.list <- getInput(sel.file, exp.file, out.file, plink_refdat, max.p.thres = 0.01, plink_exe = 'plink')
Cette fonction extrait tous les SNP indépendants dont les valeurs p de sélection ne dépassent pas 0,01. Il renvoie trois éléments. L'un est « données », qui est une trame de données des statistiques récapitulatives des SNP sélectionnés, l'autre est « marker.data », qui est une trame de données pour tous les SNP marqueurs candidats. La différence entre « data » et « marker.data » est que nous utilisons un r2 plus strict (0,001) dans le regroupement de LD pour la sélection d'instruments génétiques afin de garantir l'indépendance que dans la sélection des SNP marqueurs candidats (r2 = 0,05). Le troisième élément est la matrice de corrélation estimée pour les cohortes GWAS.
Nous utilisons PLINK pour effectuer le regroupement LD. Le nom/chemin par défaut de la commande plink est "plink" (passé via l'argument plink_exe
). Pour les utilisateurs de systèmes Linux / Windows, cette commande ne fonctionnerait pas et il faudrait spécifier le chemin du fichier exe, comme "./plink" en fonction de l'endroit où ils installent plink. Si R ne parvient pas à exécuter la commande plink, une erreur s'affichera indiquant que le fichier regroupé n'est pas trouvé.
Si le nombre de facteurs de risque est de 1, GRAPPLE peut détecter le nombre de voies pléiotropes en trouvant le nombre de modes dans la vraisemblance du profil robuste, compte tenu d'un seuil de sélection de valeur p.
Nous pouvons essayer l'exemple ci-dessus.
## 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
Il n'y a qu'un seul mode dans la probabilité, nous ne trouvons donc aucune preuve de voies pléiotropiques multiples. Cela nous donne une certaine garantie d'utiliser les MR-RAP pour estimer l'effet causal du facteur de risque.
result <- grappleRobustEst(data.list$data, p.thres = 1e-4)
Cette fonction renvoie nos résultats d'estimation.
Voici un autre exemple où l'on peut détecter plusieurs modes
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
Nous trouvons trois modes dans la vraisemblance du profil. En vérifiant les SNP marqueurs, les gènes marqueurs et le trait GWAS cartographié, nous pouvons constater que le LDL-C peut être un trait confondant. Nous pouvons ensuite exécuter GRAPPLE en ajustant les effets du 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)
Après ajustement en fonction du LDL-C, nous ne trouvons aucune preuve d'un effet causal de la CRP sur la coronaropathie.