Le tour de passe-passe qui peut simplifier le calcul scientifique
Le logiciel de recherche est comme le jeu de construction de tours Jenga, des outils sur des outils sur des outils. Lorsque les développeurs modifient leurs éléments individuels, cela peut modifier la fonction du logiciel qui en dépend, altérant potentiellement les résultats ou provoquant l’échec du logiciel.
La version 3.6.0 du langage de programmation R, par exemple, a introduit un algorithme de remplacement pour générer des nombres aléatoires. Cet algorithme et l’ancien fonctionnent tous les deux, mais pas de la même manière. Si vous exécutiez le même code avec une ancienne version de R et une version plus récente de R et qu’il utilisait n’importe quelle fonction nécessaire pour générer un nombre aléatoire, vous finiriez par obtenir des résultats différents, explique Tiffany Timbers, spécialiste des données à l’université. de la Colombie-Britannique à Vancouver, Canada.
Entre autres choses, ce type de variabilité peut compliquer la collaboration (voir Essais environnementaux). En 2020, Mine etinkaya-Rundel travaillait avec un autre auteur sur un manuel de statistiques, utilisant R et un langage de formatage appelé R Markdown pour calculer des nombres, créer des chiffres et formater le document final. Nous voulions nous assurer que nous utilisions les mêmes versions, explique etinkaya-Rundel, statisticien à l’Université Duke de Durham, en Caroline du Nord, et aussi que lorsque nous rendions à nouveau le livre, nous le rendions avec une version donnée des packages. . Sinon, les deux auteurs auraient pu générer des manuscrits légèrement différents.
Pour relever ce défi, ils se sont tournés vers le package R renv, l’un d’un petit groupe d’outils qui aident les développeurs et les chercheurs à gérer leurs environnements de calcul ; les autres options incluent venv et virtualenv pour Python, et conda, un outil indépendant du langage. La plupart sont des utilitaires de ligne de commande, bien que renv soit étroitement intégré à l’environnement de programmation graphique RStudio Desktop. Tous peuvent aider les chercheurs à s’assurer que leur code est reproductible, réutilisable, documenté et partageable.
Tour de passe-passe
C. Titus Brown, bioinformaticien à l’Université de Californie à Davis, dispose de 187 environnements conda sur son ordinateur portable. La plupart sont ponctuelles, utilisées pour tester de nouveaux outils ou pour illustrer un point lors de cours magistraux. Son travail quotidien se déroule principalement dans un environnement de développement qui comprend une version spécifique de Python et d’autres outils de programmation.
Certaines tâches nécessitent cependant un changement de décor informatique. Par exemple, Brown écrit des articles de blog dans Markdown, qu’il traduit en HTML, le langage de balisage standard pour les pages Web. Mais le code qui exécute cette étape ne fonctionne pas bien avec les nouvelles versions d’une bibliothèque de logiciels cruciale, et les versions plus anciennes entrent en conflit avec ses outils de développement. Pour isoler le problème, Brown a créé un environnement séparé. Je viens de corriger la version sur quelque chose de très ancien qui fonctionne toujours, et je lance [the rendering software] là, dit-il.
NatureTech
Un environnement conda est un tour de passe-passe informatique, explique Johannes Kster, informaticien à l’Université de Duisburg-Essen en Allemagne, qui a fondé un référentiel de logiciels axé sur la bioinformatique appelé Bioconda. Fondamentalement, il ne fait que modifier le chemin de votre système à l’endroit où votre système recherche un exécutable [applications]. Plusieurs versions d’un outil peuvent être installées, mais lorsque conda active un environnement particulier, votre ordinateur ne peut voir que celui que vous voulez.
Les environnements informatiques offrent plusieurs avantages, dit Timbers. L’un est la reproductibilité, la capacité d’analyser les mêmes données avec le même logiciel sur la même infrastructure informatique pour obtenir les mêmes résultats.
Il peut être très frustrant de rechercher les différences entre les sorties de différents ordinateurs, explique Ben Marwick, archéologue à l’Université de Washington à Seattle. Certains projets de recherche prennent des années à compléter, note-t-il. Et bien que Marwick préfère les bibliothèques les plus récentes, ses collègues ne mettent pas toujours à niveau au même rythme. Renv s’assure que lui et ses collaborateurs exécutent toujours leurs codes de projet de la même manière. Le fichier de description d’environnement résultant peut être contrôlé en version et partagé sur GitHub. Les collaborateurs peuvent recréer l’environnement à l’aide de la commande renv ::restore()
Conda est un outil de ligne de commande qui crée des environnements et installe des logiciels dans ceux-ci. Pour créer un nouvel environnement appelé my_env épinglé à une version spécifique de Python, par exemple, utilisez conda créer –nom mon_env python=3.9
R et conda permettent aux utilisateurs d’installer leurs propres outils plutôt que d’avoir à demander aux administrateurs système de le faire pour eux. Vous n’avez pas besoin de privilèges root, déclare Rob Patro, biologiste informatique à l’Université du Maryland à College Park. Il s’agit d’une fonctionnalité utile lorsque vous travaillez sur des ressources informatiques partagées.
Les gestionnaires d’environnement facilitent également l’installation des logiciels. Les logiciels scientifiques sont souvent publiés sous forme de code source, qui peut nécessiter d’être compilé, configuré et installé à un emplacement spécifique. Il peut avoir un réseau de dépendances, écrites dans plusieurs langages de programmation, qui doivent être installées dans un ordre particulier. Parfois, explique le bioinformaticien Fredrik Boulund de l’Institut Karolinska de Stockholm, le processus peut dépasser les compétences des utilisateurs. Cela a complètement changé lorsque des solutions comme conda sont entrées en scène, dit-il. L’installation d’un ensemble complexe de dépendances revient simplement à demander à conda de créer un environnement conformément à un fichier de spécification d’environnement.
Coupez la tyrannie du copier-coller avec ces outils de codage
Pour le projet Galaxy, un cadre open source pour l’analyse de données reproductibles, ces fonctionnalités étaient une raison clé pour choisir conda comme gestionnaire d’installation de logiciels de projets. Le bioinformaticien Bjrn Grning, qui dirige le serveur européen Galaxy à l’Université de Fribourg en Allemagne, explique que la communauté Galaxy a commencé à rechercher une stratégie cohérente d’installation d’outils vers 2015, car son approche manuelle existante n’était pas durable. Conda a coché toutes nos cases d’exigence, dit Grning. Il n’a pas besoin de privilèges root ; il est indépendant du langage de programmation ; et il utilise des recettes d’emballage lisibles par l’homme, faciles à comprendre et à entretenir. Aujourd’hui, plus de 9 000 outils bioinformatiques sont disponibles pour les utilisateurs de Galaxy via le canal Bioconda.
Débuts précoces
Cependant, le plus grand avantage des environnements est peut-être l’isolation : les environnements permettent aux chercheurs d’explorer des outils nouveaux ou mis à jour tout en sachant que leur code fonctionnera toujours.
Elana Fertig, statisticienne à l’Université Johns Hopkins de Baltimore, Maryland, se décrit comme laxiste en matière d’environnement : Pour moi, tout se passe dans un seul environnement. Mais les grands environnements sont plus difficiles à utiliser, car le gestionnaire d’environnement doit résoudre un plus grand réseau de dépendances pour installer de nouveaux outils. (Conda est connue pour ses performances médiocres dans les grands environnements, mais un résolveur instantané appelé mamba accélère le processus.) Au lieu de cela, Fertig suggère à ses étudiants d’utiliser un environnement par projet.
En effet, la plupart des chercheurs contactés pour cet article recommandent de créer des environnements pour accueillir des flux de travail ou des projets spécifiques et de le faire dès le début. Commencez votre projet en pensant à une solution de gestion de packages, déclare Joshua Shapiro, scientifique principal des données au Childhood Cancer Data Lab pour Alexs Lemonade Stand Foundation, basé à Wynnewood, en Pennsylvanie. Il a le potentiel de sauver beaucoup de maux de tête sur toute la ligne.
Défi aux scientifiques : votre code vieux de dix ans fonctionne-t-il toujours ?
Tommy Tang, directeur de la biologie computationnelle chez Immunitas Therapeutics, une société de biotechnologie à Waltham, Massachusetts, utilise des environnements dédiés pour différentes tâches de calcul traitant des données de séquençage d’ARN ou travaillant dans Google Cloud, par exemple.
Les utilisateurs des gestionnaires de flux de travail informatiques Snakemake et Nextflow peuvent même diriger ces outils pour exécuter chaque étape dans un environnement conda distinct, explique Kster, qui dirige le développement de Snakemake. Faites-en un grain aussi fin et aussi unique que possible, conseille-t-il. En plus d’être plus faciles à entretenir, explique-t-il, les petits environnements sont également plus transparents. Les personnes qui veulent comprendre ce que l’analyse a réellement fait voient immédiatement quelle pile logicielle a été utilisée pour quelle étape.
Limites
Pourtant, les environnements ne peuvent pas tout faire. Les outils écrits dans des langages tels que C, Perl et Fortran peuvent être difficiles à encapsuler dans des environnements, et les différences de dépendance peuvent rendre les environnements difficiles à porter sur les systèmes d’exploitation. Dans ce cas, les utilisateurs peuvent essayer des conteneurs logiciels, tels que ceux de Docker et Singularity.
Les conteneurs, qui regroupent essentiellement un outil avec son système d’exploitation sous-jacent, sont plus grands et plus compliqués que les environnements, mais sont plus portables. Ils sont également plus faciles à partager, car bien qu’un environnement puisse contenir des milliers de fichiers, un conteneur n’en possède qu’un seul. Sur les systèmes hautes performances dans lesquels les tâches peuvent être exécutées en parallèle sur des centaines de cœurs de calcul, le transfert de nombreux petits fichiers peut affecter les performances.
Les environnements informatiques, dit Timbers, sont l’enfant oublié de la reproductibilité. Les revues demandent de plus en plus de code et de données parallèlement aux manuscrits, mais une reproductibilité totale nécessite de connaître l’environnement dans lequel elles ont été exécutées. C’est l’éléphant dans la pièce, dit-elle.