Bulk RNA-seq 分析的一个重要任务是分析差异表达基因,我们可以用 omicverse
包
来完成这个任务。对于差异表达分析而言,首先,我们可以先将 gene_id 改为 gene_name。其次,当我们的数据集存在批量效应时,我们可以使用 DEseq2的 SizeFactor 对其进行归一化,从统计学上,使用 wilcoxon的秩和检验或者 t-test来计算基因的 p 值。也可以使用类似edgeR
,Deseq2
等包的模型来计算p值。在这里,我们用一个从RNA-seq上游的定量包FeatureCounts
生成的表达矩阵来演示差异表达分析的流程。我们的流程适用于任何Bulk RNA-seq的差异表达分析。
环境的下载
在这里我们只需要安装omicverse
环境即可,有两个方法:
- 一个是使用conda:
conda install omicverse -c conda-forge
- 另一个是使用pip:
pip install omicverse -i https://pypi.tuna.tsinghua.edu.cn/simple/
。-i
的意思是指定清华镜像源,在国内可能会下载地快一些。
导入包
我们首先导入分析需要用到的所有包,包括omicverse
, pandas
, numpy
, scanpy
matplotlib
和 seaborn
.
import omicverse as ov
import pandas as pd
import numpy as np
import scanpy as sc
import matplotlib.pyplot as plt
import seaborn as sns
#设定绘图格式,分辨率300dpi等
ov.utils.ov_plot_set()
下载基因集
当我们需要转换基因 id 时,我们需要准备一个映射对文件。在这里,我们预处理了6个基因组 gtf 文件和生成的映射对,包括 T2T-CHM13,GRCh38,GRCh37,GRCm39,danRer7和 danRer11。如果需要转换其他 id,可以使用 gtf 将文件放在 genesets 目录中生成自己的映射。
ov.utils.download_geneid_annotation_pair()
读取数据
data=pd.read_csv('https://raw.githubusercontent.com/Starlitnightly/ov/master/sample/counts.txt',index_col=0,sep='\t',header=1)
#replace the columns `.bam` to ``
data.columns=[i.split('/')[-1].replace('.bam'