def backtranslate(faa, fna): newfna = ExtendedAlignment(faa.fragments) for k, s in fna.items(): if k in faa.keys(): aa = faa[k].upper() cd = [] i = 0 for r in aa: cds = s[i:i + 3] if r == '-': cd.append('---') else: if is_compatible(cds, r): cd.append(cds) i += 3 else: if i == 0 and (cds == 'GTG' or cds == 'TTG'): cd.append(cds) i += 3 else: raise ValueError('%s at position %d of %s ' 'does not translate to %s' % (cds, i, k, r)) newfna[k] = ''.join(cd) else: continue col_lab = faa.col_labels for i in col_lab: newfna._col_labels = newfna._col_labels + [i, i, i] return newfna