- 一般情况下,我们下载得到的每个样本会有三个标准数据:
barcodes.tsv
,features.tsv
,matrix.mtx
,
情况一:三个标准文件位于样本名称下
setwd("F:/My OneDrive Cloud/OneDrive/GSE156329_RAW")
rm(list=ls())
options(stringsAsFactors = F)
library(Seurat)
library(ggplot2)
library(clustree)
library(cowplot)
library(dplyr)
library(data.table)
# step1:读取表达矩阵文件,然后构建Seurat对象 ---------------------------------------------
samples = list.files('./')
samples
length(samples)
## set parameters
sceList = lapply(samples,function(samples){
CreateSeuratObject(counts = Read10X(samples),
min.cells = 3,
min.features = 200,
project = samples)
})
情况二:三个标准文件位于filtered_feature_bc_matrix
下
samples = list.files('./')
samples
length(samples)
dir <- file.path(paste0("./",samples,"/filtered_feature_bc_matrix"))
dir
names(dir) <- samples
## set parameters
sceList = lapply(dir,function(dir){
CreateSeuratObject(counts = Read10X(dir),
min.cells = 3,
min.features = 200,
project = samples)
})
情况三:混合情况下(既有三个标准文件,又有h5格式)
## 1.读入含有三个标准文件的样本
samples = list.files('./')
samples
length(samples)
samples=samples[c(-10,-12)] #去除h5格式样本
samples
dir <- file.path(paste0("./",samples,"/filtered_feature_bc_matrix"))
dir
names(dir) <- samples
sceList = lapply(samples,function(dir){
CreateSeuratObject(counts = Read10X(dir),
min.cells = 3,
min.features = 200,
project = samples)
})
length(sceList)
## 2.读入h5格式样本
PDAC_TISSUE_14 <- Read10X_h5("./PDAC_TISSUE_14/filtered_feature_bc_matrix.h5",use.names = T)
PDAC_TISSUE_16 <- Read10X_h5("./PDAC_TISSUE_16/filtered_gene_bc_matrices_h5.h5",use.names = T)
length(sceList)
## 3.add to sceList
sceList[[19]] <- CreateSeuratObject(PDAC_TISSUE_14, min.cells = 3, min.features = 200,
project = "PDAC_TISSUE_14")
sceList[[20]] <- CreateSeuratObject(PDAC_TISSUE_16, min.cells = 3, min.features = 200,
project = "PDAC_TISSUE_16")
length(sceList)
sceList
samples <- append(samples,c("PDAC_TISSUE_14","PDAC_TISSUE_16"))
length(samples)
samples
情况四:将下载后的scRNA-Seq文件归类整理
方法一:shell脚本
# 将同一组数据放在同一目录下
ls GSM* | awk -F '_' '{print $2"_"$3}'| uniq | while read i;do mkdir $i;mv *$i*gz $i;done
# 各自重命名
find -name "*barcodes.tsv.gz" | while read i;do mv $i $(dirname $i)/barcodes.tsv.gz;done
find -name "*genes.tsv.gz" | while read i;do mv $i $(dirname $i)/genes.tsv.gz;done
find -name "*matrix.mtx.gz" | while read i;do mv $i $(dirname $i)/matrix.mtx.gz;done
方法二:R语言
library(stringr)
fs=list.files('./','^GSM') # 列出当前目录下所有开头是GSM的文件
samples=str_split(fs,'_',simplify = T)[,1] # 获取四个样本信息
# 设置一个循环,对每个样本信息做同样的事:
## 1.找到包含这个样本的文件(用grepl)
## 2.设置对应的目录名(str_split+paste)然后创建目录(用dir.create)
## 3.将文件放到对应目录(采用的是file.rename)并重命名文件
lapply(unique(samples),function(x){
y=fs[grepl(x,fs)]
folder=paste(str_split(y[1],'_',simplify = T)[,2:3],
collapse = '')
dir.create(folder,recursive = T)
file.rename(y[1],file.path(folder,"barcodes.tsv.gz"))
file.rename(y[2],file.path(folder,"genes.tsv.gz"))
file.rename(y[3],file.path(folder,"matrix.mtx.gz"))
})
#多样本时,将每个样本的三个文件改成标准名,并放在独立的文件夹里。
#如下代码可针对任意数量的样本完成改名,分组。只需修改代码里的GSE139324_RAW/为自己的raw_data文件夹名即可。