专栏名称: 生信师兄
本公众号旨在帮助广大的生信小白更好、更轻松的入门生信,专注生信干货分享。
目录
相关文章推荐
中国药闻  ·  “90亿人次”里的活力和信心 ·  昨天  
河南新闻广播  ·  河南即将迎来20°C+,棉袄能收起来了吗→ ·  昨天  
法治网  ·  河南许昌:全市对标胖东来服务理念 ·  2 天前  
中国药闻  ·  各地因地制宜加快培育壮大新质生产力 ·  2 天前  
河南新闻广播  ·  苏英杰严重违纪违法被双开 ·  2 天前  
51好读  ›  专栏  ›  生信师兄

你真的读懂Seurat对象了吗?

生信师兄  · 公众号  ·  · 2025-01-09 10:40

正文

封面

熟悉师兄公众号的都应该清楚,师兄之前的推文主要集中在各种类型的科研绘图上!但是不少粉丝小伙伴们还是反应,只知道绘图,数据不会分析,还是不行的呀!没错,拿不到可靠的分析结果,只知道绘图,这当然是远远不够的!因此, 学习各种常用的生信数据分析则必然成为了每一个生信人必须要经历的事情。 因此,后续的推文中,师兄会尽可能地多更新一些有关数据分析的内容,可能包含的系列包括《R语言数据处理基本技巧》、《从零开始学单细胞转录组》、《从零开始学空间转录组》等;

本系列,师兄将 从单细胞转录组学开始 ,带领大家一起 从零开始学单细胞 !系列内容可以详见下方大纲!

说明: 由于本系列教程还是强调 面对完全零基础小白 ,所以很多内容师兄会介绍的非常细,对于部分已经入门的老手来说可能比较多余,所以 大家选择性阅读即可!

本系列主要内容目录,请看Part 1;

本期主要内容,请看Part 2;

本系列配套《生信师兄单细胞学习交流群》详情,请看Part 3;

合作服务器推荐及生信师兄粉丝专属优惠详情,请看Part 4;

如果您觉得本系列文章对你有帮助的话,欢迎 点赞、收藏、在看+转发 !您的支持是师兄持续更新的最大动力!

Part 1 系列介绍

1.1 系列简介

本系列一共包含3个主要章节,其中:

  • 第一章:认识了解单细胞转录组 ,在本章中,师兄会详细介绍单细胞测序的产生背景、应用前景,以及单细胞测序技术的基本原理、质控标准以及上游分析流程!
  • 第二章:常用的单细胞转录组学分析 ,单细胞转录组学的分析内容非常广泛,从基础的细胞聚类分群、差异富集,再到细胞通讯、CNV、轨迹分析、RNA velocity、转录因子等高级分析;其中的每一种分析都需要深入理解底层逻辑才能更好地使用它们,很多时候,只是复制粘贴别人的代码,套到自己的数据上却得到了完全错误的结果,这很可能就是因为你并没有理解每一步在干嘛?为啥这么干?因此,本章会从每一种分析的背景、逻辑、算法原理、代码实操等多个维度对其进行详尽地阐述。以帮助各位小伙伴能够准确无误地使用本系列代码!
  • 第三章:单细胞文献精讲与主图复现 ,这部分师兄会通过一篇CNS级单细胞转录组学文献的主图复现,带着大家将前面所学到的知识更好地应用在实际课题当中!实现真正的学以致用!

以上就是本系列教程的内容简介,需要指出的是, 目前,师兄还没有太多的时间抽出来录课 ,因此暂时只是整理了 本系列全部分析过程的笔记和代码,以及所有示例数据! 但是,我相信通过详尽地笔记教学及交流群的充分讨论,大部分同学还是能够轻松入门的!当然,如果后续有时间和精力,并且各位小伙伴迫切需要的话,师兄也会尽可能抽时间来录课! 届时入群的小伙伴只需补购课差价即可!

1.2 内容大纲

单细胞转录组系列教程目录

目前,很多公共数据库上的单细胞测序数据都会将单细胞计数矩阵直接提供给用户,但是对于自己的测序数据而言,有时候公司只是返回了fastq数据,此时就需要我们有一台服务器,并且需要使用服务器实现 单细胞RNA-seq数据的上游分析 了。对于上游分析而言, Cell Ranger软件包 是一个不可或缺的工具。它能够将原始测序数据(如FASTQ文件)转换为基因表达矩阵,并进行各种质量控制和数据预处理步骤。

本文师兄将详细介绍如何 从公开的单细胞数据集中获取数据,配置分析环境,下载数据,并最终使用Cell Ranger进行数据处理 。帮助更多的单细胞小白早日更好地分析自己的数据。

Part2 Seurat对象的主要组成部分

这篇文章主要给带大家 全面认识和了解Seurat对象

Seurat对象的数据结构是一个 S4对象 ,它整合了单细胞RNA测序的原始数据、样本信息、分析结果等多种数据,并提供了一系列函数和方法进行数据处理、分析和可视化。

