Archive

Code_python_avec_index

benichf1

Bonjour,
implémentation en Python, en respectant l’ordre original :wink:


Table_traduction      = [ ["T","T","T","F"] ] 
Table_traduction.append(["T","T","C","F"])
Table_traduction.append(["T","T","A","L"])
Table_traduction.append(["T","T","G","L"])

Table_traduction.append(["T","C","T","S"])
Table_traduction.append(["T","C","C","S"])
Table_traduction.append(["T","C","A","S"])
Table_traduction.append(["T","C","G","S"])

Table_traduction.append(["T","A","T","Y"])
Table_traduction.append(["T","A","C","Y"])
Table_traduction.append(["T","A","A","#"])
Table_traduction.append(["T","A","G","#"])

Table_traduction.append(["T","G","T","C"])
Table_traduction.append(["T","G","C","C"])
Table_traduction.append(["T","G","A","#"])
Table_traduction.append(["T","G","G","W"])

Table_traduction.append(["C","T","T","L"])
Table_traduction.append(["C","T","C","L"])
Table_traduction.append(["C","T","A","L"])
Table_traduction.append(["C","T","G","L"])

Table_traduction.append(["C","C","T","P"])
Table_traduction.append(["C","C","C","P"])
Table_traduction.append(["C","C","A","P"])
Table_traduction.append(["C","C","G","P"])

Table_traduction.append(["C","A","T","H"])
Table_traduction.append(["C","A","C","H"])
Table_traduction.append(["C","A","A","Q"])
Table_traduction.append(["C","A","G","Q"])

Table_traduction.append(["C","G","T","R"])
Table_traduction.append(["C","G","C","R"])
Table_traduction.append(["C","G","A","R"])
Table_traduction.append(["C","G","G","R"])

Table_traduction.append(["A","T","T","I"])
Table_traduction.append(["A","T","C","I"])
Table_traduction.append(["A","T","A","I"])
Table_traduction.append(["A","T","G","M"])

Table_traduction.append(["A","C","T","T"])
Table_traduction.append(["A","C","C","T"])
Table_traduction.append(["A","C","A","T"])
Table_traduction.append(["A","C","G","T"])

Table_traduction.append(["A","A","T","N"])
Table_traduction.append(["A","A","C","N"])
Table_traduction.append(["A","A","A","K"])
Table_traduction.append(["A","A","G","K"])

Table_traduction.append(["A","G","T","S"])
Table_traduction.append(["A","G","C","S"])
Table_traduction.append(["A","G","A","R"])
Table_traduction.append(["A","G","G","R"])

Table_traduction.append(["G","T","T","V"])
Table_traduction.append(["G","T","C","V"])
Table_traduction.append(["G","T","A","V"])
Table_traduction.append(["G","T","G","V"])

Table_traduction.append(["G","C","T","A"])
Table_traduction.append(["G","C","C","A"])
Table_traduction.append(["G","C","A","A"])
Table_traduction.append(["G","C","G","A"])

Table_traduction.append(["G","A","T","D"])
Table_traduction.append(["G","A","C","D"])
Table_traduction.append(["G","A","A","E"])
Table_traduction.append(["G","A","G","E"])

Table_traduction.append(["G","G","T","G"])
Table_traduction.append(["G","G","C","G"])
Table_traduction.append(["G","G","A","G"])
Table_traduction.append(["G","G","G","G"])
 
def indexNucleotide (c):
    """
    return index of nucleotide according dico convention
    """
    Dico_index = {  "T": 1,
                    "C": 2,
                    "A": 3,
                    "G": 4,
                  }

    return Dico_index[c]

def lookupGeneticCode_by_index(Base1,Base2,Base3):
    """
    Traduit le code génétique par les index
    ex:  Base1,Base2,Base3 = "T","T","C"
    """
    I = indexNucleotide (Base1)  
    J = indexNucleotide (Base2)
    K = indexNucleotide (Base3) 
    
    index_codon = 1 + (I-1)*16 + (J-1)*4 + (K-1)
    COLONNE_LETTRE_ACIDE_AMINE = 4
    return Table_traduction[ index_codon - 1][COLONNE_LETTRE_ACIDE_AMINE - 1]


def traduction_by_index(DNAsequence):
    indexDNA = 0
    ProteinSequence = []
    while DNAsequence[indexDNA] != "#" and DNAsequence[indexDNA+1] != "#" and DNAsequence[indexDNA+2] != "#":
        current_acide_aminee = lookupGeneticCode_by_index(DNAsequence[indexDNA], 
                                                        DNAsequence[indexDNA+1], 
                                                        DNAsequence[indexDNA+2])
        ProteinSequence.append( current_acide_aminee )
        indexDNA += 3

    ProteinSequence.append("#")
    return ProteinSequence

################################################################################################################

if __name__ == "__main__":


    print("Traduction par index: ")
    print(traduction_by_index("GAAGCTGTC#"))
    print(traduction_by_index("TACTCATTATTTTTGTAG#"))
    assert (['E', 'A', 'V', '#']  ==  traduction_by_index("GAAGCTGTC#"))
    assert (['Y', 'S', 'L', 'F', 'L', '#', '#'] ==  traduction_by_index("TACTCATTATTTTTGTAG#"))