Cette année à PyCon 2017, deux keynotes ont été données par des membres de la communauté scientifique Python : Dr Jake VanderPlas a expliqué pourquoi les scientifiques ont adopté Python et devraient continuer à le faire ; Dr Kathryn Huff a montré comment la communauté Python peut aider les communautés scientifiques et pourquoi elle doit s’y engager. Ensemble, ces deux interventions offrent une vision cohérente de la complémentarité entre la recherche scientifique et la programmation Python, des raisons pour lesquelles de nombreux chercheurs gagneraient à adopter Python, ainsi que des moyens concrets pour la communauté Python de contribuer efficacement à la recherche.

L’efficacité inattendue de Python en calcul scientifique
Jake VanderPlas est astronome à l’eScience Institute de l’Université de Washington, à Seattle. Il est également actif au sein de la grande communauté scientifique Python, avec des contributions à SciPy, scikit-learn et altair, entre autres bibliothèques.
On imagine souvent les astronomes au pied d’immenses télescopes, l’œil rivé à l’oculaire. Jake nous a pourtant assuré que la plupart d’entre eux n’ont jamais regardé dans un télescope dans le cadre de leur travail. Ils passent surtout leur temps à collecter des données via des requêtes de bases de données. Et encore, les bases de données ne sont que la partie émergée de l’iceberg des compétences informatiques des astronomes, imposées par la nature de leurs tâches. Jake a donné plusieurs exemples parlants. Prenez la visualisation suivante du système exoplanétaire TRAPPIST-1 :

On pourrait croire à une image photoréaliste, mais il s’agit en réalité d’une interprétation artistique : ce n’est pas la donnée brute. L’existence de la planète a été déduite grâce à l’observation d’une étoile occultée et à la modélisation statistique de ce type de système, à partir des données suivantes et des suivantes (image et données d’Ethan Kruse) :

Comment ces inférences et analyses statistiques ont-elles été réalisées ? En Python, évidemment. À l’aide d’une « modélisation statistique incroyablement fine du système ». Et, d’après Jake, découvrir ce type de systèmes « revient à écrire du code statistique au sein d’une chaîne d’analyse de données sophistiquée ».
Ce n’est qu’un des nombreux projets scientifiques (en astronomie) que Jake a présentés, où Python joue un rôle clé dans le traitement et l’analyse des données. À noter : ces projets ne sont pas seulement écrits dans un langage open source, ils publient aussi leur code sur GitHub. Par exemple Kepler et JWST — ce dernier cherche à détecter des gaz dans l’atmosphère d’exoplanètes pour en déduire leur composition chimique, à la recherche de signatures de vie. Ces projets utilisent Python, sont hébergés sur GitHub et s’appuient sur des notebooks Jupyter, entre autres outils.
Est-ce anecdotique — quelques projets en Python qui feraient figure d’exception ? Pas en astronomie. Jake a montré une analyse prouvant que les publications utilisant Python augmentent régulièrement :

