本⽂档是关于寻因SeekSpace技术所得到的数据及其分析⽅法的说明。
寻因SeekSpace技术可以检测到单细胞精度的基因表达数据,同时也能定位出每个细胞在组织中的空间坐标。
SeekSpace的数据分析简便易学,能够很方便地兼容常见单细胞转录组的分析软件,例如seurat和scanpy。
本数据为基于SeekSpace技术的⼩⿏(8周龄)脑的空间数据。数据中包含9,333个细胞的单细胞转录组矩阵,空间坐标矩阵和组织DAPI染⾊图⽚。
SeekSpace技术的配套的基础数据处理的软件是SeekSpace tools,该软件可以从测序文库中识别细胞的表达信息,同时可以识别出每个细胞在空间上的位置。
经过SeekSpace tools软件处理之后所得到的结果文件格式如下:
├── filtered_feature_bc_matrix # 表达矩阵⽬录,可以使⽤seurat的Read10X命令进⾏读取
│ ├── barcodes.tsv.gz
│ ├── features.tsv.gz
│ └── matrix.mtx.gz
├── mouse_brain_aligned_cropped.png # 为⼩⿏脑组织切⽚的DAPI染⾊图⽚
├── seurat.ipynb # 为使⽤seurat分析该⼩⿏脑空间数据的jupyter示例⽂件
└── spatial_matrix.csv # 为⼩⿏脑测序数据中细胞的空间坐标⽂件。第1列是barcode,顺序与
matrix中的filtered_feature_bc_matrix/barcode中细胞的顺序⼀致;第2列和第3列分别为该barcode所代表的细胞的空间位置(即空间芯⽚上的像素坐标)。
SeekSpace技术中一个像素点的大小是约为 0.2653 微米,将像素点的坐标乘以 0.2653 即可转换计算细胞在真实空间上的距离。
这⾥以seurat软件为例,来介绍SeekSpace数据的分析。
具体步骤如下:
第⼀步,读取SeekSpace的矩阵⽂件,并聚类。
(这⾥的代码可以根据⾃⼰的⽬的进⾏修改,只要是符合seurat分析单细胞转录组的要求即可。)
library(Seurat)
library(dplyr)
library(base64enc)
这里直接使用seurat常用的读入和创建矩阵的方法即可。
mouse_brain.data <- Read10X('./filtered_feature_bc_matrix')
mouse_brain <- CreateSeuratObject(counts=mouse_brain.data,project='mouse_brain')
这里使用常见的默认参数进行降维聚类,实际分析的时候,可以按照样品的特征进行相应的修改。
mouse_brain <- NormalizeData(mouse_brain, normalization.method = "LogNormalize", scale.factor = 10000) %>%
FindVariableFeatures(selection.method = "vst", nfeatures = 2000) %>%
ScaleData() %>%
RunPCA() %>%
FindNeighbors(dims = 1:30) %>%
FindClusters(resolution = 0.8) %>%
RunUMAP(dims = 1:30)
接下来我们使用seurat的CreateDimReducObject函数,给seurat对象中的每个细胞添加一个空间的坐标。
注意!!
CreateDimReducObject函数读入空间坐标矩阵的细胞的顺序必须与mouse_brain里面的meta.data里面细胞的顺序相一致,否则在多样品整合分析的时候会出现细胞顺序错乱的情况。
这里我们使用了一个简单的一行代码对空间坐标矩阵进行了排序。
spatial_df <- read.csv('./spatial_matrix.csv', row.names = 1)
spatial_matrix <- as.matrix(spatial_df)
spatial_matrix_sorted <- spatial_matrix[match(row.names(mouse_brain@meta.data),row.names(spatial_matrix)), ]
mouse_brain@reductions$spatial <- CreateDimReducObject(embeddings = spatial_matrix_sorted, key='spatial_', assay='RNA')
经过这步处理之后,我们可以在seurat对象中看到一个新的坐标系”spatial“,这个坐标系即为每个细胞在空间位置上的坐标。
接下来我们再把细胞的注释结果添加到每个细胞上,这样我们就可以看不同的细胞类型在空间上的分布情况了。
SeekSpace细胞注释的过程,跟普通的单细胞注释的过程完全一致。
我们之前已经对demo数据进行了大群和亚群的注释,注释的结果文件放在了anntation.csv文件中。
接下来我们简单的读入处理一下。
anno <- read.csv("./annotation.csv",row.names = 1,header = TRUE)
mouse_brain$cell_bc <- row.names(mouse_brain@meta.data)
mouse_brain@meta.data <- left_join(mouse_brain@meta.data,anno,by = "cell_bc")
row.names(mouse_brain@meta.data) <- mouse_brain$cell_bc
mouse_brain %>% head
orig.ident | nCount_RNA | nFeature_RNA | RNA_snn_res.0.8 | seurat_clusters | cell_bc | Main.CellType | subcluster | |
---|---|---|---|---|---|---|---|---|
<fct> | <dbl> | <int> | <fct> | <fct> | <chr> | <chr> | <chr> | |
AAACCCATACATAGTGT | mouse_brain | 3185 | 1660 | 3 | 3 | AAACCCATACATAGTGT | Oligo | Oligo_2 |
AAACCCATACCGCTTCG | mouse_brain | 10962 | 3603 | 9 | 9 | AAACCCATACCGCTTCG | Ext | Ext_L56 |
AAACCCATACGCTCTAT | mouse_brain | 1695 | 988 | 2 | 2 | AAACCCATACGCTCTAT | Ext | Ext_L23 |
AAACCCATACTCATAGA | mouse_brain | 1303 | 867 | 6 | 6 | AAACCCATACTCATAGA | Ext | Ext_L56 |
AAACCCATACAAGCCTG | mouse_brain | 16009 | 4551 | 13 | 13 | AAACCCATACAAGCCTG | Ext | Ext_L5_2 |
AAACCCATACATTCGAA | mouse_brain | 17436 | 4947 | 9 | 9 | AAACCCATACATTCGAA | Ext | Ext_L56 |
AAACCCATACCTAGCCT | mouse_brain | 16651 | 4843 | 6 | 6 | AAACCCATACCTAGCCT | OPC | OPC_2 |
AAACCCATACGGCTGTG | mouse_brain | 2876 | 1639 | 17 | 17 | AAACCCATACGGCTGTG | Inh | Inh_6 |
AAACCCATACTCTCCTC | mouse_brain | 2255 | 1225 | 1 | 1 | AAACCCATACTCTCCTC | Ext | Ext_Unk_3 |
AAACCCATACACCAGCA | mouse_brain | 7682 | 2997 | 6 | 6 | AAACCCATACACCAGCA | Ext | Ext_L56 |
我们可以继续使用seurat包默认的一系列函数进行绘图
我们先绘制一些较为常见的图形,比如降维聚类图和基因表达的图。
DimPlot(mouse_brain) + DimPlot(mouse_brain, group.by = "Main.CellType")
FeaturePlot(mouse_brain, reduction = 'umap', features=c('Mbp','Mobp', 'Olig1','Plp1'), pt.size = 1)