前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何读取单细胞数据

如何读取单细胞数据

作者头像
生信技能树jimmy
发布2020-06-23 14:45:38
5.2K0
发布2020-06-23 14:45:38
举报
文章被收录于专栏:单细胞天地单细胞天地
代码语言:javascript
复制
library(Seurat)
library(tidyverse)
library(Matrix)

dataset_loc <- "expression_tables_cellrangerV3" #此处改为自己的文件夹路径
ids <- c("UCD_Adj_VitE","UCD_Supp_VitE") #此处视自己的文件名来定

读取单个文件

方式一:Read10X

代码语言:javascript
复制
## Read10X
seurat_data <- Read10X(data.dir = paste(dataset_loc, ids[1],"filtered_feature_bc_matrix", sep="/"))
seurat_obj <- CreateSeuratObject(counts = seurat_data)
# write.table(seurat_obj@assays$RNA@counts, "all.datatable.txt",sep="\t", quote=F, col.names=NA)

方式二:Read10X_h5

注:如果自己没有h5格式的文件可以忽略此方法。

代码语言:javascript
复制
## Read10X_h5
seurat_data <- Read10X_h5(file.path(dataset_loc, ids[1], "filtered_feature_bc_matrix.h5"), use.names = T)
seurat_obj <- CreateSeuratObject(counts = seurat_data)

方式三:read.table

注:同方法二,如果没有 “all.datatable.txt” 的文件,也可忽略此步骤。这里只是提供多种情况下的读入方法。(想尝试的话,方法一有生成 “all.datatable.txt” 的代码,不过要注意路径。)

代码语言:javascript
复制
## read matrix
matrix_data <- read.table(file.path(dataset_loc, ids[1], "all.datatable.txt"), sep="\t", header=T, row.names=1)
# dim(matrix_data)
# matrix_data[1:4,1:4]

seurat_obj <- CreateSeuratObject(counts = matrix_data)

方式四:readMM

代码语言:javascript
复制
# Read in `matrix.mtx`
counts <- readMM(gzfile(file.path(dataset_loc,ids[1],"filtered_feature_bc_matrix","matrix.mtx.gz")))

# Read in `genes.tsv`
genes <- read_tsv(gzfile(file.path(dataset_loc,ids[1],"filtered_feature_bc_matrix","features.tsv.gz")), col_names = FALSE)
gene_ids <- genes$X1

# Read in `barcodes.tsv`
cells <- read_tsv(gzfile(file.path(dataset_loc,ids[1],"filtered_feature_bc_matrix","barcodes.tsv.gz")), col_names = FALSE)
cell_ids <- cells$X1

# Create a sparse matrix for more efficient computation
counts <- as(counts, "dgCMatrix")

# Make the column names as the cell IDs and the row names as the gene IDs
rownames(counts) <- gene_ids
colnames(counts) <- cell_ids

seurat_obj <- CreateSeuratObject(counts = counts)

读取多个文件

方式一:do.call

代码语言:javascript
复制
d10x.data <- sapply(ids, function(i){
  d10x <- Read10X(data.dir = file.path(dataset_loc,i,"filtered_feature_bc_matrix"))
  colnames(d10x) <- paste(i,sapply(strsplit(colnames(d10x),split="_"),'[[',1L),sep="_")
  d10x
})

seurat_merge <- do.call("cbind", d10x.data) # for "dgCMatrix"
seurat_data <- CreateSeuratObject(seurat_merge, min.cells = 1, min.features = 1, names.field = 1, names.delim = "\\_") 
# table(Idents(seurat_data))
# head(seurat_data@meta.data)

方式二:merge

代码语言:javascript
复制
for (file in ids){
  seurat_data <- Read10X(data.dir = paste(dataset_loc, file,"filtered_feature_bc_matrix", sep="/"))
  seurat_obj <- CreateSeuratObject(counts = seurat_data, project = file)
  assign(file, seurat_obj)
}

# Create a merged Seurat object
merged_seurat <- merge(x = eval(parse(text=ids[1])), y = eval(parse(text=ids[2])), add.cell.id = ids)
# table(Idents(merged_seurat))
# head(merged_seurat@meta.data)

注:示例数据在https://share.weiyun.com/yqfUzaYK,可以自行下载尝试。

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

本文分享自 单细胞天地 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 读取单个文件
    • 方式一:Read10X
      • 方式二:Read10X_h5
        • 方式三:read.table
          • 方式四:readMM
          • 读取多个文件
            • 方式一:do.call
              • 方式二:merge
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档