Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des...
Transcript of Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des...
![Page 1: Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des entreprises spécialisées. Quelques applications Astronomie ASTROLIB et ... moindres](https://reader036.fdocument.pub/reader036/viewer/2022070613/5b97168909d3f25a5a8c54e2/html5/thumbnails/1.jpg)
NumPy et al.Le calcul Scientifique
en PYTHON
Konrad HINSEN
Centre de Biophysique Moléculaire (Orléans)et
Synchrotron Soleil (St Aubin)
![Page 2: Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des entreprises spécialisées. Quelques applications Astronomie ASTROLIB et ... moindres](https://reader036.fdocument.pub/reader036/viewer/2022070613/5b97168909d3f25a5a8c54e2/html5/thumbnails/2.jpg)
Python et le logiciel libre
Python est un logiciel libre.
NumPy est un logiciel libre.
La quasi-totalité des bibliothèques scientifiques en Python sont des logiciels libres.
La transition du propriétaire au libre est l’occasion de faire le point sur ses besoins et ses priorités, ce qui fait que beaucoup de scientifiques migrent de Matlab vers l’univers Python.
![Page 3: Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des entreprises spécialisées. Quelques applications Astronomie ASTROLIB et ... moindres](https://reader036.fdocument.pub/reader036/viewer/2022070613/5b97168909d3f25a5a8c54e2/html5/thumbnails/3.jpg)
Pourquoi Python ?
▹ Travail interactif
□ Développement rapide□ Développement incrémentiel□ Test, débogage□ Analyse interactif de données
![Page 4: Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des entreprises spécialisées. Quelques applications Astronomie ASTROLIB et ... moindres](https://reader036.fdocument.pub/reader036/viewer/2022070613/5b97168909d3f25a5a8c54e2/html5/thumbnails/4.jpg)
Pourquoi Python ?
▹ Travail interactif
▹ Simplicité du langage
□ Syntaxe claire et nette□ Gestion automatique de la mémoire□ Tout est dynamique, il n’y a rien à déclarer
![Page 5: Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des entreprises spécialisées. Quelques applications Astronomie ASTROLIB et ... moindres](https://reader036.fdocument.pub/reader036/viewer/2022070613/5b97168909d3f25a5a8c54e2/html5/thumbnails/5.jpg)
Pourquoi Python ?
▹ Travail interactif
▹ Simplicité du langage
▹ Orientation objet
□ Structuration du programme en unités qui représentent un aspect du problème à résoudre□ Facilite les modifications et les extensions
![Page 6: Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des entreprises spécialisées. Quelques applications Astronomie ASTROLIB et ... moindres](https://reader036.fdocument.pub/reader036/viewer/2022070613/5b97168909d3f25a5a8c54e2/html5/thumbnails/6.jpg)
□ Facile à interfacer avec le C/C++ et le Fortran□ Facile à interfacer avec d’autres programmes□ Excellente portabilité
Pourquoi Python ?
▹ Travail interactif
▹ Simplicité du langage
▹ Orientation objet
▹ Ouverture au monde
![Page 7: Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des entreprises spécialisées. Quelques applications Astronomie ASTROLIB et ... moindres](https://reader036.fdocument.pub/reader036/viewer/2022070613/5b97168909d3f25a5a8c54e2/html5/thumbnails/7.jpg)
□ Calcul scientifique□ Lecture/écriture de données□ Internet□ Interfaces graphiques□ ...
Pourquoi Python ?
▹ Travail interactif
▹ Simplicité du langage
▹ Orientation objet
▹ Ouverture au monde
▹ Disponibilité de bibliothèques
![Page 8: Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des entreprises spécialisées. Quelques applications Astronomie ASTROLIB et ... moindres](https://reader036.fdocument.pub/reader036/viewer/2022070613/5b97168909d3f25a5a8c54e2/html5/thumbnails/8.jpg)
Une brève historique
1991: Python est publié1994: premières applications scientifiques1996: Numerical Python (devient NumPy en 2006) . . .2010: - un grand choix de bibliothèques - deux colloques annuels: SciPy, EuroSciPy - premier livre épuisé au bout de deux mois - enseigné à plusieurs universités - des entreprises spécialisées
![Page 9: Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des entreprises spécialisées. Quelques applications Astronomie ASTROLIB et ... moindres](https://reader036.fdocument.pub/reader036/viewer/2022070613/5b97168909d3f25a5a8c54e2/html5/thumbnails/9.jpg)
Quelques applications
AstronomieASTROLIBet PyFITS
(Space TelescopeScience Institute)
Bioinformatique
BioPython(Collaboration internationale)
Systèmes dynamiquesSimPy
(Collaborationinternationale)
MathématiquesSAGE
(University ofWashington)
StatistiqueModular toolkit for
Data Processing(Humboldt-Universität)
Neurologie
Vision Egg(Collaborationinternationale)
Eléments finis
FiPy(NIST)
Géographie
Thuban(Intevation
GmbH)
Visualisation
MayaVi(Prabhu
Ramachandran)
![Page 10: Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des entreprises spécialisées. Quelques applications Astronomie ASTROLIB et ... moindres](https://reader036.fdocument.pub/reader036/viewer/2022070613/5b97168909d3f25a5a8c54e2/html5/thumbnails/10.jpg)
Python ou langage matriciel?
Python: ● langage généraliste avec des bibliothèques pour le calcul scientifique + champ d’application plus vaste - notation plus compliquée pour les matrices
Matlab, Scilab, IDL, R, ...: ● langages optimisés pour le traitement des matrices + syntaxe optimisé pour les matrices - moins adaptés aux tâches non-matriciels
![Page 11: Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des entreprises spécialisées. Quelques applications Astronomie ASTROLIB et ... moindres](https://reader036.fdocument.pub/reader036/viewer/2022070613/5b97168909d3f25a5a8c54e2/html5/thumbnails/11.jpg)
Scénariosd’usage
![Page 12: Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des entreprises spécialisées. Quelques applications Astronomie ASTROLIB et ... moindres](https://reader036.fdocument.pub/reader036/viewer/2022070613/5b97168909d3f25a5a8c54e2/html5/thumbnails/12.jpg)
Langage de script
![Page 13: Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des entreprises spécialisées. Quelques applications Astronomie ASTROLIB et ... moindres](https://reader036.fdocument.pub/reader036/viewer/2022070613/5b97168909d3f25a5a8c54e2/html5/thumbnails/13.jpg)
Langage de script
▹ Lire/écrire des fichiers ➥ perl, awk, grep, vi, emacs, ...
![Page 14: Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des entreprises spécialisées. Quelques applications Astronomie ASTROLIB et ... moindres](https://reader036.fdocument.pub/reader036/viewer/2022070613/5b97168909d3f25a5a8c54e2/html5/thumbnails/14.jpg)
Langage de script
▹ Lire/écrire des fichiers ➥ perl, awk, grep, vi, emacs, ...
▹ Analyse de données, visualisation ➥ Matlab/Scilab/Octave, IDL, R
![Page 15: Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des entreprises spécialisées. Quelques applications Astronomie ASTROLIB et ... moindres](https://reader036.fdocument.pub/reader036/viewer/2022070613/5b97168909d3f25a5a8c54e2/html5/thumbnails/15.jpg)
Langage de script
▹ Lire/écrire des fichiers ➥ perl, awk, grep, vi, emacs, ...
▹ Analyse de données, visualisation ➥ Matlab/Scilab/Octave, IDL, R
▹ Gestion de tâches de calcul ➥ sh/bash, csh
![Page 16: Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des entreprises spécialisées. Quelques applications Astronomie ASTROLIB et ... moindres](https://reader036.fdocument.pub/reader036/viewer/2022070613/5b97168909d3f25a5a8c54e2/html5/thumbnails/16.jpg)
Langage de script
▹ Lire/écrire des fichiers ➥ perl, awk, grep, vi, emacs, ...
▹ Analyse de données, visualisation ➥ Matlab/Scilab/Octave, IDL, R
▹ Gestion de tâches de calcul ➥ sh/bash, csh
▹ Administration système ➥ sh/bash, csh, grep, awk, perl, ...
![Page 17: Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des entreprises spécialisées. Quelques applications Astronomie ASTROLIB et ... moindres](https://reader036.fdocument.pub/reader036/viewer/2022070613/5b97168909d3f25a5a8c54e2/html5/thumbnails/17.jpg)
Langage de script
▹ Lire/écrire des fichiers ➥ perl, awk, grep, vi, emacs, ...
▹ Analyse de données, visualisation ➥ Matlab/Scilab/Octave, IDL, R
▹ Gestion de tâches de calcul ➥ sh/bash, csh
▹ Administration système ➥ sh/bash, csh, grep, awk, perl, ...
Avantages de Python: ☺ vrai langage de programmation ☺ bibliothèques utiles de qualité
![Page 18: Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des entreprises spécialisées. Quelques applications Astronomie ASTROLIB et ... moindres](https://reader036.fdocument.pub/reader036/viewer/2022070613/5b97168909d3f25a5a8c54e2/html5/thumbnails/18.jpg)
Calcul exploratoire
▹ Analyse de données
▹ Visualisation
➥ Scripts simples et travail interactif
Outils pratiques:
→ IPython→ Emacs + Python mode→ matplotlib→ VPython→ Module pickle
![Page 19: Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des entreprises spécialisées. Quelques applications Astronomie ASTROLIB et ... moindres](https://reader036.fdocument.pub/reader036/viewer/2022070613/5b97168909d3f25a5a8c54e2/html5/thumbnails/19.jpg)
Langage d’intégration
Outils: swig, boost, f2py, PyFort, Pyrex/Cython
BibliothèqueFortran
BibliothèqueC
Routines de programmes
existants
Interface Python
Interface Python
Interface Python
Scripts Python
Programmescompilés
Interface Python
![Page 20: Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des entreprises spécialisées. Quelques applications Astronomie ASTROLIB et ... moindres](https://reader036.fdocument.pub/reader036/viewer/2022070613/5b97168909d3f25a5a8c54e2/html5/thumbnails/20.jpg)
Langage de script intégré
Module C
Fonction 1
Fonction 2
Fonction 3
Module C++
Classe 1
Classe 2
Classe 3Python
Interface 1
Interface 2
Interface 3
Interface graphique
![Page 21: Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des entreprises spécialisées. Quelques applications Astronomie ASTROLIB et ... moindres](https://reader036.fdocument.pub/reader036/viewer/2022070613/5b97168909d3f25a5a8c54e2/html5/thumbnails/21.jpg)
Langage principal
ModulePython
ModulePython
ModulePyrex
ModulePython
Optimisation
ModuleC
Programme principal
![Page 22: Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des entreprises spécialisées. Quelques applications Astronomie ASTROLIB et ... moindres](https://reader036.fdocument.pub/reader036/viewer/2022070613/5b97168909d3f25a5a8c54e2/html5/thumbnails/22.jpg)
Pensez Bibliothèques !
BibliothèquePython
Module 1
Module 2
Module 3
BibliothèquePython
Module 1
Module 2
Module 3
BibliothèquePython
Module 1
Module 2
Module 3
Programme principal
Une bibliothèque est plus utile que des routines cachées dans un programme !
![Page 23: Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des entreprises spécialisées. Quelques applications Astronomie ASTROLIB et ... moindres](https://reader036.fdocument.pub/reader036/viewer/2022070613/5b97168909d3f25a5a8c54e2/html5/thumbnails/23.jpg)
bibiliothèquesscientifiquesgénéralistes
![Page 24: Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des entreprises spécialisées. Quelques applications Astronomie ASTROLIB et ... moindres](https://reader036.fdocument.pub/reader036/viewer/2022070613/5b97168909d3f25a5a8c54e2/html5/thumbnails/24.jpg)
NumPy
▹ Tableaux multidimensionnels▹ Arithmétique et fonctions mathématiques sur les tableaux▹ Algèbre linéaire (LAPACK)▹ Transformée de Fourier (FFTPACK)▹ Nombres aléatoires
Fonctionnalité de base pour le calcul numérique:
➥ Implémentation efficace qui rend possible le calcul numérique en Python pur. Utilisé par la majorité des bibliothèques scientifiques.
![Page 25: Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des entreprises spécialisées. Quelques applications Astronomie ASTROLIB et ... moindres](https://reader036.fdocument.pub/reader036/viewer/2022070613/5b97168909d3f25a5a8c54e2/html5/thumbnails/25.jpg)
Tableaux
▹ multidimensionnels
▹ tous les élements du même type (entier, réel, ...)
▹ stockage compact des données, compatible C/Fortran
▹ opérations efficaces
▹ arithmétique
▹ indexation flexible
➥ Les tableaux NumPy servent autant pour écrire desalgorithmes matriciels que pour interfacer avec desbibliothèques en C/C++/Fortran.
![Page 26: Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des entreprises spécialisées. Quelques applications Astronomie ASTROLIB et ... moindres](https://reader036.fdocument.pub/reader036/viewer/2022070613/5b97168909d3f25a5a8c54e2/html5/thumbnails/26.jpg)
Un petit exemple
import numpy as Nfrom numpy.linalg import lstsq
def fitPolynome(ordre, x, y): m = x[:, N.newaxis] ** N.arange(ordre+1)[N.newaxis, :] a = lstsq(m, y)[0] polynome = N.dot(m, a) return a, polynome
coefficients, polynome_fitte = fitPolynome(10, x, h)
N.arange(n): [0, 1, 2, 3, ..., (n-1)]N.dot(a, b): produit matrice-matrice ou matrice-vecteurx[:, N.newaxis]: rajoute une dimension au tableau x
![Page 27: Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des entreprises spécialisées. Quelques applications Astronomie ASTROLIB et ... moindres](https://reader036.fdocument.pub/reader036/viewer/2022070613/5b97168909d3f25a5a8c54e2/html5/thumbnails/27.jpg)
matplotlib
▹ Plots 2D▹ Plots 3D avec l’extension mplot3d▹ autres (camembert, ...)▹ affichage à l’écran, EPS, PDF, ...▹ peut être intégré dans un interface graphique
Bibliothèque de traçage
Le module pylab de matplotlib facilitela transition pour les habitués de Matlab.
![Page 28: Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des entreprises spécialisées. Quelques applications Astronomie ASTROLIB et ... moindres](https://reader036.fdocument.pub/reader036/viewer/2022070613/5b97168909d3f25a5a8c54e2/html5/thumbnails/28.jpg)
ScientificPython
▹ Géométrie vecteurs, tenseurs, transformations linéaires
▹ Fonctions interpolation, dérivés automatiques, polynômes, fonctions rationnelles
▹ Statistique moments d’une distribution, histogramme
▹ Fits moindres carrés linéaire et non-linéaire
▹ Unités conversion, arithmétique
▹ Visualisation VRML, VPython, VMD
▹ Parallélisme calcul distribué, BSP, interface MPI
▹ Entrées-Sorties formatage compatible Fortran, tableaux, netCDF, PDB
Modules Python d’intérêt général:
![Page 29: Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des entreprises spécialisées. Quelques applications Astronomie ASTROLIB et ... moindres](https://reader036.fdocument.pub/reader036/viewer/2022070613/5b97168909d3f25a5a8c54e2/html5/thumbnails/29.jpg)
SciPy
▹ Statistique
▹ Optimisation
▹ Intégration numérique
▹ Algèbre linéaire
▹ Transformés de Fourier
▹ Traitement du signal
▹ Traitement d’images
▹ Algorithmes génétiques
▹ Équations différentielles partielles
▹ Fonctions spéciales
Interfaces à des nombreuses bibliothèques scientifiques:
![Page 30: Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des entreprises spécialisées. Quelques applications Astronomie ASTROLIB et ... moindres](https://reader036.fdocument.pub/reader036/viewer/2022070613/5b97168909d3f25a5a8c54e2/html5/thumbnails/30.jpg)
SymPyBibliothèque pour le calcul symbolique en Python
▹ Transformations algébriques
▹ Analyse: limite, dérivation, intégration, séries
▹ Equations différentielles et algébrique
▹ Algèbre linéaire
![Page 31: Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des entreprises spécialisées. Quelques applications Astronomie ASTROLIB et ... moindres](https://reader036.fdocument.pub/reader036/viewer/2022070613/5b97168909d3f25a5a8c54e2/html5/thumbnails/31.jpg)
Pour continuer...
Hans-Petter LangtangenPython Scripting for Computational ScienceSpringer, 2005/2006
Computing in Science and EngineeringSpecial Issue “Python: Batteries included”May/June 2007
Matthieu BrucherPython, Les fondamentaux du langage, La programmation pour les scientifiquesEditions ENI, 2008