受全局 DNA 序列比对启发的字符串比对

Posted

技术标签:

【中文标题】受全局 DNA 序列比对启发的字符串比对【英文标题】:string alignment inspired by global DNA sequence allignment 【发布时间】:2022-01-23 05:50:01 【问题描述】:

我想做类似的事情:

library(Biostrings)
s1 <-DNAString("ACTTCACCAGCTCCCTGGCGGTAAGTTGATCAAAGGAAACGCAAAGTTTTCACTTCACCAGCTCCCTGGCGGTAAGTTGATCAAAGGAAACGCAAAGTTTTCAAGAAGACTTCACCAGCTCCCTGGCGGTAAGTTGATCAAAGGAAACGCAAAGTTTTCAAG")
s2 <-DNAString("GTTTCACTACTTCCTTTCGGGTAAGTAAATATATGTTTCACTACTTCCTTTCGGGTAAGTGTTTCACTACTTCCTTTCGGGTAAGTAAATATATAAATATATAAAAATATAATTTTCATCAAATATATAAATATATAAAAATATAATTTTCATCAAATATATAAAAATATAATTTTCATC")
pairwiseAlignment(s1,s2)

但使用这样的字符串:

x123 x4531 等

而不是 DNA 字母字符。有没有人知道在 R 甚至 Python 中实现这一目标的包。谢谢!

【问题讨论】:

你能澄清你的字符串是什么意思吗?您是否正在寻找使用任意字母而不是核苷酸/氨基酸的对齐器/字符串比较方法? 请提供你想要的函数的输出 错配总是会产生同样的影响,还是你想要一个像评分矩阵一样的花朵? 感谢@Chris_Rands。请参阅我对您的回答的评论。 【参考方案1】:

Biopython's Align 模块可以接受您选择的字母,例如

>>> from Bio import Align
>>> aligner = Align.PairwiseAligner()
>>> aligner.mode = "global"
>>> aligner.alphabet
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> aligner.alphabet += "1234567890"
>>> alignments = aligner.align("X123Y", "B12XYXYXYX")
>>> print(alignments[0])
X-123-Y-----
--||--|-----
-B12-XYXYXYX

【讨论】:

谢谢。唯一的问题是我需要的不仅仅是字母表中的字符来捕获 100 个字符串。 @cs0815 可以修改aligner.alphabet 包含其他字符吗? 谢谢。我今天将仔细研究一下。我的理解是,字母表只有“1 个字符元素”——不幸的是,我有 100 个唯一字符(又名字符串),例如:abcd123 和 abcd1234,因此每个元素有几个字符。我还能在这个用例中使用 aligner.alphabet 吗?谢谢!

以上是关于受全局 DNA 序列比对启发的字符串比对的主要内容,如果未能解决你的问题,请参考以下文章

利用Needleman–Wunsch算法进行DNA序列全局比对

DNA/RNA序列比对软件整理

动态规划:基因序列比对

编辑距离的应用

DNA binding motif比对算法

diamond & blast:DNA蛋白序列比对