社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python版的DESeq2尝鲜

生信技能树 • 2 年前 • 861 次点击  

Lorem Picsum

PyDESeq2

Python版的DESeq2已上线,以后就可以使用Python来做差异分析了。目前文章还在bioRxiv。我来简单尝尝鲜。

安装

使用mamba或者conda来新建一个虚拟环境,然后使用pip安装。

mamba create -n pydeseq2 python
mamba activate pydeseq2
pip install pydeseq2

用法

作为Python版的DESeq2, 用法和R里差不多。

数据读取

count_file = "test_counts.csv"
condition_file = "test_clinical.csv"

counts_df = pd.read_csv(count_file, index_col=0).T
condition_df = pd.read_csv(condition_file, index_col=0)

数据集是一个100个样本,每个样本10个基因的小测试集。而其中50个样本属于条件A,另50个样本属于条件B。

>>> counts_df.shape
(100, 10)
>>> counts_df.head()
         gene1  gene2  gene3  gene4  gene5  gene6  gene7  gene8  gene9  gene10
sample1     12     22      2    187     15      2     13     57     56       6
sample2     10      6     20     99     55      0     35     96     43       1
sample3      0     28      3     96     38      2      9     54     27      14
sample4      7     28     10    170     16     10     17     38     18      16
sample5      2     31      5    126     23      2     19     53     31      18

>>> condition_df
          condition
sample1           A
sample2           A
sample3           A
sample4           A
sample5           A
...             ...
sample96          B
sample97          B
sample98          B
sample99          B
sample100         B

[100 rows x 1 columns]

构建DeseqDataSet 对象

和DESeq2类似

# 构建DeseqDataSet 对象
dds = DeseqDataSet(counts_df, condition_df, design_factor="condition")
# 离散度和log fold-change评估.
dds.deseq2()
# Fitting size factors...
# ... done in 0.00 seconds.
# Fitting dispersions...
# ... done in 0.64 seconds.
# Fitting dispersion trend curve...
# ... done in 0.03 seconds.
# Fitting MAP dispersions...
# ... done in 0.63 seconds.
# Fitting LFCs...
# ... done in 0.66 seconds.
# Refitting 0 outliers.

统计分析

差异表达统计检验分析

res = DeseqStats(dds)
# 执行统计分析并返回结果
res_df = res.summary()

结果如下

>>> res_df
         baseMean  log2FoldChange     lfcSE       stat        pvalue          padj
gene1   10.306788        1.007045  0.225231   4.471161  7.779603e-06  2.593201e-05
gene2   24.718815       -0.059670  0.165606  -0.360311  7.186146e-01  7.186146e-01
gene3    4.348135       -0.166592  0.325445  -0.511891  6.087275e-01  6.763639e-01
gene4   98.572300       -2.529204  0.136752 -18.494817  2.273125e-76  2.273125e-75
gene5   38.008562        1.236663  0.151824   8.145377  3.781028e-16  1.890514e-15
gene6    4.734285        0.212656  0.304487   0.698408  4.849222e-01  6.061527e-01
gene7   30.011855       -0.445855  0.150575  -2.961017  3.066249e-03  5.110415e-03
gene8   59.330642        0.372080  0.118911   3.129070  1.753603e-03  3.507207e-03
gene9   46.779546        0.547280  0.124922   4.380966  1.181541e-05  2.953853e-05
gene10  11.963156        0.494775  0.229494   2.155940  3.108836e-02  4.441194e-02

最后

PyDESeq2目前主要的核心功能差异分析已完成,虽然相比DESeq2而言还在起步阶段, 不过很明显可以发现Python的组学分析生态正逐渐完善~

参考

https://github.com/owkin/PyDESeq2


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/151286
 
861 次点击