文献:基于环境DNA宏条形码的无脊椎动物多样性研究: 生物信息学流程比较与评估,生物多样性
研究内容:在四川岷江流域的 5 条河流和云南九大高原湖泊采集了574 份水样。比较分析12种生信处理方法,探究生信分析流程对最终检测到的淡水无脊椎动物多样性的影响。
基因片段:mlCOIintF(5ʹ-GGWACWGGWTGAACWGTWTAYCCYCC-3ʹ;Leray et al., 2013)和 HCO2198(5ʹ-TAAACTTCAGGGTGACCAAAAAATCA-3ʹ;Folmer et al., 1994)扩增线粒体细胞色素 c 氧化酶 I (mitochondrial cytochrome c oxidase I,COI) 基因约 313 bp 长度的片段,该引物已被证明在淡水无脊椎动物多样性检测中具有良好的表现(Chen et al., 2025)。
4 种聚类或降噪方法:UPARSE、Swarm、UNOISE、DADA2
3 种分类分配方法:BOLDigger、BLASTN、朴素贝叶斯分类器
作者比较了互相结合的 12 种方法各流程检出的分子分类单元(MOTU)数量、覆盖的分类群范围、鉴定的精细程度,以及推断出的群落组成。
结论:
DADA2+BOLDigger 的组合检出了最多的 MOTU,分类覆盖范围也最广:得到 2,777 个 MOTU,覆盖 14 个门、83 个目,并鉴定出 120 个种。相比之下,UPARSE+BLASTN 仅得到 984 个 MOTU,说明流程选择可以明显影响多样性检测结果。
总体上,DADA2 保留的 MOTU 最多;分类鉴定方面,BOLDigger 和 BLASTN 能将更多序列鉴定到较细的分类层级,而朴素贝叶斯分类器的结果大多只能鉴定到“门”。分类分配方法还显著影响了推断出的群落组成。
四种聚类或降噪方法:
这 4 种方法都在处理同一个难题:测序得到的序列有些是真实的生物差异,有些只是 PCR 或测序错误,应该怎样区分并整理它们?
其中,UPARSE、Swarm 主要做“聚类”,UNOISE、DADA2 主要做“降噪”。
两类方法的主要区别是:
- 聚类关注:哪些序列足够相似,可以归为同一个组?
- 降噪关注:哪些序列差异是真实的,哪些差异是错误产生的?
1. UPARSE:按照相似度,把相近序列归为一组
在这篇文章中,作者把这条路线称为 UPARSE,具体使用VSEARCH 的cluster_size命令,按 97% 相似性聚类。
比如,几条序列之间只有少量碱基差异,符合聚类条件,就可能被归入同一个OTU,并由一条代表序列表示这个组。
可以理解为:设定一个“相似到什么程度算一组”的标准,再进行分组。
它的特点是:
- 可以合并同一物种内部的一部分序列变异,让结果更简洁。
- 结果受相似性阈值影响:标准过宽可能合并不同物种,过严可能把同一物种拆开。
- 97% 是序列分组规则,不是适用于所有无脊椎动物的物种界线。
此外,本文这条路线在聚类前已经进行了错误清理和嵌合体移除,因此不能把它理解成只做一次简单分组。
2. Swarm:从局部小差异出发,逐步形成序列组
Swarm 也输出OTU,但不采用统一的 97% 全局相似性阈值。
它从某条序列出发,寻找与其差异很小的序列,再继续寻找与这些序列相近的其他序列,逐步形成一个簇。算法还会结合序列丰度结构等信息处理分组。
可以用一个简化例子理解:
Swarm 可以通过这些局部关系形成序列组,而不只是判断每条序列是否与一个代表序列达到 97% 相似性。这个例子用于说明思路,实际分组还受算法规则和参数影响。
它的特点是:
- 能适应不同序列群之间不同的变异程度。
- 不依赖统一的全局百分比阈值,但仍然需要参数。
- 依然属于聚类,会将部分不同序列合并,不能把每个 OTU 直接当成一个物种。
3. UNOISE:根据“出现次数+差异程度”,识别错误序列
UNOISE 的核心思路是:如果一条低频序列与一条高频序列非常接近,那么前者可能是后者的错误版本。
例如:
UNOISE 会结合两者的丰度关系和序列差异,判断 B 是否更可能由 A 的错误产生,而不是自动把所有相近序列都合并。
本文通过 VSEARCH 的cluster_unoise实现 UNOISE3 算法,输出ZOTU,即零半径 OTU。
它的特点是:
- 旨在保留真实的精确序列变体。
- 使用序列丰度和差异关系判断错误,通常计算较快。
- 对真实的低丰度变体也存在误删风险,尤其当它与高丰度序列非常接近时。
“零半径”不代表完全没有误差,而是指最终保留的是精确序列单元,而非按 97% 相似度形成的序列组。
4. DADA2:建立测序错误模型,判断差异是否超过错误预期
DADA2 根据测序数据学习错误规律,例如不同碱基质量下,某种碱基被误读成另一种碱基的可能性。
随后判断:
观察到的这条不同序列,能否仅由测序错误解释?还是需要认为它是真实存在的另一个变体?
它输出ASV,即扩增子序列变体。
同样是“与高丰度序列差一个碱基”的低频序列,DADA2 会进一步结合错误模型进行判断,有可能把仅差一个碱基的真实变体区分出来。
它的特点是:
- 能利用碱基质量及数据中学习到的错误规律。
- 适合保留较精细的序列变异信息。
- 通常比 UNOISE 更复杂、计算要求更高;结果也受数据质量、过滤参数和错误模型表现影响。
- ASV 仍可能有误检,也不能直接等同于物种。
在本文的淡水无脊椎动物 COI 数据和参数条件下,Swarm 比 UPARSE 检出了更多 MOTU,DADA2 比 UNOISE 检出了更多 MOTU。
不能说检出更多OTU的方法的效果就更好,既可能是减少了漏检,也可能是保留了更多种内变异,或者增加了误检。这篇研究使用自然环境样品,没有完整的真实物种名单,因此无法准确区分这些情况。
三种分类分配方法:
这三种方法负责回答:处理后的 DNA 序列,属于哪一类生物?能鉴定到门、纲、目,还是具体物种?
1. BOLDigger:到条形码数据库中寻找匹配,并整理分类结果
可以理解为:拿着一段 DNA“条形码”,到参考库中查身份。
BOLD 是一个生物条形码数据库,其中保存了参考 DNA 序列及对应的分类信息。BOLDigger 是帮助查询 BOLD、整理匹配结果并给出分类分配的软件工具。本文将这条路线归为“全局比对”。
例如,你有一条未知 COI 序列:
未知序列 → 查询 BOLD → 找到相似的参考序列 → 确定分类身份如果匹配足够好、参考信息也支持较精细的鉴定,就可以分配到种或属;如果证据不足,就只鉴定到科、目等较高层级。
本文采用的相似性阈值包括:
这些是本研究采用的判定规则,不是所有动物都适用的分类界线。
另外,这里的“97%”用于分类鉴定,与前面 UPARSE 用于聚类的“97%”是两个不同的操作。
2. BLASTN:寻找 DNA 序列之间匹配较好的局部区段
可以理解为:把未知序列与参考序列逐一比较,寻找最相似的片段。
BLASTN 是核酸序列的局部比对工具。它可以找到两条序列中相似程度较高的区段,不要求整条序列从头到尾都匹配。
一个示意例子:
未知序列: [————目标片段————] 参考序列:[前段][————相似片段————][后段]它会提供匹配对象、相似度、比对长度和统计指标等信息,再据此进行分类分配。本文使用的是下载到本地的 BOLD 参考数据。
需要注意:**找到最高分匹配,不等于已经可靠地鉴定出物种。**还需要看匹配覆盖了多少序列,以及多个相近匹配是否指向同一个分类群。
例如,若同样好的匹配分别属于某个属中的两个物种,现有证据可能只支持鉴定到属。
3. 朴素贝叶斯分类器:学习序列特征,再预测分类身份
可以理解为:先学习不同生物的 DNA“语言习惯”,再判断未知序列更像哪一类。
它先利用已知分类身份的参考序列进行训练,学习不同分类群的短 DNA 片段组成特征。之后,模型根据未知序列中的这些特征,给出分类预测。
已知序列+分类名称 → 训练分类器 未知序列 → 分析序列特征 → 预测分类身份它通常利用k-mer,也就是长度为 k 的短序列。例如把ATGCA拆成长度为 3 的片段,会得到:
ATG、TGC、GCA不同分类群的序列可能具有不同的短片段组合规律,分类器就利用这些规律做判断。“朴素”指模型采用了简化的特征独立性假设。
本文先从 BOLD 参考序列中提取目标扩增区域来训练分类器,再保留置信度至少为 90% 的分类结果。这个置信度不能直接理解为“有 90% 的概率鉴定正确”。
在这篇文章里,谁表现更好?
本文发现,BOLDigger 的分类覆盖范围最广,BOLDigger 和 BLASTN 的鉴定结果整体上也比朴素贝叶斯分类器更精细。朴素贝叶斯分类器输出的大部分 MOTU 只能鉴定到门水平。
但不能据此认为贝叶斯方法在所有研究中都较差。这个结果对应的是本文的无脊椎动物 COI 片段、参考数据和参数设置。而且作者没有已知完整物种组成的标准样品,无法把“鉴定得更细”直接等同于“鉴定得更准确”。
三种方法共同的前提是:参考数据必须足够完整且可靠。数据库缺少某个物种,或参考序列被错误标注,都会影响最终鉴定。
对于 eDNA 物种注释来说,主要可以分为两种方法,一种是基于序列比对的方法,如blastn,一种是基于k-mer方法,如RDP classifier。
一、 什么是 k-mer 方法?
在生物信息学中,k-mer 里的 “k” 代表一个正整数,“mer” 代表单体单位(聚体)。
定义:k-mer 是指长度为。。。的核苷酸短片段(子字符串)。
提取方式:通过“滑动窗口(Sliding Window)”算法,步长为 1,将一条长的 eDNA 序列切割成一系列重叠的、长度为。。。的小片段。
💡 举个例子(假设 ,即 8-mer):
如果您的 eDNA 序列是:ATGCAAACTGA(共 11 个碱基)
我们用长度为 8 的窗口从左往右滑动切割:
第 1 个 8-mer:ATGCAAAC
第 2 个 8-mer:TGCAAACT
第 3 个 8-mer:GCAAACTG
第 4 个 8-mer:CAAACTGA
最终,这 1 条 11bp 的序列就被转化为了一个由 4 个 8-mer 组成的“词袋(Bag of Words)”。
二、 它为什么叫“分类器方法(Classifier)”?(以 RDP Classifier 为例)
k-mer 方法的核心就是分类器。它不去做局部的、精细的碱基对齐,而是利用自然语言处理(NLP)或概率统计学的思想:
1. 训练阶段(Training)
分类器先“阅读”已知物种的参考数据库(如 SILVA、Greengenes 或自定义参考库)。
它统计出每个物种(如大熊猫、野猪、某种细菌)基因中,各种不同 k-mer 出现的条件概率(或者频数特征)。
这样,数据库就变成了一个个物种特异性的“词频字典”。例如,“大熊猫字典”里某些特定的 8-mer 出现概率极高,而“小熊猫字典”里则是另外一些。
2. 分类预测阶段(Classifying)
当您输入一条未知的 eDNA query 序列时,分类器不与数据库里的序列一条条比对,而是直接将该序列拆成大量的 k-mer。
它使用朴素贝叶斯(Naive Bayes)等分类算法,计算:“在观察到这些 k-mer 特征词后,这条序列属于大熊猫的概率有多大?”
最终根据概率值(如 RDP 中的置信度 Bootstrap value),将序列指派(Classify)到对应的分类阶元(界、门、纲、目、科、属、种)。
三、 序列比对(BLAST) vs. k-mer 分类器(RDP)的本质区别
| 维度 | 基于序列比对的方法 (如 BLAST / Smith-Waterman) | 基于 k-mer 的分类器方法 (如 RDP Classifier / SINTAX) |
| 核心算法 | 动态规划(Dynamic Programming)或启发式局部碱基比对。寻找两条序列的最佳匹配路径。 | 序列词频空间(k-mer Frequency)的统计学概率计算(如朴素贝叶斯、贝叶斯概率模型)。 |
| 计算速度 | 🐌较慢。序列数量巨大时,一对一比对会消耗海量 CPU 和内存。 | ⚡极快。无需对齐,直接查字典和做代数乘法,适合处理百万级的二代/三代测序 Reads。 |
| 错配与 Gap 容忍度 | 高。能够通过罚分机制允许碱基发生突变(Mismatch)和插入/缺失(Indels/Gaps)。 | 较低。k-mer 是一对一严格匹配的,序列上的一个单碱基突变(SNP)会导致周围。。。个 k-mer 全部失效。 |
| 未建档/新物种敏感度 | 较好。即使是新物种,也能由于局部保守区相似而比对上近缘种(便于后续人工判定和 LCA 托底)。 | 较差。若未知物种的 k-mer 频数特征未出现在训练集中,分类器可能给出完全错误的分类概率或拒绝分类。 |
| 典型软件 | BLASTn, MEGAN, vsearch (global alignment) | RDP Classifier, QIIME2 里的 q2-feature-classifier, Kraken2 (精确k-mer匹配) |
四、 论文写作高阶小贴士(补充第三种方法)
如果在写论文时,在介绍 eDNA 物种注释方法学分类时,其实除了以上两种,还可以提到第三种更前沿的方法。这样的综述或方法学描述会显得非常全面、极其严谨:
基于序列比对的方法(Alignment-based):如BLAST、BOLDigger。
基于 k-mer/机器学习分类器的方法(Alignment-free / Classifier-based):如RDP Classifier、Kraken2。
基于系统发育学的方法(Phylogeny-based):如EPA-ng、pplacer(系统发育推断进化树定位)。
原理:将 eDNA 序列直接“插入”到已经构建好的骨架进化树(Reference Tree)上,看它落在哪个分枝。这是系统发育学和进化生态学最推崇、但计算量也最大的一种严谨方法。
✍️ 论文方法学部分可以直接参考的中文表述:
“本研究在对 eDNA 宏条形码测序数据进行物种注释时,主要参考了目前主流的两大方法学体系:即基于局部序列比对的方法(Alignment-based methods,如 BLASTn)与基于序列统计特征的分类器方法(Classifier-based / Alignment-free methods,如 RDP Classifier)。
前者通过计算碱基级别的对齐相似性,后者则采用 k-mer(单体子字符串)词频统计与朴素贝叶斯分类模型,避开了繁复的对齐计算,极大提升了高通量大样本的解算效率。为了兼顾注释的精确度与保守性,本文最终选取了……”
Kraken2:典型的基于 k-mer 的分类引擎
Kraken2是目前宏基因组和 eDNA 领域最著名的基于 k-mer 准确匹配的分类器。
1. 工作原理:
构建数据库阶段:Kraken2 会将参考数据库(如 NCBI RefSeq)中的所有基因组序列切成固定长度的短片段(默认 的 k-mer)。对于每一个 k-mer,算法会计算出包含该 k-mer 的所有物种在系统发育树上的最低共同祖先(LCA),并将这个 k-mer -> LCA 的映射关系存入检索树(Database Map)。
物种注释阶段:当输入你测序得到的 eDNA Read 时,Kraken2 会把这条 Read 拆解出所有的 ,然后快速去刚才建好的检索树里查找对应的物种 LCA。最后,通过在分类树上进行“投票”累计(寻找权重最高的路径),决定这条 Read 的最终归属。
特点:速度极快,内存占用高,适合大规模、高通量的数据筛查。
MIDORI:专为真核生物线粒体设计的数据库
MIDORI (或 MIDORI2)是由学术界专门针对真核生物线粒体 DNA (mtDNA)整理、过滤和去冗余后形成的参考数据库。
因为 eDNA 脊椎动物监测最常扩增的是线粒体基因(如 12S rRNA, 16S rRNA, COI, Cytb 等),而 NCBI 的库太大且冗余,MIDORI 团队帮科学家把 GenBank 里的线粒体序列提取并净化出来,做成了高度可信的“精品参考集”。
为什么会有“MIDORI 是基于 k-mer 方法”的误解?
这是因为 MIDORI 数据库在发布时,为了方便科研人员,官方会提前将数据库打包好并提供多种不同软件格式的下载包。其中包括:
FASTA 格式:用于BLASTn等(基于序列比对的方法)。
SINTAX / RDP 格式:用于RDP Classifier / USEARCH SINTAX等(基于 k-mer 的分类器方法)。
QIIME2 格式:用于q2-feature-classifier(基于 k-mer + 朴素贝叶斯分类的方法)。
也就是说,你可以用基于 k-mer 的分类器去跑 MIDORI 数据库,也可以用基于 alignment (BLASTn) 的方法去跑 MIDORI 数据库。
四、 总结:eDNA 物种注释的“两要素”
在进行 eDNA 生态学分析撰写论文时,你需要同时声明你所使用的**【算法/软件】和【参考数据库】**:
如果你采用的是基于 K-mer 的方法:
“本研究采用基于 k-mer 树状精确匹配的Kraken2算法(或基于 8-mer 朴素贝叶斯的RDP Classifier/SINTAX),检索MIDORI2动物线粒体参考数据库进行分类学指派。”
如果你采用的是基于局部比对的方法:
“本研究采用基于局部比对搜索的BLASTn算法,将 eDNA 序列比对至MIDORI2线粒体参考数据库进行物种鉴定。”