我的GWAS高级曼哈顿图折腾过程

作者: 超级宇航员 | 来源:发表于2021-07-09 19:28 被阅读0次
原图封面

如果说别人画图是折腾自己,那我画图可能就是折腾自己兼折腾群主.......
首先在这里感谢何大哥哈(知乎: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

出图结果

曼哈顿图.jpg

GWAS配置介绍

现画高级点的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

总结一下

拥有图层的概念,拥有一个好导师,可以给你一定的自由,用于一个领路人,多认识几个大佬。

相关文章

网友评论

    本文标题:我的GWAS高级曼哈顿图折腾过程

    本文链接:https://www.haomeiwen.com/subject/amnfpltx.html