2 YANN PONTY
1. Travaux pratiques
1.1. ´
Echauffement. On codera pour commencer une fonction displaySecStr qui
prend en argument une liste lde paires de bases et une taille n, et renvoie la
s´equence bien parenth´es´ee associ´ee. On num´erotera les bases en partant de 0, et on
pourra s’inspirer de l’exemple complet de la Section I.2.
Exemple :
Entr´ee Sortie
displaySecStr([(2,8),(3,7)],10) −→ "..((...))."
1.2. Pseudo-noeuds simples. On souhaite d´esormais extraire une liste de paires
de bases `a partir d’une notation parenth´es´ee g´en´eralis´ee, utilisant 3 syst`emes de pa-
renth`esages (...),[...] et {...}, de fa¸con similaire `a l’exemple de la Section I.2.
Cette fonction parsePK prendra en argument une s´equence et renverra une liste de
paires de bases.
Exemple :
Entr´ee Sortie
parsePK("(([[[...))]]]") −→ [(0,9),(1,8),(2,12),(3,11),(4,10)]
parsePK("(({{))[[}}]]") −→ [(0,5),(1,4),(2,9),(3,8),(4,10),(6,11),(7,10)]
1.3. Comptage. On codera, `a partir d’une version simplifi´ee (On fixera1θ= 1)
de l’algorithme de Nussinov, une fonction countSecStr permettant de compter le
nombre de structures compatibles avec une s´equence d’ARN. La fonction prendra
deux arguments : la s´equence rd’ARN et un bool´een debug optionnel. Si debug
est `a False, alors une paire de base ne sera autoris´ee `a se former que si ses bases
sont comprises dans [(C,G),(A,U),(G,U)]. Si debug est `a True, alors toute paire
de base sera autoris´ee (Seule la taille len(r) compte).
Exemple :
Entr´ee Sortie
countSecStr("A") −→ 1
countSecStr("CAG") −→ 2
countSecStr("CAGU") −→ 3
countSecStr("AAAA",True) −→ 4
countSecStr("AAAAAAAA",True) −→ 82
Plus g´en´eralement, le mode debug ´enum`ere les structures secondaires combina-
toires, compt´ees par Waterman 78. Pour des tailles croissantes, ces nombres Ssont
len(r) 1 2 3 4 5 6 7 8 9 10 11 12
S 1 1 2 4 8 17 37 82 185 423 978 2283
1.4. Nussinov. On adaptera (apr`es sauvegarde) le code de la fonction countSecStr
en une fonction fillMatrix, qui pr´ecalcule l’´energie de la structure d’´energie mini-
male. Au passage, on prendra en compte une valeur g´en´erale pour θ. Au final, cette
fonction prendra en param`etre une s´equence ret un param`etre optionnel theta
(D´efaut : 3), et renverra une liste de liste tab telle que tab[i][j] est l’´energie
minimale d’un repliement sur l’ intervalle [i,j].
Exemple :
1On rappelle que θcorrespond au nombre minimal de bases non-appari´ees entre deux bases
appari´ees.