1、在linux中安装好R

2、准备好画曼哈顿图的R脚本即manhattan.r,manhattan.r内容如下:

#!/usr/bin/Rscript
#example : Rscript plot_manhatom.r XXX.assoc XXX.pdf
argv <- commandArgs()
#define the function to plot the manhatton and quantitle-quantitle plot
plot_manhatton<-function(site_file,save_file){
        read.table(site_file,header=T)->data
    data<-data[which(data[,5]=="ADD"),]
    logp=-log10(data[,9]) #value
        chr=data[,1] #chr
        position<-data[,3] #position
#       xaxis=0
        sig=numeric()
        lab=numeric()
    flogp=numeric();
        the_col=c("darkblue","gray"); #chr class
        whole_col=c()
    xlabel=numeric();
        length_add=0
        label=numeric();
        for(i in 1:22){
                position[chr==i]->chr_pos
        chr_pos<-chr_pos-chr_pos[1]+17000000
        chr_num=length(chr_pos)
                cat("For chrosome",i,",Num of SNPs:",chr_num,"\n")
                if(length(chr_pos)==0){
                        next
                }
                flogp=c(flogp,logp[chr==i])
                label=c(label,i)
                whole_col=c(whole_col,rep(the_col[i%%2+1],chr_num))
                chr_pos=length_add+chr_pos
                xlabel=c(xlabel,chr_pos)
                length_add=sort(chr_pos,decreasing=T)[1]
        lab=c(lab,(chr_pos[1]+length_add)/2)
        }
    png(save_file,height=500,width=600)
    par(mar=c(5,6,4,2))
        plot(xlabel,flogp,col=whole_col,axes=F,xlab="",ylab="",ylim=c(0,12),pch=20,cex=0.5,cex.lab=1.2,cex.axis=1.4)#ylim=c(0,6)
    significance=-log10(0.05/length(data[,1]))
    sig_pos<-xlabel[which(flogp>significance)]
    for(i in 1:length(sig_pos)){
        sig<-c(sig,which(xlabel>sig_pos[i]-60000 & xlabel<sig_pos[i]+60000))
    }
    sig<-unique(sig)
    cat("significant signal:",sig[10:20],"\n")
    points(xlabel[sig],flogp[sig],col="red",pch=20,cex=0.5)
    title(xlab="Chromosome",ylab=expression(-log[10]*(p)),cex.lab=1.4)
#   title(xlab="Chromosome",ylab="Score",cex.lab=1.8)
#       title("GWAS scan for Hair curl", cex.main=2.5)
#       yaxis=seq(0,1,by=0.1)
#       axis(2,yaxis,yaxis,las=1,cex.axis=1.5,line=-2)
        axis(2,las=2,cex.axis=1.4)
        #las can change the directory of the axis character
        #las=0 always parallel to the axis
        #las=2 always horizontal

        for(i in 1:22){
                mtext(label[i],side=1,at=lab[i],las=0,font=1,cex=0.8)
                #cex magnified relative to the to the default
        }
#    mtext("X",side=1,at=x[23],las=0,font=1,cex=1.4)
#    mtext("Y",side=1,at=x[24],las=0,font=1,cex=1.4)

#       axis(1,x,as.character(label),tick=TRUE,font=1)
        par(lty=2)
        abline(h=significance,cex=1.5,col="red")
#plot the QQ plot
#    par(fig=c(0.58,0.92,0.43,0.95),new=TRUE)
#    observed <- sort(data[,12])
#    logp=-log10(observed)
#    expected <- c(1:length(observed))
#    lexp <- -(log10(expected / (length(expected)+1)))
#    plot(x=lexp,y=logp,pch=19,cex=0.6, xlab="Expected (-logP)", ylab="Observed (-logP)",cex.lab=1.2,cex.axis=1.2)
#    abline(0,1,col="red",lwd=2,lty=1)

    dev.off()
}

site_file<-argv[6];print(site_file)
save_file<-argv[7];print(save_file)
plot_manhatton(site_file,save_file)

#round(x,digits=3) keep the length of the digit

3、准备好plink跑完后的.assoc.linear文件,比如mydata.assoc.linear

4、在linux中输入以下一个命令:

其中,mydata.png即为我们想要的曼哈顿图(manhattan plot)

Rscript manhattan.r mydata.assoc.linear mydata.png

