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



Documents pareils
ÉdIteur officiel et fournisseur de ServIceS professionnels du LogIcIeL open Source ScILab

Python - introduction à la programmation et calcul scientifique

Cours 7 : Utilisation de modules sous python

Mathcad Ces capacités font de Mathcad l outil de calcul technique le plus utilisé au monde.

Calcul Scientifique avec 3

Introduction à MATLAB R

Table des matières. I Mise à niveau 11. Préface

Introduction à NetCDF

Calculer avec Sage. Revision : 417 du 1 er juillet 2010

Éléments de programmation et introduction à Java

Évaluation et implémentation des langages

1. Développement embarqué. André KPOZEHOUE DOMAINES DE COMPETENCES CONNAISSANCES TECHNIQUES

Optimisation, traitement d image et éclipse de Soleil

pythonocc: une plateforme de développement agile d applications CAO.

Cours Informatique Master STEP

Correction de l examen de la première session

Optimisation de logiciels de modélisation sur centre de calcul

Optimisation et programmation mathématique. Professeur Michel de Mathelin. Cours intégré : 20 h

La Licence Mathématiques et Economie-MASS Université de Sciences Sociales de Toulouse 1

Des réels aux flottants : préservation automatique de preuves de stabilité de Lyapunov

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS

Présentation du langage et premières fonctions

L informatique en BCPST

UTILISATION DE LA PLATEFORME WEB D ANALYSE DE DONNÉES GALAXY

Rappels sur les suites - Algorithme

Programmation C. Apprendre à développer des programmes simples dans le langage C

Limitations of the Playstation 3 for High Performance Cluster Computing

I. Programmation I. 1 Ecrire un programme en Scilab traduisant l organigramme montré ci-après (on pourra utiliser les annexes):

Calcul Formel et Numérique, Partie I

Rapport de stage Master 2

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Section «Maturité fédérale» EXAMENS D'ADMISSION Session de février 2014 RÉCAPITULATIFS DES MATIÈRES EXAMINÉES. Formation visée

4.2 Unités d enseignement du M1

Fonctions de plusieurs variables

Entraînement au concours ACM-ICPC

Bases de programmation. Cours 5. Structurer les données

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Pourquoi R devient incontournable en recherche, enseignement et développement

NOTATIONS PRÉLIMINAIRES

Renforcement des trois compétences : compréhension orale, expression orale et expression écrite à partir de documents et vidéos.


Sujet 1 : Diagnostique du Syndrome de l apnée du sommeil par des techniques d analyse discriminante.

Programmation Web. Madalina Croitoru IUT Montpellier

Programmation parallèle et distribuée

de calibration Master 2: Calibration de modèles: présentation et simulation d

Programmes des classes préparatoires aux Grandes Ecoles

Les formations de remise à niveau(!) l'entrée des licences scientifiques. Patrick Frétigné CIIU

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

S7 Le top 10 des raisons d utiliser PHP pour moderniser votre existant IBM i

Catalogue des connaissances de base en mathématiques dispensées dans les gymnases, lycées et collèges romands.

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

La dernière base de données de Teradata franchit le cap du big data grâce à sa technologie avancée

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

Les équations différentielles

Représentation d un entier en base b

Projet Matlab : un logiciel de cryptage

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

I00 Éléments d architecture

Séance 0 : Linux + Octave : le compromis idéal

Maple: premiers calculs et premières applications

C f tracée ci- contre est la représentation graphique d une

Sujet proposé par Yves M. LEROY. Cet examen se compose d un exercice et de deux problèmes. Ces trois parties sont indépendantes.

Thomas Loubrieu (Ifremer) Small to Big Data Novembre 2013, Ifremer, Brest

1 Description générale de VISFIELD

Chapitre 1 Qu est-ce qu une expression régulière?

Dynamique des protéines, simulation moléculaire et physique statistique

données en connaissance et en actions?

Présentation des nouveaux services de l ENT Second degré Rentrée scolaire 2015 et fin du 1 er trimestre de l année scolaire

Note de cadrage du PEPI MACS Mathématiques Appliquées & Calcul Scientifique

Plan du cours Cours théoriques. 29 septembre 2014

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

TABLE DES MATIÈRES CHAPITRE I. Les quanta s invitent

PROJET DE MODELISATION CASERNE SERGEANT BLANDAN

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

