C语言 输出重复序列的序号,如何在FASTA序列中找到反向重复模式?
我是Python和生物信息學的新手,但我正在通過rosalind.info網站學習兩種方法.您可以使用后綴樹執行此操作.后綴樹(見
http://en.wikipedia.org/wiki/Suffix_tree)是神奇的數據結構,它使生物信息學中的所有事情成為可能.您可以快速找到多個長序列中的公共子串.后綴樹只需要線性時間,因此長度10,000,000是可行的.
所以首先找到序列的反向補碼.然后將兩者放入后綴樹中,找到它們之間的公共子串(最小長度).
下面的代碼使用了這個后綴樹實現:http://www.daimi.au.dk/~mailund/suffix_tree.html.它是用C語言編寫的,帶有Python綁定.它不會處理大量的序列,但是兩個沒有問題.但是我不能說這是否會處理長度10,000,000.
from suffix_tree import GeneralisedSuffixTree
baseComplement = { 'A' : 'T', 'C' : 'G', 'G' : 'C', 'T' : 'A' }
def revc(seq):
return "".join([baseComplement[base] for base in seq[::-1]])
data = "AGGGTTTCCCTGACCTTCACTGCAGGTCATGCA"
# revc TGCATGACCTGCAGTGAAGGTCAGGGAAACCCT
# 012345678901234567890123456789012
# 1 2 3
minlength = 6
n = len(data)
tree = GeneralisedSuffixTree([data, revc(data)])
for shared in tree.sharedSubstrings(minlength):
#print shared
_, start, stop = shared[0]
seq = data[start:stop]
_, rstart, rstop = shared[1]
rseq = data[n-rstop:n-rstart]
print "Match: {0} at [{1}:{2}] and {3} at [{4}:{5}]".format(seq, start, stop, rseq, n-rstop, n-rstart)
這會產生輸出
Match: AGGTCA at [23:29] and TGACCT at [10:16]
Match: TGACCT at [10:16] and AGGTCA at [23:29]
Match: CTGCAG at [19:25] and CTGCAG at [19:25]
它每次匹配兩次,每次一次.那里也有反向回文!
總結
以上是生活随笔為你收集整理的C语言 输出重复序列的序号,如何在FASTA序列中找到反向重复模式?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 使用场景_MySQLMHA典
- 下一篇: 和氟西汀类似的备注_撒狗粮:可爱又霸气的