Brice Saint-Michel (bsaintmichel on gmail), Université Gustave Eiffel
Ici, nous allons dresser un aperçu rapide de ce que Python peut vous apporter si vous êtes physicien.ne ou physico-chimiste. Aucune connaissance n'est requise a priori : on part de zéro, même si, bien entendu, vous irez plus vite si vous connaissez déjà des langages de programmation (notamment : MATLAB). L'apprentissage s'effectue directement en manipulant vous-mêmes du code Python interactif, afin de mettre un minimum de distance entre la théorie et la mise en pratique.
Si vous voulez en savoir plus sur Binder et Jupyter Notebooks, l'environnement de développement avec lequel vous travaillez, jetez un oeil à la FAQ.
Cliquez sur l'icône ci-dessous pour accéder aux tutoriels, même sans avoir rien installé sur votre PC !
Les tutoriels sont divisés en des tutoriels (de 1 à 6) que je conseille d'étudier dans l'ordre, puis ensuite d' applications (de A à ..) qui sont assez largement indépendants les uns des autres et qui peuvent être effectués dans le désordre.
- Premiers pas, variables, booléens va partir de zéro et vous offrir la possibilité de :
- créer des variables simples (entiers, flottants, chaînes de caractères)
- effectuer des opérations de base (additions, multiplications)
- afficher vos résultats de manière simple
- convertir ces variables dans un autre format quand cela est nécessaire.
- comparer des résultats et effectuer des opérations sur les variables booléennes
- Listes, Tuples, Dictionnaires vous fera découvrir les conteneurs en Python :
- on verra comment créer et indicer, faire des tranches de listes, tuples, dictionnaires et comprendre
- on s'intéressera ensuite à la manipulation efficace de ces objets en utilisant leurs méthodes associées.
- on examinera enfin la notion de mutabilité d'objets en Python.
- Boucles, conditions, vous libérera des tâches répétitives en les incluant dans une, ou plusieurs boucles !
- on commencera par la boucle
for
, qui introduira également les objetsrange
etenumerate
- on verra ensuite le bloc d'instructions conditionnel
if ... else
- on se penchera sur le cas des boucles
while
- et on verra rapidement le rôle de l'instruction
break
- Bibliothèques, imports, aide va vous indiquer comment ne pas réinventer la roue en utilisant des bibliothèques de fonctions que d'autres ont déjà développées.
- on commencera par la syntaxe pour appeler des modules déjà existants et utiliser leurs fonctions
- on continuera ensuite en définissant nos propres fonctions
- et on terminera rapidement en créant notre propre module
- Fichiers et dossiers va vous montrer comment gérer et trouver des fichiers et des dossiers en Python. Dans l'ordre :
- on verra comment ouvrir un fichier et le fermer, et comment lire et écrire à l'intérieur de ceux-ci.
- on verra rapidement comment enregistrer des variables compliquées au format
JSON
- on s'intéressera ensuite au module
os
qui permet de changer de répertoire de travail et d'en créer - on verra enfin le module
glob
qui permet d'effectuer une recherche de fichiers et de dossiers.
- Quelques astuces supplémentaires va vous simplifier la vie en Python et vous permettre de travailler depuis votre PC en hors-ligne (ou presque):
- On cmmencera par les affectations multiples pour économiser des lignes de code.
- On apprendra à formater joliment les nombres quand on les convertit en chaînes de caractère.
- On découvrira les listes en compréhension pour rendre son code plus élégant.
- On évoquera la fonction
zip()
qui permet de boucler sur plusieurs éléments. - On verra enfin comment installer Python sur votre PC avec Anaconda ou Python & VSCode.
A. Numpy va vous dévoiler la puissance du module Numpy pour vos applications numériques.
- on commencera par introduire un nouveau type de données, les tableaux
np.ndarray
. - on verra ensuite les constantes et fonctions mathématiques présentes sur Numpy.
- on évoquera quelques fonctions inclassables et utiles pour les scientifiques .
- on parlera des fonctions d'algèbre et de régression linéaire avec le sous-module
linalg
. - on continuera avec le sous-module
random
permettant de générer des nombres aléatoires. - on poursuivra avec le sous-module
fft
permettant de faire des transformées de Fourier discrètes.
B. Matplotlib vous permettra de tracer vos graphes préférés, voire de les animer.
- je commencerai avec quelques généralités sur la structure des figures en Matplotlib.
- on verra ensuite, pour ceux qui sont pressés, comment tracer une figure vite fait mal fait.
- on continuera avec les méthodes permettant de modifier et de personnaliser vos figures.
- on s'intéressera ensuite à quelques tracés bien particuliers : images, aires entre courbes, histogrammes, nuages de points complexes, et surfaces 3d.
- j'indiquerai comment exporter ses figures proprement au format
.png
,.pdf
, mais également.tex
. - on examinera enfin comment faire des tracés animés et interactifs.
C. Scipy commence là où s'arrête Numpy
, et est très puissant pour le traitement de signal et la résolution numérique de problèmes
- on parlera corrélations, convolutions, filtres et recherche de maxima locaux dans le sous-module
signal
. - on verra ensuite les fonctions qui interpolent un signal dans le sous-module
interpolate
. - on minimisera/maximisera une fonction, on trouvera ses zéros et on fittera des courbes avec
optimize
. - on étudiera ensuite comment résoudre une équation différentielle avec le sous-module
integrate
. - on traitera enfin quelques options sympathiques, comme par exemple ouvrir un fichier .mat de MATLAB, ou faire une intégration avec la méthode des trapèzes !
D. Pandas vous permettra d'apprivoiser les DataFrame
, une nouvelle classe qui s'apparente aux tableaux Excel
- on verra comment créer ces
DataFrame
ex nihilo ou à partir de fichiers texte (.csv
ou.xlsx
). - on accèdera aux données des
DataFrame
via leurs lignes, colonnes ou selon des conditions. - on examinera enfin comment modifier ces
DataFrame
en ajoutant/supprimant une colonne/ligne - on jettera un oeil aux opérations de groupe, notamment aux méthodes
.groupby()
et.agg()
- on regardera enfin comment fusionner deux
DataFrame
, que ce soit par un.merge()
, un.join()
et un.concat()
E. Scikit-Image vous montrera comment manipuler, traiter et extraire le plus possible de données de vos images, via trois exemples:
- le premier exemple consiste à détecter des bulles et va introduire le seuil d'Ōtsu, les méthodes d'étiquetage (
label()
etregionprops_table()
) et la dilatation morphologique d'une image binaire. - le deuxième exemple va tenter de détecter des particules et va utiliser pour cela du contraste adaptatif (CLAHE), des cartes de distance et une routine de watershed avant d'étiqueter l'image.
- le troisième exemple traitera enfin de détection d'images en utilisant un filtre de Canny ainsi qu'une transformée de Hough circulaire.
F. Trackpy et OpenPIV vous dira enfin comment calculer des champs de vitesse à partir de séquences d'images et comment détecter puis suivre des particules individuelles dans les images.
- on verra en premier comment détecter des particules sur une image (encore !) sous
trackpy
avec l'algorithme de Crocker et Grier. - on regardera ensuite le dépouillement d'images multiples avec
trackpy.batch
et le suivi de particules avectrackpy.link()
. - on s'intéressera enfin aux calculs de champs de vitesse par PIV avec
openPIV
. - je terminerai avec un exemple plus compliqué combinant les deux approches ce qui permet de suivre des particules qui bougent collectivement sur des assez grandes distances.