R语言画全基因组关联分析中的曼哈顿图(manhattan plot)的更多相关文章

  1. 全基因组关联分析(Genome-Wide Association Study,GWAS)流程

    全基因组关联分析流程: 一.准备plink文件 1.准备PED文件 PED文件有六列,六列内容如下: Family ID Individual ID Paternal ID Maternal ID S ...

  2. 全基因组关联分析(GWAS)的计算原理

    前言 关于全基因组关联分析(GWAS)原理的资料,网上有很多. 这也是我写了这么多GWAS的软件教程,却从来没有写过GWAS计算原理的原因. 恰巧之前微博上某位小可爱提问能否写一下GWAS的计算原理. ...

  3. GWAS 全基因组关联分析 | summary statistic 概括统计 | meta-analysis 综合分析

    有很多概念需要明确区分: 人有23对染色体,其中22对常染色体autosome,另外一对为性染色体sex chromosome,XX为女,XY为男. 染色体区带命名:在标示一特定的带时需要包括4项:① ...

  4. 【GWAS文献解读】疟原虫青蒿素抗药性的全基因组关联分析

    英文名:Genetic architecture of artemisinin-resistant Plasmodium falciparum 中文名:疟原虫青蒿素抗药性的全基因组关联分析 期刊:Na ...

  5. GWAS | 全基因组关联分析 | Linkage disequilibrium (LD)连锁不平衡 | 曼哈顿图 Manhattan_plot | QQ_plot | haplotype phasing

    现在GWAS已经属于比较古老的技术了,主要是碰到严重的瓶颈了,单纯的snp与表现的关联已经不够,需要具体的生物学解释,这些snp是如何具体导致疾病的发生的. 而且,大多数病找到的都不是个别显著的snp ...

  6. 全基因组关联分析(GWAS):为何我的QQ图那么飘

    前段时间有位小可爱问我,为什么她的QQ图特别飘,如果你不理解怎样算飘,请看下图: 理想的QQ图应该是这样的: 我当时的第一反应是:1)群体分层造成的:2)表型分布有问题.因此让她检查一下数据的群体分层 ...

  7. 一行命令学会全基因组关联分析(GWAS)的meta分析

    为什么需要做meta分析 群体分层是GWAS研究中一个比较常见的假阳性来源. 也就是说,如果数据存在群体分层,却不加以控制,那么很容易得到一堆假阳性位点. 当群体出现分层时,常规手段就是将分层的群体独 ...

  8. 全基因组关联分析(GWAS)扫不出信号怎么办(文献解读)

    假如你的GWAS结果出现如下图的时候,怎么办呢?GWAS没有如预期般的扫出完美的显著信号,也就没法继续发挥后续研究的套路了. 最近,nature发表了一篇文献“Common genetic varia ...

  9. 全基因组关联分析学习资料(GWAS tutorial)

    前言 很多人问我有没有关于全基因组关联分析(GWAS)原理的书籍或者文章推荐. 其实我个人觉得,做这个分析,先从跑流程开始,再去看原理. 为什么这么说呢,因为对于初学者来说,跑流程就像一个大黑洞,学习 ...

随机推荐

  1. 诺基亚N900使用技巧

    一直都对 Linux 的掌上终端挺感冒的,最近从闲鱼上入后一台欧版的,开机进行评测和使用.以下经验仅供新手参考. 选择 N900 是有原因的,首先 N900 相对来说比较小巧(作为 MID,对比起手机 ...

  2. DAO模式设计步骤

    1.DAO 全称是data access object,数据库访问对象,主要的功能就是用于进行数据操作的,在程序的标准开发架构中属于数据层的操作. 2.分成架构 企业分层架构 客户层:因为现在都采用了 ...

  3. 基于mini2440的Tslib的移植

    软件平台: win7系统,虚拟机ubuntu12.04 mini2440开发板 tslib是电阻式触摸屏用于校准的一个软件库,是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波.去抖.校准等功能 ...

  4. Nodejs简单介绍以及在windows环境下安装与配置流程

    简介 一. Nodejs是什么? Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效. ...

  5. bash 相关的一些小代码片断

    批量修改文件名: for i in *.html; do mv $i ${i/oldstring/newstring}; done; 批量替换文件内容: sed -i "s/oldstrin ...

  6. 将对象的所有属性名放到一个数组中 || 获得对象的所有属性名 || return;不具有原子性 || 怎样自己制作异常|| 判断对象有没有某个属性 || 当传递的参数比需要的参数少的时候,没有的值会被赋予undefined || 获得函数实际传递的参数 || 怎么用函数处理一个对象 || 用一个名字空间定义一个模块所有的函数 || 给一个对象添加方法

    获得对象的所有属性名 || 将对象o的所有属性名放到数组中 var o = {x:1,y:2,z:3}; var arr = []; var i = 0; for(arr[i++] in o){};/ ...

  7. ZYNQ 的PS GEM DMA存在缺陷

    使用iperf对zynq进行单socket tcp传输速率测试: 无网络损伤时,单向网络带宽约为600Mbps,双向网络带宽相加约400Mbps: 50ms延时,1ms抖动,无丢包时,单向网络带宽约为 ...

  8. Foundation框架—字符串(NSString)

    一 NSString不可变字符串 1.字符串的创建 //创建字符串常量 NSString *string1 = @"hello"; string1 = @"hello w ...

  9. Spring-Batch CSV文件读取时的注意点

    按照Spring Batch 之 Sample(CSV文件操作)(四) 的方式配置好csvItemReader, 发现读入的数据很是奇怪,通过修改配置文件发现, commit-interval=&qu ...

  10. AWS多个EIP的解决方案

    前言 前段时间,公司部署在AWS上的一台EC2突然访问不了了,后来经过检测发现是被GWF给墙了,可能是我们经常拿这台服务器来FQ导致的,幸好这台服务器的客户都是在香港的,被墙了对客户没有什么影响,但是 ...