前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >单细胞实战(1)数据下载-数据读取-seurat对象创建

单细胞实战(1)数据下载-数据读取-seurat对象创建

原创
作者头像
单细胞指南
修改于 2023-08-26 00:05:38
修改于 2023-08-26 00:05:38
4.6K00
代码可运行
举报
运行总次数:0
代码可运行
这篇文章我们将介绍从geo数据库下载单细胞测序数据后,多种数据格式多样本情况下,如何读取数据并创建seurat对象。

本文主要结构:

一、数据下载

二、数据读取与seurat对象创建

  • 单样本情况下各种格式数据的读取,读取后seurat对象的创建
  • 多样本情况下各种格式数据的读取,读取后seurat对象的创建、合并

一、数据下载

大家自行去GEO官网(https://www.ncbi.nlm.nih.gov/gds)搜索下载自己想要的单细胞测序数据。本文后面会提供数据用于示例代码测试。

GEO数据库上提供的单细胞测序数据常见格式主要有以下几种:

  • 10x Genomics格式: matrix.mtx、genes.tsv和barcodes.tsv文件是10X Genomics单细胞转录组测序数据的标准文件格式。这些文件通常存储在一个目录中,可以使用Read10X函数从R语言中读取。
    • matrix.mtx:这是一个稀疏矩阵文件,其中包含了每个单细胞的基因表达信息。矩阵中的每一行代表一个基因,每一列代表一个单细胞,矩阵中的每个元素表示该基因在该单细胞中的表达量。
    • genes.tsv(或features.tsv):这是一个文本文件,其中包含了每个基因的信息。每一行代表一个基因,每一列代表一个属性,例如基因名称、基因编号等。
    • barcodes.tsv:这是一个文本文件,其中包含了每个单细胞的条形码信息。每一行代表一个单细胞,每一列代表一个属性,例如条形码序列、细胞类型等。
  • h5格式: 这是一种用于存储大规模数据的二进制文件格式,它可以包含多种数据类型,如矩阵、表格、图像等。
  • 压缩文本矩阵(TXT或CSV的GZ文件): 压缩文本矩阵可以用于存储单细胞测序数据的表达矩阵或元数据,它可以减少文件的大小和传输时间 。
  • h5ad格式: 它专门用于存储和分享单细胞表达数据,它使用Anndata库来创建和读取。h5ad格式可以与cellxgene或Seurat等工具兼容,进行单细胞数据的可视化和分析 。
  • h5seurat格式: 这是一种基于h5格式的文件格式,它专门用于存储和分析多模态单细胞和空间分辨率表达实验,如CITE-seq或10X Visium等技术。h5seurat格式可以与SeuratDisk等工具兼容,进行单细胞数据的读写 。
  • R数据文件(RDS/RDATA文件): 以R语言的数据文件格式存储表达式矩阵,需要R软件直接读取。

二、数据读取与seurat对象创建

单样本

单样本情况下每种格式的数据读取与seurat对象创建演示:

10x Genomics格式:

演示数据的下载:

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

文件下载后解压,并修改名称,存放路径如下图:

读取文件并创建对象的代码参考:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 导入Seurat包
library(Seurat)

# 查看当前工作目录
getwd()

# 设置工作目录(将工作目录切换到指定路径下)
setwd("D:/project/scRNA")

# 读取10x数据,data.dir参数指定存放文件的路径
seurat_data <- Read10X(data.dir = "./data/GSE234527/352")

# 创建Seurat对象
seurat_obj <- CreateSeuratObject(counts = seurat_data,
                                   project = "GSM7470392_352",
                                   min.features = 200,
                                   min.cells = 3)


# 查看Seurat对象的基本信息
seurat_obj

h5格式:

演示数据的下载:

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

下载后解压,存放路径如图

读取文件并创建对象的代码参考:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 导入Seurat包
library(Seurat)


# 查看当前工作目录
getwd()


# 设置工作目录(将工作目录切换到指定路径下)
setwd("D:/project/scRNA")


# 指定要读取的文件所在位置和文件名称
h5_file <- "./data/GSE200874/GSM6045825_wt_filtered_gene_bc_matrices_h5_1.h5"


# 读取h5格式的文件(使用Read10X_h5函数读取h5格式的单细胞数据文件)
seurat_data <- Read10X_h5(file = h5_file)


# 创建Seurat对象(使用CreateSeuratObject函数创建Seurat对象,并将读取的h5格式数据转换为Seurat对象)
seurat_obj <- CreateSeuratObject(counts = seurat_data,
                                   project = "GSM6045825_wt",
                                   min.features = 200,
                                   min.cells = 3)

# 查看Seurat对象的基本信息
seurat_obj

压缩文本矩阵(TXT或CSV的GZ文件):

这两种文件建议先手动加压到本地查看一下文件内容格式。

CSV压缩GZ格式演示数据的下载:

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

下载后文件的存放路径

CSV压缩GZ格式示例代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 导入Seurat包
library(Seurat)

# 查看当前工作目录
getwd()

# 设置工作目录(将工作目录切换到指定路径下)
setwd("D:/project/scRNA")

# 使用read.csv()函数从csv.gz格式的文件中读取数据,并将第一列作为行名
seurat_data<- read.csv(gzfile("./data/GSE130148/GSE130148_raw_counts.csv.gz"), row.names = 1)

# 使用CreateSeuratObject()函数创建Seurat对象,并在此处指定项目名称
seurat_obj <- CreateSeuratObject(counts = seurat_data,
                                   min.features = 200,
                                   min.cells = 3, 
                                   project = "GSE130148")

txt压缩GZ格式示例代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 导入Seurat包
library(Seurat)

# 查看当前工作目录
getwd()

# 设置工作目录(将工作目录切换到指定路径下)
setwd("D:/project/scRNA")

# 使用read.table()函数从txt.gz格式的文件中读取数据,并将第一列作为行名
seurat_data<- read.table(gzfile("./data/GSE130xxx/xxxx.txt.gz"), row.names = 1, header = TRUE, sep = "\t")

# 使用CreateSeuratObject()函数创建Seurat对象,并在此处指定项目名称
seurat_obj <- CreateSeuratObject(counts = seurat_data,
                                   min.features = 200,
                                   min.cells = 3, 
                                   project = "GSE130xxx")

h5ad格式:

下载测试文件:

https://www.dropbox.com/s/ngs3p8n2i8y33hj/pbmc3k.h5ad?dl=0

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 下载测试文件
# https://www.dropbox.com/s/ngs3p8n2i8y33hj/pbmc3k.h5ad?dl=0

# 导入所需的Rlibrary(Seurat)
# 安装SeuratDisk包
#remotes::install_github("mojaveazure/seurat-disk")
library(SeuratDisk)

# 查看当前工作目录
getwd()

# 设置工作目录(将工作目录切换到指定路径下)
setwd("D:/project/scRNA")

# 将h5ad格式文件转换为h5seurat格式文件,同时指定使用的assay为"RNA"
Convert("./data/pbmc/pbmc3k.h5ad", "h5seurat", overwrite = TRUE, assay = "RNA")

# 使用LoadH5Seurat()函数加载h5seurat格式文件,并创建Seurat对象
seurat_pbmc <- LoadH5Seurat("./data/pbmc/pbmc3k.h5seurat")

R数据文件(RDS/RDATA文件)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 使用load()函数读取RDATA文件
load("path/to/your/file.Rdata")

# 使用readRDS()函数读取RDS文件
my_data <- readRDS("path/to/your/file.rds")

多样本

多样本情况下我们主要关注10x Genomics格式和压缩文本矩阵(TXT或CSV的GZ文件)

10x Genomics格式多样本读取与对象创建

测试数据下载:

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

示例代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 导入Seurat包
library(Seurat)

# 查看当前工作目录
getwd()

# 设置工作目录(将工作目录切换到指定路径下)
setwd("D:/project/scRNA")

# 获取数据文件夹下的所有样本文件列表
samples <- list.files("./data/GSE234527")

# 创建一个空的列表来存储Seurat对象
seurat_list <- list()

# 读取每个样本的10x数据并创建Seurat对象
for (sample in samples) {
# 拼接文件路径
  data.path <- paste0("./data/GSE234527/", sample)

# 读取10x数据,data.dir参数指定存放文件的路径
  seurat_data <- Read10X(data.dir = data.path)

# 创建Seurat对象,并指定项目名称为样本文件名
  seurat_obj <- CreateSeuratObject(counts = seurat_data,
                                   project = sample,
                                   min.features = 200,
                                   min.cells = 3)

# 将Seurat对象添加到列表中
  seurat_list <- append(seurat_list, seurat_obj)
}

# 打印所有的Seurat对象列表
seurat_list

# 合并Seurat对象,将所有Seurat对象合并到一个对象中
seurat_combined <- merge(seurat_list[[1]], 
                         y = seurat_list[-1],
                         add.cell.ids = samples)
# 打印合并后的Seurat对象
print(seurat_combined)

h5格式多样本数据读入与对象创建:

测试数据下载:

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

下载后将数据解压:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 导入Seurat包
library(Seurat)

# 设置工作目录
setwd("D:/project/scRNA")

# 获取数据文件夹下的所有h5文件列表
h5_files <- list.files("./data/GSE200874", pattern = "\\.h5$")

# 创建一个空的列表来存储Seurat对象
seurat_list <- list()

# 循环读取每个h5文件的数据并创建Seurat对象
for (h5_file in h5_files) {
  # 拼接文件路径
  data.path <- paste0("./data/GSE200874/", h5_file)
  # 读取h5数据
  seurat_data <- Read10X_h5(filename = data.path)
  # 创建Seurat对象,并指定项目名称为文件名
  sample_name <- tools::file_path_sans_ext(basename(h5_file))
  seurat_obj <- CreateSeuratObject(counts = seurat_data,
                                   project = sample_name,
                                   min.features = 200,
                                   min.cells = 3)

  # 将Seurat对象添加到列表中
  seurat_list <- append(seurat_list, seurat_obj)
}

# 提取下划线前面的部分
sample_names <- sub("_.*", "", h5_files)
# 合并Seurat对象,将所有Seurat对象合并到一个对象中
seurat_combined <- merge(seurat_list[[1]],
                         y = seurat_list[-1],
                         add.cell.ids = sample_names)
# 打印合并后的Seurat对象
print(seurat_combined)

压缩文本矩阵(TXT或CSV的GZ文件)多样本:

下载测试文件:

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

下载三个数据演示一下代码

下载后解压:

示例代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

# 导入Seurat包
library(Seurat)

# 导入Seurat包
library(Seurat)

# 设置工作目录为存放数据文件的路径
setwd("D:/project/scRNA")

# 获取所有csv.gz文件的列表
file_list <- list.files("./data/GSE150578", pattern = "\\.csv\\.gz$")

# 创建一个空的列表来存储Seurat对象
seurat_list <- list()

# 循环读取每个csv.gz文件的数据并创建Seurat对象
for (file in file_list) {
  # 拼接文件路径
  data.path <- paste0("./data/GSE150578/", file)
  # 读取csv.gz文件数据
  seurat_data <- read.csv(gzfile(data.path), row.names = 1)

  # 创建Seurat对象,并指定项目名称为文件名(去除后缀)
  sample_name <- tools::file_path_sans_ext(basename(file))
  seurat_obj <- CreateSeuratObject(counts = seurat_data,
                                   project = sample_name,
                                   min.features = 200,
                                   min.cells = 3)
  # 将Seurat对象添加到列表中
  seurat_list <- append(seurat_list, seurat_obj)
}

# 提取下划线前面的部分
sample_names <- sub("_.*", "", file_list)
# 合并Seurat对象,将所有Seurat对象合并到一个对象中
seurat_combined <- merge(seurat_list[[1]],
                         y = seurat_list[-1],
                         add.cell.ids = sample_names)
# 打印合并后的Seurat对象
print(seurat_combined)

大家可以使用fread()等更高效的函数代替文中的read.csv()函数,但是要注意读取后数据格式是否准确。

参考链接:https://www.jianshu.com/p/5b26d7bc37b7

参考链接:https://mp.weixin.qq.com/s/M15kWdH8eDONfakNhY-enA

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
V5版seurat读取不同格式单细胞数据
在23年3月份的时候(下意识想说今年了hhh,恍然发现已经24年),菜鸟团作者就整理过不同格式的单细胞数据读取的方法,是基于V4版本的。
生信菜鸟团
2024/01/06
4.8K0
V5版seurat读取不同格式单细胞数据
使用Seurat的v5来读取多个10x的单细胞转录组矩阵
它虽然说是多样品,但是被作者整理成为了一个10x的样品的3文件格式, 所以很容易读取。接下来我们演示真正的Seurat的v5来读取多个10x的单细胞转录组矩阵。数据集在 https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE162616 可以看到作者给出来的矩阵还算是10X文件的3个标准文件,但是在每个样品下面都是3个文件,就是需要合理的修改文件名字而已:
生信技能树jimmy
2023/12/26
2.5K0
使用Seurat的v5来读取多个10x的单细胞转录组矩阵
精准的文献复现—seurat对象添加细胞亚群meta信息
CXCL9:SPP1 macrophage polarity identifies a network of cellular programs that control human cancers.
生信菜鸟团
2023/11/03
5.3K0
精准的文献复现—seurat对象添加细胞亚群meta信息
bioinfo09-10x数据格式及其导入为seurat对象
其中我们最关心的是raw_feature_bc_matrix,通常来说我们并不会使用cell ranger 的过滤方法,而是通过个性化的方案,进行过滤。
北野茶缸子
2022/05/19
1.1K0
bioinfo09-10x数据格式及其导入为seurat对象
单细胞转录组数据处理之上游分析流程
实际上你需要理解的就是10x数据和Smart-seq2技术啦,最常用而且最常见!上游分析流程我们分开讲解,在群主的7个小时的单细胞转录组视频课程(限时免费) 视频里面演示的其实是Smart-seq2技术的单细胞转录组数据处理,而且仅仅是半个小时的教学,其实是需要你有非常多的背景知识才可能看得懂。
生信技能树jimmy
2020/03/30
6.3K0
单细胞h5ad转成seurat对象后metadata信息丢失怎么办?(GSE156625)
https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE156625,下载下面的几个文件:
生信技能树
2025/03/20
1240
单细胞h5ad转成seurat对象后metadata信息丢失怎么办?(GSE156625)
常见不同单细胞类型数据读取及Seurat对象创建方法整理(单多样本/10X/h5/txt/csv/tsv)
需要把barcodes, features, matrix三个文件放入同一个文件夹中,这三个文件构成一个样本数据。
凑齐六个字吧
2024/09/06
2890
常见不同单细胞类型数据读取及Seurat对象创建方法整理(单多样本/10X/h5/txt/csv/tsv)
Seurat对象的构建和信息提取
公司在完成表达定量后,通常会使用 CellRanger 对数据进行简单的分析,得到以下三个文件。
小汪Waud
2023/02/16
2.7K0
Seurat对象的构建和信息提取
单细胞测序—不同格式的单细胞测序数据读写(多样本)
读写过程中需要将一个GSE数据集中多个样本的seurat对象合并成一个大的seurat对象
sheldor没耳朵
2024/08/25
1.1K0
单细胞测序—不同格式的单细胞测序数据读写(多样本)
scRNA-seq—读入数据详解
在量化基因表达之后,我们需要将该数据导入R,以生成用于执行QC的矩阵。在本课中,我们将讨论盘点数据可以采用的格式,以及如何将其读入R,以便我们可以继续工作流程中的QC步骤。我们还将讨论我们将使用的数据集和相关的元数据
生信技能树jimmy
2020/05/26
4.4K0
scRNA-seq—读入数据详解
使用Seurat的v5来读取多个不是10x标准文件的单细胞项目
但是留下来了一个悬念, 就是如果我们的单细胞转录组并不是10x的标准3文件,而是tsv或者csv或者txt等文本文件表达量矩阵信息,就有点麻烦了。接下来我们以2020的文章:《Single-Cell Transcriptome Analysis Reveals Dynamic Cell Populations and Differential Gene Expression Patterns in Control and Aneurysmal Human Aortic Tissue》举例说明,它的数据集是 https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE155468
生信技能树
2023/12/28
6781
使用Seurat的v5来读取多个不是10x标准文件的单细胞项目
bioinfo10-单细胞sce与seurat对象的导入、保存与互转
在[[11-10x数据导入为seurat对象]] 我们介绍了10x 数据导入seurat。但有时候,获得的数据并非是标准的10x 格式,比如raw 矩阵,该如何解决呢?或者,我们希望以sce 对象处理,毕竟单细胞R 中对象处理,并非seurat 一家独大。来探索一下吧。
北野茶缸子
2022/05/19
6.7K0
bioinfo10-单细胞sce与seurat对象的导入、保存与互转
脓毒症小鼠模型单细胞(中性粒细胞这么就丢了呢)
前些天我们公众号弄了一个活动,详见:春节期间单细胞转录组数据分析全免费,收到了上百个需求, 本来呢我们自己就算是春节前后14天不吃不喝不眠不休也不可能完成这么多单细胞数据处理。好在我灵机一动,想起来了前面两个月培养的一百多个在线实习生,毕竟教了他们R语言,转录组,以及单细胞转录组。 所以我写了一个还算是比较自动化的单细胞转录组数据处理代码,如果是我自己的,可以在十几分钟就完成复现文章的第一层次降维聚类分群图,比如数据集:https://www.ncbi.nlm.nih.gov/geo/query/acc.c
生信技能树
2023/02/27
4310
脓毒症小鼠模型单细胞(中性粒细胞这么就丢了呢)
单细胞专题 | 6.单细胞下游分析——不同类型的数据读入
单细胞专题 | 1.单细胞测序(10×genomics技术)的原理 单细胞专题 | 2.如何开始单细胞RNASeq数据分析 单细胞专题 | 3.单细胞转录组的上游分析-从BCL到FASTQ 单细胞专题 | 4.单细胞转录组的上游分析-从SRA到FASTQ 单细胞专题 | 5.单细胞转录组的上游分析-从FASTQ到count矩阵
DoubleHelix
2022/12/16
4.1K0
单细胞专题 | 6.单细胞下游分析——不同类型的数据读入
一步一个坑:单细胞数据的h5ad格式转换成R可读取对象
随手一搜,找到一个帖子:https://zhuanlan.zhihu.com/p/12861008987#:~:text=%E4%BD%BF%E7%94%A8%20SeuratDisk%20%E5%8C%85%E4%B8%AD%E7%9A%84%20LoadH5Seurat%20%E5%87%BD%E6%95%B0%E6%97%B6%E6%8A%A5%E9%94%99%EF%BC%9A,%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95%EF%BC%9A%20overwrite%20%3D%20TRUE%2Cassay%20%3D%20%22RNA%22%29
生信技能树
2025/02/20
7560
一步一个坑:单细胞数据的h5ad格式转换成R可读取对象
单细胞系列教程:质控(四)
在基因表达定量后,需要将这些数据导入到 R 中,以生成用于执行 QC(质控)。下面将讨论定量数据的格式,以及如何将其导入 R,以便可以继续工作流程中的 QC 步骤。
数据科学工厂
2023/01/25
1.1K0
单细胞数据分析 | 单细胞计数矩阵(Seurat)
在使用seurat进行单细胞分析的时候,大多数的教程都是用计数矩阵作为数据输入,但是我发现一些新手朋友对于不同数据库来源(GEO、BD)的数据或者想要去复现、借鉴一个感兴趣的文章中的下机数据时,不知道怎么把数据处理成Seurat可以读入的计数矩阵,所以本篇文章就详细介绍单细胞数据的上游分析。
天意生信云
2025/02/18
2310
单细胞数据分析 | 单细胞计数矩阵(Seurat)
读取h5ad格式的单细胞文件
万事开头难,考虑到很多小伙伴在做单细胞公共数据分析的时候往往是在第一个步骤读取作者上传的表达量矩阵去构建seurat对象就各种屏蔽,非常有必要把18种单细胞数据格式文件都给大家梳理一下 。 首先是,读
生信技能树jimmy
2022/01/17
9.3K1
读取h5ad格式的单细胞文件
胃癌单细胞数据集GSE163558复现(一):数据下载、整理与读取
Hello小伙伴们大家好,我是生信技能树的小学徒”我才不吃蛋黄“。接下来的一段时间里,将由我开启一个新的学徒分享系列,给大家系统整理单细胞测序的代码。此系列包括但不限于以下内容:数据下载与读取;质控和去批次;降维聚类;分群注释;差异分析;富集分析;拟时序分析;细胞通讯;CopyKAT。
生信技能树jimmy
2024/06/13
2.4K0
胃癌单细胞数据集GSE163558复现(一):数据下载、整理与读取
BD单细胞测序数据分析流程(全)
BD和10x是两种常见的单细胞测序技术平台。我们已经分享了很多的10x 测序的教程。
生信菜鸟团
2024/04/11
2.7K0
BD单细胞测序数据分析流程(全)
推荐阅读
相关推荐
V5版seurat读取不同格式单细胞数据
更多 >
LV.0
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档