ComplexHeatmap热图样式分享-样本簇树聚类和基因表达量统计注释展示

本文介绍了如何利用R语言的ComplexHeatmap包创建包含样本簇聚类和基因表达量统计注释的热图。内容包括热图的基本绘制、测试数据集的准备、调色板的选择以及各种注释的添加,如样本簇编号、sample标签和基因表达量统计。通过阅读,读者可以掌握绘制此类热图的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

热图(Heatmap)作为展示基因表达模式最直观的工具。
它经常用在分子生物学文章里(尤其是microarray, RNA-seq相关论文)直观地呈现多样本多个基因的全局表达量变化,和呈现多样本或多基因表达量的聚类关系。

本文重点介绍如何用ComplexHeatmap::Heatmap的方法在热图上展示全样本的基因表达量情况的同时,在样本组水平上展示簇间的聚类关系(如果样本太多,则展示样本间的聚类关系将变得非常不直观)。
簇级聚类表达热图阅读本文你掌握一定的ComplexHeatmap绘图语法,以及收获热图样式代码一份。

###测试数据集准备

future::plan("multiprocess", workers = 6);options(future.globals.maxSize = 100000 * 1024^5) #设置任务多线程
##Data process >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
scRNA <- readRDS("test.RDS")  #加载Seurat对象数据
### 计算seurat_cluster间的 差异基因
markers <- FindAllMarkers(object = scRNA, only.pos = FALSE, min.pct = 0.25, logfc.threshold = 0.25)
### 挑选每个cluster top5 的基因画表达热图
select.features <- markers %>% group_by(cluster) %>% top_n(n = 5, wt = avg_log2FC) 
### 随机为 细胞样本分配一个模拟标签
scRNA@meta.data$sample <- sample(c("species.1","species.2","species.3","species.4"),size = ncol(scRNA),replace = T) 
### 提取Seurat绘制热图的矩阵数据
data <- Seurat::DoHeatmap(scRNA, features = select.features$gene, group.by = "seurat_clusters", group.bar = T, size = 4)$data 
### 提取细胞标识
cell.meta <- scRNA@meta.data %>% tibble::rownames_to_column(var="Cell") %>% 
  select(Cell,seurat_clusters,sample) %>% 
  arrange(seurat_clusters) %>% mutate(Identity = seurat_clusters)

### 长数据转换宽数据
counts <- data %>% select(!Identity) %>% 
  tidyr::pivot_wider(names_from =  Cell, values_from = Expression) %>%
