引言

本系列讲解 空间转录组学 (Spatial Transcriptomics) 相关基础知识与数据分析教程,持续更新,欢迎关注,转发,文末有交流群(你懂的)!
简介
本文主要阐述了如何将数据以 Bioconductor-based data classes 的形式导入 R。我们先对原始数据结构进行了概述,接着介绍了如何将原始数据导入 R。
平面文件结构
目前,不同商业供应商提供的空间转录组学平台的数据,其文件结构和格式各不相同。不过,这些数据在本质上是相似的,比如:基于测序的数据都包含阵列点的空间位置和计数矩阵;基于成像的数据则包括转录本位置(通过点呼叫得到)、多边形边界(通过分割得到)以及计数矩阵(通过将转录本分配到细胞得到)等。
接下来,我们将对几种商业可用的数据类型进行总结。
Visium(10x Genomics)
在 Visium 数据上运行 Space Ranger(10x Genomics 提供的数据处理软件)会生成一组标准化的输出文件。这些文件既包含原始测量数据(与单细胞 RNA 测序类似,但还包含例如点级坐标、潜在图像等信息),也包含来自标准分析流程的结果,该流程包括标准质量控制、降维(如 PCA、t-SNE 和 UMAP)、基于图的聚类等。
10x Genomics 对这些产生的输出进行了描述;简单来说:
Visium
└── outs
├── spatial
├── tissue_positions_list.csv # spot locations
└── tissue_lowres_image.png # same-section H&E
└── filtered_feature_bc_matrix # in-tissue matrix files
└── raw_feature_bc_matrix # unfiltered matrix files
├── barcodes.tsv # spot barcodes (i.e., sequences)
├── features.tsv # gene metadata (e.g., ensembl IDs)
└── matrix.mtx # (gene x spot) count matrix
Visium HD (10x Genomics)
在 Visium HD 数据上运行 Space Ranger,其产生的输出与前面提到的类似,不过默认会包含以 2、8 和 16 µm 分辨率进行分箱的输出。所以,输出呈现分层结构,每个 binned_outputs/ 子目录里都包含着和 Visium 的 outs/ 目录相似的文件,比如:
VisiumHD
└── binned_outputs
└─── square_002um
└── filtered_feature_bc_matrix.h5
└── filtered_feature_bc_matrix
└── barcodes.tsv.gz
└── features.tsv.gz
└── matrix.mtx.gz
└── raw_feature_bc_matrix.h5
└── raw_feature_bc_matrix
└── ...
└── spatial
└── tissue_positions.parquet
└── ...
└── square_*
Xenium (10x Genomics)
运行 Xenium Ranger 能够把 Xenium 运行产生的原始数据处理成一个输出包,该输出包有着标准化的文件结构和内容。需要特别指出的是,10x Genomics 提供了多种输出文件格式(比如,基因/细胞元数据既有 .csv 格式,也有 .parquet 格式),这使得它能够方便地与各种框架进行互操作。
10x Genomics 对所有输出都进行了详细描述,具体可以查看相关资料;简单来说:
Xenium
└── outs
├── cells.parquet # cell metadata (e.g., area)
├── cell_feature_matrix.h5 # compressed format of the below
└── cell_feature_matrix # segmentation-derived matrix files
├── barcodes.tsv # cell barcodes (i.e., sequences)
├── features.tsv # gene metadata (e.g., target type)
└── matrix.mtx # (gene x cell) count matrix
├── transcripts.parquet # molecule locations
├── cell_boundaries.parquet # membrane segmentation
├── nucleus_boundaries.parquet # nuclear segmentation
└── experiment.xenium # experiment-wide metadata (in .json format)
CosMx (NanoString)
借助自定义模块脚本,AtoMx Spatial Informatics Portal(SIP)能够导出各种类型的对象,关键的是,它支持“平面”(人类可读的)文件格式。与原始数据(比如,在进行点呼叫之前的图像)不同,这些文件是经过处理后的输出,比如分割边界顶点和分子的空间位置、由分割得到的计数矩阵等。
关于这些文件的详细描述可以查看相关资料;简单来说:
CosMx
├── exprMat_file.csv # (gene x cell) counts
├── fov_positions_file.csv # FOV corner positions
├── metadata_file.csv # cell-level metadata
├── polygons.csv # segmentation boundaries
└── tx_file.csv # molecule locations
Bioconductor 包
多个 Bioconductor 包中的读取函数可以将原始文件中的数据导入 R 中的 SpatialExperiment 对象(或其衍生对象),具体如下:
VisiumIO 提供了用于读取 10x Genomics Space Ranger 流程(即 Visium 和 Visium HD)空间数据的读取器。它支持 .mtx、.tar.gz 和 .h5 文件格式,并且能够一次性读取多个样本。这些数据会被导入到一个 SpatialExperiment 对象中。
XeniumIO 提供了将 10x Genomics Xenium 数据导入 R 的函数。它支持多种文件格式,比如用于计数数据的 .h5 和 .mtx,用于多边形和分子的 .parquet 和 .csv 等。此外,它还能自动区分 RNA 目标和其他条形码,像负探针、空白条码等。
SpatialExperimentIO 提供了多种基于成像的空间转录组学平台的读取器,涵盖了 CosMx(Bruker)、Xenium(10x Genomics)、MERSCOPE(Vizgen)和 seqFISH(Spatial Genomics)。这些数据可以被导入到一个 SingleCellExperiment 或 SpatialExperiment 中。
SpatialFeatureExperiment 提供了将 CosMx、Xenium、MERSCOPE 和 Visium(HD)作为 SpatialFeatureExperiment 对象导入的函数。