fork download
  1. from collections import Counter
  2.  
  3.  
  4. # Não faz verificação final
  5. def contacodon_sem_verificacao(seq):
  6. stops = ["TAA", "TAG", "TGA"]
  7. count = Counter()
  8. for i in range(seq.find('ATG'), len(seq) + 1, 3):
  9. codon = seq[i: i + 3]
  10. count.update([codon])
  11. if codon in stops:
  12. break
  13. return dict(count)
  14.  
  15.  
  16. # Faz verificação final
  17. def contacodon_com_verificacao(seq):
  18. stops = ["TAA", "TAG", "TGA"]
  19. count = Counter()
  20. for i in range(seq.find('ATG'), len(seq) + 1, 3):
  21. codon = seq[i: i + 3]
  22. count.update([codon])
  23. if codon in stops:
  24. break
  25. if len(codon) != 3:
  26. # Retorna um dicionário vazio, uma outra opção seria lançar um erro.
  27. return {}
  28. return dict(count)
  29.  
  30.  
  31. # Repare que não tem códon de finalização e o último grupo tem apenas 2 caracteres.
  32. seq = "GCGATCGAGATGAGCATCGCATCGCGGACTACCGCGCGCGCGCGCGGGAG"
  33.  
  34. print("Sem verificação:", contacodon_sem_verificacao(seq))
  35. print("Com verificação", contacodon_com_verificacao(seq))
  36.  
Success #stdin #stdout 0.02s 9096KB
stdin
Standard input is empty
stdout
Sem verificação: {'ATG': 1, 'AGC': 1, 'ATC': 1, 'GCA': 1, 'TCG': 1, 'CGG': 1, 'ACT': 1, 'ACC': 1, 'GCG': 2, 'CGC': 2, 'GGG': 1, 'AG': 1}
Com verificação {}