Suivez l'guide :
Introduction à la manipulation d'intervalles dans R

Introduction

"Quelle est la profondeur de ce séquençage ?"

"Quelle proportion de SNPs se situent dans des exons ?"

"Y a-t-il des pics dans ces données de ChIP-seq ?"

"Quelle proportion de promoteurs chevauchent des îlots CpG ?"

Voilà le genre de questions rencontrées fréquemment en bioinformatique. Nous pouvons y répondre à l'aide de la manipulation d'intervalles. Un intervalle est défini par ses positions de début et de fin. Nous allons voir comment travailler avec ce genre de données en utilisant des packages de la suite Bioconductor pour R. Il existe l'équivalent dans d'autres langages, notamment bedtools et PyRanges.

Au niveau le plus élémentaire, un intervalle est ainsi constitué de deux nombres, indiquant son début et sa fin. Le package IRanges permet par exemple de manipuler ce type de données très basiques.

Nous ne travaillons cependant pas avec des données dénuées de contexte. Il est en effet important de savoir sur quel chromosome et sur quel brin on se situe, quelle est la taille du génome, ... Le package GenomicRanges, que nous étudierons dans le second article de cette série, présente ainsi tout son intérêt, en permettant de rajouter ces informations.

Le package plyranges, qui clôturera cette série, permet quant à lui de manipuler des intervalles à l'aide de la syntaxe dplyr (noms de fonctions simples et enchaînement d'opérations à l'aide de pipes).

Installer et charger le package IRanges

Dans un premier temps, nous allons installer et charger le package dans R:

Créer un objet IRanges

Pour créer un objet IRanges, au moins deux éléments sur les trois suivants sont nécessaires :

  • la position de début des intervalles
  • la position de fin des intervalles
  • la largeur des intervalles

La fonction IRanges() permet la création de ce type d'objet, en indiquant le début et la fin des intervalles. Nous aurions également pu créer le même objet en indiquant le début et la largeur des intervalles.

Voyons à quoi ressemble notre objet:

Nous pouvons en extraire le contenu à l'aide des fonctions suivantes:

Manipulations de base

Nous allons maintenant passer en revue les principales fonctions de manipulation d'intervalles du package.

Voici une illustration des résultats obtenus à l'aide des commandes ci-dessus:

Attention : gaps() est exclusif et ne contient donc pas les frontières

Calcul de profondeur

Le calcul de profondeur fait partie des opérations les plus courantes. Il s'agit de savoir, pour chaque position de l'espace défini par l'ensemble des intervalles, combien d'intervalles couvrent cette position.

Cette commande renvoie un objet de classe Rle (Run-length encoding, Codage par plages en français), qui permet la compression de données sans perte. Plutôt que d'avoir par exemple une chaîne de caractères "abbcccddddeeeee", ce codage indique combien de fois une donnée est répétée. Notre chaîne de caractères devient ainsi "a1b2c3d4e5". Ce type de codage est donc particulièrement intéressant pour des données contenant une grande quantité de valeurs répétées.

Le résultat se lit de la manière suivante : les 3 premières positions ne sont pas couvertes, puis la 4e position est couverte 1 fois, ..., l'avant-dernière position est couverte 2 fois et enfin la dernière position est couverte 1 fois.

Comme mentionné dans l'introduction, IRanges atteint ses limites dès lors que l'on travaille avec des intervalles génomiques, pour lesquels le package GenomicRanges est bien plus adapté. Ce sera l'objet de notre prochain article !

Métadonnées

Notre objet ir se compose de 7 intervalles et 0 colonne de métadonnées. Ces métadonnées peuvent être des noms de gènes, des scores, des pourcentages de GC, ...

Voyons comment ajouter ce genre de données à notre objet.

Nous pouvons accéder à ces différents éléments de la manière suivante :

Conclusion

Dans les prochains articles, à paraître prochainement, nous verrons comment utiliser ces outils de façon plus concrète, en particulier pour la manipulation et les opérations sur des intervalles génomiques. N’hésitez pas à poser vos questions en commentaires, j’essayerai d’y répondre dans ces prochains articles ou directement dans le fil des commentaires

Pour aller plus loin ...

______________________________________________________________________________

Un grand merci à Camille, Aurélien, azerin, Guillaume et Yoann pour leurs commentaires, conseils et autres remarques constructives dans le cadre ce cette première contribution au blog !

Les logos des packages ont été téléchargés sur BiocStickers

  • À propos de
  • Technicien de la recherche INRAE, travaille sur la diversité génétique du blé tendre, délaissant la paillasse pour l'ordi.

Catégorie: Suivez l'guide | Tags: , , ,

Un commentaire sur “Introduction à la manipulation d'intervalles dans R

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

Laisser un commentaire