罗莎琳德:REVP未能解决给定案例

时间:2017-05-02 10:02:21

标签: python string algorithm rosalind

我为这个challenge写了一个解决方案。它成功地处理了给出的示例案例,但不是实际案例。

挑战: 如果DNA串等于其反向补体,则DNA串是反向回文。例如,GCATGC是反向回文,因为它的反向互补是GCATGC。例如:

  

5' ... ... GCATGC 3'

     

3' ... CGTACG ... 5'

鉴于:

  

FASTA格式的长度最多1 kbp的DNA链。

返回:

  

弦中每个反向回文的位置和长度   长度在4到12之间。您可以在任何对中返回这些对   顺序。

示例数据集

  

> Rosalind_24 TCAATGCATGCGGGTCTATATGCAT

示例输出

  

4 6

     

5 4

     

6 6

     

7 4

     

17 4

     

18 4

     

20 6

     

21 4

对于样本,它可以工作。但是它在实际样品上失败了。

实际数据集:

>Rosalind_7901 ATATAGTCGGCTGTCCAGGCAATCGCGAGATGGGGAACGACATCTTGGTACTTTACGGAT GCCAAGACTTAATATCTGGCCCGGATATGACCGCGAGCACCCCCTACTCGTCTGTCGGTT TCGGCCGGCATGACCTGTCCTCTTGATAATAGATATAAGTTGCCAACCGCACTATTTCAA GATCAGATGCCCCAAGGCACAAGGCACAGAAGAATCAGGTACTGAGCAAACAGCGCCCAT TTGTCAGCGCAACTCCGAGCGACAGGCACAAGTGGTAGTAACATCTGTAGTCTACGAGCG CGGGACCGATGTAAAAAGCAACGAGAGACGGGGCCGTCGATAGAAAAGCAATGGAGTCCA TATGGGCACGCTGAGCGTGCCTGTACTAATTTCTATGGGCTACTGGCACTAGGGGCTTAA GCCCTCGGTTACCGCGCTTTATGAATATAGTTTTCGTGCCAGGAGTGTCTTGTTTCGAGG AAGCGTGAGCTACACTTAGCACGTCCGGGCTTATTGGAAATTTGTTCAGTCTGTATGCTC CGCAATATCATGTCGGCGCTCATTCAATGTTGCGTGTAATTTAGACCTCTACTACAGCTG GGGTTGGAGCGGTCGGTAGTAAGACGTATGATTACGGTTTACATCCCGCCGGCGGACACG GAACGTGATTTTCAGCATTGTCCCATCGTAGGGATTGGGGCCCTAGTAGGTGTGGGTAGC ACGTTACATGAAGCTATCCAATGGCGTATATACTCCATCCCATCGGACTAGAAGATTTGA GGGACCCAGTCATAACTGGTGCAAAATTACGTTACAAAAGCCGAGGATACAGTATA

实际输出:

1 4 2 4 23 6 24 4 48 4 70 4 73 4 79 4 82 4 86 4 93 4 124 6 125 4 126 6 127 4 131 4 155 4 156 4 184 4 222 4 236 4 251 4 337 4 342 4 389 4 394 4 415 4 423 4 440 4 441 4 452 4 453 4 482 4 496 4 509 4 513 4 526 6 527 4 554 4 558 4 565 4 587 4 604 6 605 4 634 4 656 10 657 8 658 6 659 4 674 4 709 6 710 4 714 4 733 4 739 4 744 4 758 8 759 4 759 6 760 4 761 4 780 4 813 4 818 4 822 4 846 4

代码:

from string import maketrans
table=maketrans('ATCG','TAGC')

protein=open('rosalind_revp.txt','r').read()[14::].strip()

for i in range(len(protein)):
    for ii in range(2,7):
        if protein[i:i+ii]==protein[i+2*ii-1:i+ii-1:-1].translate(table):
            print str(i+1),str(2*ii)

(测试样品时,第4行是

protein=open('rosalind_revp.txt','r').read()[12::].strip()

我甚至手动匹配一堆位置长度对,和悲哀地发现他们都完美地工作。我仍然不知道为什么结果不被接受。 谁能让我知道我哪里错了?

1 个答案:

答案 0 :(得分:0)

这是我的github链接,它具有解决方案,希望能正常工作 FormField

https://github.com/jssssv007/stackexcahnge