使用PAINTOR做fine-mapping的步骤
作者:互联网
首先,感谢陈文燕群主跟另外一位博主(又是一只小菜鸟)的帖子。链接放出来:
(2) https://www.jianshu.com/p/49ca57083c84
我这个随笔只是记录自己跑PAINTOR的过程,方便以后自己忘记其中步骤可以翻阅,所以仅供参考。有错漏的地方麻烦告知我,因为我也是小白,怕自己搞错。
开始
第一步:包括如何安装PAINTOR、检测是否安装成功及下载注释文件
此步骤详细看上面两个链接帖子。
第二步: 准备输入文件(包括三类)
具体哪三类还是详细看上面帖子
第三步:开始制作输入文件
(一) Locus File(生成locus、locus.snp文件):
1. 将assoc结果文件中的P值转换为Z值(用R语言)
1 t=read.table("filename.assoc",header=T) 2 c=qnorm(1-t$P/2) 3 t$d=ifelse(t$OR >= 1, c, -c) 【OR >= 1 ,zscore = c ; OR < 1, zscore = -c】 4 write.table(t,"filename.assocz",col.names=T,row.names=F,quote=F,sep=" ")
2. 根据assoc中显著性位点的信息,提取位点前后25000距离内的位点。生成LOCUS FILE中的locus、locus.snp文件
1 awk '{if($1=="13" && $3> 2009**** && $3< 2014****) print $0}' filename.assocz > Locus1_50 【我们top1 SNP 是13:201****, 所以取位点前后25000距离内的所有位点,记录到Locus1_50】 2 sed '1i CHR SNP BP A1 F_A F_U A2 CHISQ P OR z-score' Locus1_50 > Locus1_50.txt 【给Locus1_50文档的第一行加上抬头CHR/SNP/BP…】 3 awk '{print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11}' Locus1_50.txt > Locus 4 awk '{print $1,$3,$2,$9,$11}' Locus > Locus2 【生成locus文件】 5 awk '{print $3}' Locus2 > Locus2.snp 【生成locus.snp文件】
- 3. 用R语言进行制作(是否需要把每条染色体的位点分别分开?不是分开染色体,而是分析结果文件中显著性靠前的位点)
(二) LD Matrix File (生成Locus.ld文件):
1. Plink提取信息LD矩阵信息
1 plink --bfile filename --a1-allele filename.bim 5 2 --extract Locus2.snp --r bin4 --out Locus2.snp_LD
解析:
(1)--a1-allele <filename> [A1 allele col. number] [variant ID col.] 【根据上面个1)指令,这里的作用是在final_1-22_low.bim文件中提取第五列的minor allele,也就是A1和第二列SNPname】
(2)--extract Locus2.snp 【结合上面(1)--a1-allele指令,这里的作用是提取Locus2.snp文档中所有snp在bim文件中的第5列“A1”和第2列“SNPname”】--bim文件如下图
(3)--r bin4 【--r calculates and reports raw inter-variant allele count correlations;(if you specify 'bin' and/or one of the matrix shape modifiers), all pairs in table format (with 'inter-chr'), or a limited window in table format (this is the default);'bin' causes the output matrix to be written in double-precision binary format, while 'bin4' specifies single-precision binary. The matrix is square if no shape is explicitly specified.】
(4)疑问:如果bim文件中的snpname、A1或者A2缺失,又会是怎样?
2. 用R语言制作成连锁矩阵文件locus.ld
1 t=readBin("Locus2.snp_LD.ld.bin",what="numeric",n=20000000,size=4) 2 a=sqrt(length(t)) 3 t2=matrix(t,a,a) 4 write.table(t2,"Locus2.ld",col.names=F,row.names=F,quote=F,sep=" ")
解析:
(1)文件Locus2.snp_LD.ld.bin就是【1.使用Plink提取信息LD矩阵信息】步骤所生成的文件。
(2)readBin(con,what,n) 【这个是读取二进制文件的R函数,con指的是要读取二进制文件的连接对象。what是像字符、整数等的模式,n是从二进制文件读取的字节数。size是什么??】
(3)a=sqrt(length(t)) t2=matrix(t,a,a) 【查查看是什么鬼】
(三) Annotation Matrix File(生成.annotation文件):
1、使用Python和PAINTOR软件的python脚本制作注释文件
1 python AnnotateLocus.py \ 2 --input anno_path \ 3 --locus Locus2 \ 4 --out Locus2.annotations \ 5 --chr CHR \ 6 --pos BP
解析:
(1)由于AnnotateLocus.py脚本对应的是python2。解决办法:用python2跑,或者用python3,然后在脚本print后面的内容加入“()”。
(2)记住:所有指令后面带的文件路径要准确【也就是说要指定文件所在路径】。
(3)anno_path是在Functional_Annotations文档中的Annotation_Paths选取部分注释文件组成的。【好像是没特殊指定】--是不是不用制作,直接使用Annotation_Paths也可?因为后面跑PAINTOR的时候也是需要指定此文件中的一个注释文件。回头试试
(4)--chr和--pos 后面是写出你引用locus文件中的chr和pos表头。
(四) 运行PAINTOR程序
PAINTOR -input input.file -Zhead z-score -LDname ld -in /lan/ -out /lan/ -enumerate 3 -annotations E127_15_coreMarks_mnemonics.bed.6_EnhG.NHEK-Epidermal_Keratinocytes,CTCF.bed
解析:
(1)PAINTOR 必须给出具体路径:如“/**/**/**/**/PAINTOR_V3.0/PAINTOR”
(2) -input input.file 后面这个input.file是需要自己制作(新建)的一个文件,里面为所有你的locus的名称,排成一排。
(3)-Zhead z-score 后面的z-score是指你的Locusfile中Z值列的抬头名称。
(4) -LDname ld 后面的ld是指你的LD文件的后缀。
(5) -in 后面是Locusfile\LDmatrix\Annotation文件的路径。
(6) -out 后面是结果文件输出路径。
(7)- enumerate 后面数字是指causal snp的最大数量,可以从小往大尝试,指导结果近似。(需要进一步理解及尝试)
(8) -annotations 后面是注释文件的列名,也就是anno_path 文件中的注释文件(即在anno_path文件中选取,直接名字即可,无需任何路径)。如有多个请用逗号分隔,不推荐超过5个。
(五)解读结果文件
具体还是详细看顶文链接的帖子
标签:文件,--,Locus2,PAINTOR,mapping,locus,snp,fine 来源: https://www.cnblogs.com/Aaron-lan/p/14898296.html