R: Truncated Manhattan plot

mhtplot.trunc {gap} | R Documentation

## Truncated Manhattan plot

### Description

To generate truncated Manhattan plot, e.g., of genomewide significance (P values) or a random variable that is uniformly distributed. The rationale of this function is to extend mhtplot() to handle extremely small p values as often seen from a protein GWAS; for R will break down when p <= 1e-324.

### Usage

    mhtplot.trunc(x, chr = "CHR", bp = "BP", p = NULL, log10p = NULL, z = NULL, snp = "SNP",
                        col = c("gray10", "gray60"),
                        chrlabs = NULL, suggestiveline = -log10(1e-05),
                        genomewideline = -log10(5e-08), highlight = NULL,
                        annotatelog10P = NULL, annotateTop = FALSE,
                        cex.mtext=1.5, cex.text=0.7,
                        mtext.line = 2, cex.y = 1, y.ax.space = 5, y.brk1, y.brk2,
                        delta=0.05,
                        ...)

### Arguments

`x` | A data.frame
`chr` | Chromosome
`bp` | Position
`p` | p values, e.g., "1.23e-600"
`log10p` | log10(p)
`z` | z statistic, i.e., BETA/SE
`snp` | SNP. Pending on the setup it could either of variant or gene ID(s)
`col` | Colours
`chrlabs` | Chromosome labels, 1,2,...22,23,24,25
`suggestiveline` | Suggestive line
`genomewideline` | Genomewide line
`highlight` | A list of SNPs to be highlighted
`annotatelog10P` | Threshold of -log10(P) to annotate
`annotateTop` | Annotate top
`cex.mtext` | axis label extension factor
`cex.text` | SNP label extension factor
`mtext.line` | position of the y lab
`cex.y` | y axis numbers
`y.ax.space` | interval of ticks of the y axis
`y.brk1` | lower -log10(P) break point
`y.brk2` | upper -log10(P) break point
`delta` | a value to enable column(s) of red points
`...` | other options

### Value

The plot is shown on or saved to the appropriate device.

### Author(s)

James Peters, Jing Hua Zhao

### See Also

`mhtplot`

### Examples

    ## Not run:
    options(width=120)
    require(gap.datasets)
    mhtdata <- within(mhtdata, {z=qnorm(p/2, lower.tail=FALSE)})
    mhtplot.trunc(mhtdata, chr = "chr", bp = "pos", z = "z", snp = "rsn",
                  y.brk1=10, y.brk2=12, mtext.line=2.5)

    # https://portals.broadinstitute.org/collaboration/
    # giant/images/0/0f/Meta-analysis_Locke_et_al+UKBiobank_2018.txt.gz
    gz <- gzfile("work/Meta-analysis_Locke_et_al+UKBiobank_2018_UPDATED.txt.gz")
    BMI <- within(read.delim(gz,as.is=TRUE), {Z <- BETA/SE})
    print(subset(BMI[c("CHR","POS","SNP","P")],CHR!=16 & P<=1e-150))
    library(Rmpfr)
    print(within(subset(BMI, P==0, select=c(CHR,POS,SNP,Z)),
                 {P <- format(2*pnorm(mpfr(abs(Z),100),lower.tail=FALSE));
                  Pvalue <- pvalue(Z); log10P <- -log10p(Z)}))
    png("BMI.png", res=300, units="in", width=9, height=6)
    par(oma=c(0,0,0,0), mar=c(5,6.5,1,1))
    mhtplot.trunc(BMI, chr="CHR", bp="POS", z="Z", snp="SNP",
                  suggestiveline=FALSE, genomewideline=-log10(1e-8),
                  cex.mtext=1.2, cex.text=1.2,
                  annotatelog10P=156, annotateTop = FALSE,
                  highlight=c("rs13021737","rs17817449","rs6567160"),
                  mtext.line=3, y.brk1=200, y.brk2=280, cex.axis=1.2, cex.y=1.2, cex=0.5,
                  y.ax.space=20,
                  col = c("blue4", "skyblue")
    )
    dev.off()

    ## End(Not run)

[Package gap version 1.2.3-1 Index]