code: def translateDNA(sequence, frame = 'f1', translTable_id='default') :
  	
  
  	protein = ""
  
  	if frame == 'f1' :
  		dna = sequence
  	elif frame == 'f2':
  		dna = sequence[1:]
  	elif frame == 'f3' :
  		dna = sequence[2:]
  	elif frame == 'r1' :
  		dna = reverseComplement(sequence)
  	elif frame == 'r2' :
  		dna = reverseComplement(sequence)
  		dna = dna[1:]
  	elif frame == 'r3' :
  		dna = reverseComplement(sequence)
  		dna = dna[2:]
  	else :
  		raise ValueError('unknown reading frame: %s, should be one of the following: fwd1, fwd2, fwd3, rev1, rev2, rev3' % frame)
  
  	for i in range(0, len(dna),  3) :
  		codon = dna[i:i+3]
  
  		# Check if variant messed with selenocysteine codon
  		if '!' in codon and codon != '!GA':
  			codon = codon.replace('!', 'T')
  
  		if (len(codon) == 3) :
  			try :
  				# MC
  				protein += translTable[translTable_id][codon]
  			except KeyError :
  				combinaisons = polymorphicCodonCombinaisons(list(codon))
  				translations = set()
  				for ci in range(len(combinaisons)):
  					translations.add(translTable[translTable_id][combinaisons[ci]])
  				protein += '/'.join(translations)
  
  	return protein
docs: Translates DNA code, frame : fwd1, fwd2, fwd3, rev1, rev2, rev3