跳至正文
专栏目录 · 第 1 篇 / 共 6 篇
本文目录 · 在当前篇章内跳转
3376 字
17 分钟
基因组组装与图泛基因组 · 第 1 篇 基因组组装与图泛基因组 · 第 1 篇

从测序读段开始组装基因组

基因组组装从测序读段开始。读段是测序仪读出的一小段 DNA 序列,英文写作 read。组装软件寻找读段之间的重叠,再推断较长的连续序列;这些连续序列叫作 contig。重复序列与两套同源染色体的差异,都可能让这个过程出现多种连接选择。

先分清输入文件与分析目的#

输入文件中记录什么在本篇的用途
普通双端短读段两份 FASTQ,分别记录每个 DNA 片段两端的序列与质量统计 k-mer 频数,估计基因组特征
PacBio HiFi 读段高准确度长读段,常保存为 FASTQ运行 hifiasm 组装
Oxford Nanopore(ONT)读段纳米孔测序得到的长读段,读长与质量受建库和测序条件影响按数据类型选择 ONT 专用模式或联合组装流程
ONT 超长读段(ultra-long,UL)保留较长 DNA 分子后得到的读段,重点看能够跨过重复区域的长读段是否充足与 HiFi 联合,帮助解析重复区域和较长的连接关系
Hi-C 双端读段来自染色体空间接触实验的成对序列为单倍型分组提供长距离信息
组装结果FASTA 或 GFA后续质量检查与染色体挂载

FASTA 保存序列名称和碱基;FASTQ 还保存逐碱基质量。GFA 是图格式,除了序列片段,还能记录它们的连接。读段的 FASTQ 与组装结果的 FASTA 不能互相替代。

HiFi 和 ONT 都属于长读长测序技术。HiFi 读段的准确性有利于区分相近序列,ONT 超长读段能提供跨越较长重复区域的连续信息;Hi-C 则提供 DNA 片段之间的空间接触信息。联合组装把这些证据用于不同问题,不能把三类文件混在一起当作同一种输入。ONT 测序原理、hifiasm 联合组装方法

本篇命令默认软件已经安装,并且从项目工作目录执行。先为输出建立目录。

Terminal window
mkdir -p work/survey work/assembly results logs
jellyfish --version
genomescope.R --version
hifiasm --version
seqkit version

软件未找到时,先按官方安装说明配置环境。后面使用的 data/short_R1.fastq、data/short_R2.fastq 是经过质量检查的普通短读段;data/hifi.fastq.gz 是 HiFi 读段。压缩的短读段可先用 gzip -dc 解压到工作目录,原始文件保留。

data/ont_ul.fastq.gz 表示同一个体的 ONT 超长读段,已完成碱基识别和质量检查。不要将不同个体的数据混入一套二倍体组装,也不要仅凭文件名含有 ONT 就认定它符合超长读段输入要求。

联合组装前,分别检查两类长读段#

SeqKit 可以直接读取压缩 FASTQ,汇总各文件的序列条数、总碱基数和读长统计。

Terminal window
seqkit stats -a -T \
data/hifi.fastq.gz data/ont_ul.fastq.gz \
> results/long-read-stats.tsv

检查两类数据各自的读长分布与质量报告,尤其要看 ONT 中能跨越目标重复区域的长读段,而不只看最长的一条。SeqKit 的 N50 按碱基总量累计,计算方式与下一篇组装 N50 相同,但这里统计的是原始读段。SeqKit 统计说明

用同一个单倍体基因组大小估计值 G,可以分别报告名义覆盖深度:

CHiFi=BHiFiG,CONT=BONTGC_{\mathrm{HiFi}}=\frac{B_{\mathrm{HiFi}}}{G}, \qquad C_{\mathrm{ONT}}=\frac{B_{\mathrm{ONT}}}{G}

B 是对应数据经过质量处理后保留的总碱基数。这个平均值不表示每个区域都被均匀覆盖,也不表示两套同源拷贝各自都获得同样深度。两种技术的读长与误差特点不同,应分别报告,不能只给出相加后的一个覆盖数。

k-mer 频数在数什么#

把一条序列按固定长度切出重叠片段,每次向后移动一个碱基,得到的片段叫作 k-mer。长度至少为 k 的读段,理论上可以取出这些片段:

Nk=L−k+1N_k = L-k+1

L 是读段长度,k 是片段长度。含不确定碱基的窗口可能被计数软件跳过;相同片段出现多次,累计到同一个计数中。

频数直方图的横轴是“一个 k-mer 出现了几次”,纵轴是“有多少种 k-mer 出现了这么多次”。低频区域可能混有测序错误,杂合位点与重复序列也会改变曲线形状。只看最高的峰,无法可靠地认定哪个峰对应单拷贝序列。

在理想的单倍体、均匀覆盖且错误已经排除的情况下,可以用一个近似理解基因组大小估计:

G≈NreliableCkG \approx \frac{N_{\mathrm{reliable}}}{C_k}

