library(Seurat)
library(tidyverse)
library(Matrix)
dataset_loc <- "expression_tables_cellrangerV3" #此处改为自己的文件夹路径
ids <- c("UCD_Adj_VitE","UCD_Supp_VitE") #此处视自己的文件名来定
## 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)
注:如果自己没有h5格式的文件可以忽略此方法。
## 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)
注:同方法二,如果没有 “all.datatable.txt” 的文件,也可忽略此步骤。这里只是提供多种情况下的读入方法。(想尝试的话,方法一有生成 “all.datatable.txt” 的代码,不过要注意路径。)
## 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)
# 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)
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)
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,可以自行下载尝试。