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

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 <- sobj@meta.data

###### 使用@ + $访问第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 <- sobj@meta.data

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/702811.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数组】【双指针】三数之和

打算冲一把算法类比赛&#xff0c;之前一直对算法提不起兴趣&#xff0c;也有我自己对它的抵触&#xff0c;本身算法也比较菜。 但现在打算勤勤恳恳刷题&#xff0c;踏踏实实总结&#xff0c;冲&#xff01; 数组——双指针 三数之和 该题力扣网址 错误做法 三重循环框架&a…

第十五篇——条件熵和信息增益:你提供的信息到底值多少钱?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 通过这篇文章&#xff0c;我知道了条件熵和信息增益&#xff1b;如果你试…

水电站大坝安全监测工作详解

水电站大坝安全监测是确保大坝结构安全和操作安全的关键组成部分。本文将详细解释水电站大坝安全监测的9项主要工作内容&#xff0c;帮助理解其重要性和执行过程。 1) 现场监测 现场监测是水电站大坝安全监测的首要步骤。监测人员需要定期对大坝的物理结构进行检查&#xff0c;…

vite构建的ts项目配置src别名@

一、安装types/node npm install types/node 二、vite.config.ts 文件中配置以下内容 resolve: {alias: {: path.resolve(__dirname, ./src),},}, 三、 tsconfig.json 文件中compilerOptions下配置以下内容 /* 配置 */"baseUrl": ".","paths":…

【Python】详解pandas库中pd.merge函数与代码示例

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。 &#x1f913; 同时欢迎大家关注其他专栏&#xff0c;我将分享Web前后端开发、人工智能、机器学习、深…

高考志愿填报秘籍:个人篇

选择适合自己的大学和专业&#xff0c;对广大考生来说至关重要。从某种程度上来说&#xff0c;决定了考生未来所从事的行业和发展前景。为了帮助广大考生更加科学、合理地填报志愿&#xff0c;选择适合自己的大学和专业&#xff0c;本公众号将推出如何用AI填报高考志愿专栏文章…

清远mes系统开发商 盈致科技

清远MES系统开发商盈致科技为企业提供专业的MES系统解决方案&#xff0c;帮助企业实现生产过程的数字化管理和优化。盈致科技的服务范围包括但不限于以下方面&#xff1a;MES系统定制开发&#xff1a;盈致科技可以根据清远企业的实际需求定制开发适合的MES系统&#xff0c;满足…

defer关键字

【1】defer关键字的作用&#xff1a; 在函数中&#xff0c;程序员经常需要创建资源&#xff0c;为了在函数执行完毕后&#xff0c;及时的释放资源&#xff0c;Go的设计者提供defer关键字 【2】案例展示&#xff1a; 【3】代码变动一下&#xff0c;再次看结果&#xff1a; 发…

智慧大屏是如何实现数据可视化的?

智慧大屏&#xff0c;作为数据可视化的重要载体&#xff0c;已在城市管理、交通监控、商业运营等领域广泛应用。本文旨在阐述智慧大屏实现数据可视化的关键技术和方法&#xff0c;包括数据源管理、数据处理、视觉编码、用户界面与交互设计等。 大屏通过接入企业内部的数据库系…

openlayers 绘图功能,编辑多边形,modify组件的使用(三)

前两篇介绍了 openlayers 中 draw 的使用&#xff0c;自定义了绘制中和绘制结束后的样式&#xff0c;绘制结束后可以获取到绘制图形的featue或者进一步获取轮廓坐标(如下)&#xff0c;可以进行坐标保存或者将feature添加到其他层进一步自定义显示 draw.value.on("drawend…

arxiv提交报错解决指南

- 编译时无错误 - 所有文件和图片文件都在同一目录下 - 生成.bbl文件 overleaf将参考文献格式bib转bbl&#xff08;bibitem&#xff09;_overleaf bbl文件-CSDN博客 - .tex文件、.bib文件、.bbl文件 的文件名要一致&#xff0c;修改.bib文件名记得在.tex文件中修改bibliograp…

如何导出数据库中数据表或查询结果的数据:支持大数据量(以MySQL和SQLynx为例)

MySQL的数据导出是一个操作非常频繁的任务&#xff0c;也是数据的存储和传输比较重要的一种方式&#xff0c;本文主要以SQLynx为例来介绍MySQL的数据如何导出。 目录 1 操作步骤 步骤 1&#xff1a;登录SQLynx 步骤 2&#xff1a;选择数据库和表 步骤 3&#xff1a;执行查询…

BL104钡铼多协议采集网关助力企业智能化转型

BL104钡铼多协议采集网关&#xff08;PLC物联网关BL104&#xff09;是为满足工业环境需求而设计的专业工业级协议转换网关。它在企业智能化转型过程中扮演着关键角色&#xff0c;为企业提供了高效、稳定的通信解决方案&#xff0c;助力企业实现智能化转型。 首先&#xff0c;P…

【Linux】运维-Kubernetes(k8s)应用介绍及使用-了解

一、介绍 Kubernetes&#xff0c;也被称为K8s或Kube&#xff0c;是谷歌推出的业界最受欢迎的容器编排器。 K8s是一个架构良好的分布式系统的例子。它将集群中的所有机器都视为单个资源池的一部分。 K8s与其他成熟的分布式系统一样&#xff0c;有两层&#xff1a;头节点和工作节…

opencv-python(八)

import cv2 import numpy as npheight 160 width 280 image np.zeros((height, width),np.uint8) cv2.imshow(image,image) cv2.waitKeyEx(0) cv2.destroyAllWindows() 二维数组代表一幅灰度图像。 import cv2 import numpy as npheight 160 width 280 image np.zeros((he…

什么是无头浏览器以及其工作原理?

如果您对这个概念还不熟悉&#xff0c;那么使用无头网络浏览器的想法可能会让您感到不知所措。无头浏览器本质上与您熟悉的网络浏览器相同&#xff0c;但有一个关键区别&#xff1a;它们没有图形用户界面 (GUI)。这意味着没有按钮、选项卡、地址栏或视觉显示。 相反&#xff0c…

译译交友项目介绍

一、 项目背景 随着社会的进步&#xff0c;英语作为一种国际语言&#xff0c;很多人都在学习英语&#xff0c;然而现在很多人都会因为学习英语而烦恼&#xff0c;有时还会因为是一个人学习而感到枯燥。面对情绪的低落&#xff0c;往往会使学习更困难。因此&#xff0c;我打造了…

2024 AI智算产业趋势,数据智能时代的到来(免费下载)

【1】关注公众号<方案驿站> 【2】私信发送 2024AI智算产业趋势展望 【3】获取本方案PDF下载链接&#xff0c;直接下载即可。 如需下载本方案PPT/WORD原格式&#xff0c;诚挚邀请您微信扫描以下二维码加入方案驿站知识星球&#xff0c;获取上万份PPT/WORD解决方案&…

Ubuntu系统中网易云音乐编译安装

项目地址&#xff1a; netease-cloud-music-gtk: Linux 平台下基于 Rust GTK 开发的网易云音乐播放器 目录 1.README.md中按照步骤来 2.安装git 3.报错 sudo apt install cmake sudo apt-get install libdbus-1-dev sudo apt install dnf sudo dnf install gettext 继…