清楚的记得2019年12月初次接触scRNA-seq就是感觉好玩,在自己的小笔记本上鼓捣了一阵子后就放弃了。现在好像依然要过了scRNA-seq的红利期,竟然又要开始学习了,怎么讲呢?就用一句话来安抚躁动的内心吧,
一直在路上,人生才会充满无限可能。
先定个小目标,系统的学习完刘小泽老师的《单细胞交响乐1-31》
单细胞分析大致可分为上半场和下半场分析:
大体流程清楚后,我们就来引出今天的主角→
SingleCellExperiment
或者sce
,他是S4对象,简直是保罗万象。原内容出处:https://osca.bioconductor.org/data-infrastructure.html
示意图
- 核心部分:蓝色的
assays
;- 基因注释信息:绿色的
rowData
,Feature Metadata;- 细胞注释信息:橙色的
colData
,Cell Metadata;
以上是sce的三大件,当然还包含一些下游分析结果,比如PCA、tSNE降维结果就会保存在紫色的reduceDims
。
这个sce
来自SingleCellExperiment
R包,据说目前市面上70多个关于单细胞的R包都使用的sce这个对象,可见sce
是scRNA-seq的通用货币嘛,还是要好好掌握的。
sce
就相当于一艘货船,装满了各种各样的集装箱,每个集装箱又是独立的。
核心部分-assays
创建一个sce
只需要一个assays
即可:这是一个列表,行是基因,列是样本。
library(SingleCellExperiment)
counts_matrix <- data.frame(cell_1=rpois(10,10),
cell_2=rpois(10,10),
cell_3=rpois(10,30))
rownames(counts_matrix) <- paste0("gene",1:10)
sce <- SingleCellExperiment(assays=list(counts=counts_matrix))
sce
下面来提取表达矩阵:
# 提取表达矩阵
assay(sce,"counts")
counts(sce) #只能提取counts
标准函数拓展:使用R包(scran
、scater
等)的包装函数对counts进行处理
sce <- scran::computeSumFactors(sce)
sce <- scater::logNormCounts(sce)
sce
还可以自定义拓展:
# 自定义拓展
count_100 <- assay(sce)+100
assay(sce,"count_100") <- count_100
assays(sce)
是不是神奇的发现多了一个
counter_100
。
类似的我们可以向rowData
,colData
, reducedDims
等模块添加信息。
感悟:
不得不佩服刘小泽老师写推文的功力,感觉写了他弄的1/3已经干不动了。继续加油!
参考链接:
网友评论