- Le blog participatif de bioinformatique francophone depuis 2012 -

Introduction à la structure secondaire des ARN

Quand j'étais étu­diante en mas­ter, la grande majo­ri­té des cours de struc­ture étaient réser­vés aux pro­téines, ce qui fait que la struc­ture des ARN n'a pas été très déve­lop­pée au cours de mon cur­sus. Du coup, je vous livre ici une par­tie de ce que j'ai appris en stage.

Défi­ni­tion 0 : ARN

L'ARN (acide ribo­nu­cléique) est une macro­mo­lé­cule bio­lo­gique qui rem­plit de nom­breuses fonc­tions bio­lo­giques telle que :

  • sup­port inter­mé­diaire de la tra­duc­tion de l'ADN en pro­téines,
  • cata­ly­seur de l'activité pep­ti­dyl­trans­fé­rase menant à la for­ma­tion d'une liai­son pep­ti­dique,
  • régu­la­teur de l'expression génique grâce aux ribos­witch ou a de petites molé­cules inter­fé­re­netes,
  • ou encore l'inactivation de chro­mo­some par de longs ARN inter­fé­rents.

 

Si la conser­va­tion de la séquence est d'une impor­tance pri­mor­diale pour le fonc­tionn­ne­ment d'une pro­téine, ce dogme cen­tral est remis en ques­tion dans le cadre des ARN. En effet, il sem­ble­rait que les fac­teurs impor­tant pour que les ARN puissent mener à bien leurs rôles soient la struc­ture secon­daire et la struc­ture ter­tiaire des ARN.

 

Défi­ni­tion 1 :  Struc­ture d'un ARN

La struc­ture 3D d'un ARN est la don­née des coor­don­nées de ses atomes dans l'espace, don­nées que l'on peut retrou­ver dans un fichier de la PDB. À par­tir de ces don­nées, on peut uti­li­ser PyMOL[5] pour repré­sen­ter la struc­ture 3D de l'ARN consi­dé­ré, comme sur la Figure 1

3FU2
Figure 1 : Repré­sen­ta­tion de la struc­ture 3D du ribos­witch 3FU2 géné­rée par PyMOL[5]

 

Dans cet article, nous allons nous inté­res­ser en par­ti­cu­lier à la struc­ture secon­daire des ARN, avec quelques apports de struc­tures 3D afin de pimen­ter un peu l'histoire. L'objectif final est d'être prêt à affron­ter l'alignement de struc­tures secon­daire c'est-à-dire que vous puis­siez uti­li­ser du code qui génère les struc­tures secon­daires d'ARN à par­tir de fichiers PDB et, puisque nous y sommes, d'autres infor­ma­tions per­ti­nentes sur les ARN.

 

Représentation des structures d'ARN

