差异表达基因热图怎么看_GEO芯片找差异表达基因 画火山图|数据挖掘

本文介绍了如何使用R包limma从芯片数据中找出差异表达基因,并详细阐述了limma的工作流程,包括核心步骤如线性模型构建、误差校正和结果导出。此外,还提及了绘制火山图来展示分析结果的重要性。

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

993a66f05a6a0e6d34e19eec6ca360bd.gif

今天讲讲如何从芯片数据中寻找到差异表达的基因。

首先,我们得知道为什么我们需要找这些差异表达的基因 (DEGs)。拿肿瘤来说,在肿瘤的发生发展过程中,很多平时沉默的基因开始高表达,而原本那些正常表达的基因,它们的表达量可能就会下调。也恰恰这些与平时正常基因表达量发生变化的基因,它们的存在启动了肿瘤的发生。所以,如果我们要研究肿瘤发生的机制,研究这些差异表达的基因是必不可少的。

今天介绍一下经典R包limma。limma既可以用于分析芯片数据,也可以分析NGS测序的数据,其核心是通过线性模型去估算不同分组中基因表达量的均值和方差,从而进行差异分析。

01

核心知识点

limma需要的输入文件有:
  • 表达矩阵 (exprSet)(这个容易获得),芯片数据可以通过exprSet(),常规的转录组可以通过read.csv(),read.table()等导入

  • 分组矩阵 (design) :就是将表达矩阵的列(各个样本)分成几组(例如最简单的case-control【通过model

### 差异表达基因(DEGs)筛选前的预处理步骤 #### 数据质量控制 在进行差异表达基因筛选之前,确保输入数据的质量至关重要。这通常涉及去除低质量细胞和特征(基因),以减少噪声并提高后续分析的有效性[^2]。 对于单细胞RNA测序(scRNA-seq)数据而言,具体操作可能包括但不限于: - **过滤细胞**:移除具有异常高比例线粒体读数、总UMI计数过少或过多以及检测到极少数基因表达水平的潜在死细胞或双倍体事件。 - **过滤基因**:排除那些在整个样本集中几乎不活跃或者表现出极高变异性的基因,因为这些可能是技术噪音而非生物学信号造成的偏差。 ```r # R代码示例用于Cell Ranger输出矩阵的质量控制(QC) library(Seurat) # 加载原始count matrix文件 sce <- Read10X(data.dir = "path/to/cellranger_output/") # 创建Seurat对象 seurat_obj <- CreateSeuratObject(counts = sce, project = "SampleProject", min.cells=3,min.features=200) # 进行初步QC统计计算 seurat_obj[["percent.mt"]] <- PercentageFeatureSet(seurat_obj, pattern = "^MT-", col.name = "percent.mt") VlnPlot(object = seurat_obj, features = c("nCount_RNA","nFeature_RNA","percent.mt"), ncol = 3) # 基于设定阈值来选择合格单元格 seurat_filtered <- subset(x = seurat_obj, subset = nFeature_RNA > 200 & nCount_RNA > 2000 & percent.mt < 15) ``` #### 归一化与批效应校正 为了使不同批次间的数据可比较,在完成上述基本清理之后还需要执行归一化处理,并考虑是否存在由实验条件变化引起的批量效应(batch effect)[^1]。可以采用诸如`sva`(Surrogate Variable Analysis)这样的工具来进行批效应回归调整,从而获得更加纯净且一致的表现型关联模式。 ```r # 使用sva包进行批效应估计与回归 library(sva) mod <- model.matrix(~condition, data = colData(seurat_filtered)) mod0 <- model.matrix(~1, data = colData(seurat_filtered)) # 计算代理变量(Surrogate Variables) svobj <- sva(as.matrix(GetAssayData(seurat_filtered)), mod, mod0)$sv # 将SV加入元数据框作为协变量重新拟合模型 colData(seurat_filtered)$sv_1 <- svobj[,1] colData(seurat_filtered)$sv_2 <- svobj[,2] # 更新设计矩阵包含新的混杂因素 new_mod <- model.matrix(~ condition + sv_1 + sv_2 ,data = colData(seurat_filtered)) ``` #### 可视化评估 最后一步是对经过预处理后的数据集进行全面可视化检查,确认各项指标均处于合理范围内后再继续下一步骤的工作流。例如绘制PCA观察样品聚类情况;利用展示各组内相似度等方法辅助判断整体结构合理性[^3]。 ```r # PCA降维投影查看主要成分分布状况 DimPlot(seurat_filtered,reduction="pca",group.by="orig.ident") # 构建层次聚类树形直观呈现个体间关系远近程度 HeatmapMatrix <- FetchData(seurat_filtered,"RNA_snn_res.0.8") %>% as.matrix() rownames(HeatmapMatrix) <- rownames(seurat_filtered@meta.data) heatmap(t(scale(t(HeatmapMatrix))), scale='none') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值