PAINTOR教程

写在前面:本来呢,最近一段时间懒于写教程了,但是这个软件的manual对于初学者真的不友好啊,一狠心我决定写一篇,而且市面上我没搜到太多相关的中文教程,只看到一篇https://mp.weixin.qq.com/s/iOO5UFRJL2fZmilzBMIGuQ
,还是很不错的!感谢原作者!以此为基础,我会再增添一些新手可能会遇到的一些问题的详细流程,比如写个小循环啊之类的吧,使这个软件能够更好地为大家服务!如果有不对的地方还请大家指正。
下面开始喽~
————————————————————————————

软件介绍

PAINTOR为fine-mapping的一种方法。
参考综述:https://www.ncbi.nlm.nih.gov/pubmed/29844615
PAINTOR参考文献:https://www.ncbi.nlm.nih.gov/pubmed/?term=Improved+methods+for+multi-trait+fine+mapping+of+pleiotropic+risk+loci
软件官网:https://github.com/gkichaev/PAINTOR_V3.0
软件manual:https://github.com/gkichaev/PAINTOR_V3.0/wiki/1.-Introduction
基本上就是上述参考资料了。我们开始吧~

简单来说,做完GWAS后,可能会得到很多snps。但这么多的信号位点不代表他们都是影响表型的决定性位点,有一些可能是连锁带来的,因此我们就需要一些工具去判断哪些才是影响表型的关键位点。PAINTOR就是做zhe个事情的,帮你找出那个真正的snp,你就可以做后续分析啦。
————————————————————————————

安装软件

git clone https://github.com/gkichaev/PAINTOR_V3.0.git
cd PAINTOR_V3.0
bash install.sh

测试一下是否安装成功:

/PAINTOR -input SampleData/input.files -in SampleData/ -out SampleData/ -Zhead Zscore -LDname ld -enumerate 2 -annotations DHS

此时会在SampleData里生成.results文件,说明跑成功了。

为了节省时间,注释文件的下载最好在这步就进行,因为6.7G,很慢,有可能还下不全。注释文件下载地址:https://ucla.box.com/s/x47apvgv51au1rlmuat8m4zdjhcniv2d

注意:此软件的注释版本都是hg19
接下来就正式开始我们自己的喽~
————————————————————————————

准备输入文件(包括3类文件)

对于每个独立snp,都需要三个文件,文件分隔符均为空格。

高亮的就是我们最终需要的三个输入文件,有多少个locus就对应有3个这样的文件。

locus是我们手动制作的,当然把snp分到不同的locus组时可能用到plink和/或python;
.ld文件是根据.snp和.bin文件通过plink和R得来的;
.annotation是需要python脚本跑出来的。
了解了总体我们就开始一个个制作。

1.Locus File(生成locus、locus.snp文件):

从你的gwas summary中得到的位点信息,包括CHR、BP、SNP、Z-score四列。一般提取上下50kb左右,或者按照p值筛选,对于多个种群,可以有多个Z-score。

z-score不是OR值或beta值,而是带方向的。可以beta/se得到,或者有的meta之后直接有z-score可以用。

至于locus的分法,manual也没有详细说明,可以根据别的数据分好的locus去对应自己的summary数据的snp。
也可以根据自己的原始数据用plink分locus,代码如下。
plink --bfile filename --blocks
会出来[plink.blocks]文件,就是我们需要的,一行代表一个locus组,我们只要把gwas summary中snp对应到这些组里就可以。一个locus一个文件。每个locus文件内是这样:


同时记得还要制作一个locus.snp文件,里面只放这个locus中包含的snp名称,排成一列,为下面的文件做准备。也是有多少个locus就做多少个文件。

2.LD Matrix File(生成Locus.ld文件):

N×N矩阵,snp之间的r2,如果有自己的数据,可以用plink进行计算,如果没有自己的数据,可以用千人基因组1000G进行计算。

for num in {1..100} #比如有100个locus文件
do 
plink 
--bfile filename #原始基因文件
--a1-allele filename.bim 6 2 
#同样是上面文件的bim格式,6代表A1所在列,2代表snp所在列
--extract Locus${num}.snp 
#此为新建文件,包含上面locus file中的全部snp
--r bin4 
--out Locus${num}.snp_LD
done

这步结束后每个locus都会产生一个.bin文件。

来,捋一下,到目前为止,我们已准备好的文件包括以下:

别忘了我们是要生成locus1.ld文件的,所以现在来做矩阵喽,用的上面提到的推文中的命令,R运行,我弄了个小循环,毕竟我们要做100个文件呢(上面假设100个locus):
for(i in 1:100){
t=readBin(paste("Locus",i,".snp_LD.ld.bin",sep = ""),what="numeric",n=20000000,size=4)
a=sqrt(length(t))
t2=matrix(t,a,a)
write.table(t2,paste("Locus",i,".ld",sep = ""),col.names=F,row.names=F,quote=F,sep=" ")}

生成的.ld文件如下:

噔噔噔~这就是目前我们做好的文件,当然我只是放了locus1,后面每个locus都得有这些文件哦。
3.Annotation matrix file(生成.annotation文件)

这一步就要用到我们最开始下载的注释文件啦,你下载全了吗?记得一定要核对一下大小哦。下载完解压后长这样:

从这里选择跟你研究相关的注释文件,可以从Annotation_Paths(这是所有注释的汇总文件)文件中选择他们的路径,制作成你自己的annotation_list。像这样:
记得前面要根据你自己的工作路径把它路径加全哦。
然后根据你选择好的注释,就开始生成.annotation文件啦,又是个循环:
conda activate test_py2 #如果你电脑里是python3,记得要写这句转成python2
for num in {1..100}
do python AnnotateLocus.py 
--input annotation_list #这个文件是我们刚制作好的,你筛选好的注释路径及名称
--locus Locus${num} 
--out Locus${num}.annotations 
--chr CHR --pos POS #你的loucs文件中chr和pos的表头,这个应该是统一的
done

所有输入文件都制作完成,太不容易了。如图:

运行PAINTOR程序

./PAINTOR -input input.file -Zhead ZSCORE.P1 -LDname LD1 -in RunDirectory/ -out OutDirectory/ -enumerate 3 -annotations Coding,DHS

input是新建的文件,里边为所有你的locus的名称,排成一列。

解读结果文件

对于结果文件,我们重点关注后缀为.results的文件,该文件包含Posterior_Prob列,即后验概率,为我们感兴趣的结果。

下面给个示例:4个SNP位点的结果文件:

结果解读:Posterior_Prob就是我们要的结果,Posterior_Prob值越大,说明这个位点影响表型的可能性越大 ,如示例结果给出的rs3的Posterior_Prob值为0.98,说明该位点影响表型的可能性比较高,后面就能针对性的对这个位点进行后续研究,比如功能验证等。

over

以上都是基于同一组个体,如果有两组人还要改一下某些文件。看官网吧。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容