我的GWAS高级曼哈顿图折腾过程
如果说别人画图是折腾自己,那我画图可能就是折腾自己兼折腾群主.......
首先在这里感谢何大哥哈(知乎:hewm2008)、很耐心的为我解答了许多问题。
首先简要的说一下我这里作图的要求
- 做四组数据图
- 做一组基因标注
- 做好各种标注
其次我简要的说明一下我这次我遇到的问题,希望其他人可以少折腾一下
- 软件安装不了-因为rectchr是基于perl-SVG作图的,但是SVG安装不上。。。。。。主要有以下几点,perl模块网站打不开,我也不知道咋回事。
++ 解决方法:github搜索安装,如果github上不了,建议上gitee。 - 模块加载不了-模块准确安装后,加载不了,提示找不到SVG.pm
++ 解决方法:模块只是安装在下载目录里,需要将安装后的模块及附加文件cope到软件提示的文件夹里。 - 文件画出来是混乱的(一般来说,文件没有问题,软件只会提示几个简单参数),还有windows转过去的文件的换行符有问题,linux与windows换行符不一样。
++ 解决方法:利用dos2unix 代码dos2unix file
,如果没有这个软件可以用cat或者awk写脚本转换。 - 图画的到处都是,不能区分染色体
++ 解决方法:每一个表头都需要有一个“#”例如#chr start end pi
- PairWiseLink参数不理解,一昧的抄代码不是好事,做事需要找一个契机多思考,多多的有想法。
++ PairWiseLink参数主要取三个东西、画一条曲线曲线的起点为start,终点为end。我一开始没有理解清楚这个层的概念,导致走了很多弯路。在做gwas基因标注的时候我建议靠近下一层的end不改动,用来指出该基因的位置,我们改变start的数据,来调整基因的位置、以避免造成gene拥挤。 - 至今没有理解的问题、一条染色体太多基因,gene文字可以经过调整往下一个染色体上挤挤。(请别介意我用这么口语的文字,哈哈哈),但是我想往前面稍稍那又该怎么办了。
++ 等我想好了我在给大家说。 - 许多不常见的参数介绍
++ ScaleNum=-1 用于去掉图上面的物理位置标注图(你问我为什么要去?因为我导师不认同把物理位置加在一起放成一条的作法,哎,挨批呗。)
++ crBegin 用于更改text的文字,与之为一起的是crMid and crEnd
++ NameCol=颜色 用于更改分层名称的颜色-cor or col
-傻傻分不清楚,当时发现的我,我自己都笑了。
++ 其他的我都在配置文件里标好了
软件介绍
RectChr主要用于基于Chr染色体水平上多层次的可视工具,对一些统计变量用点,线,柱状和heatmap、高亮,文本文字,彩虹链接, 连接,动态热度图,动态柱状图以及结合颜色【即线,散点,直方图,热图,文本, line, scatter/point, histogram , PairWiseLink,link, heatmap(highlights)和text/ 】等 可视化各chr上各区域这个统计量,达到快速一眼看出规律,识别结果。 并且各种可以自己组合 自由修改相关参数,使用方法极像circos的一样。
简单点说circos可以画的,这儿均可以画,只是把圈圈图改为长方型的。其中自己搭配层颜色等,同时也比circos多了一些默认配置,用起来十分简单,如SNP GC密度 直接输入文件即可。
可以在多个场景应用,其中官方简要提供了10个实列,程序网址提供了这些实例的配置文件和输入文件。用法用法简单,在有相关数据的前提下,主要定义层数和各层的画图方式。具体内容可见软件介绍。
GWAS官方绘制解法及出图
##################################### 全局参数 #######################################################
SetParaFor = global
File1 = ./Gwas.data.pvlue.gz ## 这个是必须输入参数,并且尽量放在最前,格式为[Chr Start End Value1 Value2 ... ValueN]
File2 = ./site.text.info
ValueX = 4 ## 多少层,类同circos多少个圈,这不设默认是N,即根据File1的格式来的,可以自己设
ChrSpacingRatio =0.2 ## 不同染色体chr之间的间隔比例(ChrWidth*ChrSpacingRatio)
Main = "GWAS_Figure" ## the Figtur Name #font-size strokewidth=1; fill="green"
ChrArrayDirection = horizontal ## horizontal/vertical chr是按纵排列还是横排列
CanvasHeightRitao = 0.7 ## 画布最下面若有空白 截取上面的0.7 (1.17版本以上才有的参数)
###### 默认各层的配置参数 若各层没有配置的会,则会用这儿的参数 ######
SetParaFor = LevelALL ## 下面是处理初始化参数 SetParaFor 参数处理,若为 LevelALL,即先为所有层设置的默认值
ShiftGradienY=-55 ## 渐变条上移动
ShiftGradienX=-20 ## 渐变条左移动
ShiftChrNameX=60 # chr名右移
ShiftChrNameY=100 # chr名下移
##################################### 各层的参数 #######################################################
### 具体某层的具体配置 把 DealLevePara 设为具体正数(<=ValueX),然后可以具体修改此层要改变的部分
SetParaFor=Level1 ## 下面开始处理第 1 层 参数处理
PType = text
ShowColumn = File2:5 ##
crBG="#FFFFFF" # 白色,即没有背景
ChrWidth=40 # 放text的名字 宽度长点
Rotate=-90 # 旋转 90度 文字
TextFontRatio=1.2 # 文字 放大为原来的1.2倍
NoShowGradien=1 # 不显示渐变条
SetParaFor=Level2
ShowColumn = File2:5 ## 把file0的第四列用散点图形式画出来)
ChrWidth=30 ##这一层宽度调高点
PType = PairWiseLink
StyleUpDown = UpDown
NoShowBackGroup=1 # 同 crBG="#FFFFFF" 一样 即没有背景
SizeGradienRatio=0.8 # 渐变条 缩小为原来的0.8
SetParaFor=Level3 ## 下面开始处理第 3 层 参数处理
PType = point ## 散点
ShowColumn = File1:4
ChrWidth=100 ##这一层宽度调高点
LogP=1 # 0-log() 对数值进行取log
crBG="#FFFFFF" # 背影为白色,实没有画
TopVHigh=1.1 # 只要大于1时就会取最高点
ShowYaxis=1 # 显示左边数值
ValueSpacingRatio=0.04 #和一层空一点
CirsizeRatio=1.2 ## 散点的大小按默认放大缩小
Cutline=5 ## 设置阈值线,颜色默认为红 CorCutline=green
SetParaFor=Level4 # 这一层啥都不画 仅用背景条
ShowColumn = File1:4
ChrWidth=10
PType = EEE #啥都不画 空
其中site.text.info如下格式(第四列没有用到)
#chr PlotSiteA RealSiteB Pvalue TextName
B05 10530308 18530308 1.13E-6 GeneA
B05 18550295 18550295 2.2607E-6 GeneB
B05 25627687 18627687 5.6192E-5 GeneC
B02 39381 939381 6.0143E-5 GeneD
B02 5893253 893253 6.0402E-5 GeneE
B02 10879727 879727 8.8115E-5 GeneF
出图结果
曼哈顿图.jpgGWAS配置介绍
现画高级点的GWAS的曼哈顿图,主要要点如下:
1、RectChr多层,各层高度可以设不同,chr横放,其中chr间隙小点
2、Gwas的点层用point(PType = point)来画,高度高点(ChrWidth=100),不画背景(crBG="#FFFFFF"),和设置一下阈值线(Cutline=5)
3、其中用 Pairwiselink标同点的线,用text层画出gene名(Rotate=-90 # 旋转 90度 文字)
4、其中text层和Pairwiselink画线的方式和颜色可以自己调,我这为了省事,用默认的。
我的配置代码
##################################### 全局参数 #######################################################
SetParaFor = global
File5 = ccc
File6 = Genegene.txt
File1 = FST_n-b.txt ## 这个是必须输入参数,并且尽量放在最前,格式为[Chr Start End Value1 Value2 ... ValueN]
File2 = FST_n-w.txt ## 这个是必须输入参数,并且尽量放在最前,格式为[Chr Start End Value1 Value2 ... ValueN]
File3 = XPEHH_n-b.txt
File4 = XPEHH_n-w.txt ## 其中用NA表示不画,chr End End NA不画但End可以用来贝记为chr的长度
ScaleNum=0
ValueX = 9 ## 多少层,类同circos多少个圈,这不设默认是N,即根据File1的格式来的,可以自己设
#Main="FST and XPEHH"
#MainRatioFontSize=0.8
ChrSpacingRatio =0.03 ## 不同染色体chr之间的间隔比例(ChrWidth*ChrSpacingRatio)
ChrArrayDirection = horizonta ## horizontal/vertical chr是按纵排列还是横排列
##其它当很少用到的参数 BGChrEndCurve=1/等等
################################ Figure ############################################################
Chromosomes_order=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26
############################## 画布 和 图片 参数配置 #################################
##################################### 各层的参数 #######################################################
SetParaFor=LevelALL ## 下面是处理初始化参数 SetParaFor 参数处理,若为 LevelALL,即先为所有层设置的默认值
PType = line ## 线,散点,直方图,热图,文本和共线性link, line, scatter/point, histogram ,link, heatmap(highlights)和text,PairWiseLink
ChrWidth=45
ShowYaxis=0 ##是否显示所有层的Y axis的起终点值,默认值此:0 不显示
NoShowGradien=1
BGChrEndCurve=1
ChrNameRatio=0.7
ShiftChrNameX=21 #chr右移动
ShiftChrNameY=175
#SizeGradienRatio=0.8 # 渐变条变小点
#ShiftGradienY=-120 # 渐变条 上移
SetParaFor=Level1 # 下面开始处理第 1 层 参数处理这一层啥都不画 仅用背景条
ShowColumn = File1:4
ChrWidth=10
PType = EEE #啥都不画 空
SetParaFor=Level2 ## 下面开始处理第 2 层 参数处理
PType = text
ShowColumn = File6:8 ## 默认为file0 的4列,改为5
ciMid="0C0C0C“
crEnd="0C0C0C“
crBegin="0C0C0C“
crBG="#FFFFFF" # 白色,即没有背景
ChrWidth=40 # 放text的名字 宽度长点
Rotate=-90 # 旋转 90度 文字
TextFontRatio=0.8 # 文字 放大为原来的1.2倍
NoShowGradien=1 # 不显示渐变条
SetParaFor=Level3
ShowColumn = File6:8 ## 把file0的第四列用散点图形式画出来)
ChrWidth=20 ##这一层宽度调高点
PType = PairWiseLink
StyleUpDown = UpDown
NoShowBackGroup=1 # 同 crBG="#FFFFFF" 一样 即没有背景
ChrSpacingRatio =0
SetParaFor=Level4 ## 下面开始处理第 4 层 参数处理
ShowColumn = File5:5 ## 默认为file0 的第5列,改为4
BGWidthRatio=0.5 ## 背景的宽度变小点
ChrWidth=10
PType = heatmap ## 热图
SetParaFor=Level5 ## 下面开始处理第 5层 参数处理
ShowColumn=File1:4 ## 把file1的第五列用散点图形式画出来)
crBegin="#FC0E31"
LevelName=FST_n-b
NameRatioFontSize=0.8
NameRotate=-70
ChrWidth=75
ShiftNameY=1
NameCol = "#1B1B1B"
crBG="#FFFFFF"
SetParaFor=Level6 ## 下面开始处理第 6层 参数处理
ShowColumn=File2:4 ## 把file1的第五列用散点图形式画出来)
crBegin="#08894D"
LevelName=FST_n-w
NameRatioFontSize=0.8
NameRotate=-75
NameCol = "#1B1B1B"
ChrWidth=80
ShiftNameY=2
crBG="#FFFFFF"
SetParaFor=Level7 ## 下面开始处理第 7层 参数处理
ShowColumn=File3:4 ## 把file1的第五列用散点图形式画出来)
crBegin="#31170D"
LevelName=XPEHH_n-b
NameRatioFontSize=0.8
NameRotate=-75
NameCol = "#1B1B1B"
Cutline=2
ChrWidth=80
crBG="#FFFFFF"
SetParaFor=Level8 ## 下面开始处理第 8层 参数处理
ShowColumn=File4:4 ## 把file1的第五列用散点图形式画出来)
crBegin="#FFFD611"
LevelName=XPEHH_n-w
NameRatioFontSize=0.8
Cutline=2
NameRotate=-75
NameCol = "#1B1B1B"
crBG="#FFFFFF"
SetParaFor=Level9 ## 下面开始处理第 9层 参数处理
PType = linesEEE
ChrWidth=22
ShowColumn=File4:4
OUT1_LI.jpg
总结一下
拥有图层的概念,拥有一个好导师,可以给你一定的自由,用于一个领路人,多认识几个大佬。