Université Lille1

Résumé du stage de Antonin Carette

LOGO
Entreprise Laboratoire d'Informatique Fondamentale de Lille (site web) - Équipe Bonsai (site web)
Période de stage du 01 avril 2014 au 30 juin 2014
Tuteur entreprise Mathieu Giraud
Tuteur Universitaire Meftali Samy

Sujet du stage

Visualisation intéractive des clones V(D)J en fonction des distances d'édition, et suivi de la Leucémie Aigüe Lymphoblastique

Résumé du stage

logo_Bonsai
Logo de l'équipe Bonsai

Le LIFL (Laboratoire d'Informatique Fondamentale de Lille) est un centre de recherche en Informatique, tout comme l'INRIA (Institut National de Recherche en Informatique et Automatique). Le LIFL est situé sur le campus de l'Université Lille1.
Le LIFL comprend 17 équipes de recherche, ainsi que plus de 300 membres.
Après un entretien passé avec M. Giraud pour intégrer, pour ce stage de fin d'année, l'équipe de recherche Bonsai (une équipe de bio-informaticiens, dirigée par Mme Hélène Touzet), j'ai rejoins une petite partie d'elle, afin de travailler sur un projet de suivi de Leucémie Aigüe Lymphoblastique : le projet Vidjil.

Contexte

La Leucémie Aigüe Lymphoblastique

La Leucémie Aigüe Lymphoblastique (LAL) est un cancer liquide caractérisé par une surproduction de lymphocytes cancéreux. Ce cancer est particulièrement présent chez les enfants.
La lymphe est une partie du sang contenant, entre autre, les globules blancs, dans lesquelles font partis les lymphocytes - chaque lymphocyte, par des recombinaisons (nous les appelons recombinaisons V(D)J), vont se diversifier, et se spécifier, afin de reconnaître un seul type d'antigène (bactérie ou virus).
S'ils sont utilisés, ils vont alors se multiplier afin de mieux contrer l'attaque de l'ennemi - les lymphocytes ayant la même configuration V(D)J sont alors semblables, et sont appelés clones V(D)J. C'est ainsi qu'agit la LAL : elle entraîne la multiplication de lymphocytes cancéreux, entraînant une surpopulation de ceux-ci et cachant les autres défenseurs, entraînant donc un échec d'efficacité de la part du système immunitaire contre les autres maladies.


lymphocyte_exemple
Aperçu d'un lymphocyte et de ses régions V(D)J - imgt.org

L'équipe Vidjil

Mathieu Giraud, Mikaël Salson et Marc Duez ont commencé à participer au projet Vidjil en 2012/2013 avec une équipe d'hématologistes dirigée par M. Claude Preudhomme, présente à l'Université de Lille2, intéressée par l'usage d'un programme informatique leur permettant de séquencer à haut-débit des jeux de données issus d'un échantillon sanguin prélevé sur un patient de LAL.

L'équipe Bonsai a alors créé deux logiciels bien spécifiques, profitables aux médecins et chercheurs, afin de pouvoir dénombrer et suivre l'évolution des clones V(D)J cancéreux, afin de suivre plus facilement le patient, mais aussi lui attribuer un traitement plus spécifique:

  • premièrement, un programme en C++ permettant de séquencer à haut-débit le jeu de données à analyser, afin de constituer les clones V(D)J (ce programme est nommé Vidjil) - il donnera en sortie un fichier .data au format JSON, qui sera pris en entrée par le deuxième programme (l'article concernant ce programme est consultable ici),
  • deuxièmement, un site internet (appelé l'interface) permettant de visualiser toutes les informations calculées précédemment pour un clone V(D)J donné, dans un cadre SVG, et en fonction d'une distribution (gènes V, gènes J, allèles V, longueur des régions V/J, etc...) où chaque clone V(D)J est représenté par un noeud. L' interface contient un moteur physique, créé grâce au framework D3JS.

interface_exemple
Présentation de l'interface du projet Vidjil, montage des deux palettes CSS via Gimp

Le stage

Objectif

Mon objectif principal a été d'implémenter une distribution en fonction des distances d'édition ainsi que l'algorithme de clusterisation DBSCAN, ce qui permet à l'utilisateur de voir, d'un simple coup d'oeil, les similarités et disparités entre clones V(D)J, et de suivre l'évolution de ceux-ci en fonction du temps.
Cet objectif était à réaliser avec les technologies déjà existantes dans le projet, c'est-à-dire C++, Python, HTML5, Javascript, JSON, Ajax, LESS (site web) ainsi que les frameworks D3JS (site web) et Jquery (site web).

Mon travail
  • Avec le langage Javascript et le framework D3JS, j'ai créé un nouveau paramétrage du moteur physique D3JS (déjà utilisé pour le mouvement des clones ainsi que l'implémentation des graphiques pour le suivi), afin d'obtenir une vue bien spécifique aux distances d'édition entre chaque clone (le précédent ne permettait pas au noeuds d'avoir une certaine distance à respecter avec un autre, et ne serait pas utile pour les distributions déjà implémentées - ni l'implémentation d'arêtes), en lui spécifiant de donner, par lui-même, une priorité d'attache à des arêtes bien spécifiques afin de respecter le squelette global du graphe. Il m'a fallu aussi diminuer très fortement le nombre d'arêtes (dans cette distribution seulement), afin de ne pas surcharger celui-ci inutilement, tout en gardant une structure représentative de graphe.
    Le nouveau paramétrage inclus donc principalement une gravité, ainsi qu'un tableau de distances entre un noeud source et un noeud cible à respecter, calculé par le séquenceur - j'ai dû, pour ce dernier, modifier le programme C++ afin de pouvoir calculer toutes les distances de Levenshtein grâce à la programmation dynamique, toujours renvoyées dans le fichier .data.
    Cependant, nous ne sommes pas sûr aujourd'hui que cette méthode de représentation soit la meilleure à prendre en compte, à cause de l'optimisation incertaine du moteur physique et de sa trop grande liberté de positionnement. Ainsi, il faudra sûrement travailler sur la création d'un arbre phylogénétique pour mieux représenter les similarités entre clones V(D)J, ou alors sur une représentation en plusieurs graphes indépendants, se constituant dynamiquement grâce à un choix concernant les distances d'édition.

edit_distance_graph_ex
Capture d'écran de la distribution Edit Distance sur un jeu de données - nous pouvons remarquer le flou visuel quant aux distances d'édition

  • Deuxièmement, j'ai implémenté l'algorithme DBSCAN (Density-Based Spatial Clustering of Applications with Noise - voir article de l'algorithme sur Wikipédia) - un algorithme de clusterisation à O(n^2) en temps - dans l'interface. Après implémentation, j'ai créé une nouvelle distribution avec manipulation interactive (via deux sliders) des deux paramètres de l'algorithme, représentant une suite de petits graphes (chaque graphe représentant un cluster) : epsilon (un paramètre permettant de représenter la distance entre deux noeuds - les distances d'édition donc), et le nombre minimum de points requis afin de former une région dense : MinPts. La variation des deux paramètres permet ainsi de former des clusters différents, et indépendants.

dbscan_graph_ex
Capture d'écran de la distribution DBSCAN sur un jeu de données - permettant de montrer divers clusters formés

Conclusion

En conclusion, les deux objectifs ont bien été réalisés, même si seul DBSCAN permet aujourd'hui de visualiser respectueusement les similarités et disparités entre clones V(D)J.
Personnellement, ce stage en laboratoire de recherche m'a permis de confirmer ma forte relation avec le monde de la recherche, l'Informatique et la Biologie, et m'a aussi permis d'apprendre beaucoup au niveau de l'ingénierie logicielle (intégration d'un projet existant, travail en équipe, utilisation d'outils précis et spécifiques comme git ou encore QUnit, etc...).