Avant toutes choses (y com­pris défi­nir pro­pre­ment ce qu'est une struc­ture secon­daire) inté­res­sons-nous à la repré­sen­ta­tion des struc­tures d'ARN : il en existe plu­sieurs qui ont leur inté­rêts et leurs limi­ta­tions.

Très clai­re­ment, la repré­sen­ta­tion de la Figure 1 tirée des coor­don­nées ato­miques direc­te­ment est celle qui semble la plus « réa­liste » mais elle n'est que peu appro­priée pour la modé­li­sa­tion et la pré­dic­tion de struc­tures.

La représentation en squiggle-plot, motifs d'intérêts et limitations

La repré­sen­ta­tion en squiggle-plot est celle qui se rap­proche le plus de ce que l'on pour­rait des­si­ner manuel­le­ment et « natu­rel­le­ment » pour repré­sen­ter un ARN. C'est la repré­sen­ta­tion qui per­met de « com­prendre » le mieux ce qu'il se passe dans la struc­ture comme on peut le voir sur les Figures 2 à 5. Ces figures repré­sentent les motifs d'intérêts les plus com­muns dans les ARN et leur nomen­cla­ture.

 

stem
Figure 2 : En bleu, une struc­ture de tige. Une tige est une struc­ture d'ARN for­mée d'ARN double brin for­mant une suite consé­cu­tive de bases d'ARN appa­riées.

 

hairpin
Figure 3 : En bleu, une struc­ture de boucle en épingle. Une boucle en épingle est la struc­ture de boucle la plus simple que l'on peut obte­nir dans une struc­ture d'ARN. Elle est située à l'extrêmité d'une tige.

 

interior-loop
Figure 4 : En bleu, une struc­ture de boucle interne. Une boucle interne consiste en un ensemble de paires de bases d'ARN non appa­riées enca­dré par 2 tiges.

 

bulge
Figure 5 : En bleu, une struc­ture de bulge. Un bulge est struc­ture qui sur­vient lorsqu'il y a des bases non appa­riées que d'un côté d'une tige.

 

En revanche, pour l'alignement de séquence ou de struc­ture, elle est vrai­ment (vrai­ment) pas top, comme expli­qué dans une review de la com­pa­rai­son de struc­tures secon­daires de Schir­mer et al [1].

En par­ti­cu­lier, ce genre de des­sin est pro­duit par des algo­rithmes dont les objec­tifs prin­ci­paux sont l'esthétique  et l'évitement des recou­vre­ments des sous-struc­tures ce qui ne coïn­cide pas du tout avec la réa­li­té.

La représentation en dot-parenthesis

La repré­sen­ta­tion en dot-paren­the­sis (ou séquence bien paren­thé­sée ou encore dps) est celle que l'on peut  voir Figure 6. Ce genre de repré­sen­ta­tion est uti­li­sé comme entrée par le logi­ciel VARNA [2], qui per­met de pro­duire les images telles que celles pré­sen­tées Figures 2 à 5. Ce genre de repré­sen­ta­tion est un bon com­pro­mis entre la lisi­bi­li­té et la pra­ti­ci­té.

 

Défi­ni­tion 2 : Repré­sen­ta­tion dot-paren­the­sis

Chaque struc­ture de taille n est repré­sen­tée par une séquence de carac­tères qui sont des paren­thèses et des points.

Chaque paire de bases appa­riées (i, j) est repré­sen­tée par une paire de paren­thèse telle que :

  • le carac­tère à la ième posi­tion est une paren­thèse ouverte "("
  • le carac­tère à la jème posi­tion est une paren­thèse fer­mante ")".

Chaque base non-appa­riée est repré­sen­tée par un point ".".

 

Un exemple est don­né en des­sous.

Figure 6 : Repré­sen­ta­tion bien paren­thé­sée (dps) d'une chaîne d'ARN.
Ce qu'il faut com­prendre c'est que les bases

(02, 08)

sont en inter­ac­tions,

(03, 07)

aus­si.

La représentation en forme d'arbre

Si vous êtes infor­ma­ti­cien, vous savez ce qui va venir… En fait, une séquence bien paren­thé­sée c'est un arbre (oui je sais, j'ai l'air de faire de la magie mais je vous jure qu'il y a de vrais fon­de­ments à ce que je dis (pro­mis je ne don­ne­rais pas les détails)).

 

On va, pour une fois, com­men­cer par don­ner un exemple plu­tôt que de don­ner une définition/​algorithme.

tree
Figure 7 : Repré­sen­ta­tion sous forme d'arbre de la séquence bien paren­thé­sée ..((...))..

 

Je sup­pose que vous voyez ce que ça fait ? Oui ? Non ? Pas convain­cu ? Vous inquié­tez pas, voi­ci l'algorithme, écrit en C++ !

 

Algo­rithme 1 : Algo­rithme de trans­for­ma­tion d'une séquence bien paren­thé­sée en arbre

Bien évi­dem­ment, il ne fonc­tionne pas en stand alone, il faut la classe

Tree[T]

 ,la classe 

dps

 (dot-paren­the­sis sequence) et la ges­tion d'erreur

DPSIn­va­li­dIn­put

 mais vous avez l'idée géné­rale.

 

Le para­mètre de la classe 

