--- title: "GWAS Tracks" author: "Paul Shannon" package: igvR date: "`r Sys.Date()`" output: BiocStyle::html_document vignette: > %\VignetteIndexEntry{"GWAS Tracks"} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, include = FALSE} options(width=120) knitr::opts_chunk$set( collapse = TRUE, eval=interactive(), echo=TRUE, comment = "#>" ) ``` # Overview Genome Wide Association Studies (GWAS) are often viewed in a "manhattan plot". [igv.js](https://github.com/igvteam/igv.js/wiki/GWAS) supports thesein two formats: a fixed bed format, and the traditional flexible, multi-column file format in which GWAS results are often summarized. We support only the latter since its flexibility can be used with the five-column fixed bed format as well. The data from GWAS studies is rather sparse, usually with no more than a few hundred variant hotspots which associate with the phenotype of interest. Another feature of these data is that the community is often most concerned with the statistical significance of the association. This is expressed as a pvalue. A minus-log10 transform of the pvalue controls the height of the rendered variant in the manhattant plot. Support for this track type in igvR is new (summer 2022) and unpolished. Control of autoscaling and fixed scaling needs work. There are two relevant classes, shown here with their constructors: 1. GWASTrack("bellenguuez", tbl.gwas, chrom.col=1, pos.col=2, pval.col=5, trackHeight=80) 2. GWASUrlTrack("igv sample", url, chrom.col=12, pos.col=13, pval.col=28) All the arguments are the same, except for the second one, which is either a local data.frame in memory, or a url pointing to a remote file served over http. # Demostration: a local data.frame with 5 columns Here we use a 5-column data.frame from a file hosted in igvR's extdata, GWAS results from a 2022 Nature Genetics paper, [New insights into the genetic etiology of Alzheimer’s disease and related dementias](https://www.nature.com/articles/s41588-022-01024-z). Its first few rows: ``` chrom start end name score 1 chr1 109345809 109345810 rs141749679 2.36e-04 2 chr1 207577222 207577223 rs679515 1.51e-14 3 chr2 9558881 9558882 rs72777026 4.14e-03 4 chr2 37304795 37304796 rs17020490 2.33e-04 5 chr2 105749598 105749599 rs143080277 6.29e-04 6 chr2 127135233 127135234 rs6733839 2.06e-30 ``` ```{r eval=FALSE} library(igvR) igv <- igvR() setBrowserWindowTitle(igv, "AD GWAS") setGenome(igv, "hg38") tbl.gwas <- read.table(system.file(package="igvR", "extdata", "gwas", "bellenguez.bed"), sep="\t", as.is=TRUE, header=TRUE, nrow=-1) track <- GWASTrack("bellenguuez", tbl.gwas, chrom.col=1, pos.col=2, pval.col=5, trackHeight=80) displayTrack(igv, track) ``` ```{r, eval=TRUE, echo=FALSE, out.width="95%"} knitr::include_graphics("images/gwas-01.png") ``` Zoomed into the neighborhood of TREM2, a gene independently known to be associated with Alzheimer's Disease. ```{r, eval=TRUE, echo=FALSE, out.width="95%"} knitr::include_graphics("images/gwas-02.png") ``` # Demonstration: a remote GWAS file with 34 columns This file is more typical of that used in GWAS studies. These are the columns: 1. DATE ADDED TO CATALOG 2. PUBMEDID 3. FIRST AUTHOR 4. DATE 5. JOURNAL 6. LINK 7. STUDY 8. DISEASE/TRAIT 9. INITIAL SAMPLE SIZE 10. REPLICATION SAMPLE SIZE 11. REGION 12. CHR_ID 13. CHR_POS 14. REPORTED GENE(S) 15. MAPPED_GENE 16. UPSTREAM_GENE_ID 17. DOWNSTREAM_GENE_ID 18. SNP_GENE_IDS 19. UPSTREAM_GENE_DISTANCE 20. DOWNSTREAM_GENE_DISTANCE 21. STRONGEST SNP-RISK ALLELE 22. SNPS 23. MERGED 24. SNP_ID_CURRENT 25. CONTEXT 26. INTERGENIC 27. RISK ALLELE FREQUENCY 28. P-VALUE 29. PVALUE_MLOG 30. P-VALUE (TEXT) 31. OR or BETA 32. 95% CI (TEXT) 33. PLATFORM [SNPS PASSING QC] 34. CNV Here we create the track and display it: ```{r eval=FALSE} url <- "https://s3.amazonaws.com/igv.org.demo/gwas_sample.tsv.gz" track <- GWASUrlTrack("igv sample", url,chrom.col=12, pos.col=13, pval.col=28) displayTrack(igv, track) ``` First, the whole genome view: ```{r, eval=TRUE, echo=FALSE, out.width="95%"} knitr::include_graphics("images/gwas-03.png") ``` Now, zooin into on chromsome 6, and click on any variant in the display (here we chose **rs7767396**) the full data from the multi-column gwas file is available. ```{r, eval=TRUE, echo=FALSE, out.width="95%"} knitr::include_graphics("images/gwas-04.png") ``` # Session Info ```{r eval=TRUE} sessionInfo() ```