引言
本系列讲解 空间转录组学 (Spatial Transcriptomics) 相关基础知识与数据分析教程,持续更新,欢迎关注,转发,文末有交流群(你懂的)!
简介
Bioconductor
提供了多种数据类,用于存储和处理空间(转录)组学数据集。这些统一的数据结构使得可以方便地将不同研究团队开发的方法和软件包整合起来,构建出包含最新先进方法的分析流程。
接下来,介绍本系列中用到的 Bioconductor
数据类。
文件格式
空间(转录)组学的检测手段以及由此获取的数据类型丰富多样。而且,不同的供应商在分发数据时采用的文件格式也不尽相同。
下面,对常见的文件格式以及它们在 R 软件中的处理方式做一个简单介绍。
计数数据
基于测序技术的检测所获得的数据一般包含(细胞)条形码、元数据以及一个矩阵,矩阵的行和列分别对应特征和观测值。这类数据通常以 .csv
和 .mtx
文件(或它们的压缩版本,如 .gz)的形式提供。
以 10x Genomics
的数据为例,可以借助 DropletUtils
中的 read10xCounts()
函数将其计数数据导入 R;其他供应商的数据则可以通过标准的 R 读取工具来读取。对于规模较大的数据集(比如包含数十万个细胞的数据),.h5 文件能够以非内存的方式表示计数矩阵,在 R 中以 DelayedArrays(参考 HDF5Array)的形式展现,从而有效处理大规模数据。
.parquet
表格数据(比如分割边界、分子位置等信息)可能会以 .parquet 文件的形式出现。可以通过 arrow 来与这类文件进行交互操作。特别值得一提的是,arrow 的 read_parquet()函数支持延迟的 dplyr 风格操作,像 filter()和 select()等,这样就可以延迟查询数据,例如只把相关的部分加载到内存中,提高数据处理的效率。
.zarr
.zarr 存储库可以将 N 维数组以“块”的网格形式进行存储,方便实现并行访问。在处理(生物)成像数据时,不同的图像尺度或分辨率可以作为“金字塔”的不同层级来存储,其中金字塔的底部代表最高分辨率,顶端则代表最低分辨率。R 与 .zarr 的接口可以通过 Bioconductor 上的 Rarr 或 CRAN 上的 pizzarr 来实现。
数据类
在基于测序的空间转录组学(ST)数据里,数据呈现为转录本 - 位点计数矩阵的形式,每个位点还附带空间坐标信息。
而基于成像的 ST 技术产生的数据是分子级别的,通常以长格式表格形式呈现,每一行代表一个观测值,列则包含转录本身份、空间位置以及实验元数据(比如样本来源)等信息。经过细胞边界的分割和转录本到细胞的映射后,这些数据可以被转换成类似单细胞组学技术数据的转录本 - 细胞计数矩阵。
无论是哪种类型的数据,观测值都与额外的元数据相关联,比如位点或分割细胞的面积大小,对于基于成像的数据,还包括分割得到的质心位置和多边形边界等信息。
基于 Bioconductor 的数据类
SingleCellExperiment
单细胞 RNA - seq 及类似技术能够在单细胞水平上对转录本进行定量,生成转录本 - 细胞计数矩阵。在 Bioconductor 中,用于处理单细胞实验数据的主要类是 SingleCellExperiment(简称 SCE)。
SCE 是在 SummarizedExperiment(SE)类的基础上,针对单细胞数据的特点进行扩展而来的。比如,它有 reducedDims 功能,可以存储观测值的低维嵌入结果,像 PCA、t - SNE 和 UMAP 等;row - 和 colPairs 分别用于存储基因之间的关系(例如基因 - 基因相关性)和细胞之间的关系(例如细胞 - 细胞距离);此外,来自相同细胞的其他特征的数据,比如通过多模态检测得到的数据,会以 altExps(即“替代实验”)的形式存储起来。
SpatialExperiment
SpatialExperiment(SPE)是本专栏中使用的核心数据类。这个类可以让我们在位点或细胞水平上存储数据集,也就是说,它可以存储基于测序平台的位点水平数据,或者把基于成像平台的数据汇总到细胞水平。
SPE 在 SCE 的基础上进行了进一步定制,专门用于存储空间信息,比如空间坐标和图像文件。SpatialExperiment 对象结构的示意图如图 4.1 所示。简单来说,一个 SPE 对象包含以下几部分:(i)包含表达计数的 assays,(ii)包含基因信息的 rowData,(iii)包含位点或细胞信息的 colData,其中既有非空间元数据,也有空间元数据,(iv)包含空间坐标的 spatialCoords,以及(v)包含图像数据的 imgData。对于基于位点的数据,它使用一个名为 counts 的单一 assay 来存储。
SpatialFeatureExperiment
SPE 经过 SpatialFeatureExperiment(SFE)的拓展后,能够进一步容纳观测值和特征层面的图(比如细胞 / 位点邻域)以及几何形状(比如分割和组织边界,或者是病理学家标注的组织学区域)。由于这些内容以 sf(几何形状)和 spdep(图)对象的形式呈现,SFE 可以直接利用多种几何操作(例如相交和缓冲处理)以及空间依赖性计算。
MoleculeExperiment
MoleculeExperiment(ME)是专门针对基于成像的空间转录组学数据设计的。对于每一个样本,ME 会存储一份分子列表(比如转录本身份和坐标),以及边界信息(比如细胞身份和多边形坐标)。这些边界信息理论上可以包含替代分割方式,可能来源于细胞膜、细胞体或者细胞核染色等情况。通过这种方式,可以根据一组给定的边界来分配分子,从而得到不同的计数矩阵。反过来,在细胞聚合水平上,可以利用由 ME 衍生的 SPE 来开展分析(ME 包提供了一个包装器来实现这一功能)。
非基于 Bioconductor 的
除了 Bioconductor 之外,还有一些其他框架可以支持对基于测序和成像的平台进行空间感知分析。seurat 和 scanpy分别在 R 和 Python 中提供了全面的单细胞分析流程,它们都加入了用于可视化和分析空间组学数据集的功能。像 Giotto(R)、VoltRon(R)和 squidpy(Python)这样的软件包,都支持用于分析空间组学数据的全功能框架,并且包含了大量空间感知算法。
Giotto
Giotto(或者叫 Giotto Suite)提供了用于在多个尺度和分辨率上处理、分析以及可视化空间多组学数据的工具。这个软件包能够支持对众多基于测序和成像的平台进行分析,这些平台涵盖了转录组学和蛋白质组学模式,比如 Xenium、Visium HD 和 CODEX(Akoya)。Giotto 提供了操作空间对象和图像、检测空间模式以及空间感知聚类的工具,并且支持通过 dbverse 进行基于数据库的后端数据处理,从而实现更好的可扩展性。
VoltRon
VoltRon
软件包整合了一个框架,允许在跨越感兴趣区域(ROIs)和图像瓦片以及细胞、位点和分子的观测值之间进行空间感知对齐。它提供了 Shiny 应用程序,用于在相邻组织切片之间进行自动和手动空间对齐,用户可以交互式地管理图像并选择共配准的地标点。VoltRon 本身也是一个端到端的空间组学分析软件包,并且支持使用 .zarr 和 .h5 支持的 DelayedArray 对象进行空间解析数据集的磁盘表示。
SpatialData
SpatialData
框架提供了一套用于加载、处理以及(静态和交互式)可视化各种空间组学数据(包括基于成像和测序的数据以及不同模式)的模块。本质上,该容器依赖于 5 种类型的元素(图像、标签、形状、点和表格),这些元素在磁盘上使用标准化的、符合 OME - NGFF 规范的文件格式表示(.zarr 用于图像、标签和表格;.parquet 用于形状和多边形),从而实现统一且内存效率高的数据表示和处理。