如何拼凑DNA的短读?在序列文件中匹配碱基对

时间:2018-10-30 19:43:05

标签: python python-3.x matching short

我正在尝试整理DNA短读。我需要将3个碱基对与其他短读片段配对。 (基对=例如TCG(基本上只有3个字母))

我已经尝试过正则表达式,但是当我尝试读取带有短读的文件时,我需要使核苷酸成为变量,而我不认为正则表达式会这样做。我有一个包含这些简短读物的文件,我需要将这些碱基对与具有相同碱基对序列的其他简短读物进行匹配。

例如我在文件中有这两行简短的内容:

AAAGGGTTTCCCGGGAAA TCA

CCCGGGAAA TCA GGGAAATTT

我需要的结果是:

AAAGGGTTTCCCGGGAAA TCA GGGAAATTT

我如何匹配匹配的行并将其粘贴到其他行的顶部,以便在相似点可以将它们合并?

2 个答案:

答案 0 :(得分:0)

您只需在第二个序列中找到匹配序列的索引并将其连接起来即可。

seq1 = 'AAAGGGTTTCCCGGGAAATCA'
seq2 = 'CCCGGGAAATCAGGGAAATTT'
match_pair_count = 5
match_seq = seq1[-match_pair_count:]
match_index = seq2.rfind(match_seq)
combined_seq = seq1[:-match_pair_count] + seq2[match_index:]

注意:如果需要捕获匹配序列未出现在第二序列中的情况,则需要添加代码来处理match_index == -1

答案 1 :(得分:0)

每个子序列的直接解计算5个尾部和5个头。然后尝试使用深度优先的所有组合。

一种更复杂的绘制图形的方法,其中有向的边用多个共同的字母标记(例如4-9)。应用旅行推销员解决方案或其他适当的算法,以找出最短路径抛出所有顶点。

我确信有很多适合基因组推断的合适工具和技术。 https://www.youtube.com/watch?v=fGxx7TvQ3f4

要在两个序列之间查找距离,请求反,然后找出最长的公共前缀。

def joinifmatch(seq1,seq2,minlen = 4):     尾巴= seq2 [:4]     对于范围内的i(len(seq1),4,-1)          如果seq1.startswith(seq2 [n-i:])              返回“%s%S”(seq2 [:n-i],seq1)