【有一才有二】scRNA-Seq数据分析第一步:数据载入方式的汇总

  • 一般情况下,我们下载得到的每个样本会有三个标准数据: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格式)

  • 分别读取
  • merge合并时合并在一起
## 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文件夹名即可。

你可能感兴趣的:(【有一才有二】scRNA-Seq数据分析第一步:数据载入方式的汇总)