首页 > 其他分享 >单细胞RNA测序(scRNA-seq) 理解Seurat对象存储信息含义和基本操作

单细胞RNA测序(scRNA-seq) 理解Seurat对象存储信息含义和基本操作

时间:2024-06-13 19:30:18浏览次数:25  
标签:存储 Seurat 矩阵 RNA 测序 表达 基本操作 data

Seurat

单细胞测序技术是在单个细胞水平上,对基因组、转录组和表观基因组水平进行分析测序技术。bulk RNA-seq获得的是组织或器官等大量细胞中表达信号的均值,无法获取细胞之间的差异信息(即丢失了细胞的异质性), 而单细胞测序技术可以很好的弥补bulk RNA-seq这一不足,即获取混合样本中细胞的异质性信息

文章 单细胞RNA测序(scRNA-seq)Seurat分析流程入门 中涉及Seurat对象的构建、访问和数据提取等操作,本文将对Seurat对象的结构进行深入解读。

1. 单细胞分析中Seurat对象的结构

Seurat R包,主要用于分析单细胞RNA测序数据。Seurat包实现了单细胞RNAseq数据分析的主要步骤,包括质控、归一化、可视化、聚类、差异表达等。Seurat对象用于存储单细胞RNA-seq元数据和分析结果,

Seurat 5.0官网: https://satijalab.org/seurat/

2. Seurat 包的主要功能

  1. 从原始gene表达矩阵构建AnnotatedChip对象,或从已有格式如SingleCellExperiment对象进行转换;

  2. 用于质控的功能,如过滤低质量细胞,检测高变基因等;

  3. 用于数据标准化的方法,如缩放,归一化等;

  4. 用于数据降维和可视化的工具,如PCA,tSNE,UMAP等;

  5. 用于数据聚类的方法,如Louvain算法,K-means等;

  6. 用于差异表达分析的功能;

  7. 支持进行GO/KEGG富集分析,蛋白质相互作用网络分析等;

  8. 提供丰富的绘图功能,如特征作图,等高线图,热图等;

  9. 支持对象的导出与共享, 便于重复分析或与他人交流。

3. Seurat 对象包含的主要域(slots)

Seurat 对象(实际称为AnnotatedChip对象)包含多个域(slots), 存储不同类型的信息,主要关注前4个slots,理解其含义。
##################################################

  1. assays: 存储数据集的表达矩阵及相关信息

这里只有一个RNA域,对应RNA表达数据。其包含:

  • counts:原始表达计数矩阵,行为基因,列为细胞

  • data: 与counts相同,用于兼容以前的seurat版本。 数据进行了VST变换后,存储在data域,而非scale_data域。

  • scale.data: 标准化后的表达矩阵

  • key:表达矩阵的标识符,此处为”rna_“。

  • assay.orig:原始表达矩阵,此处为空。

  • var_features:变异基因信息。如果进行筛选,例如选定了2000个变异基因,存储在var_features域

  • meta.features:包含每个特征的统计量,如平均值、方差、标准化方差等,用于过滤低变异特征。

  • misc:杂项,此处为空。

##################################################

  1. meta_data: 存储细胞元数据,如细胞类型,count数等

meta_data域包含更丰富的信息,如percent.mito,聚类标签等,包含具体信息如下:

  • orig.ident:样品的原始ID,此处全部为”SeuratProject”。

  • nCount_RNA:每个细胞的UMI计数,在RNA表达矩阵中

  • nFeature_RNA:每个细胞检测到的特征数,在RNA表达矩阵中

  • percent.mito:每个细胞线粒体特征的百分比,用于过滤低质量细胞

  • RNA_snn_res.0.5:构建RNA_snn网络图时resolution为0.5时的聚类结果。

  • seurat_clusters:Seurat的FindClusters命令产生的聚类结果,resolution同为0.5。

这个域汇总了样品和表达数据的基本信息,以及两种不同参数下的聚类结果。

##################################################

  1. active.assay: 设置当前使用的表达矩阵, 这里是RNA

  2. active.ident: 细胞ID,对应列名

##################################################

  1. graphs:网络图信息,用于存储PCA,tSNE等结果

  2. reductions:用于存储降维结果,如PCA,UMAP的模型对象

  3. images:存储绘图 Output,用于再现分析过程

  4. project.name:项目名称

  5. version:seurat对象的版本信息

