如何使用python绘制gwas分析中的曼哈顿图和qq图

如何使用python绘制gwas分析中的曼哈顿图和qq图,第1张

曼哈顿

将示例数据下载下来:

wget https://raw.githubusercontent.com/ShujiaHuang/geneview-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的集成函数简化了这样的一个过程。

另外,如果你也看过丹麦人的这个GOYA研究,就会发现实际以上的两个图和其文章中的基本是一致的,当然我自己做了些数据清洗的 *** 作,结果上仍然会有些许的不同。虽然此刻下结论还有点为时尚早,但总的来讲,我应该也可以通过这个数据集比较顺利的将其结果重复出来了。

最后,附上利用geneview画曼哈顿图和QQ图的代码:

(1)曼哈顿图:

(2)QQ图:

CDC类(程序设计)

Windows使用与设备无关的图形设备环境(DC :Device Context) 进行显示 。MFC基础类库定义了设备环境对象类----CDC类。

cdc 命令(编程)

用途

更改 SCCS 增量中的注释。

语法

cdc -rSID [ -m [ModificationRequestList ] ] [ -y [Comment ] ] File ...

描述

cdc 命令更改指定的 SCCS 增量(SID 变量)的修改请求(MR)和注释,以用于每个已命名的“源代码控制系统”(SCCS)文件。如果指定了目录名,cdc 命令会在该目录中的所有 SCCS 文件(即所有其名称具有 s. 前缀的文件)上执行所请求的 *** 作。如果指定了 -(减号)来替换 File,则 cdc 命令会读取标准输入并将每行解释为 SCCS 文件的名称。

仅当生成了 SID 或拥有此文件和目录时,才可以更改 SID 的注释和 MR。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11795625.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存