Python版WGCNA分析和蛋白质相互作用PPI分析教程
在前面的教程中,我们介绍了使用omicverse完成基本的RNA-seq的分析流程,在本节教程中,我们将介绍如何使用omicverse完成加权基因共表达网络分析WGCNA以及蛋白质相互作用PPI分析。
环境的下载
在这里我们只需要安装omicverse环境即可,有两个方法:
- 一个是使用conda:
conda install omicverse -c conda-forge - 另一个是使用pip:
pip install omicverse -i https://pypi.tuna.tsinghua.edu.cn/simple/。-i的意思是指定清华镜像源,在国内可能会下载地快一些。
导入环境
import omicverse as ov
ov.utils.ov_plot_set()
加权基因共表达网络分析(WGCNA)
加权基因共表达网络分析(WGCNA)是一种系统生物学方法,用于表征不同样品之间的基因关联模式,可用于鉴定高度协同的基因集,并基于基因集的内生性和基因集与表型之间的关联来鉴定候选生物标志物基因或治疗靶点。目前引用量已超过15,000。但Python中完成WGCNA分析相关的包仍是空白。我们根据WGCNA的原理,从底层上复现了原版WGCNA算法。
加载数据
在这里,我们选择WGCNA原版的演示数据来进行分析,数据可以在github上进行下载。
import pandas as pd
data=ov.utils.read_csv(filepath_or_buffer='https://raw.githubusercontent.com/Starlitnightly/ov/master/sample/LiverFemale3600.csv',
index_col=0)
data.head()
相关性矩阵计算
WGCNA的第一步是计算基因间的相关性矩阵,这里我们采用皮尔森系数的计算方法,来完成基因间的直接相关性矩阵计算。
gene_wgcna=ov.bulk.pyWGCNA(data,save_path='result')
gene_wgcna.calculate_correlation_direct(method='pearson',save=False)
在 pyWGCNA 模块中,我们需要将直接相关矩阵转换为间接相关矩阵来计算软阈值,软阈值可以帮助我们将原来的相关网络转换为无尺度网络
gene_wgcna.calculate_correlation_indirect(save=False)
gene_wgcna.calculate_soft_threshold(save=False)

左边的垂直坐标是无尺度网络的评估指标r^2。R2越接近1,网络就越接近无尺度网络,通常需要r^2> 0.8或0.9。右侧垂直坐标为平均连通度,随 β 值的增加而减小。将这两个图结合起来,通常选择 r^2首次达到0.8或0.9或更高时的 β 值。利用 β 值,我们可以根据方程将相关矩阵转换成邻接矩阵。
然后我们构造拓扑重叠矩阵。
gene_wgcna.calculate_corr_matrix()
共表达网络分析
在获得基因间的拓扑重叠矩阵后,我们使用动态剪切树的方式来寻找基因间的模块。在这里,我们使用WGCNA作者发表的DynamicTree的算法来实现此功能。
gene_wgcna.calculate_distance()
gene_wgcna.calculate_geneTree()
gene_wgcna.calculate_dynamicMods()
module=gene_wgcna.calculate_gene_module()

在这里,我们成功地计算了每个基因的模块,共有15个模块,它们的颜色都显示在图中。我们使用.head()查看每个基因所属的模块。
module.head()

我们还可以使用.plot_matrix()来可视化拓扑重叠矩阵与模块之间的关系。
gene_wgcna.plot_matrix()

子模块分析
有时候我们对一个基因或一个通路的模块感兴趣,我们需要提取基因的子模块进行分析和定位。例如,我们选择了两个模块6和12作为分析的子模块
gene_wgcna.get_sub_module([6,12]).shape
我们发现模块6和模块12共有151个基因。接下来,我们使用之前构建的无尺度网络,将阈值设置为0.95,为模块6和模块12构建一个基因相关网络图。
sub_G=gene_wgcna.get_sub_network([6,12],correlation_threshold=0.95)
pyWGCNA 提供了一个简单的可视化函数 plot_sub_network 来可视化我们感兴趣的基因相关性网络。

