Algorithm 从多个片段拼接序列的算法

Algorithm 从多个片段拼接序列的算法,algorithm,timing,sequencing,Algorithm,Timing,Sequencing,我正在研究一个实时嵌入式系统。我试图创建一个详细的时间分析。我收集了运行时数据,记录了每个中断的开始和停止时间。每一次数据突发都是这样的 ISR# time ----- ---- 1 34 end 44 4 74 3 80 end 93 end 97 ... 我的输出通道带宽有限,而且我的高精度定时器很快就溢出了一个字,所以我收集了大约150微秒的数据,然后随着时间的推移逐渐输出。 从这些数据中,我已经能够收集每次中断所花

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

 ISR#  time
 -----  ----
  1     34
  end   44
  4     74
  3     80
  end   93
  end   97
  ...
我的输出通道带宽有限,而且我的高精度定时器很快就溢出了一个字,所以我收集了大约150微秒的数据,然后随着时间的推移逐渐输出。 从这些数据中,我已经能够收集每次中断所花费的时间和数量 电话和先发制人

我想做的是将一个典型帧的完整执行序列放在一起,该帧约2毫秒长

我突然想到,这几乎就像一个基因测序问题。我有几千个片段,每个片段占总框架的7%。我应该能够把它们排成一行——匹配帧中相同部分的部分——这样我就可以为整个时期构建一个单一的事件序列。会有一些帧到帧的变化,但我希望这些可以在最佳匹配类型的算法中考虑


所以我的问题是:有什么算法可以进行这种排序?是否有任何现有的工具不是针对DNA或蛋白质的

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

另一个需要追求的角度是压缩记录,这样您可以在日志中容纳10倍以上的数据。时间戳的增量压缩、将地址折叠成索引、使用可变长度记录以便更简洁地表达“end”,等等。这不是一个坏主意,但它已经很好地压缩了。每个记录使用4位作为ID,12位作为时间戳。我只能通过降低计时器的分辨率来减少每个戳记的位数。将其降到14位是可能的,但这会给通过16位串行通道传输数据带来麻烦。我还不完全理解——您是否执行了多个独立的运行,每个运行约2ms,每次捕获约150ms?中断开始和停止的顺序是确定的(每次运行都相同)还是非常接近?如果是这样,那么是的,这就像DNA序列组装;如果不是的话,我不知道你希望如何匹配它们。我正在执行一个具有固定2毫秒处理帧的系统的长期运行。每一帧都会发生相同的事件序列(由于外部接口,时间变化较小)。当它运行时,我捕获了数百个150毫秒的中断活动样本。我希望这些变化足够小,一个最好的匹配算法仍然可以拼凑出碎片。