日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言 输出重复序列的序号,如何在FASTA序列中找到反向重复模式?

發(fā)布時間:2024/9/27 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言 输出重复序列的序号,如何在FASTA序列中找到反向重复模式? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我是Python和生物信息學的新手,但我正在通過rosalind.info網(wǎng)站學習兩種方法.您可以使用后綴樹執(zhí)行此操作.后綴樹(見

http://en.wikipedia.org/wiki/Suffix_tree)是神奇的數(shù)據(jù)結構,它使生物信息學中的所有事情成為可能.您可以快速找到多個長序列中的公共子串.后綴樹只需要線性時間,因此長度10,000,000是可行的.

所以首先找到序列的反向補碼.然后將兩者放入后綴樹中,找到它們之間的公共子串(最小長度).

下面的代碼使用了這個后綴樹實現(xiàn):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)

這會產(chǎn)生輸出

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序列中找到反向重复模式?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。