美文网首页
单细胞ATAC数据的两种读取方式(下)

单细胞ATAC数据的两种读取方式(下)

作者: Cherrieg | 来源:发表于2024-08-14 17:23 被阅读0次

本期我们将来介绍如何使用Signac读入单细胞ATAC数据。
Signac是由Seurat同一团队开发的用于分析单细胞染色质数据的R包,能够分析包括scATAC-seq、scCUT&Tag和 scNTT-seq以及多模态数据集在内的染色质数据。
在上一期中,我们提到在单细胞ATAC下游分析中用到的主要文件包括filtered_peak_bc_matrixfiltered_peak_bc_matrix.h5fragments.tsv.gzsinglecell.csv。下面,我们就来看一下如何使用Signac读取标准的Cell Ranger的输出文件。
Signac使用Cell Ranger ATAC生成的峰/细胞矩阵和细胞元数据创建Seurat对象,并将磁盘上fragment文件的路径存储在Seurat对象中。

library(Signac)
library(Seurat)
library(EnsDb.Hsapiens.v86)
library(ggplot2)
library(patchwork)

counts <- Read10X_h5(filename = "/path/to/filtered_peak_bc_matrix.h5")
metadata <- read.csv(
  file = "/path/to/singlecell.csv",
  header = TRUE,
  row.names = 1
)

chrom_assay <- CreateChromatinAssay(
  counts = counts,
  sep = c(":", "-"),
  fragments = '/path/to/fragments.tsv.gz',
  min.cells = 10,
  min.features = 200
)

pbmc <- CreateSeuratObject(
  counts = chrom_assay,
  assay = "peaks",
  meta.data = metadata
)

如果我们想要复现一个公开的数据,而这个数据中又没有matrix.h5文件,该如何读入ATAC数据呢?此时我们就要使用filtered_peak_bc_matrix文件夹和Matrix::readMM()函数加载数据。

counts <- Matrix::readMM("/path/to/filtered_peak_bc_matrix/matrix.mtx")
barcodes <- readLines("/path/to/filtered_peak_bc_matrix/barcodes.tsv")
peaks <- read.table("/path/to/filtered_peak_bc_matrix/peaks.bed", sep="\t")
peaknames <- paste(peaks$V1, peaks$V2, peaks$V3, sep="-")

colnames(counts) <- barcodes
rownames(counts) <- peaknames

如果我们只有fragments.tsv.gz文件,又该如何读入呢?在这种情况下可以使用FeatureMatrix()函数创建计数矩阵。

fragpath <- '/path/to/fragments.tsv.gz'

# Define cells
# If you already have a list of cell barcodes to use you can skip this step
total_counts <- CountFragments(fragpath)
cutoff <- 1000 # Change this number depending on your dataset!
barcodes <- total_counts[total_counts$frequency_count > cutoff, ]$CB

# Create a fragment object
frags <- CreateFragmentObject(path = fragpath, cells = barcodes)

# First call peaks on the dataset
# If you already have a set of peaks you can skip this step
peaks <- CallPeaks(frags)

# Quantify fragments in each peak
counts <- FeatureMatrix(fragments = frags, features = peaks, cells = barcodes)

经由以上三种方式,我们就可以得到一个包含ATAC peak数据和fragment数据的Seurat对象。ATAC-seq数据存储在特定的ChromatinAssay中,其中还包含了motif、基因注释和基因组等额外信息。
我们还可以将基因注释信息添加到Seurat对象中,以便下游函数直接从Seurat对象中提取基因注释信息。

# extract gene annotations from EnsDb
annotations <- GetGRangesFromEnsDb(ensdb = EnsDb.Hsapiens.v86)

# change to UCSC style since the data was mapped to hg19
seqlevels(annotations) <- paste0('chr', seqlevels(annotations))
genome(annotations) <- "hg38"

# add the gene information to the object
Annotation(pbmc) <- annotations

这样,我们就使用Signac完成了对单细胞ATAC数据的读入。

参考资料:
https://www.10xgenomics.com/datasets/10k-human-pbmcs-atac-v2-chromium-x-2-standard
https://stuartlab.org/signac/articles/pbmc_vignette

相关阅读:
单细胞ATAC数据的两种读取方式(上)

相关文章

网友评论

      本文标题:单细胞ATAC数据的两种读取方式(下)

      本文链接:https://www.haomeiwen.com/subject/diuskjtx.html