STAGE IREM 0- Premiers pas en Python

La programmation linéaire : une introduction. Qu est-ce qu un programme linéaire? Terminologie. Écriture mathématique

PG208, Projet n 3 : Serveur HTTP évolué

Introduction. Mathématiques Quantiques Discrètes

SINE QUA NON. Découverte et Prise en main du logiciel Utilisation de bases

Mise en oeuvre d'une base de données mono-utilisateur avec SQLite

PROCESSUS ET INITIATIVES SERVICES ET SUPPORT SOLUTIONS MÉTIER PRODUITS LOGICIELS

Visual Paradigm Contraintes inter-associations

ALGORITHMIQUE ET PROGRAMMATION En C

Licence STS mention Mathématiques Parcours Ingénieur Télécom Bretagne (ITB)

Mise en place d'une chaîne de production raster multi-échelles

Première partie. Préliminaires : noyaux itérés. MPSI B 6 juin 2015

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Cours d initiation à la programmation en C++ Johann Cuenin

TD3: tableaux avancées, première classe et chaînes

Cours d Algorithmique et de Langage C v 3.0

Ce cours introduit l'électrodynamique classique. Les chapitres principaux sont :

Polynômes à plusieurs variables. Résultant

2 Grad Info Soir Langage C++ Juin Projet BANQUE

Résolution de systèmes linéaires par des méthodes directes

Utilisation du Cloud StratusLab dans le cadre d application astroparticule à l APC

Transcription:

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

Pourquoi Python? Travail interactif Simplicité du langage Orientation objet Ouverture au monde 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 Disponibilité de bibliothèques Calcul scientifique Lecture/écriture de données Internet Interfaces graphiques...

Une brève historique 1991: Python est publié 1994: premières applications scientifiques 1996: 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 Astronomie ASTROLIB et PyFITS (Space Telescope Science Institute) Eléments finis FiPy (NIST) Neurologie Visualisation Vision Egg (Collaboration internationale) MayaVi (Prabhu Ramachandran) Bioinformatique BioPython (Collaboration internationale) Statistique Modular toolkit for Data Processing (Humboldt- Universität) Systèmes dynamiques SimPy (Collaboration internationale) Géographie Thuban (Intevation GmbH) Mathématiques SAGE (University of Washington)

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énarios d 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 Scripts Python Interface Python Interface Python Interface Python Interface Python Bibliothèque Fortran Bibliothèque C Routines de programmes existants Programmes compilés Outils: swig, boost, f2py, PyFort, Pyrex/Cython

Langage de script intégré Interface graphique Module C++ Module C Fonction 1 Fonction 2 Fonction 3 Classe 1 Classe 2 Classe 3 Python Interface 1 Interface 2 Interface 3

Langage principal Programme principal Module Python Module Python Module Pyrex Module Python Optimisation Module C

Pensez Bibliothèques! Programme principal Bibliothèque Python Module 1 Module 2 Module 3 Bibliothèque Python Module 1 Module 2 Module 3 Bibliothèque Python Module 1 Module 2 Module 3 Une bibliothèque est plus utile que des routines cachées dans un programme!

bibiliothèques scientifiques généralistes

NumPy Fonctionnalité de base pour le calcul numérique: Tableaux multidimensionnels Arithmétique et fonctions mathématiques sur les tableaux Algèbre linéaire (LAPACK) Transformée de Fourier (FFTPACK) Nombres aléatoires 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 des algorithmes matriciels que pour interfacer avec des bibliothèques en C/C++/Fortran.

Un petit exemple import numpy as N from 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-vecteur x[:, N.newaxis]:rajoute une dimension au tableau x

matplotlib Bibliothèque de traçage Plots 2D Plots 3D avec l extension mplot3d autres (camembert,...) affichage à l écran, EPS, PDF,... peut être intégré dans un interface graphique Le module pylab de matplotlib facilite la transition pour les habitués de Matlab.

ScientificPython Modules Python d intérêt général: 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

SciPy Interfaces à des nombreuses bibliothèques scientifiques: 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

SymPy Bibliothè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 Langtangen Python Scripting for Computational Science Springer, 2005/2006 Matthieu Brucher Python, Les fondamentaux du langage, La programmation pour les scientifiques Editions ENI, 2008 Computing in Science and Engineering Special Issue Python: Batteries included May/June 2007