首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一键自动整理单细胞文件为标准的三个文件格式(GSE231755)

一键自动整理单细胞文件为标准的三个文件格式(GSE231755)

作者头像
生信技能树
发布2025-07-24 10:57:48
发布2025-07-24 10:57:48
14900
代码可运行
举报
文章被收录于专栏:生信技能树生信技能树
运行总次数:0
代码可运行

我们生信技能树的学员交流群中最近发现了一个大家问的比较多的问题,就是GEO数据库提供的不是标准的三个单细胞文件时,初学者读取起来就有点费劲,下面来看看学员问的这个数据,使用代码如何自动整理~

此外,我们生信技能树每个月都有一期带领初学者,0基础的生信入门培训,会有各种贴心的答疑,最新一期在8月4号,感兴趣的可以去看看呀:生信入门&数据挖掘线上直播课8月班

首先看一下数据背景

学员提到的数据根据单个样本编号很快就可以得到数据集的编号为:GSE231755

https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE231755

数据为3个文件,附件 GSE231755_RAW.tar的内容如下:

代码语言:javascript
代码运行次数:0
运行
复制
GSM7300098 Control
GSM7300099 1_week
GSM7300100 2_month

下载下来:

代码语言:javascript
代码运行次数:0
运行
复制
###
### Create: Jianming Zeng
### Date:  2023-12-31  
### Email: jmzeng1314@163.com
### Blog: http://www.bio-info-trainee.com/
### Forum:  http://www.biotrainee.com/thread-1376-1-1.html
### CAFS/SUSTC/Eli Lilly/University of Macau
### Update Log: 2023-12-31   First version 
### Update Log: 2024-12-09   by juan zhang (492482942@qq.com)
### 
rm(list=ls())
options(stringsAsFactors = F)
library(ggsci)
library(dplyr) 
library(future)
library(Seurat)
library(clustree)
library(cowplot)
library(data.table)
library(ggplot2)
library(patchwork)
library(stringr)
library(qs)
library(Matrix)

## 下载
# https://mp.weixin.qq.com/s/uEso7yRZB300MnMhSpXH_Q
library(GEOquery)
# filter_regex: 指定下载的
# fetch_files = F, 返回下载链接
getGEOSuppFiles(gse,fetch_files = T)

## 移动文件夹
# 解压缩获取数据
# 一般下载下来的都是tar结尾的压缩文件
untar("GSE231755_RAW.tar",exdir = "GSE231755_RAW")
list.files("GSE231755_RAW/")

现在GSE231755_RAW/的内容如下:

代码语言:javascript
代码运行次数:0
运行
复制
# [1] "GSM7300098_ctrl_barcodes.tsv.gz" "GSM7300098_ctrl_features.tsv.gz" "GSM7300098_ctrl_matrix.mtx.gz"   "GSM7300099_1W_barcodes.tsv.gz"  
# [5] "GSM7300099_1W_features.tsv.gz"   "GSM7300099_1W_matrix.mtx.gz"     "GSM7300100_barcodes.tsv.gz"      "GSM7300100_features.tsv.gz"     
# [9] "GSM7300100_matrix.mtx.gz"  

整理文件为每个样本一个文件夹:

代码语言:javascript
代码运行次数:0
运行
复制
## 整理文件夹
library(stringr)
# 列出所有文件
files <- list.files("GSE231755_RAW/",full.names = T)
files 

# 遍历文件并移动到对应的样本文件夹
for (file in files) {
# 提取样本名
#file <- files[1]
  sample_name <- gsub("_barcodes.tsv.gz|_features.tsv.gz|_matrix.mtx.gz","", basename(file))
# 创建样本文件夹(如果不存在)
  sample_folder <- file.path("GSE231755_RAW/", sample_name)
if (!dir.exists(sample_folder)) {
    dir.create(sample_folder, showWarnings = FALSE)
  }
# 移动文件到对应的样本文件夹
  target_file <- file.path(sample_folder, gsub(paste0(sample_name,"_"),"", basename(file)) )
  file.rename(file, target_file)
}
library(fs)
dir_tree("GSE231755_RAW/")

运行完后,得到的目录结构如下:

这就是标准的格式啦!

读取并创建seurat对象

使用seurat v5版本,读取并合并:

代码语言:javascript
代码运行次数:0
运行
复制
# 方式一:标准文件夹
###### step1: 导入数据 ######   
samples <- list.dirs("GSE231755_RAW/", recursive = F, full.names = F)
samples
scRNAlist <- lapply(samples, function(pro){
#pro <- samples[1]
print(pro)
  folder <- file.path("GSE231755_RAW//", pro)
  folder
  counts <- Read10X(folder, gene.column = 2)
  sce <- CreateSeuratObject(counts, project=pro, min.cells = 3)
return(sce)
})
names(scRNAlist) <-  samples
scRNAlist

# merge
sce.all <- merge(scRNAlist[[1]], y=scRNAlist[-1], add.cell.ids=samples)
sce.all <- JoinLayers(sce.all) # seurat v5
sce.all

# 查看特征
as.data.frame(sce.all@assays$RNA$counts[1:10, 1:2])
head(sce.all@meta.data, 10)
table(sce.all$orig.ident) 

library(qs)
qsave(sce.all, file="GSE231755/sce.all.qs")

结果如下:

是不是很简单,你学会了吗?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-07-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 首先看一下数据背景
  • 整理文件为每个样本一个文件夹:
  • 读取并创建seurat对象
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档