Projet de recherche · Bioinformatique · Data ingestion
RAIDGBS Research Project
Conception et implémentation d’un système capable de récupérer des données de séquences ADN depuis des bases de données biologiques publiques et de les stocker dans une base de données locale structurée.
Expérience associée
CBMN
Analyste-développeur Perl · 2010
Voir l’expérience correspondanteContexte
Ce projet a été réalisé dans le cadre de mon travail de fin d’études pendant mon bachelier en informatique.
Le travail s’est déroulé au CBMN, le Centre de Biophysique Moléculaire Numérique à Gembloux, et faisait partie du programme de recherche RAIDGBS.
RAIDGBS portait sur l’analyse de séquences génétiques de streptocoques du groupe B, une bactérie pouvant provoquer de graves infections chez les nouveau-nés lorsqu’elle est transmise par la mère pendant la grossesse ou l’accouchement.
L’objectif plus large du programme de recherche était de mieux comprendre la variabilité génétique de ces bactéries afin de contribuer au développement de tests diagnostiques plus rapides et plus abordables.
Mon travail portait sur la construction du système de traitement de données utilisé pour collecter et structurer les données de séquences biologiques utilisées dans cette recherche.
Objectif
Concevoir et implémenter un système capable de récupérer des données de séquences ADN depuis des bases de données biologiques publiques et de les stocker dans une base de données locale structurée.
Le système devait automatiser la récupération et le traitement de ces jeux de données afin que les chercheurs puissent facilement accéder aux informations collectées et travailler avec celles-ci.
Mon rôle
J’étais le développeur principal responsable de l’implémentation du système pendant mon stage de fin d’études.
Le projet a été réalisé sous la supervision du chercheur Sven Steinhauer, qui avait préalablement défini les objectifs de recherche, les sources de données et l’approche technologique.
Mon travail s’est concentré sur l’implémentation technique du système, incluant la conception de la base de données, les scripts de traitement des données et l’automatisation du workflow d’ingestion.
Responsabilités
- Implémentation du système d’ingestion de données
- Conception du schéma de base de données
- Développement de scripts Perl pour récupérer et traiter les jeux de données biologiques
- Génération de fichiers SQL utilisés pour alimenter la base de données
- Implémentation du script Bash orchestrant le workflow d’ingestion
- Test et validation du processus d’ingestion de données
- Documentation du système dans le cadre du mémoire académique
Défis techniques
- Apprendre Perl au début du projet afin de développer les scripts de traitement de données
- Récupérer et traiter des jeux de données biologiques issus de bases de données publiques
- Concevoir un schéma de base de données adapté au stockage d’informations de séquences ADN
- Automatiser le pipeline d’ingestion à l’aide de scripts Perl et Bash
- Gérer les problèmes de performance lors du traitement de jeux de données volumineux
- Optimiser les requêtes SQL afin de réduire significativement le temps d’exécution global du processus d’ingestion
Technologies utilisées
Langages
- Perl
- SQL
- Bash
Base de données
- MySQL
Sources de données
- Bases de données biologiques publiques
Environnement
- Linux
Outils
- NetBeans
- PhpMyAdmin
Implémentation technique
Le système implémentait un pipeline d’ingestion de données récupérant des jeux de données biologiques depuis des bases de données publiques.
Les scripts Perl étaient responsables de la récupération des jeux de données, de la transformation des données et de la génération de fichiers SQL contenant les requêtes d’insertion.
Un script Bash orchestrant l’ensemble du workflow prenait en charge la création du schéma de base de données, la création des tables, l’exécution des scripts SQL d’insertion et l’application des contraintes d’intégrité une fois les données insérées.
Cela permettait de recréer la base de données depuis zéro et garantissait que l’ensemble du processus d’ingestion pouvait être exécuté automatiquement.
Optimisation des performances
Lors du traitement de jeux de données plus volumineux, le temps d’exécution est devenu un problème pendant le processus d’ingestion.
Plusieurs améliorations ont été implémentées : réduction des requêtes SQL générées inutilement, utilisation de stratégies d’insertion par lots au lieu d’exécuter de nombreuses requêtes d’insertion individuelles, et report de la création des contraintes de clés étrangères après l’insertion massive des données.
Ces optimisations ont réduit significativement le temps d’exécution du pipeline d’ingestion, le faisant passer de plusieurs heures à seulement quelques minutes.
Ce fut l’une de mes premières expériences pratiques liées à la performance des bases de données et à l’optimisation de l’ingestion de données.
Résultats / impact
Le projet a abouti à un prototype fonctionnel capable d’importer des jeux de données expérimentaux dans une base de données structurée.
Le système a automatisé une grande partie du processus d’ingestion de données et a fourni une base pour de futures analyses de données de recherche.
Apprentissages clés
- Première expérience de conception d’un schéma de base de données depuis zéro
- Implémentation de scripts automatisés de traitement de données
- Collaboration avec des chercheurs dans un environnement scientifique
- Exposition à des concepts de data engineering avant d’entrer dans l’industrie du développement web