r QQ情节功能。 v2使用data.table库读取数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了r QQ情节功能。 v2使用data.table库读取数据相关的知识,希望对你有一定的参考价值。

args <- commandArgs(trailingOnly = TRUE)
pvals <- args[1]
outfilename <- args[2]
errorbars <- args[3]

library(data.table)
data <- fread(pvals,data.table=F)


unadj_filtered <- sort(data[,1])
UNADJ <- -log(unadj_filtered,10)
QQ <- -log(ppoints(length(UNADJ)),10)



GCfactor= round(median(qchisq(data[,1],1,lower.tail=F),na.rm=T)/.455,3)

png(paste(outfilename,'.png', sep=''))
par(bty='l')

plot(c(0,max(QQ)), c(0,max(UNADJ)+ 1), xlab='Expected -log10(p)', ylab='Observed -log10(p)', col='white', cex=1.3, cex.axis=1.2, cex.lab=1.5,pch=20)

if(errorbars == 1)
{
    #code for error bars
    ranks <- c(1:length(QQ))
    CIlower <- qbeta(.025, ranks, length(QQ)-ranks +1)
    CIupper <- qbeta(.975, ranks, length(QQ)-ranks +1)
    plotCIlower <- -log(CIlower,10)
    plotCIupper <- -log(CIupper,10)
    segments(x0=QQ,x1=QQ, y0=plotCIlower,y1=plotCIupper,lwd=2,col='grey')
}

abline(0,1,col='red', lwd=2)
points(QQ, UNADJ, ,pch=20,col='blue')

legend('topleft', paste('GC Lambda =', GCfactor),  bty='n', cex=1.5, xjust=1)

dev.off()
#!/bin/bash

while getopts s:i:o:e: option
do
  case "${option}"
    in
      s) scriptname=${OPTARG};;
      i) indata=${OPTARG};;
      o) outdata=${OPTARG};;
      e) errorbars=${OPTARG};;
    esac
done

module load R

Rscript $scriptname $indata $outdata $errorbars 

#Usage: 
#awk '{print $15}' plink_results/all_norel_20pct_allchr.assoc.logistic > plink_results/all_norel_20pct_nostudycov_allchr.assoc.logistic.p
#qsub qq_plot.pbs -e errandout -o errandout -lwalltime=00:15:00 -F "-s qq_plot_v2.r -i plink_results/all_norel_20pct_nostudycov_allchr.assoc.logistic.p -o plink_results/all_norel_20pct_nostudycov_allchr.assoc.logistic.p 1"
args <- commandArgs(trailingOnly = TRUE)
pvals <- args[1]
outfilename <- args[2]
errorbars <- args[3]

data <- read.table(pvals,header=T,stringsAsFactors=F,nr=20000000,colClasses="numeric")


unadj_filtered <- sort(data[,1])
UNADJ <- -log(unadj_filtered,10)
QQ <- -log(ppoints(length(UNADJ)),10)



GCfactor= round(median(qchisq(data[,1],1,lower.tail=F),na.rm=T)/.455,3)

png(paste(outfilename,'.png', sep=''))
par(bty='l')

plot(c(0,max(QQ)), c(0,max(UNADJ)), xlab='Expected -log10(p)', ylab='Observed -log10(p)', col='blue', cex=1.3, cex.axis=1.2, cex.lab=1.5,pch=20)

if(errorbars == 1)
{
    #code for error bars
    ranks <- c(1:length(QQ))
    CIlower <- qbeta(.025, ranks, length(QQ)-ranks +1)
    CIupper <- qbeta(.975, ranks, length(QQ)-ranks +1)
    plotCIlower <- -log(CIlower,10)
    plotCIupper <- -log(CIupper,10)
    segments(x0=QQ,x1=QQ, y0=plotCIlower,y1=plotCIupper,lwd=2,col='grey')
}

abline(0,1,col='red', lwd=2)
points(QQ, UNADJ, ,pch=20,col='blue')

legend('topleft', paste('GC Lambda =', GCfactor),  bty='n', cex=1.5, xjust=1)

dev.off()

以上是关于r QQ情节功能。 v2使用data.table库读取数据的主要内容,如果未能解决你的问题,请参考以下文章

R data.table 滑动窗口

R:在用户定义的函数中使用 get 和 data.table

R:将自定义图例添加到 ggplot

如何填充(自动填充)值,例如使用 R 中的 data.table 将 NA 替换为组中的第一个值?

R语言data.table导入数据实战:data.table使用dcast.data.table函数实现透视表(pivot table)

重命名 data.table 的问题