单细胞|线粒体基因型和DNA可及性联合分析

简介: 单细胞|线粒体基因型和DNA可及性联合分析

引言

本研究分析了两组包含DNA可及性和线粒体突变信息的数据集,数据来自结直肠癌(CRC)患者的样本。

为了展示如何联合分析线粒体DNA变异和染色质可及性,将通过一个实例来说明,该实例涉及对来自原发性结直肠腺癌的细胞进行分析。这些细胞样本中包含了恶性上皮细胞和肿瘤内部浸润的免疫细胞。

导入 DNA 可及性数据

首先导入单细胞染色质可及性测序(scATAC-seq)数据,并按照scATAC-seq数据的标准分析流程,构建一个Seurat对象。

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

# load counts and metadata from cellranger-atac
counts <- Read10X_h5(filename = "CRC_v12-mtMask_mgatk.filtered_peak_bc_matrix.h5")
metadata <- read.csv(
  file = "CRC_v12-mtMask_mgatk.singlecell.csv",
  header = TRUE,
  row.names = 1
)

# load gene annotations from Ensembl
annotations <- GetGRangesFromEnsDb(ensdb = EnsDb.Hsapiens.v75)

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

# create object
crc_assay <- CreateChromatinAssay(
  counts = counts,
  sep = c(":", "-"),
  annotation = annotations,
  min.cells = 10,
  fragments = 'CRC_v12-mtMask_mgatk.fragments.tsv.gz'
)
crc <- CreateSeuratObject(
  counts = crc_assay,
  assay = 'peaks',
  meta.data = metadata
)

crc[["peaks"]]

## ChromatinAssay data with 81787 features for 3535 cells
## Variable features: 0 
## Genome: 
## Annotation present: TRUE 
## Motifs present: FALSE 
## Fragment files: 1

质控流程

能够对单细胞ATAC-seq(scATAC-seq)数据进行标准的质量评估,并依据这些评估指标剔除质量不佳的细胞。

# Augment QC metrics that were computed by cellranger-atac
crc$pct_reads_in_peaks <- crc$peak_region_fragments / crc$passed_filters * 100
crc$pct_reads_in_DNase <- crc$DNase_sensitive_region_fragments / crc$passed_filters * 100
crc$blacklist_ratio <- crc$blacklist_region_fragments / crc$peak_region_fragments

# compute TSS enrichment score and nucleosome banding pattern
crc <- TSSEnrichment(crc)
crc <- NucleosomeSignal(crc)

# visualize QC metrics for each cell
VlnPlot(crc, c("TSS.enrichment", "nCount_peaks", "nucleosome_signal", "pct_reads_in_peaks", "pct_reads_in_DNase", "blacklist_ratio"), pt.size = 0, ncol = 3)

# remove low-quality cells
crc <- subset(
  x = crc,
  subset = nCount_peaks > 1000 &
    nCount_peaks < 50000 &
    pct_reads_in_DNase > 40 &
    blacklist_ratio < 0.05 &
    TSS.enrichment > 3 & 
    nucleosome_signal < 4
)
crc

## An object of class Seurat 
## 81787 features across 1861 samples within 1 assay 
## Active assay: peaks (81787 features, 0 variable features)
##  2 layers present: counts, data

线粒体变异数据导入

接下来,将导入这些细胞的线粒体DNA变异数据,这些数据是通过mgatk工具进行量化的。Signac包中的ReadMGATK()函数使得mgatk的输出能够直接以适合于Signac后续分析的格式读入R语言环境中。在此过程中,将这些数据加载进来,并将其作为一个新检测添加到Seurat对象中。

# load mgatk output
mito.data <- ReadMGATK(dir = "crc/")

# create an assay
mito <- CreateAssayObject(counts = mito.data$counts)

# Subset to cell present in the scATAC-seq assat
mito <- subset(mito, cells = Cells(crc))

# add assay and metadata to the seurat object
crc[["mito"]] <- mito
crc <- AddMetaData(crc, metadata = mito.data$depth[Cells(mito), ], col.name = "mtDNA_depth")

可以查看每个细胞的线粒体测序深度,并根据线粒体测序深度进一步对细胞进行子集化。

VlnPlot(crc, "mtDNA_depth", pt.size = 0.1) + scale_y_log10()

# filter cells based on mitochondrial depth
crc <- subset(crc, mtDNA_depth >= 10)
crc

## An object of class Seurat 
## 214339 features across 1359 samples within 2 assays 
## Active assay: peaks (81787 features, 0 variable features)
##  2 layers present: counts, data
##  1 other assay present: mito

降维和聚类

接下来,将利用单细胞ATAC-seq(scATAC-seq)数据进行常规的降维和聚类分析,目的是识别不同的细胞群组。

crc <- RunTFIDF(crc)
crc <- FindTopFeatures(crc, min.cutoff = 10)
crc <- RunSVD(crc)
crc <- RunUMAP(crc, reduction = "lsi", dims = 2:50)
crc <- FindNeighbors(crc, reduction = "lsi", dims = 2:50)
crc <- FindClusters(crc, resolution = 0.7, algorithm = 3)

## Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
## 
## Number of nodes: 1359
## Number of edges: 63301
## 
## Running smart local moving algorithm...
## Maximum modularity in 10 random starts: 0.7329
## Number of communities: 6
## Elapsed time: 0 seconds

DimPlot(crc, label = TRUE) + NoLegend()

基因得分计算

为了更好地理解这些细胞群的特征并确定它们的细胞类型,将计算基因的活性得分,方法是将基因本体区域和启动子区域的DNA可及性进行累加。

# compute gene accessibility
gene.activities <- GeneActivity(crc)

# add to the Seurat object as a new assay
crc[['RNA']] <- CreateAssayObject(counts = gene.activities)

crc <- NormalizeData(
  object = crc,
  assay = 'RNA',
  normalization.method = 'LogNormalize',
  scale.factor = median(crc$nCount_RNA)
)

展示特定基因活性得分

在CRC数据集中,识别了以下不同细胞类型的标志性基因:

  • EPCAM:上皮细胞的标志
  • TREM1:髓系细胞的标志
  • PTPRC(也称为CD45):泛免疫细胞的标志
  • IL1RL1:嗜碱性粒细胞的标志
  • GATA3:T细胞的标志
DefaultAssay(crc) <- 'RNA'

FeaturePlot(
  object = crc,
  features = c('TREM1', 'EPCAM', "PTPRC", "IL1RL1","GATA3", "KIT"),
  pt.size = 0.1,
  max.cutoff = 'q95',
  ncol = 2
)

使用这些基因评分值,可以分配簇标识:

crc <- RenameIdents(
  object = crc,
  '0' = 'Epithelial',
  '1' = 'Epithelial',
  '2' = 'Basophil',
  '3' = 'Myeloid_1',
  '4' = 'Myeloid_2',
  '5' = 'Tcell'
)

在髓系细胞群中,发现有一个亚群表现出较低的峰值区域片段比例,整体线粒体测序覆盖度也不高,并且其核小体的排列模式与其他亚群有所区别。

p1 <- FeatureScatter(crc, "mtDNA_depth", "pct_reads_in_peaks") + ggtitle("") + scale_x_log10()
p2 <- FeatureScatter(crc, "mtDNA_depth", "nucleosome_signal") + ggtitle("") + scale_x_log10()

p1 + p2 + plot_layout(guides = 'collect')

观察到,大多数FRIP值较低的细胞属于髓系1群。这些细胞很可能是肿瘤内的粒细胞,它们在染色质可及性方面的富集程度相对较低。与此相似,这种细胞类型的核染色质包装方式也较为特殊,导致其mtDNA覆盖度略低于髓系2群。

识别有意义的mtDNA变异

接下来,可以确定线粒体基因组中在不同细胞间存在差异的位点,并根据这些变异在细胞中的出现频率将细胞分为不同的克隆型。Signac在识别高质量变异时,采用了原始mtscATAC-seq研究中建立的原则。

variable.sites <- IdentifyVariants(crc, assay = "mito", refallele = mito.data$refallele)
VariantPlot(variants = variable.sites)

上图清晰地展示了一组变异,这些变异具有较高的变异等位基因比率(VMR)和链一致性。理论上,高链一致性减少了等位基因频率受测序错误影响的可能性(这种错误通常只发生在一个链上,而不是另一个链上,这是由于前导核苷酸的内容和mtDNA基因分型中的一个常见错误)。另一方面,具有高VMR的变异更可能是克隆变异,因为这些变异的替代等位基因倾向于在特定细胞中聚集,而不是均匀分布在所有细胞中,后者则可能表明其他一些技术问题。

注意到,那些具有极低VMR和极高链一致性的变异是这个样本的同源变异。虽然这些变异在某些情况下可能具有研究价值(例如,在供体样本的去复用过程中),但对于推断亚克隆结构,它们并没有太大的用处。

根据这些标准,可以筛选出一组在不同细胞中表现出差异的、具有信息价值的线粒体变异。

# Establish a filtered data frame of variants based on this processing
high.conf <- subset(
  variable.sites, subset = n_cells_conf_detected >= 5 &
    strand_correlation >= 0.65 &
    vmr > 0.01
)

high.conf[,c(1,2,5)]

##          position nucleotide      mean
## 1227G>A      1227        G>A 0.0090107
## 6081G>A      6081        G>A 0.0031485
## 9804G>A      9804        G>A 0.0035833
## 12889G>A    12889        G>A 0.0217851
## 9728C>T      9728        C>T 0.0150412
## 16147C>T    16147        C>T 0.6582835
## 824T>C        824        T>C 0.0050820
## 2285T>C      2285        T>C 0.0034535
## 16093T>C    16093        T>C 0.0093126

一些关键点值得注意。首先,在12个变异中,有10个在群体中的出现频率不到1%。但是,16147C>T的频率大约为62%。将会认识到这是一个标记上皮细胞的克隆变异。此外,所有检测到的变异都是转换类型(A - G 或 C - T),而不是颠换类型(A - T 或 C - G)。这与对线粒体基因组中这些突变产生方式的认知相吻合。

计算变异等位基因频率

目前拥有存储在mito检测中的每个链的信息,这使得可以评估链的一致性。现在,已经确定了一组高可信度的信息变异,可以使用AlleleFreq()函数,为这些变异创建一个新的检测,包含每个细胞的链折叠等位基因频率计数。

crc <- AlleleFreq(
  object = crc,
  variants = high.conf$variant,
  assay = "mito"
)
crc[["alleles"]]

## Assay data with 9 features for 1359 cells
## First 9 features:
##  1227G>A, 6081G>A, 9804G>A, 12889G>A, 9728C>T, 16147C>T, 824T>C,
## 2285T>C, 16093T>C

展示变异分布

随着等位基因频率被存储为额外的检测数据,可以利用Seurat的标准功能来展示这些频率如何在不同细胞间分布。在这里,通过FeaturePlot()和DoHeatmap()展示了变异的一个子集,以便直观地理解它们的分布情况。

DefaultAssay(crc) <- "alleles"
alleles.view <- c("12889G>A", "16147C>T", "9728C>T", "9804G>A")
FeaturePlot(
  object = crc,
  features = alleles.view,
  order = TRUE,
  cols = c("grey", "darkred"),
  ncol = 4
) & NoLegend()

DoHeatmap(crc, features = rownames(crc), slot = "data", disp.max = 1) +
  scale_fill_viridis_c()

在这些选定的变异中,可以观察到一些有趣的分布模式。变异16147C>T几乎存在于所有的上皮细胞中,而且基本上只出现在上皮细胞内(少数例外情况也对应着UMAP和聚类结果不一致的案例)。这个变异的等位基因频率达到了100%,这强烈表明肿瘤的原始细胞在发生突变后进行了克隆性扩增。接着,至少发现了3个变异——1227G>A、12889G>A和9728C>T,它们主要特定于定义亚克隆的上皮细胞中。另外,包括3244G>A、9804G>A和824T>C在内的其他变异,特别在免疫细胞群体中被发现,这暗示这些变异可能源自一个共同的造血祖细胞(很可能位于骨髓中)。

相关文章
|
4月前
|
数据挖掘 数据库
略微学习一下二区4.5分纯生信,单基因肺结核叶酸基因集+泛癌分析
研究摘要: 一项发表于2023年《MEDIATORS OF INFLAMMATION》杂志的文章发现,RTP4基因可能成为诊断肺结核的新生物标志物。研究者通过分析GEO数据库中的多个微阵列数据集,使用WGCNA方法识别与肺结核和叶酸生物合成相关的基因模块。RTP4在健康与肺结核患者间的表达有显著差异,并且在抗结核治疗前后表达量变化。泛癌分析显示,RTP4在不同肿瘤类型中的表达与预后关联不一,提示其可能在多种癌症中具有重要功能。这些发现支持RTP4作为诊断工具的潜力,并为进一步研究其在结核病和癌症中的作用奠定了基础。
65 1
|
28天前
KDD 2024:零样本即可时空预测!港大、华南理工等发布时空大模型UrbanGPT
【8月更文挑战第21天】UrbanGPT是由香港大学等机构研发的时空大模型,针对城市管理中因数据稀缺导致的预测难题,通过时空依赖编码器与指令调整技术实现强大的泛化能力。此模型能在多种城市任务中无需样本进行准确预测,如交通流量和人群流动等,有效应对数据收集难的问题,在零样本场景下表现优异,为智慧城市管理提供了有力工具。[论文](https://arxiv.org/abs/2403.00813)
22 1
|
3月前
|
人工智能 安全 搜索推荐
1.8B参数,阿里云首个联合DNA、RNA、蛋白质的生物大模型,涵盖16.9W物种
【6月更文挑战第14天】阿里云发布首个集成DNA、RNA和蛋白质数据的生物大模型LucaOne,拥有1.8B参数,涉及16.9万物种。LucaOne通过few-shot learning技术和streamlined downstream architecture实现多生物语言统一处理,提升生物系统理解与分析能力。该模型将加速生物信息学研究,推动生物医学应用,但同时也引发生物数据安全、预测偏差及AI伦理法律等问题的讨论。[论文链接](https://www.biorxiv.org/content/10.1101/2024.05.10.592927v1)
155 3
|
4月前
|
存储 数据库
DNA 技术在刑侦勘探领域的应用概述
DNA 技术在刑侦勘探领域的应用概述
|
4月前
|
芯片
基因测序的原理是什么
基因测序的原理是什么
|
10月前
|
数据库
生信分析|基因组倍型鉴定
生信分析|基因组倍型鉴定
134 0
|
算法 芯片
DNA测序原理:illumina和Pacbio对比介绍
DNA测序原理:illumina和Pacbio对比介绍
DNA methyltransferase,DNMT
DNMT(DNA methyltransferase)是一种酶,主要负责将甲基基团(CH3)添加到DNA分子中特定的CpG位点上,从而实现DNA甲基化。DNMT在基因表达调控、细胞分化和疾病发生等方面具有重要作用。
53 1
|
数据可视化 数据挖掘 Python
跟着Science学数据分析:利用三代测序数据(PacBio)鉴定结构变异
跟着Science学数据分析:利用三代测序数据(PacBio)鉴定结构变异
|
机器学习/深度学习 运维 算法
时序分析五边形战士!清华提出TimesNet:预测、填补、分类、检测全面领先|ICLR 2023(2)
时序分析五边形战士!清华提出TimesNet:预测、填补、分类、检测全面领先|ICLR 2023
1278 0