Admirez ce hockey stick Python ! Nous savons donc que les scientifiques utilisent de plus en plus Python, mais pourquoi l’utilisent-ils ?
4 arguments pour utiliser Python en calcul scientifique
Jake a posé la question : « Pourquoi Python est-il un outil si efficace en science ? »
1. Interopérabilité avec d’autres langages
Python comme colle : historiquement, de nombreux scientifiques ont dû composer avec des chaînes de traitement complexes, voire ubuesques, pour passer de l’expérience et/ou des données à des résultats communicables : requêtes de bases de données, ligne de commande, logiciels spécialisés ou propriétaires, puis outils de visualisation. Jake VanderPlas a cité Dave Beazley, qui résume bien la situation :
« Les scientifiques travaillent avec une grande variété de systèmes, des codes de simulation aux logiciels d’analyse de données, bases de données, outils de visualisation et logiciels maison — chacun ayant ses interfaces et formats de fichiers. En conséquence, un scientifique peut passer un temps considérable à simplement essayer de faire fonctionner ensemble tous ces composants… »
Or Python s’interface avec l’essentiel des outils utiles en recherche scientifique : il lie, il sert de colle. Comme le dit Jake, Python « assemble le bric-à-brac d’outils utilisés ; sa syntaxe de haut niveau encapsule les bibliothèques C/Fortran de bas niveau ».
2. « Piles incluses » + modules tiers
Autre raison de l’attrait de Python pour les chercheurs (et pour laquelle ceux qui ne l’utilisent pas encore « devraient » s’y mettre) :
- il propose de nombreuses fonctionnalités « prêtes à l’emploi » et
- pour le reste, l’écosystème Scientific Python (
SciPy) offre une profusion de modules tiers.
Avec les « piles incluses », vous pouvez effectuer du scraping web, lancer des serveurs web, manipuler systèmes de fichiers et bases de données, lire des JSON, et bien plus encore.
Et les modules « tiers » sont là où tout devient vraiment passionnant. Parmi les exemples (liste non exhaustive) :
- NumPy pour le calcul sur tableaux ;
- IPython et Jupyter pour un environnement interactif, ainsi que pour rédiger des documents scientifiques et partager/collaborer sur les résultats ;
- Numba et Dask pour la montée en charge et le calcul distribué ;
- Pandas pour les DataFrames ;
- Matplotlib et Bokeh (par exemple) pour la visualisation de données (tout un écosystème de bibliothèques dataviz existe en Python) ;
- Scikit-learn pour l’apprentissage automatique ;
- NetworkX pour créer, manipuler et étudier des réseaux complexes ;
- Scikit-image pour le traitement d’images ;
- PyMC pour les méthodes de Monte-Carlo par chaînes de Markov ;
- Et la liste continue.
Comme le dit Jake, « si vous avez un problème à résoudre, vous trouverez très probablement une bibliothèque pour vous aider — et elle est sans doute sur GitHub ! »

3. Simplicité et nature dynamique
Python est relativement simple à écrire, surtout comparé à des langages comme C. Comme l’explique Jake : « En Python, notamment quand on vient de C par exemple, on écrit ce que l’on veut voir se produire — et ça se produit ; c’est un peu comme écrire du pseudo-code exécutable ».
Il cite aussi Perry Greenfield : « Python est un langage très puissant pour les développeurs, mais aussi accessible aux astronomes. Faire travailler ces deux publics avec les mêmes outils apporte un bénéfice immense, souvent sous-estimé. »
Grâce à des outils comme IPython et les notebooks Jupyter, il est possible de coder de façon dynamique et d’explorer les données de manière itérative, en temps réel. Résultat : une barrière d’entrée basse, car le code scientifique est lui-même non linéaire et exploratoire. Certains jugent ces outils lents ; mais pour la recherche, c’est la vitesse de développement qui prime, pas la vitesse d’exécution — d’où leur adéquation.
4. Un esprit d’ouverture parfaitement adapté à la science
Le logiciel open source porte un esprit d’ouverture en phase avec l’exigence de transparence de la recherche scientifique (voire, parfois, plus que la recherche elle-même). Nous y reviendrons avec la keynote de Katy Huff, mais la science ne se résume pas aux articles publiés : elle réside dans le résultat, les protocoles, et la capacité à reproduire ce résultat — exactement ce que promeut le développement open source. Jake a cité Buckheit et Donoho (1995, paraphrasant Jon Claerbout) :
« Un article sur un résultat computationnel n’est que de la publicité, pas de la science. La véritable contribution scientifique, c’est l’environnement logiciel complet — code et données — ayant produit le résultat. » — Buckheit et Donoho, 1995
L’open source et l’esprit de l’écosystème Python (scientifique et au-delà) offrent un cadre susceptible de nous aider à sortir de la crise de reproductibilité en science : « résoudre la reproductibilité passe par la science ouverte ». La culture collaborative, la relecture par les pairs et la publication sur GitHub qui caractérisent la recherche scientifique en Python sont essentielles à cette ouverture. Si je veux comprendre comment les ondes gravitationnelles (prédites par Einstein) ont été détectées en 2016, il me suffit d’aller voir le dépôt LIGO ici. Ou, si vous faites partie du nombre croissant d’astronomes utilisant Astropy, vous trouverez le code et la communauté qui le porte ici. Cette ouverture découle directement d’une communauté qui a adopté les principes de l’open source et de la science ouverte présents dans la communauté Python au sens large. Voici, dans le tableau, ce que Jake (d’après Perry Greenfield) estime que la communauté d’astronomie a appris de la communauté Python :

