Bioconductor R 生信包¶
一句话概述:Bioconductor 是 R 语言的生物信息学包仓库,收录 2200+ 个分析包,覆盖基因表达、变异注释、通路分析等,是 RNA-seq 差异分析(DESeq2、edgeR)的标准平台。
核心知识点¶
| 概念 | 白话解释 |
|---|---|
| BiocManager | 包管理器 = 安装/更新 Bioconductor 包的工具 |
| SummarizedExperiment | 标准数据结构 = 存储表达矩阵 + 样本信息 + 基因信息 |
| GRanges | 基因组区间 = 表示染色体上的位置(chr1:100-200) |
| Biostrings | 序列操作 = 处理 DNA/RNA/蛋白质序列的包 |
| AnnotationHub | 注释中心 = 获取基因注释数据的统一接口 |
安装配置¶
# 安装 BiocManager
install.packages("BiocManager") # 安装包管理器
# 安装 Bioconductor 核心包
BiocManager::install() # 安装/更新核心包
# 安装特定包
BiocManager::install("DESeq2") # 差异表达分析
BiocManager::install("edgeR") # 差异表达分析
BiocManager::install("clusterProfiler") # 富集分析
BiocManager::install("GenomicRanges") # 基因组区间
# 批量安装
BiocManager::install(c(
"DESeq2", "edgeR", "limma", # 差异分析
"clusterProfiler", "enrichplot", "DOSE", # 富集分析
"GenomicRanges", "Biostrings", "BSgenome" # 基因组操作
))
# 查看版本
BiocManager::version() # Bioconductor 版本
packageVersion("DESeq2") # 包版本
基本使用¶
DESeq2 差异表达分析¶
library(DESeq2) # 加载 DESeq2
# 准备数据
count_matrix <- read.csv("counts.csv", row.names = 1) # 读取计数矩阵
col_data <- data.frame(
condition = factor(c("control", "control", "treat", "treat")),
row.names = colnames(count_matrix) # 样本信息
)
# 创建 DESeq 对象
dds <- DESeqDataSetFromMatrix(
countData = count_matrix, # 表达矩阵
colData = col_data, # 样本信息
design = ~ condition # 实验设计(按条件分组)
)
# 运行差异分析
dds <- DESeq(dds) # 一步完成标准化+检验
res <- results(dds, contrast = c("condition", "treat", "control")) # 提取结果
# 筛选显著基因
sig_genes <- subset(res, padj < 0.05 & abs(log2FoldChange) > 1)
print(paste("显著差异基因数:", nrow(sig_genes))) # 打印数量
# 火山图
plotMA(res, ylim = c(-5, 5)) # MA 图
clusterProfiler 富集分析¶
library(clusterProfiler) # 加载包
library(org.Hs.eg.db) # 人类注释数据库
# 提取差异基因列表
gene_list <- rownames(sig_genes) # 基因名列表
# GO 富集分析
go_result <- enrichGO(
gene = gene_list, # 差异基因
OrgDb = org.Hs.eg.db, # 注释数据库
keyType = "SYMBOL", # 基因名类型
ont = "BP", # BP=生物过程
pAdjustMethod = "BH", # 校正方法
pvalueCutoff = 0.05 # P 值阈值
)
# KEGG 通路分析
kegg_result <- enrichKEGG(
gene = gene_ids, # Entrez ID
organism = "hsa", # 人类
pvalueCutoff = 0.05
)
# 可视化
dotplot(go_result, showCategory = 20) # 点图
barplot(go_result, showCategory = 15) # 条形图
高级用法¶
GenomicRanges 区间操作¶
library(GenomicRanges) # 加载包
# 创建基因组区间
gr <- GRanges(
seqnames = c("chr1", "chr1", "chr2"), # 染色体
ranges = IRanges(start = c(100, 200, 300), # 起始位置
end = c(150, 250, 400)), # 终止位置
strand = c("+", "-", "+") # 链方向
)
# 区间操作
findOverlaps(gr, peaks) # 找重叠区间
reduce(gr) # 合并重叠区间
subsetByOverlaps(gr, promoters) # 按重叠筛选
常见报错¶
| 报错信息 | 原因 | 解决方法 |
|---|---|---|
package not available | R 版本不兼容 | 升级 R 或用 BiocManager::install() |
no method for coercing | 数据类型错误 | 检查输入是否为 matrix/data.frame |
dispersion estimate failed | 样本太少或差异太小 | 至少需要 2 个生物学重复 |
organism not supported | 物种注释包未安装 | 安装对应的 org.*.db 包 |
速查表¶
# === 安装 ===
BiocManager::install("包名") # 安装
BiocManager::valid() # 检查更新
# === 常用包 ===
# 差异分析: DESeq2, edgeR, limma
# 富集分析: clusterProfiler, DOSE, enrichplot, fgsea
# 基因组: GenomicRanges, Biostrings, rtracklayer
# 注释: org.Hs.eg.db, AnnotationHub, biomaRt
# 可视化: ComplexHeatmap, EnhancedVolcano
# 单细胞: Seurat(CRAN), SingleCellExperiment, scran
# === DESeq2 核心流程 ===
# 1. DESeqDataSetFromMatrix() → 创建对象
# 2. DESeq() → 运行分析
# 3. results() → 提取结果
# 4. plotMA() / plotVolcano() → 可视化
参考:Bioconductor | DESeq2 | 更新于 2026 年