Re-squiggle算法
从纳米孔读取产生的电流信号水平数据被称为“squiggle”。基于这种squiggle信息进行碱基调用通常会与参考序列存在一些错误。Re-squiggle算法定义了一种新的从squiggle到参考序列的分配,因此称为re-squiggle。
Re-squiggle算法是Tombo框架的基础。该算法以包含原始信号和相关碱基调用的读取文件(FAST5格式)作为输入。碱基调用被映射到基因组或转录组参考序列,然后根据预期的电流水平模型将原始信号分配给参考序列。
TL;DR:
- 在运行修改碱基检测或其他Tombo命令之前,必须对一组读取运行
tombo resquiggle
命令。 - 必须提供包含FAST5读取文件和基因组/转录组参考的目录。
- 参考序列可以是已知的或从该样本中发现的。
- 重要的是,假设参考序列是正确的,因此创建个性化参考可能会提高性能,特别是对于差异较大的样本或组装不良的参考序列。
- 原始读取的FAST5文件必须包含碱基调用。
- 使用
tombo preprocess annotate_raw_with_fastqs
命令将FASTQ文件中的碱基调用添加到原始读取文件中。 - 读取文件不需要包含“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处理的更多详细信息,请参见RNA部分。
- 使用
--processes
选项在多个核心上运行tombo resquiggle
。
算法细节
Re-squiggle算法分为五个主要步骤,描述如下。
基因组映射
基因组映射通过minimap2
的Python API(mappy
Python包)执行。
读取的碱基调用序列位置在FAST5文件中由--basecall-group
和--basecall-subgroups
命令行选项定义。这些参数的默认值指向albacore或tombo preprocess annotate_raw_with_fastqs
的默认碱基调用位置。
成功映射的读取的基因组序列随后传递给序列到信号分配阶段。
信号归一化
在事件检测和信号到序列分配步骤的第一轮迭代之前,读取的原始信号使用中位数偏移和MAD(中位数绝对偏差)比例参数进行归一化。
[ \text{NormSignal} = \frac{\text{RawSignal} - \text{Shift}}{\text{Scale}} ]
从Tombo版本1.3开始,在第一轮迭代之后,通过将预期信号水平与第一轮信号到序列分配中观察到的信号水平匹配来计算新的偏移和比例参数。计算预期信号水平与观察信号水平之间关系的Theil-Sen估计量,并将其用作前一轮比例参数的校正因子。还计算了每个读取中每个碱基的截距中