【发布时间】:2020-07-23 07:03:55
【问题描述】:
我有一个 3 列和 859 行的数据框。数据框就像
df1:
MacroNode Prefix Suffix
AAACCGCCAATATCTCGACGAGAAAAGCGAC GCCAACTGGATAACCACGCCCTG GCCAACTGGATAACCACGCCC
ATTTCTGCGAGGTGCAGGGCAATTACATCAT TAGGCCTT AAAACCCTTGGAA
这些基本上是图的节点和前缀和后缀边:
macronode + suffix = prefix of next macronode + that next macronode
我必须看看这个数据框中存在的行可以达到的最大拉伸量是多少。因此,我认为首先我必须合并行然后进行比较。但我无法理解如何做到这一点。欢迎任何想法。
预期结果
我在这里给出一个简短的数据框
玩具 df:
MacroNode Prefix Suffix
GC T A
CA G C
AC C T
CT A A
正如您在此处看到的,如果您将宏节点的字符与第一行的后缀字符 (GC + A) 相等,则它等于下一行的前缀字符 + 下一行的宏节点的字符 (G + CA)。
但在我的数据框中,不能保证行像我提到的玩具示例中那样是连续的。
然后输出应该看起来像 最大连续路径为: TGCAGCACCACTACTA,16 个字符。
原始数据框的前几行:
MacroNode Prefix
1. AAACCGCCAATATCTCGACGAGAAAAGCGAC GCCAACTGGATAACCACGCCCTGAGACTCAAGGGCGT
2. AAACTTCTGCCGGAATATAAAGCCGCGCCGG AGCAAAGCGCGCCACTTCACCCTGAGCTT
3. AAAGCATTGTGGCCGGAACCGATGACGCGCC CGGCGTCCCCTGGATGATGGCTTT
4. AACACCACGCTGGAGATGGTTGCTGAACGTG AAATTATTAGAATTACAAGGGATTGCC
5. AACCAGAGCGTTCTGTTACGTGATGTGAACG AAGTTGCGCCGGGTAGGCGTTACTTTGCTG
6. AACGAAGTTCAGCCGCGTGCGAACGGTCAGG GGTATACGCTTCTGCTTCACGAATGTATTGCTGTT
7. AACTCGGGGCTCGGTCAGCACACCACGACCG AAAGAGATCCTGACCAACGATATCTCTGAC
8. AAGCGGTTGAGGAAGGGAAAATCGCGGAAAC ACCGATCCGGGCTGCGCTATCCGGG
9. AAGGCGCTCGTTGATGAACTGGAGCTGGCGC AATTTCGCGTTGCAGTCTGACTCTGCACGTCTT
10. AATATCGACCAGCAATTCGCCTAAAAAGAAG CCGCTGCCCGTGGATCAACCAGT
11. AATCCACACGTTCAGCAACCATCTCCAGCGT ATCCACTGGACGAGCTACGCCGCTT
12. AATCGCGATATTTACACAGACCTAAATAGTC
GCAAACACGATACCGATCCGGGCTGCGCTATCCGGGAAGCGGT
13. AATTTCCGGCGCGGCTTTATATTCCGGCAGA ACAGACGCTCGCGAGT
14. ACCACCCAGCACGATGCCAGAAATCAGTGGG AAACAGCGGCTCTCCACTGCCAGAGCAT
15. ACCAGCGTGCCTTCCATCATGTTCATTGCTA GCAGATCCGTGCTAACGCGGTCGTT
16. ACTGTTCCGGCGTGGCATTAGGTGTTGATCG CAGGCATACCGACTT
17. CCCTGGCCGTTTGCTTCGGCTTCGTGCTGGG ACTCTGGGTGTTG
Suffix
1. TAATGCCCTGATGCACGGCACC
2. GTCTCGATATACAGACGCTCGCGAGTAATTT
3. ATCCCCATCGCATTCA
4. TGGATTATCCACTGGACGAGCTACG
5. ATAACGCACAAACGCTGGCAAACCTGA
6. TTGTACGCACGCGCCTCTTCGAGGATACGTTGCG
7. C
8. CCGTTTCGAAAACTATC
9. AGCTGTCTGCCAATAA
10. TCAATCGCGAGGCCGGTTCGTT
11. AGGGATTGCCAACACC
12. CTCAGGGCTTTGTCGAATTCCAT
13. AGTTTAGCAAAGCGCGCCACTTCACCCTGAGCTTCCAGG
14. CCATGCGTGCTGCCAATGTA
15. GCTGGATATTCTGGTTGATGATGGTCATGTTCGCGGCCTGG
16. CAACGCTAAAGGCGATGACTTCAGCCAGTGTCTCCGCGCCCAGCGCCAACATCACCAGA
17. TAGCTTCATGCTGTAATGATCAATCGCGGGGC
我已经单独编写了后缀列,因为它不适合在同一行中。
【问题讨论】:
-
您能补充更多细节吗?另外,您能否澄清一下
suffix + macronode = prefix of next macronode + that next macronode表达式的含义。你也可以定义maximum stretch吗? -
@zx8754 预期的输出基本上是连续出现的这个字符的最大数量。正如我提到的,宏节点的字符+该节点的后缀字符=下一个宏节点的前缀字符+下一个宏节点的字符。例如,如果一个宏节点的字符是“ACGG”并且附加到它的后缀是“GGC”,那么这个“ACGG”+“GGC”即“ACGGGGC”等于下一个宏节点的前缀可能是“ACG”+这个下一个宏节点的字符“GGGC”..
-
@zx8754 我已经编辑了原始帖子并提供了一个玩具示例。让我知道这是否有帮助。非常感谢。
-
只是为了确保我理解正确的问题:您正在寻找将此类表转换为图形的程序(使用前缀和后缀链接节点),然后找到最长的路径所有节点都没有访问一个节点两次?
-
@Ashi:不过,对于这个问题,如果你有图表会更容易。不是数据框。这是一个旅行推销员问题,图论中有一些优雅的方法,但如果你想从像你这样的桌子上解决,你需要大量的蛮力。
标签: python r dataframe bioinformatics string-comparison