Re-squiggle 算法
简介
纳米孔读取产生的电流信号水平数据称为squiggle。将这些squiggle信息进行基底呼叫通常与参考序列相比会包含一些错误。Re-squiggle算法定义了从squiggle到参考序列的新分配,即重新squiggle。
Re-squiggle算法是Tombo框架的基础。该算法输入包含原始信号和相关基底呼叫的读取文件(FAST5格式)。基底呼叫映射到基因组或转录组参考,然后根据预期的电流水平模型将原始信号分配给参考序列。
快速概述
-
必须在修改基底检测或其他Tombo命令之前,在一组读取上运行
tombo resquiggle
命令。 -
必须提供包含FAST5读取文件和基因组/转录组参考的目录。
- 参考序列可能是之前已知的,或者是从这个样本中发现的。
-
重要的是,参考序列被假定为正确,因此通过抛光创建个性化参考可能会改善性能,特别是对于分歧样本或组装不良的参考。
-
原始读取FAST5文件必须包含基底呼叫。
- 使用
tombo preprocess annotate_raw_with_fastqs
命令从FASTQs集合中添加基底呼叫到原始读取文件。 - 读取文件不需要包含
Events
数据(由albacore的fast5
模式输出)。
- 使用
-
Tombo目前仅支持DNA和RNA数据(包括R9.4和R9.5;1D和1D2数据;R9.*.1化学)等。其他数据可能会产生次优结果(例如R9.0或R7数据)。
-
DNA和RNA读取将自动检测并相应处理(使用
--dna
或--rna
显式设置)。- Tombo不执行拼接映射。因此,对于RNA样本,必须向re-squiggle命令传递转录组参考。有关Tombo RNA处理的更多详细信息,请参见:doc:
rna
部分。
- Tombo不执行拼接映射。因此,对于RNA样本,必须向re-squiggle命令传递转录组参考。有关Tombo RNA处理的更多详细信息,请参见:doc:
-
使用
--processes
选项在多个核心上运行tombo resquiggle
。
算法细节
Re-squiggle算法分为以下五个主要步骤:
- 基因组映射
- 信号归一化
- 事件检测
- 序列到信号分配
- 解决跳过的碱基
基因组映射
基因组映射通过Python API minimap2
(mappy python package <https://pypi.python.org/pypi/mappy>
_)执行。
FAST5文件中读取基底呼叫序列的位置由命令行选项--basecall-group
和--basecall-subgroups
定义。这些参数的默认值指向albacore或tombo preprocess annotate_raw_with_fastqs
的默认基底呼叫位置。
成功映射的读取的基因组序列随后传递到:ref:seqeunce_to_signal
阶段。
信号归一化
在事件检测和信号到序列分配步骤的第一次迭代之前,使用中值偏移和MAD(中值绝对偏差)比例参数对读取的原始信号进行归一化。
[ NormSignal = \frac{RawSignal - Shift}{Scale} ]
截至Tombo版本1.3,在第一次迭代之后,通过匹配预期信号水平与从信号到序列分配的第一次迭代观察到的信号水平&#