#Task 1: Translating DNA into proteins.
#a. First transcribe DNA to RNA
#b. Translate RNA to amino acids
from string import * //Importing string library
seq = raw_input ("Enter a seqeunce : ") //Create sequence input
print ""
seq=seq.upper() //change input sequence to uppercase by ‘.upper()’.
table = { //initialize amino acid dictionary
'UUU': 'F', 'UUC': 'F', 'UUA': 'L', 'UUG': 'L', 'UCU': 'S',
'UCC': 'S', 'UCA': 'S', 'UCG': 'S', 'UAU': 'Y', 'UAC': 'Y',
'UGU': 'C', 'UGC': 'C', 'UGG': 'W', 'CUU': 'L', 'CUC': 'L',
'CUA': 'L', 'CUG': 'L', 'CCU': 'P', 'CCC': 'P', 'CCA': 'P',
'CCG': 'P', 'CAU': 'H', 'CAC': 'H', 'CAA': 'Q', 'CAG': 'Q',
'CGU': 'R', 'CGC': 'R', 'CGA': 'R', 'CGG': 'R', 'AUU': 'I',
'AUC': 'I', 'AUA': 'I', 'AUG': 'M', 'ACU': 'T', 'ACC': 'T',
'ACA': 'T', 'ACG': 'T', 'AAU': 'N', 'AAC': 'N', 'AAA': 'K',
'AAG': 'K', 'AGU': 'S', 'AGC': 'S', 'AGA': 'R', 'AGG': 'R',
'GUU': 'V', 'GUC': 'V', 'GUA': 'V', 'GUG': 'V', 'GCU': 'A',
'GCC': 'A', 'GCA': 'A', 'GCG': 'A', 'GAU': 'D', 'GAC': 'D',
'GAA': 'E', 'GAG': 'E', 'GGU': 'G', 'GGC': 'G', 'GGA': 'G',
'GGG': 'G', }
stop_codons = ['UAA', 'UAG', 'UGA'] //Initialize stop codon dictionary
for codon in stop_codons: //Loop to substitute stop codon with ‘*’.
table[codon] = "*"
protein = [] //List of array for proteins translated from every ORF
protein_complementary = []
protein_base1 = []
protein_complementary_base1 = []
protein_base2 = []
protein_complementary_base2 = []
protein_base3 = []
protein_complementary_base3 = []
for base in seq: //Checker for unknown bases
if base == "A":
number = 2
elif base == "G":
number = 2
elif base == "T":
number = 2
elif base == "C":
number = 2
else:
number = 1
if number == 1:
print "Error in the sequence, contain unknown bases"
exit(1)
c = maketrans("ATGC","UACG") //”maketrans()” function to convert sequence to RNA
t = maketrans("ATGC","TACG") //”maketrans()” function to convert sequence
//to complementary
complementary_DNA = seq.translate(t) // apply ‘t’ to create compliment dna
transcript_DNA = seq.translate(c) //apply ‘c’ to transcribe sequence
complementary_RNA = complementary_DNA.translate(c) //RNA of compliment DNA
transcript_complementary_DNA = complementary_RNA[::-1] //reverse compliment of RNA
def translate_dna(transcript_DNA): //function to translate sequence
for i in range(0, len(transcript_DNA)-len(transcript_DNA)%3, 3):
protein.append( table[transcript_DNA[i:i+3]] )
return "".join(protein)
def translate_dna_base1(transcript_DNA): //ORF1 translate with Stop codon include
for i in range(0, len(transcript_DNA)-len(transcript_DNA)%3, 3):
if transcript_DNA[i:i+3] == 'UAA':
protein_base1.append( table[transcript_DNA[i:i+3]] )
break
elif transcript_DNA[i:i+3] == 'UAG':
protein_base1.append( table[transcript_DNA[i:i+3]] )
break
elif transcript_DNA[i:i+3] == 'UGA':
protein_base1.append( table[transcript_DNA[i:i+3]] )
break
else:
protein_base1.append( table[transcript_DNA[i:i+3]] )
return " ".join(protein_base1)
def translate_complementary_base1(transcript_complementary_DNA):
//ORF4 translate with Stop codon include
for i in range(0, len(transcript_complementary_DNA)-len(transcript_complementary_DNA)
%3, 3):
if transcript_complementary_DNA[i:i+3] == 'UAA':
protein_complementary_base1.append( table[transcript_complementary_DNA[i:i+3]] )
break
elif transcript_complementary_DNA[i:i+3] == 'UAG':
protein_complementary_base1.append( table[transcript_complementary_DNA[i:i+3]] )
break
elif transcript_complementary_DNA[i:i+3] == 'UGA':
protein_complementary_base1.append( table[transcript_complementary_DNA[i:i+3]] )
break
else:
protein_complementary_base1.append( table[transcript_complementary_DNA[i:i+3]] )
return " ".join(protein_complementary_base1)
def translate_dna_base2(transcript_DNA): //ORF2 translate with Stop codon include
for i in range(1, ((len(transcript_DNA)-1)-(len(transcript_DNA)-1)%3), 3):
if transcript_DNA[i:i+3] == 'UAA':
protein_base2.append( table[transcript_DNA[i:i+3]] )
break
elif transcript_DNA[i:i+3] == 'UAG':
protein_base2.append( table[transcript_DNA[i:i+3]] )
break
elif transcript_DNA[i:i+3] == 'UGA':
protein_base2.append( table[transcript_DNA[i:i+3]] )
break
else:
protein_base2.append( table[transcript_DNA[i:i+3]] )
return " ".join(protein_base2)
def translate_complementary_base2(transcript_complementary_DNA):
//ORF5 translate with Stop codon include
for i in range(1, ((len(transcript_complementary_DNA)-1)-
(len(transcript_complementary_DNA)-1)%3), 3):
if transcript_complementary_DNA[i:i+3] == 'UAA':
protein_complementary_base2.append( table[transcript_complementary_DNA[i:i+3]] )
break
elif transcript_complementary_DNA[i:i+3] == 'UAG':
protein_complementary_base2.append( table[transcript_complementary_DNA[i:i+3]] )
break
elif transcript_complementary_DNA[i:i+3] == 'UGA':
protein_complementary_base2.append( table[transcript_complementary_DNA[i:i+3]] )
break
else:
protein_complementary_base2.append( table[transcript_complementary_DNA[i:i+3]] )
return " ".join(protein_complementary_base2)
def translate_dna_base3(transcript_DNA): //ORF3 translate with Stop codon include
for i in range(2, ((len(transcript_DNA)-2)-(len(transcript_DNA)-2)%3), 3):
if transcript_DNA[i:i+3] == 'UAA':
protein_base3.append( table[transcript_DNA[i:i+3]] )
break
elif transcript_DNA[i:i+3] == 'UAG':
protein_base3.append( table[transcript_DNA[i:i+3]] )
break
elif transcript_DNA[i:i+3] == 'UGA':
protein_base3.append( table[transcript_DNA[i:i+3]] )
break
else:
protein_base3.append( table[transcript_DNA[i:i+3]] )
return " ".join(protein_base3)
def translate_complementary_base3(transcript_complementary_DNA):
//OR6 translate with Stop codon include
for i in range(2, ((len(transcript_complementary_DNA)-2)-
(len(transcript_complementary_DNA)-2)%3), 3):
if transcript_complementary_DNA[i:i+3] == 'UAA':
protein_complementary_base3.append( table[transcript_complementary_DNA[i:i+3]] )
break
elif transcript_complementary_DNA[i:i+3] == 'UAG':
protein_complementary_base3.append( table[transcript_complementary_DNA[i:i+3]] )
break
elif transcript_complementary_DNA[i:i+3] == 'UGA':
protein_complementary_base3.append( table[transcript_complementary_DNA[i:i+3]] )
break
else:
protein_complementary_base3.append( table[transcript_complementary_DNA[i:i+3]] )
return " ".join(protein_complementary_base3)
//Calling of function and interface output
print "Transcription of the DNA sequence: ", transcript_DNA
print "The complementary of the DNA sequence is: ", complementary_DNA
print "The transcription of complementary DNA sequence is: ", transcript_complementary_DNA
print ""
print "* stand for the stop codon"
print ""
translate_dna(transcript_DNA)
pro = " "
pro = pro.join(protein) // ’.join()’ is to create strings of output
print "The translation of the DNA is: ",pro
print ""
translate_dna_base1(transcript_DNA)
translate_complementary_base1(transcript_complementary_DNA)
pro = " "
pro = pro.join(protein_base1)
print "Translation start from the 1st base is : ", pro
pro = " "
pro = pro.join(protein_complementary_base1)
print "The translation start from the 1st base of complementary RNA is: ",pro
print ""
translate_dna_base2(transcript_DNA)
translate_complementary_base2(transcript_complementary_DNA)
pro = " "
pro = pro.join(protein_base2)
print "Translation start from the 2nd base is : ", pro
pro = " "
pro = pro.join(protein_complementary_base2)
print "The translation start from the 2nd base of complementary RNA is: ",pro
print ""
translate_dna_base3(transcript_DNA)
translate_complementary_base3(transcript_complementary_DNA)
pro = " "
pro = pro.join(protein_base3)
print "Translation start from the 3rd base is : ", pro
pro = " "
pro = pro.join(protein_complementary_base3)
print "The translation start from the 3rd base of complementary RNA is: ",pro