分子是可信 k-mer 的总出现次数,分母是单拷贝序列的 k-mer 覆盖深度。二倍体中两个同源拷贝的贡献会改变峰的位置,不能把这个近似公式直接套到任意一个峰上。

用 Jellyfish 计数#

下面把两端普通短读段放在同一次计数中。21 和 100M 展示参数写法,需结合序列长度、复杂度和可用内存调整。

Terminal window
jellyfish count \
-m 21 -s 100M -t 8 -C \
-o work/survey/reads.k21.jf \
data/short_R1.fastq data/short_R2.fastq
jellyfish histo -t 8 work/survey/reads.k21.jf \
> work/survey/reads.k21.histo

-m 设置 k;-t 设置线程数;-C 把一个片段和它的反向互补序列合并计数。-s 100M 设置哈希表容量,表示约一亿个条目,不表示使用 100 MB 内存。实际内存还受 k 和计数存储方式影响。Jellyfish 参数说明

输出 .jf 是计数数据库,.histo 是用于拟合的频数表。检查直方图的高频端是否被输出范围截断;高覆盖或重复较多时,应查看 jellyfish histo --help 中的上限参数,保留分析需要的频数范围。

用 GenomeScope 2 拟合频数曲线#

GenomeScope 2 根据倍性建立 k-mer 频数的混合模型。模型中的不同成分对应不同拷贝数,拟合后估计基因组大小、杂合程度及重复组成。它比直接用总数除峰值考虑了更多情况,但结果仍依赖测序质量、覆盖情况和倍性假设。GenomeScope 2 说明

每个成分使用负二项分布,允许计数的波动大于简单泊松分布所能描述的范围。软件通过非线性最小二乘拟合,让模型曲线与观察到的频数曲线尽量接近。拟合时需要给定倍性,软件不会仅靠这个参数验证物种的真实倍性。GenomeScope 2 方法论文

Terminal window
genomescope.R \
-i work/survey/reads.k21.histo \
-o results/genomescope \
-k 21 -p 2

-k 必须与计数时一致,-p 2 表示按二倍体模型拟合。查看输出中的参数报告和拟合图,确认模型曲线是否解释了主要峰形。如果拟合明显偏离观察值,应检查污染、覆盖不均与倍性设定,暂时不要用拟合结果决定后续组装参数。

两种基因组大小估计提供不同证据

流式细胞术通过 DNA 含量估计基因组大小,k-mer 方法从测序序列推断大小。两者都有实验或模型条件。结果不一致时,需要检查各自的误差来源,不能预先认定测序估计一定更准确。

根据数据选择 hifiasm 的组装模式#

hifiasm 在读段重叠关系中保留单倍型差异,再生成连续序列。单倍型可以理解为同一条染色体拷贝上的一组序列。二倍体有两套同源拷贝,组装时要尽量区分它们,并避免把真实重复序列误当成同源拷贝。hifiasm 项目

chhylp123
/
hifiasm
Waiting for api.github.com...
00K
0K
0K
Waiting...

本篇命令按 hifiasm 0.25.0 核对。先看手上有哪些数据,再选择下列一种模式;使用不同输出前缀,避免混用中间缓存。

只有 HiFi:先得到基础组装#

只有 HiFi 读段时,可以先运行基础模式:

Terminal window
hifiasm -t 8 -o work/assembly/hifi \
data/hifi.fastq.gz \
2> logs/hifiasm-hifi.log

HiFi+ONT 超长读段:联合解析重复区域#

--ul 后面放 ONT 超长读段,命令末尾仍是 HiFi。hifiasm 的联合模式利用两类读段构建的图及其对应关系,借助跨越重复的长距离序列信息解析连接;这一步在组装过程中使用 ONT,不只是对最终 FASTA 做碱基纠错。双图组装方法

Terminal window
hifiasm -t 8 -o work/assembly/hifi_ont \
--ul data/ont_ul.fastq.gz \
data/hifi.fastq.gz \
2> logs/hifiasm-hifi-ont.log

这条命令不要求有 Hi-C。超长读段能否解析某个区域,取决于实际读长、覆盖与序列可区分程度,不能据此保证得到完整分相或无缺口染色体。

HiFi+ONT 超长读段+Hi-C:再加入分相信息#

同一个体还有 Hi-C 数据时,可以把两端分别传给 --h1 和 --h2。

Terminal window
hifiasm -t 8 -o work/assembly/hifi_ont_hic \
--ul data/ont_ul.fastq.gz \
--h1 data/hic_R1.fastq.gz \
--h2 data/hic_R2.fastq.gz \
data/hifi.fastq.gz \
2> logs/hifiasm-hifi-ont-hic.log

ONT 提供跨区域的连续序列,Hi-C 为单倍型分组提供长距离联系,两者不能互相替代。后面的输出示例以这条联合命令为主。hifiasm 0.25.0 联合输入接口

HiFi+Hi-C:没有 ONT 时的分相路线#

只有 HiFi 与 Hi-C 时,保留下面这条路线:

