首页 > 其他分享 >单细胞实战(1)数据下载-数据读取-seurat对象创建

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

时间:2023-08-02 18:22:06浏览次数:73  
标签:文件 seurat 读取 格式 数据 目录 下载

这篇文章我们将介绍从geo数据库下载单细胞测序数据后,多种数据格式多样本情况下,如何读取数据并创建seurat对象。

本文主要结构:
一、数据下载
二、数据读取与seurat对象创建

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

一、数据下载

大家自行去GEO官网(https://www.ncbi.nlm.nih.gov/gds) 搜索下载自己想要的单细胞测序数据。
本文后面会提供数据用于示例代码测试。
图片GEO数据库上提供的单细胞测序数据常见格式主要有以下几种:

  • 10x Genomics格式:这是一种由10x Genomics公司开发的专用文件格式,它包含三个子文件:barcodes.tsv、features.tsv和matrix.mtx。这三个文件可以用于存储单细胞测序数据的细胞条形码、基因特征和稀疏表达矩阵 。
  • 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
图片

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

图片

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

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")

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

h5格式:

演示数据的下载:https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE200874
图片

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

图片

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

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_counts <- Read10X_h5(file = h5_file)


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

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

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

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

CSV压缩GZ格式演示数据的下载:
https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=gse130148
图片

下载后文件的存放路径

图片

CSV压缩GZ格式示例代码:

library(Seurat)

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

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

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

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

txt压缩GZ格式示例代码:

library(Seurat)

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

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

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

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

h5ad格式:

下载测试文件:
https://www.dropbox.com/s/ngs3p8n2i8y33hj/pbmc3k.h5ad?dl=0

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

# 导入所需的R包
library(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文件)

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

图片

示例代码:

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)

# 将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 = names(seurat_list[-1]))

# 打印合并后的Seurat对象
print(seurat_combined)

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

测试数据下载:https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE200874

图片

下载后将数据解压:

图片

示例代码:

# 导入Seurat包
library(Seurat)

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

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

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

# 循环读取每个h5文件的数据并创建Seurat对象
for (h5_file in h5_files) {
# 读取h5数据
  seurat_data <- Read10X_h5(filename = h5_file)

# 创建Seurat对象,并指定项目名称为文件名
  sample_name <- tools::file_path_sans_ext(basename(h5_file))
  seurat_obj <- CreateSeuratObject(counts = seurat_data, project = sample_name)

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

# 合并Seurat对象,将所有Seurat对象合并到一个对象中
seurat_combined <- merge(seurat_list[[1]], y = c(seurat_list[[2]], seurat_list[[3]], seurat_list[[4]]))

# 打印合并后的Seurat对象
print(seurat_combined)

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

下载测试文件:https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi下载三个数据演示一下代码

图片

下载后解压:

图片

示例代码:

library(Seurat)

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

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

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

# 循环读取每个csv.gz文件的数据并创建Seurat对象
for (file in file_list) {
# 读取csv.gz文件数据
  data <- read.csv(gzfile(file), row.names = 1)

# 创建Seurat对象,并指定项目名称为文件名(去除后缀)
  sample_name <- tools::file_path_sans_ext(basename(file))
  seurat_obj <- CreateSeuratObject(counts = data, project = sample_name)

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

# 合并Seurat对象,将所有Seurat对象合并到一个对象中
seurat_combined <- merge(seurat_list[[1]],
                         y = c(seurat_list[[2]], seurat_list[[3]]))

# 打印合并后的Seurat对象
print(seurat_combined)

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


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

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

标签:文件,seurat,读取,格式,数据,目录,下载
From: https://www.cnblogs.com/bio77/p/17601452.html

相关文章

  • [转载]Vbox中自动挂载共享文件夹的读取
    转载自Ubuntu中文论坛本文只解决在使用共享文件夹时勾选自动挂载的选项自动挂载被勾选后,虚拟机会自动在目录/media下建立"sf_NAME"的挂载点,其中NAME为在Windows的Vbox中设置的共享文件夹的名称./media目录为Linux为了挂载外部存储设备而设立的目录问题就出在这个挂......
  • Docker数据迁移
    背景安装Docker后,所有数据默认存放在/var/lib/docker包括镜像,容器,网络,卷和插件等的数据都存储在这个目录下/var/lib/docker所在分区下存储空间不够,需要将/var/lib/docker所有数据转移到其他分区简介/var/lib/docker/目录中包括以下几个重要的子目录:containers/:这个目录包含......
  • 【C++数据结构】启航,打开新世界的大门!
    @TOC一、学习数据结构的原因学习数据结构对于计算机科学和软件开发非常重要,它提供了处理和组织数据的有效方法和技术。以下是几个学习数据结构的重要原因:提高问题解决能力:数据结构教会了我们如何选择和使用适当的数据结构来解决问题。了解各种数据结构的特性和性能可以帮助我们分......
  • Oracle备份数据
    存储过程CREATEORREPLACEPROCEDUREDATA_MIGRATION(endDayVARCHAR2)ISQUERY_SQLVARCHAR(10000);COM_STRVARCHAR(10000);BEGIN QUERY_SQL:='CREATETABLEGPS_OLD_'||REPLACE(endDay,'-','')||'ASSELECT*F......
  • 对Oracle数据库的一下操作脚本
    --进去oracle服务器数据库su-oraclesqlplus/assysdba--查看所有容器showpdbs--查看当前容器showcon_name;--打开相应容器alterpluggabledatabaseorclpdbopen;--切换容器altersessionsetcontainer=ORCLPDB1;--创建表空间,指定文件createtablespaceOPSCW_DAT......
  • aspx导出数据方法
    1、导出txtprivatestaticvoidExport(DataTabletb,stringfileName){HttpContext.Current.Response.Clear();stringFileName=fileName+".txt";HttpContext.Current.Response.Buffer=true;HttpContext.Current.Respons......
  • 数据安全:保障数字时代的宝贵财富
    随着数字化时代的到来,数据已经成为现代社会中最宝贵的财富之一。企业、组织和个人都依赖于数据来进行业务运营、决策制定和个人生活的方方面面。然而,随之而来的是数据泄露、黑客攻击、勒索软件等威胁也越来越严峻。因此,数据安全成为了当今社会一个至关重要的议题。数据泄露在保障数......
  • TU5028E网络故障监测终端连接云平台实时监测数据
    RTU5028E网络故障监测终端是一款功能强大且方便实用的设备,集合了断网、断电、网线故障报警功能。它支持同时监测多达7台网络设备,可以帮助用户快速定位远程网络设备离线的原因。此外,它还具备自动重启和远程重启网络设备的功能,为用户提供了更加便捷的操作方式。一、断网报警功能RTU50......
  • 【专题】智能家居的力量 报告PDF合集分享(附原数据表)
    全文链接:https://tecdat.cn/?p=33358智能家居行业目前已经基本实现了家用物联网的建设。为了满足用户个性化和弹性化的需求,智能家居3.0阶段着重于将云计算、边缘计算和人工智能等支持技术深化应用于智能家居产品中。阅读原文,获取专题报告合集全文,解锁文末74份智能家居行业相关报......
  • 【专题】智能家居品牌红人营销报告PDF合集分享(附原数据表)
    全文链接:https://tecdat.cn/?p=33358智能家居行业目前已经基本实现了家用物联网的建设。为了满足用户个性化和弹性化的需求,智能家居3.0阶段着重于将云计算、边缘计算和人工智能等支持技术深化应用于智能家居产品中。阅读原文,获取专题报告合集全文,解锁文末74份智能家居行业相关报......