Beispiel #1
0
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