标准的seurat流程可以这样进行,包括创建对象,标准化,寻找高突变特征,归一化,聚类等
①创建 Seurat 对象
首先要明白 Seurat 对象的构成。Seurat 对象进一步细分为: Assay Object 对象和DimReduc Object 对象。Assay Object 对象存放的多组学的表达数据, DimReduc Object 对象存放的是对 Assay Object 对象进行降维分析后的结果。
②专门下载和管理 Seurat示例数据对象的软件包:SeuratData
SeuratData 先把 datasets 变成 Seurat 对象,再把 Seurat 对象以软件包的形式分发和管理。
③以pbmc为例,展开Seurat流程。
对pbmc这个seurat对象不同层级数据调取的方法,@和$。
pbmc@assays
pbmc@assays$RNA
在Seurat对象后面加个@可以查看Seurat对象的内容。弹出小窗口,可以查看里面的内容。
Assays:assays里有一个元素“RNA”,访问assays对象的内部结构,例如pbmc[['RNA']]。
RNA:是assay,其可以包含多个matrix:
Counts:原始的表达量count矩阵;
Data:原始数据经过normalized的数据;
Scale.data:数据经过scaling后,存放位置;
Key:每个assay对象都有一个key,例如‘rna_’;
Var.features:普通向量,高表达变异的基因。
Meta.data:是细胞的注释信息的数据框,行是细胞,列是细胞的属性。
对meta.data的下级数据进行调用时,也是和data.frame取列类似使用$。
pbmc@meta.data$orig.ident
pbmc@meta.data$nCount_RNA
pbmc@meta.data$nFeature_RNA
orig.ident:一般存储细胞的样本来源,但这不是100%的,每个人都有自己的习惯,Seurat对象里面的信息是可以根据细胞barcodes匹配而自己修改的,因此我们要根据获取的数据自行判断或根据自己的习惯自行更改。
而nCount_RNA和nFeature_RNA是Seurat创建时CreateSeuratObject()生成并存储在metadata中的。
nCount_RNA:每个细胞的UMI数量
nFeature_RNA:基因数
Active.assay:当前激活的assay对象。
④一些不同
Idents(pbmc)#提取细胞的标识/来源,取出的为因子向量
#等效于pbmc$orig.ident
#不同于pbmc@meta.data$orig.ident#这种提取方法不包含细胞barcodes
#不同于pbmc[["orig.ident"]]#取出的为data.frame
dat=GetAssayData(pbmc,slot='counts',assay='RNA')#提取当前保存的单细胞表达矩阵
dat[1:5,1:5]
⑤配套函数来对保存的矩阵进行修改
主要应用场景:在进行其他分析之前的标准化
#这里我们对所有表达量+1作为演示
count.data<-as.matrix(x=dat+1)#对取出来的矩阵+1
count.data[1:5,1:5]
pbmc<-SetAssayData(pbmc,slot="counts",new.data=count.data,assay="RNA")#写回pbmc
dat=GetAssayData(pbmc,slot='counts',assay='RNA')#再次读取
dat[1:5,1:5]
⑥对象信息使用标准R函数可以快速轻松地获得有关Seurat对象的摘要信息。
可以使用dim,ncol和nrow函数找到对象的形状/尺寸。细胞和特征名称可以分别使用colnames和rownames函数或dimnames函数找到。通过使用names,可以找到Seurat对象中包含的Assay,DimReduc和Graph对象的名称向量。
R语言中的 rownames() 函数用于为矩阵的行设置名称。
R语言中的 colnames() 函数用于为矩阵的列设置名称。
语法:
rownames(x) <- value
输入
# Creating a 3X3 Matrix
A = matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9), 3, 3, byrow = TRUE)
# Calling rownames() Function
rownames(A) <- letters[1:3]
print(A)
输出
[, 1] [, 2] [, 3]
a 1 2 3
b 4 5 6
c 7 8 9
语法:
colnames(x) <- value
输入
# Creating a 3X3 Matrix
A = matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9), 3, 3, byrow = TRUE)
# Calling colnames() Function
colnames(A) <- letters[1:3]
print(A)
输出
a b c
[1, ] 1 2 3
[2, ] 4 5 6
[3, ] 7 8 9