空间转录组数据处理:SeekSpace 拼片样本拆分方法
时长: 2 分钟
字数: 347 字
更新: 2026-02-28
阅读: 0 次
R
library(Seurat)
library(tidyverse)
library(Matrix)R
#base64转png图函数
Base64ToPng <- function(obj, width_px = 1000) {
for (i in seq_along(obj@misc$info)) {
for (j in c("img", "img_he")) {
val <- obj@misc$info[[i]][[j]]
if (is.null(val) || is.na(val)) next
b64 <- stringr::str_remove(val, '^data:[^;]*;base64,')
img_raw <- base64enc::base64decode(b64)
grob <- magick::image_read(img_raw) %>%
magick::image_resize(sprintf("%d>", width_px)) %>%
grid::rasterGrob(x = 0, y = 0,
width = grid::unit(1, "npc"), height = grid::unit(1, "npc"),
just = c(0, 0), interpolate = TRUE)
key <- if (j == "img") "img_gg" else "img_he_gg"
obj@misc$info[[i]][[key]] <<- grob
}
}
invisible(obj)
}R
obj <- readRDS(object)R
# 将base64转成PNG图
Base64ToPng(obj)R
meta <- read.table(metadata,sep = '\t',header = T, row.names = 1)R
obj <- AddMetaData(obj, meta)R
for (i in unique(obj@meta.data$Sample)){
dir.create(paste0(i,'_filtered_feature_bc_matrix'))
obj1 <- subset(obj, subset=Sample==i)
names(obj1@misc$info) <- i
data <- Embeddings(obj1, reduction = 'spatial') %>% as.data.frame()
colnames(data) <- c("X","Y")
data <-rownames_to_column(data, 'Barcode')
write_delim(data, paste0(i,'_filtered_feature_bc_matrix/cell_locations.tsv'), delim = '\t')
writeMM(obj1@assays$RNA@counts, file = paste0(i,'_filtered_feature_bc_matrix/matrix.mtx'))
data.frame(GeneID = rownames(obj1), Gene = rownames(obj1)) %>%
write.table(paste0(i,'_filtered_feature_bc_matrix/genes.tsv'), row.names = F, col.names = F, sep = '\t', quote = F)
data.frame(Barcode = colnames(obj1)) %>%
write.table(paste0(i,'_filtered_feature_bc_matrix/barcodes.tsv'), row.names = F, col.names = F, sep = '\t', quote = F)
saveRDS(obj1, paste0(i, ".rds"))
}output
Warning message in dir.create(paste0(i, "_filtered_feature_bc_matrix")):
“'KO_57_filtered_feature_bc_matrix' already exists”
Warning message in dir.create(paste0(i, "_filtered_feature_bc_matrix")):
“'KO_13_filtered_feature_bc_matrix' already exists”
“'KO_57_filtered_feature_bc_matrix' already exists”
Warning message in dir.create(paste0(i, "_filtered_feature_bc_matrix")):
“'KO_13_filtered_feature_bc_matrix' already exists”
R