Seurat对象的设计基于R语言中的List对象,通过 将不同类型的数据(如基因表达矩阵、细胞标记、细胞亚群信息等)整合到同一数据结构中,极大地简化了数据处理流程,提高了分析效率

Seurat V5的组成

2.1 assays

2.1.1 assays结构

在Seurat中,assays用于 存放多组学的表达数据,如RNA表达数据、ATAC-seq数据等

assays结构

每个assay都是一个独立的表达矩阵集合,可以包含 原始数据、归一化数据、标准化数据等多种类型的数据 。默认情况下,一个Seurat对象会包含一个名为"RNA"的assay,用于存储RNA表达数据。

可以通过 object@assays$assayName 来访问特定assay,其中 object 是Seurat对象的名称, assayName 是assay的名称(如"RNA")。

2.1.1.1 RNA
  • layers

    • counts :dgcMatrix对象(稀疏矩阵), 原始的表达量count矩阵 ,即未经任何处理的RNA表达数据。

    • data 归一化 后的表达数据矩阵。归一化通常是为了消除测序文库差异, 使不同细胞间的表达数据可比较 。常用的归一化方法包括 LogNormalize和SCTransform方法

    • scale.data 缩放处理 后的数据矩阵,数据经过 中心化和标准化 处理,通常是为了 使数据符合特定的统计分布(如高斯分布),以便于后续的分析(如分类、聚类、PCA等) 。这些数据矩阵通常表示基因表达值已被 减去均值并除以标准差(Z-score)

中心化、归一化、标准化傻傻分不清楚?-- 那就看这篇!

  • cells: LogMap结构,用于存放每个单细胞的条形码信息;

  • features: LogMap结构,用于存放基因名信息;

  • default: 默认层数;

  • assay.orig: 存储 原始的assay对象 assay.orig 是一个备份slot,用于存储原始的assay对象。在数据处理过程中,可以随时访问这些原始数据以进行比较或恢复原始状态。

  • meta.data: 存储特征(通常是基因)的元数据。包含关于每个基因的额外信息,如基因名称、类型、其他注释信息等。可以帮助在分析中更好地理解和解释结果。

  • var.features: 高变异基因的列表。存储在分析过程中识别出的高变异基因。这些基因在细胞间具有较高的变异性,通常用于后续的降维和聚类分析,因为它们提供了更多的生物学信息。

  • misc: 用于存储额外的信息。 misc 是一个灵活的存储区域,用户可以在此存储任何额外的注释信息、中间结果或自定义数据。这些信息可以在后续分析中使用或参考。

  • key: 用于存储assay对象的标识符前缀。 key slot存储的是一个字符串前缀,用于标识与该assay相关的所有数据。例如,在降维结果中, key 用于构建列名称以区分不同的assay。

2.1.2 assays的操作与应用

如上所述,数据处理过程中,例如做整合(integration)、变换(SCTransform)、去除污染(SoupX),或融合velocity的数据等,都会生成对应的assays,用于存放这些处理之后的矩阵。

那么如何让Seurat知道我们后续的操作对象是哪一个assay呢? 这时就需要有 Default Assay 的存在了,即 默认指定的操作对象

2.1.2.1 查看Default Assay并修改
  • 查看当前激活的assay :可以通过 [email protected] 查看当前激活的assay。Seurat在进行数据分析时,默认使用当前激活的assay中的数据。

  • 更改当前激活的assay :如果需要对不同类型的表达数据进行分析,可以通过 DefaultAssay(object = "assayName") 来更改当前激活的assay。

2.1.2.2 数据提取
  • 方法一: 可以通过 GetAssayData(object, assay, slot) 函数来提取特定assay中指定类型的数据矩阵。其中, slot 参数指定要提取的数据类型(如"counts"、"data"、"scale.data"), assay 参数指定要提取数据的assay名称。
# 提取counts矩阵:
count_data "RNA", "counts")
  • 方法二: 也可以通过@和$符号直接提取需要的数据并另存,
# 包含行名和列名:
count_data 
# 注意:由于Seurat v5的更新,加入了layers层,如果提取layers中的counts将不包含行名和列名的信息:
count_data2 
数据提取

2.1.3 assays的重要性

assays在单细胞RNA测序数据分析中扮演着至关重要的角色。它们不仅提供了丰富的表达数据资源,还通过不同的数据矩阵和处理方法,为后续的降维、聚类、差异表达分析等提供了坚实的基础。因此,在进行单细胞RNA测序数据分析时, 深入理解assays的结构和操作方法是非常必要的。

2.2 meta.data

meta.data

2.2.1 内容

  • meta.data数据以数据框的形式存储,每行对应一个细胞,每列对应一个元数据特征。包含与每个细胞相关的元数据,例如细胞类型(celltype)、样本来源(orig.ident)、每个细胞的测序深度(nCount_RNA)和表达基因的数量(nFeature_RNA)等。

2.2.2 常用操作

# 查看元数据:
head([email protected])

# 添加/修改元数据:
seurat_object$cell_type 
# 基于元数据对Seurat对象取子集:
subset_seurat "T cell")

