问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何使用Python绘制GWAS分析中的曼哈顿图和QQ图

发布网友 发布时间:2022-04-23 20:41

我来回答

1个回答

热心网友 时间:2022-05-05 01:36

曼哈顿图和QQ图是两个在全基因组关联(GWAS)分析里面最常出现的图形,基本上已经是GWAS的标配,几乎在每篇GWAS的文章都会见到,它们的作用和所要传达出来的信息我也在上一篇关于GWAS的博文中做了些说明,在这里我们就只集中在如何用Python和geneview将其有效地展现出来。
首先,准备一些数据来作为例子。
我这里用来展现的数据是2011年丹麦人所做过的一个关于年轻人过度肥胖的GWAS研究——GOYA,数据也是从他们所发表的结果中获得,总共有5,373个样本,其中超重的个体(case)有2,633个,正常的个体(control)是2,740个,从样本量上看还算可以。为了方便使用,我对其做了相关的处理,包括从PED和MAP文件到GEN文件的生成,并重复了一次case-control的关联性分析,计算出了芯片上所研究的各个SNP位点与肥胖相关的显著性程度(即p-value),最后又将结果数据抽取出来做成数据集——放在这里供下载(15.6Mb,csv格式)。
【注】以上内容虽提及到了一些领域内术语和相关文件格式,但若不懂也请不必纠结,因为后续处理都是基于这个最终的数据集来完成的。
接着,需要将geneview软件包加入到你的Python中,有多种不同的方式,但推荐直接使用pip,以下是安装比较稳定的发布版,直接在终端命令行下(Linux or Mac)输入:
pip install geneview

第三种办法就是直接下载源码,然后自行编译,虽然不推荐这种做法(因为还有依赖包必须自行下载安装,过程会比较麻烦低效),但对于某些不能连接*的集群也只能如此,这三种方式都是可行的。
曼哈顿图
将示例数据下载下来:
wget data/master/GOYA.csv
先简单地查看一下数据的格式:
chrID,rsID,position,pvalue
1,rs3094315,742429,0.144586
1,rs3115860,743268,0.230022
1,rs12562034,758311,0.644366
1,rs12124819,766409,0.146269
1,rs4475691,836671,0.458197
1,rs28705211,890368,0.362731
1,rs13303118,908247,0.22912
1,rs9777703,918699,0.37948
1,rs3121567,933331,0.440824
一共是4列(逗号分隔),分别为:[1]染色体编号,[2]SNP rs 编号,[3] 位点在染色体上的位置,[4]显著性差异程度(pvalue)。在本例曼哈顿图中我们只需要使用第1,3和4列;而QQ图则只需要第4列——pvalue。
下面先从绘制曼哈顿图开始。我们先将需要的数据读取到一个列表中,可以这样做:
import csv
data = []
with open("GOYA.csv") as f:
f_csv = csv.reader(f)
headers = next(f_csv)
data = [[row[0], int(row[2]), float(row[3])] for row in f_csv]
现在GOYA.csv中的数据就都存放在data列表中了,由于Python在读取文件中数据时,都是以string类型存放,因此对于第3和第4列的数据有必要事先把做点类型转换。
接下来,调用geneview中的曼哈顿图函数。
import matplotlib.pyplot as plt
from geneview.gwas import manhattanplot
ax = manhattanplot(data, xlabel="Chromosome", ylabel="-Log10(P-value)") # 这就是Manhattan plot的函数
plt.show()

只需这样的一句代码就能创建一个漂亮的曼哈顿图,有必要再次指出的是,geneview是以matplotlib为基础开发出来的,所创建的图形对象实际上仍属于matplotlib,geneview内部自定义了很多图形风格,同时封装了大量只属于基因组数据的图表类型,但图形的输出格式以及界面显示都仍和matplotlib一样,因此在这里我们使用matplotlib.pyplot的show()函数(上例中:plt.show())将所绘制出来的曼哈顿图显示出来。如果要将图形保存下来,则只需执行`plt.savefig("man.png")`,这样就会在该目录下生成一个名为『man.png』png格式的曼哈顿图,若是要存为pdf格式,则只需将所要保存的文件名后缀改成『.pdf』(plt.savefig("man.pdf"))就可以了。下面这些格式:emf,
eps, pdf, png, jpg, ps, raw, rgba, svg,
svgz等都是支持的,至于最新的还有多少种,还请参照matplotlib文档中说明。
此外,geneview中的每个画图函数都有着足够的灵活性,我们也可以根据自己的需要做一些调整,比如:
xtick = ['1', '2','3','4','5','6','7','8','9','10','11','12','13','14','16','18', '20','22']
manhattanplot(data,
xlabel="Chromosome", # 设置x轴名字
ylabel="-Log10(P-value)", # 设置y轴名字
xtick_label_set = set(xtick), # 限定横坐标轴上的刻度显示
s=40, # 设置图中散点的大小
alpha=0.5, # 调整散点透明度
color="#f28b1e,#9a0dea,#ea0dcc,#63b8ff", # 设置新的颜色组合
)

