
Atelier “Python pour l’analyse des données haute pression”
14e Forum de technologie des hautes pressions
Nouvelles frontières en haute pression : de l’instrumentation à l’analyse de données
3-7 juin 2024 - Argelès-sur-Mer
Cet atelier propose une initiation à l’analyse de données en utilisant le langage de programmation Python, adapté au contexte des expériences haute pression. L’objectif est de montrer un aperçu des vastes possibilités et de fournir des informations utiles à la fois pour les débutants et les utilisateurs confirmés, sans se focaliser sur la syntaxe du langage. Python bénéficie d’une grande popularité et est très utilisé dans la gestion et l’analyse de données, ainsi que pour le pilotage des expériences sur grands instruments (ESRF, Soleil…). Il figure désormais parmi les langages les plus enseignés aux étudiants en sciences.
Ressources
Autres ressources utiles
Bases
- Un très bon notebook pour apprendre les bases de python de manière interactive
- Les bases de python : boucles for/while, tests if else, fonctions et opérateurs, types natifs, listes, tuples et dictionnaires etc. : sur courspython.com
- Manipulation de tableaux numpy : doc. de numpy
- Indexation des tableaux numpy : dans la documentation de numpy, voir aussi : le slicing en python
- La librairie pandas, utilisation du type DataFrame : documentation de pandas
- Indexation des DataFrame de pandas : dans la documentation de pandas
- Les compréhension de listes
- Types mutables, non-mutables
- Gestion des exceptions, try…except : sur docs.python.org
- Quelques bases de programmation orientée objet : sur courspython.com
- Documentation officielle de Python sur docs.python.org.
- Documentation officielle de la distribution Conda, utilisée par Anaconda/Miniconda : sur docs.conda.io
- Documentation officielle de l’éditeur/IDE Spyder : sur docs.spyder-ide.org
Quelques programmes et bibliothèques orientés haute-pression basés sur Python
- Dioptas, programme graphique très complet (écrit en python + Qt) pour l’analyse des données de diffraction des rayons X sous haute pression
- Amorpheus, un programme python pour l’analyse des données de diffraction des rayons X sur les liquides et solides amorphes, voir la publication associée : Boccato et al. High Pressure Research 2022, vol. 42, No. 1, 69–93
- myPGM, un outil avec interface graphique écrit en python avec Qt pour le post-traitement (fit…) des mesures spectroscopiques de jauges de pression (rubis, samarium, Raman du nitrure de bore cubique, edge Raman du diamant, vibron H2)
- RubyCond, un outil graphique pour la mesure de pression avec la luminescence du rubis, avec pilotage en direct du spectromètre OceanOptics (écrit en python + tkinter)
- Smile, un outil pour la visualisation via caméra USB de microscope
- h5temperature, un outil graphique (écrit en python + Qt) pour l’analyse des mesures de température par pyrométrie optique de l’ESRF au format h5
- pymatgen est une bibliothèque python qui fournit de nombreuses possibilités pour l’analyse des matériaux (cristallographie, propriétés électroniques, diagrammes de phase…).
Tracé de graphiques
Interfaces graphiques
- Un outil avec interface graphique pour visualiser l’arborescence de fichiers h5 : ViTables
- Un autre outil avec de nombreuses fonctionnalités pour l’analyse des données : PyMca
- Accéder au contenu d’un fichier h5 avec la librairie h5py : documentation de h5py
Accélerer Python : optimisation des temps d’exécution
- Cython est une extension de Python qui permet d’appeler des fonctions C et de déclarer des types statiques C. Cython convertit le code en C/C++ puis le compile afin d’obtimiser les performances, informations et exemple simple sur Wikipedia.
- Numba permet de compiler du code python (en particulier employant numpy) afin de se rapprocher des performances du C ou du FORTRAN.
Générer des executables
- Le package PyInstaller permet de créer des executables à partir de codes python (utilisé notamment par Dioptas) : documentation
- La bibliothèque nuitka permet de compiler du code source python vers du code source C avec un certain nombre d’optimisations, et de générer un executable : documentation
- Alexis FORESTIER, alexis.forestier@cea.fr
- Antoine HILBERER, antoine.hilberer@cea.fr
- Yiuri GARINO, yiuri.garino@cnrs.fr
- Silvia BOCCATO, silvia.boccato@cnrs.fr