Seurat
作为知名的单细胞数据软件,真的是非常棒,让分析过程变得简洁高效,无需花费很多的学习成本便可以上手。虽然该软件是为单细胞数据设计而来,但也不妨碍用来分析bulkRNA
数据。利用软件的框架优势,也可以让分析过程变得简单。比如,借助Seurat
来做差异分析和PCA就挺简单的。
library(Seurat)
cnt <- read.table('sample_counts.txt', header=T, stringsAsFactors=F, sep='\t', row.names=1)
metadata <- data.frame(orig.ident=colnames(cnt), group=rep(c('ctrl', 'case'), each=3))
obj <- CreateSeuratObject(cnt, meta.data=metadata, min.cells=1)
obj
An object of class Seurat
30706 features across 6 samples within 1 assay
Active assay: RNA (30706 features, 0 variable features)
1 layer present: counts
obj <- NormalizeData(obj, scale.factor=1000000)
dge <- FindMarkers(obj, slot='counts', test.use='DESeq2', logfc.threshold=0, min.pct=0, only.pos=F, min.cells.group=0, ident.1='case', ident.2='ctrl', group.by='group')
head(dge)
p_val avg_log2FC pct.1 pct.2 p_val_adj
ENSG00000103148.16 3.958866e-110 -2.0548100 1 1 1.215609e-105
ENSG00000145425.10 5.638460e-103 6.5640462 1 1 1.731346e-98
ENSG00000147604.14 1.008573e-93 7.0755405 1 1 3.096926e-89
ENSG00000174358.16 2.299650e-93 -5.6097944 1 1 7.061304e-89
ENSG00000204463.12 3.863674e-93 -0.8252748 1 1 1.186380e-88
ENSG00000136840.19 1.534368e-92 -2.1498954 1 1 4.711432e-88
差异分析过程几行代码就可以搞定了,然后就可以用差异列表进行后续的分析了。
通常bulkRNA
分析会用PCA来看看样本间的关系,这个过程在Seurat
里面也就是调用几个函数的事,顺带连可视化都一起出来:
obj <- ScaleData(obj, features=rownames(obj))
obj <- RunPCA(obj, features=rownames(obj), npcs=2, ndims.print=2)
DimPlot(obj, reduction="pca", pt.size=3, label.size=13, group.by='group') + theme_test()
通常可以选择变化较大的前N%基因来做PCA,上面使用了全部的基因。那么,如果需要选择,上面的过程就可以变成下面的几行代码:
obj <- FindVariableFeatures(obj, nfeatures=ceiling(length(rownames(obj)) * 0.2))
obj <- ScaleData(obj)
obj <- RunPCA(obj, npcs=2, ndims.print=2)
通过上面的示例,可以感受到借助Seurat
来做这些事,过程好像变得简单了,这可能就是好软件的魅力。