Un k-mère est une sous-chaîne de longueur k d'une chaîne de caractères plus grande. En génomique computationnelle, les k-mères sont les sous-séquences (de longueur k) résultant d'une lecture par séquençage de l'ADN. Étant donné une chaîne de caractères de longueur L, le nombre de k-mères possibles est L−k+1, tandis que le nombre de k-mères étant donné n possibilités (4 dans le cas de l'ADN, ACTG) est nk. Les k-mères sont généralement utilisés lors de l'assemblage de séquences[1], mais peuvent également être utilisés dans l'alignement de la séquence. Dans le contexte du génome humain, les k-mères de différentes longueurs sont employés pour expliquer la variabilité du taux de mutation[2],[3].
Dans l'assemblage de séquence, les k-mères sont généralement utilisés lors de la construction de graphiques de De Bruijn. Afin de créer un Graphe de De Bruijn, les chaînes stockées dans chaque arête, de longueur , doivent se chevaucher l'une l'autre sur une longueur afin de créer un vertex. Les séquences générées à partir de méthode de séquençage de prochaine génération ont généralement différentes longueurs durant une même session de lecture. Par exemple, les séquences lues par la technologie de séquençage Illumina produit des séquences pouvant être capturées par un k-mère de 100. Cependant, le problème avec le séquençage est qu'une petite fraction de k-mères de 100, des 100-mers, présents dans le génome sont en fait réellement générés. Cela est dû à des erreurs de lecture, mais de façon plus importante encore, par de simples trous de couverture qui se produisent au cours du séquençage. Le problème est que ces petites fractions de k-mères "corrompues", violent l'hypothèse principale des graphiques de Bruijn, que tous les k-mère issus des séquences lues doivent se chevaucher aux k-mères dans le génome par une superposition de longueur k−1 (qui ne peut pas se produire lorsque tous les k-mères ne sont pas présents). La solution à ce problème est de réduire la taille de ces k-mères en petits k-mères, tels que les petits k-mères représentent tous les k-mères de plus petite taille présents dans le génome. En outre, le fractionnement des k-mères en plus petites tailles aide également à soulager le problème des différentes longueurs de lecture initiale.
Un exemple de la solution de diviser la séquence lue en petits k-mères est montré dans la figure 1. Dans cet exemple, les séquences de 5 nucléotides ne tiennent pas compte de tous les k-mères de longueur 7 du génome, et dans ce cas, un graphe de de Bruijn ne peut pas être créé. Mais quand ils sont divisés en k-mères de longueur 4, les sous-séquences résultantes sont assez nombreuses et variées pour reconstituer le génome à l'aide d'un graphe de de Bruijn.
Le choix de la taille des k-mères a beaucoup d'effets différents sur l'assemblage des séquences. Ces effets varient grandement entre les plus petites tailles de k-mères et les tailles de k-mères plus grandes. Par conséquent, la compréhension des différentes tailles de k-mères doit être connue afin de choisir une taille appropriée, qui équilibre les effets. Les effets des tailles sont décrits ci-dessous.
Dans la pratique, une valeur de k de 2 à 6 permet d'obtenir des comparaisons stables et optimales de séquences de protéines sur un large éventail de distances phylogénétiques différentes[4].
Une diminution de la taille des k-mères va diminuer la diversité de séquences stockées dans le graphique dû à la diminution des possibilités de combinaison, et en tant que telle, aide à diminuer la quantité d'espace nécessaire pour stocker une séquence d'ADN.
Avoir une plus petite taille permettra d'augmenter les chances que tous les k-mères se chevauchent, et en tant que telles, les sous-séquences dans le but de construire le graphe de de Bruijn[5].
Cependant, en ayant une taille de k-mères plus petite, on risque d'avoir de nombreux chevauchements dans le graphe pour un seul k-mère. Par conséquent, la reconstruction du génome sera plus difficile car il y aura un nombre plus élevé de chemins ambigus dû à la plus grande quantité de k-mères qui devront être parcourus.
L'information est perdue lorsque les k-mères deviennent plus petits.
E. g. Les possibilités de combinaison pour AGTCGTAGATGCTG sont inférieures à celles pour ACGT, et en tant que tel, le premier est porteur d'un plus grand nombre d'informations (reportez-vous à l'entropie (la théorie de l'information) pour plus d'informations).
De plus petits k-mères posent le problème de ne pas être en mesure de résoudre certains points dans l'ADN, comme dans les microsatellites où plusieurs répétitions peuvent se produire. C'est à cause du fait que les petits k-mères auront tendance à revenir entièrement sur eux dans ces régions de répétition et il est donc difficile de déterminer le nombre de répétitions qui ont effectivement eut lieu.
E. g. Pour la sous-suite ATGTGTGTGTGTGTACG, le nombre de répétitions de la TG seront perdues si un k-mère de taille de moins de 16 est choisi. C'est parce que la plupart des k-mères vont revenir dans la région répétée et que le nombre de répétitions du même k-mère sera perdu au lieu de mentionner la quantité de répétitions.
Avoir de plus grande taille de k-mères augmentera la quantité d'arêtes dans le graphe, ce qui, à son tour, va augmenter la quantité de mémoire nécessaire pour stocker la séquence d'ADN.
En augmentant la taille du k-mère, le nombre de sommets diminuera également. Cela va aider à la construction du génome puisqu'il y aura moins de chemins à parcourir dans le graphique.
Une plus grande taille de k-mère court également un risque plus élevé de ne pas aller vers l'extérieur des sommets de chaque k-mère. C'est pour cette raison qu'une plus grande taille de k-mères augmente le risque qu'ils ne se chevauchent pas avec un autre k-mère sur une longueur de . Par conséquent, cela peut conduire à une non-continuité dans la séquence lue, et en tant que tel, peut conduire à une plus grande quantité de petits contigs.
Une plus grande taille de k-mère aide à atténuer le problème des petites régions de répétition. Cela est dû au fait que le k-mère contiendra un équilibre entre la région de répétition et la séquences d'ADN (étant donné qu'ils sont d'une assez grande taille) qui peuvent aider à résoudre le nombre de répétitions dans ce domaine particulier.
Les applications des k-mères dans l'analyse bio-informatique
La fréquence d'un ensemble de k-mères, dans le génome d'une espèce, dans une région génomique, ou dans une classe de séquences, peut être utilisée
en tant que "signature" de sous-séquence. La comparaison de ces fréquences est mathématiquement plus facile que l'alignement de la séquence, et est une méthode importante dans l'alignement sans l'analyse de la séquence. Elle peut également être utilisée comme une première étape d'analyse avant un alignement.
la séparation de différentes espèces dans un mélange de matériel génétique (métagénomique, microbiome)[6],[7];des phases/cadres d'information peut être ajoutée[8]
caractériser une protéine de liaison à motif de séquence[15]. En plus de k-mère, incisés k-mères (également nommé écartement q-grammes[16] ou espacées graines[17]) peut également être utilisé [18]
Déterminer la taille de lecture des k-mères peut être fait simplement en bouclant sur la taille de la longueur de la chaîne, en augmentant progressivement la position dans la chaîne et en prenant chaque sous-chaîne de longueur k. Le pseudo-code qui réalise cette opération est comme suit :
fonction K-mer(Chaine_caractere, k) /* k = longueur de chaque {{mvar|k}}-mère */
n = longueur(Chaine_caractere)
/* Boucle sur la longueur de Chaine_caractere jusque la longueur Chaine_caractere - taille des {{mvar|k}}-mère */
Pour i = 1 jusque n-k+1 inclus fait :
/* Sort chaque {{mvar|k}}-mère de longueur k, de la position i à la position i+k dans Chaine_caractere */
sortie Chaine_caractere[position i -> position i+k]
Fin de Boucle
Fin de fonction
En python3, il sera possible d'implémenter le code comme suit :
defkmer(sequence,k):# sequence correspond a la sequence ADN, k correspond a la longueur des {{mvar|k}}-mèren=len(sequence)kmers=[]foriinrange(0,n-k):kmers.append(sequence[i:i+k])returnkmers
↑P. Compeau, P. Pevzner et G. Teslar, « How to apply de Bruijn graphs to genome assembly », Nature Biotechnology, vol. 29, no 11, , p. 987–991 (PMID22068540, PMCID5531759, DOI10.1038/nbt.2023).
↑Kaitlin E Samocha, Elise B Robinson, Stephan J Sanders et Christine Stevens, « A framework for the interpretation of de novo mutation in human disease », Nature Genetics, vol. 46, no 9, , p. 944–950 (ISSN1061-4036, PMID25086666, PMCID4222185, DOI10.1038/ng.3050).
↑Varun Aggarwala et Benjamin F Voight, « An expanded sequence context model broadly explains variability in polymorphism levels across the human genome », Nature Genetics, vol. 48, no 4, , p. 349–355 (ISSN1061-4036, PMID26878723, PMCID4811712, DOI10.1038/ng.3511).
↑Andrzej Zielezinski, Susana Vinga, Jonas Almeida et Wojciech M. Karlowski, « Alignment-free sequence comparison: benefits, applications, and tools », Genome Biology, vol. 18, no 1, , p. 186 (ISSN1474-760X, DOI10.1186/s13059-017-1319-7, lire en ligne, consulté le )
↑Zerbino, Daniel R. et Birney, Ewan, « Velvet: algorithms for de novo short read assembly using de Bruijn graphs », Genome Research, vol. 18, no 5, , p. 821–829 (PMID18349386, PMCID2336801, DOI10.1101/gr.074492.107)
↑"Rachid Ounit, Steve Wanamaker, Timothy J Close and Stefano Lonardi", « CLARK: fast and accurate classification of metagenomic and genomic sequences using discriminative k-mers », BMC Genomics, vol. 16, , p. 236 (PMID25879410, PMCID4428112, DOI10.1186/s12864-015-1419-2)
↑Dubinkina, Ischenko, Ulyantsev, Tyakht, Alexeev, « Assessment of k-mer spectrum applicability for metagenomic dissimilarity analysis », BMC Bioinformatics, vol. 17, , p. 38 (PMID26774270, PMCID4715287, DOI10.1186/s12859-015-0875-7)
↑Meher, Sahu, Rao, « Identification of species based on DNA barcode using k-mer feature vector and Random forest classifier », Gene, vol. 592, no 2, , p. 316–324 (PMID27393648, DOI10.1016/j.gene.2016.07.010)
↑Li et al, « De novo assembly of human genomes with massively parallel short read sequencing », Genome Research, vol. 20, no 2, , p. 265–272 (PMID20019144, PMCID2813482, DOI10.1101/gr.097261.109)
↑Navarro-Gomez et al, « Phy-Mer: a novel alignment-free and reference-independent mitochondrial haplogroup classifier », Bioinformatics, vol. 31, no 8, , p. 1310–1312 (PMID25505086, PMCID4393525, DOI10.1093/bioinformatics/btu825)
↑Newburger, Bulyk, « UniPROBE: an online database of protein binding microarray data on protein–DNA interactions », Nucleic Acids Research, vol. 37(supp 1), no Database issue, , D77–82 (PMID18842628, PMCID2686578, DOI10.1093/nar/gkn660)
↑Keich et al, « On spaced seeds for similarity search », Discrete Applied Mathematics, vol. 138, no 3, , p. 253–263 (DOI10.1016/S0166-218X(03)00382-2)
↑Nordstrom et al, « Mutation identification by direct comparison of whole-genome sequencing data from mutant and wild-type individuals using k-mers », Nature Biotechnology, vol. 31, no 4, , p. 325–330 (PMID23475072, DOI10.1038/nbt.2515)
↑Chae et al, « Comparative analysis using K-mer and K-flank patterns provides evidence for CpG island sequence evolution in mammalian genomes », Nucleic Acids Research, vol. 41, no 9, , p. 4783–4791 (PMID23519616, PMCID3643570, DOI10.1093/nar/gkt144)
↑Mohamed Hashim, Abdullah, « Rare k-mer DNA: Identification of sequence motifs and prediction of CpG island and promoter », Journal of Theoretical Biology, vol. 387, , p. 88–100 (PMID26427337, DOI10.1016/j.jtbi.2015.09.014)
↑Jaron, Moravec, Martinkova, « SigHunt: horizontal gene transfer finder optimized for eukaryotic genomes », Bioinformatics, vol. 30, no 8, , p. 1081–1086 (PMID24371153, DOI10.1093/bioinformatics/btt727)
↑Delmont, Eren, « Identifying contamination with advanced visualization and analysis practices: metagenomic approaches for eukaryotic genome assemblies », PeerJ, vol. 4, , e1839 (DOI10.7717/Fpeerj.1839)
↑Bemm et al, « Genome of a tardigrade: Horizontal gene transfer or bacterial contamination? », Proceedings of the National Academy of Sciences, vol. 113, no 22, , E3054–E3056 (PMID27173902, PMCID4896698, DOI10.1073/pnas.1525116113)
↑Hozza, Vinar, Brejova « How big is that genome? estimating genomesize and coverage from k-mer abundance spectra » () (DOI10.1007/978-3-319-23826-5_20) —SPIRE 2015
↑Lamichhaney et al, « Structural genomic changes underlie alternative reproductive strategies in the ruff (Philomachus pugnax) », Nature Genetics, vol. 48, no 1, , p. 84–88 (PMID26569123, DOI10.1038/ng.3430)
↑Patro, Mount, Kingsford, « Sailfish enables alignment-free isoform quantification from RNA-seq reads using lightweight algorithms », Nature Biotechnology, vol. 32, no 5, , p. 462–464 (PMID24752080, PMCID4077321, DOI10.1038/nbt.2862, arXiv1308.3700)