Python & SHS

Quelle place pour la programmation scientifique ?

Émilien Schultz & Matthias Bussonnier

Une double articulation

Émilien

  • D’abord en physique
  • Puis en sociologie
    • sciences sociales computationnelles

Matthias

  • (Bio)physique expérimentale
  • Migration progressives vers développeur
    • open source
    • open science

Objectif : nourrir la discussion de nos expériences sur Python … mais qui dépassent un langage particulier.

Répondre à 3 questions



  • Pourquoi programmer ?
  • Pourquoi Python ?
  • Comment s’y mettre ?

Programmer ?

Numérisation de la recherche

La “programmation scientifique”

Programmer en recherche \(\neq\) développer un logiciel

« in contrast to software engineering, there is no externally specified goal or design target. Instead, the user explores and discovers their goal as they gain understanding from iteratively executing the code and thinking about the results and their data. » (Granger et Perez, 2021)

R, Python et les autres …

Font partie des instruments de la recherche

Schindler D, Bensmann F, Dietze S, et al. (2022) The role of software in science: a knowledge graph-based analysis of software mentions in PubMed Central. PeerJ Computer Science 8: 1–47. DOI: 10.7717/PEERJ-CS.835.

Pourquoi programmer en recherche ?

  • Différentes raisons d’utilisation :
    • adapter
    • formaliser
    • instrumenter
  • Favorise :
    • travail collaboratif
    • transfert de pratiques
    • reproductibilité

Vers la reproductibilité

10.5281/zenodo.4421040

Juliette Taka, & Nicolas M. Thiéry. (2018). Publishing reproducible logbooks explainer comic strip. Zenodo. https://doi.org/10.5281/zenodo.4421040

Particularité des SHS ?


  • Des communautés très computationnelles
    • Humanités numériques
    • Géographie
  • D’autres beaucoup moins
  • Des données très diverses

Python ?

https://xkcd.com/353/

Un peu d’histoire

  • Langage “glue” développé par Guido von Rossum en 1988
  • Langage de haut niveau
    • Interprété ; Ouvert ; Pédagogique ; Versatil
    • Qui évolue : actuellement 3.121
  • Le plus utilisé en traitement des données

Scientific Python


Quand l’Open Source rencontre l’Open Science

« The reason why I wanted to do it in Python is because I was using a proprietary tool for my work, but I wanted to do my scientific work with open tools. I think of science’s mission as opening the black box of nature. It’s a bit nonsensical to do that with tools that we are not allowed to open and understand, including proprietary software » (Fernando Perez, As Project Jupyter celebrates 20 years… 2021)

Des outils pour les chercheurs

Inspiré du schéma de Jake Van Der Plas, JSM 2016.

Un outil “normal” de la science

Une frontière d’échanges

Entre recherche et open source

  • Petite histoire de IPython
    • Des outils dédiés à l’interactivité de la recherche
    • À la base des notebooks Jupyter
  • Vue par un de ses acteurs (M.B.)
    • Des outils par et pour les chercheurs

Python dopé à la data science

Entre les mondes scientifiques et de l’ingénierie des données.

Python, Julia, R ?

  • Des langages qui ont évolués
    • Par exemple les f-string
  • et qui évoluent :
    • Par exemple les normes de gradual typing
  • Abstraction progressive
    • Cas du projet Jupyter
  • Pas de “meilleur langage dans l’absolu”

Python pour les SHS ?

Pas un unique usage


  • De la culture numérique des possibles
  • … à sa mise en oeuvre

Importance d’avoir une idée de ce qu’il est possible de faire


“Certains disent « Il faut coder », d’autres rétorquent « Il faut décoder »” (Cardon, 2019)

Usages “orientés mimétisme”

import scripttoutfait
scripttoutfait.run()

Usages “orientés scripts”

  • Manipuler des données
    • Découper un fichier trop volumineux
  • Transformer des données
    • pour Iramuteq ou pour l’analyse de réseaux (mise en forme de corpus)
  • Automatiser des tâches
    • Conversion pdf > textes
  • Script dans logiciel QGIS ou dans OpenRefine

Usages “orientés statistiques”

  • Construire un graphique
    • Juxtaposition de plusieurs éléments temporels
  • Faire des statistiques
    • Notebook permettant l’exploration statistique des données d’une enquête en ligne
  • Exploration de textes
    • Bibliothèques de TAL pour analyse thématique
  • Parallélisation des calculs sur des serveurs

Usages “orientés automatisation”

  • Systématiser des collectes API
    • OCR Gallica, forums, …
  • Surveillance d’événements
    • modifications d’un site
  • Workflow exécutable
    • Ensemble des étapes collecte/analyse/résultats
  • Déployer un site web en Python

Usages “orientés IA”

  • Manipuler les modèles
    • Possibilités ouvertes par HuggingFace & co
  • Entraîner des modèles
    • Détection d’entitées nommées à façon
  • Fine tuner des LLM

Usages “orientés instrumentation”

  • Généraliser son code en fonction réxécutable
  • Publier une bibliothèque
  • Déployer un service en ligne

Usages “orientés logiciel”

  • Développer une bibliothèque dédiée générique (Ipysigma)
  • Développer un module pour un logiciel (QGIS?)

S’y mettre ?

Tous programmeurs ?


  • Non
    • Et pas nécessairement en Python
  • Mais une culture numérique devient indispensable
  • Et cela facilite les échanges

Identifier des usages possibles

  • Usages discrets : automatiser, une analyse parmi d’autres
  • À mettre en balance temps/résultats
  • Solliciter les collègues compétents (support recherche)
  • Chercher les rétroactions positives
    • Partager avec les autres
    • Boucle vertueuse de l’open source

Les ressources


Contribuer “upstream”


Souvent plus simple qu’on imagine :

  • Poser des questions
  • Tester les futures versions de bibliothèque.
  • Modifier le code avec peer review
  • Interactions avec des spécialiste du domaine

Pour ouvrir…

Un langage parmi d’autres


Python comme un avatar de la programmation scientifique


  • Mieux comprendre les complémentarités entre langages
  • Développer un vocabulaire commun pour en/se parler

Le futur : LLM & code


  • Génération facilité de code
  • Passage du NL au code accéléré
  • MAIS
    • en pratique surtout modifier du code
    • et il faut être capable de le comprendre