Introduction à la manipulation d'intervalles dans R

Introduction

"Quelle est la pro­fon­deur de ce séquen­çage ?"

"Quelle pro­por­tion de SNPs se situent dans des exons ?"

"Y a‑t-il des pics dans ces don­nées de ChIP-seq ?"

"Quelle pro­por­tion de pro­mo­teurs che­vauchent des îlots CpG ?"

Voi­là le genre de ques­tions ren­con­trées fré­quem­ment en bio­in­for­ma­tique. Nous pou­vons y répondre à l'aide de la mani­pu­la­tion d'intervalles. Un inter­valle est défi­ni par ses posi­tions de début et de fin. Nous allons voir com­ment tra­vailler avec ce genre de don­nées en uti­li­sant des packages de la suite Bio­con­duc­tor pour R. Il existe l'équivalent dans d'autres lan­gages, notam­ment bed­tools et PyRanges.

Au niveau le plus élé­men­taire, un inter­valle est ain­si consti­tué de deux nombres, indi­quant son début et sa fin. Le package IRanges per­met par exemple de mani­pu­ler ce type de don­nées très basiques.

Nous ne tra­vaillons cepen­dant pas avec des don­nées dénuées de contexte. Il est en effet impor­tant de savoir sur quel chro­mo­some et sur quel brin on se situe, quelle est la taille du génome, … Le package Geno­mi­cRanges, que nous étu­die­rons dans le second article de cette série, pré­sente ain­si tout son inté­rêt, en per­met­tant de rajou­ter ces infor­ma­tions.

Le package ply­ranges, qui clô­tu­re­ra cette série, per­met quant à lui de mani­pu­ler des inter­valles à l'aide de la syn­taxe dplyr (noms de fonc­tions simples et enchaî­ne­ment d'opérations à l'aide de pipes).

Installer et charger le package IRanges

Dans un pre­mier temps, nous allons ins­tal­ler et char­ger le package dans R :

Créer un objet IRanges

Pour créer un objet IRanges, au moins deux élé­ments sur les trois sui­vants sont néces­saires :

  • la posi­tion de début des inter­valles
  • la posi­tion de fin des inter­valles
  • la lar­geur des inter­valles

La fonc­tion IRanges() per­met la créa­tion de ce type d'objet, en indi­quant le début et la fin des inter­valles. Nous aurions éga­le­ment pu créer le même objet en indi­quant le début et la lar­geur des inter­valles.

Voyons à quoi res­semble notre objet :

Nous pou­vons en extraire le conte­nu à l'aide des fonc­tions sui­vantes :

Manipulations de base

Nous allons main­te­nant pas­ser en revue les prin­ci­pales fonc­tions de mani­pu­la­tion d'intervalles du package.

Voi­ci une illus­tra­tion des résul­tats obte­nus à l'aide des com­mandes ci-des­sus :

Atten­tion : gaps() est exclu­sif et ne contient donc pas les fron­tières

Calcul de profondeur

Le cal­cul de pro­fon­deur fait par­tie des opé­ra­tions les plus cou­rantes. Il s'agit de savoir, pour chaque posi­tion de l'espace défi­ni par l'ensemble des inter­valles, com­bien d'intervalles couvrent cette posi­tion.

Cette com­mande ren­voie un objet de classe Rle (Run-length enco­ding, Codage par plages en fran­çais), qui per­met la com­pres­sion de don­nées sans perte. Plu­tôt que d'avoir par exemple une chaîne de carac­tères "abbcccddd­deeeee", ce codage indique com­bien de fois une don­née est répé­tée. Notre chaîne de carac­tères devient ain­si "a1b2c3d4e5". Ce type de codage est donc par­ti­cu­liè­re­ment inté­res­sant pour des don­nées conte­nant une grande quan­ti­té de valeurs répé­tées.

Le résul­tat se lit de la manière sui­vante : les 3 pre­mières posi­tions ne sont pas cou­vertes, puis la 4e posi­tion est cou­verte 1 fois, …, l'avant-dernière posi­tion est cou­verte 2 fois et enfin la der­nière posi­tion est cou­verte 1 fois.

Comme men­tion­né dans l'introduction, IRanges atteint ses limites dès lors que l'on tra­vaille avec des inter­valles géno­miques, pour les­quels le package Geno­mi­cRanges est bien plus adap­té. Ce sera l'objet de notre pro­chain article !

Métadonnées

Notre objet ir se com­pose de 7 inter­valles et 0 colonne de méta­don­nées. Ces méta­don­nées peuvent être des noms de gènes, des scores, des pour­cen­tages de GC, …

Voyons com­ment ajou­ter ce genre de don­nées à notre objet.

Nous pou­vons accé­der à ces dif­fé­rents élé­ments de la manière sui­vante :

Conclusion

Dans les pro­chains articles, à paraître pro­chai­ne­ment, nous ver­rons com­ment uti­li­ser ces outils de façon plus concrète, en par­ti­cu­lier pour la mani­pu­la­tion et les opé­ra­tions sur des inter­valles géno­miques. N’hésitez pas à poser vos ques­tions en com­men­taires, j’essayerai d’y répondre dans ces pro­chains articles ou direc­te­ment dans le fil des com­men­taires

Pour aller plus loin …

_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​_​

Un grand mer­ci à Camille, Auré­lien, aze­rin, Guillaume et Yoann pour leurs com­men­taires, conseils et autres remarques construc­tives dans le cadre ce cette pre­mière contri­bu­tion au blog !

Les logos des packages ont été télé­char­gés sur BiocS­ti­ckers



Pour continuer la lecture :


Commentaires

Une réponse à “Introduction à la manipulation d'intervalles dans R”

  1. Super article, hâte de lire la suite sur GRanges !

Laisser un commentaire