1. 讀入單個(gè)樣本
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,# 默認(rèn)filtered_feature_bc_matrix.h5文件為輸入
assay = "Spatial",
slice = samp,
filter.matrix = TRUE,
to.upper = FALSE)
#給cellid增加樣本名师痕,避免合并時(shí)barcode重復(fù)锦溪,不加的話Seurat會(huì)自動(dòng)給barcode加后綴避免重復(fù)
# 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) #合并樣本時(shí)必須都有SCT這個(gè)assay才能合并
seurat_data <- FindVariableFeatures(seurat_data) #合并后的數(shù)據(jù)hvg來(lái)自單樣本hvg數(shù)據(jù)
assign(prefix,seurat_data)
}
2. 合并數(shù)據(jù)
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"
這里補(bǔ)充一點(diǎn)更新:合并空間數(shù)據(jù)后hvg怎么處理预厌?
從github上參考作者回復(fù),有個(gè)函數(shù)來(lái)生成整體的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)合并后的數(shù)據(jù)如何刪除部分樣本
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]#需要手動(dòng)先看一下哪個(gè)model list是空的
(2)HE圖片背景不干凈如何修改后替換
需要注意??修圖后保存的時(shí)候圖片的長(zhǎng)寬要和原圖一致
可使用圖片預(yù)覽工具,上方打開(kāi)“工具-修改尺寸“
image.png
library(png)
#將修改好的圖片讀入
new_image <- readPNG(paste0("../HEimage_adjusted/",samp,".tissue_lowres_image.png"))
# 從image替換掉
visium_data[["Sample1"]]@image= new_image
(3)刪除部分spot
有時(shí)候會(huì)有少數(shù)spot脫離組織羡儿,散落在片子空白區(qū)域事示,我們不想將其納入分析早像。
-
可以使用10x軟件loupe browser讀取cloupe文件,手動(dòng)選取要?jiǎng)h除的spot肖爵,將其輸出保存未csv文件:
delete_spot.csv - 對(duì)樣本rds中對(duì)應(yīng)spot進(jìn)行刪除處理
del_spots <- read.csv("delete_spot.csv")
delspots <- del_spots$Barcode
sample1.f <- sample1[,setdiff(colnames(sample1),delspots)]