- 示例數據: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(scRNA1@meta.data$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(scRNA2@meta.data$orig.ident) #查看每個樣本的細胞數
后續再針對多樣本對象進行單細胞流程分析