模块和性状相关性分析
除了可以根据目标基因选择模块外,我们还可以根据特定的样本性状选择模块。我们可以计算每个样本的性状和模块之间的相关性,从而找到与我们感兴趣的性状模块。
我们首先从 github 中读取特征矩阵。特征矩阵形状必须是以样本为索引,列为特征。示例名称必须与前面的原始数据的示例名称一致。
meta=ov.utils.read_csv(filepath_or_buffer='https://raw.githubusercontent.com/Starlitnightly/ov/master/sample/character.csv',index_col=0)
meta.head()

然后利用分析主成分分析和相关性,计算模块与性状之间的关系。
cor_matrix=gene_wgcna.analysis_meta_correlation(meta)
ax=gene_wgcna.plot_meta_correlation(cor_matrix)

蛋白质互作网络分析
我们接下来介绍蛋白质互作网络的分析,STRING 是一个已知和预测的蛋白质-蛋白质相互作用的数据库。这种相互作用包括直接的(物理的)和间接的(功能的)关联; 它们来源于计算预测,来源于生物体之间的知识转移,以及来自其他(主要的)数据库的相互作用。
在这里,我们制作了一个教程,使用omicverse来构建蛋白质-蛋白质相互作用网络。
演示数据
这里我们使用 string-db 的示例数据来执行分析
酵母中的 FAA4是一种长链脂肪酰辅酶 A 合成酶,它与其他合成酶以及调节剂有关。
酵母的NCBI taxonomy Id: 4932
使用omicverse完成蛋白质相互作用网络分析需要三个数据:蛋白列表
,蛋白类别字典和蛋白颜色字典,颜色字典是绘图时的每个蛋白的颜色,一般与类别字典相同。在这里我们随机生成一个颜色字典和类别字典。
gene_list=['FAA4','POX1','FAT1','FAS2','FAS1','FAA1','OLE1','YJU3','TGL3','INA1','TGL5']
gene_type_dict=dict(zip(gene_list,['Type1']*5+['Type2']*6))
gene_color_dict=dict(zip(gene_list,['#F7828A']*5+['#9CCCA4']*6))
蛋白质相互作用关系预测
omicverse提供了一个十分简单的APIov.bulk.string_interaction,只需要输入蛋白列表即可完成相互作用关系的预测。
G_res=ov.bulk.string_interaction(gene_list,4932)
G_res.head()


蛋白质相互作用网络分析
当然,omicverse还有非常漂亮的可视化函数,来可视化蛋白质相互作用网络,在这里,我们需要使用pyPPI类来完成上述分析。
#4932代表酵母,人类一般是9606,小鼠一般是10090
ppi=ov.bulk.pyPPI(gene=gene_list,
gene_type_dict=gene_type_dict,
gene_color_dict=gene_color_dict,
species=4932)
然后我们连接到 string-db 来计算蛋白质-蛋白质的相互作用
ppi.interaction_analysis()
我们提供了.plot_network()来可视化蛋白质相互作用网络,更多的参数您可以使用help(ov.utils.plot_network)来寻找。
ppi.plot_network()

