我有一些数据描述了一组有序的离散事件(或状态)。有 34 种可能的状态,它们可能以任何顺序出现并可能重复。每个事件序列可以包含任意数量的事件,关键是有超过 2 个事件序列。我的最终目标是将这些序列聚集成相似的子集,但我的直觉是,除非这些序列对齐使得等效事件在所有序列中占据相同位置,否则这将毫无意义。
我非常熟悉生物序列的多重比对,但我遇到的所有软件(MUSCLE、MAFFT、T-COFFEE、Clustal* 等)都需要 DNA、RNA 或 AA 序列,而且我有更多的状态比任何这些,所以我不能让他们工作。
我在 R 中找到了成对比对算法的各种实现,例如 Needleman-Wunsch,但到目前为止还没有遇到任何多序列比对算法的任何通用(非生物)实现。
例如,假设我的数据如下所示:
1: ABCDEFG
2: ACDGH
3: BDEFEGI
4: AH
5: DEGHI
我的目标是让它看起来像这样:
1: ABCDEF-G--
2: A-CD---GH-
3: -B-DEFE--I
4: A-------H-
5: ---DE--GHI
其中-
符号表示此序列中没有事件。这是一个简化的示例,实际上,我正在寻找以-
与生物序列 MSA 算法相同的方式惩罚打开间隙 ( ) 的方法。
我发现的唯一一个似乎可能做到这一点的软件是 Alphamalig ( http://alggen.lsi.upc.es/recerca/align/alphamalig/intro-alphamalig.html ) 但它很旧而且我不能让它在我的机器上工作。理想情况下,我想要可以在 R 中实现的东西。