轻量单对单局部比对判定器,面向序列聚类分析(如 CD-HIT 风格的成对同源判定)。
PairAlign
00 Remarks
与 DiamondBlastp 的区别:DiamondBlastp 针对“一条查询 vs 一个库” 做加速(双索引 / SIMD / 调度),而本类只解决“两条序列之间的最佳比对”这一原子操作, 在聚类分析需要两两序列做判定的场景下更合适——避免为每条 pair 重复建立库索引。 底层直接调用 GCModeller 标准的 SmithWaterman 局部比对, 返回 HSP / Output 对象,供上层聚类流程直接使用。
01 Syntax
02 Methods
| Name | Overloads | Summary |
|---|---|---|
| AlignBestHSP | 2 | FastaSeq 重载,直接传入序列对象,内部使用其 FastaSeq.SequenceData。 |
| AlignDetailed | 1 | 完整局部比对,返回 Output,包含全部 HSP 链、DP 矩阵与回溯路径, 供需要多条 HSP(如重叠高分区)的聚类分析使用。 |
| ComputeStats | 1 | 计算给定 HSP 的 BitScore 与 E-value(Karlin-Altschul 模型,BLOSUM62 统计量)。 |
03 Fields
| Name | Overloads | Summary |
|---|---|---|
| Matrix | 2 | 局部比对使用的替换矩阵,默认 BLOSUM62。 |
04 Members
String, String, Int32)对两条蛋白序列做最佳局部比对,返回得分最高的单条 HSP。
这里走的是 GSW.GetBestHSP() 轻量级路径,而不是 SmithWaterman.GetOutput()。后者会额外构建完整的 Output: 复制一份动态规划得分矩阵、为方向矩阵逐行建立视图、并计算完整回溯路径, 单次比对的额外开销与 query*subject 成正比(千级长度蛋白序列可达数十 MB), 且这些数组会进入大对象堆(LOH)。
由于本方法只需要一条最佳 HSP,在聚类分析的两两比对循环(O(n^2))中若使用 完整路径,将造成进程常驻内存持续增长且无法回收。
| Name | Type | Description |
|---|---|---|
query | String | 查询序列(字符形式)。 |
subject | String | 参考(主题)序列(字符形式)。 |
minWidth | Int32 | 最短 HSP 片段长度过滤(0 表示不限制)。 |
得分最高的 HSP;若无正分比对则返回 Nothing。
FastaSeq, FastaSeq, Int32)FastaSeq 重载,直接传入序列对象,内部使用其 FastaSeq.SequenceData。
FastaSeq, FastaSeq, Double, Int32)完整局部比对,返回 Output,包含全部 HSP 链、DP 矩阵与回溯路径, 供需要多条 HSP(如重叠高分区)的聚类分析使用。
返回的 Output 持有动态规划矩阵(其方向矩阵与 SmithWaterman 共享行数组),属于重量级对象。 调用方在用完之后应当及时 Dispose(Output 已实现 IDisposable),否则在循环调用场景下会造成内存持续增长。 若只需要最佳的那一条比对,请改用 PairAlign.AlignBestHSP()。
| Name | Type | Description |
|---|---|---|
cutoff | FastaSeq | 收集 HSP 的得分阈值(占最高分比例,0-1;0 表示收集所有正分 HSP)。 |
计算给定 HSP 的 BitScore 与 E-value(Karlin-Altschul 模型,BLOSUM62 统计量)。
| Name | Type | Description |
|---|---|---|
hsp | HSP | 由 PairAlign.AlignBestHSP() / PairAlign.AlignDetailed() 产出的比对。 |
queryLength | Int32 | 查询序列全长。 |
subjectLength | Int32 | 参考序列全长。 |
局部比对使用的替换矩阵,默认 BLOSUM62。