概述
K-mer 分析将生物序列分解为固定长度 k 的所有可能的子串,并计算它们的频率。这种简单而强大的技术无需比对即可捕获基因组和转录组的组成特性,使其计算效率高且无需参考。 K-mer 频率分布揭示了任何组装步骤之前原始读数的基因组大小、杂合性、重复内容和测序错误率。 k 的选择涉及一个权衡:小 k 值 (k < 20) 提供稳健的计数,但区分能力有限,而大 k 值 (k > 50) 提供高特异性,但覆盖率较低。
关键概念
k-mer 频谱(k-mer 出现频率的直方图)在理想数据中遵循泊松分布。测序错误导致的错误 k 聚体显示为单例(频率 1),而真正的基因组 k 聚体在预期覆盖深度处形成峰值。基因组重复会在更高的多重性下产生额外的峰。 Jellyfish 和 KMC 等工具使用哈希表或后缀数组有效地计算 k-mers。除了计数之外,基于 k-mer 的方法还包括用于系统发育的 k-mer 距离(两个样本之间共享 k-mer 的比例)、用于估计基因组大小的 k-mer 覆盖率,以及用于通过删除低于覆盖阈值的 k-mer 进行纠错的 k-mer 谱。
应用程序
K-mer 分析是下一代测序质量控制不可或缺的一部分,可在组装前检测污染并估计覆盖范围。在[细菌遗传学](/guides/bacterial- Genetics.html) 中,基于 k-mer 的方法通过菌株独特的组成特征来区分菌株。宏基因组分箱使用 k-mer 频率向量对来自同一生物体的重叠群进行聚类。 DNA 测序 项目使用 k-mer 计数,通过替换产生低频 k-mer 的错误碱基来纠正测序错误。
实用协议
对于 Jellyfish 的 k-mer 计数,请从原始 FASTQ 文件开始:“jellyfish count -m 21 -s 100M -t 8 -C -o kmers.jfreads.fastq”。参数:“-m 21”将 k-mer 大小设置为 21(平衡特异性和覆盖范围的常见默认值),“-s 100M”设置初始哈希大小(大型基因组增加),“-C”对两条链进行计数(规范 k-mer),“-t 8”使用 8 个线程。对于大型基因组(人类,~3 Gb),增加哈希大小:“-s 3G”。生成 k-mer 频率直方图:jellyfish histo -o kmers.histo kmers.jf。绘制直方图以可视化 k-mer 谱:频率 1 处的第一个峰代表测序错误(单例),预期覆盖深度处的主峰代表真实的基因组 k-mer,较高频率处的其他峰表示重复序列。使用以下公式估计基因组大小:genome_size =total_k_mers /peak_Frequency。例如,如果主峰位于覆盖度 20× 且总 k 聚体为 6000 万个,则基因组大小 ≈ 300 万个碱基对。使用 GenomeScope(网络工具)拟合 k-mer 谱模型并估计基因组大小、杂合性和重复内容。对于污染检测,请针对非常大的数据集运行“KMC”:“kmc -k21 -m64 -t8 -ci1reads.fastq kmc_output workdir”。将 k 聚体谱与已知参考特征进行比较;与预期基因组不匹配的意外高频 k-mers 可能表明细菌或接头污染。对于宏基因组分箱,使用“seqtk comp”或自定义脚本在 5 kb 窗口中沿着组装的重叠群计算 k-mer 频率向量(通常是四核苷酸频率,k=4),然后使用 k-means 或在“MetaBAT2”中实现的分层聚类通过组成相似性对重叠群进行聚类。为了区分菌株,使用“Mash”计算查询序列和参考数据库之间的 k-mer 距离:“mash sketchgenome.fasta;”混搭 distgenome.msh 参考.msh > distances.txt`。 Mash 距离近似于基因组之间的突变率。
资源: Lab Lexicon K-mer 成分分析仪