生物信息学入门实验项目

从原始测序数据到变异位点 · 大肠杆菌全基因组重测序分析 · 面向本科及以上学生的入门级实验教材

第一章 项目介绍与学习目标

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 知识目标

  1. 理解高通量测序(Illumina)的基本原理与数据特征;
  2. 掌握 FASTA、FASTQ、SAM/BAM、VCF 等核心生物信息学文件格式的结构与含义;
  3. 理解序列比对(BWA-MEM)与变异检测(bcftools)背后的基本算法思想;
  4. 理解 Phred 质量分数、测序深度、覆盖度、假阳性等关键概念;
  5. 掌握变异注释(SnpEff)的意义与变异类型的分类方法。

1.2.2 技能目标

  1. 熟练使用 Linux 命令行完成文件的查看、压缩、统计等基本操作;
  2. 使用 conda/mamba 搭建可复现的生物信息学分析环境;
  3. 从公共数据库下载参考基因组与测序数据,并校验数据完整性;
  4. 使用 FastQC 与 fastp 进行测序数据质量评估与过滤;
  5. 使用 BWA-MEM 将测序读段比对到参考基因组,并使用 samtools 完成排序、去重、统计;
  6. 使用 bcftools 进行变异位点检测与过滤,并解读 VCF 结果;
  7. 使用 SnpEff 对变异进行功能注释与分类统计;
  8. 撰写规范的分析报告,以图表与文字呈现分析结果。

1.2.3 能力目标(可迁移的通用能力)

  • 工程化思维:学会通过目录组织、脚本化、记录命令等方式管理一个可复现的分析项目;
  • 排错能力:学会阅读错误信息、查阅软件文档与社区资源独立解决问题;
  • 数据素养:学会对分析结果保持批判性审视,区分"技术噪音"与"真实信号"。

1.3 项目总览

1.3.1 分析流程

本项目的主干流程如图 1.1 所示,共分为七个模块。整个流程是一个典型的"变异检测流水线"(Variant Calling Pipeline)。

七大分析模块总览

模块 1:数据获取
下载参考基因组 + 测序数据(ENA/NCBI),校验完整性
模块 2:数据质控
FastQC 评估质量 → fastp 过滤修剪低质量读段
模块 3:序列比对
BWA-MEM 将读段比对到参考基因组,生成 SAM/BAM
模块 4:比对后处理
samtools 排序、去重、索引、统计覆盖度与深度
模块 5:变异检测
bcftools mpileup + call 检测 SNP/InDel,并过滤
模块 6:变异注释
SnpEff 注释变异功能,分类统计(错义/同义等)
模块 7:结果汇总与报告
汇总统计、解读结果、撰写报告、延伸实验

图 1.1:本项目主干分析流程

1.3.2 数据集方案

本项目提供两套真实测序数据集,形成"主实验 + 延伸实验"的递进设计:

项目主实验延伸实验
数据集编号ERR15404827DRR063436
样本菌株大肠杆菌 K-12 MG1655大肠杆菌野生分离株
测序平台Illumina MiSeqIllumina 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 基本命令(cdlsmkdircpmv),了解绝对路径与相对路径的概念;
  • 英语基础:能借助词典阅读软件帮助文档与数据库页面(本项目的命令与报错信息均为英文)。
零基础也不要紧

如果你从未接触过 Linux 命令行,建议在开始前花 2-3 小时完成一个 Linux 入门速成教程,重点掌握文件与目录操作、通配符、管道(|)与重定向(>>>)即可,本项目会在每个步骤给出完整的、可直接复制的命令。

第二章 实验环境与软件清单

2.1 硬件与系统要求

项目推荐配置
操作系统Linux(推荐 Ubuntu 20.04 及以上)或 macOS;Windows 建议使用 WSL2
CPU4 核及以上
内存8 GB 及以上
硬盘至少 20 GB 可用空间(软件环境 + 数据 + 中间文件)
网络可访问 NCBI/ENA 等国际数据库
Windows 用户特别注意

生物信息学工具绝大多数为 Linux/macOS 原生命令行程序。Windows 用户强烈建议安装 WSL2(Ubuntu) 后再进行本项目。

