WFAA wavefront
在 TALCO-WFAA 中,每个 tile 内参与计算的 read sequence 和 reference sequence 片段长度通常不相等,也不是按序列等长切分的。
原因在于 TALCO 的 tiling 不是把两条序列简单切成同样长的片段,而是沿着 WFA-Adapt 的三角矩阵波前推进。每个 tile 覆盖的是 DP 矩阵中的一部分,具体消耗多少 read 和 reference 碱基,取决于该 tile 内对角线 的范围和 offset。
1. WFA-Adapt 的坐标关系
- 对角线定义:,其中 是 reference 的位置, 是 read 的位置。
- 某个 cell 的 offset 就是 ,而 。
- 所以同一个 tile 内,不同对角线上的 cell 对应的 和 范围不同。
在一个 tile 中,对角线 的范围是 。对于每条对角线,最远到达的 由 offset 决定,对应的 。
因此:
- reference 消耗的碱基数大约由 的范围决定;
- read 消耗的碱基数大约由 的范围决定;
- 由于 通常不为 0, 和 的范围一般不同,所以两个片段长度不相等。
2. 全局比对中 read 和 reference 长度本身就不同
TALCO-WFAA 默认执行全局比对,从 到 。其中:
- 是 reference 长度;
- 是 read 长度。
论文实验中,read 长度是 10–100 Kbp,reference 是对应的参考区域,长度与 read 大致相当但不完全相等。所以整体上两条序列长度就不同。
在 tiling 后,每个 tile 只是这个全局比对的一小段,read 和 reference 片段长度自然也不相等。
3. 硬件中序列片段的存储
TALCO-WFAA 的每个 extend 和 compute 模块都有一对 SRAM 存储 query(read)和 reference 序列。由于访问模式不规则,这些 SRAM 中存的是当前 tile 所需的序列片段,而不是整条长序列。
论文给出的 SRAM 配置是 16x(32KB + 16x2KB + 1KB),其中 32KB 用于存储序列片段。这个容量足够容纳一个 tile 内所需的 read 和 reference 碱基,但 read 和 reference 片段长度不一定相同,硬件会根据实际需要读取相应数量的碱基。
4. 总结
- 不一定一样长。
- TALCO-WFAA 的 tile 是按 DP 矩阵的波前推进划分的,不是按序列等长切分。
- 每个 tile 内,read 和 reference 消耗的碱基数由对角线 和 offset 决定,通常不相等。
- 整体上,read 和 reference 长度也可能不同,全局比对的目标就是从 到 ,所以每个 tile 处理的片段长度自然不同。
下面从三个角度回答你的问题:序列长度、静态存储位置、比对范围。
1. 参考序列和读段序列的长度
论文实验设置(Section V):
- 读段(read / query):使用 PBSIM2 模拟长读段,长度分别为 10 Kbp、20 Kbp、50 Kbp、100 Kbp,错误率 1%–30%。
- 参考序列(reference):从人类基因组 GRCh38 的 1–22、X、Y 染色体中,由 PBSIM2 提供与每个读段对齐的对应子区域。因此参考序列长度与读段长度大致相当,可能略长或略短(因为读段可能有插入/删除),但量级相同,也是 10–100 Kbp 级别。
在硬件加速器中,由于 TALCO 采用 tiling,片上内存只保留当前 tile 所需的序列片段,所以序列总长度不影响片上内存,只影响 tile 数量和总计算时间。
2. 哪些是静态存在于 PE 中的?
TALCO-XDrop
图 7 的 systolic PE 阵列中:
- PE 阵列沿**查询序列(read)**的维度展开,每个 PE 固定负责查询序列的一个碱基(或一小段)。
- 查询序列的碱基以 3 bits/碱基的形式存在每个 PE 的局部寄存器/SRAM 中,可以看作静态绑定在 PE 上。
- 参考序列则通过 FIFO / 广播路径流式输入,依次经过各个 PE。
- 图 7b 显示“Query blocking”:查询序列被分成块,每块对应一组 PE,所以并不是整个读段静态存在,而是当前 tile 对应的查询片段静态在 PE 中。
TALCO-WFAA
图 8 的架构中:
- 由于 WFA-Adapt 的访问模式不规则,每个 extend 模块和 compute 模块都配有一对 SRAM,分别存储查询序列和参考序列的片段。
- 序列不是静态绑定在 PE 内部,而是存在每个模块的 SRAM 中,按需读取。
- 同样,片上只保留当前 tile 所需的序列片段,整个长读段会被分块处理。
总结:
- TALCO-XDrop:查询序列片段静态在 PE 中,参考序列流式通过。
- TALCO-WFAA:查询和参考序列都存储在模块的 SRAM 中,不是静态在 PE 寄存器里。
- 两者都只保留当前 tile 的序列片段,不是整条长序列。
3. 两者是从起点对比到参考序列的终点吗?
TALCO-WFAA
- 底层算法是 WFA-Adapt,默认执行全局比对:从起点 到终点 ,其中 是参考序列长度, 是查询序列长度。
- 所以 TALCO-WFAA 是从起点比对到参考序列的终点(同时也是查询序列的终点)。
TALCO-XDrop
- 底层算法是 X-Drop,X-Drop 本身可以用于全局、半全局或局部比对,取决于具体实现和终止条件。
- 论文中 TALCO-XDrop 与 Libgaba 比较,Libgaba 执行的是 semi-global alignment with X-Drop termination:
- 通常从查询序列的一端开始,到查询序列的另一端结束;
- 参考序列可以有多余的未比对部分(即不需要到达参考序列的终点)。
- 因此 TALCO-XDrop 在论文中不一定比对到参考序列的终点,而是到查询序列的终点,具体取决于底层 X-Drop 的配置。
- 但 TALCO 算法本身通过
Clast支持全局和局部:- 全局比对:
Clast = (m,n); - 局部比对:
Clast为最大分格子。 - 所以 TALCO-XDrop 可以根据底层算法选择是否比对到参考终点。
- 全局比对:
总结:
- TALCO-WFAA:全局比对,从起点到参考序列终点。
- TALCO-XDrop:semi-global(论文中),从起点到查询序列终点,参考序列不一定到终点;也可配置为全局或局部。