Faites-le pour la science
« Je suis là pour mettre votre talent au service de mes objectifs », a lancé Dr Kathryn Huff à la communauté PyCon, avant d’exposer avec conviction comment et pourquoi la communauté Python peut aider la science à changer le monde. Sa keynote a expliqué en détail pourquoi le développement open source en général, et Python en particulier, s’est révélé si efficace pour le calcul scientifique et la recherche dans son ensemble. Elle est allée plus loin en recensant de multiples terrains où la communauté Python au sens large peut mettre ses compétences au service de la communauté scientifique — et du bien commun. Si vous pensez que l’eau, la santé ou l’énergie sont des enjeux majeurs pour l’humanité, Kathryn a présenté des projets et des dépôts GitHub avec des tickets ouverts prêts à accueillir vos contributions. Elle a donné des dizaines d’exemples de projets et de packages ouverts auxquels vous pouvez contribuer.
Kathryn (Katy) est ingénieure nucléaire, contributrice de longue date à la communauté SciPy, impliquée dans le Journal of Open Source Software, et consacre beaucoup de temps à The Hacker Within ainsi qu’aux Software et Data Carpentries, qui aident les scientifiques à mieux utiliser l’informatique pour faire des découvertes, améliorer la reproductibilité et faciliter leur travail au quotidien.
La mission de Katy est d’améliorer la manière de produire l’énergie nucléaire ; et son outil de prédilection ? Python ! Avant d’énumérer les nombreuses façons dont la communauté Python peut aider la recherche, elle explique pourquoi c’est indispensable. Elle cite R. K. Merton (1945) décrivant la science comme exigeant un examen rigoureux, structuré et communautaire (une excellente définition de ce que doit être le scepticisme organisé) — autant de qualités indéniables de la communauté open source Python.

Katy a rappelé l’importance de ces principes en listant les fondamentaux de la science et en montrant que l’open source les respecte mieux que toute autre communauté depuis l’époque pythagoricienne (VIe siècle av. J.-C.). Ces fondamentaux sont :
- la relecture par les pairs
- le scepticisme
- la transparence
- l’attribution
- la responsabilité
- la collaboration
- l’impact
Les ordinateurs « devraient » aider les scientifiques à faire ceci :

Quel est alors l’obstacle pour amener plus de scientifiques vers l’open source, notamment Python, afin que l’informatique les aide réellement ?
- Les scientifiques ne sont pas formés à utiliser efficacement l’outil informatique ;
D’où l’appel de Katy à la communauté Python :
« J’aimerais vous impliquer. »
Ce plaidoyer est une autre raison d’adopter Python en recherche : l’existence d’une vaste communauté open source prête à aider. Parallèlement, Katy s’investit dans la formation des scientifiques à l’usage de l’informatique. Plusieurs initiatives existent. Nous invitons tous les chercheurs à découvrir Software Carpentry et Data Carpentry pour voir comment elles peuvent accompagner votre groupe, département ou université (réponse : si vous faites du calcul, c’est très probable).
Comment Dr Katy Huff propose-t-elle d’aider ? En quatre étapes simples :
- Soyez curieux ;
- Choisissez un projet ;
- Contribuez à la science ;
- Sauvez le monde.
Pourquoi Python pour la recherche ?
- L’écosystème Python réunit un ensemble mûr — et en constante évolution — d’outils de calcul pour les scientifiques.
- De plus en plus de chercheurs se tournent vers Python pour sa
- interopérabilité avec d’autres langages ;
- philosophie « piles incluses » et ses modules tiers pour presque tout ce que vous souhaitez faire ;
- simplicité et nature dynamique ;
- culture ouverte, parfaitement adaptée à la science.
- La communauté Scientific Python grandit, les bibliothèques évoluent en permanence, et la communauté est ouverte ;
- La communauté open source respecte les fondamentaux de la recherche scientifique mieux que toute autre :
- relecture par les pairs
- scepticisme
- transparence
- attribution
- responsabilité
- collaboration
- impact
- Au-delà, une large communauté de développeurs Python, non scientifiques, souhaite contribuer à l’impact de Python sur la science, le monde et les causes qui leur tiennent à cœur. Pour reprendre — en l’adaptant légèrement — les mots de Perry Greenfield :
« Python est un langage très puissant pour les développeurs, mais aussi accessible aux [scientifiques]. Faire travailler ces deux publics avec les mêmes outils apporte un bénéfice immense, souvent passé sous silence. »
Si vous avez des idées, réactions ou réflexions, n’hésitez pas à me contacter sur Twitter : @hugobowne.