我有一堆DNA序列。
我想要匹配序列的一部分,并且想要返回直到特定长度的匹配
dataframe df包含以下列:
V1和V2
>chr1:61695-62229 aattccaagagtattattgcaccaaaaggcatggacttaaaattcttgatacatgatttcaaaatattttctttaaggtttgaatcagtctatattccctccagcagcgtataaaagtgccaatttctctgatccttagccagtttgggtaataataattgtaaaacttttttttctttttttttgagacagagtctccctctgtcgccaggctgaagtgcagtggcgcaatctcggctcactgcaacctccgcctcccggggtcaagctattctcctgcctcagcctcccaagtagctgggactacaggcatgcaccaccatgcccagctaatttttgttatttttagtagagatggagtttccccatgttggacaggatggtctcgatctcttgacctcgtgatccaccctcctcggcctcccaaagtgctgggataacaggcgtgaacaaccatgcccggcctgtaaaactttttcctaatttaacagaaaaataatagtattatattttatcatatttctttgatttcta
>chr1:101718-102194 taaaaataaatgtattaagtatgaacaacaaaaaagctagtaaaggttgaacaacaactatccttaggaaagtggaaataatgtattaataaatatgaaagcaggctagccacggtgactcacatctgtaatcccagcactttgggaggctgaggcaggcagatcacctgaggtcaggagttccagaccagcctggccaacatggtgaaatcttgtctctcctacaaatacaaaaactagccaggcttggttgtgcactcctgtaattcgagctacttgggaggctgaggcaggagaatctcttgaacctgagaggcagaggttgcagtgagccaagatcatgccactgcactccagctggggcaacagagtgacactccatctcaaaataaataaataagaaagcagaaactaataaactagaaaacagaaacatagaactaatttataaatcaaagcactatgccttgaaaaga我已经使用了agrep来获得匹配。
RepeatAlusSequencesdfMatch <- RepeatAlusSequencesdf[agrep("aacctcaaagactggcctca", RepeatAlusSequencesdf[,2],ignore.case = TRUE, max.distance = 0.3), ]但我还想返回匹配结束时146个字符的长度。目前它给我的是我不能使用的整个序列
发布于 2015-10-31 22:15:19
请看我上面的评论。我不认为你可以通过agrep来实现你想要做的事情。如果您尝试模糊匹配的DNA序列具有可预测的核苷酸插入/删除/替换的数量和位置,则只需使用一个(或多个)带有捕获组的正则表达式来提取所需的内容。
如果差异是不可预测的,并且您确实需要模糊匹配,则可以使用类似以下的蛮力算法:
你选择的146个核苷酸序列越不同,你得到的结果就越准确。如果你想找到最佳匹配,可以使用穷举搜索,从头开始遍历每个DNA序列,将其分解为146个核苷酸片段,然后运行上面的算法,然后从开始留出一个核苷酸,选择下一个分区,依此类推,直到最后。
希望这对你有所帮助,或者提供更好的想法。
https://stackoverflow.com/questions/33451708
复制相似问题