Analyse scientifique avec Python Version Janvier 2017 Yannick Copin 16/05/17, 11:48 Table des matières 1 Introduction 1 1.1 Pourquoi un module d’analyse scientifique? . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Pourquoi Python? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.3 Organisation des TDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.4 Informations pratiques 2017 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 Initiation à Python 5 2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2 Types de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.3 Structures de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.4 Les chaînes de caractères . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.5 Objets itérables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.6 Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.7 Bibliothèques et scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.8 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.9 Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.10 Entrées-sorties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.11 Éléments passés sous silence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3 Bibliothèque standard 23 3.1 Gestion des arguments/options de la ligne de commande . . . . . . . . . . . . . . . . . . 23 3.2 [c]Pickle : sérialisation des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.3 Batteries included . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.4 Text/Graphical User Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4 Bibliothèques numériques 27 4.1 Numpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.2 Scipy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.3 Bibliothèques graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.4 Astropy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.5 Autres librairies scientifiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 5 Développer en python 41 5.1 Le zen du python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 5.2 Développement piloté par les tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.3 Outils de développement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 6 Références supplémentaires 47 6.1 Documentation générale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 6.2 Listes de liens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 6.3 Livres libres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 i 6.4 Cours en ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 6.5 Sphinx & co. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 7 Exemples 51 7.1 Mean power (fonction, argparse) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 7.2 Formes (POO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 7.3 Cercle circonscrit (POO, argparse) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 7.4 Matplotlib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 8 Exercices 65 8.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 8.2 Manipulation de listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 8.3 Programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 8.4 Manipulation de tableaux (arrays) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 8.5 Méthodes numériques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 8.6 Visualisation (matplotlib) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 8.7 Mise en oeuvre de l’ensemble des connaissances acquises. . . . . . . . . . . . . . . . . . . 71 8.8 Exercices en vrac . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 9 Annales d’examen 73 9.1 Simulation de chute libre (partiel nov. 2014) . . . . . . . . . . . . . . . . . . . . . . . . . 73 9.2 Examen janvier 2015 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 10 Projets 75 10.1 Projets de visualisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 10.2 Projets statistiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 10.3 Projets de physique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 10.4 Projets astrophysiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 10.5 Divers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 11 Démonstration Astropy 87 11.1 Fichiers FITS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 11.2 Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 11.3 Quantités et unités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 11.4 Calculs cosmologiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 12 Méthode des rectangles 97 13 Algorithme d’Euclide 99 14 Crible d’Ératosthène 101 15 Carré magique 103 16 Suite de Syracuse 105 17 Flocon de Koch 107 18 Jeu du plus ou moins 111 19 Animaux 113 20 Particules 117 21 Jeu de la vie 127 22 Median Absolute Deviation 129 23 Distribution du pull 131 24 Quadrature 133 ii 25 Zéro d’une fonction 135 26 Quartet d’Anscombe 137 27 Suite logistique 141 28 Ensemble de Julia 143 29 Trajectoire d’un boulet de canon 145 30 Équation d’état de l’eau 147 31 Solutions aux exercices 151 32 Examen final, Janvier 2015 153 32.1 Exercice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 32.2 Le problème du voyageur de commerce . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 32.3 Correction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 Bibliographie 157 iii iv 1 CHAPITRE Introduction Version Master de Physique Fondamentale, Université Lyon 1 du 16/05/17, 11 :48 Auteur Yannick Copin <ipnl.in2p3.fr> Pourquoi un module d’analyse scientifique? — Pour générer ses données, p.ex. simulations numériques, contrôle d’expériences; — Pour traiter ses données, i.e. supprimer les artefacts observationnels; — Pour analyser ses données, i.e. extraire les quantités physiques pertinentes, p.ex. en ajustant un modèle; — Pour visualiser ses données, et appréhender leur richesse multi-dimensionnelle; — Pour présenter ses données, p.ex. générer des figures prêtes à publier. Ce module s’addresse donc avant tout aux futurs expérimentateurs, phénoménologistes ou théoriciens voulant se frotter à la réalité des observations. Pourquoi Python? Les principales caractéristiques du langage Python : — Syntaxe simple et lisible : langage pédagogique et facile à apprendre et à utiliser; — Langage interprété : utilisation interactive ou script exécuté ligne à ligne, pas de processus de compilation; — Haut niveau : typage dynamique, gestion active de la mémoire, pour une plus grande facilité d’emploi; — Multi-paradigme : langage impératif et/ou orienté objet, selon les besoins et les capacités de chacun; — Logiciel libre et ouvert, largement répandu (multi-plateforme) et utilisé (forte communauté); — Riche bibliothèque standard : Batteries included; — Riche bibliothèque externe : de nombreuses bibliothèques de qualité, dans divers domaines (y compris scientifiques), sont déjà disponibles. L’objectif est bien d’apprendre un seul langage de haut niveau, permettant tout aussi bien des analyses rapides dans la vie de tous les jours – quelques lignes de code en intéractif – que des programes les plus complexes (projets de plus de 100000 lignes). 1 Analyse scientifique avec Python, Version Janvier 2017 Liens : — Getting Started — Python Advocacy Organisation des TDs — TD1 : Introduction, types de base, structures de programmation — TD2 : Chaînes de caractères, objets itérables, fonctions, bibliothèques — TD3 : Exceptions, classes, entrées-sorties — TD4 : Librairie standard, révisions — TD5 : Numpy — TD6 : Scipy — TD7 : Zen du python, révisions — Page projets : Exemple de sujets de micro-projets Informations pratiques 2017 — Atelier Analyse scientifique avec Python — Cours en ligne — Responsable : Yannick Copin <ipnl.in2p3.fr>, Bureau 420 de l’IPNL (4 rue Fermi) Calendrier Toutes les séances ont lieu au bâtiment Ariane. Date TD Salle Lun. 06/02/2017 10h-12h 6 Lun. 06/02 13h30-15h30 2 Mar. 07/02 14h-17h 2 Jeu. 09/02 9h-12h 6 Ven. 10/02 14h30-16h30 6 (projets) Participants Nom Mail (prenom.nom+) Statut Projet Desprez Guillaume etu.univ-lyon1.fr M2 Diag. HR Dumoulin Jeremy etu.univ-lyon1.fr M2 Poincaré I Ikhenache Nadira etu.univ-lyon1.fr M2 Naine blanche Rouzaud Robin etu.univ-lyon1.fr M2 Poincaré II Vericel Arnaud etu.univ-lyon1.fr M2 Poincaré II Girerd Claude ipnl.in2p3.fr IPNL Tromeur William ipnl.in2p3.fr IPNL Arguello Jazmin ens-lyon.fr ENSL Installations locales Si des programmes ou des librairies Python (p.ex. ipython) manquent sur votre ordinateur (p.ex. en salle Ariane), il est relativement aisé de les installer localement à l’aide du gestionnaire d’installation pip. — Installer pip : 2 Chapitre 1. Introduction Analyse scientifique avec Python, Version Janvier 2017 wget https://bootstrap.pypa.io/get-pip.py ./get-pip.py --user — Installer p.ex. ipython : pip install --user ipython Si vous avez le contrôle de votre ordinateur, il peut être préférable d’utiliser le gestionnaire de paquets du système (p.ex. synaptic sur Ubuntu). 1.4. Informations pratiques 2017 3 Analyse scientifique avec Python, Version Janvier 2017 4 Chapitre 1. Introduction
Description: