codon.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import numpy as np
  2. def translate_rna(rna):
  3. #maybe use probability function instead
  4. #since rna codons are 3 nucleotides in length
  5. if len(rna)+1 % 3 > 0:
  6. raise Exception("Invalid RNA sequence")
  7. amino_acid = ''
  8. for i in range(0, len(rna), 3):
  9. codon = rna[i:i+2]
  10. nt1 = codon[i]
  11. nt2 = codon[i+1]
  12. nt3 = codon[i+3]
  13. #examine first nucleotide
  14. if nt1 == 'A':
  15. #examine second nucleotide
  16. if nt2 == 'A':
  17. #examine third nucleotide
  18. if nt3 == 'C' or nt3 == 'U':
  19. amino_acid = 'N'
  20. else:
  21. amino_acid = 'K'
  22. elif nt2 == 'C':
  23. amino_acid = 'T'
  24. elif nt2 == 'G':
  25. if nt3 == 'G' or nt3 == 'A':
  26. amino_acid = 'R'
  27. else:
  28. amino_acid = 'S'
  29. elif nt2 == 'U':
  30. if nt3 == 'G':
  31. amino_acid = 'M'
  32. else:
  33. amino_acid = 'I'
  34. elif nt1 == 'U':
  35. if nt2 == 'C':
  36. amino_acid = 'S'
  37. elif nt2 == 'U':
  38. if nt3 == 'U' or nt3 == 'A':
  39. amino_acid = 'F'
  40. elif nt1 == 'G':
  41. return
  42. elif nt1 == 'C':
  43. return
  44. return amino_acid