我有一堆(数百万)小实验的日志。
每个日志都包含一个条目列表(数十到数百个)。每个条目都是一个时间戳和一个事件 ID(有数千个唯一的事件 ID,每个事件 ID 都可能在日志中出现多次)。这是一个实验的日志示例:
1403973044 阿尔法 1403973045 测试版 1403973070 伽玛 1403973070 阿尔法 1403973098 三角洲
我需要找到许多实验中常见的序列。
一个序列是多个(至少两个)事件 ID,它们彼此跟随:
α 测试版 伽玛
共同序列是可以在至少两个日志中找到的序列。日志
α 测试版 伽玛 三角洲 ε
和
微塔 测试版 伽玛 ε 卡帕
有一个共同的顺序:
测试版 伽玛 ε
(显然,我在这里寻找最长的公共序列。)
我对经常发生的大序列感兴趣。我事先不知道截止值。比如说,我需要在前 1000 个(或前 30%)中按长度计算前 10 个(或者,也许是前 100 个序列)。(此标准是随机给出的,几乎可以任意更改以简化数据处理。)
关于如何以可扩展的方式执行此操作的任何建议?
我希望尽量减少我拥有的代码量,但我不想使用专有程序来获得解决方案。
...我认为在生物信息学中解决了一个有点类似的问题。但是他们的字母比我短得多:-)错了!蛋白质组学处理更大的字母!(感谢@JayInNyc)