Python中基因集富集分析(GSEA)的Pandas API(GSEApy,cudaGSEA,GSEA)
项目描述
Python中基因集富集分析(GSEA)的Pandas API(GSEApy,cudaGSEA,GSEA)
旨在为各种GSEA实现提供一个统一的API;使用pandas DataFrames和Pythonic类的层次结构。
文件导出(导出GSEA的输入)使用低级numpy函数,比在pandas中快得多
旨在允许研究人员轻松比较不同的GSEA实现,并将这些实现集成到需要高性能GSEA的项目中(例如,大规模筛选药物重定位)
为使用GMT文件或在Python中一般处理基因集和通路提供了有用的工具
安装
要安装API,请使用
pip3 install gsea_api
有关特定GSEA实现安装的说明,请参阅下面
示例用法
from pandas import read_table
from gsea_api.expression_set import ExpressionSet
from gsea_api.gsea import GSEADesktop
from gsea_api.molecular_signatures_db import GeneSets
reactome_pathways = GeneSets.from_gmt('ReactomePathways.gmt')
gsea = GSEADesktop()
design = ['Disease', 'Disease', 'Disease', 'Control', 'Control', 'Control']
matrix = read_table('expression_data.tsv', index_col='Gene')
result = gsea.run(
# note: contrast() is not necessary in this simple case
ExpressionSet(matrix, design).contrast('Disease', 'Control'),
reactome_pathways,
metric='Signal2Noise',
permutations=1000
)
其中expression_data.tsv的格式如下
Gene Patient_1 Patient_2 Patient_3 Patient_4 Patient_5 Patient_6 TACC2 0.2 0.1 0.4 0.6 0.7 2.1 TP53 2.3 0.2 2.1 2.0 0.3 0.6
MSigDB集成
分子签名数据库(MSigDB)可以从Broad研究所GSEA网站下载。它提供了专家精选的基因集集合,以及精选的通路数据库子集(Reactome,KEGG,Biocarta,基因本体),以去除冗余、重叠和其他价值不大的术语(如有必要)。
您可以一次性下载所有通路集合(在下载页面搜索ZIP压缩的MSigDB)。下载并解压缩后(例如,到一个名为msigdb的本地目录),您可以使用以下方式访问MSigDB中的基因集:
from gsea_api.molecular_signatures_db import MolecularSignaturesDatabase
msigdb = MolecularSignaturesDatabase('msigdb', version=7.1)
msigdb.gene_sets
msigdb.gene_sets 返回一个描述自动检测到的通路的字典列表
[
{'name': 'c1.all', 'id_type': 'symbols'},
{'name': 'c1.all', 'id_type': 'entrez'},
{'name': 'c2.cp.reactome', 'id_type': 'symbols'},
{'name': 'c2.cp.reactome', 'id_type': 'entrez'}
# etc..
]
有关磁盘位置和版本信息,请查看msigdb.path和msigdb.version。
msigdb.load 将特定集合加载到GeneSets对象中
> kegg_pathways = msigdb.load('c2.cp.kegg', 'symbols')
> print(kegg_pathways)
<GeneSets 'c2.cp.kegg' with 186 gene sets>
此对象可以传递给任何支持的GSEA实现;请参阅下文,了解GeneSets对象的详细描述。
GeneSets对象
GeneSets代表一组基因的集合,其中每个集合都表示为GeneSet对象。
您可以使用以下方法检查集合中包含的集合数量:
> len(kegg_pathways)
186
基因集可以通过gene_sets(元组)和gene_sets_by_name(字典)属性访问
> kegg_pathways.gene_sets[:2]
(<GeneSet 'KEGG_TIGHT_JUNCTION' with 132 genes>, <GeneSet 'KEGG_RNA_DEGRADATION' with 59 genes>)
> kegg_pathways.gene_sets_by_name
{
'KEGG_TIGHT_JUNCTION': <GeneSet 'KEGG_TIGHT_JUNCTION' with 132 genes>,
'KEGG_RNA_DEGRADATION': <GeneSet 'KEGG_RNA_DEGRADATION' with 59 genes>
# etc.
}
子集集合
有时实验中只测量了部分基因。您可以从集合中删除不包含任何测量基因的基因集
> measured_genes = {'APOE', 'CYB5R1', 'FCER1G', 'PVR', 'HK2'}
> measured_subset = kegg_pathways.subset(measured_genes)
> print(measured_subset)
<GeneSets with 12 gene sets>
跳过的基因集在measured_subset.empty_gene_sets中可用于检查。
修剪集合
> kegg_pathways.trim(min_genes=10, max_genes=20)
<GeneSets with 21 gene sets>
美化名称
def prettify_kegg_name(name):
return name.replace('KEGG_', '').replace('_', ' ')
kegg_pathways_pretty = kegg_pathways.format_names(prettify_kegg_name)
kegg_pathways_pretty.gene_sets[:2]
# (<GeneSet 'TIGHT JUNCTION' with 132 genes>, <GeneSet 'RNA DEGRADATION' with 59 genes>)
其他属性
GeneSets提供的其他属性和方法包括:- all_genes:返回集合中所有基因的集合,这些基因被基因集所覆盖 - name:集合的名称 - to_frame() 返回一个描述基因成员资格的pandas DataFrame(基因集 = 行,基因 = 列),可用于UpSet可视化(例如,使用ComplexUpset) - to_gmt(path: str) 将基因集导出为GMT(基因矩阵转置)文件
安装GSEA实现
以下GSEA实现得到支持
来自Broad研究所的GSEA
在官方GSEA网站上登录/注册并下载gsea_3.0.jar文件(或更新的版本)。
使用gsea_jar_path参数提供下载文件的路径给GSEADesktop(),例如:
gsea = GSEADesktop(gsea_jar_path='downloads/gsea_3.0.jar')
GSEApy
要使用gsea.py,请使用以下命令安装它:
pip3 install gseapy
使用它:
from gsea_api.gsea import GSEApy
gsea = GSEApy()
cudaGSEA
请将此cudaGSEA分支克隆到第三方目录并编译二进制版本(使用此存储库中的说明)
git clone https://github.com/krassowski/cudaGSEA
或使用原始版本,该版本未实现FDR计算。
使用它:
from gsea_api.gsea import cudaGSEA
# CPU implementation can be used with use_cpu=True
gsea = cudaGSEA(fdr='full', use_cpu=False)
引用
请同时引用您使用的包装工具的作者。
参考文献
此代码的初始版本是为伦敦帝国理工学院的研究生论文项目编写的。
项目详情
gsea_api-0.3.4.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d2dcf0a0d86ef5e90fc7a6e6168a5abd0447f07ddbae3d7c0aafd5068f138928 |
|
MD5 | 7d0ab2f4b2ef40ec4b525521ad31f8c0 |
|
BLAKE2b-256 | fdaa61d32beb63da52ee32efbdfeb66dde13cf6720dfefa060a4ccfe2da6d095 |