Seurat包合并多个单细胞样本

  • 示例数据:GSE139324有63个samples。
    https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE139324
    1
  • 我们选取其中十个,利用Seurat包下载合并,创建Seurat对象。

1、raw data改名、分组

  • 创建Seurat对象,每个样本都需要barcodes.tsv.gz、features.tsv.gz、matrix.mtx.gz三个文件。


    标准分组的三个文件
  • 多样本时,将每个样本的三个文件改成标准名,并放在独立的文件夹里。
  • 如下代码可针对任意数量的样本完成改名,分组。只需修改代码里的GSE139324_RAW/为自己的raw_data文件夹名即可。
fs=list.files('./GSE139324_RAW/','^GSM')
fs
library(tidyverse)
samples=str_split(fs,'_',simplify = T)[,1]

lapply(unique(samples),function(x){
  y=fs[grepl(x,fs)]
  folder=paste0("GSE139324_RAW/", str_split(y[1],'_',simplify = T)[,1])
  dir.create(folder,recursive = T)
  #为每个样本创建子文件夹
  file.rename(paste0("GSE139324_RAW/",y[1]),file.path(folder,"barcodes.tsv.gz"))
  #重命名文件,并移动到相应的子文件夹里
  file.rename(paste0("GSE139324_RAW/",y[2]),file.path(folder,"features.tsv.gz"))
  file.rename(paste0("GSE139324_RAW/",y[3]),file.path(folder,"matrix.mtx.gz"))
})

2、多样本合并

  • 有两种方法:一种是直接全部读入,创建对象;另一种方法是先对每个样本创建对象,再将所有对象合并为最终的对象。
library(Seurat)
samples=list.files("GSE139324_RAW/")
samples
dir <- file.path('./GSE139324_RAW',samples)
names(dir) <- samples
#合并方法1
counts <- Read10X(data.dir = dir)
scRNA1 = CreateSeuratObject(counts, min.cells=1)
dim(scRNA1)   #查看基因数和细胞总数
table([email protected]$orig.ident)  #查看每个样本的细胞数
#合并方法2
scRNAlist <- list()
for(i in 1:length(dir)){
  print(i)
  counts <- Read10X(data.dir = dir[i])
  scRNAlist[[i]] <- CreateSeuratObject(counts, min.cells=1)
}
scRNA2 <- merge(scRNAlist[[1]], y=c(scRNAlist[[2]], scRNAlist[[3]], 
                                    scRNAlist[[4]], scRNAlist[[5]], scRNAlist[[6]], scRNAlist[[7]], 
                                    scRNAlist[[8]], scRNAlist[[9]], scRNAlist[[10]]))
dim(scRNA2)   #查看基因数和细胞总数
table([email protected]$orig.ident)  #查看每个样本的细胞数

后续再针对多样本对象进行单细胞流程分析

你可能感兴趣的:(Seurat包合并多个单细胞样本)