• Aucun résultat trouvé

Conclusion sur les structures de données existantes

Algorithme 6: Fonction EstDansIndex(seq) de Compareads.

4.3 résultats de compareads sur des données mé tagénomiques réelles

5.1.2 Redondance intra-échantillon

En comparant deux échantillons A et B à l’aide de Compareads, il est courant que le pour- centage de séquences de(A\B)soit différent du pourcentage de séquences de(B\A). Ceci

arrive car une unique séquence de A peut être similaire à plusieurs séquences de B, par exemple si ces séquences de B sont identiques entre elles. Notre méthode ne renseigne pas sur la composition d’un unique échantillon. Il peut être intéressant de disposer d’un score “d’autocorrélation” indiquant si certaines séquences d’un échantillon sont identiques ou simi-

laires entre elles. Nous souhaiterions pouvoir appliquer Compareads à un échantillon contre lui même. Évidement, avec notre méthode actuelle, un échantillon est similaire à lui même à 100%, car chaque séquence est similaire à au moins elle même dans le jeu de données.

sous-échantillonnage du jeu Notre première idée pour analyser un jeu contre lui même est de procéder à un sous-échantillonnage aléatoire du jeu afin de le diviser en deux parties égales. On a ainsi 50% des séquences de l’échantillon dans un sous-échantillon a et les 50% restants dans un sous-échantillon b. En appliquant Compareads sur a et b, on obtient un score d’autocorrélation, mais ce score n’est pas facilement interprétable.

Prenons le cas extrême où l’échantillon initial est composé pour moitié de séquences uniques et pour moitié d’une seule séquence, répétée un grand nombre de fois. En sous-échantillonnant aléatoirement cet échantillon, les sous-échantillons a et b sont composés pour moitié de sé-

5.1 perspectives 105 quences uniques. Le score d’autocorrélation de Compareads est alors de 50% pour a\b

comme pour b \a.

Prenons maintenant un cas extrême opposé : l’échantillon initial est composé pour moitié de séquences uniques et pour moitié de séquences en doublon, donc répétées deux fois. En sous-échantillonnant aléatoirement cet échantillon, chaque séquence a une probabilité p = 12

d’être dans a et une probabilité p = 12 d’être dans b. Ces probabilités sont indépendantes

et deux séquences identiques ont alors une probabilité p = 14 d’être ensemble dans a, une

probabilité p= 14 d’être ensemble dans b et une probabilité p= 12 d’être séparées entre a et b. Statistiquement, a contient alors 50% de séquences uniques, 25% de séquences en doublon et 25% de séquences similaires à des séquences de b. Le score d’autocorrélation de Compareads est alors de 25% pour a\b comme pour b\a.

Dans les deux exemples précédents, le jeu de données est composé de 50% de séquences uniques et 50% de séquences répétées, mais le score d’autocorrélation est différent. Ce cas illustre la difficulté d’établir un score d’autocorrélation à l’aide d’un sous-échantillonnage, sans modifier Compareads. Par contre, en prenant un score égale à 1 autocorrélation, on obtient un indice de la quantité de séquences différentes dans l’échantillon, c’est-à-dire les séquences qu’il resterait en enlevant toutes les séquences répétées. Dans le premier exemple, il y a 50% de séquences uniques, plus une séquence répétée. On a donc 50% (et une) séquences différentes dans le jeu. Dans le second exemple, on a 50% de séquences uniques et 50% de séquences en doublon. Le score de 25% peut être vu comme indiquant que le jeu est composé à 75% de séquences différentes.

Le sous-échantillonnage 50%-50% n’est peut-être pas le plus adapté mais un sous-échantillonnage différent implique d’utiliser un nombre de séquences différent lors des phases d’indexation et de requête. La faisabilité et l’impact sur les faux positifs restent à définir.

modification du bds Une autre possibilité est envisagée pour estimer le score d’au- tocorrélation. Le jeu au complet est indexé dans un bds particulier. Chaque case de ce bds particulier peut prendre la valeur 0, 1 ou 2, quand dans le bds normal, les cases sont des bits et ne peuvent donc prendre que la valeur 0 ou 1. Lorsque l’on indexe un k-mer, on contrôle si les cases concernées dans le bds sont toutes à 1 ou plus. Si elles sont toutes à 1 ou plus, ce k-mer a probablement déjà été identifié dans les séquences précédentes : on passe alors ces cases à 2. Si au moins une case a pour valeur 0, ce k-mer n’a pas déjà été identifié : on passe les cases contenant 0 à 1.

Une fois tous les k-mers indexés, chaque séquence est utilisée comme requête. Si une sé- quence a au moins t k-mers dont toutes les cases dans le bds sont à 2, cette séquence est probablement similaire à une autre séquence du jeu, en plus d’elle même.

Un tel score d’autocorrélation n’est pas sensible au phénomène expliqué précédemment. Deux jeux composés de 50% de séquences uniques auront un score d’autocorrélation de 50%, que les séquences similaires soient répétées en doublon ou un très grand nombre de fois. De plus, les séquences similaires sont récupérées à la fin du processus : on peut alors décider d’enlever ces séquences pour obtenir un jeu composé seulement de séquences uniques selon les paramètres t et k. Mais, cette méthode présente deux inconvénients. Le premier est qu’un bds permettant d’utiliser plus de deux valeurs (0 ou 1) consomme deux fois plus de mémoire que le bds classique. Le second inconvénient est plus contraignant : les k-mers de toutes les séquences doivent être indexés simultanément dans le bds. Or, la quantité de séquences qu’on peut indexer dans le bds est limitée afin de contrôler le taux de faux positifs. Concrètement, en utilisant k = 33, on peut indexer 1 milliard de 33-mers, soit maximum 14,7 millions de

séquences de 100 pb. Cette méthode ne peut donc pas être utilisée telle quelle sur des jeux de données de centaines de millions de séquences.