第一章 项目介绍与学习目标
1.1 项目背景
二十一世纪以来,高通量测序技术(Next-Generation Sequencing, NGS)的飞速发展与测序成本的指数级下降,使生物学研究全面迈入"大数据"时代。如今,一台桌面级测序仪(如 Illumina MiSeq)即可在数小时内产出上千万条、总量达数亿碱基的 DNA 序列数据。面对如此规模的数据,传统的"手工比对、肉眼检查"早已无能为力,生物信息学(Bioinformatics) 应运而生,成为连接测序数据与生物学发现之间不可或缺的桥梁。
生物信息学是一门交叉学科,它综合运用计算机科学、数学与统计学的方法,对生物数据进行存储、处理、分析与解读。对一名生命科学或数据科学方向的学生而言,掌握生物信息学的核心分析流程,已从"加分项"逐渐演变为"基本功"。
然而,入门生物信息学常常面临两大困难:其一,概念抽象、工具繁多,初学者容易在命令行的汪洋中迷失方向;其二,缺乏一条完整、可复现、数据量适中的主线来串联零散的知识点。本实验项目正是为解决这一痛点而设计。
1.1.1 为什么选择"大肠杆菌重测序"作为入门项目
本项目以大肠杆菌(Escherichia coli)全基因组重测序与变异检测为主线。选择这一主题,是基于以下考量:
- 基因组小、计算友好:大肠杆菌 K-12 MG1655 的参考基因组仅约 4.6 Mb(兆碱基),不到人类基因组的千分之一点五。所有分析步骤(质控、比对、变异检测)都可在普通个人电脑上数分钟至数十分钟内完成,适合课堂环境与入门练习。
- 数据公开、真实可复现:本项目所用的测序数据与参考基因组均来自国际公共数据库(ENA、NCBI),任何学生都可免费下载、复现全部结果。
- 流程完整、代表性强:从原始测序数据到变异位点,覆盖了生物信息学最核心的一条"黄金流程"——数据获取 → 质量控制 → 序列比对 → 比对后处理 → 变异检测 → 变异注释。这条流程的每个环节都是通用技能,可直接迁移到人类、动植物、微生物等其他物种的分析中。
- 结果可解读、有科学内涵:通过对比"同源对照样本"与"野生分离株样本",学生既能掌握变异检测的技术细节,又能深入理解测序深度、质量控制与假阳性之间的本质关系。
1.2 项目目标
1.2.1 知识目标
- 理解高通量测序(Illumina)的基本原理与数据特征;
- 掌握 FASTA、FASTQ、SAM/BAM、VCF 等核心生物信息学文件格式的结构与含义;
- 理解序列比对(BWA-MEM)与变异检测(bcftools)背后的基本算法思想;
- 理解 Phred 质量分数、测序深度、覆盖度、假阳性等关键概念;
- 掌握变异注释(SnpEff)的意义与变异类型的分类方法。
1.2.2 技能目标
- 熟练使用 Linux 命令行完成文件的查看、压缩、统计等基本操作;
- 使用 conda/mamba 搭建可复现的生物信息学分析环境;
- 从公共数据库下载参考基因组与测序数据,并校验数据完整性;
- 使用 FastQC 与 fastp 进行测序数据质量评估与过滤;
- 使用 BWA-MEM 将测序读段比对到参考基因组,并使用 samtools 完成排序、去重、统计;
- 使用 bcftools 进行变异位点检测与过滤,并解读 VCF 结果;
- 使用 SnpEff 对变异进行功能注释与分类统计;
- 撰写规范的分析报告,以图表与文字呈现分析结果。
1.2.3 能力目标(可迁移的通用能力)
- 工程化思维:学会通过目录组织、脚本化、记录命令等方式管理一个可复现的分析项目;
- 排错能力:学会阅读错误信息、查阅软件文档与社区资源独立解决问题;
- 数据素养:学会对分析结果保持批判性审视,区分"技术噪音"与"真实信号"。
1.3 项目总览
1.3.1 分析流程
本项目的主干流程如图 1.1 所示,共分为七个模块。整个流程是一个典型的"变异检测流水线"(Variant Calling Pipeline)。
七大分析模块总览
图 1.1:本项目主干分析流程
1.3.2 数据集方案
本项目提供两套真实测序数据集,形成"主实验 + 延伸实验"的递进设计:
| 项目 | 主实验 | 延伸实验 |
|---|---|---|
| 数据集编号 | ERR15404827 | DRR063436 |
| 样本菌株 | 大肠杆菌 K-12 MG1655 | 大肠杆菌野生分离株 |
| 测序平台 | Illumina MiSeq | Illumina MiSeq |
| 读长 | 250 bp 双端 | 75 bp 双端 |
| 测序数据量 | 约 124 Mb(约 49.7 万对读段) | 约 18 Mb(约 12.4 万对读段) |
| 估算覆盖深度 | 约 27× | 约 4× |
| 压缩数据大小 | 约 89 MB | 约 13.6 MB |
| 参考基因组 | 大肠杆菌 K-12 MG1655(RefSeq GCF_000005845.2) | |
| 与参考的关系 | 同源对照(几乎无真实变异) | 异源(存在真实 SNP) |
| 教学重点 | 完整流程 + 假阳性过滤 + 阴性对照思维 | 真实变异检出 + 深度对比 |
表 1.1:项目两套数据集的对比
主实验使用与参考基因组同源的 MG1655 样本(深度 27×,读长 250 bp),目的是:让初学者在"最干净、最可信"的条件下完整走通流程,并学会如何正确过滤假阳性——因为理论上同源重测序应检测到极少量真实变异,凡是大规模检出的"变异"多半是测序错误或比对错误。
延伸实验改用野生分离株(深度 4×,读长 75 bp),与 MG1655 参考基因组之间真实存在单核苷酸多态性(SNP),学生可以观察到"真实变异"被检出的过程,并体会测序深度对变异检测的影响。
1.4 预备知识要求
本项目面向本科二、三年级以上或具有同等基础的初学者,建议具备以下先修知识:
- 生物学基础:了解 DNA 双螺旋结构、碱基配对(A-T、C-G)、中心法则(DNA → RNA → 蛋白质)的基本概念;
- 计算机基础:会使用 Linux 基本命令(
cd、ls、mkdir、cp、mv),了解绝对路径与相对路径的概念; - 英语基础:能借助词典阅读软件帮助文档与数据库页面(本项目的命令与报错信息均为英文)。
如果你从未接触过 Linux 命令行,建议在开始前花 2-3 小时完成一个 Linux 入门速成教程,重点掌握文件与目录操作、通配符、管道(|)与重定向(>、>>)即可,本项目会在每个步骤给出完整的、可直接复制的命令。
第二章 实验环境与软件清单
2.1 硬件与系统要求
| 项目 | 推荐配置 |
|---|---|
| 操作系统 | Linux(推荐 Ubuntu 20.04 及以上)或 macOS;Windows 建议使用 WSL2 |
| CPU | 4 核及以上 |
| 内存 | 8 GB 及以上 |
| 硬盘 | 至少 20 GB 可用空间(软件环境 + 数据 + 中间文件) |
| 网络 | 可访问 NCBI/ENA 等国际数据库 |
生物信息学工具绝大多数为 Linux/macOS 原生命令行程序。Windows 用户强烈建议安装 WSL2(Ubuntu) 后再进行本项目。
2.2 所需软件清单
所有软件均通过 conda(或更快的 mamba)统一安装。
| 软件 | 验证版本 | 用途 | 许可证 |
|---|---|---|---|
| Miniconda | 24.x | 包与环境管理器 | BSD |
| mamba | 1.5.x | 更快的 conda 替代品 | BSD |
| FastQC | 0.12.1 | 测序数据质量评估 | GPL |
| fastp | 0.23.4 | 质量过滤与修剪 | MIT |
| BWA | 0.7.18 | 读段比对(BWA-MEM) | GPL |
| samtools | 1.20 | SAM/BAM 处理与统计 | MIT/BSD |
| bcftools | 1.20 | 变异检测与过滤 | MIT/BSD |
| SnpEff | 5.2 | 变异功能注释 | LGPL |
| tabix | 1.20 | 索引压缩的表格文件 | MIT/BSD |
2.3 安装与环境配置
2.3.1 安装 Miniconda
# 下载 Miniconda 安装脚本
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
# 运行安装脚本
bash Miniconda3-latest-Linux-x86_64.sh
# 按提示操作:回车阅读协议 → 输入 yes 接受 → 回车确认安装路径 → 输入 yes 初始化
安装完成后关闭并重新打开终端(或执行 source ~/.bashrc),验证:
conda --version
# 输出形如:conda 24.11.0
2.3.2 配置 conda 源(可选但推荐)
# 添加清华镜像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
绝大多数生物信息学软件由社区维护在 Bioconda 频道中,而 Bioconda 又依赖 conda-forge 提供的基础库。因此,安装生信工具时必须同时配置这两个频道。
2.3.3 创建独立的分析环境
conda create -n bioinfo -y -c conda-forge -c bioconda \
mamba fastqc fastp bwa samtools bcftools snpeff tabix
conda activate bioinfo
bwa 2>&1 | head -1
samtools --version | head -1
bcftools --version | head -1
2.3.4 下载 SnpEff 数据库
# 查看可用的大肠杆菌数据库
snpEff databases | grep -i coli | head
# 下载 MG1655 (ASM584v2) 数据库
snpEff download -v ASM584v2
不同 SnpEff 版本中,MG1655 数据库的命名可能略有差异。执行 snpEff databases | grep -i "K-12" 确认准确名称。
2.4 项目目录结构
mkdir -p ecoli_reseq/{data,ref,results/{qc,align,variants,annotation},scripts,report}
cd ecoli_reseq
tree -L 2 # 若未安装 tree 可省略
| 目录 | 用途 |
|---|---|
ecoli_reseq/ | 项目根目录 |
data/ | 存放测序数据(FASTQ 文件) |
ref/ | 存放参考基因组及相关索引 |
results/qc/ | 质控结果 |
results/align/ | 比对结果(BAM 文件) |
results/variants/ | 变异检测结果(VCF 文件) |
results/annotation/ | 变异注释结果 |
scripts/ | 存放分析脚本 |
report/ | 存放最终分析报告 |
始终使用相对路径或变量引用文件,避免在命令中写死绝对路径,这样脚本才能在不同电脑上通用。
第三章 测序技术基础
在动手分析数据之前,理解"数据从何而来"至关重要。测序数据的质量特征、误差模式都直接决定了后续分析策略的选择。本章介绍 DNA 测序技术的发展脉络,并重点讲解本项目所使用的 Illumina 测序原理及其数据特征。
3.1 DNA 测序技术简史
1977 年,Frederick Sanger 发明了链终止法测序(Sanger sequencing),奠定了现代 DNA 测序的基础。其核心原理是"双脱氧核苷酸终止"。Sanger 测序读长可达 800-1000 bp,准确率极高(>99.9%),但通量低。
2005 年前后,以 Roche 454、Illumina(Solexa)、ABI SOLiD 为代表的第二代测序(NGS)技术相继问世。它们的共同特征是大规模并行化。其中 Illumina 平台凭借高通量、低成本、低错误率的综合优势,成为目前应用最广泛的测序平台。
以 PacBio(SMRT)和 Oxford Nanopore(纳米孔测序)为代表的第三代测序,无需 PCR 扩增即可对单条 DNA 分子进行实时测序,读长可达数十 kb 甚至 Mb 级,但单碱基错误率相对较高。
| 代际 | 代表平台 | 读长 | 主要特点 |
|---|---|---|---|
| 第一代 | Sanger | 800-1000 bp | 准确率极高,通量低,成本高 |
| 第二代 | Illumina | 50-300 bp | 高通量、低成本、低错误率(<1%) |
| 第三代 | PacBio / Nanopore | 10 kb-Mb 级 | 超长读长,错误率较高,实时测序 |
3.2 Illumina 测序原理
本项目的数据由 Illumina MiSeq 平台产生,其测序过程可概括为"桥式扩增 + 边合成边测序"两大步骤。
3.2.1 文库制备
首先将基因组 DNA 随机打断为约几百 bp 的小片段(fragment),在片段两端连接上已知序列的接头(adapter)。
3.2.2 桥式 PCR 扩增(簇生成)
将文库加载到 flow cell 上,DNA 片段通过接头与芯片表面的互补寡核苷酸结合。随后进行"桥式 PCR",最终形成由同一模板扩增而来的DNA 簇(cluster)。
3.2.3 边合成边测序(SBS)
- 与模板互补的 dNTP 被 DNA 聚合酶掺入;
- 激发荧光,记录每个簇发出的颜色,据此判断该位置掺入的碱基;
- 切除荧光基团与终止子,进入下一轮合成。
如此循环,每次读出一个碱基,最终获得每个簇的序列,即一条测序读段(read)。
3.2.4 单端测序与双端测序
- 单端测序(Single-end, SE):只从 DNA 片段的一端开始测序,每条片段产生 1 条 read;
- 双端测序(Paired-end, PE):先从片段一端测序,再翻转到另一端测序,每条片段产生 2 条 read(R1/R2)。
双端测序提供了额外的位置信息:两条 read 的相对位置与距离已知,能显著提高比对准确性(尤其是重复区、结构变异区),也有助于跨越短的重复序列。
3.3 测序质量与 Phred 分数
测序仪在读碱基时会根据荧光信号强度等指标,为每个碱基赋予一个质量分数,用于衡量"该碱基被读错"的概率。质量分数通常用 Phred 分数(记作 Q)表示:
Q = −10 log10 P
| Phred 分数 | 错误概率 | 准确率 | 常用标记 |
|---|---|---|---|
| Q10 | 10% | 90% | 低质量 |
| Q20 | 1% | 99% | 一般合格线 |
| Q30 | 0.1% | 99.9% | 高质量 |
| Q40 | 0.01% | 99.99% | 极高 |
第四章 核心生物信息学文件格式
文件格式是生物信息学的"通用语言"。掌握 FASTA、FASTQ、SAM/BAM、VCF 四种核心格式的结构,是阅读数据、排查问题、编写脚本的前提。
4.1 FASTA 格式:序列的存储
FASTA 是最简单的序列存储格式。每条序列由两行或多行组成:第一行以 > 开头,为描述行(header);后续行为序列本身。
>NC_000913.3 Escherichia coli str. K-12 substr. MG1655, complete genome
AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC
TTCTGAACTGGTTACCTGCCGTGAGTAAATTAAAATTTTATTGACTTAGGTCACTAAATACTTTAACCAA
4.2 FASTQ 格式:测序读段与质量
FASTQ 是存储测序读段及其质量分数的标准格式,每条 read 占据四行:
- 第 1 行(标识行):以
@开头,包含 read 的唯一标识符; - 第 2 行(序列行):碱基序列(A/T/C/G/N);
- 第 3 行(分隔行):以
+开头; - 第 4 行(质量行):与第 2 行等长的质量字符。
@ERR15404827.1 1/1
AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATT
+
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
4.3 SAM/BAM 格式:比对结果的存储
SAM(Sequence Alignment/Map)是存储"读段比对到参考基因组"结果的文本格式;BAM 是其二进制压缩版本。
4.3.1 SAM 的 11 个必选字段
| 编号 | 字段名 | 含义 |
|---|---|---|
| 1 | QNAME | read 名称 |
| 2 | FLAG | 位标志,记录比对状态 |
| 3 | RNAME | 参考序列名 |
| 4 | POS | 比对起始位置(1-based) |
| 5 | MAPQ | 比对质量分数 |
| 6 | CIGAR | 描述比对细节的紧凑字符串 |
| 7 | RNEXT | mate 所在的参考序列名 |
| 8 | PNEXT | mate 的比对位置 |
| 9 | TLEN | 模板(插入片段)长度 |
| 10 | SEQ | read 的碱基序列 |
| 11 | QUAL | read 的碱基质量 |
4.3.2 CIGAR 常用操作符
| 操作符 | 含义 |
|---|---|
| M | 匹配或错配 |
| I | 插入 |
| D | 缺失 |
| S | 软剪切(保留在 SEQ 中) |
| H | 硬剪切(已从 SEQ 中移除) |
| N | 跳过参考序列上的区域(如内含子) |
4.4 VCF/BCF 格式:变异位点的存储
VCF(Variant Call Format)是存储遗传变异(SNP、插入缺失等)的标准格式。前 8 个固定字段含义:
| 字段 | 含义 |
|---|---|
| CHROM | 变异所在的参考序列名 |
| POS | 变异位置(1-based) |
| ID | 变异标识符 |
| REF | 参考等位基因 |
| ALT | 变异等位基因 |
| QUAL | 变异质量分数 |
| FILTER | 过滤标记 |
| INFO | 附加信息 |
FORMAT 与样本列常用字段:
GT:基因型(0/1杂合,1/1纯合变异);DP:该位点的测序深度;AD:各等位基因的 read 深度。
第五章 核心算法原理
"知其然,更要知其所以然。"理解工具背后的算法思想,才能正确选择参数、合理解读结果、在出问题时做出正确判断。
5.1 序列比对算法
5.1.1 BWT 与 FM-index
BWA 的核心是基于 Burrows-Wheeler 变换(BWT) 和 FM-index 构建的全文索引。其思想:
- 将参考基因组的所有"循环移位"按字典序排序,取每行最后一列,得到 BWT 字符串。这个变换是可逆的;
- FM-index 在 BWT 上支持"反向搜索(backward search)",可在 O(m) 时间内(m 为 read 长度)快速定位某个短序列在参考基因组中的所有出现位置;
- 比对一条 read 时,BWA 从 read 末端开始逐碱基"反向搜索",一旦发现不匹配,立即回溯。
5.1.2 seed-and-extend 策略
BWA-MEM 采用"种子-扩展"(seed-and-extend)策略:
- 种子查找:从 read 中提取若干短的"种子",利用 FM-index 快速找到候选位置;
- 链化(chaining):将同一条 read 的多个种子候选位置"串联"成可能的一致比对;
- 扩展(extension):对每个候选位置,用 Smith-Waterman 局部比对算法向两端扩展。
5.1.3 比对质量 MAPQ
MAPQ(mapping quality)是 BWA 为每条 read 赋予的"比对可信度"(Phred 尺度):
MAPQ = −10 log10 P(比对位置错误)
当一条 read 能比对到多个位置(如重复区)时,MAPQ 会很低(如 0)。
5.2 变异检测算法
本项目使用的 bcftools mpileup + call 采用"堆积 → 基因型似然 → 变异判定"三步策略。
5.2.1 pileup 堆积
mpileup 将 BAM 文件中覆盖同一基因组位置的所有 read 的碱基"堆积"在一起,记录每个位置 A/C/G/T 各有多少条 read 支持。
5.2.2 计算基因型似然
对每个候选位点,基于观测到的碱基堆积,计算不同基因型假设下的似然(likelihood)。
5.2.3 贝叶斯后验与输出
实际算法会结合先验概率(如 SNP 的先验概率约 10−3)与似然,用贝叶斯公式计算后验概率:
QUAL = −10 log10 P(该位置不是变异)
先验概率的作用是抑制假阳性。如果某个位点只有 1-2 条低质量 read 支持一个"变异",那么这更可能是测序错误而非真实变异。引入先验后,这类情况的后验概率很低,不会被判定为变异。
5.3 测序深度与覆盖度
测序深度 = 测序数据总量 / 基因组大小。
| 深度 | 对变异检测的影响 |
|---|---|
| <5× | 漏检严重,检出的变异也不可靠 |
| 5-10× | 可检出纯合变异,杂合变异可靠性差 |
| 10-30× | 常见研究标准,纯合与杂合变异均较可靠 |
| >30× | 高深度,可检出低频变异 |
主实验(27×)与延伸实验(4×)形成天然对照:前者变异检测结果可信、假阳性少;后者将观察到大量低深度位点与更高的假阳性率。
第六章 模块 1:数据获取
本模块将完成两项任务:(1) 下载参考基因组;(2) 下载测序数据,并对下载的文件进行完整性校验。
6.1 背景知识:公共生物信息学数据库
全球三大核酸序列数据库——GenBank(NCBI)、ENA(EBI)、DDBJ——共同组成国际核苷酸序列数据库协作联盟(INSDC):
| 数据库 | 所属机构 | 访问号前缀示例 |
|---|---|---|
| GenBank / SRA | 美国 NCBI | SRR、SAMN |
| ENA | 欧洲 EBI | ERR、SAMEA |
| DDBJ SRA | 日本 DDBJ | DRR、SAMD |
主实验数据 ERR15404827 属于 ENA;延伸实验数据 DRR063436 属于 DDBJ。但二者都已同步到 ENA,因此统一从 ENA 下载即可。
6.2 实验步骤
6.2.1 步骤 1:创建目录结构
mkdir -p ~/ecoli_reseq/{data,ref,results/{qc,align,variants,annotation},scripts,report}
cd ~/ecoli_reseq
6.2.2 步骤 2:下载参考基因组
cd ref
wget -c https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/005/845/GCF_000005845.2_ASM584v2/GCF_000005845.2_ASM584v2_genomic.fna.gz
wget -c https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/005/845/GCF_000005845.2_ASM584v2/GCF_000005845.2_ASM584v2_genomic.gff.gz
gunzip GCF_000005845.2_ASM584v2_genomic.fna.gz
ls -lh
-c 参数的作用
wget -c(--continue)支持断点续传:若下载中断,再次执行同一命令会从断点继续,而非重新开始。
6.2.3 步骤 3:查看参考基因组
grep "^>" GCF_000005845.2_ASM584v2_genomic.fna
grep -v "^>" GCF_000005845.2_ASM584v2_genomic.fna | tr -d '\n' | wc -c
预期输出:
>NC_000913.3 Escherichia coli str. K-12 substr. MG1655, complete genome
4641652
6.2.4 步骤 4:下载测序数据
cd ../data
wget -c https://ftp.sra.ebi.ac.uk/vol1/fastq/ERR154/027/ERR15404827/ERR15404827_1.fastq.gz
wget -c https://ftp.sra.ebi.ac.uk/vol1/fastq/ERR154/027/ERR15404827/ERR15404827_2.fastq.gz
ls -lh
ENA 的 FASTQ 下载链接遵循固定规则:https://ftp.sra.ebi.ac.uk/vol1/fastq/ + 访问号前 6 位 + / + 完整访问号 + / + 访问号 + 后缀。
6.2.5 步骤 5:数据完整性校验
# 计算本地文件的 MD5 值
md5sum ERR15404827_1.fastq.gz ERR15404827_2.fastq.gz
# 获取 ENA 官方 MD5 校验值
curl -s "https://www.ebi.ac.uk/ena/portal/api/filereport?accession=ERR15404827&result=read_run&fields=run_accession,fastq_md5&format=tsv"
将本地计算的 MD5 与 ENA 官方提供的 MD5 逐字符比对,完全一致即表示文件完整无损。
6.3 思考题
为什么参考基因组的 FASTA 文件在解压前是 .gz 压缩格式?这种压缩对生物信息学数据分析有什么意义?
ERR15404827 的 R1 与 R2 两个文件分别代表什么?如果只下载了 R1 而遗漏 R2,对后续分析会有什么影响?
MD5 校验和的作用是什么?你下载的文件 MD5 与官方不一致,可能的原因有哪些?
第七章 模块 2:测序数据质量控制
本模块将对原始测序数据进行质量评估(FastQC)与过滤修剪(fastp),去除低质量碱基、接头污染与过短读段,为后续比对提供高质量的输入数据。
7.1 背景知识:为什么要做质量控制?
原始测序数据中存在的"噪音"包括:测序错误、接头污染、低质量碱基、PCR 重复。
下游分析的结论质量永远不可能超过输入数据的质量。质控是生信分析中投入产出比最高的一步,务必认真对待。
7.2 实验步骤
7.2.1 步骤 1:使用 FastQC 评估
fastqc -t 4 -o results/qc/ \
data/ERR15404827_1.fastq.gz \
data/ERR15404827_2.fastq.gz
生成 .html 报告与 .zip 原始数据。
7.2.2 步骤 2:解读 FastQC 报告
重点查看:碱基质量、碱基 GC 含量、接头污染、重复水平、重复序列等指标。FastQC 用绿/黄/红三色标记各项指标。
大肠杆菌基因组的 GC 含量约 50.8%。FastQC 的 GC 含量图应呈现一个以 50% 为中心的较窄分布峰。
7.2.3 步骤 3:使用 fastp 过滤与修剪
fastp \
-i data/ERR15404827_1.fastq.gz \
-I data/ERR15404827_2.fastq.gz \
-o results/qc/ERR15404827_1.clean.fastq.gz \
-O results/qc/ERR15404827_2.clean.fastq.gz \
--html results/qc/fastp.html \
--json results/qc/fastp.json \
--thread 4 \
--qualified_quality_phred 20 \
--unqualified_percent_limit 40 \
--length_required 50 \
--cut_front --cut_tail
| 参数 | 含义 |
|---|---|
-i / -I | 输入的 R1 / R2 文件 |
-o / -O | 输出的 R1 / R2 文件 |
--qualified_quality_phred 20 | 合格碱基的质量阈值 |
--length_required 50 | 过滤后长度小于 50 bp 的 read 丢弃 |
--cut_front / --cut_tail | 从 read 前端/末端滑动窗口修剪低质量碱基 |
7.2.4 步骤 4:查看 fastp 报告与统计
python3 -c "
import json
d = json.load(open('results/qc/fastp.json'))
s = d['summary']
for k in ['before_filtering','after_filtering']:
x = s[k]
print(k, '-> total_reads:', x['total_reads'],
'| q30_rate: %.2f%%' % (x['q30_rate']*100))
"
优质 Illumina 数据的 Q30 率通常在 85-95% 之间。对比 before/after 可直观看到过滤提升了多少数据质量。
7.3 思考题
FastQC 报告显示某数据末端质量骤降到 Q10 以下,这说明什么?fastp 的哪个参数可以处理这一问题?
为什么过滤后的读段总数通常略少于过滤前?如果损失超过 30%,可能意味着什么?
"接头污染"是如何产生的?为什么它主要出现在 read 的末端而不是开头?
第八章 模块 3:序列比对
使用 BWA-MEM 把经过质控的测序读段比对到参考基因组上,回答"每条 read 来自基因组的哪个位置"。
8.1 背景知识:什么是序列比对
序列比对是生物信息学最核心的操作之一。任务是:给定一条短测序读段和一个参考基因组,确定该读段最可能来自参考基因组的哪个位置。
8.2 实验步骤
8.2.1 步骤 1:为参考基因组建立索引
bwa index ref/GCF_000005845.2_ASM584v2_genomic.fna
samtools faidx ref/GCF_000005845.2_ASM584v2_genomic.fna
二者不可混用:BWA 索引基于 BWT/FM-index,供 BWA 比对使用;samtools 的 FASTA 索引(.fai)记录每条序列的名称、长度与偏移量。
8.2.2 步骤 2:使用 BWA-MEM 进行比对
bwa mem -t 4 \
ref/GCF_000005845.2_ASM584v2_genomic.fna \
results/qc/ERR15404827_1.clean.fastq.gz \
results/qc/ERR15404827_2.clean.fastq.gz \
> results/align/ERR15404827.sam
8.2.3 步骤 3:查看 SAM 文件
samtools view -H results/align/ERR15404827.sam | head -10
samtools view results/align/ERR15404827.sam | head -5
8.2.4 步骤 4:评估比对结果
samtools flagstat results/align/ERR15404827.sam
关注比对率(mapped)与正确配对比率(properly paired)。对同源重测序,比对率通常应 >99%,properly paired >95%。
8.3 思考题
为什么 BWA 要先"建索引"再比对?请从计算复杂度角度思考。
SAM 文件的 FLAG 字段值为 99,请拆解它表示的含义。
MAPQ(比对质量)为 0 意味着什么?为什么变异检测中通常要过滤掉 MAPQ 低的 read?
第九章 模块 4:比对后处理
对 SAM 比对结果进行格式转换、排序、去除 PCR 重复、建立索引,并统计比对质量、测序深度与覆盖度。
9.1 背景知识
BWA 输出的 SAM 存在三个问题:文件巨大且低效、无序、含 PCR 重复。
9.2 实验步骤
9.2.1 步骤 1:SAM 转换为 BAM
samtools view -bS results/align/ERR15404827.sam \
-o results/align/ERR15404827.bam
9.2.2 步骤 2:按坐标排序
samtools sort -@ 4 results/align/ERR15404827.bam \
-o results/align/ERR15404827.sorted.bam
9.2.3 步骤 3:标记 mate 信息
samtools fixmate -m results/align/ERR15404827.sorted.bam \
results/align/ERR15404827.fixmate.bam
9.2.4 步骤 4:再次排序
samtools sort -@ 4 results/align/ERR15404827.fixmate.bam \
-o results/align/ERR15404827.fixmate.sorted.bam
9.2.5 步骤 5:去除 PCR 重复
samtools markdup results/align/ERR15404827.fixmate.sorted.bam \
results/align/ERR15404827.dedup.bam
9.2.6 步骤 6:建立 BAM 索引
samtools index results/align/ERR15404827.dedup.bam
9.2.7 步骤 7:比对统计
samtools flagstat results/align/ERR15404827.dedup.bam
samtools stats results/align/ERR15404827.dedup.bam > results/align/stats.txt
samtools coverage results/align/ERR15404827.dedup.bam
9.2.8 步骤 8:计算深度分布
samtools depth -a results/align/ERR15404827.dedup.bam \
> results/align/depth.txt
awk '{s+=$3; if($3>0) c++} END{print "平均深度(含0):", s/NR; print "覆盖位点平均深度:", s/c; print "覆盖度:", c/NR*100"%"}' \
results/align/depth.txt
对主实验(27×),平均深度应接近 27;覆盖度(≥1× 的位点占比)通常 >99.5%。
9.3 思考题
为什么要对 BAM 按坐标排序?如果不排序,markdup 和变异检测会怎样?
PCR 重复与"生物学重复"有何本质区别?为什么要去除 PCR 重复而不是保留它们来"增加深度"?
主实验的预期平均深度约 27×。请用"数据量/基因组大小"估算一次并与 samtools coverage 实际值对比。
第十章 模块 5:变异检测
本模块是整个项目的核心。我们将综合所有覆盖到每个基因组位置的 read 信息,使用 bcftools 检测单核苷酸多态性(SNP)与插入缺失(InDel),并对变异结果进行质量过滤与统计解读。
10.1 背景知识:变异检测的两步流程
本项目使用的 bcftools 将变异检测拆分为两个可组合的步骤:
- mpileup(堆积):将覆盖同一位置的 read 堆积,统计 A/C/G/T 支持数与质量;
- call(判定):计算不同基因型假设的似然,结合先验概率做贝叶斯判定。
10.2 实验步骤
10.2.1 步骤 1:变异检测
bcftools mpileup --ploidy 1 \
-f ref/GCF_000005845.2_ASM584v2_genomic.fna \
results/align/ERR15404827.dedup.bam | \
bcftools call -mv -Ov \
-o results/variants/ERR15404827.raw.vcf
大肠杆菌是单倍体。指定 --ploidy 1 使基因型判定更符合生物学实际。
10.2.2 步骤 2:查看原始 VCF
grep -vc "^#" results/variants/ERR15404827.raw.vcf
bcftools query -f '%CHROM\t%POS\t%REF\t%ALT\t%QUAL\t%DP\n' \
results/variants/ERR15404827.raw.vcf | head -10
10.2.3 步骤 3:变异质量过滤
bcftools filter \
-i 'QUAL >= 30 && DP >= 10' \
results/variants/ERR15404827.raw.vcf \
-o results/variants/ERR15404827.filtered.vcf
grep -vc "^#" results/variants/ERR15404827.filtered.vcf
过严会漏掉真实变异(假阴性),过松会混入假阳性。建议尝试多组过滤参数(如 DP≥5/10/20、QUAL≥20/30/60),观察变异数量变化。
10.2.4 步骤 4:变异统计
bcftools stats results/variants/ERR15404827.filtered.vcf \
> results/variants/stats.txt
grep -E "SN|number of" results/variants/stats.txt | head -30
真实生物变异中转换多于颠换,Ts/Tv 比值通常在 2-3 左右。若过滤后 Ts/Tv 异常(如 <1),往往提示仍有大量假阳性。
10.2.5 步骤 5:解读主实验的"近乎零变异"结果
主实验的样本与参考基因组同为 MG1655,理论上应完全一致。因此过滤后你很可能得到极少量甚至 0 个变异——这并非"实验失败",恰恰是正确的科学结论!它验证了:
- 分析流程本身没有系统性引入大量假阳性;
- 过滤策略有效地去除了测序/比对错误产生的噪音;
- 变异检测的意义在于"区分真实信号与背景噪音",而不是"找到越多越好"。
10.3 思考题
VCF 中 QUAL 字段与 FASTQ 中碱基质量(Phred 分数)有什么联系与区别?二者分别衡量"什么出错"的概率?
为什么过滤条件要同时考虑 QUAL 和 DP?只用一个条件会有什么问题?
若把过滤条件改为 DP >= 20 && QUAL >= 60,变异数量如何变化?结合"假阳性 vs 假阴性"的权衡解释。
第十一章 模块 6:变异注释与功能解读
使用 SnpEff 对过滤后的变异进行功能注释,判断每个变异落在基因组的什么位置(基因间区、编码区等),以及是否改变蛋白质序列。
11.1 背景知识:为什么要注释变异
变异检测得到的 VCF 只是一个"位置 + 碱基变化"的列表。变异注释就是为每个变异补充其功能信息。
11.2 实验步骤
11.2.1 步骤 1:运行 SnpEff 注释
snpEff -v ASM584v2 \
results/variants/ERR15404827.filtered.vcf \
> results/annotation/ERR15404827.ann.vcf
11.2.2 步骤 2:查看注释结果
bcftools query -f '%CHROM\t%POS\t%REF\t%ALT\t%INFO/ANN\n' \
results/annotation/ERR15404827.ann.vcf | head -10
11.2.3 步骤 3:理解 ANN 字段
| 子字段(位置) | 含义 |
|---|---|
| Allele(第 1 个) | 被注释的变异等位基因 |
| Annotation(第 2 个) | 变异类型(如 missense_variant) |
| Gene Name(第 4 个) | 基因名(如 lacZ) |
| Gene ID(第 5 个) | 基因编号 |
11.2.4 步骤 4:变异类型分类统计
bcftools query -f '%INFO/ANN\n' \
results/annotation/ERR15404827.ann.vcf \
| cut -d'|' -f2 | sort | uniq -c | sort -rn
| 变异类型 | 含义 |
|---|---|
| 同义突变(synonymous) | 密码子改变但编码的氨基酸不变 |
| 错义突变(missense) | 密码子改变导致氨基酸改变 |
| 无义突变(nonsense) | 密码子变为终止密码子,蛋白提前截断 |
| 移码突变(frameshift) | 插入/缺失导致读框移位 |
| 基因间区(intergenic) | 位于基因之间的非编码区 |
11.3 思考题
同义突变为什么不改变氨基酸?这体现了遗传密码的什么特性?
错义突变与无义突变哪个对蛋白质功能的影响通常更大?为什么?
基因间区的变异为什么通常比编码区的变异更"容忍"?这对理解进化有什么启发?
第十二章 模块 7:结果汇总与延伸实验
本模块将前六个模块的成果汇总为一份规范的分析报告,并通过一个"野生分离株"的延伸实验,对比不同菌株、不同深度条件下的变异检测结果。
12.1 步骤 1:汇总主实验关键结果
| 指标 | 数值 | 来源命令 |
|---|---|---|
| 原始 read 对数 | 约 49.7 万 | fastp 报告 |
| 质控后 read 对数 | 记录 | fastp 报告 |
| Q30 比例 | 记录 | fastp 报告 |
| 比对率 | 记录 | samtools flagstat |
| 平均测序深度 | 记录 | samtools coverage |
| 原始变异数 | 记录 | grep -vc "#" raw.vcf |
| 过滤后变异数 | 记录 | grep -vc "#" filtered.vcf |
12.2 步骤 2:撰写分析报告
分析报告结构:标题与摘要、数据与方法、结果、讨论、结论。
报告中务必记录所有软件版本与关键参数,这是分析可复现、结果可信赖的基础。
12.3 步骤 3:延伸实验——野生分离株分析
12.3.1 延伸实验数据下载
wget -c https://ftp.sra.ebi.ac.uk/vol1/fastq/DRR063/DRR063436/DRR063436_1.fastq.gz
wget -c https://ftp.sra.ebi.ac.uk/vol1/fastq/DRR063/DRR063436/DRR063436_2.fastq.gz
md5sum DRR063436_1.fastq.gz DRR063436_2.fastq.gz
12.3.2 延伸实验完整流程
流程与主实验完全一致,只需将文件名 ERR15404827 替换为 DRR063436。
fastp \
-i data/DRR063436_1.fastq.gz \
-I data/DRR063436_2.fastq.gz \
-o results/qc/DRR063436_1.clean.fastq.gz \
-O results/qc/DRR063436_2.clean.fastq.gz \
--html results/qc/fastp_DRR063436.html \
--json results/qc/fastp_DRR063436.json \
--thread 4 \
--qualified_quality_phred 20 \
--unqualified_percent_limit 40 \
--length_required 40
野生株 DRR063436 与参考 MG1655 之间真实存在大量 SNP。你将检测到数千乃至上万个变异——与主实验"接近零变异"形成鲜明对比。
12.4 步骤 4:对比分析与讨论
| 指标 | 主实验(MG1655,27×) | 延伸实验(野生株,4×) |
|---|---|---|
| 过滤前变异数 | 记录 | 记录 |
| 过滤后变异数 | 记录 | 记录 |
| Ts/Tv 比值 | 记录 | 记录 |
| 错义突变数 | 记录 | 记录 |
| 同义突变数 | 记录 | 记录 |
- 为什么延伸实验检测到大量变异,而主实验几乎为零?
- 两个数据集的 Ts/Tv 比值有何差异?低深度数据的 Ts/Tv 是否更偏离理论值?
- 4× 深度下过滤参数应如何调整?
- 结合本项目,谈谈"测序深度是变异检测质量的基石"的理解。
12.5 项目总结
- 学习 GATK——人类/二倍体基因组变异检测的行业标准;
- 学习 RNA-seq 分析流程(比对、定量、差异表达);
- 学习 Snakemake / Nextflow 等工作流语言,将流程自动化;
- 学习 Python/R 数据可视化,提升结果呈现能力。
附录 A 软件与环境清单汇总
A.1 完整软件清单
| 软件 | 版本 | 用途 | 所属频道 |
|---|---|---|---|
| Miniconda | 24.x | 环境管理器 | 官方安装脚本 |
| mamba | 1.5.x | 快速包管理 | conda-forge |
| FastQC | 0.12.1 | 质量评估 | bioconda |
| fastp | 0.23.4 | 质量过滤 | bioconda |
| BWA | 0.7.18 | 序列比对 | bioconda |
| samtools | 1.20 | BAM 处理 | bioconda |
| bcftools | 1.20 | 变异检测 | bioconda |
| SnpEff | 5.2 | 变异注释 | bioconda |
| tabix | 1.20 | 表格索引 | bioconda |
A.2 一键式环境配置
A.2.1 方式一:逐条命令安装
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --set show_channel_urls yes
conda create -n bioinfo -y -c conda-forge -c bioconda \
mamba fastqc fastp bwa samtools bcftools snpeff tabix
conda activate bioinfo
snpEff download -v ASM584v2
A.2.2 方式二:使用环境文件
将以下内容保存为 environment.yml:
name: bioinfo
channels:
- conda-forge
- bioconda
dependencies:
- mamba
- fastqc=0.12.1
- fastp=0.23.4
- bwa=0.7.18
- samtools=1.20
- bcftools=1.20
- snpeff=5.2
- tabix=1.20
conda env create -f environment.yml
conda activate bioinfo
snpEff download -v ASM584v2
A.3 Windows 用户:安装 WSL2
Windows 10/11 用户可通过 WSL2 获得完整的 Linux 环境:
# 安装 WSL 与 Ubuntu(在 Windows PowerShell 中以管理员身份运行)
wsl --install -d Ubuntu-22.04
# 重启后,Ubuntu 会自动启动,设置用户名与密码
附录 B 常见问题与排错
| 问题现象 | 原因与解决方法 |
|---|---|
conda: command not found | conda 未加入 PATH。重新打开终端或 source ~/.bashrc |
conda install 速度极慢 | 配置国内镜像源,或用 mamba install 加速 |
bwa index 报错 | 参考基因组文件损坏或格式错误 |
failed to open index | 缺少 BAM 索引。先执行 samtools index |
mpileup fail to load index | BAM 未按坐标排序或索引过期 |
| 变异数为 0 或异常多 | 检查参考序列名是否一致、ploidy 是否设为 1、过滤参数 |
SnpEff database not found | 数据库未下载或名称错误 |
| 比对率异常低(<50%) | 数据与参考不匹配、污染严重或参数错误 |
wget 下载失败 | 网络波动。加 -c 断点续传 |
Permission denied | 权限不足。用 ls -l 检查 |
No space left on device | 磁盘空间不足 |
- 完整阅读报错信息——错误信息通常直接指出了问题所在;
- 检查路径与文件名——相当一部分是拼写或路径错误;
- 检查输入文件——文件是否损坏?索引是否过期?
- 查阅官方文档与社区——Biostars、GitHub Issues;
- 最小化复现——用一个最小的示例定位问题。
附录 C 术语表
| 术语 | 解释 |
|---|---|
| 生物信息学(Bioinformatics) | 运用计算机与统计方法处理、分析、解读生物数据的交叉学科 |
| 高通量测序(NGS) | 可并行测定数百万条 DNA 片段序列的技术 |
| 读段(read) | 测序仪输出的一条短序列 |
| 单端/双端测序(SE/PE) | 只测片段一端 / 两端都测 |
| Phred 分数(Q) | 碱基质量的度量,Q = −10 log10 P |
| FASTA | 存储序列的纯文本格式 |
| FASTQ | 存储序列及其质量分数的格式 |
| SAM/BAM | 存储比对结果的格式(文本/二进制) |
| VCF/BCF | 存储变异位点的格式(文本/二进制) |
| 比对(mapping) | 将 read 定位到参考基因组的过程 |
| MAPQ | 比对质量分数 |
| CIGAR | 描述比对细节的紧凑字符串 |
| 测序深度(depth) | 每个基因组位置平均被覆盖的 read 数 |
| 覆盖度(coverage) | 被至少 1 条 read 覆盖的碱基占比 |
| PCR 重复(duplicate) | 文库扩增产生的坐标相同的冗余 read |
| 变异检测(variant calling) | 从比对结果判定变异位点的过程 |
| SNP | 单核苷酸多态性 |
| InDel | 插入/缺失变异 |
| 基因型(genotype) | 某位点的等位基因组成 |
| 转换/颠换(Ts/Tv) | 嘌呤-嘌呤或嘧啶-嘧啶 / 嘌呤-嘧啶替换 |
| 同义突变(synonymous) | 密码子改变但不改变氨基酸 |
| 错义突变(missense) | 密码子改变导致氨基酸改变 |
| 无义突变(nonsense) | 密码子变为终止密码子 |
| 移码突变(frameshift) | 插入/缺失导致读框移位 |
附录 D 全部命令速查
D.1 模块 1:数据获取
cd ref
wget -c https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/005/845/GCF_000005845.2_ASM584v2/GCF_000005845.2_ASM584v2_genomic.fna.gz
wget -c https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/005/845/GCF_000005845.2_ASM584v2/GCF_000005845.2_ASM584v2_genomic.gff.gz
gunzip GCF_000005845.2_ASM584v2_genomic.fna.gz
cd ../data
wget -c https://ftp.sra.ebi.ac.uk/vol1/fastq/ERR154/027/ERR15404827/ERR15404827_1.fastq.gz
wget -c https://ftp.sra.ebi.ac.uk/vol1/fastq/ERR154/027/ERR15404827/ERR15404827_2.fastq.gz
md5sum *.fastq.gz
D.2 模块 2:质量控制
fastqc -t 4 -o results/qc/ data/*.fastq.gz
fastp -i data/ERR15404827_1.fastq.gz -I data/ERR15404827_2.fastq.gz \
-o results/qc/ERR15404827_1.clean.fastq.gz -O results/qc/ERR15404827_2.clean.fastq.gz \
--html results/qc/fastp.html --json results/qc/fastp.json \
--thread 4 --qualified_quality_phred 20 --unqualified_percent_limit 40 \
--length_required 50 --cut_front --cut_tail
D.3 模块 3:序列比对
bwa index ref/GCF_000005845.2_ASM584v2_genomic.fna
samtools faidx ref/GCF_000005845.2_ASM584v2_genomic.fna
bwa mem -t 4 ref/GCF_000005845.2_ASM584v2_genomic.fna \
results/qc/ERR15404827_1.clean.fastq.gz results/qc/ERR15404827_2.clean.fastq.gz \
> results/align/ERR15404827.sam
D.4 模块 4:比对后处理
samtools view -bS results/align/ERR15404827.sam -o results/align/ERR15404827.bam
samtools sort -@ 4 results/align/ERR15404827.bam -o results/align/ERR15404827.sorted.bam
samtools fixmate -m results/align/ERR15404827.sorted.bam results/align/ERR15404827.fixmate.bam
samtools sort -@ 4 results/align/ERR15404827.fixmate.bam -o results/align/ERR15404827.fixmate.sorted.bam
samtools markdup results/align/ERR15404827.fixmate.sorted.bam results/align/ERR15404827.dedup.bam
samtools index results/align/ERR15404827.dedup.bam
samtools flagstat results/align/ERR15404827.dedup.bam
samtools coverage results/align/ERR15404827.dedup.bam
D.5 模块 5:变异检测
bcftools mpileup --ploidy 1 -f ref/GCF_000005845.2_ASM584v2_genomic.fna \
results/align/ERR15404827.dedup.bam | \
bcftools call -mv -Ov -o results/variants/ERR15404827.raw.vcf
bcftools filter -i 'QUAL >= 30 && DP >= 10' \
results/variants/ERR15404827.raw.vcf -o results/variants/ERR15404827.filtered.vcf
bcftools stats results/variants/ERR15404827.filtered.vcf > results/variants/stats.txt
D.6 模块 6:变异注释
snpEff -v ASM584v2 results/variants/ERR15404827.filtered.vcf > results/annotation/ERR15404827.ann.vcf
bcftools query -f '%CHROM\t%POS\t%REF\t%ALT\t%INFO/ANN\n' results/annotation/ERR15404827.ann.vcf
附录 E 思考题参考答案
以下答案用于自检,建议先独立思考后再对照。部分开放性问题没有唯一答案,重在理解背后的原理。
E.1 模块 1
- 为什么用 .gz 压缩? FASTQ/FASTA 文件体积庞大,gzip 压缩可节省 70-80% 存储与传输成本;且 gzip 是流式压缩,工具可直接读取 .gz 文件。
- R1/R2 的含义 双端测序从同一 DNA 片段的两端各测一条 read,分别存入 R1、R2 文件。若遗漏 R2,则退化为单端数据,比对准确性下降。
- MD5 不一致的可能原因 文件传输损坏、下载不完整、文件被篡改、或下载了错误版本的文件。
E.2 模块 2
- 说明测序循环后期信号衰减、错误率升高。fastp 的
--cut_tail会从末端滑动窗口修剪低质量碱基。 - 过滤会丢弃低质量/过短的 read,故总数减少。损失 >30% 说明数据整体质量差、或过滤参数过严。
- 当插入片段短于测序读长时,测序"读穿"了整个片段,继续读到另一端的接头序列。
E.3 模块 3
- 为什么先建索引? 索引把"逐位置扫描比对"转化为"常数级快速查询",使得数百万条 read 比对成为可能。
- FLAG=99 = 1+2+32+64,即:双端测序、与 mate 均正确比对、mate 在负链、是 read1。
- MAPQ=0 表示比对位置不唯一(可能比对到多个位置,如重复区)。
E.4 模块 4
- 按坐标排序后,同一位置的 read 在文件中连续存放,变异检测可以顺序"堆积"同一位置的 read,避免随机访问带来的巨大开销。
- PCR 重复是同一 DNA 分子的多个扩增拷贝,信息冗余且会放大测序错误;生物学重复是独立来源的样本。变异检测需独立证据,PCR 重复只会放大错误。
- 用"数据量/基因组大小"估算为约 124 Mb / 4.64 Mb ≈ 27×。实际值略低的可能原因:部分 read 被过滤/去重、部分 read 比对到参考基因组之外的序列。
E.5 模块 5
- 二者都是 Phred 尺度的质量分数,但对象不同:FASTQ 的碱基质量衡量"该碱基被测序仪读错"的概率;VCF 的 QUAL 衡量"该位点不是变异(判定错误)"的概率。
- QUAL 反映变异判定的统计置信度,DP 反映证据量。只设 QUAL 会放过"高置信但证据薄弱"的位点。
- 更严的过滤会进一步减少变异数,去掉更多疑似假阳性,但也可能漏掉真实变异(尤其低深度区域)。
E.6 模块 6
- 遗传密码具有简并性(多个密码子编码同一氨基酸),故密码子第三位常发生同义替换而不改变氨基酸。
- 无义突变影响通常更大:它导致蛋白提前截断,几乎必然破坏功能。
- 基因间区不编码蛋白,变异通常不直接影响蛋白功能,因而更"容忍"、更易保留。
附录 F 数据集信息卡与报告模板
F.1 数据集信息卡
F.1.1 主实验数据集:ERR15404827
| 字段 | 值 |
|---|---|
| Run 访问号 | ERR15404827 |
| 样本访问号 | SAMEA118914020 |
| 研究项目 | PRJEB94349 |
| 物种 | Escherichia coli str. K-12 substr. MG1655 |
| 测序平台 | Illumina MiSeq |
| 文库类型 | 双端,WGS,随机打断 |
| 读长 | 250 bp |
| read 对数 | 约 49.7 万 |
| 数据量 | 约 124 Mb(约 27×) |
| R1 下载 | https://ftp.sra.ebi.ac.uk/vol1/fastq/ERR154/027/ERR15404827/ERR15404827_1.fastq.gz |
| R2 下载 | https://ftp.sra.ebi.ac.uk/vol1/fastq/ERR154/027/ERR15404827/ERR15404827_2.fastq.gz |
F.1.2 延伸实验数据集:DRR063436
| 字段 | 值 |
|---|---|
| Run 访问号 | DRR063436 |
| 样本访问号 | SAMD00053107 |
| 研究项目 | PRJDB4884 |
| 物种 | Escherichia coli(野生分离株) |
| 测序平台 | Illumina MiSeq |
| 文库类型 | 双端,WGS,随机打断 |
| 读长 | 75 bp |
| read 对数 | 约 12.4 万 |
| 数据量 | 约 18 Mb(约 4×) |
| R1 下载 | https://ftp.sra.ebi.ac.uk/vol1/fastq/DRR063/DRR063436/DRR063436_1.fastq.gz |
| R2 下载 | https://ftp.sra.ebi.ac.uk/vol1/fastq/DRR063/DRR063436/DRR063436_2.fastq.gz |
F.1.3 参考基因组
| 字段 | 值 |
|---|---|
| 物种 | Escherichia coli str. K-12 substr. MG1655 |
| RefSeq 访问号 | GCF_000005845.2 |
| 染色体序列号 | NC_000913.3 |
| 基因组大小 | 4,641,652 bp |
| SnpEff 数据库名 | ASM584v2 |
F.2 分析报告模板
# 大肠杆菌重测序数据分析报告
## 1. 摘要
(一段话概括:目的、数据、方法、主要结论)
## 2. 数据与方法
- 数据集:ERR15404827(主)/ DRR063436(延伸)
- 参考基因组:GCF_000005845.2 (NC_000913.3)
- 软件版本:FastQC 0.12.1、fastp 0.23.4、BWA 0.7.18、
samtools 1.20、bcftools 1.20、SnpEff 5.2
- 关键参数:质量过滤 Q>=20;比对 BWA-MEM 默认;
变异检测 ploidy=1;过滤 QUAL>=30 && DP>=10
## 3. 结果
- 3.1 质控统计
- 3.2 比对统计
- 3.3 变异检测结果
- 3.4 变异注释结果
## 4. 讨论
- 同源对照接近零变异的科学意义
- 深度对变异检测的影响(对比主/延伸实验)
- 局限性与改进方向
## 5. 结论
(概括最重要的发现与收获)