##################################################

  1. commands:存储构建seurat对象使用的所有命令,以支持再现分析过程

每个命令都包含name、time.stamp 时间戳、assay.used、call.string和params等域,记录命令名称、运行时间、使用的表达矩阵、命令语句和参数等信息, 具体如下:

  • ScaleData:标准化表达矩阵。

  • NormalizeData:对表达矩阵进行归一化。

  • FindVariableFeatures:找到高变异特征。

  • RunPCA:进行PCA分析。

  • RunTSNE:进行tSNE分析。

  • RunUMAP:进行UMAP分析。

  • JackStraw:进行置换检验。

  • ScoreJackStraw:给置换检验结果打分。

  • FindNeighbors:构建邻居网络图。

  • FindClusters:进行聚类分析。

  1. tools:存储分析中使用的其他软件包版本信息

4. Seurat 对象基本操作

4.1 访问 Seurat 对象的域slot

Seurat 对象中assays用于存储表达矩阵, counts存储原始数据(稀疏矩阵),data存储Normalize()之后的数据,scale.data存储ScaleData()缩放后的数据,SCT存储标准化之后的数据, meta.data存储细胞注释信息(或称为临床信息), active.assay存储默认的矩阵名, active.ident存储默认的细胞注释信息(或称为临床信息)。

library(Seurat)

# 读取10X PBMC数据
pbmc.data <- Read10X(data.dir = "./pmbc")
sobj <- CreateSeuratObject(counts = pbmc.data)

###### 使用@或$访问第1层域slot ###### 
# 获取原始表达矩阵第一层slot 
counts <- sobj@assays

# 访问元数据
meta <- [email protected]

###### 使用@ + $访问第3层域slot ###### 
# 提取counts域,获得原始表达矩阵
counts <- sobj$RNA@counts

###### 使用[[ ]] 访问域, 允许域名包含特殊字符(如.),和$作用类似###### 
counts <- sobj[["nCount_RNA"]]
counts <- sobj[["RNA"]]


###### GetAssayData获取表达矩阵 ###### 
# 一个Seurat对象可存储多个表达矩阵
counts.matrix <- as.matrix(GetAssayData(object = sobj@assays$RNA, layer = "counts"))[1:10, 1:10]

slotNames():列出所有域的名称。
VariableFeatures():提取高变异特征。

4.2 数据提取和转换

提取数据并转换为data.frame, 可使用@ / $ / [[ ]]对Seurat 对象取值

# 提取counts数据矩阵
expression_matrix <- sobj[["RNA"]]@counts

# 将矩阵转换为data.frame
expression_df <- as.data.frame(expression_matrix)

# 提取细胞元数据矩阵
expression_matrix <- [email protected]

4.3 FetchData()函数提取数据

FetchData()函数可提取meta.datareductions数据框的数据, slot参数只能为 “data”, “scale.data”, “counts

FetchData(object = sobj, vars = 'PC_1',slot = "counts")

FetchData(object = sobj, vars = 'nCount_RNA')

FetchData(object = sobj, vars = 'groups')

FetchData(object = sobj, vars = 'PPBP')

FetchData(object = sobj, vars = c("tSNE_1","tSNE_2"),slot = "counts")

FetchData(object = sobj, vars = c("tSNE_1","tSNE_2"),slot = "data")

FetchData(object = sobj, vars = c("tSNE_1","tSNE_2"),slot = "scale.data")

4.4 subset()函数提取数据

使用subset()根据meta.data中因素对Seurat对象进行子集的选择(或过滤)。

# 提取MT-开头的基因的meta.data至percent.mito列中
sobj <- PercentageFeatureSet(sobj, pattern = "^MT-", col.name = "percent.mito")

# 提取每个细胞中检测特征数 大于200且小于2500,线粒体含量小于5%的数据
sobj <- subset(sobj, subset = nFeature_RNA > 200 & nFeature_RNA < 2500 & percent.mito < 5)

4.5 为Seurat对象添加域

add.data <- data.frame(
   gene = c("gene1", "gene2", "gene3"),
   value = c(1.2, 3.4, 5.6))

# 将my_data添加到Seurat对象的misc slot中
sobj@misc$add_data <- add.data

