本文主要结构:
一、数据下载
二、数据读取与seurat对象创建
大家自行去GEO官网(https://www.ncbi.nlm.nih.gov/gds)搜索下载自己想要的单细胞测序数据。本文后面会提供数据用于示例代码测试。
GEO数据库上提供的单细胞测序数据常见格式主要有以下几种:
单样本情况下每种格式的数据读取与seurat对象创建演示:
演示数据的下载:
https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE234527
文件下载后解压,并修改名称,存放路径如下图:
读取文件并创建对象的代码参考:
# 导入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
演示数据的下载:
https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE200874
下载后解压,存放路径如图
读取文件并创建对象的代码参考:
# 导入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
这两种文件建议先手动加压到本地查看一下文件内容格式。
CSV压缩GZ格式演示数据的下载:
https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=gse130148
下载后文件的存放路径
CSV压缩GZ格式示例代码:
# 导入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格式示例代码:
# 导入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")
下载测试文件:
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")
# 使用load()函数读取RDATA文件
load("path/to/your/file.Rdata")
# 使用readRDS()函数读取RDS文件
my_data <- readRDS("path/to/your/file.rds")
多样本情况下我们主要关注10x Genomics格式和压缩文本矩阵(TXT或CSV的GZ文件)
测试数据下载:
https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE234527
示例代码:
# 导入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)
测试数据下载:
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$")
# 创建一个空的列表来存储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)
下载测试文件:
https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi
下载三个数据演示一下代码
下载后解压:
示例代码:
# 导入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 删除。