实现新的颜色组合、限定x轴上的刻度显示和散点大小的调节。甚至还可以将散点改为线:
manhattanplot(data,
xlabel="Chromosome", # 设置x轴名字
ylabel="-Log10(P-value)", # 设置y轴名字
xtick_label_set = set(xtick), # 限定横坐标轴上的刻度显示
alpha=0.5, # 调整散点透明度
color="#f28b1e,#9a0dea,#ea0dcc,#63b8ff", # 设置新的颜色组合
kind="line"
)

其它方面的调整请查看geneview文档中的相关说明。
Q-Q图
qq图只需用到上例中的pvalue那一列:
import csv
import matplotlib.pyplot as plt
from geneview.gwas import qqplot
pvalue=[]
with open("GOYA.csv") as f:
f_csv = csv.reader(f)
headers = next(f_csv)
pvalue = [float(row[3]) for row in f_csv]
ax = qqplot(pvalue, color="#00bb33", xlabel="Expected p-value(-log10)", ylabel="Observed p-value(-log10)") # Q-Q 图
plt.show()

同样,也可以根据自己的需要对改图进行相关的调整。
以上,便是如何使用Python来制作Manhattan图和QQ图的方法,geneview的集成函数简化了这样的一个过程。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 淘宝卖家如何把拉黑的群聊成员恢复 求歌名:http://www.jifenzhong.com/video/25241-How-To-Wear-A-Restore-Ancient-Ways-British-Fan Sex For Yo Stereo的中文翻译歌词 此歌曲为 Trey songz 的Trey Day专辑中的一首歌曲 http://www.tudou.com/programs/view/Z1GTnlEK2t4/?fr=rec1 求歌词 http://video.sina.com.cn/v/b/50286689-1660063152.html 歌曲 第一首 求此歌曲名称和地址 http://video.sina.com.cn/v/b/45032936-1876762343.html 初三的英语固定搭配 http://video.sina.com.cn/p/sports/g/v/2011-01-28/081061248465.html#61248465 这个视频里的歌曲叫什么 求Lady Gaga,迈克尔杰克逊,Wonder girl的英文简介 布兰妮出了哪些专辑 有哪些歌? 请问以下电影是什么的? Hilary Duff的所以专辑的名字 玛丽雅凯丽的个人资料? 跪求初中英语所有单词和固定搭配,好的加分。 詹妮弗·洛佩兹 Jennifer Lopez的电影 Jonas Brothers的《Video Girl》 歌词 有谁有吃海参的习惯?你们觉得1200一斤烟台淡干海参贵吗? 山东烟台市蓬莱市惠茂食品有限公司颐参福即食海参无刺的多少钱一斤? 烟台四二个一斤的海参多少钱? 烟台海参价格 曼哈顿图与qq图纵坐标横坐标关系怎样看 基因检测报告说我某癌风险大 应该相信吗? 如何绘制曼哈顿图manhattan Plot 《次北固山下》划分诗歌节奏通常可以采用两种方法:一是按照音节划分,二是按照意义划分.请你分别依据这两种 Benefit的购入提问 怎么把中文转成Unicode在Python3中 曼哈顿图是怎么做的,全基因组关联分析 百度云盘帐号电脑手机都可以登录,为什么IPAD登录不了? ipad上登录百度网盘老是让验证身份怎么办? ipad上登录百度网盘 看不到原来的文件夹了是怎么回事? iPAD版的百度网盘试了无数次都登陆不了。iphone版能登陆。 ipad百度网盘下载的文件暂无下载记录 英语定冠词? 英语中定冠词的用法,在线等待,快! 英语中,什么情况下必须使用定冠词? 英语定冠词的用法。 英语中定冠词和不定冠词的用法。什么时候用定冠词,什么时候用不定冠词... 英语中什么叫做冠词,什么叫做定冠词,什么叫做不定 英语中定冠词与不定冠词的用法 英语中的冠词主要指什么?用法又如何?