Bonjour,
Je donne ici un exemple réduit de ce que je voudrais bien faire en Python:
J'ai une chaine de caractère: dna="AGCATCGATCGTACGTAGCTACTAG CTAG" par exemple.
Par le début de mon programme je réussis à me placer à un endroit précis sur "dna" et extraire cet endroit plus 6 lettres de par et d'autre.
Ce qui fait par exemple que j'obtiens une variable: m="TACGTAGCTACTAG"
Ce que je voudrais maintenant ce que Python ajoute les lettres de "dna" à la suite de "m" selon une condition.
Pour donner un exemple concret:
La condition c'est que le Tm (melting temperature) soit >= 60. Donc python ajouterais successivement les lettres de "dna" à "m" jusqu'à ce que Tm >= 60.
Expl: "G TACGTAGCTACTAG"
Calcul du Tm.
"CG TACGTAGCTACTAG"
Calcul du Tm.
Etc..... jusqu'à ce que Tm >= 60.
Précision: j'ai fais une fonction pour le calcul du Tm.
Et voilà le brouillon de mon code pour l'instant pour ajouter les lettres successivement:Code:def tm_get(dna): A_count=dna.count('A') T_count=dna.count('T') G_count=dna.count('G') C_count=dna.count('C') if len(dna)>=20: Tm = ((2*(A_count+T_count)) + (4*(G_count+C_count)))*(1+((len(dna)-20)/20)) else: Tm = (2*(A_count+T_count)) + (4*(G_count+C_count)) return Tm
Ca marche mais le problème c'est qu'il ajoute toujours la lettre en -1, donc ici le G par exemple, mais il ajoute toujours celle-ci et je ne parviens pas à lui dire d'avancer dans "dna" et d'ajouter la lettre -2 après la -1 etc...Code:def primerforward (c) : resultat = mutated i = mutated[-1] Tm=(tm_get(resultat))-(tm_primaire) while Tm < 60 : resultat = i+resultat i=i[-1] Tm=(tm_get(resultat))-(tm_primaire) if Tm >= 60: return resultat break pf=primerforward(dna)
Quelqu'un aurait une idée?
-----