le calcul scientiÞque en python - projet-plume.org · - premier livre épuisé au ... - des...
Post on 11-Sep-2018
218 Views
Preview:
TRANSCRIPT
NumPy et al.Le calcul Scientifique
en PYTHON
Konrad HINSEN
Centre de Biophysique Moléculaire (Orléans)et
Synchrotron Soleil (St Aubin)
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.
Pourquoi Python ?
▹ Travail interactif
□ Développement rapide□ Développement incrémentiel□ Test, débogage□ Analyse interactif de données
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
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
□ 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
□ 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
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
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)
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
Scénariosd’usage
Langage de script
Langage de script
▹ Lire/écrire des fichiers ➥ perl, awk, grep, vi, emacs, ...
Langage de script
▹ Lire/écrire des fichiers ➥ perl, awk, grep, vi, emacs, ...
▹ Analyse de données, visualisation ➥ Matlab/Scilab/Octave, IDL, R
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
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, ...
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é
Calcul exploratoire
▹ Analyse de données
▹ Visualisation
➥ Scripts simples et travail interactif
Outils pratiques:
→ IPython→ Emacs + Python mode→ matplotlib→ VPython→ Module pickle
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
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
Langage principal
ModulePython
ModulePython
ModulePyrex
ModulePython
Optimisation
ModuleC
Programme principal
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 !
bibiliothèquesscientifiquesgénéralistes
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.
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.
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
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.
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:
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:
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
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
top related