Terminal window
hifiasm -t 8 -o work/assembly/hic \
--h1 data/hic_R1.fastq.gz \
--h2 data/hic_R2.fastq.gz \
data/hifi.fastq.gz \
2> logs/hifiasm-hic.log

这些命令是按输入条件选择的分支,不要求依次全部执行。上面的命令没有启用 --dual-scaf;如果结果仍未达到染色体尺度,就需要后续挂载。启用该选项则会利用两套单倍型之间的对应关系做自挂载,产生的连接仍需验证。

区分联合组装入口与 ONT 单独组装入口

HiFi+ONT 超长读段使用 --ul。--ont 是把 ONT 读段作为主输入的另一种组装模式;0.25.0 文档面向 ONT simplex R10 FASTQ,simplex 表示单链读段,R10 是纳米孔类型。这里的两条联合命令不要追加 --ont,也不要把普通 ONT 读段直接接在 HiFi 文件后面。参数说明

选择正确的输出,再转换为 FASTA#

unitig 是根据明确的读段重叠关系连接出的序列单元,常作为构建 contig 的中间结果。查看文件名时,需要同时确认它属于哪个组装阶段和哪一种运行模式。

输出名称含义
hifi.bp.p_ctg.gfaHiFi 基础模式的主组装
hifi.bp.hap1.p_ctg.gfa、hifi.bp.hap2.p_ctg.gfa仅 HiFi 模式下的两套部分分相结果
hifi_ont.bp.p_ctg.gfaHiFi+ONT 超长读段模式的主组装
hifi_ont_hic.hic.hap1.p_ctg.gfa、hifi_ont_hic.hic.hap2.p_ctg.gfaHiFi+ONT 超长读段+Hi-C 模式的两套分相 contig 图
hic.hic.hap1.p_ctg.gfa、hic.hic.hap2.p_ctg.gfa不含 ONT 的 HiFi+Hi-C 模式结果

命名前面的 hifi_ont_hic 来自自定义输出前缀,后面的 .hic. 来自运行模式。具体产物应与运行版本的输出文档核对。hap1 和 hap2 也不能仅凭名字认定为完整的父源和母源染色体,跨 contig 的来源一致性需要额外证据。

从 HiFi+ONT 超长读段+Hi-C 模式的两份 contig 图导出序列,作为下一篇的输入:

Terminal window
awk '$1 == "S" {print ">" $2; print $3}' \
work/assembly/hifi_ont_hic.hic.hap1.p_ctg.gfa > results/hap1.contigs.fa
awk '$1 == "S" {print ">" $2; print $3}' \
work/assembly/hifi_ont_hic.hic.hap2.p_ctg.gfa > results/hap2.contigs.fa

这段命令提取 GFA 的序列行,不能用于不含序列的 noseq.gfa。基础模式应改为自己实际生成的图文件。hifiasm FASTA 导出说明

Verkko 是另一条 HiFi+ONT 联合路线#

Verkko 同样可以联合高准确度长读段与 ONT 超长读段。它先构建多重 de Bruijn 图,也就是用序列片段的连接关系组织组装,再将 ONT 读段比对到图上,逐步解析重复与分支,最后生成一致序列。Verkko 方法论文

按 Verkko v2.3.2 的接口,HiFi 放在 --hifi 后,ONT 超长读段放在 --nano 后。先查看任务计划,并按计算节点配置资源:

Terminal window
verkko -d work/verkko \
--hifi data/hifi.fastq.gz \
--nano data/ont_ul.fastq.gz \
--snakeopts "--dry-run"

确认依赖和资源设置后,去掉 --snakeopts "--dry-run" 才会执行分析。有 Hi-C 时,可按该版本接口补充 --hic1 和 --hic2;这是另一套软件流程,不要求在 hifiasm 后再跑一遍。

Verkko 的主输出包括 assembly.fasta。加入合适分相信息后,还可能产生 assembly.haplotype1.fasta 和 assembly.haplotype2.fasta。应按实际产物接入质检,不套用 hifiasm 的 GFA 文件名。Verkko 输入与输出

完整染色体需要逐条验证

端粒是染色体末端的重复序列;T2T 表示从一端端粒到另一端端粒的完整组装。HiFi+ONT 可以支持朝这个目标推进,但采用联合组装不等于已经得到 T2T。仍需检查缺口、错误连接与分相质量,也不能把人类端粒重复模式直接套到其他物种。

换组装软件前,先记录问题#

原来的笔记记录过:约 50 倍 HiFi 数据使用 hifiasm 后,Hi-C 互作图中出现了可疑结构,随后尝试 Canu。这次排查的分相状态和 scaffold 方向仍需结合相应接触图与验证记录判断。

Canu 是另一条长读段组装路线。旧文“Canu 在 2021 年停止维护”的说法不成立,官方至少在 2024 年发布过 v2.3。选软件时应核对读段类型、版本和输出目的,再用同一套质量指标比较结果。Canu v2.3 发布记录

下一篇从导出的 FASTA 开始,检查序列连续性与完整性,再说明 Hi-C 挂载和人工校正。