# 查看misc slot中的my_data
sobj@misc$add_data 
##    gene value
## 1 gene1   1.2
## 2 gene2   3.4
## 3 gene3   5.6

标签:存储,Seurat,矩阵,RNA,测序,表达,基本操作,data
From: https://blog.csdn.net/LittleComputerRobot/article/details/139635075

相关文章

  • Day7—zookeeper基本操作
    ZooKeeper介绍ZooKeeper(动物园管理员)是一个分布式的、开源的分布式应用程序的协调服务框架,简称zk。ZooKeeper是ApacheHadoop项目下的一个子项目,是一个树形目录服务。ZooKeeper的主要功能配置管理分布式锁集群管理Zookeeper数据模型​ZooKeeper是一个树形目......
  • HIVE从入门到精通------(1)hive的基本操作
    1.开启hive1.首先在master的/usr/local/soft/下启动hadoop:master:start-all.shstart-all.sh2.在另一个master(2)上监控hive日志:master(2):tail-F/tmp/root/hive.logtail-F/tmp/root/hive.log3.在master上启动元数据服务:......
  • 【Git】Git 的基本操作 -- 详解
    一、创建Git本地仓库要提前说的是,仓库是进行版本控制的一个文件目录。我们要想对文件进行版本控制,就必须先创建一个仓库出来。创建⼀个Git本地仓库对应的命令为gitinit,注意命令要在文件目录下执行,例如:我们发现,当前目录下多了一个.git的隐藏文件,.git目录是Git来......
  • Stack && Queue 的基本操作
    实验内容    1.采用顺序存储实现栈的初始化、入栈、出栈操作。    2.采用顺序存储实现循环队列的初始化、入队、出队操作。代码实现#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<stdlib.h>#include<ctype.h>#defineMAX100//1.采......
  • mongo数据库集合基本操作
    --查看user_info这个集合中name等于张三的数据db.user_info.find({name:"张三"})--查看user_info这个集合中telNum等于123456789的数据db.user_info.find({telNum:123456789})--查看user_info这个集合中name等于张三并且telNum等于123456789的数据db.user_info.f......
  • Hive3.1.2概述与基本操作
    、Hive基本概念1.1 Hive简介Hive本质是将SQL转换为MapReduce的任务进行运算,底层由HDFS来提供数据存储,说白了hive可以理解为一个将SQL转换为MapReduce的任务的工具,甚至更近一步说hive就是一个MapReduce客户端。为什么使用Hive?如果直接使用hadoop的话,人员学习成本太高,项目要......
  • C语言数据结构实现-单链表表基本操作
    链表插入元素同顺序表一样,向链表中增添元素,根据添加位置不同,可分为以下3种情况:插入到链表的头部(头节点之后),作为首元节点;插入到链表中间的某个位置;插入到链表的最末端,作为链表中最后一个数据元素;虽然新元素的插入位置不固定,但是链表插入元素的思想是固定的,只需做以下两步操......
  • mysql阶段02 数据库基本操作, 误删用户案例解决, 数据库体系结构, mysql服务构成, mys
    一、数据库基本操作1.设置数据库密码[root@db03~]#mysqladmin-urootpassword'123456'2.使用密码登录#1.正确的登录方式[root@db03~]#mysql-uroot-p123456[root@db03~]#mysql-uroot-p123456#2.错误的登录方式[root@db03~]#mysql-uroot-p123456#3......
  • C语言数据结构实现-顺序表基本操作
    顺序表,全名顺序存储结构,是线性表的一种。通过《什么是线性表》一节的学习我们知道,线性表用于存储逻辑关系为“一对一”的数据,顺序表自然也不例外。不仅如此,顺序表对数据的物理存储结构也有要求。顺序表存储数据时,会提前申请一整块足够大小的物理空间,然后将数据依次存储起来,存储时......
  • 易基因:RNA免疫共沉淀测序 (RIP-seq) 技术介绍
    大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。RIP-seq是将RNA免疫共沉淀(RNAImmunoprecipitation,RIP)与二代测序技术(NGS)相结合以研究细胞内RNA与蛋白互作的技术,RIP利用目标蛋白抗体把相应的RNA-蛋白复合物(RNABindingProtein,RBP)沉淀下来,然后经过富集和纯化就可以......