scRNA-seq的SCE对象
2020-02-05 本文已影响0人
新欣enjoy
单细胞转录组对象SCE,是单细胞数据分析的基础,很多相应的R包都基于SCE对象展开的,而且SCE对象的很多函数值得学习。在此记录SCE对象的基本结构,及利用mapID将基因Ensemble ID转换为Symbol name方法学习。
SCE对象概览
SCE,SingleCellExperiment,基本结构如下图。主要包括四个部分:assay,其中列表示样本,行表示基因,存储基因表达量;rowData,存储基因的metaData,包括基因各种ID,基因长度信息等,也可以自行添加必要的注释内容;colData,存储样本的metaData,包括细胞ID,批次,细胞类型等;reducedDims,存储降维后的细胞所属主成分信息。
mapIds 基因转换
借助mapIds函数,及相应物种的注释数据库,可以将基因Ensembl ID 转换为Symbol name。
library(org.Mm.eg.db) ##小鼠注释包
symb <- mapIds(org.Mm.eg.db, keys=rownames(sce), keytype="ENSEMBL", column="SYMBOL")
# 看看数据类型
> head(symb)
ENSMUSG00000102693 ENSMUSG00000064842 ENSMUSG00000051951 ENSMUSG00000102851
NA NA "Xkr4" NA
ENSMUSG00000103377 ENSMUSG00000104017
NA NA
# 检测一下它们的Ensembl ID是否一样
> identical(names(symb),rownames(sce))
[1] TRUE
rowData(sce)$SYMBOL <- symb
rowData(sce)$ENSEMBL <- rownames(sce)
> head(rowData(sce))
DataFrame with 6 rows and 3 columns
GeneLength ENSEMBL SYMBOL
<integer> <character> <character>
ENSMUSG00000102693 1070 ENSMUSG00000102693 NA
ENSMUSG00000064842 110 ENSMUSG00000064842 NA
ENSMUSG00000051951 6094 ENSMUSG00000051951 Xkr4
ENSMUSG00000102851 480 ENSMUSG00000102851 NA
ENSMUSG00000103377 2819 ENSMUSG00000103377 NA
ENSMUSG00000104017 2233 ENSMUSG00000104017 NA
以上的转换结果中看到,有些基因不能找到对应的SYMBOL而用NA代替,或者出现重复的SYMBOL,那么就需要对以上结果进行整合或者去重,这就需要借助scater包函数uniquifyFeatureNames() 。
该函数思想:如果有symbol name的,它会将Ensembl ID替换为symbol name,没有name的仍然使用ID;如果name相同、ID不同(即两个Ensembl ID对应同一个Symbol name),它会将ID与name组合保证特异性(详见?uniquifyFeatureNames)
library(scater)
## 参数很简单,第一个是ID,第二是names
rownames(sce) <- uniquifyFeatureNames(rowData(sce)$ENSEMBL, rowData(sce)$SYMBOL)
head(rownames(sce))
## [1] "ENSMUSG00000102693" "ENSMUSG00000064842" "Xkr4"
## [4] "ENSMUSG00000102851" "ENSMUSG00000103377" "ENSMUSG00000104017"