Développement et optimisation d’un outil de simulation en C++ de données génomiques en populations spatialisées
Résumé
Le développement rapide des techniques de séquençage, ainsi que des moyens de calculs informatiques a révolutionné la génétique/génomique des populations ces 20 dernières années. Cependant, du fait de la difficulté à obtenir des données génomiques individuelles et géo-référencées pour de gros échantillons et de la lourdeur des modèles spatialement explicites, l’aspect spatial a souvent été délaissé. On assiste aujourd’hui à deux changements majeurs : les génomes individuels atteignent un prix raisonnable, les méthodes d’estimations basées sur la simulation de type ABC (Approximate Bayesian Computations) ont gagné un facteur 10 à 100 en terme d’efficacité grâce à l’utilisation des algorithmes de forêts aléatoires (Pudlo et al. 2015). De ce fait, il est maintenant envisageable de faire de l’estimation de paramètres démographiques (dispersion, densité et tailles de populations) et historiques (dater des changements démographiques) à partir de données génomiques sous des modèles démo-génétiques spatialisés de plus en plus réalistes. Améliorer ces techniques d’inférences et les modèles sous-jacents permettra de répondre à des questions essentielles pour mieux comprendre la répartition et l’évolution de la diversité génétique des populations dans le temps et l’espace. Notre but est d’implémenter un nouveau simulateur de données génomiques basé sur des algorithmes de coalescences pouvant considérer des modèles spatialisés, afin de l’utiliser pour faire de l’inférence démo-génétique. Les techniques modernes d’inférence, par ABC entre autres, nécessitant des algorithmes efficaces, autant en terme de vitesse d’exécution des calculs que de l’espace mémoire nécessaire, le choix des méthodes de stockage et d’indexation des arbres de coalescence et des génomes simulés est donc crucial pour permettre de simuler de gros jeux de données très rapidement (Kelleher et al. 2016). Ce projet vise le développement d’un logiciel autonome, open source, collaboratif (Git) et si possible en intégration continue. Il est organisé de façon à s’orienter vers une programmation dite ” moderne ” en C++, utilisant de manière extensive les nouveautés du standard (C++11/14/17), de manière à produire un code lisible, concis, optimisé et immédiatement réutilisable