目录
- 引子:生信到底在干什么?
- 场景串讲:用三个故事把核心概念串起来
- 知识点与常见坑(Markdown 速查表)
- 数据来源:公共数据库生态
- 核心算法:它们是怎么来的?
- 关键指标的意义
- 如何指导生产(医学 / 农业 / 工业)
- 与哪些功能 / 学科关联?
- 经典问答 FAQ
- 最佳工程实践(反例 vs 正解)
- 心智模型:ASCII 线框简图
- 参考文献与资源
1. 引子:生信到底在干什么?
一句话定义:生物信息学 = 生物学问题 + 计算机算法 + 统计学推断。它的使命是把海量生物数据(DNA/RNA/蛋白/代谢物)翻译成可理解的生物学结论。
用一个比喻:
生信工程师就像图书馆的编目员 + 侦探。
测序仪给你一车撕碎的、带墨点的书页(reads),你的工作是:
① 把碎片拼回原书(组装 / 比对)
② 给每页贴标签、建目录(注释 / 功能分析)
③ 找出哪几页被涂改过、谁改的、改了有什么后果(变异检测 / 差异分析)
④ 最后写一份人话报告给生物学家(可视化 / 生物学解释)
2. 场景串讲:用三个故事把核心概念串起来
场景 A —— 「这坨 DNA 是什么物种?」(序列比对 + 数据库搜索)
故事情节:你从土壤里提取了未知微生物的 DNA,测了序,拿到一段 500bp 的序列。你想知道它可能是什么菌。
涉及的概念串:
原始序列 (FASTA) → BLAST 搜索 → 数据库命中 → E值/p值评估 → 同源推断
-
FASTA:纯文本序列格式,以
>开头写描述,后面是 ATCG 字符串。 - BLAST:「生物界的 Google」。把你的序列切成小片段(种子),去全球数据库里找相似的片段,再扩展成完整比对。
- E 值:在随机情况下,预期能撞上多少条「这么好或更好」的匹配。E 值越小越可信(E=0.001 意味着随机撞上的概率约千分之一)。
- 同源(Homology):你和老鼠某段 DNA 有 90% 相似 → 说明你们有共同祖先,功能大概率也保守。
🔑 比喻:BLAST 就像拿着一张碎纸片去图书馆,先找上面有几个字跟哪本书对得上(种子命中),再把那本书翻到对应位置核对全文(扩展比对)。
场景 B —— 「癌细胞里哪些基因被打开了?」(转录组 + 差异表达)
故事情节:你有一组肝癌组织 RNA-seq 数据 + 一组正常肝组织数据。要找出差异表达基因(DEGs),解释癌症机制。
涉及的概念串:
RNA-seq reads (FASTQ) → QC → 比对(STAR/HISAT2) → 定量(counts)
→ 归一化(TPM/DESeq2) → 差异分析 → 火山图 → GO/KEGG 富集
| 步骤 | 做什么 | 常用工具 |
|---|---|---|
| QC | 看测序质量、去接头 | FastQC, MultiQC |
| 比对 | reads 贴回参考基因组 | STAR, HISAT2 |
| 定量 | 数每个基因有多少 reads | featureCounts, Salmon |
| 差异分析 | 统计哪些基因显著变化 | DESeq2, edgeR, limma |
| 富集分析 | 变化基因富集到哪些通路 | clusterProfiler |
🔑 比喻:RNA-seq 就像数每篇文章被朗读的次数。正常肝和癌肝各放一台录音机,最后统计哪些文章的「朗读次数」在两组间差异最大——这些就是候选的「癌症相关基因」。
场景 C —— 「这个人的基因组里有没有致病突变?」(变异检测 + 临床解读)
故事情节:给一个患者做全外显子测序(WES),找致病变异。
涉及的概念串:
FASTQ → BWA 比对 → SAM/BAM → 排序/去重 → BQSR → HaplotypeCaller
→ VCF → VEP/ANNOVAR 注释 → ClinVar 判读 → 报告
- SNP / Indel:单碱基变异 / 插入缺失,最常见。
- VCF:变异结果的标准格式,每行一个变异位点。
- ClinVar:收录变异与疾病关联的数据库。
- GATK Best Practices:业界金标准流程(Broad 研究所制定)。
🔑 比喻:把基因组想象成一本书,变异检测就是逐字校对——找出哪几个字被打错了(SNP)、哪几行被多印或少印了(Indel),再查字典看这个错字会不会让句子意思完全变掉。
3. 知识点与常见坑
3.1 知识点速查表
| 概念 | 一句话解释 | 类比 |
|---|---|---|
| 基因组 (Genome) | 一个生物的全部 DNA 序列 | 整本百科全书 |
| 转录组 (Transcriptome) | 某一时刻细胞里所有 RNA | 今天被翻开的那些书页 |
| 蛋白质组 (Proteome) | 全部表达的蛋白质 | 工厂里正在干活的工人 |
| 代谢组 (Metabolome) | 全部小分子代谢物 | 工厂排出的废料/产品 |
| 表观组 (Epigenome) | DNA 甲基化/组蛋白修饰 | 书页上的便签和折角 |
| Read | 测序仪读出的短序列片段 | 碎纸片 |
| FASTQ | 带质量值的原始序列格式 | 碎纸片 + 每个字的清晰度评分 |
| BAM/SAM | 比对后的序列格式 | 碎纸片贴回原书后的位置记录 |
| VCF | 变异位点记录格式 | 勘误表 |
| Contig | 组装出的连续序列 | 拼好的几页连在一起的段落 |
| N50 | 组装连续性的指标 | 拼好的段落里「中位数长度」 |
| Coverage 深度 | 每个碱基被读到的平均次数 | 同一页被抄了几遍 |
| ORF | 开放阅读框,潜在编码区 | 一段看起来像「正文」的连续文字 |
| BLAST | 序列相似性搜索工具 | 图书馆查相似段落 |
| E 值 | 随机匹配期望数 | 「纯属巧合」的概率 |
| FDR / q 值 | 错误发现率校正 | 在 100 个「显著」结果里,预计有几个是假的 |
| log2FC | 差异倍数取 log2 | 上调 4 倍 = +2,下调 4 倍 = -2 |
| GO / KEGG | 功能注释 / 通路数据库 | 给基因贴「工种标签」/「流程图」 |
3.2 常见坑(避坑清单)
| ❌ 坑 | ✅ 正确做法 |
|---|---|
| 拿到数据直接分析,跳过 QC | 先 FastQC 看质量分布、GC、接头,再决定怎么修 |
| 把不同批次数据直接合并 | 先做 PCA / ComBat 校正批次效应 |
| 用 t 检验硬怼 RNA-seq 计数数据 | 用 DESeq2/edgeR(负二项分布)或先做正态性检验 |
| 只看 p 值,不看效应量 | 同时报告 log2FC / OR 值,判断「统计显著」是否「生物学重要」 |
| 富集分析用全基因组当背景 | 用与研究匹配的组织/条件特异性背景基因集 |
| 把相关性当因果 | 生信结果是假设生成器,需湿实验验证 |
| 只报阳性结果 | 阴性结果同样有价值,隐藏 = 学术不端 |
| 不记录软件版本 | 用 Conda/Singularity 锁版本,写进 README |
| 用 FPKM 做跨样本比较 | 改用 TPM 或 DESeq2 的标准化计数 |
| 盲目追求复杂模型(深度学习) | 小样本先用可解释模型(逻辑回归/决策树) |
4. 数据来源:公共数据库生态
4.1 三大核心仓库(INSDC 联盟,数据互相同步镜像)
┌─────────────────────────────────────────┐
│ INSDC 国际联盟 │
└────────┬───────────────┬───────────────┘
│ │
┌──────────────┴────┐ ┌─────┴──────────────┐
│ NCBI (美国) │ │ EBI (欧洲) │
│ GenBank · GEO │ │ ENA · UniProt │
│ SRA · RefSeq │ │ PDB · ArrayExpress │
└───────────────────┘ └─────────────────────┘
│ │
└─────────┬──────────────┘
│
┌─────────────┴─────────────┐
│ DDBJ (日本) │
│ INSDC 第三镜像 │
└──────────────────────────────┘
4.2 常用数据库一览
| 数据库 | 宿主 | 存什么 | 网址 |
|---|---|---|---|
| GenBank | NCBI | 核酸序列(公开提交) | ncbi.nlm.nih.gov/genbank |
| RefSeq | NCBI | 人工审校的参考序列 | ncbi.nlm.nih.gov/refseq |
| ENA | EBI | 欧洲核酸档案(含 SRA 镜像) | ebi.ac.uk/ena |
| GEO | NCBI | 基因表达数据(芯片 + 测序) | ncbi.nlm.nih.gov/geo |
| SRA | NCBI | 原始测序 reads | ncbi.nlm.nih.gov/sra |
| UniProt | EBI | 蛋白质序列与功能 | uniprot.org |
| PDB | RCSB | 蛋白质 3D 结构 | rcsb.org |
| dbSNP | NCBI | 单核苷酸多态性 | ncbi.nlm.nih.gov/snp |
| ClinVar | NCBI | 变异-疾病关联 | ncbi.nlm.nih.gov/clinvar |
| KEGG | 日本 | 代谢通路图 | kegg.jp |
| Reactome | 国际 | 精选通路 | reactome.org |
| Ensembl | EBI/Sanger | 基因组浏览器 + 注释 | ensembl.org |
| UCSC Browser | 加州大学 | 基因组浏览器 | genome.ucsc.edu |
| AlphaFold DB | EBI | AI 预测蛋白质结构 | alphafold.ebi.ac.uk |
4.3 数据格式速记
| 格式 | 内容 | 类比 |
|---|---|---|
| FASTA |
>描述\nATCG... 纯序列 |
只有文字,没有页码 |
| FASTQ | 序列 + Phred 质量值 | 文字 + 每个字的清晰度打分 |
| SAM/BAM | 比对结果(文本/二进制) | 碎纸片在原书的位置坐标 |
| VCF | 变异位点 | 勘误表 |
| GTF/GFF | 基因结构注释 | 目录索引 |
| BED | 区间信息 | 书签 |
5. 核心算法:它们是怎么来的?
5.1 序列比对算法家族
动态规划双雄(精确但慢)
| 算法 | 用途 | 思想 | 复杂度 |
|---|---|---|---|
| Needleman-Wunsch | 全局比对(全长对齐) | 动态规划填表,找全局最优 | O(n×m) |
| Smith-Waterman | 局部比对(找相似片段) | 动态规划 + 负值归零 | O(n×m) |
💡 为什么需要两种? 全局比对适合「两段高度相似的同源基因比一比」;局部比对适合「在 30 亿碱基的基因组里找一个 200bp 的保守结构域」。
打分矩阵是比对的核心「字典」:
- PAM(Point Accepted Mutation):基于进化模型,适合远缘比较。
- BLOSUM(BLOcks SUbstitution Matrix):基于实际序列块统计,BLOSUM62 是 BLAST 默认。
启发式三剑客(快但近似)
| 算法 | 核心思想 | 速度 | 典型用途 |
|---|---|---|---|
| FASTA | 哈希表查短词 → 动态规划精修 | 中 | 早期数据库搜索 |
| BLAST | 种子命中 → 扩展 → 统计评估 | 快 | NCBI 在线搜索 |
| BLAT | 给数据库建索引(反向思路) | 很快 | UCSC 浏览器内搜索 |
BWT 系(应对 NGS 海量短读长)
| 工具 | 基础 | 特点 |
|---|---|---|
| Bowtie / Bowtie2 | Burrows-Wheeler Transform | 极快、内存小,适合短读长 |
| BWA / BWA-MEM | BWT + 种子扩展 | 比对准确,GATK 流程标配 |
| STAR | 后缀数组 | 支持剪接比对,RNA-seq 首选 |
🔑 BWT 比喻:把整本参考基因组压缩成一棵「可快速查找的字典树」。查询时不用逐字扫描全书,而是像查字典一样按字母顺序快速定位。
5.2 BLAST 算法详解(种子-扩展策略)
┌──────────────────────────────────────────────────────────────┐
│ Step 1 建库索引 │
│ 把数据库序列切成所有长度为 W 的短词 (k-mer),建哈希表 │
├──────────────────────────────────────────────────────────────┤
│ Step 2 种子命中 (Seeding) │
│ 在 Query 上滑窗取短词,查哈希表,找到 DB 中匹配位置 │
│ 仅保留得分 ≥ 阈值 T 的命中 │
├──────────────────────────────────────────────────────────────┤
│ Step 3 扩展 (Extension) │
│ 从种子向两端延伸,用打分矩阵评分 │
│ 当总分不再增长时停止 → 得到 HSP (High-scoring Segment Pair) │
├──────────────────────────────────────────────────────────────┤
│ Step 4 统计评估 │
│ 计算原始分 S → Bit-score S' → E 值 │
│ E = m × N × 2^(-S') │
│ E 越小 → 越不可能是随机撞上的 │
└──────────────────────────────────────────────────────────────┘
5.3 变异检测算法(GATK 流程)
GATK Best Practices 是业界标准,分两大阶段:
阶段一:单样本预处理 + 变异调用
FASTQ → BWA-MEM 比对 → SAM → Picard 排序 → MarkDuplicates
→ RealignerTargetCreator + IndelRealigner (旧版)
→ BaseRecalibrator + PrintReads (BQSR 碱基质量重校正)
→ HaplotypeCaller (输出 gVCF)
阶段二:联合基因分型 + 过滤
多个 gVCF → GenotypeGVCFs (联合基因分型)
→ VQSR (Variant Quality Score Recalibration) 或硬过滤
→ 输出最终 VCF
💡 为什么不直接比对完就找变异? 因为测序仪给的质量值有系统偏差(比如某些碱基类型总被低估),BQSR 就是用已知变异位点当「标准答案」来校正这些偏差。
5.4 差异表达统计模型
RNA-seq 计数数据服从负二项分布(过离散的 Poisson),因此:
- DESeq2:用经验贝叶斯方法估计每个基因的离散度,做 Wald 检验 / LRT。
- edgeR:类似思路,用精确检验(exact test)。
- limma + voom:把计数数据转换后用线性模型,适合大样本。
5.5 多序列比对与进化树
| 工具 | 策略 | 适合场景 |
|---|---|---|
| ClustalW / Clustal Omega | 渐进式比对(先两两比对 → 建引导树 → 按距离逐步合并) | 蛋白/DNA 多序列 |
| MAFFT | FFT 加速 + 迭代优化 | 大规模多序列 |
| MUSCLE | 对数期望迭代 | 高精度 |
| RAxML / IQ-TREE | 最大似然法建树 | 大数据集进化树 |
6. 关键指标的意义
6.1 测序质量指标
| 指标 | 含义 | 警戒线 |
|---|---|---|
| Q20 / Q30 | 碱基识别准确率 99% / 99.9% | Q30 ≥ 80% 为佳 |
| GC 含量 | 全库 ATCG 分布 | 偏离物种典型值 → 污染或偏好 |
| 接头残留率 | 未去除的接头序列比例 | >5% 需重洗 |
| 重复率 (Duplication rate) | PCR 重复占比 | >20% 警惕 |
| 比对率 (Mapping rate) | 成功比对到参考的 reads 比例 | <70% 查污染/参考不匹配 |
| 覆盖均匀性 | 各区域覆盖深度方差 | 高方差 → 捕获偏好 |
6.2 差异表达指标
| 指标 | 含义 | 怎么用 |
|---|---|---|
| raw p-value | 单次检验的显著性 | 不直接用于决策(多重检验未校正) |
| FDR / q-value | 错误发现率 | q < 0.05 为常用阈值 |
| log2 Fold Change | 差异倍数(对数化) | |log2FC| > 1 通常要求 |
| baseMean | 归一化后的平均表达量 | 低表达基因即使显著也不可靠 |
| FDR 校正方法 | BH (Benjamini-Hochberg) 最常用 | 比 Bonferroni 保守度低、更灵敏 |
6.3 变异检测指标
| 指标 | 含义 |
|---|---|
| QUAL | 变异位点的 Phred 打分 |
| DP | 该位点覆盖深度 |
| AF (Allele Frequency) | 变异等位基因频率 |
| VQSLOD | VQSR 给出的质量对数比值 |
| SIFT / PolyPhen | 错义变异的有害性预测 |
6.4 火山图:一眼看尽差异基因
火山图把 log2FC(X 轴) 和 -log10(p-value)(Y 轴) 合在一张图里:
- 右上角:显著上调
- 左上角:显著下调
- 中间:无显著差异
- 越靠上越显著,越靠两侧倍数越大
7. 如何指导生产(医学 / 农业 / 工业)
7.1 精准医疗
| 应用 | 生信角色 | 实例 |
|---|---|---|
| 疾病风险预测 | 分析 BRCA1/2 等易感基因变异 | 乳腺癌/卵巢癌风险分层 |
| 肿瘤分子分型 | 转录组 + 突变谱聚类 | 肺癌 EGFR/ALK 分型指导靶向药 |
| 用药指导 | 药物代谢基因多态性分析 | 华法林剂量按 VKORC1 基因型调整 |
| 液体活检 | 血液中 ctDNA 低频变异检测 | 癌症早筛、复发监测 |
| 疫苗设计 | 病原体基因组变异追踪 | 新冠病毒刺突蛋白突变监测 |
7.2 农业育种
| 应用 | 生信角色 | 实例 |
|---|---|---|
| 全基因组选择 | 用 SNP 芯片/测序做基因组育种值估计 | 高产、抗病水稻选育 |
| 抗逆基因挖掘 | GWAS 定位抗旱/耐盐 QTL | 节水抗旱稻培育 |
| 基因组编辑靶点设计 | 设计 CRISPR sgRNA + 脱靶预测 | 精准编辑作物基因 |
| 畜禽遗传改良 | 基因组选择 + 系谱分析 | 高瘦肉率猪、高产奶牛 |
| 微生物肥料 | 宏基因组挖掘固氮/解磷菌株 | 减少化肥使用 |
7.3 公共卫生与传染病
- 病原体实时监测:流感病毒、新冠病毒的基因组变异追踪,绘制传播链。
- 耐药基因监测:宏基因组检测环境中耐药基因丰度,指导抗生素使用。
- 传染病预警模型:结合气候、人口流动、基因组数据做预测。
7.4 药物研发
- 虚拟筛选:基于靶点 3D 结构从化合物库筛候选分子。
- 老药新用:整合疾病基因、药物靶点、临床数据做药物重定位。
- 靶点发现:单细胞转录组挖掘新型药物靶点。
8. 与哪些功能 / 学科关联?
┌──────────────────────┐
│ 生物信息学 (核心) │
└──────────┬───────────┘
┌────────────┬──────────┼──────────┬────────────┐
▼ ▼ ▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌────────┐ ┌────────┐ ┌──────────┐
│ 分子生物学│ │ 遗传学 │ │ 统计学 │ │ 计算机 │ │ 化学 │
│ DNA/RNA/ │ │ 群体遗传 │ │ 假设检验│ │ 算法/ │ │ 药物化学 │
│ 蛋白功能 │ │ 连锁分析 │ │ 贝叶斯 │ │ 数据结构│ │ 结构生物学│
└──────────┘ └──────────┘ └────────┘ └────────┘ └──────────┘
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌────────┐ ┌────────┐ ┌──────────┐
│ 临床医学 │ │ 育种学 │ │ 流行病 │ │ 软件工程│ │ 制药工程 │
│ 精准医疗 │ │ 农业科学 │ │ 公共卫生│ │ DevOps │ │ 化学信息 │
└──────────┘ └──────────┘ └────────┘ └────────┘ └──────────┘
关键交叉点:
- 统计学:假设检验、贝叶斯推断、多重检验校正、机器学习。
- 计算机科学:算法设计、数据结构(后缀树/BWT)、并行计算、数据库。
- 分子生物学:理解 DNA→RNA→蛋白的中心法则,才能正确解释数据。
- 临床医学:变异的临床意义判读需要医学知识。
- 化学:药物-靶点相互作用、代谢通路。
9. 经典问答 FAQ
Q1:为什么二代测序读长那么短(100-300bp),却能测完整基因组?
A:靠「覆盖深度」取胜。把基因组随机打断成亿万条短片段,每条都测序,然后用算法根据片段重叠区把碎片拼回去。30x 覆盖度意味着每个碱基平均被读了 30 次,通过投票纠错。
Q2:BLAST 的 E 值和 p 值有什么区别?
A:p 值是「至少出现一条这么好的随机匹配」的概率(0~1);E 值是「预期出现多少条」(可 >1)。关系近似 E ≈ p × 数据库大小。E=0.001 比 p=0.999 更直观易懂,所以 BLAST 选报 E 值。
Q3:为什么 RNA-seq 不能用 t 检验直接做差异分析?
A:RNA-seq 计数是整数且方差随均值增大(过离散),不满足 t 检验的正态分布假设。DESeq2/edgeR 用负二项分布建模更准确。
Q4:TPM 和 FPKM 到底选哪个?
A:优先 TPM。FPKM 在样本间比较时因基因长度归一化方式有问题(分母包含的基因集随样本变化)。TPM 先除长度再归一化到百万,跨样本可比性更好。不过 DESeq2 的归一化计数仍是许多场景的首选。
Q5:什么是「批次效应」,怎么发现?
A:非生物学因素(测序批次、试剂批号、操作员)引入的系统偏差。用 PCA 图看样本是否按批次而非按生物学条件聚类——如果是,就需要 ComBat/SVA 校正。
Q6:为什么三代长读长测序错误率更高,还有人用?
A:因为短读长搞不定的事它搞得定:跨越重复序列、检测大片段结构变异(SV)、直接测甲基化、全长转录本 isoform 定相。HiFi 模式(PacBio 多次循环测序同一分子取共识)已把准确率推到 >99.9%。
Q7:GATK 流程里 MarkDuplicates 是干什么的?
A:PCR 扩增会产生完全相同的 reads 副本。如果不标记去除,变异检测时会把这些副本当成「独立证据」而高估变异支持度。MarkDuplicates 给它们打标签,后续工具会忽略或降权。
Q8:多序列比对为什么不能用动态规划直接做?
A:N 条序列的动态规划复杂度是 O(L^N),3 条就够呛,100 条直接爆炸。所以用渐进式策略(先两两比对建树,再按树逐步合并)做近似最优解。
10. 最佳工程实践(反例 vs 正解)
10.1 项目目录结构
❌ 反例:所有文件堆在一个文件夹,命名靠心情
project/
数据.xlsx
分析.R
test2_fastqc.html
new_new_result.txt
✅ 正解:标准化分层布局
project/
├── config/
│ ├── samples.tsv # 样本清单(唯一真相源)
│ └── references.yaml # 参考基因组版本锁定
├── raw/ # 原始 FASTQ(只读)
├── trimmed/ # 质控后
├── align/ # BAM 文件
├── counts/ # 定量矩阵
├── qc/ # FastQC / MultiQC 报告
├── results/ # 最终表格、图
├── workflow/ # Snakefile / nextflow.config
└── envs/ # conda environment.yml
10.2 可重复性三件套
| 实践 | 工具 | 作用 |
|---|---|---|
| 版本控制 | Git | 追踪代码变更,支持回滚和协作 |
| 环境锁定 | Conda / Docker / Singularity | 保证「在我机器上能跑」=「在你机器上也能跑」 |
| 流程编排 | Snakemake / Nextflow | 把多步分析串成一条命令可重跑的管线 |
❌ 反例:
# 手动一步步跑,没有记录参数
bwa mem ref.fa sample_R1.fastq sample_R2.fastq > aln.sam
samtools view -b aln.sam > aln.bam
# ...三个月后忘了用了什么参数...
✅ 正解(Snakemake 风格):
rule bwa_mem:
input: ref="ref/genome.fa",
r1="raw/{sample}_R1.fq.gz",
r2="raw/{sample}_R2.fq.gz"
output: "align/{sample}.bam"
params: threads=8
shell:
"bwa mem -t {params.threads} {input.ref} "
"{input.r1} {input.r2} | "
"samtools sort -@4 -o {output}"
10.3 数据质控反例 vs 正解
❌ 反例:
「测序公司给的数据应该没问题吧?」→ 直接比对 → 差异基因全是 rRNA 污染导致。
✅ 正解:
- FastQC 看每条样本的质量曲线、GC 分布、接头含量。
- MultiQC 汇总所有样本,一眼看全貌。
- 用 Trimmomatic / fastp 去接头、切低质量尾。
- 比对后查 rRNA 比例(特别是转录组),超标重过滤。
10.4 统计检验反例 vs 正解
❌ 反例:
from scipy.stats import ttest_ind
# 直接对原始 counts 做 t 检验
t_stat, p_val = ttest_ind(group_A_counts, group_B_counts)
✅ 正解:
# R: 用 DESeq2 做差异分析
library(DESeq2)
dds <- DESeqDataSetFromMatrix(countData = counts, colData = metadata, design = ~ condition)
dds <- DESeq(dds)
res <- results(dds, alpha = 0.05)
# 看 padj (FDR 校正后的 p 值) 和 log2FoldChange
10.5 富集分析反例 vs 正解
❌ 反例:
把 20000 个基因全丢进 GO 富集,p 值校正后还有 500 条显著通路 → 什么都显著 = 什么都没说。
✅ 正解:
- 用与研究匹配的背景基因集(如特定组织、特定条件表达的基因)。
- 同时看 富集因子 (Enrichment Factor)、基因数、p 值三者,不只追 p 值最小。
- 多数据库交叉验证(GO + KEGG + Reactome)。
11. 心智模型:ASCII 线框简图
11.1 测序技术三代演进
┌─────────────────────────────────────────────────────────────────┐
│ 测序技术三代演进 │
├─────────────────┬───────────────────┬───────────────────────────┤
│ 第一代 Sanger │ 第二代 Illumina│ 第三代 PacBio/Nanopore │
├─────────────────┼───────────────────┼───────────────────────────┤
│ 读长 ~1000 bp │ 读长 50-300 bp │ 读长 10-50 kb (长!) │
│ 准确率 99.99% │ 准确率 >99.9% │ HiFi >99.9% / 实时 │
│ 通量极低 │ 通量极高 (Tb/run)│ 通量中等 │
│ 成本高/碱基 │ 成本极低/碱基 │ 成本中等 │
│ │ │ │
│ 适合: 验证 │ 适合: 重测序 │ 适合: de novo / SV │
│ 金标准确认 │ RNA-seq / 变异 │ 重复区域 / 全长转录本 │
├─────────────────┼───────────────────┼───────────────────────────┤
│ 1977 ──────────│ 2005 ───────────│ 2011 ───────────────── │
│ │ ↓ 成本暴降 │ │
│ │ 通量暴增 │ 长读长革命 │
└─────────────────┴───────────────────┴───────────────────────────┘
趋势: 读长 ↑ 成本 ↓ 通量 ↑ 从「验证单个基因」走向「发现全基因组奥秘」
11.2 组学层级与中心法则
┌─────────────────────────────────────────┐
最稳定(静态) ◀────│ DNA 基因组 │ 蓝图 │ 你继承了什么潜力 │
├─────────────────────────────────────────┤
│ 表观修饰 │ 开关 │ 哪些基因被打开 │
├─────────────────────────────────────────┤
│ RNA 转录组 │ 信使 │ 哪些基因正在工作 │
├─────────────────────────────────────────┤
│ 蛋白质组 │ 工人 │ 实际干活的分子 │
├─────────────────────────────────────────┤
最动态(瞬时) ───▶│ 代谢组 │ 产物 │ 此刻细胞的真实状态│
└─────────────────────────────────────────┘
▲ │
└──── 反馈调控 ───────────────┘
(代谢物影响基因表达)
越往上: 越稳定, 变化慢, 决定"可能性"
越往下: 越灵敏, 变化快, 反映"现实状态"
11.3 标准生信分析流水线
┌──────────────┐
│ FASTQ 原始 │ 测序仪产出, 带质量值
└──────┬───────┘
▼
┌──────────────┐
│ ① QC 质控 │ FastQC → 看质量/GC/接头
└──────┬───────┘
▼
┌──────────────┐
│ ② 预处理 │ Trimmomatic/fastp 去接头/低质量
└──────┬───────┘
▼
┌──────────────────────┐
│ ③ 比对/定量 │ BWA·STAR·Salmon
│ Reads → 参考基因组 │
└──────┬───────────────┘
▼
┌──────────────────────┐
│ ④ 核心分析 │ DESeq2·GATK·...
│ 差异表达/变异检测 │
└──────┬───────────────┘
▼
┌──────────────────────┐
│ ⑤ 功能注释 │ BLAST·GO·KEGG
│ 这是什么基因/通路? │
└──────┬───────────────┘
▼
┌──────────────────────┐
│ ⑥ 可视化 & 解释 │ PCA·热图·火山图
│ 写成人话给生物学家 │
└──────────────────────┘
── 数据量递减, 信息密度递增 ──
11.4 BLAST 种子-扩展策略
Query: A C G T G A T C T G A C
│
▼ Step1: 取短词 "GATC" (W=4)
│
▼ Step2: 在数据库哈希表中查 "GATC"
│
Database: ...G G A C G T G A T C T G A C C...
★命中! 位置=5
│
▼ Step3: 从命中位置向两端扩展
│ 用 BLOSUM62 打分
│
得到 HSP: G T G A T C T G A
│ │ │ │ │ │ │ │ │
得分 = Σ匹配 - Σ错配 - Σ空位
│
▼ Step4: 计算 E 值
E = m × N × 2^(-S')
E=1e-15 → 几乎不可能是随机的!
11.5 Burrows-Wheeler Transform (BWT) 直觉
原文: A C G T $
│
▼ 生成所有循环移位
┌─────────────────────┐
│ A C G T $ │
│ C G T $ A │
│ G T $ A C │
│ T $ A C G │
│ $ A C G T │
└────────┬────────────┘
▼ 按字典序排序
┌─────────────────────┐
│ $ A C G T ← F列 │
│ A C G T $ │
│ C G T $ A │
│ G T $ A C │
│ T $ A C G │
└────────┬────────────┘
▼ 取末列 → BWT 输出
BWT = "$ G A T C"
LF 映射: 末列第 k 个 X → 首列第 k 个 X
→ 可从 BWT 无损还原原文!
→ 参考基因组只需存 BWT (高度压缩), 查询时 O(1) 定位
11.6 GATK 变异检测管线
┌──────────────────────────────────────────────────────────┐
│ GATK Best Practices │
├──────────────────────────────────────────────────────────┤
│ │
│ FASTQ ──▶ BWA-MEM ──▶ SAM ──▶ Sort ──▶ BAM │
│ │ │
│ ▼ │
│ MarkDuplicates │
│ │ │
│ ▼ │
│ BQSR (碱基质量校正) │
│ │ │
│ ▼ │
│ HaplotypeCaller │
│ (→ gVCF) │
│ │
│ 多个样本 gVCF ──▶ GenotypeGVCFs ──▶ 联合基因分型 │
│ │ │
│ ▼ │
│ VQSR / 硬过滤 │
│ │ │
│ ▼ │
│ ★ 最终 VCF ★ │
└──────────────────────────────────────────────────────────┘
11.7 火山图解读
-log10(p-value)
│
★ ★ ★ │ ★ ★ ★
★ ★ ★ ★ ★ │ ★ ★ ★ ★ ★ ← 显著上调 (右上)
★ ★ ★ ★ ★ ★ │ ★ ★ ★ ★ ★ ★
★ ★ ★ ★ ★ ★ ★ │ ★ ★ ★ ★ ★ ★ ★
──────────────────┼──────────────────→ log2 Fold Change
★ ★ ★ ★ ★ ★ ★ │ ★ ★ ★ ★ ★ ★ ★
★ ★ ★ ★ ★ ★ │ ★ ★ ★ ★ ★ ★
★ ★ ★ ★ ★ │ ★ ★ ★ ★ ★ ← 显著下调 (左上)
★ ★ ★ │ ★ ★ ★
│
┌──┐ │ ┌──┐
│ │ │ │ │ ← |log2FC|>1 且 p<0.05
└──┘ │ └──┘
│
非显著区域 (中间大片灰色点)
11.8 可重复性架构
┌─────────────────────────────────────────────────────────┐
│ 可重复生信的四根柱子 │
├──────────────┬──────────────┬──────────────┬────────────┤
│ ① 版本控制 │ ② 环境管理 │ ③ 流程编排 │ ④ 文档记录 │
├──────────────┼──────────────┼──────────────┼────────────┤
│ Git │ Conda │ Snakemake │ README.md │
│ GitHub/GitLab│ Docker │ Nextflow │ 参数说明 │
│ 每次改动有 │ Singularity │ 一键重跑 │ 工具版本 │
│ commit 记录 │ 锁版本 │ 自动依赖 │ 数据来源 │
├──────────────┼──────────────┼──────────────┼────────────┤
│ 防「在我机器 │ 防「环境漂移│ 防「步骤遗忘│ 防「三个月 │
│ 上能跑」 │ 导致结果变 │ 导致结果不可│ 后忘记当时│
│ │ 得不一样 │ 复现 │ 怎么跑的」 │
└──────────────┴──────────────┴──────────────┴────────────┘
12. 参考文献与资源
核心论文 / 文档
- Altschul SF, et al. "Basic local alignment search tool." J Mol Biol. 1990. (BLAST 原始论文)
- Needleman SB, Wunsch CD. "A general method applicable to the search for similarities in the amino acid sequence of two proteins." J Mol Biol. 1970.
- Smith TF, Waterman MS. "Identification of common molecular subsequences." J Mol Biol. 1981.
- Li H, Durbin R. "Fast and accurate short read alignment with Burrows-Wheeler Transform." Bioinformatics. 2009. (BWA)
- Langmead B, Salzberg SL. "Fast gapped-read alignment with Bowtie 2." Nat Methods. 2012.
- Love MI, et al. "Moderated estimation of fold change and dispersion for RNA-seq data." Genome Biol. 2014. (DESeq2)
- Robinson MD, et al. "edgeR: a Bioconductor package for differential expression analysis." Bioinformatics. 2010.
- Van der Auwera GA, et al. "From FastQ to VCF: GATK Best Practices." Curr Protoc Bioinformatics. 2013.
- Barbitoff YA, et al. "Systematic benchmark of state-of-the-art variant calling pipelines." BMC Genomics. 2022.
在线资源
| 资源 | 链接 | 用途 |
|---|---|---|
| NCBI BLAST | blast.ncbi.nlm.nih.gov | 在线序列比对搜索 |
| GATK 文档 | gatk.broadinstitute.org | 变异检测最佳实践 |
| Bioconductor | bioconductor.org | R 生信包集合 |
| Bioconda | bioconda.github.io | Conda 生信软件源 |
| Snakemake 教程 | snakemake.readthedocs.io | 流程编排入门 |
| NGS 数据分析指南 | ngless.embl.de | 新手友好教程 |
| 生信技能树 | bioinfoer.com | 中文社区/教程 |
推荐书籍
- 《Bioinformatics Algorithms》 (Pavel Pevzner) — 算法直觉,配图极佳
- 《Genome Analysis》 (Steven Salzberg) — 基因组学实战
- 《RNA-Seq Data Analysis》 (Eija Korpelainen) — 转录组分析全流程
- 《生物信息学》 (樊龙江) — 中文教材,系统全面
📌 写在最后:生信的核心不是「会跑软件」,而是理解数据从何而来、算法做了什么假设、结果该怎么解释。工具在变、算法在迭代,但「垃圾进、垃圾出」的铁律不变。先把数据质量搞扎实,再谈生物学洞见——这是这份指南最想传达的一件事。
在生物信息学(尤其是高通量测序/NGS)中,GC含量和接头(Adapter)是两个非常基础且关键的概念。它们直接关系到数据的质量控制(QC)和后续分析的准确性。
以下是详细的解释:
一、 GC 含量 (GC Content)
1. 是什么?
GC含量是指在一段DNA或RNA序列中,鸟嘌呤(G)和胞嘧啶(C)占碱基总数的百分比。
公式:
2. 为什么重要?
- 稳定性: G和C之间有三个氢键,而A和T之间只有两个。因此,GC含量高的DNA片段物理稳定性更高,解链(融化)需要的温度也更高。
- 物种特征: 不同物种的基因组平均GC含量不同(例如,人类约为41%,某些细菌可能高达70%)。在测序数据中,如果GC分布出现异常双峰,可能暗示有物种污染。
- 测序偏差(GC Bias): 这是生信中最头疼的问题之一。目前的测序技术(如Illumina)在PCR扩增和集群生成阶段,对极高或极低GC含量的区域不够友好,会导致这些区域的测序深度偏低。
3. 生信分析中的应用:
- 质量检测: 使用 FastQC 等软件查看 GC Distribution。如果曲线偏离理论上的正态分布,说明实验过程可能存在偏差。
- 校正: 在进行定量分析(如RNA-seq或WGS找变异)时,需要用算法校正GC偏差,以确保结果的真实性。
二、 接头 (Adapter)
1. 是什么?
接头是一段人工合成的短DNA序列(通常几十个碱基长),在构建测序文库时,会被人工连接到生物样品DNA片段的两端。
2. 它的作用是什么?
接头是测序芯片(Flowcell)和待测DNA之间的“桥梁”,主要有三大功能:
- 固定作用: 接头的末端能与测序仪芯片上的引物互补结合,让DNA片段“站”在芯片上。
- 引物绑定: 提供测序引物结合的点,让机器知道从哪里开始读碱基。
- 索引/标签(Index/Barcode): 在多样本混合测序时,接头序列中包含一段特异的“条形码(Index)”。通过识别这段序列,生信软件可以将混合在一起的数据重新归类到对应的样本中。
3. 为什么在生信分析中要“去接头”?
- 测序读穿(Read-through): 如果你的生物DNA片段(Insert)比测序长度短,测序仪读完生物片段后,会继续往后读,把接头的序列也读出来。
- 后果: 接头序列不是生物体本身的序列。如果不去除,在进行序列比对(Alignment)时,这些接头序列会导致比对不上参考基因组,或者产生错误的变异结果。
4. 常用工具:
在数据预处理阶段,我们会使用 fastp, Cutadapt, Trimmomatic 等软件来识别并切除这些人为的接头序列。
总结对比
| 概念 | 类别 | 来源 | 生信处理目标 |
|---|---|---|---|
| GC含量 | 生物特征 | 生物样本本身 | 检查是否有偏倚或污染,进行偏差校正 |
| 接头 (Adapter) | 人工序列 | 实验室建库添加 | 必须彻底去除(Trim),否则影响后续比对 |
一句话总结:
在拿到测序数据后,你首先要做的就是检查GC含量(看数据质量好不好)并切除接头(把人工杂质去掉),然后才能开始正式的生物学分析。
文档版本: v1.0 | 更新日期: 2026-08-16





