多个单细胞样本数据的循环读取
2023-03-07 09:44:15 时间
上一期我们介绍了Seurat对象的构建方法,对于少数样本的数据时,我们可以采取将读取代码复制多遍以运行,如下所示。
library("Seurat")
scrna_data_ctrl <- Read10X("data/GSE96583/ctrl/")
ctrl <- CreateSeuratObject(
counts = scrna_data_ctrl,
min.cells = 3,
min.features = 200)
scrna_data_stim <- Read10X("data/GSE96583/stim/")
stim <- CreateSeuratObject(
counts = scrna_data_stim,
min.cells = 3,
min.features = 200)
# 将两个样本合并到一个list
Seurat_object_list <-list(ctrl = ctrl,stim = stim)
一旦样本量多起来,我们就需要更加高效的方式来读取数据。因此本期给大家介绍一下循环读取多个样本数据的方法~
循环读取
复制代码
我先放上代码,方便大家复制修改。
# 加载stringr包
library(stringr)# 加载所有的样本
sample_list = c(basename(list.dirs("data/GSE96583/",recursive = F)))
Object_list = list()
# 循环加载
for (sample in sample_list){
filedir = str_c("data/GSE96583/",sample)
scrna_data <- Read10X(filedir)
Seurat_object <- CreateSeuratObject(
counts = scrna_data,
min.cells = 3,
min.features = 200)
# 样本信息表添加sample列
Seurat_object[["sample"]] = sample
# 将Seurat对象放到之前创建好的空list中
Object_list[[sample]] = Seurat_object
}
分步讲解
加载所有的样本
sample_list = c(basename(list.dirs("data/GSE96583/",recursive = F)))
# 创建一个空列表
Object_list = list()
list.dirs()作为R基础包的函数,主要功能是查看当前目录的子目录。
# recursive参数决定了是否递归
list.dirs(path = ".", full.names = TRUE, recursive = TRUE)
> list.dirs()
[1] "." "./data" "./data/GSE45719" "./data/GSE96583" "./data/GSE96583/ctrl" "./data/GSE96583/stim"
[7] "./data/GSM2829942" "./data/GSM3489182" "./data/GSM3972018" "./papers" "./software"
basename()同样是R基础包的函数,主要功能是去掉所有的前缀。
> basename(list.dirs())
[1] "." "data" "GSE45719" "GSE96583" "ctrl"
[6] "stim" "GSM2829942" "GSM3489182" "GSM3972018" "papers"
[11] "software"
类似的还有dirname(),去掉所有的后缀。
> dirname(list.dirs())
[1] "." "." "./data"
[4] "./data" "./data/GSE96583" "./data/GSE96583"
[7] "./data" "./data" "./data"
[10] "." "."
循环加载
for (sample in sample_list){
# 路径的获取
filedir = str_c("data/GSE96583/",sample)
# 数据的读取
scrna_data <- Read10X(filedir)
# 对象的构建
Seurat_object <- CreateSeuratObject(
counts = scrna_data,
min.cells = 3,
min.features = 200)
str_c是stringr中的函数,主要功能是将多个字符型向量合并成一个字符型向量,这里指将"data/GSE96583/"这个路径与sample_list中的每一个元素进行合并,依次读取并构建Seurat对象。
添加sample列
在样本信息表中添加sample列以便后续流程中对数据的拆分和整合等。
# 样本信息表添加sample列
Seurat_object[["sample"]] = sample
以上。
相关文章
- 数据孤岛是业务效率的无声杀手
- 2023展望:新的一年将给大数据分析领域带来什么?
- 阿里云ADB基于Hudi构建Lakehouse的实践
- 大数据在医疗保健领域的使用案例
- 微软增加说明:KB5021751 更新扫描已经 / 即将过时 Office 过程中不会触碰用户隐私
- 2022 Gartner全球云数据库管理系统魔力象限发布 腾讯云数据库入选
- 场景化、重实操,分享一个实时数仓实践案例
- Arctic的湖仓一体践行之路
- 分布式计算MapReduce究竟是怎么一回事?
- 淘系数据模型治理优秀实践
- 大数据分析对医疗保健的影响
- 当我们说大数据Hadoop,究竟在说什么?
- 2022年及以后大数据的五个发展趋势
- 网易严选离线数仓治理实践
- 2023 年数据治理趋势
- 一份“靠谱”的年度经营计划,你学会了吗?
- 漫谈对大数据的思考
- 测试一下,读懂数据的能力,你有吗?
- 用艺术的眼光探索数据之美
- 聊聊数据分析成果如何落地