Le calcul ScientiÞque en PYTHON - projet-plume.org · - premier livre épuisé au ... - des...

31
NumPy et al. Le calcul Scientifique en PYTHON Konrad HINSEN Centre de Biophysique Moléculaire (Orléans) et Synchrotron Soleil (St Aubin)

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

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

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

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

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

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

□ 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

□ 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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