• Aucun résultat trouvé

Soit N jeux de données métagénomiques, dénotés S1, S2, Si, ...SN. Notre objectif est de four-

nir une matrice de distances D de taille N × N où Di,j représente la distance entre Si et Sj. De

telles distances sont listées dans le tableau 3.1. Le calcul d’une matrice de distances peut être décomposé en deux étapes :

1. Comptage des k-mers. Chaque jeu de données est représenté par un ensemble de caractéristiques discriminantes. Dans notre cas, il s’agit de son contenu en k-mers. Plus précisément, une matrice de comptages KC de taille W × N est calculée, où W est le nombre de k-mers distincts parmi tous les jeux de données. KCi,j représente le nombre

de fois qu’un k-mer i est présent dans le jeu de données Sj.

2. Calcul des distances. Basée sur l’information des comptages de k-mers, la matrice de distances D est calculée. De nombreuses distances (voir tableau 3.1) peuvent ainsi être dérivées de la matrice KC.

En réalité, Simka ne requiert pas d’avoir à disposition l’intégralité de la matrice KC pour commencer le calcul des distances. Mais pour des raisons de simplicité, nous allons dans un premier temps considérer qu’elle est disponible.

L’étape de comptage des k-mers découpe chaque lecture des jeux de données en k-mers et effectue un comptage global. Cela peut être effectué en comptant les k-mers de chaque jeu de données, puis en fusionnant les spectres de k-mers résultants. Le résultat de ces opérations est

Figure 3.1. Nombre moyen de k-mers distincts par jeu en fonction du type d’en- vironnement et du type d’organismes (k = 21). Les statistiques ont été récoltées sur des centaines de jeux métagénomiques du projet HMP (vert), du projet Tara Oceans (bleu) et de projets de sol (rouge, références projets EBI EMG : SRP029969 et SRP008595). La même quantité de données a été considérée dans chaque jeu : 3 milliards de k-mers (∼40 millions de lectures). Les jeux utilisés pour la figure de gauche contiennent majoritairement des bactéries. Les jeux de Tara Oceans considérés dans la figure de droite ont été filtrés par taille d’organismes : de 0 à 0.2 µm (virus), de 0.22 à 3 µm (bactéries), de 0.8 à 5 µm (protistes) et de 5 à 2000 µm (métazoaires).

la matrice KC (de taille W × N). Des algorithmes très performants, tels que KMC2 [113], ont récemment été développés pour extraire le spectre de k-mers d’un jeu de données. Grâce à ces nouveaux outils, l’étape de comptage de chaque jeu peut être effectuée en un temps et un espace mémoire raisonnables, même pour de grands jeux. Cependant, l’inconvénient principal de cette approche vient de l’étape de fusion et de l’énorme quantité d’espace mémoire nécessaire pour stocker la matrice de comptages KC résultante. Cet espace mémoire est calculé de la manière suivante : MemKC = W ∗ (8 + 4N) octets, où W est le nombre de k-mers distincts, et 8 et 4

sont respectivement le nombre d’octets nécessaires au stockage d’un 31-mer et d’un comptage. Par exemple, le projet Human Microbiome Projet (HMP) [1] entier (690 jeux contenant chacun 45 millions de lectures en moyenne) dénombre 95 milliards de 31-mers distincts et aurait requis un espace de 260 To pour stocker la matrice KC. De plus, le nombre de k-mers distincts peut augmenter drastiquement sur des environnements plus complexes (eau de mer, sol). La figure 3.1 indique que ces milieux génèrent plus de k-mers distincts par jeu. Le type d’organismes étudiés a également un impact considérable car il joue sur la diversité et la taille des génomes présents. Les projets issus de ces milieux complexes généreraient des matrices de comptage encore plus grandes dont le stockage est inconcevable.

Cependant, un regard attentif à la définition des distances (tableau 3.1) montre que, mises à part quelques transformations finales, elles sont toutes additives sur les k-mers distincts. Des contributions indépendantes à la distance peuvent donc être calculées en parallèle à partir d’en- sembles disjoints de k-mers, puis agrégées pour construire la distance finale. De plus, chaque contribution peut elle-même être construite de manière itérative, une ligne de la matrice KC à la fois. Dans la suite du manuscrit, on appellera une ligne de la matrice KC un vecteur

S1  S2  …  SN  S1  0  0.2  …  0.1  S2  0.2  0  …  0.4  …  …  …  …  …  SN 0.1  0.4  …  0  Jeu  S1  Jeu  S2  Jeu  SN  Accumula2on des  contribu2ons et  calcul de la matrice  de distances finale 

… 

Généra2on des  vecteurs  d’abondances  Mise à jour d’une contribu2on  par2elle à la distance  Mise à jour d’une contribu2on  par2elle à la distance  Mise à jour d’une contribu2on  par2elle à la distance  Mise à jour d’une contribu2on  par2elle à la distance 

… 

Figure 3.2. Stratégie de SIMKA. La première étape prend en entrée N jeux de données et génère plusieurs flux de vecteurs d’abondances à partir d’ensembles disjoints de k-mers. Un vecteur d’abondances est un k-mer distinct et ses N comptages dans les N jeux de données. Ces vecteurs d’abondances sont pris en entrée de la seconde étape qui met à jour itérativement chaque contribution à la distance en parallèle. Une fois qu’un vecteur d’abondances a contribué à la distance, il n’y a plus besoin de le conserver. L’étape finale cumule chaque contribution et calcule la matrice de distances finale.

d’abondances. Ce dernier représente un k-mer distinct et ses N comptages dans les N jeux de lectures.

Pour récapituler, au lieu de calculer l’intégralité de la matrice de comptages de k-mers KC, le schéma de calcul alternatif que nous proposons consiste à générer successivement les vecteurs d’abondances à partir desquels des contributions indépendantes aux distances peuvent être ité- rativement calculées en parallèle. L’avantage majeur de cette approche est que l’énorme matrice de comptages KC n’a pas besoin d’être stockée. Cependant, cette approche nécessite le déve- loppement d’une nouvelle stratégie pour générer les vecteurs d’abondances. La section suivante décrit la méthode de comptage de k-mers multi-jeux (Multiset K-mer Counting - MKC) que nous avons développé dans ce but. Celle-ci est très efficace en temps et en mémoire et peut être parallélisée sur de grandes infrastructures de calcul. Comme illustré dans la figure 3.2, Simka utilise les vecteurs d’abondances générés par le MKC pour calculer les distances du tableau 3.1.

Documents relatifs