首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rosalind: REVP失败了

Rosalind: REVP失败了
EN

Stack Overflow用户
提问于 2017-05-02 10:02:20
回答 1查看 434关注 0票数 2

我为这个挑战写了一个解决方案。它成功地处理了给定的示例案例,但没有处理实际案例。

挑战:如果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

代码:

代码语言:javascript
复制
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()

我甚至手动匹配了一堆位置长度对,但遗憾的是,它们都工作得很完美。我还是不知道为什么结果不被接受。有人能告诉我我哪里错了吗?

EN

回答 1

Stack Overflow用户

发布于 2020-06-02 18:06:40

这是我的github链接,它有解决方案,希望它能工作def reverse(l): t="" for i in range(len(l)): if(l[i]=='A'): t=t+'T' elif(l[i]=='T'): t=t+'A' elif(l[i]=='C'): t=t+'G' elif(l[i]=='G'): t=t+'C' return t def rev(d): return d[len(d)::-1] k=input() p=input() for i in range(len(p)): for j in range(4,14): if (p[i:i+j]==rev(reverse(p[i:i+j]))and i+j<=len(p)): print(i+1, end=" ") print(j)

https://github.com/jssssv007/stackexcahnge

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43735079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档