<think>好的,我现在需要帮助用户了解如何用R语言比较不同样本中同种细胞基因表达水平的方法,特别是差异分析。首先,我得先理解用户的具体需求。用户提到了不同样本中的同种细胞,这可能涉及到单细胞RNA测序数据,或者可能是分选后的同种细胞在不同样本中的比较。根据用户提供的引用内容,尤其是引用[3],里面提到将不同细胞视为不同样本,但需要考虑细胞大类属性下的异质性。因此,用户可能是在处理单细胞数据,需要比较不同样本(例如处理组对照组)中同一类型细胞的基因表达差异。 接下来,我需要回忆常见的R包流程。根据引用[1]中的信息,提到使用R包进行RNA-seq差异表达分析,比如Salmon获取数据,转换为计数,进行质评估差异分析。但单细胞分析可能有不同的流程。常见的单细胞分析工具包括Seurat、scran、MAST等,而差异分析可能用DESeq2、edgeR、limma等,不过这些通常用于bulk RNA-seq。但在单细胞数据中,由于数据稀疏性,可能需要特别的方法。 用户需要比较不同样本中同种细胞的表达水平,所以可能需要先进行细胞类型注释,确保比较的是同一类细胞。例如,使用Seurat的聚类注释功能确定细胞类型后,再提取特定细胞类型在不同样本中的表达数据,进行差异分析。这里可能需要整合多个样本的数据,并考虑批次效应。 另外,引用[3]提到细胞亚群的异质性,所以分析时可能需要考虑细胞间的变异,或者使用混合效应模型。例如,MAST包可以处理单细胞数据的随机效应,如个体差异或批次效应。 现在,我需要整理步骤:数据预处理、细胞类型注释、数据整合(处理批次效应)、差异表达分析。每个步骤需要对应的R包函数。例如,Seurat用于单细胞数据处理,harmony或batchelor用于整合数据,DESeq2或MAST用于差异分析。但需要注意,单细胞数据通常使用负二项模型或零膨胀模型,而DESeq2可能需要将数据转换为伪批(pseudobulk),即合并同一样本同一细胞类型的计数,再进行差异分析。 此外,数据标准化过滤也很重要,比如去除低质细胞,归一化处理。在差异分析时,需考虑样本间的变异,使用适当的统计模型,并调整多重检验的p值。 最后,生成相关问题时要围绕用户的问题扩展,例如询问数据整合方法、细胞注释方法、差异分析工具的选择、结果可视化等。</think>### 分步解答:R语言比较不同样本中同种细胞基因表达水平的方法 #### **1. 数据准备与预处理** - **数据格式**:需包含基因表达矩阵(行为基因,列为细胞)、样本元数据(样本来源、处理条件等)细胞注释信息(细胞类型)[^3]。 - **R包加载**: ```R library(Seurat) library(scater) library(DESeq2) library(MAST) ``` #### **2. 细胞类型注释与筛选** - 使用`Seurat`聚类分群后,通过标记基因确定目标细胞类型: ```R seurat_obj <- FindClusters(seurat_obj, resolution = 0.5) seurat_obj <- RenameIdents(seurat_obj, '1' = 'T细胞') # 根据实际标记基因调整 target_cells <- subset(seurat_obj, idents = 'T细胞') ``` #### **3. 数据整合与批次校正** -样本间存在批次效应,使用`harmony`整合: ```R library(harmony) target_cells <- RunHarmony(target_cells, group.by.vars = "sample_id") ``` #### **4. 构建伪批(Pseudobulk)表达矩阵** - 将同一样本的同类型细胞表达,转换为类似bulk RNA-seq的结构: ```R pseudobulk_matrix <- AggregateExpression( target_cells, group.by = c("sample_id"), assays = "RNA", slot = "counts" )$RNA ``` #### **5. 差异表达分析** - **方法选择**: - **DESeq2**(适合样本较大): ```R dds <- DESeqDataSetFromMatrix(pseudobulk_matrix, colData = metadata, design = ~ condition) dds <- DESeq(dds) res <- results(dds, contrast = c("condition", "treatment", "control")) ``` - **MAST**(直接处理单细胞数据,支持随机效应): ```R sca <- SceToSingleCellAssay(target_cells) cond <- factor(colData(sca)$condition) zlm_res <- zlm(~ condition, sca) summary_cond <- summary(zlm_res, doLRT='condition_treatment') ``` #### **6. 结果可视化** - 火山: ```R EnhancedVolcano(res, lab = rownames(res), x = 'log2FoldChange', y = 'pvalue') ``` - (标记显著差异基因): ```R DoHeatmap(target_cells, features = top_genes) + theme_minimal() ``` --- ### § 相关问题 § 1. 如何选择单细胞数据整合方法(如Harmony vs Seurat CCA)? 2. 伪批分析是否会丢失单细胞分辨率?如何权衡? 3. 如何验证差异表达基因的生物学意义? 4. 处理低表达基因时需要注意哪些过滤标准? 5. 单细胞数据中零值过多如何影响差异分析? --- ### 引用说明 [^1]: RNA-seq差异表达分析流程需结合数据预处理与统计模型选择。 : 细胞类型注释需基于生物学特征,并考虑异质性对分析的影响。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

倪桦

有帮助的话请杯咖啡吧,谢谢!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值