的段I想比較與給定的「對準的窗口」,即兩個序列,如果序列是在五個或更多的拉伸類似。如何控制序列比對
例如:
A = "CCCTCGTTGCTAAAAA"
B = "CCCAGCAACGAAAAAA"
我想,以紀念在矩陣中的命中只有最後5個字符
現在我堅持我有這樣的事情:
import numpy as np
A = "CCCTCGTTGCTAAAAA"
B = "CCCAGCAACGAAAAAA"
n1 = len(A)
n2 = len(B)
data = np.zeros(shape=(n2, n1), dtype=np.int)
for i in range(n2):
for j in range(n1):
if A[i:i+4] == B[j:j+4]:
data[i:i+4,j:j+4] = 1
print data
感謝您的幫助
使用Python 2.7.3
我不是一個bioinfo的人,但每次我看到幾個密碼子,這使我的頭腦[BioPython]最先庫(http://biopython.org/DIST/docs/tutorial/Tutorial.html )。你一定要看看它,特別是在[解析示例](http://biopython.org/DIST/docs/tutorial/Tutorial.html#htoc10)。 –
您正在尋找更快的算法,還是隻是一個更乾淨的方法來做到這一點?你可以通過使用範圍(n-4)來修剪掉大約8n個測試(因爲你不能匹配5個以上的窗口少於5個密碼子),並且xrange()會爲你提供更高效的內存迭代器。 你也許能夠做的更好使用字典來創建一個所有不同的5元子的查找,他們開始點的列表,然後查找每個5元子在對這個表B中。這會給你所有的A點你的當前子串匹配。 – pcurry
感謝您的幫助,我也將嘗試檢查該解決方案 –