2.2 所需软件清单

所有软件均通过 conda(或更快的 mamba)统一安装。

软件验证版本用途许可证
Miniconda24.x包与环境管理器BSD
mamba1.5.x更快的 conda 替代品BSD
FastQC0.12.1测序数据质量评估GPL
fastp0.23.4质量过滤与修剪MIT
BWA0.7.18读段比对(BWA-MEM)GPL
samtools1.20SAM/BAM 处理与统计MIT/BSD
bcftools1.20变异检测与过滤MIT/BSD
SnpEff5.2变异功能注释LGPL
tabix1.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
为什么需要 conda-forge 与 bioconda

绝大多数生物信息学软件由社区维护在 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 数据库名可能变化

不同 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 级,但单碱基错误率相对较高。

代际代表平台读长主要特点
第一代Sanger800-1000 bp准确率极高,通量低,成本高
第二代Illumina50-300 bp高通量、低成本、低错误率(<1%)
第三代PacBio / Nanopore10 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)

  1. 与模板互补的 dNTP 被 DNA 聚合酶掺入;
  2. 激发荧光,记录每个簇发出的颜色,据此判断该位置掺入的碱基;
  3. 切除荧光基团与终止子,进入下一轮合成。

如此循环,每次读出一个碱基,最终获得每个簇的序列,即一条测序读段(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 分数错误概率准确率常用标记
Q1010%90%低质量
Q201%99%一般合格线
Q300.1%99.9%高质量
Q400.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. 第 1 行(标识行):以 @ 开头,包含 read 的唯一标识符;
  2. 第 2 行(序列行):碱基序列(A/T/C/G/N);
  3. 第 3 行(分隔行):以 + 开头;
  4. 第 4 行(质量行):与第 2 行等长的质量字符。
@ERR15404827.1 1/1
AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATT
+
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII

4.3 SAM/BAM 格式:比对结果的存储

SAM(Sequence Alignment/Map)是存储"读段比对到参考基因组"结果的文本格式;BAM 是其二进制压缩版本。

4.3.1 SAM 的 11 个必选字段

编号字段名含义
1QNAMEread 名称
2FLAG位标志,记录比对状态
3RNAME参考序列名
4POS比对起始位置(1-based)
5MAPQ比对质量分数
6CIGAR描述比对细节的紧凑字符串
7RNEXTmate 所在的参考序列名
8PNEXTmate 的比对位置
9TLEN模板(插入片段)长度
10SEQread 的碱基序列
11QUALread 的碱基质量

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 构建的全文索引。其思想:

  1. 将参考基因组的所有"循环移位"按字典序排序,取每行最后一列,得到 BWT 字符串。这个变换是可逆的
  2. FM-index 在 BWT 上支持"反向搜索(backward search)",可在 O(m) 时间内(m 为 read 长度)快速定位某个短序列在参考基因组中的所有出现位置;
  3. 比对一条 read 时,BWA 从 read 末端开始逐碱基"反向搜索",一旦发现不匹配,立即回溯。

5.1.2 seed-and-extend 策略

BWA-MEM 采用"种子-扩展"(seed-and-extend)策略:

  1. 种子查找:从 read 中提取若干短的"种子",利用 FM-index 快速找到候选位置;
  2. 链化(chaining):将同一条 read 的多个种子候选位置"串联"成可能的一致比对;
  3. 扩展(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美国 NCBISRR、SAMN
ENA欧洲 EBIERR、SAMEA
DDBJ SRA日本 DDBJDRR、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 下载链接?

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"

本地计算的 MD5ENA 官方提供的 MD5 逐字符比对,完全一致即表示文件完整无损。

6.3 思考题

思考题 1

为什么参考基因组的 FASTA 文件在解压前是 .gz 压缩格式?这种压缩对生物信息学数据分析有什么意义?

思考题 2

ERR15404827 的 R1 与 R2 两个文件分别代表什么?如果只下载了 R1 而遗漏 R2,对后续分析会有什么影响?

思考题 3

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 含量

大肠杆菌基因组的 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 思考题

思考题 1

FastQC 报告显示某数据末端质量骤降到 Q10 以下,这说明什么?fastp 的哪个参数可以处理这一问题?

思考题 2

为什么过滤后的读段总数通常略少于过滤前?如果损失超过 30%,可能意味着什么?

思考题 3

"接头污染"是如何产生的?为什么它主要出现在 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 索引 vs. samtools 索引

二者不可混用: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 思考题

思考题 1

为什么 BWA 要先"建索引"再比对?请从计算复杂度角度思考。

思考题 2

SAM 文件的 FLAG 字段值为 99,请拆解它表示的含义。

思考题 3

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 思考题

思考题 1

为什么要对 BAM 按坐标排序?如果不排序,markdup 和变异检测会怎样?

思考题 2

PCR 重复与"生物学重复"有何本质区别?为什么要去除 PCR 重复而不是保留它们来"增加深度"?

思考题 3

主实验的预期平均深度约 27×。请用"数据量/基因组大小"估算一次并与 samtools coverage 实际值对比。

第十章 模块 5:变异检测

模块目标

本模块是整个项目的核心。我们将综合所有覆盖到每个基因组位置的 read 信息,使用 bcftools 检测单核苷酸多态性(SNP)与插入缺失(InDel),并对变异结果进行质量过滤与统计解读。

10.1 背景知识:变异检测的两步流程

本项目使用的 bcftools 将变异检测拆分为两个可组合的步骤:

  1. mpileup(堆积):将覆盖同一位置的 read 堆积,统计 A/C/G/T 支持数与质量;
  2. 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?

大肠杆菌是单倍体。指定 --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)

真实生物变异中转换多于颠换,Ts/Tv 比值通常在 2-3 左右。若过滤后 Ts/Tv 异常(如 <1),往往提示仍有大量假阳性。

10.2.5 步骤 5:解读主实验的"近乎零变异"结果

最重要的科学收获

主实验的样本与参考基因组同为 MG1655,理论上应完全一致。因此过滤后你很可能得到极少量甚至 0 个变异——这并非"实验失败",恰恰是正确的科学结论!它验证了:

  1. 分析流程本身没有系统性引入大量假阳性;
  2. 过滤策略有效地去除了测序/比对错误产生的噪音;
  3. 变异检测的意义在于"区分真实信号与背景噪音",而不是"找到越多越好"。

10.3 思考题

思考题 1

VCF 中 QUAL 字段与 FASTQ 中碱基质量(Phred 分数)有什么联系与区别?二者分别衡量"什么出错"的概率?

思考题 2

为什么过滤条件要同时考虑 QUAL 和 DP?只用一个条件会有什么问题?

思考题 3

若把过滤条件改为 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 思考题

思考题 1

同义突变为什么不改变氨基酸?这体现了遗传密码的什么特性?

思考题 2

错义突变与无义突变哪个对蛋白质功能的影响通常更大?为什么?

思考题 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 比值记录记录
错义突变数记录记录
同义突变数记录记录
讨论要点
  1. 为什么延伸实验检测到大量变异,而主实验几乎为零?
  2. 两个数据集的 Ts/Tv 比值有何差异?低深度数据的 Ts/Tv 是否更偏离理论值?
  3. 4× 深度下过滤参数应如何调整?
  4. 结合本项目,谈谈"测序深度是变异检测质量的基石"的理解。

12.5 项目总结

数据获取 → 质量控制 → 序列比对 → 比对后处理 → 变异检测 → 变异注释 → 结果解读
进一步学习建议
  • 学习 GATK——人类/二倍体基因组变异检测的行业标准;
  • 学习 RNA-seq 分析流程(比对、定量、差异表达);
  • 学习 Snakemake / Nextflow 等工作流语言,将流程自动化;
  • 学习 Python/R 数据可视化,提升结果呈现能力。

附录 A 软件与环境清单汇总

A.1 完整软件清单

软件版本用途所属频道
Miniconda24.x环境管理器官方安装脚本
mamba1.5.x快速包管理conda-forge
FastQC0.12.1质量评估bioconda
fastp0.23.4质量过滤bioconda
BWA0.7.18序列比对bioconda
samtools1.20BAM 处理bioconda
bcftools1.20变异检测bioconda
SnpEff5.2变异注释bioconda
tabix1.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 foundconda 未加入 PATH。重新打开终端或 source ~/.bashrc
conda install 速度极慢配置国内镜像源,或用 mamba install 加速
bwa index 报错参考基因组文件损坏或格式错误
failed to open index缺少 BAM 索引。先执行 samtools index
mpileup fail to load indexBAM 未按坐标排序或索引过期
变异数为 0 或异常多检查参考序列名是否一致、ploidy 是否设为 1、过滤参数
SnpEff database not found数据库未下载或名称错误
比对率异常低(<50%)数据与参考不匹配、污染严重或参数错误
wget 下载失败网络波动。加 -c 断点续传
Permission denied权限不足。用 ls -l 检查
No space left on device磁盘空间不足
排错的通用方法论
  1. 完整阅读报错信息——错误信息通常直接指出了问题所在;
  2. 检查路径与文件名——相当一部分是拼写或路径错误;
  3. 检查输入文件——文件是否损坏?索引是否过期?
  4. 查阅官方文档与社区——Biostars、GitHub Issues;
  5. 最小化复现——用一个最小的示例定位问题。

附录 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

  1. 为什么用 .gz 压缩? FASTQ/FASTA 文件体积庞大,gzip 压缩可节省 70-80% 存储与传输成本;且 gzip 是流式压缩,工具可直接读取 .gz 文件。
  2. R1/R2 的含义 双端测序从同一 DNA 片段的两端各测一条 read,分别存入 R1、R2 文件。若遗漏 R2,则退化为单端数据,比对准确性下降。
  3. MD5 不一致的可能原因 文件传输损坏、下载不完整、文件被篡改、或下载了错误版本的文件。

E.2 模块 2

  1. 说明测序循环后期信号衰减、错误率升高。fastp 的 --cut_tail 会从末端滑动窗口修剪低质量碱基。
  2. 过滤会丢弃低质量/过短的 read,故总数减少。损失 >30% 说明数据整体质量差、或过滤参数过严。
  3. 当插入片段短于测序读长时,测序"读穿"了整个片段,继续读到另一端的接头序列。

E.3 模块 3

  1. 为什么先建索引? 索引把"逐位置扫描比对"转化为"常数级快速查询",使得数百万条 read 比对成为可能。
  2. FLAG=99 = 1+2+32+64,即:双端测序、与 mate 均正确比对、mate 在负链、是 read1。
  3. MAPQ=0 表示比对位置不唯一(可能比对到多个位置,如重复区)。

E.4 模块 4

  1. 按坐标排序后,同一位置的 read 在文件中连续存放,变异检测可以顺序"堆积"同一位置的 read,避免随机访问带来的巨大开销。
  2. PCR 重复是同一 DNA 分子的多个扩增拷贝,信息冗余且会放大测序错误;生物学重复是独立来源的样本。变异检测需独立证据,PCR 重复只会放大错误。
  3. 用"数据量/基因组大小"估算为约 124 Mb / 4.64 Mb ≈ 27×。实际值略低的可能原因:部分 read 被过滤/去重、部分 read 比对到参考基因组之外的序列。

E.5 模块 5

  1. 二者都是 Phred 尺度的质量分数,但对象不同:FASTQ 的碱基质量衡量"该碱基被测序仪读错"的概率;VCF 的 QUAL 衡量"该位点不是变异(判定错误)"的概率。
  2. QUAL 反映变异判定的统计置信度,DP 反映证据量。只设 QUAL 会放过"高置信但证据薄弱"的位点。
  3. 更严的过滤会进一步减少变异数,去掉更多疑似假阳性,但也可能漏掉真实变异(尤其低深度区域)。

E.6 模块 6

  1. 遗传密码具有简并性(多个密码子编码同一氨基酸),故密码子第三位常发生同义替换而不改变氨基酸。
  2. 无义突变影响通常更大:它导致蛋白提前截断,几乎必然破坏功能。
  3. 基因间区不编码蛋白,变异通常不直接影响蛋白功能,因而更"容忍"、更易保留。

附录 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. 结论
(概括最重要的发现与收获)