Résumé de section

  • Reposant sur l'utilisation de logiciels, au sein de divers environnements, cette étape va permettre de "faire parler les données". Ce passage de la donnée brute à l'information est une des étapes clés de la Bio-Informatique. Étant pratiquée in silico, elle doit être menée avec rigueur afin de pouvoir être reproductible.

    • Les infrastructures de calcul

      Faisant suite à des étapes de pré-traitement (processing) des données, la phase d'analyse est cruciale pour transformer les données brutes, en extraire l'information et en obtenir un savoir scientifique.

      Cette phase repose sur l'utilisation de ressources de calcul. En fonction du volume de données, on aura besoin de ressources plus ou moins importantes, allant de la station de travail jusqu'à une infrastructure de calcul. Il existe différentes modalités d'utilisation des infrastructures de calcul : portail, cluster et cloud.

      Portail

      Un portail est une interface web conviviale qui permet aux utilisateurs d'accéder à des ressources de calcul à distance. Les utilisateurs peuvent soumettre des tâches de calcul et gérer leurs travaux via une interface graphique. Ce type d'infrastructure est souvent utilisé pour des tâches de calcul de petite à moyenne taille et convient aux utilisateurs qui n'ont pas besoin d'une gestion détaillée de l'infrastructure sous-jacente. En fait, le portail soumet les travaux à un cluster.

      Cluster

      Un cluster est un ensemble de serveurs interconnectés qui travaillent ensemble pour effectuer des tâches de calcul. Les clusters sont utilisés pour le calcul intensif et peuvent gérer des charges de travail plus importantes que les portails. Ils sont composés de nœuds de calcul qui exécutent des tâches en parallèle. Les clusters peuvent être configurés localement dans un laboratoire ou utilisés à distance via des connexions réseau.

      Cloud computing

      Le cloud computing offre des ressources de calcul à la demande via Internet. Les infrastructures de cloud computing permettent aux utilisateurs d'accéder à des ressources de calcul virtuelles, telles que des machines virtuelles, des conteneurs ou des services gérés. Cela permet une flexibilité et une évolutivité accrues, car les utilisateurs peuvent augmenter ou réduire les ressources en fonction de leurs besoins.

    • Suivant ses compétences techniques, on pourra choisir l'un ou l'autre des types d'infrastructures, un portail de calcul comme Galaxy (que nous allons voir juste après) étant le plus facile d'utilisation puisqu'il offre, au travers de son interface graphique, un moyen simple pour lancer diverses analyses et réaliser des workflows.

      L'utilisation des ressources de calcul comme un cluster exige un certain apprentissage qui peut être chronophage. Cet aspect est encore plus marqué pour l'utilisation des ressources d'un cloud puisque l'utilisateur ou l'utilisatrice est chargé·e de l'installation complète de ses environnements de calcul.

    • Galaxy : une plateforme simple pour l'analyse des données génomiques

      Galaxy est une plateforme web populaire utilisée en Bio-Informatique pour l'analyse des données génomiques. Il fournit une interface conviviale et graphique pour exécuter des analyses Bio-Informatiques sans avoir besoin de connaissances approfondies en programmation.

      Le portail Galaxy permet aux utilisateurs de sélectionner et d'enchaîner des outils Bio-Informatiques prédéfinis pour effectuer des analyses complexes. Il offre également des fonctionnalités pour la gestion des données, la visualisation des résultats et le partage des workflows analytiques. Les utilisateurs peuvent importer leurs propres données, exécuter des analyses en utilisant les outils disponibles dans Galaxy, et visualiser et interpréter les résultats générés.

      Galaxy offre un portail web public accessible. Vous pouvez accéder à ce portail via votre navigateur web sans avoir à installer ou à configurer Galaxy vous-même. Cela permet une utilisation facile et rapide de Galaxy sans nécessiter de connaissances techniques approfondies.

    • Exemple pratique : aligner des séquences avec Clustal

      Clustal (utilisé dans ses versions Omega et W dans les exemples) est un outil populaire en Bio-Informatique utilisé pour l'alignement multiple de séquences génomiques et protéiques. Il est largement utilisé pour analyser et comparer des séquences biologiques afin d'identifier les similarités, les motifs conservés et les relations évolutives entre les séquences.

      Disponible sous forme de logiciel open source, Clustal peut être téléchargé sur son site officiel pour une exécution en local ou être utilisé en ligne via des serveurs web. On le retrouve notamment sur le portail Galaxy.

      Nous vous proposons d'illustrer les différentes modalités d'utilisation avec un exemple simple : l'alignement  des séquences des protéines Spike du coronavirus à l'aide du programme Clustal en passant par le terminal d'un ordinateur (en ligne de commande) et en passant par le portail Galaxy.

      L'utilisation de Clustal en local demande d'utiliser le terminal de l'ordinateur. La vidéo ci-dessous vous montre comment aligner les séquences des protéines Spike du coronavirus à l'aide du programme Clustal en passant par les lignes de commande.



      L'utilisation de Clustal en ligne, via des portails comme Galaxy, est une solution plus simple si vous n'êtes pas familier avec l'exécution de tâches en ligne de commande. Pour vous le montrer, nous vous proposons de le tester par vous-même. Pour cela :

      1. Téléchargez le fichier "spike_sequences.fasta"
      2. Rendez-vous sur le portail public de Galaxy
      3. Reproduisez la procédure indiquée dans le petit tutoriel ci-dessous. Notez que dans ce tutoriel, on utilise le portail Galaxy de la plateforme GenOuest, mais la procédure reste identique.



      Galaxy Training

      La communauté de Galaxy propose des cours en ligne pour s'initier à l'outil. Rendez-vous sur Galaxy Training pour une formation complète !


    • Développement et partage d'outils logiciels : bonnes pratiques

      Pour analyser les données, il est nécessaire de recourir à des logiciels ou des scripts. Ces outils peuvent être réutilisés directement en les obtenant auprès de leurs auteurs ou des dépôts logiciels mais ils peuvent également être développés. Dans ce dernier cas, vous devrez les traiter en tant que produit de recherche et les mettre à disposition de la communauté soit dans un dépôt logiciel ou bien dans HAL ou Software Heritage.

      Le développement logiciel doit respecter des bonnes pratiques avec notamment l’utilisation d'outils de suivi de version (Git).  

      Lors de sa mise à disposition, un outil logiciel doit être accompagné de :

      • Un fichier Readme qui doit présenter l’outil, son installation et son utilisation.
      • La liste des auteurs.
      • La licence (cf. associer une licence aux données).


      Readme file (lisez-moi !)

      Quelques exemples fictifs de sections que vous pourriez ajouter à votre fichier readme.

      // À propos Ajouter un bref descriptif de votre projet et à qui il s'adresse.
      // Auteurs Ajouter les auteurs du projet en donnant un lien vers leur page si possible. Exemple: @olivier-colin (https://www.irisa.fr/symbiose/olivier_collin.html)
      // Licence Ajouter une licence d'utilisation à votre projet. Exemple : CC BY
      // Utilisation Préciser dans quel contexte votre logiciel a un intérêt particulier.
      // Installation Expliquer comment installer votre logiciel.


      Outils utiles

      • Le site readme.so propose un éditeur en ligne pour générer facilement un fichier readme.
      • L’outil CodeMeta generator est très utile pour évaluer les informations nécessaires à associer en tant que métadonnées. 
      • L'outil Citation File Format génère des fichiers de texte brut contenant des informations de citation lisibles par l'homme et la machine pour les logiciels (et les ensembles de données). Les développeurs de code peuvent les inclure dans leurs référentiels pour indiquer aux autres comment citer correctement leur logiciel.

    • Le cycle de vie du logiciel

      Lors du développement d'un logiciel, il est indispensable de garder présent à l'esprit le fait que l'on s'engage dans un cycle. En effet, une fois l'outil en place et utilisé, on se retrouvera confronté à la maintenance de cet outil, surtout dans un contexte de diffusion ou de valorisation des développements.

      Le cycle de vie d'un logiciel en Bio-Informatique comprend plusieurs étapes clés : 

      • Le développement, où le code est écrit après avoir spécifié les caractéristiques du logiciel ; 
      • Les tests, avec des tests unitaires automatisés pour garantir la fiabilité ; 
      • Le déploiement, adapté à l'environnement cible, souvent dans une infrastructure de calcul ; 
      • La maintenance pour corriger les bugs et développer de nouvelles fonctionnalités ; 
      • Le partage, réalisé via des forges logicielles comme Git, avec une documentation détaillée pour faciliter l'installation et l'utilisation par d'autres chercheurs.

      Une bonne documentation tout au long du cycle est cruciale pour la reproductibilité.



    • Le défi de la reproductibilité des résultats en Bio-Informatique

      Un des principaux défi en Bio-Informatique concerne la reproductibilité, notamment celle des traitements appliqués aux jeux de données in silico.

      Sous le simple terme de reproductibilité, souvent utilisé de manière différente suivant les contextes, se cachent beaucoup de concepts. 

      La seule reproductibilité au sens strict (mêmes données, même code) permet d'identifier les différentes contraintes. En effet, se posera la question des versions des logiciels ou des données de référence, la question du système d'exploitation, la question des bibliothèques utilisées, la question du paramétrage des outils, etc. 

      Par exemple, si quelqu'un évoque le fait d'avoir utilisé Clustal omega comme logiciel d'alignement, de nombreuses questions surgissent si l'on veut reproduire son résultat. De quelle version de Clustal omega s'agit-il ? Sur quel système d'exploitation le programme a-t-il été utilisé ? Quel a été son paramétrage ? Sur quelles données ? Autant de questions auxquelles il est plus simple de répondre en adoptant certaines bonnes pratiques. 


      Contrôler son environnement

      Il faut donc s'intéresser aux méthodes qui permettront de mieux contrôler son environnement informatique ainsi que son environnement de données. D'un point de vue technique, il s'agit d'un problème complexe pour le néophyte. Pour mieux l'aborder, il est intéressant de considérer les différentes couches rencontrées. On utilise ou on développe des applications qui vont travailler sur des données, qu'elles soient propres au projet ou bien qu'elles aient été téléchargées. Les applications tournent au sein d'un environnement informatique et sont lancées par des environnements de workflows ou bien par des gestionnaires de tâches.

    • Mieux contrôler ses données

      Vue sous l'angle de l'analyse, la gestion des données pour un projet s'intéresse aux données de référence mais également aux données du projet.

      Gestion des données de référence

      Ces données sont susceptibles de varier au fil du temps. Dans le cas de l'utilisation de banques de données, on s'attachera à toujours documenter les numéros des versions. Les plates-formes de Bio-Informatique proposent des méthodes automatisées de mise à jour de ces banques, par exemple avec l'outil BioMAJ.

      Gestion des données du projet

      Tout commence par l'adoption d'un plan de nommage et de désignation des fichiers. Afin de se faciliter la vie, il est souhaitable d'adopter quelques règles de base pour nommer ses fichiers. Ces règles permettent d'obéir à trois grands principes :

      • Les noms des fichiers doivent être lisibles par les machines ;
      • Les noms des fichiers doivent être compréhensibles par les humains ;
      • Les noms des fichiers doivent permettre le tri et la sélection des fichiers.

      Les dates dans les noms des fichiers doivent respecter le format de la norme ISO8601 (YYYY-MM-DD).

      Ensuite il faut rationaliser l'organisation des fichiers au sein de l'arborescence des fichiers avec des répertoires homogènes. Par exemple, pour un projet de bioanalyse, on peut envisager l'arborescence suivante :

      ↳ _README
      ↳ docs
      ↳ raw_data
        ↳ Homo_sapiens
        ↳ Rattus_rattus
        ↳ _README
      ↳ results
      ↳ scripts
      ↳ tools
      ↳ work
        ↳ 2023-03-01_Assembly
      

      Suivant la nature des projets des variations sont possibles. En effet, en fonction du nombre de personnes, le recours à des outils collaboratifs comme Git, va modifier profondément l'arborescence de travail qui pourra se réduire à un tryptique : données brutes / travaux / résultats.


    • Mieux contrôler ses outils logiciels

      Pour exercer un meilleur contrôle sur les diverses versions d'outils utilisés pour vos analyses, il est possible d'utiliser un gestionnaire de package comme Conda et son extension dédiée à la Bio-Informatique Bioconda.

      Logo de Bioconda

      Conda permet d'installer des logiciels pré-compilés disponibles sous forme de paquets. Ces paquets sont déposés dans des canaux ("channels") thématiques.

      Le canal Bioconda recense plus de 7000 paquets pour les communautés des Sciences de la Vie.

      Conda permet également de créer des environnements au sein desquels on peut installer des outils spécifiques. Le fait que ces outils soient installés au sein d'un environnement permet d'éviter qu'il n'y ait des interférences avec l'environnement du système. Ces environnements peuvent être activés ou désactivés à la demande.

      Il existe également Mamba, un gestionnaire offrant plus de rapidité que Conda.

      Logo Mamba

      D'autres solutions comme Guix et Nix (et son pendant "bio", BioNix), existent aussi.

      Logo Bionix
    • Exemple : utilisation du gestionnaire de paquets Conda pour installer le logiciel Clustal Omega en ligne de commande
      1. Recherche de la disponibilité de Clustal Omega (nommé clustalo en abrégé) dans les dépôts Bioconda (channel)
      --On tape cette requête en ligne de commande pour chercher Clustal Omega--
      $ conda search clustalo
      
      --Réponse--
      Loading channels: done
      # Name                       Version           Build  Channel
      clustalo                       1.2.3               0  bioconda
      clustalo                       1.2.4               0  bioconda
      clustalo                       1.2.4               1  bioconda
      clustalo                       1.2.4      h4a8c4bd_3  bioconda
      clustalo                       1.2.4      h589c0e0_4  bioconda
      clustalo                       1.2.4      h7133b54_7  bioconda
      clustalo                       1.2.4      h9722bc1_5  bioconda
      clustalo                       1.2.4      hb19a6fa_6  bioconda
      clustalo                       1.2.4      hfc679d8_2  bioconda
      $   
              
      2. Installation du logiciel via conda
      --On utilise la commande "install"--
      conda install clustalo
      
      --Réponse--
      Retrieving notices: ...working... done
      Collecting package metadata (current_repodata.json): done
      Solving environment: done
      
      --Conda précise quels paquets de Clustal Omega vont être installés
      ou mis à jour et indique la localisation sur l'ordinateur--
      ## Package Plan ##
        environment location: /Users/ocollin/miniconda3
        added / updated specs:
        - clustalo
      
      The following packages will be downloaded:
          package                    |            build
          ---------------------------|-----------------
          ca-certificates-2023.5.7   |       h8857fd0_0         145 KB  conda-forge
          certifi-2023.5.7           |     pyhd8ed1ab_0         149 KB  conda-forge
          clustalo-1.2.4             |       h7133b54_7         332 KB  bioconda
          ------------------------------------------------------------
                                                 Total:         626 KB
      
      The following packages will be UPDATED:
        ca-certificates                      2022.12.7-h033912b_0 --> 2023.5.7-h8857fd0_0 
        certifi                            2022.12.7-pyhd8ed1ab_0 --> 2023.5.7-pyhd8ed1ab_0 
        clustalo                                 1.2.4-h9722bc1_5 --> 1.2.4-h7133b54_7 
        
        --Si on est d'accord pour l'installation / les mises à jours, on tape "y" pour confirmer--
        Proceed ([y]/n)? y
        
        --Téléchargement et extraction des paquets--
      Downloading and Extracting Packages
      
      Preparing transaction: done
      Verifying transaction: done
      Executing transaction: done
      
      --On vérifie la bonne installation avec la commande "which"--
       (base) ocollin ~  $ which clustalo
       /Users/ocollin/miniconda3/bin/clustalo 
      
      --L'outil Clustal Omega qui a été installé dans le répertoire miniconda--
              
      3. Création d'un environnement d'exécution Conda

      Il est possible d'utiiser le programme Clustal Omega que l'on a installé directement mais il est possible, pour éviter toute interférence avec son environnement de travail habituel, de créer un environnement Conda spécifique que l'on pourra activer ou désactiver à volonté.
      Dans l'exemple ci-dessous, on va créer un environment dédié à l'analyse phylogénétique avec deux outils, Clustal Omega et la suite Phylip.

      ocollin ~  $ conda create -p ~/analyse_phylo clustalo phylip
      Collecting package metadata (current_repodata.json): done
      Solving environment: done
      
      ## Package Plan ##
      environment location: /Users/ocollin/analyse_phylo
      added / updated specs:
      - clustalo
      - phylip
      
      The following packages will be downloaded:
      
                      package                    |            build
                      ---------------------------|-----------------
                      libcxx-16.0.4              |       hd57cbcb_0         1.1 MB  conda-forge
                      openjdk-17.0.3             |       h7d26f99_7       157.7 MB  conda-forge
                      ------------------------------------------------------------
                                                             Total:       158.8 MB
                                                             
      The following NEW packages will be INSTALLED:
      
                    argtable2          conda-forge/osx-64::argtable2-2.13-h1de35cc_1001
                    bzip2              conda-forge/osx-64::bzip2-1.0.8-h0d85af4_4
                    ca-certificates    conda-forge/osx-64::ca-certificates-2023.5.7-h8857fd0_0
                    clustalo           bioconda/osx-64::clustalo-1.2.4-h7133b54_7
                    libcxx             conda-forge/osx-64::libcxx-16.0.4-hd57cbcb_0
                    libexpat           conda-forge/osx-64::libexpat-2.5.0-hf0c8a7f_1
                    libffi             conda-forge/osx-64::libffi-3.4.2-h0d85af4_5
                    libsqlite          conda-forge/osx-64::libsqlite-3.42.0-h58db7d2_0
                    libzlib            conda-forge/osx-64::libzlib-1.2.13-hfd90126_4
                    ncurses            conda-forge/osx-64::ncurses-6.3-h96cf925_1
                    openjdk            conda-forge/osx-64::openjdk-17.0.3-h7d26f99_7
                    openssl            conda-forge/osx-64::openssl-3.1.0-h8a1eda9_3
                    phylip             bioconda/osx-64::phylip-3.697-h1de35cc_1
                    pip                conda-forge/noarch::pip-23.1.2-pyhd8ed1ab_0
                    python             conda-forge/osx-64::python-3.11.3-h99528f9_0_cpython
                    readline           conda-forge/osx-64::readline-8.2-h9e318b2_1
                    setuptools         conda-forge/noarch::setuptools-67.7.2-pyhd8ed1ab_0
                    tk                 conda-forge/osx-64::tk-8.6.12-h5dbffcc_0 
                    tzdata             conda-forge/noarch::tzdata-2023c-h71feb2d_0
                    wheel              conda-forge/noarch::wheel-0.40.0-pyhd8ed1ab_0
                    xz                 conda-forge/osx-64::xz-5.2.6-h775f41a_0
                    
                  Proceed ([y]/n)? y
                  
                  Downloading and Extracting Packages
                  Preparing transaction: done
                  Verifying transaction: done
                  Executing transaction: done
                  #
                  # To activate this environment, use
                  #
                  #     $ conda activate /Users/ocollin/analyse_phylo
                  #
                  # To deactivate an active environment, use
                  #
                  #     $ conda deactivate
                  
                  ocollin ~  $ 
                  
    • Mieux contrôler ses workflows

      Une des caractéristiques de l'analyse des données en Bio-Informatique est le fait qu'il est nécessaire de combiner une multitude d'outils qui représentent alors un workflow. Pour reproduire un traitement il s'agira d'être capable de conserver le paramétrage de chaque outil tout en conservant l'ordonnancement des différents outils utilisés. 

      Il existe de nombreux systèmes de gestion de workflows. Les plus populaires en Bio-Informatique sont :
      Logo NextFlow

      Nextflow permet l'adaptation de pipelines écrits dans les langages de script les plus courants.

      Logo SnakeMake

      Snakemake permet de décrire les workflows sous forme de règles.

      Logo Galaxy

      Galaxy, un environnement graphique pour l'analyse de données qui propose des fonctionnalités de workflows.

      Chaque environnement de workflow va proposer un dépôt pour permettre aux utilisateurs et utilisatrices de partager leurs workflows. Dans le cas de Nextflow, il s'agit de nf-core. Pour Snakemake, un catalogue existe également, tandis que Galaxy utilise le dépôt de l'Interagalactic Workflow Commission  pour partager les workflows

      À noter que se mettent en place de nouvelles ressources comme WorkflowHub pour partager les workflows scientifiques.

    • Mieux contrôler ses environnements de calcul

      Une fois que l'on contrôle ses données, ses logiciels et ses workflows, il reste une dernière étape pour atteindre une bonne reproductibilité en s'affranchissant des contraintes imposées par le système d'exploitation. En effet, suivant la version du système d'exploitation, suivant les diverses installations de logiciels, certaines bibliothèques logicielles utilisées par les programmes peuvent différer et influer sur les résultats des analyses.

      Il est donc nécessaire d'isoler ses environnements pour mieux les contrôler. Ceci est réalisable grâce aux techniques de virtualisation.

      La virtualisation

      Elle permet de faire fonctionner, sur une seule machine, un ou plusieurs systèmes d’exploitation en tant que logiciel. Les machines virtuelles (ou VM pour Virtual Machine) fonctionnent ainsi en créant un système d'exploitation complet et indépendant à l'intérieur d'un ordinateur physique. Cela signifie qu'une machine virtuelle est un environnement complet et autonome, avec son propre système d'exploitation, ses propres fichiers de configuration et ses propres ressources matérielles.

      Les intérêts de la virtualisation sont multiples :

      • Il devient possible de pouvoir exploiter les machines de manière optimale en rentabilisant au maximum leurs capacités.
      • Le déploiement de nouvelles machines est facilité car il n'y a plus d'installation physique. Cela permet de mettre en place rapidement des environnements de tests ou de formation qui sont isolés.
      • Il est possible de déployer les machines à la demande, en quelques minutes, pour mettre en place une infrastructure complète.
    • Ordinateur
      Schéma du fonctionnement d'un ordinateur : matériel, système d'exploitation, applications

      Architecture classique d'un ordinateur. On remarque le rôle central du système d'exploitation (ici macOS) qui sert d'interface etnre les logiciels et le matériel. Il fournit une interface utilisateur, s'occupe du système de fichiers et gère les périphériques.

      Machine virtuelle avec hyperviseur
      Schéma du fonctionnement d'une machine virtuelle avec hyperviseur

      Un hyperviseur est un logiciel qui permet de créer et de gérer des machines virtuelles en isolant les ressources matérielles, en abstrayant le matériel physique et en fournissant des fonctionnalités de gestion et de sécurité pour les VM.

      Machine virtuelle avec conteneur
      Schéma du fonctionnement d'un ordinateur avec conteneur

      Apparue dans les années 2010, la conteneurisation est une virtualisation au niveau du système d'exploitation. Contrairement aux VM avec hyperviseur, les conteneurs sont plus légers et sont souvent privilégiés pour la portabilité et l'efficacité des ressources.

      Les environnements de containeurisation sont variés : Docker (outil de conteneurisation polyvalent), Singularity / Apptainer (conçu spécifiquement pour les environnements de calcul scientifique et haute performance)...

    • Exemple d'utilisation avec Docker

      Dans cet exemple, on va procéder à l'alignement d'un groupe de séquences de glycoprotéines du virus SARS-COV2. Le déroulé est le suivant : on demande à Docker de charger l'image  du programme Clustal Omega auquel on communique le fichier des séquences. Après le téléchargement de l'image par Docker, Clustal se lance et stocke les résultats dans un fichier après exécution. 

    • Les notebooks

      Les notebooks sont des documents mélangeant du texte enrichi avec des balises Markdown, des éléments de code exécutable ainsi que les résultats de l'exécution de ces éléments de code, le plus souvent des graphiques.

      L'utilisation des notebooks se développe de manière importante pour apporter de la lisibilité et de la reproductibilité.

      L'utilisation des notebooks permet de combiner code et représentation pour faciliter la lecture du code et en assurer ainsi une meilleure communication.

      Parmi les outils, on peut citer :

      • Jupyter notebooks ;
      • Rmarkdown / Quarto ;
      • Org-Mode.

      Pour vous former, vous pouvez consulter cette introduction aux notebooks Jupyter sous Galaxy.

      Capture d'écran de l'introduction à Jupyter notebook, montrant quelques modalités de la formation (objectifs, durée, date...)

      Delphine Lariviere, Use Jupyter notebooks in Galaxy (Galaxy Training Materials) https://training.galaxyproject.org/training-material/topics/galaxy-interface/tutorials/galaxy-intro-jupyter/tutorial.html Online; accessed Thu Jun 08 2023