Tree[T]

  est un vec­teur d'entiers qui donne les posi­tions dans la séquence cor­res­pon­dant au nœud interne ou à la feuille sur laquelle on tra­vaille.

  • Pour une feuille, l'étiquette est le couple  {(int) posi­tion du ., (int) posi­tion du .}, c'est-à-dire la posi­tion du "." dans la séquence bien paren­thé­sée.
  • Pour un nœud interne, l'étiquette est le couple  {(int) posi­tion de (, (int) posi­tion de ) cor­res­pon­dante}.

 

On remar­que­ra que l'arbre que j'ai don­né Figure 7 contient une racine 

root (-1, -1)

  qui est racine « vir­tuelle », c'est-à-dire qu'elle ne cor­res­pond à aucune réa­li­té bio­lo­gique ou de la séquence.

 

C'est parce qu'en fait, là, dans la séquence 

..((...))..

  le pre­mier carac­tère est un "." et donc une feuille, ce qui fait qu'on obtient une foret (une « famille » d'arbre) si on ne prend pas garde d'ajouter cette racine « vir­tuelle ».

Il faut trai­ter ce cas à part dans le code, selon ce que l'on sou­haite faire par la suite (dans le doute, ajou­ter sys­té­ma­ti­que­ment une racine vir­tuelle à pour être cer­tain d'obtenir un arbre et pas une foret semble être une bonne ini­tia­tive).

 

Qu'est-ce qu'une structure secondaire d'ARN ?

Définitions

La struc­ture d'un ARN est le résul­tat d'appariemment de bases (oui oui, je sais que vous savez) grâce à des liai­sons hydro­gènes, nous appel­le­rons ces liai­sons des arcs et la don­née d'une struc­ture avec ces liai­sons une struc­ture arc-anno­tée, comme sur la Figure 9.

 

Défi­ni­tion 3 : Arcs emboî­tés et arcs indé­pen­dants

Soient 2 arcs (i_1, i_2) et (i_3, i_4) dans une struc­ture d'ARN.

Ils sont dit indé­pen­dants s'ils res­pectent l'une des inéga­li­tés sui­vantes :

  • i_1 < i_2 < i_3 < i_4
  •  i_3 < i_4 < i_1  < i_2

Ils sont dit emboî­tés s'il res­pectent l'une des inéga­li­tés sui­vantes :

  •  i_1 < i_3 < i_4 < i_2
  •  i_3 < i_1 < i_2 < i_4

 

On a alors toutes les défi­ni­tions (infor­ma­tique) néces­saires pour défi­nir la struc­ture secon­daire d'un ARN.

 

Défi­ni­tion 4 : Struc­ture secon­daire d'un ARN

La struc­ture secon­daire d'un ARN est le plus gros sous-ensemble d'arcs emboî­tés et indé­pen­dants qui peuvent être extrait d'une séquence d'ARN arc-anno­tée.

 

Planarisation d'une structure secondaire d'ARN

Tout ceci est bien beau mais en vrai, dans un ARN il y a plein d'interactions contra­dic­toires me direz-vous. Et vous avez par­fai­te­ment rai­son, on va devoir sup­pri­mer des arcs de la repré­sen­ta­tion arc-anno­té, dont un exemple est dis­po­nible Figure 9, pour obte­nir une séquence bien paren­thé­sée comme celle de la Figure 6.

 

« Reti­rer » des arcs, c'est-à-dire des inter­ac­tions, est un pro­blème que l'on appelle pla­na­ri­sa­tion de l'ARN, et qui néces­site l'introduction d'une défi­ni­tion avant d'être défi­ni : la notion de struc­ture géné­rique.

 

Défi­ni­tion 5 : Struc­ture géné­rique

