我们粗浅的认为空间单细胞约等于10x技术,虽然说确实是有很多其它空间单细胞技术可以产出各式各样的数据。但是前期我们还是着重于介绍10x的空间单细胞文件格式详解 ,里面 提到的几个案例,其实并不是所有的数据集都是可以分析的,因为作者提供的文件本身就是缺胳膊断腿的。
可以成功读取的单细胞空间转录组数据文件
比如2021-GSE158328-肠道发育的,自己下载 GSM4797916_A1.tar.gz ,然后解压可以看到它每个样品其实有两个文件夹 :
代码语言:javascript复制% ls -lh *|cut -d" " -f 7-
raw_feature_bc_matrix:
28K 2 20 2020 barcodes.tsv.gz
298K 2 20 2020 features.tsv.gz
18M 2 20 2020 matrix.mtx.gz
spatial:
1.6M 2 20 2020 aligned_fiducials.jpg
1.8M 2 20 2020 detected_tissue_image.jpg
163B 2 20 2020 scalefactors_json.json
4.6M 2 20 2020 tissue_hires_image.png
496K 2 20 2020 tissue_lowres_image.png
180K 2 20 2020 tissue_positions_list.csv
上面的两个文件夹需要独立读取,代码如下所示:
代码语言:javascript复制library(Seurat)
## 首先读取表达矩阵数据
ct = Read10X("./GSE158328_RAW/A1/raw_feature_bc_matrix")
## 然后读取image信息
img <- Read10X_Image(image.dir = file.path("./GSE158328_RAW/A1/",
"spatial"), filter.matrix = TRUE)
## 接着创建seurat对象
# https://rdrr.io/github/satijalab/seurat/src/R/preprocessing.R
sceP <- CreateSeuratObject(counts = ct, assay = "Spatial")
img <- img[Cells(x = sceP)]
DefaultAssay(sceP = img) <- "Spatial"
sceP[['slice1']] <- img
接着我们一起看看 2022-复旦高强课题组-结直肠癌肝转移空间单细胞数据:
代码语言:javascript复制# 空间单细胞的文件在文献pdf里面的可以找到地址:ST-colon2
% ls -lh *|cut -d" " -f 7-
77K 12 15 2021 barcodes.tsv
162K 12 15 2021 coordinates.tsv
15M 12 19 2021 filtered_feature_bc_matrix.h5
601K 12 15 2021 genes.tsv
127M 12 15 2021 matrix.mtx
166B 12 19 2021 scalefactors_json.json
16M 12 19 2021 tissue_hires_image.png
1.4M 12 19 2021 tissue_lowres_image.png
184K 12 19 2021 tissue_positions_list.csv
这个文献对每个样品提供了Market Exchange Format (MEX) 和 Hierarchical Data Format (HDF5) 两种格式的表达量矩阵,这个时候我们一般来说会选择那个 filtered_feature_bc_matrix.h5 读取后分析即可。但是需要简单的制作一下文件夹目录结构如下所示:
代码语言:javascript复制 ST-colon1 % tree -h
[ 288] .
├── [ 192] Spatial
│ ├── [ 165] scalefactors_json.json
│ ├── [ 16M] tissue_hires_image.png
│ ├── [1.5M] tissue_lowres_image.png
│ └── [184K] tissue_positions_list.csv
├── [ 23M] filtered_feature_bc_matrix.h5
很清晰的,每个样品都是一个独立的文件夹,里面有一个h5文件,以及图片文件夹(Spatial),如下所示:
一个h5文件,以及图片文件夹(Spatial)
因为实在是太标准,所以读取它就一句话代码即可:
代码语言:javascript复制library(Seurat)
sceP = Load10X_Spatial(data.dir = "./inputs/ST-colon1/",
filename = "filtered_feature_bc_matrix.h5",
assay = "Spatial",
slice = "test")
理想是美好的,现实是骨感的
前面介绍10x的空间单细胞文件格式详解 的时候我们列出来了很多案例,其实更多的是没办法成功读取的, 比如2022的文章:《Different Molecular Features of Epithelioid and Giant Cells in Foreign Body Reaction Identified by Single-Cell RNA Sequencing》,给出来的空间单细胞文件是:
代码语言:javascript复制% ls -lh *|cut -d" " -f 7-
211M 5 17 2022 GSM6160936_vis01_Sponge-4.tif.gz
96K 5 13 2022 GSM6160936_visium_meta_data.txt.gz
6.6M 5 13 2022 GSM6160936_visium_raw_counts.txt.gz
可以看到,虽然说我们可以读取GSM6160936_visium_raw_counts.txt.gz去构建单细胞表达量矩阵对象,也可以读取GSM6160936_visium_meta_data.txt.gz看看具体的每个空间spot是什么细胞类型,它的属性,但是我们没办法读取 GSM6160936_vis01_Sponge-4.tif.gz这样的空间切片的图片信息。相当于就前功尽弃了,但是考虑到它有tif.gz这样的空间切片的图片信息,其实是可以从fastq文件开始, 走spaceranger定量流程,详情请见:空间单细胞的上游定量流程(spaceranger,10x技术)
学徒作业
在 PRJNA791135-SRA Links for BioProject (Select 791135) - SRA - NCBI 可以看到这个空间单细胞转录组的fastq文件,下载后,配套它的tif.gz这样的空间切片的图片走spaceranger定量流程,然后简单的处理它!做一个初步的降维聚类分群即可哈: