148_表达矩阵反卷积方法总结¶
一句话概述¶
表达矩阵反卷积(Deconvolution)利用单细胞或预定义参考谱,从bulk RNA-seq数据中推断各细胞类型的比例或表达量,是肿瘤微环境、免疫学和组织异质性研究的核心计算方法。
核心知识点总览¶
| 知识点 | 说明 |
|---|---|
| 反卷积基本原理 | 将bulk表达看作各细胞类型表达的线性加权和,求解权重(比例) |
| 参考谱(Signature Matrix) | 各细胞类型特征基因的表达模式,是反卷积的"字典" |
| CIBERSORTx | 基于ν-SVR的经典方法,支持单细胞参考和batch校正 |
| MuSiC | 基于加权非负最小二乘,利用scRNA-seq的细胞层级信息 |
| BisqueRNA | 分为reference-based和marker-based两种模式 |
| SCDC | 集成多个scRNA-seq参考数据集,提升鲁棒性 |
| CDSeq | 无参考(reference-free)的完全盲反卷积方法 |
| dtangle | 基于标记基因的快速反卷积,不依赖完整参考谱 |
| 基准评估 | 使用模拟数据(pseudo-bulk)或流式验证反卷积精度 |
| 应用场景 | 肿瘤免疫浸润、组织组成变化、药物响应预测 |
各步骤详解¶
第一步:理解反卷积数学模型¶
白话解释: 一份bulk RNA-seq数据就像一杯混合果汁——你知道总体味道,但想知道苹果汁、橙汁、葡萄汁各占多少。反卷积就是根据各种纯果汁的"味道模板"(参考谱),反推混合比例。
技术原理: 反卷积的核心数学模型为线性混合模型:
$$M = S \times F$$
- M (m × n):bulk表达矩阵,m个基因 × n个样本
- S (m × k):签名矩阵(参考谱),m个基因 × k个细胞类型
- F (k × n):细胞比例矩阵(待求解)
约束条件:F的每列之和为1(比例之和为100%),且所有元素 ≥ 0。
代码示例:概念演示
# 简单线性模型演示
set.seed(42)
# 模拟3种细胞类型的参考谱 (100基因 × 3类型)
S <- matrix(abs(rnorm(300)), nrow = 100, ncol = 3)
colnames(S) <- c("T_cell", "Macrophage", "Fibroblast")
# 真实比例
true_fractions <- c(0.5, 0.3, 0.2)
# 生成模拟bulk表达 (加噪声)
bulk <- S %*% true_fractions + rnorm(100, sd = 0.1)
# 用非负最小二乘求解
library(nnls)
fit <- nnls(S, bulk)
estimated <- coef(fit) / sum(coef(fit)) # 归一化
names(estimated) <- colnames(S)
print(round(estimated, 3))
第二步:CIBERSORTx 反卷积¶
白话解释: CIBERSORTx是目前引用最多的反卷积工具,就像一个经验丰富的品酒师,不仅能分辨混合比例,还能考虑不同批次葡萄酒的差异(批次校正)。
技术原理: - 使用ν-支持向量回归(ν-SVR)求解反卷积 - 支持从scRNA-seq直接构建参考谱 - 提供三种分析模式: 1. Impute Cell Fractions:估计细胞比例 2. Impute Cell Expressions (group mode):推断各细胞类型在各样本组的基因表达 3. Impute Cell Expressions (high resolution):单样本级别的细胞类型表达
代码示例:
# CIBERSORTx 主要通过网页界面操作: https://cibersortx.stanford.edu/
# 但也可以使用Docker版本本地运行
# 1. 准备参考谱:从scRNA-seq生成签名矩阵
# 输入文件格式:基因 × 细胞类型的平均表达矩阵(tab-separated)
# 列名为细胞类型标签
# 2. 使用Docker运行 (命令行方式)
# docker pull cibersortx/fractions
# docker run -v /path/to/data:/src/data \
# -v /path/to/output:/src/outdir \
# cibersortx/fractions \
# --username your_email \
# --token your_token \
# --single_cell TRUE \
# --refsample sc_reference.txt \
# --mixture bulk_mixture.txt \
# --perm 100
# 3. 结果解读
results <- read.delim("CIBERSORTx_Results.txt")
head(results)
# 每行一个样本,每列一个细胞类型的比例
# 最后3列: P-value, Correlation, RMSE
重要参数说明:
# 关键参数
# --perm 100 : 置换检验次数(评估统计显著性)
# --QN TRUE : 分位数归一化(推荐用于微阵列数据)
# --absolute FALSE : FALSE=相对比例; TRUE=绝对模式(需要参考)
# --rmbatchSmode TRUE: S-mode批次校正(跨平台时推荐)
# --rmbatchBmode TRUE: B-mode批次校正(参考谱与bulk来自不同技术)
第三步:MuSiC 反卷积¶
白话解释: MuSiC的特色是"看人下菜碟"——它会根据基因在不同个体间表达是否稳定来调整权重。表达稳定的基因获得更高权重,不稳定的基因权重降低,这样估计更可靠。
技术原理: - 使用加权非负最小二乘(WNLS)框架 - 利用scRNA-seq中多个供体(subject)的信息 - 对每个基因赋予两层权重: - 跨细胞类型的方差(cell type variance) - 跨个体的方差(cross-subject variance) - 支持递归树形结构(tree-guided)进行层次反卷积
代码示例:
# 安装MuSiC
# devtools::install_github('xuranw/MuSiC')
library(MuSiC)
library(Biobase)
# 1. 准备数据:需要ExpressionSet格式
# 单细胞参考数据
sc.eset <- ExpressionSet(
assayData = as.matrix(sc_counts), # 基因 × 细胞 的counts矩阵
phenoData = AnnotatedDataFrame(sc_meta) # 需要包含 cellType 和 SubjectName 列
)
# bulk数据
bulk.eset <- ExpressionSet(
assayData = as.matrix(bulk_counts),
phenoData = AnnotatedDataFrame(bulk_meta)
)
# 2. 运行MuSiC反卷积
music_result <- music_prop(
bulk.eset = bulk.eset,
sc.eset = sc.eset,
clusters = "cellType", # 细胞类型列名
samples = "SubjectName", # 个体/样本列名
select.ct = c("T_cell", "B_cell", "Macrophage", "Fibroblast"), # 选择细胞类型
verbose = TRUE
)
# 3. 提取结果
estimated_props <- music_result$Est.prop.weighted
head(estimated_props)
# 4. 可视化
library(ggplot2)
library(tidyr)
props_df <- as.data.frame(estimated_props)
props_df$Sample <- rownames(props_df)
props_long <- pivot_longer(props_df, -Sample, names_to = "CellType", values_to = "Proportion")
ggplot(props_long, aes(x = Sample, y = Proportion, fill = CellType)) +
geom_bar(stat = "identity") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
labs(title = "MuSiC Deconvolution Results")
第四步:BisqueRNA 反卷积¶
白话解释: BisqueRNA提供两种模式:有参考谱(reference-based)和仅用标记基因(marker-based)。就像识别水果——要么用完整的水果图鉴,要么只凭几个关键特征(颜色、形状)。
技术原理: - Reference-based模式:利用scRNA-seq参考,通过转换(transformation)将单细胞数据投射到bulk空间 - Marker-based模式:仅需要已知的标记基因列表 - 核心创新:通过bulk和sc数据间的线性转换减少平台效应
代码示例:
# 安装
# devtools::install_github('cozygene/bisque')
library(BisqueRNA)
library(Biobase)
# === Reference-based模式 ===
# 准备单细胞和bulk的ExpressionSet
sc.eset <- ExpressionSet(
assayData = as.matrix(sc_counts),
phenoData = AnnotatedDataFrame(data.frame(
cellType = sc_labels,
SubjectName = sc_subjects,
row.names = colnames(sc_counts)
))
)
bulk.eset <- ExpressionSet(
assayData = as.matrix(bulk_counts),
phenoData = AnnotatedDataFrame(bulk_meta)
)
# 运行reference-based反卷积
res_ref <- ReferenceBasedDecomposition(
bulk.eset = bulk.eset,
sc.eset = sc.eset,
cell.types = "cellType",
subject.names = "SubjectName",
use.overlap = TRUE # 使用bulk和sc共有基因
)
print(res_ref$bulk.props)
# === Marker-based模式 ===
# 仅需标记基因列表
markers <- list(
T_cell = c("CD3D", "CD3E", "CD4", "CD8A"),
B_cell = c("CD19", "CD79A", "MS4A1"),
Macrophage = c("CD68", "CD163", "CSF1R")
)
res_marker <- MarkerBasedDecomposition(
bulk.eset = bulk.eset,
markers = markers
)
print(res_marker$bulk.props)
第五步:SCDC 集成多参考反卷积¶
白话解释: SCDC的哲学是"兼听则明"——如果有多套单细胞参考数据,与其只用一套,不如综合利用所有参考数据集,取长补短,得到更稳健的结果。
技术原理: - 基于ENSEMBLE思想整合多个scRNA-seq参考数据集 - 通过加权组合各参考的反卷积结果 - 权重由交叉验证或信息准则确定 - 当只有一个参考时退化为MuSiC风格的单参考反卷积
代码示例:
# 安装
# devtools::install_github('meichendong/SCDC')
library(SCDC)
library(Biobase)
# 准备多个参考数据集
sc.eset1 <- ExpressionSet(assayData = as.matrix(sc_counts1),
phenoData = AnnotatedDataFrame(sc_meta1)) # 参考数据集1
sc.eset2 <- ExpressionSet(assayData = as.matrix(sc_counts2),
phenoData = AnnotatedDataFrame(sc_meta2)) # 参考数据集2
bulk.eset <- ExpressionSet(assayData = as.matrix(bulk_counts),
phenoData = AnnotatedDataFrame(bulk_meta))
# SCDC集成反卷积
scdc_result <- SCDC_ENSEMBLE(
bulk.eset = bulk.eset,
sc.eset.list = list(ref1 = sc.eset1, ref2 = sc.eset2),
ct.varname = "cellType",
sample = "SubjectName",
ct.sub = c("T_cell", "B_cell", "Macrophage", "Fibroblast"),
search.length = 0.01 # 网格搜索步长
)
# 查看集成权重和比例
print(scdc_result$w_table) # 各参考数据集的权重
print(scdc_result$prop.est.mvw) # 最终估计比例
第六步:CDSeq 无参考反卷积¶
白话解释: CDSeq是"盲听"方法——不需要任何参考谱,直接从bulk数据中同时发现细胞类型和估计比例。类似于信号处理中的盲源分离。
技术原理: - 基于潜在狄利克雷分配(LDA)模型 - 将bulk RNA-seq类比为"文档",基因类比为"词汇",细胞类型类比为"主题" - 同时估计: 1. 细胞类型特异基因表达谱(gene-expression profiles, GEPs) 2. 细胞类型比例(sample-specific cell type proportions) - 需要预先指定细胞类型数目T
代码示例:
# 安装
# devtools::install_github("kkang7/CDSeq_R_Package")
library(CDSeq)
# 输入:bulk counts矩阵 (基因 × 样本)
bulk_matrix <- as.matrix(bulk_counts)
# 运行CDSeq
cdseq_result <- CDSeq(
bulk_data = bulk_matrix,
cell_type_number = 5, # 预估细胞类型数
mcmc_iterations = 700, # MCMC迭代次数
dilution_factor = 1, # 稀释因子
block_number = 6, # 块数(并行)
gene_length = gene_lengths, # 基因长度(用于TPM校正, 可选)
reference_gep = NULL # NULL表示无参考
)
# 结果
estimated_gep <- cdseq_result$estGEP # 估计的细胞类型表达谱
estimated_prop <- cdseq_result$estProp # 估计的细胞比例
# 细胞类型注释:将估计的GEP与已知marker比对
# 这一步需要手动或利用已知marker进行注释
第七步:dtangle 快速标记基因反卷积¶
白话解释: dtangle走的是"简单实用"路线——选好每种细胞类型的标记基因,快速计算比例。速度快,对大数据集友好。
技术原理: - 基于标记基因的线性模型 - 使用比例变换(log-ratio)来选择标记基因 - 标记基因选择策略:按表达差异度排序,取top n个 - 支持纯化参考谱或混合参考谱
代码示例:
# 安装
# install.packages("dtangle")
library(dtangle)
# 输入数据
# pure_samples: 纯化细胞类型的表达矩阵
# mixture: bulk混合样本的表达矩阵
# pure_samples和mixture需要在同一个矩阵中
# 合并数据
Y <- rbind(pure_samples, mixture_samples)
# 定义哪些行是纯参考
pure_indices <- list(
T_cell = 1:10, # 行1-10是纯T细胞
B_cell = 11:20, # 行11-20是纯B细胞
Macrophage = 21:30 # 行21-30是纯巨噬细胞
)
# 运行dtangle
dt_result <- dtangle(
Y = Y,
pure_samples = pure_indices,
n_markers = 50, # 每种细胞类型的标记基因数
data_type = "rna-seq", # 数据类型
marker_method = "ratio" # 标记基因选择方法
)
# 查看结果
head(dt_result$estimates) # 估计的细胞比例
dt_result$markers # 选择的标记基因
第八步:方法综合对比与选择¶
白话解释: 没有一种方法在所有场景下都最好。选择方法取决于你有什么数据、需要什么结果、以及计算资源。
方法对比表:
| 特征 | CIBERSORTx | MuSiC | BisqueRNA | SCDC | CDSeq | dtangle |
|---|---|---|---|---|---|---|
| 参考需求 | scRNA-seq或签名矩阵 | scRNA-seq(需多供体) | scRNA-seq或标记基因 | 多个scRNA-seq | 无参考 | 纯化参考或标记基因 |
| 算法核心 | ν-SVR | WNLS | 线性转换 | 集成WNLS | LDA | 线性模型 |
| 细胞类型表达 | 支持(高分辨率) | 不支持 | 不支持 | 不支持 | 支持(GEP) | 不支持 |
| 运行速度 | 中等 | 快 | 快 | 中等 | 慢(MCMC) | 最快 |
| 批次校正 | 内置S/B-mode | 通过权重缓解 | 内置转换 | 通过集成缓解 | 无 | 无 |
| 统计检验 | 置换检验P值 | 无 | 无 | 交叉验证 | 无 | 无 |
| 是否需要注册 | 是(网页版需token) | 否 | 否 | 否 | 否 | 否 |
| 语言 | R/Docker | R | R | R | R | R |
选择决策树代码:
# 方法选择建议逻辑
choose_deconv_method <- function(has_scrna, n_refs, need_gep, n_samples) {
if (!has_scrna) {
if (n_samples >= 20) return("CDSeq (无参考)")
else return("dtangle (标记基因) 或 CIBERSORT (LM22内置谱)")
}
if (n_refs > 1) return("SCDC (多参考集成)")
if (need_gep) return("CIBERSORTx (高分辨率模式)")
return("MuSiC 或 BisqueRNA (单参考)")
}
# 示例
choose_deconv_method(has_scrna = TRUE, n_refs = 1, need_gep = FALSE, n_samples = 50)
# [1] "MuSiC 或 BisqueRNA (单参考)"
第九步:基准评估与验证¶
白话解释: 反卷积结果是否准确?需要验证。常用方法包括:用模拟数据(pseudo-bulk)检验、与流式细胞术比较、多种方法交叉验证。
代码示例:构建pseudo-bulk进行评估
# 从scRNA-seq构建pseudo-bulk (已知比例)
library(Seurat)
# 假设已有Seurat对象 sc_obj, 细胞类型在 sc_obj$celltype
create_pseudobulk <- function(sc_obj, n_samples = 20, n_cells = 500) {
cell_types <- unique(sc_obj$celltype)
pseudo_list <- list()
true_props <- matrix(0, nrow = n_samples, ncol = length(cell_types))
colnames(true_props) <- cell_types
for (i in 1:n_samples) {
# 随机生成比例 (Dirichlet分布)
props <- rgamma(length(cell_types), shape = 2)
props <- props / sum(props)
true_props[i, ] <- props
# 按比例抽取细胞
cells_selected <- c()
for (j in seq_along(cell_types)) {
ct_cells <- WhichCells(sc_obj, expression = celltype == cell_types[j])
n_select <- round(props[j] * n_cells)
if (n_select > 0 & length(ct_cells) > 0) {
cells_selected <- c(cells_selected, sample(ct_cells, min(n_select, length(ct_cells))))
}
}
# 汇总为pseudo-bulk
pseudo_list[[i]] <- rowSums(GetAssayData(sc_obj, slot = "counts")[, cells_selected])
}
pseudo_bulk <- do.call(cbind, pseudo_list)
colnames(pseudo_bulk) <- paste0("Pseudo_", 1:n_samples)
return(list(bulk = pseudo_bulk, true_props = true_props))
}
# 创建pseudo-bulk
pb <- create_pseudobulk(sc_obj, n_samples = 30)
# 用各方法反卷积后与 pb$true_props 比较
# 评估指标:Pearson相关系数、RMSE、Lin's CCC
library(DescTools)
cor(estimated_props, pb$true_props) # Pearson相关
sqrt(mean((estimated_props - pb$true_props)^2)) # RMSE
CCC(estimated_props[,1], pb$true_props[,1]) # 一致性相关系数
实战命令¶
# === 环境准备 ===
# R包安装
Rscript -e '
install.packages(c("nnls", "dtangle", "DescTools"))
if (!require("BiocManager")) install.packages("BiocManager")
BiocManager::install(c("Biobase", "SingleCellExperiment"))
devtools::install_github("xuranw/MuSiC")
devtools::install_github("cozygene/bisque")
devtools::install_github("meichendong/SCDC")
devtools::install_github("kkang7/CDSeq_R_Package")
'
# === CIBERSORTx Docker版本 ===
docker pull cibersortx/fractions
docker run -v $(pwd)/data:/src/data -v $(pwd)/output:/src/outdir \
cibersortx/fractions \
--username your@email.com \
--token YOUR_TOKEN \
--single_cell TRUE \
--refsample sc_reference.txt \
--mixture bulk_mixture.txt \
--perm 100
# === 批量运行MuSiC反卷积脚本 ===
Rscript run_music.R --sc_data sc_eset.rds \
--bulk_data bulk_eset.rds \
--cell_types "T_cell,B_cell,Macrophage" \
--output music_results.csv
# === Pseudo-bulk基准评估 ===
Rscript benchmark_deconv.R --sc_obj seurat_obj.rds \
--n_pseudo 50 \
--methods "MuSiC,BisqueRNA,dtangle" \
--output benchmark_results.pdf
面试常问点¶
Q1:反卷积的基本数学模型是什么?¶
A: 反卷积基于线性混合模型 M = S × F。M 是 bulk 表达矩阵(m基因 × n样本),S 是签名矩阵(m基因 × k细胞类型),F 是待求解的比例矩阵(k细胞类型 × n样本)。约束条件是 F 的每列非负且和为1。不同方法的核心区别在于如何求解 F:CIBERSORTx 用 ν-SVR,MuSiC 用加权非负最小二乘,CDSeq 用 LDA 主题模型。
Q2:CIBERSORTx 的 S-mode 和 B-mode 批次校正有什么区别?¶
A: S-mode 校正的是签名矩阵(Signature matrix)中的批次效应——当单细胞参考和 bulk 数据来自不同技术平台时使用。B-mode 校正的是 bulk 混合数据本身的批次效应——当不同批次的 bulk 样本需要一起分析时使用。实践中,跨平台(如 scRNA-seq 参考 + 微阵列 bulk)时建议同时开启两者。
Q3:MuSiC 的"多供体加权"机制解决了什么问题?¶
A: 解决了基因在不同个体间表达波动导致反卷积不稳定的问题。如果一个基因在不同供体的同一细胞类型中表达变异很大(cross-subject variance高),说明这个基因不是一个可靠的"标记",MuSiC 会降低它的权重。反之,表达稳定的基因获得高权重。这比单纯使用所有基因或固定标记基因列表更鲁棒。
Q4:什么场景下应该选择无参考方法 CDSeq?¶
A: 当没有匹配的 scRNA-seq 参考数据时。例如:(1) 研究的组织/物种没有公开的单细胞数据;(2) 研究新的或罕见细胞类型,现有参考谱可能遗漏;(3) 想发现未知的细胞组分。但 CDSeq 需要较多样本(建议 ≥20),计算量大(MCMC),且估计的细胞类型需要人工注释。
Q5:如何验证反卷积结果的准确性?¶
A: 三个层面:(1) 模拟验证:从 scRNA-seq 构建 pseudo-bulk(已知真实比例),比较估计值与真实值的 Pearson 相关、RMSE、CCC;(2) 实验验证:将反卷积结果与流式细胞术(FACS)或免疫组化(IHC)定量结果比较;(3) 交叉验证:多种反卷积方法的结果是否一致——一致性高说明结果可靠。
Q6:反卷积估计的是"相对比例"还是"绝对含量"?¶
A: 大多数方法默认估计相对比例(各细胞类型之和 = 1)。CIBERSORTx 提供绝对模式(absolute mode),可以估计每种细胞类型的绝对丰度,但需要额外假设(如参考基因表达的绝对水平)。相对比例的陷阱在于:如果某种主要细胞类型比例变化大,其他所有细胞类型的相对比例都会受影响(组成性数据问题)。
Q7:参考谱的质量如何影响反卷积结果?¶
A: 参考谱质量是反卷积精度的第一决定因素。关键影响因素包括:(1) 细胞类型覆盖度——缺失的细胞类型会导致其信号被错误分配给其他类型;(2) 组织匹配度——不同组织中同一细胞类型的表达谱可能不同;(3) 技术平台匹配——scRNA-seq(3' vs 5' vs full-length)和 bulk RNA-seq 的技术偏差;(4) 参考数据量——细胞数太少会导致参考谱噪声大。
易错点¶
1. 输入数据未正确归一化¶
错误: 对 CIBERSORTx 输入 counts 而非 TPM/FPKM,或对 MuSiC 输入归一化后的数据而非 raw counts。 正确做法: CIBERSORTx 网页版建议使用 TPM 或 FPKM(非 log 转换);MuSiC 和 BisqueRNA 需要 raw counts 作为输入,内部会处理归一化。务必阅读每个工具的文档。
2. 签名矩阵中遗漏关键细胞类型¶
错误: 参考谱只包含免疫细胞,但 bulk 中含有大量上皮细胞或成纤维细胞。 后果: 遗漏细胞类型的信号会被错误分配给参考谱中的其他类型,所有估计值都不准确。 正确做法: 确保参考谱覆盖 bulk 中所有主要细胞类型,可以添加一个"其他"(other)类别。
3. 批次效应未处理¶
错误: 单细胞参考来自10x 3'数据,bulk来自Total RNA-seq,直接反卷积。 正确做法: 使用 CIBERSORTx 的 S-mode/B-mode 批次校正,或在构建参考谱时选择与 bulk 技术更匹配的单细胞数据。
4. CDSeq 细胞类型数目 T 设置不当¶
错误: 随意设置细胞类型数,或使用过大的 T 导致过拟合。 正确做法: 使用 BIC/AIC 等信息准则选择最优 T,或根据先验知识设置合理范围,多跑几个 T 比较结果稳定性。
5. 将反卷积比例直接用于因果推断¶
错误: 发现肿瘤组中 T 细胞比例低于正常组,直接结论"T 细胞减少导致肿瘤"。 正确做法: 反卷积给出的是关联性估计,受采样偏差和组成性数据影响。需要结合实验验证(FACS, IHC)和因果推断方法(如孟德尔随机化)。
6. 忽略置换检验的 P 值¶
错误: CIBERSORTx 结果中 P > 0.05 的样本仍纳入下游分析。 正确做法: P > 0.05 表示反卷积对该样本不可靠(模型拟合差),应检查原因(可能是样本质量差或参考谱不匹配)并考虑排除。
7. 混淆相对比例与绝对变化¶
错误: 组间某细胞类型的相对比例升高,结论为该细胞类型绝对数量增加。 正确做法: 相对比例是零和约束的——某类型比例升高可能是因为另一类型比例降低。需要用绝对模式或结合总细胞数信息来判断绝对变化方向。
补充知识¶
相关工具扩展¶
- TIMER2.0: 综合免疫反卷积平台,集成多种方法(TIMER, CIBERSORT, quanTIseq等)
- immunedeconv: R包,统一接口调用多种反卷积方法
- Scaden: 基于深度学习的反卷积(训练数据为模拟pseudo-bulk)
- BayesPrism: 贝叶斯框架反卷积,同时估计比例和细胞类型特异表达
- DWLS: 阻尼加权最小二乘法
- SPOTlight: 专门用于空间转录组的反卷积
数据资源¶
- LM22: CIBERSORTx 内置的22种免疫细胞签名矩阵(基于微阵列)
- Blueprint/ENCODE: 免疫细胞参考表观基因组数据
- Human Cell Atlas: 综合单细胞参考数据
- Tabula Sapiens/Muris: 人/小鼠多组织单细胞图谱
理论深化¶
- 组成性数据分析(CoDA):反卷积比例属于组成性数据(compositional data),各成分之和受约束。直接对比例做统计检验需要注意假阳性,推荐使用 CLR(centered log-ratio) 转换后再进行差异分析。
- 参考谱选择的bias-variance tradeoff:参考谱中包含更多细胞亚型(如CD4+ T 细分为Th1/Th2/Treg)可以提供更高分辨率,但也增加了参数数量和共线性风险。需要根据研究问题选择合适的粒度。
最新趋势¶
- 空间反卷积:将反卷积思想扩展到空间转录组(Visium等)的每个spot
- 多组学反卷积:利用DNA甲基化、染色质可及性等多组学数据进行联合反卷积
- 基于Transformer的方法:利用注意力机制捕捉基因间复杂关系进行反卷积