用于拼接多个片段的序列的算法

时间:2010-10-28 23:34:37

标签: algorithm timing sequencing

我正在研究一个实时嵌入式系统。我正在尝试创建详细的时序分析。我收集了运行时数据,记录了每个中断的开始和停止时间。每个数据突发看起来像这样

 ISR#  time
 -----  ----
  1     34
  end   44
  4     74
  3     80
  end   93
  end   97
  ...

我的输出通道带宽有限,而且我的高精度定时器很快溢出一个字,所以我在〜150微秒的突发中收集数据,然后随着时间推移逐出。 根据这些数据,我已经能够收集每次中断所花费的时间和数量 电话和先发制人。

我想要做的是将典型帧的完整执行序列放在一起,长度约为2 ms。

我发现这几乎就像一个基因排序问题。我有几千个碎片,每个碎片占总帧数的7%。我能够排列它们 - 匹配覆盖框架相同部分的部分 - 这样我就可以构建整个时期的单个事件序列。会有一些帧到帧的变化,但我希望这些可以用最佳匹配类型的算法来解释。

所以我的问题是:进行这种排序有哪些算法?有没有针对DNA或Protiens的现有工具?

1 个答案:

答案 0 :(得分:2)

您的数据似乎特定于应用程序,因此您可能只需要进行实验。首先看看具有中断号(没有定时信息)的ISR调用的顺序是否充分区分;只需要对每个突发进行最后N次调用,并进行搜索,以便在开头附近找到任何其他类似片段的突发。您可以使用任何字符串搜索算法来完成此任务。如果返回的匹配太少,请尝试模糊搜索算法。如果返回的匹配太多,请尝试更智能的匹配算法,该算法还会根据时间的相似性对每个匹配进行加权。总的来说,这不应该太复杂,因为完整的链只有大约15个爆发,而例如在DNA测序中,你需要匹配数百万个非常短的碎片。