Une struc­ture géné­rique est un graphe (V, A)V = [| 1; n |] (où n est la lon­gueur de la struc­ture d'ARN) et  A \subseteq \{ (i, j)  \in [| 1; n |]^2  | i < j \}

 

Une struc­ture géné­rique S = (V, A) est inclue dans une struc­ture géné­rique S'' = (V, A') (S \subseteq S'') si et seule­ment si  A \subseteq A' .

 

Nous voi­ci équi­pés pour défi­nir le pro­blème de pla­na­ri­sa­tion de l'ARN !

 

Pro­blème 1 : pla­na­ri­sa­tion d'une struc­ture secon­daire d'ARN

À par­tir d'une struc­ture géné­rique S = (V, A), on retourne une struc­ture géné­rique S' = (V, A') qui res­pecte les points sui­vants :

  1. inclu­si­vi­té S \subseteq S'
  2. pla­na­ri­té  \forall (i, j) \neq (i', j') \in A', (i \neq i') \wedge (j \neq j') \wedge \left( [| i; j |] \cap [| i', j' |] = \left\{ \begin{array}{l} \emptyset \\ [| i; j |] \\ [| i'; j' |] \end{array} \right. \right)
  3. opti­ma­li­té  \forall A'' \subseteq A tels que (V, A'') pla­naire, |A''| \leq |A'|

 

C'est bien beau comme pro­blème, mais, en vrai com­ment on trouve une solu­tion ? L'idée géné­rale c'est que toute super struc­ture peut se décom­po­ser sous la forme expli­ci­tée Figure 8 :

decomposition
Figure 8 : pos­sible décom­po­si­tion d'une struc­ture géné­rique. Soit une struc­ture de taille n‑1 et une base non appa­riée soit une struc­ture de taille i emboi­tée dans un arc sui­vie d'une struc­ture de taille n — i ‑2

 

Com­ment le pro­blème est réso­lu ? Je vais pas vous don­ner l'algorithme (ça sera le sujet d'un autre article ^^) mais c'est un pro­blème soluble et pas si dif­fi­ci­le­ment que ça. Et puis, je vous don­ne­rai du code qui fait ce qu'il faut.

 

decomposition-exemple
Figure 9 : Un exemple de pla­na­ri­sa­tion. En bleu les arcs conser­vés, en noir les arcs sup­pri­més par la pla­na­ri­sa­tion

 

Bien sur, sur cet exemple arti­fi­ciel (Figure 9) la pla­na­ri­sa­tion a l'air d'enlever tous les arcs, ce n'est pas le cas.
Ça sort juste la plus grande struc­ture pla­naire pos­sible. et c'est ce dont on a besoin pour repré­sen­ter la struc­ture sous forme dot-paren­the­sis ou d'arbre pour faire de l'alignement.

Quelles informations intéressantes pour la structure des ARN peut-on extraire d'un fichier PDB ?

À par­tir des coor­don­nées ato­miques conte­nues dans un fichier PDB, il est pos­sible d'extraire plu­sieurs types d'informations. Nous allons nous inté­res­ser à 2 types d'informations :

  1. les angles dièdres
  2. les inter­ac­tions entre bases

 

Si les inter­ac­tions entre bases sont néces­saires pour trou­ver les struc­tures secon­daires des ARN, les angles dièdres pas du tout. Je vous pré­sente les angles dièdres parce que c'est un sujet que je trouve inté­res­sant, qui peut être utile quand on tra­vaille sur la struc­ture 3D des ARN et parce que le code que j'ai écrit et que je pré­sente à la fin per­met de les extraire faci­le­ment, du coup, qui peut le plus, peut le moins.

Et si on parlait d'angles dièdres ?

Ça n'est pro­ba­ble­ment pas une sur­prise pour vous, mais dans la PDB il n'y a pas que des struc­tures de pro­téines mais aus­si des struc­tures d'acides nucléiques et, en par­ti­cu­lier, tout un tas de struc­tures d'ARN, que nous allons uti­li­ser par la suite.

Dans ces fichiers qui, pour rap­pel, contiennent les coor­don­nées ato­mique d'une molé­cule (en l'occurence, des chaînes d'ARN), peuvent ser­vir à extraire tout un tas de don­nées et on va se concen­trer d'abord sur les angles dièdres

Mais qu'est ce qu'un angle dièdre ?

Défi­ni­tion 6 : Angle dièdre

angle_diedre
Figure 10 : Angle dièdre Φ for­mé par 2 plans défi­nis par 2 ensembles d'atomes (bleu, vio­let) et (vio­let, rouge).

En chi­mie, un angle dièdre est l'angle for­mé entre 2 plans défi­nis par 3 atomes, ces 2 plans ayant 2 atomes en com­mun.

Les angles dièdres de l'ARN

Main­te­nant que vous vous rap­pe­lez ce qu'est un angle dièdre, pas­sons aux angles dièdres dans l'ARN, et il y en a un paquet ! La Figure 11 montre les angles dièdres de l'ARN.

diedre
Figure 11 : Back­bone de l'ARN où les angles de tor­sion sont éti­que­tés au centre du lien des 4 atomes for­mant l'angle dièdre. En bleu les 6 angles dièdres de l'ARN (α, β, γ, δ, ε, ζ) et en vio­let (χ) l'angle de rota­tion de la base. (figure ins­pi­rée de Ste­phen Neidle. Prin­ciples of Nucleic Acid Struc­ture. Aca­de­mic Press, Oct. 2007. isbn : 978- 0123695079.)

 

Comme vous l'avez sûre­ment consta­té, sur la Figure 11, la défi­ni­tion de l'angle χ est un peu floue. C'est nor­mal : cet angle dépend de la base, de selon si elle est purine ou pyri­mi­dine.

 

Pour plus de cla­re­té, je vous livre Figure 12 la liste des atomes mis en jeu pour cal­cu­ler les angles dièdres.

 

Figure 12 : défi­ni­tion exacte des angles impli­qués dans les dif­fé­rents angles dièdres et de tor­sions dans l'ARN.

Vous avez peut être remar­qué qu'il y a 2 angles sup­plé­men­taires Figure 12 dont je n'ai pas encore par­lé, η et θ.

Ces 2 angles ont été inté­gré par Olson [3] afin d'avoir une mesure de la flexi­bi­li­té inter-base des ARN (et ça marche !).

Et les types d'interactions ?

En vrai, ce qui nous inté­resse pour la struc­ture secon­daire des ARN, c'est les inter­ac­tions et les types d'interactions plus que les angles dièdres (ce n'était qu'une par­tie bonus que j'aime bien).

Quand on parle de type d'interactions, quand on a fait un peu de struc­ture dans sa vie, logi­que­ment on pense aux :

  1. inter­ac­tions d'empilement (i.e. de sta­cking)
  2. inter­ac­tions bord-à-bord (i.e. edge-to-edge)

Là, je vais me foca­li­ser sur les inter­ac­tions bord-à-bord exis­tant au tra­vers de liai­son hydro­gène (et ça en fait déjà un paquet !).

 

Je sup­pose que vous avez tous enten­du par­ler des inté­rac­tions cano­niques de type Wat­son-Cri­ck/­Wat­son-Crick mais, en réa­li­té, elles sont loin d'être les seules inté­rac­tions exis­tantes. En effet, dans la clas­si­fi­ca­tion de Léon­tis et Wes­thof, il existe 12 types d'intéractions pos­sible, comme on peut le voir Figure 14.

 

base-edges
Figure 13 : À gauche, les bords d'intéractions (pour l'adénosine, une purine). À droite, les orien­ta­tions des liens gly­co­siques défi­nis par rap­port à une ligne paral­lèle pas­sant au tra­vers des inter­ac­tions hydro­gène base-à-base (tirée de [4]).

Petit retour en arrière : d'où viennent ces 12 types ? Qu'est ce que c'est que cette arnaque ?

 

C'est pas une arnaque du tout, c'est juste que, contrai­re­ment à ce que vous pou­viez croire, les inter­ac­tions entre bases de l'ARN ne sont pas exclu­si­ve­ment entre les « bords » de Wat­son-Crick (cf Figure 13) mais aus­si entre les « bords » de Hoog­sten et les « bords » Sugar. Ce qui nous fait 3 « bords » d'intéractions qui peuvent tous (on va dire ça pour l'instant) inté­ra­gir les uns avec les autres !

 

On peut très bien ima­gi­ner une adé­nine dont le bord Wat­son-Crick inté­ra­git avec le bord Hoog­sten d'une ura­cile par exemple.

C'est le moment où vous me dites que {{3}\choose{2}} = 6 et que je vous ai anar­qué sur le nombre de types d'interaction.

 

C'est parce qu'il reste l'inclinaison du lien qui peut être cis ou trans, comme cela est expli­qué sur un sché­ma Figure 13, ce qui nous amène bien à {{2}\choose{1}} {{3}\choose{2}} = 12 types d'intéractions pos­sibles.

Celles ci sont décrites, pour plus de cla­re­té sur la Figure 14.

cis-trans
Figure 14 : Dia­gramme sché­ma­tique des 12 types d'intéractions pos­sibles (tirée de [4])

En pra­tique, 11 sur les 12 familles d'intéractions pos­sibles ont été déter­mi­nées dans des struc­tures de la PDB, la famille man­quante étant la famille cis Hoogsten/​Hoogsten (à vous de jouer =p).

 

C'est bien beau tout ça, mais comment on récupère tout ça ?

Il est pos­sible d'obtenir les struc­tures arcs-anno­tées d'un ARN à par­tir d'un fichier PDB grâce au logi­ciel rna­view.

En guise de conclu­sion, je vais vous don­ner un peu de code qui vous per­met­tra de jouer avec les notions que l'on a vue dans l'article.

Cela vous per­met­tra d'extraire des struc­tures bien paren­thé­sées (donc des struc­tures secon­daires) et de regar­der les inter­ac­tions pré­ser­vées et celles reje­tées par la pla­na­ri­sa­tion (et pour­quoi pas d'en faire des stats, j'en ai fait pen­dant mon stage, c'est sur­pre­nant) mais aus­si de récu­pé­rer les angles dièdres et de regar­der leurs dis­tri­bu­tions (je l'ai fait aus­si, n'oubliez pas votre tri­go­no­mé­trie de base).

Je com­prends com­plè­te­ment que vous ayez autre chose à faire de vos jour­nées, mais si jamais vous en avez besoin, vous savez qu'il y a un code tout fait qui vous attend. (Et si vous trou­vez des bugs \o/​ dites-le dans les com­men­taires, je pat­che­rai)

Le code python dis­po­nible ici, sa docu­men­ta­tion est et vous pou­vez télé­char­ger le paquet pip à cet endroit et juste taper 

pip ins­tall ppr­na-1.0.0b1.tar.gz

.

 

Des exemples de ce code sont dis­po­nibles ici :

Exemple de code 1 : Récu­pé­ra­tion des inté­rac­tions conser­vées et sup­pri­mées de chaque modèle de chaque chaîne de chaque struc­ture d'un dos­sier conte­nant des PDB d'ARN dans un fichier CSV.

Exemple de code 2 : Récu­pé­ra­tion des angles dièdres de chaque modèle de chaque chaîne de chaque struc­ture d'un dos­sier conte­nant des PDB d'ARN dans un fichier CSV.

 

 

Mer­ci à ZaZo0o, Kum­qua­tum, Clem_​ et lelouar pour les com­men­taires, cor­rec­tions, la détec­tion de fautes de fran­çais et les coups de pieds au cul !

 

[1]: Intro­duc­tion to RNA secon­da­ry struc­ture com­pa­ri­son, Schir­mer, Ste­fa­nie and Pon­ty, Yann and Gie­ge­rich, Robert, Huma­na Press, 2014

[2]: VARNA : Inter­ac­tive dra­wing and edi­ting of the RNA secon­da­ry struc­ture, Dar­ty, Kévin and Denise, Alain and Pon­ty, Yann, Bio­in­for­ma­tics, 2009

[3]: Confi­gu­ra­tio­nal sta­tis­tics of poly­nu­cleo­tide chains. A single vir­tual bond treat­ment., Olson, W. K., Macro­mo­le­cules, 1975

[4]: Geo­me­tric nomen­cla­ture and clas­si­fi­ca­tion of RNA base pairs, Leon­tis, Neocles B. and Wes­thof, Eric, RNA, 2001

[5]: The PyMOL Mole­cu­lar Gra­phics Sys­tem, Schrö­din­ger, LLC, 2010




Commentaires

Laisser un commentaire