空间转录组-多样本数据合并分析

1. 读入单个样本

for (samp in samples){
  prefix <- paste0("Data_",samp)
  sample.cr.dir <- paste0("Cellranger/",
                          samp,"/FF/outs/")
  seurat_data <- Load10X_Spatial(
        data.dir = sample.cr.dir,# 默认filtered_feature_bc_matrix.h5文件为输入
        assay = "Spatial",
        slice = samp,
        filter.matrix = TRUE,
        to.upper = FALSE)
  #给cellid增加样本名,避免合并时barcode重复,不加的话Seurat会自动给barcode加后缀避免重复
  # seurat_data <- RenameCells(seurat_data, add.cell.id = prefix) 
  seurat_data <- seurat_data[,seurat_data$nCount_Spatial>0]
  seurat_data$orig.ident <- samp
  seurat_data <- SCTransform(seurat_data,assay = "Spatial",verbose = FALSE) #合并样本时必须都有SCT这个assay才能合并
  seurat_data <- FindVariableFeatures(seurat_data) #合并后的数据hvg来自单样本hvg数据
  assign(prefix,seurat_data)
}

2. 合并数据

if (length(samples)>1){
    other <- ls(pattern="Data_")[-1]
    m <- function(x){eval(as.name(x))}
    data <- merge(x = get(ls(pattern="MergeData_")[1]),
                  y = c(lapply(X = other, function(x) m(x))))
  }
data$Sample <- data$orig.ident
merged.hvg <- c(lapply(X=ls(pattern="Data_"),function(x) VariableFeatures(x)))
VariableFeatures(data) <- unique(merged.hvg)
DefaultAssay(data) <- "SCT"

这里补充一点更新:合并空间数据后hvg怎么处理?
从github上参考作者回复,有个函数来生成整体的hvg

Yes, we do recommend running SCTransform on each object separately. For selecting variable features, you could either take an intersection or select using SelectIntegrationFeatures and then set VariableFeatures(merged_object) <- my_integration_features.
https://github.com/satijalab/seurat/issues/5761

Select integration features — SelectIntegrationFeatures • Seurat

object.list=list("T0"=t0,"T1"=t1,"T2"=t2,"T3"=t3)
hvgs <- SelectIntegrationFeatures(
  object.list,
  nfeatures = 2000,
  verbose = TRUE,
  fvf.nfeatures = 2000
)
VariableFeatures(data) <- unique(hvgs )

Tips

(1)合并后的数据如何删除部分样本

selected_sample_names <- c("Sample1","Sample2","Sample3","Sample4","Sample5","Sample6")
sample6 <- subset(sample7,cells = rownames(sample7@meta.data[sample7$Sample %in% selected_sample_names,]))
sample6@images <- sample6@images[selected_sample_names]
sample6[["SCT"]]@SCTModel.list <- sample6[["SCT"]]@SCTModel.list[1:6]#需要手动先看一下哪个model list是空的

(2)HE图片背景不干净如何修改后替换

需要注意⚠️修图后保存的时候图片的长宽要和原图一致
可使用图片预览工具,上方打开“工具-修改尺寸“


image.png
library(png)
#将修改好的图片读入
new_image <- readPNG(paste0("../HEimage_adjusted/",samp,".tissue_lowres_image.png")) 
# 从image替换掉
visium_data[["Sample1"]]@image= new_image

(3)删除部分spot

有时候会有少数spot脱离组织,散落在片子空白区域,我们不想将其纳入分析。

  • 可以使用10x软件loupe browser读取cloupe文件,手动选取要删除的spot,将其输出保存未csv文件:


    delete_spot.csv
  • 对样本rds中对应spot进行删除处理
del_spots <- read.csv("delete_spot.csv")
delspots <- del_spots$Barcode
sample1.f <- sample1[,setdiff(colnames(sample1),delspots)]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容