2.3 active.assay

2.3.1 内容

active.assay 属性存储当前激活的assay(实验类型),即当前正在使用的数据类型(如RNA、ADT、SCT等)。每个assay包含测序数据和相关分析结果,如标准化数据、标记基因等。

2.3.2 常用操作

# 查看当前活跃的assay
current_assay print(current_assay)

# 设置活跃的assay
# 设置RNA为活跃的assay
DefaultAssay(seurat_object) "RNA"

# 在不同assay之间切换
# 设置SCT为活跃的assay
DefaultAssay(seurat_object) "SCT"

# 查看当前活跃assay的内容
# 查看标准化数据
norm_data "data")
head(norm_data)

2.4 active.ident

2.4.1 内容

active.ident 属性存储当前激活的细胞身份(identity)分类,这通常用于存储细胞的聚类结果或其它分类标签。每个细胞都有一个相应的身份标签,这些标签可以是聚类的结果、细胞类型或实验条件等。

2.4.2 常用操作

# 查看当前活跃的细胞身份
active_idents head(active_idents)

# 设置活跃的细胞身份
# 假设我们有一个新的细胞身份分类向量new_idents
Idents(seurat_object) 
# 根据细胞身份进行子集化
# 提取特定身份的细胞
subset_seurat "cluster_1")

# 在可视化中使用细胞身份
# 使用UMAP绘制细胞身份分类
DimPlot(seurat_object, reduction = "umap", group.by = "ident")

2.4 reductions

reductions

2.4.1 内容

  • 存储降维结果,例如PCA(主成分分析)、UMAP(统一流形近似和投影)和t-SNE(t-分布邻域嵌入)的结果。

2.4.2 常用操作

# 运行PCA并存储结果:
seurat_object 
# 查看PCA结果:
pca_results head([email protected]# 查看pca的嵌入结果

# 运行UMAP并存储结果:
seurat_object 1:10)
# 绘制UMAP图:
DimPlot(seurat_object, reduction = "umap")

2.5 graphs

graphs

2.5.1 内容

  • 存储基于细胞之间相似性计算的图结构。通常用于聚类分析。

2.5.2 常用操作

# 构建最近邻图
seurat_object 1:10)

# 查看图结构
head(seurat_object@graphs$RNA_snn)

2.6 neighbors

2.6.1 内容

  • 存储细胞邻居信息,通常用于加速最近邻查找。

2.6.2 常用操作:

# 查看邻居信息:
neighbors 
# 查看特定细胞的邻居:
neighbors[[1]]

2.7 images

2.7.1 内容

用于存储空间转录组学(spatial transcriptomics)数据。 images 槽包含关于空间图像和坐标信息的数据,支持可视化和分析空间转录组学数据。这在处理结合了空间信息的单细胞RNA测序数据时特别有用。

2.7.2 常用操作

# 查看当前Seurat对象中的图像数据
images print(images)

# 添加空间图像数据:
通常通过读取Visium数据文件来创建包含图像和空间坐标信息的Seurat对象:
library(Seurat)
library(SeuratData)

# 加载数据
data("stxBrain")
# 创建Seurat对象
seurat_object "path/to/data", filename = "tissue_positions_list.csv")
# 查看图像数据
print(seurat_object@images)

# 访问特定图像数据:
# 假设我们有一个图像数据名为"slice1"
slice1 print(slice1)

# 可视化空间图像数据
SpatialPlot(seurat_object, image = "slice1", group.by = "orig.ident")

# 可视化特定基因在空间上的表达
SpatialFeaturePlot(seurat_object, features = "GeneX", image = "slice1")

# 修改图像缩放比例
seurat_object@images$slice1 0.5)

2.8 其它

2.8.1 misc

  • 存储其他附加信息,可以是任意格式的R对象。这个槽通常用于用户自定义的分析结果或中间数据。

2.8.2 tools

  • 存储了与特定分析工具相关的结果和信息,例如细胞周期得分、差异表达分析结果等。

2.8.3 version

  • 包含Seurat对象的版本信息,用于确保对象在不同版本之间的兼容性。

2.8.4 command

  • 记录了在Seurat对象上运行的分析命令及其参数,方便重现分析步骤。

2.8.5 project.name

  • 包含项目的名称或描述信息。

Part 3 生信师兄单细胞学习交流群

当然了,好的学习过程离不开详尽地交流讨论和重难点答疑!因此,在发布教程的同时,师兄也成立了 《生信师兄单细胞学习交流群》 用于本系列内容的学习交流。需要的小伙伴可以扫描下方二维码,添加师兄微信后备注 “单细胞学习交流群” 后付费加群!

师兄微信

3.1 群内资源:

  • 本系列所有免费及付费内容的配套学习资源、代码资源及示例数据;
群内资源(以上图课程目录为准)
  • 师兄会在群内提供不定时答疑,满足答疑要求的问题师兄会尽可能抽时间回答;

3.2 答疑要求及入群费用







请到「今天看啥」查看全文