我们还可以使用ppi.G来获取蛋白质相互作用网络,该变量的格式为networkx,感兴趣的读者可以自行研究networkx包的相关分析。
到此,我们的教程就结束了,如果你认为本教程对你的研究有帮助,不要忘记引用omicverse和WGCNA,最后感谢Jimmy老师对omicverse的大力支持。
Python版WGCNA分析和蛋白质相互作用PPI分析教程的更多相关文章
- 移动端自动化测试Appium 从入门到项目实战Python版☝☝☝
移动端自动化测试Appium 从入门到项目实战Python版 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 说到APP自动化测试,Appium可是说是非常流 ...
- python版的MCScan绘图
最近发现了python版的MCScan,是个大宝藏.由于走了不少弯路,终于画出美图,赶紧记录下来. github地址 https://github.com/tanghaibao/jcvi/wiki/M ...
- Python实现XX短视频加密算法抓包分析及刷邀请
Python实现XX短视频加密算法抓包分析及刷邀请 出自:https://zhuanlan.zhihu.com/p/466929667?utm_id=0 Python彳余 一个会常常更新互联网,编程的 ...
- 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL
周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...
- 数据结构:顺序表(python版)
顺序表python版的实现(部分功能未实现) #!/usr/bin/env python # -*- coding:utf-8 -*- class SeqList(object): def __ini ...
- [python] 常用正则表达式爬取网页信息及分析HTML标签总结【转】
[python] 常用正则表达式爬取网页信息及分析HTML标签总结 转http://blog.csdn.net/Eastmount/article/details/51082253 标签: pytho ...
- python版恶俗古风自动生成器.py
python版恶俗古风自动生成器.py """ python版恶俗古风自动生成器.py 模仿自: http://www.jianshu.com/p/f893291674c ...
- Python之路,Day22 - 网站用户访问质量分析监测分析项目开发
Python之路,Day22 - 网站用户访问质量分析监测分析项目开发 做此项目前请先阅读 http://3060674.blog.51cto.com/3050674/1439129 项目实战之 ...
- LAMP一键安装包(Python版)
去年有出一个python整的LAMP自动安装,不过比较傻,直接调用的yum 去安装了XXX...不过这次一样有用shell..我也想如何不调用shell 来弄一个LAMP自动安装部署啥啥的..不过尼玛 ...
- 编码的秘密(python版)
编码(python版) 最近在学习python的过程中,被不同的编码搞得有点晕,于是看了前人的留下的文档,加上自己的理解,准备写下来,分享给正在为编码苦苦了挣扎的你. 编码的概念 编码就是将信息从一种 ...
随机推荐
- 记第一次用python写界面
花了两三个小时学了Tkinter,做了一个将数据绘制成图的小工具. 1. 获取路径下的所有文件or获取路径下指定名称的文件 1.1 打开文件 //1. 用来放文本框中的文字filename = St ...
- SQL必知必会(第5版) 读书笔记
适用范围 本书涵盖的DBMS一般来说,本书中所讲授的SQL可以应用到任何数据库管理系统(DBMS).但是,各种SQL实现不尽相同,本书介绍的SQL主要适用于以下系统(需要时会给出特殊说明和注释): ❑ ...
- 视图结构 wxml 列表渲染 for
WXML是框架设计的一套标签语言,结合基础组件.事件系统,可以构建出页面的结构. wxml是一个严格的标记性语言,有开始就必须有结束,单标签就一个有结束符 5.1.数据绑定 在js逻辑层中定义数据源, ...
- 操作标签的属性和属性值 table表格
// 操作标签的属性和属性值 // 特殊的属性 // 可以直接通过 点语法或者[]语法来操作的属性 // id 和 class ...
- 使用itextPDF实现PDF电子公章工具类
使用itextPDF实现PDF电子公章工具类 一.制作公章 在线网站:印章生成器 - Kalvin在线工具 (kalvinbg.cn) 然后对公章进行下载保存 盖章图片: 二.生成数字签名 2.1: ...
- INFINI Labs 产品更新 | Easysearch 新增跨集群复制 (CCR)、支持快照生命周期管理 (SLM) 功能等
INFINI Labs 产品重量级更新!!!本次更新了很多亮点功能,如 Easysearch 新增跨集群复制 (CCR).支持快照生命周期管理 (SLM) 功能等:支持多集群.跨版本的搜索基础设施统一 ...
- WIN10 WIN11 12代 13代 大小核 电源选项
WIN10 WIN11 12代 13代 大小核;性能核:电源选项:P-core,E-core; 说明: WIN10 也是能正常用 12,13代大小核的. 方法: 1.右键开始菜单,选择"Wi ...
- 苹果应用商店上传应用卡在了“Authenticating with the iTunes Store”
在终端中依次运行下面代码 cd ~ mv .itmstransporter/ .old_itmstransporter/ "/Applications/Xcode.app/Contents/ ...
- Linux OpenGrok搭建
目录 一.目的 二.环境 三.相关概念 3.1 OpenGrok 3.2 CTags 3.3 Tomcat 四.OpenGrok搭建 4.1 安装jdk 4.2 安装ctags依赖 4.3 安装uni ...
- 红黑树详细讲解(结合JavaTreeMap)
1:红黑树简介 红黑树又称红-黑二叉树,它首先是一颗二叉树,它具体二叉树所有的特性.同时红黑树更是一颗自平衡的排序二叉树.根据二叉查找树的概念可以得出正常情况下查找的时间复杂度为O(log n),但是 ...