Chap XIII : calcul scientifique avec python

834 vues

Publié le

Les mathématiques appliquées et le calcul scientifique jouent un rôle croissant comme outils non évitables pour l’élaboration de recherches scientifiques et dans la conception de processus industriels. Le calcul scientifique reste pour toujours l’étape première de la voie du développement culturel et technique d’un pays donné.
Par ailleurs, le niveau de complexité des systèmes, généralement manipulés par les êtres humains que nous sommes, est très élevé à un niveau où toute avancée intellectuelle engendrera des retombés au niveau industriel tant que tous les processus de l’économie en dépendent.
En contre partie, la majorité des produits technologiques sont juste la solution immédiate de bon nombre de résolutions de requête de la vie courante. L'avènement de l'informatique et de ses produits, les langages de programmation de tout bord, de l'Internet et des télécommunications, à chacun ses infrastructures et ses protocoles, a révolutionné les méthodologies de travail des équipes et laboratoires de recherches. Les langages de développement informatique des outils et suites logiciels sont d’un grand secours aux travaux de modélisation et de simulation des processus.
Les mathématiques appliquées et l'informatique sont les moyens de conception (Modélisation et Simulation), plus encore, ils sont les vecteurs qui ont provoqué une amélioration nette dans les pratiques de tous les jours et aussi dans la vitesse de mise en œuvre de moyens exploitables.
Les langage de programmation, comme le C/C++, le FORTRAN ou le Python ont joué un grand rôle dans le cours de développement de beaucoup de procédés (Modélisation) et ont facilité la compréhension de beaucoup phénomènes (Simulation).

Publié dans : Ingénierie
0 commentaire
2 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
834
Sur SlideShare
0
Issues des intégrations
0
Intégrations
4
Actions
Partages
0
Téléchargements
57
Commentaires
0
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Chap XIII : calcul scientifique avec python

  1. 1. from turing_machine import TuringMachine initial_state = "init", accepting_states = ["final"], transition_function = {("init","0"):("init", "1", "R"), ("init","1"):("init", "0", "R"), ("init"," "):("final"," ", "N"), } final_states = ["final"] t = TuringMachine("010011 ", initial_state = "init", final_states = final_states, transition_function=transition_function) print("Input on Tape:") t.show_tape() while not t.final(): t.step() print("Result of the Turing machine calculation:") t.show_tape() Version 3.1.0 Université de Béchar Laboratoire des Études Énergétiques en Zones Arides Équipe Modélisation & Simulation des Systèmes Cours réalisé par : Pr. TAMALI Mohammed, http://mtamali.wordpress.com/ Université de Béchar | FS&T (ENERGARID Lab./SimulIA)
  2. 2. Presentation The University of Bechar was born in 1986 as the National Institutes of Higher Education (INES) in 1992 it becomes University Center and on January 07, 2007, it was officially declared as a University. Since then, many Research Teams have seen the day. In 2011, The Laboratory for Energy Systems Studies Applied to Arid Zones was run by a group of young and well motivated researchers (7 Research teams) to solve real problems affecting arid zones, SimulIA Team is one of them in the same laboratory. The Workload of SimulIA concern studies and applications of modeling and simulation of systems in Arid Areas. Research areas:  Energy & Environment (Modeling & Simulation)  Application of heat in arid zones  Energy economy.  Mapping and development of resources in arid zones.  SIMULIA for the task in the short term, to develop the computer code for modeling and simulation which can be accessed online. Website of the laboratory team: http://energarid.wordpress.com/ 2
  3. 3.  Introduction (Généralités & Historique).  Elaboration d’un environnement logiciel Python  (Installation, Personnalisation & Utilisation).  Domaines d’utilisation  Outils d’élaboration de code Python (IDE)  Base de représentation des données (Eléments de base)  Structure algorithmique du langage Python  Matrices & Systèmes linéaires  Systèmes non-linéaires  Interpolation & approximation  Intégration & Différentiation numérique  Calcul parallèle  Conclusion Plan 3
  4. 4. Introduction (Généralités). Les mathématiques appliquées et le calcul scientifique jouent un rôle croissant comme outils non évitables pour l’élaboration de recherches scientifiques et dans la conception de processus industriels. Le calcul scientifique reste pour toujours l’étape première de la voie du développement culturel et technique d’un pays donné. Par ailleurs, le niveau de complexité des systèmes, généralement manipulés par les êtres humains que nous sommes, est très élevé à un niveau où toute avancée intellectuelle engendrera des retombés au niveau industriel tant que tous les processus de l’économie en dépendent. En contre partie, la majorité des produits technologiques sont juste la solution immédiate de bon nombre de résolutions de requête de la vie courante. L'avènement de l'informatique et de ses produits, les langages de programmation de tout bord, de l'Internet et des télécommunications, à chacun ses infrastructures et ses protocoles, a révolutionné les méthodologies de travail des équipes et laboratoires de recherches. Les langages de développement informatique des outils et suites logiciels sont d’un grand secours aux travaux de modélisation et de simulation des processus. Les mathématiques appliquées et l'informatique sont les moyens de conception (Modélisation et Simulation), plus encore, ils sont les vecteurs qui ont provoqué une amélioration nette dans les pratiques de tous les jours et aussi dans la vitesse de mise en œuvre de moyens exploitables. Les langage de programmation, comme le C/C++, le FORTRAN ou le Python ont joué un grand rôle dans le cours de développement de beaucoup de procédés (Modélisation) et ont facilité la compréhension de beaucoup phénomènes (Simulation). 4
  5. 5. Introduction (Historique). Python est un langage intéressant pour sa facilité et sa richesse en possibilités d’utilisation. En version de base, Python dispose de nombreuses fonctionnalités intégrées en standard. Autour des aptitudes de base standard, Il est extensible par des modules de tout bord, qui sont les contributions de développeurs dévoués à la cause de l’Open Source. Ce sont des bibliothèques qui aident le développeur à travailler sur des projets particuliers. Plusieurs bibliothèques peuvent ainsi être installées pour, par exemple, développer des interfaces graphiques en Python (cas de tkinter). Python est un langage de programmation, dont la première version est sortie en 1991. Créé par Guido van Rossum, il a été porté du Macintosh, de son développeur, qui travaillait à cette époque au Centrum voor Wiskunde en Informatica aux Pays-Bas, jusqu'à se voir associer une organisation à but non lucratif particulièrement dévouée, la PSF (Python Software Foundation), créée en 2001. Ce langage a été baptisé ainsi en hommage à la troupe de comiques les «Monty Python». 5 Développeur Informaticien Néerlandais (langage Python) Guido van Rossum 31 janvier 1956 Monty Python est le nom d'une troupe célèbre d'humoristes britanniques (1969).
  6. 6. Introduction (Logiciel Open Source vs. Propriétaire). La PSF (Python Software Foundation), créée en 2001, appartient à Open Source Initiative, et à la FSF (Free Software Foundation) Un logiciel propriétaire, appelé parfois de manière militante logiciel privateur, ou encore logiciel non libre, est un logiciel dont la duplication, la modification ou l'usage est limité. La désignation Open Source ou ‘Code Source Ouvert’, s'applique aux logiciels dont la licence respecte des critères précisément établis par l'Open Source Initiative, c'est-à-dire les possibilités de libre redistribution, d'accès au code source et de création de travaux dérivés. Mis à la disposition du grand public, ce code source est généralement le résultat d'une collaboration entre développeurs. 6
  7. 7. Elaboration d’un environnement logiciel Python Installation Beaucoup de méthodologies sont valable pour développer un environnement compatible pour une programmation avec le langage Python (Celui-ci est téléchargeable sous deux version 2.X ou 3.X, version de base qui ne sont pas forcement totalement compatible). Le langage Python est utilisable sous différent système d’exploitation (Win, Linux/UNIX ou Mac OS). Une autre alternative, encore plus interessante que la première est d’installer le logiciel ANACONDA. Avec l’un des éditeurs de scripts 7 Notre choix Environnement Notre choix IDE
  8. 8. Elaboration d’un environnement logiciel Python Installation La plateforme ANACONDA installe tout le nécessaire (l’environnement PYTHON 3.X/2.X) et donnera accès aux possibilités d’étendre l’installation aux modules PYTHON nécessaires pour le développement de calcul scientifique de l’ingénieur ou du chercheur. Les différents modules (librairies) nécessaire sont : NUMPY : Analyse numérique & Matrices SCIPY : Extension pour calcul scientifique MATPLOTLIB : Dessin de courbe SYMPY : calcul symbolique NETWORKX : manipulation et gestion des graphes PLOTLY : Librairie en ligne pour dessin de courbes EVENTLET : TKINTER : Librairie pour manipulation d’interface graphique IPYTHON : Bibliothèque pour calcul scientifique CYTHON : Interface pour environnement C/C++ JPYTHON : Interface pour environnement JAVA JUPYTER : Editeur orienté navigateur DJANGO-CMS : System de gestion de contenus WIDGY : CMS utilisant le Framework Django. …encore des milliers de modules. 8 Notre choix Environnement Notre choix IDE
  9. 9. Elaboration d’un environnement logiciel Python Installation : Assistant de l’installation de ANACONDA et de PYCHARM La plateforme ANACONDA = {Python, Modules} L’IDE de programmation PYTHON, PyCharm 9 Notre choix Environnement Notre choix De l’IDE
  10. 10. Elaboration d’un environnement logiciel Python Personnalisation : Sous PyCharm, en mode TEREMINAL, nous ajoutons les modules nécessaires à la plateforme ANACONDA . Dans la fenêtre TERMINAL, nous utiliserons CONDA H:PycharmProjectsessai>conda install mpi4py Using Anaconda Cloud api site https://api.anaconda.org Fetching package metadata: .... Solving package specifications: .......... Package plan for installation in environment h:Anaconda325: The following packages will be downloaded: package | build mpi4py-2.0.0 | py35_0 264 KB The following NEW packages will be INSTALLED: mpi4py: 2.0.0-py35_0 (copy) Proceed ([y]/n)? Y Fetching packages ... mpi4py-2.0.0-p 100% |###| Time: 0:00:01 169.26 kB/s Extracting packages … [COMPLETE]|##################################| 100% Linking packages ... [mpi4py]| | 0% [COMPLETE]|##################################| 100%10 Fenêtre ABOUT de PyCharm Idée du jour Commande installation modules
  11. 11. Elaboration d’un environnement logiciel Python Utilisation : Sous PyCharm, en mode TEREMINAL, nous ajoutons les modules nécessaires à la plateforme ANACONDA . Caractéristiques du langage script Python : Avantages : • Très riches librairies pour le calcul scientifique. • Langage bien structuré, permettant d’écrire des programmes lisibles ‘we code what we think’. • D’autres librairies hors le cadre du calcul scientifique (Gestion des services Web, Accès aux ports série, etc.) • Graticiel ‘Open Source’, derrière une large communauté. • Compacité du programme développé. • Beaucoup d’alternatives pour l’édition (IDE). Inconvénients: • Environnement de développement moins. • Pas tous les algorithmes qui peuvent être trouvés dans le logiciel. Python peut être utiliser sous deux modes, selon l’interactivité escomptée. 1. Commande en ligne 2. Exécution de fichier script .py 11 Fenêtre ABOUT de PyCharm
  12. 12. Elaboration d’un environnement logiciel Python Utilisation : Sous PyCharm,. Caractéristiques du langage script Python : Python est un langage script informatique générique et moderne. • Langage Python intègre tous les types de données (chaîne, réel, int), les contrôles, des collections de données (listes, dictionnaires), et des modèles de flux, etc. • La bibliothèque standard intègre plusieurs Modules. • Un grand nombre de modules spécialisés ou des applications sont écrites en Python: protocoles web, framework web, etc ... Ainsi que le calcul scientifique. - Outils de développement (test automatique, génération de documentation). - et encore plus… Python peut être utiliser sous deux modes, selon l’interactivité escomptée. 1. Commande en ligne 2. Exécution de fichier script .py 12 Mode console Python Mode programme (.py)
  13. 13. Elaboration d’un environnement logiciel Python Utilisation : Sous Jupyter, Interface WEB pour Python. Cette interface Web est facilement mise en œuvre par son installation : conda install jupyter (si Anaconda est installé) Ou pip install jupyter Le lancement de l’interface est fait en invoquant : Jupiter notebook Ouvrir le navigateur et entrer l’adresse http://127.0.0.1:8888. Pour utiliser un autre PORT autre que 8888 On note : http://127.0.0.1:Nouveau_Port. L’interface JUPITER est intuitive et facile à utiliser, ses fonctionnalités sont : • Déploiement sous protocole Internet d’aptitude de calcul Python. • Toute les possibilités de gestion des documents ‘Notebook’ sont offertes. • Possibilités d’édition non limitées (LaTeX, HTML, Code, …) • Exécution immédiate. • Compatibilité avec la plupart des langages et scripts de programmation (C/C++, Java, JavaScript, Julia, Python, R, Octave, …) • Offre accessibilité à Jupyter Drive via Google Drive. • Options de Reporting avancées (HTML, LaTeX, PDF). 13 Exemple de code avec son exécution Menu et barre d’outils
  14. 14. Elaboration d’un environnement logiciel Python Utilisation : Sous Jupyter, Interface WEB pour Python. Les notebooks sont accessibles à partir de PyCharm. Les notebooks sont des solutions de collaboration de préférences, ils intègrent toute les fonctionnalités exigées par un chercheur dans le domaine des sciences, humaines ou technologiques. Organisation des documents, leur ouverture, édition ou mise à jours se fait dans le même endroit sans aucune dépendance par rapport à la machine, puisque les notebooks sont accessible en ligne (Serveur, Ordinateur de bureau ou Périphérique mobile). Les possibilités sont étendues ainsi qu’une documentation abondante. 14 Graphique 3D Exemple de Code Python
  15. 15. Les domaines utilisant le langage script Python sont nombreux : Calcul scientifique de base (Modèle (Non-) linéaire) Python pour traitement du signal Calcul de probabilité et statistiques Développement de graphiques interactive avec Plotly Visualisation des données avec Lightning Lissage et régression non Paramétrique Solveur d’équations différentielles partielles Librairie Python d’analyse des données (Panda) Analyse de Big-Data en python Machine Learning sous Python avec le package scikit-learn Econométrie sous Python avec le package StatsModels Introduction à la programmation parallèle avec MPI Python Théorie des graphes Commande de processus et systèmes embarqués Plateforme CAD 2D/3D Bioinformatique et manipulation du génome Développement de sites Web (Framework Django) Domaines d’utilisation 15
  16. 16. Les domaines utilisant le langage script Python sont nombreux : Calcul scientifique de base (Modèle (Non-) linéaire) Python pour traitement du signal Calcul de probabilité et statistiques Développement de graphiques interactive avec Plotly Visualisation des données avec Lightning Lissage et régression non Paramétrique Solveur d’équations différentielles partielles Librairie Python d’analyse des données (Panda) Analyse de Big-Data en python Machine Learning sous Python avec le package scikit-learn Econométrie sous Python avec le package StatsModels Introduction à la programmation parallèle avec MPI Python Théorie des graphes Commande de processus et systèmes embarqués Plateforme CAD 2D/3D Bioinformatique et manipulation du génome Développement de sites Web (Framework Django) Domaines d’utilisation import numpy as np systeme = np.array([[1,2],[3,-4]]) valeur=np.array([[3],[1]]) sol=np.linalg.solve(systeme,valeur) print("x=",sol[0,0]," et y=",sol[1,0]) x= 1.4 et y= 0.8 # Résolution de système linéaire A.X=b >>> import numpy as np >>> from scipy import linalg >>> A = np.array([[1, 2], [3, 4]]) >>> A array([[1, 2],[3, 4]]) >>> b = np.array([[5], [6]]) >>> b array([[5],[6]]) >>> linalg.inv(A).dot(b) # slow array([[-4. ],[ 4.5]]) >>> A.dot(linalg.inv(A).dot(b)) - b # Vérification array([[8.88178420e-16],[2.66453526e-15]]) >>> np.linalg.solve(A, b) # fast array([[-4. ],[ 4.5]]) >>> A.dot(np.linalg.solve(A, b)) - b # Vérification array([[ 0.],[ 0.]]) Importation de la librairie Numpy 16
  17. 17. Les domaines utilisant le langage script Python sont nombreux : Calcul scientifique de base (Modèle (Non-) linéaire) Python pour traitement du signal Calcul de probabilité et statistiques Développement de graphiques interactive avec Plotly Visualisation des données avec Lightning Lissage et régression non Paramétrique Solveur d’équations différentielles partielles Librairie Python d’analyse des données (Panda) Analyse de Big-Data en python Machine Learning sous Python avec le package scikit-learn Econométrie sous Python avec le package StatsModels Introduction à la programmation parallèle avec MPI Python Théorie des graphes Commande de processus et systèmes embarqués Plateforme CAD 2D/3D Bioinformatique et manipulation du génome Développement de sites Web (Framework Django) Domaines d’utilisation 17 import numpy as np from scipy import signal, misc import matplotlib.pyplot as plt image = misc.face(gray=True).astype(np.float32) derfilt = np.array([1.0, -2, 1.0], dtype=np.float32) ck = signal.cspline2d(image, 8.0) deriv = (signal.sepfir2d(ck, derfilt, [1]) +signal.sepfir2d(ck, [1], derfilt)) laplacian = np.array([[0,1,0], [1,-4,1], [0,1,0]], dtype=np.float32) deriv2 = signal.convolve2d(ck,laplacian,mode=‘same',boundary='symm') plt.figure() plt.imshow(image) plt.gray() plt.title(‘Image original') plt.show() plt.figure() plt.imshow(deriv) plt.gray() plt.title(‘sortie avec filtre spline') plt.show()
  18. 18. Les domaines utilisant le langage script Python sont nombreux : Calcul scientifique de base (Modèle (Non-) linéaire) Python pour traitement du signal Calcul de probabilité et statistiques Développement de graphiques interactive avec Plotly Visualisation des données avec Lightning Lissage et régression non Paramétrique Solveur d’équations différentielles partielles Librairie Python d’analyse des données (Panda) Analyse de Big-Data en python Machine Learning sous Python avec le package scikit-learn Econométrie sous Python avec le package StatsModels Introduction à la programmation parallèle avec MPI Python Théorie des graphes Commande de processus et systèmes embarqués Plateforme CAD 2D/3D Bioinformatique et manipulation du génome Développement de sites Web (Framework Django) Domaines d’utilisation from matplotlib.pyplot import figure, hold, plot, legend, draw from numpy import linspace import scipy.stats as stats from numpy.random import randn x = randn(100) fig = figure() ax = fig.add_subplot(111) ax.hist(x, bins=30, label=’Empirical’) xlim = ax.get_xlim() ylim = ax.get_ylim() pdfx = linspace(xlim[0], xlim[1], 200) pdfy = stats.norm.pdf(pdfx) pdfy = pdfy / pdfy.max() * ylim[1] hold(True) plot(pdfx, pdfy, ’r-’, label=’PDF’) ax.set_ylim((ylim[0], 1.2 * ylim[1])) legend() hold(False) draw() 18
  19. 19. Les domaines utilisant le langage script Python sont nombreux : Calcul scientifique de base (Modèle (Non-) linéaire) Python pour traitement du signal Calcul de probabilité et statistiques Développement de graphiques interactive avec Plotly Visualisation des données avec Lightning Lissage et régression non Paramétrique Solveur d’équations différentielles partielles Librairie Python d’analyse des données (Panda, QtGraph) Analyse de Big-Data en python Machine Learning sous Python avec le package scikit-learn Econométrie sous Python avec le package StatsModels Introduction à la programmation parallèle avec MPI Python Théorie des graphes Commande de processus et systèmes embarqués Plateforme CAD 2D/3D Bioinformatique et manipulation du génome Développement de sites Web (Framework Django) Domaines d’utilisation 19
  20. 20. Les domaines utilisant le langage script Python sont nombreux : Calcul scientifique de base (Modèle (Non-) linéaire) Python pour traitement du signal Calcul de probabilité et statistiques Développement de graphiques interactive avec Plotly Visualisation des données avec Lightning Lissage et régression non Paramétrique Solveur d’équations différentielles partielles Librairie Python d’analyse sonore du coran Analyse de Big-Data en python Machine Learning sous Python avec le package scikit-learn Econométrie sous Python avec le package StatsModels Introduction à la programmation parallèle avec MPI Python Théorie des graphes Commande de processus et systèmes embarqués Plateforme CAD 2D/3D Bioinformatique et manipulation du génome Domaines d’utilisation %matplotlib inline from pylab import plot, show, title, xlabel, ylabel, subplot, savefig from scipy import fft, arange, ifft from numpy import sin, linspace, pi from scipy.io.wavfile import read,write def plotSpectru(y,Fs): n = len(y) # lungime semnal k = arange(n) T = n/Fs frq = k/T # two sides frequency range frq = frq[range(n/2)] # one side frequency range Y = fft(y)/n # fft computing and normalization Y = Y[range(n/2)] plot(frq,abs(Y),'r') # plotting the spectrum xlabel('Freq (Hz)') ylabel('|Y(freq)|') Fs = 44100; # sampling rate rate,data=read('fatiha.wav') y=data lungime=len(y) timp=len(y)/44100. t=linspace(0,timp,len(y)) subplot(2,1,1) plot(t,y) xlabel('Time') ylabel('Amplitude') subplot(2,1,2) plotSpectru(y,Fs) show() 20 Lecture de la sourah Code du traitement audio Spectre Amp|Fréq
  21. 21. Les domaines utilisant le langage script Python sont nombreux : Calcul scientifique de base (Modèle (Non-) linéaire) Python pour traitement du signal Calcul de probabilité et statistiques Développement de graphiques interactive avec Plotly Visualisation des données avec Lightning Lissage et régression non Paramétrique Solveur d’équations différentielles partielles Librairie Python d’analyse sonore du coran Analyse de Big-Data en python Machine Learning sous Python avec le package scikit-learn Econométrie sous Python avec le package StatsModels Introduction à la programmation parallèle (MPI Python) Théorie des graphes (Networkx) Commande de processus et systèmes embarqués Plateforme CAD 2D/3D Bioinformatique et manipulation du génome Développement de sites Web (Framework Django) Domaines d’utilisation 21Exemple de graphe Fenêtre Aperçu du bloc-note Importation de la librairie NetworkX
  22. 22. Les domaines utilisant le langage script Python sont nombreux : Calcul scientifique de base (Modèle (Non-) linéaire) Python pour traitement du signal Calcul de probabilité et statistiques Développement de graphiques interactive avec Plotly Visualisation des données avec Lightning Lissage et régression non Paramétrique Solveur d’équations différentielles partielles Librairie Python d’analyse sonore du coran Analyse de Big-Data en python Machine Learning sous Python avec le package scikit-learn Econométrie sous Python avec le package StatsModels Introduction à la programmation parallèle avec MPI Python Théorie des graphes Commande de processus et systèmes embarqués Plateforme CAD 2D/3D Bioinformatique et manipulation du génome Développement de sites Web (Framework Django) Domaines d’utilisation import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) # set board mode to Broadcom GPIO.setup(17, GPIO.OUT) # set up pin 17 GPIO.setup(18, GPIO.OUT) # set up pin 18 GPIO.output(17, 1) # turn on pin 17 GPIO.output(18, 1) # turn on pin 18 Importation librairie GPIO Module Galileo Gen 2 Module RaspBerry PI 3 22
  23. 23. Les domaines utilisant le langage script Python sont nombreux : Calcul scientifique de base (Modèle (Non-) linéaire) Python pour traitement du signal Calcul de probabilité et statistiques Développement de graphiques interactive avec Plotly Visualisation des données avec Lightning Lissage et régression non Paramétrique Solveur d’équations différentielles partielles Librairie Python d’analyse sonore du coran Analyse de Big-Data en python Machine Learning sous Python avec le package scikit-learn Econométrie sous Python avec le package StatsModels Introduction à la programmation parallèle avec MPI Python Théorie des graphes Commande de processus et systèmes embarqués Plateforme CAD 2D/3D (Python CAD, FreeCAD) Bioinformatique et manipulation du génome Développement de sites Web (Framework Django) Domaines d’utilisation 23 from OCC.STEPControl import STEPControl_Reader from OCC.IFSelect import IFSelect_RetDone, IFSelect_ItemsByEntity from OCC.Display.SimpleGui import init_display step_reader = STEPControl_Reader() status = step_reader.ReadFile('./models/wind_turbine.stp') if status == IFSelect_RetDone: # check status failsonly = False step_reader.PrintCheckLoad(failsonly, IFSelect_ItemsByEntity) step_reader.PrintCheckTransfer(failsonly, IFSelect_ItemsByEntity) ok = step_reader.TransferRoot(1) _nbs = step_reader.NbShapes() aResShape = step_reader.Shape(1) else: print("Error: can't read file.") sys.exit(0) display, start_display, add_menu, add_function_to_menu = init_display() display.DisplayShape(aResShape, update=True) start_display() Importation librairie OCC Maillage Dauphin Rendu du mât d’un aérogénérateur
  24. 24. Les domaines utilisant le langage script Python sont nombreux : Calcul scientifique de base (Modèle (Non-) linéaire) Python pour traitement du signal Calcul de probabilité et statistiques Développement de graphiques interactive avec Plotly Visualisation des données avec Lightning Lissage et régression non Paramétrique Solveur d’équations différentielles partielles Librairie Python d’analyse sonore du coran Analyse de Big-Data en python Machine Learning sous Python avec le package scikit-learn Econométrie sous Python avec le package StatsModels Introduction à la programmation parallèle avec MPI Python Théorie des graphes Commande de processus et systèmes embarqués Plateforme CAD 2D/3D (Python CAD, FreeCAD) Bioinformatique et manipulation du génome POO avec Python (Programmation Orientée Objet) Bioinformatique et manipulation du génome Développement de sites Web (Framework Django) Domaines d’utilisation class Rocket(): # Rocket simule une roquette pour un jeu, # ou une simulation de physique. def __init__(self): # Each rocket has an (x,y) position. self.x = 0 self.y = 0 def move_up(self): # Incrémentation de la position y de la roquette. self.y += 1 # Définir une ensemble de 5 roquettes, les stocker dans une liste. my_rockets = [] for x in range(0,5): new_rocket = Rocket() my_rockets.append(new_rocket) # A remarquer que chaque roquette est un objet à part entière. for rocket in my_rockets: print(rocket) Définition d’une nouvelle Classe Instantiation Méthode Constructeur __init__ 24
  25. 25. Les domaines utilisant le langage script Python sont nombreux : Calcul scientifique de base (Modèle (Non-) linéaire) Python pour traitement du signal Calcul de probabilité et statistiques Développement de graphiques interactive avec Plotly Visualisation des données avec Lightning Lissage et régression non Paramétrique Solveur d’équations différentielles partielles Librairie Python d’analyse sonore du coran Analyse de Big-Data en python Machine Learning sous Python avec le package scikit-learn Econométrie sous Python avec le package StatsModels Introduction à la programmation parallèle avec MPI Python Théorie des graphes Commande de processus et systèmes embarqués Plateforme CAD 2D/3D (Python CAD, FreeCAD) Bioinformatique et manipulation du génome Développement de sites Web (Framework Django) Domaines d’utilisation 25 from Bio import SeqIO for seq_record in SeqIO.parse("ls_orchid.gbk", "genbank"): print(seq_record.id) print(repr(seq_record.seq)) print(len(seq_record)) Z78533.1 Seq('CGTAACAAGGTTTCCGTAGGTGAACCTGCGGAAGGATCATTGATGAGACCGTGG...CGC', IUPACAmbiguousDNA()) 740 ... Z78439.1 Seq('CATTGTTGAGATCACATAATAATTGATCGAGTTAATCTGGAGGATCTGTTTACT...GCC', IUPACAmbiguousDNA()) 592 Sinon dans une Terminal Python >>> from Bio.Seq import Seq >>> from Bio.Alphabet import generic_dna >>> gene = Seq("GTGAAAAAGATGCAATCTATCGTACTCGCACTTTCCCTGGTTCTGGTCGCTCCCATGGCA" + ... "GCACAGGCTGCGGAAATTACGTTAGTCCCGTCAGTAAAATTACAGATAGGCGATCGTGAT" + ... "AATCGTGGCTATTACTGGGATGGAGGTCACTGGCGCGACCACGGCTGGTGGAAACAACAT" + ... "TATGAATGGCGAGGCAATCGCTGGCACCTACACGGACCGCCGCCACCGCCGCGCCACCAT" + ... "AAGAAAGCTCCTCATGATCATCACGGCGGTCATGGTCCAGGCAAACATCACCGCTAA", ... generic_dna) >>> gene.translate(table="Bacterial") Seq('VKKMQSIVLALSLVLVAPMAAQAAEITLVPSVKLQIGDRDNRGYYWDGGHWRDH...HR*', HasStopCodon(ExtendedIUPACProtein(), '*') >>> gene.translate(table="Bacterial", to_stop=True) Seq('VKKMQSIVLALSLVLVAPMAAQAAEITLVPSVKLQIGDRDNRGYYWDGGHWRDH...HHR', ExtendedIUPACProtein()) Logo de BioPython Séquence d’ADN Importation librairie BIO
  26. 26. Les domaines utilisant le langage script Python sont nombreux : Calcul scientifique de base (Modèle (Non-) linéaire) Python pour traitement du signal Calcul de probabilité et statistiques Développement de graphiques interactive avec Plotly Visualisation des données avec Lightning Lissage et régression non Paramétrique Solveur d’équations différentielles partielles Librairie Python d’analyse sonore du coran Analyse de Big-Data en python Machine Learning sous Python avec le package scikit-learn Econométrie sous Python avec le package StatsModels Introduction à la programmation parallèle avec MPI Python Théorie des graphes Commande de processus et systèmes embarqués Plateforme CAD 2D/3D (Python CAD, FreeCAD) Bioinformatique et manipulation du génome Développement de sites Web (Framework Django) Domaines d’utilisation 26 # Installer à partir de PyPI $ pip install mezzanine # Instantier un projet $ mezzanine-project monproject $ cd monproject # Instantier une Base de données $ python manage.py createdb # Lancer le serveur Web $ python manage.py runserver Installation en mode commande URL du site instantié Version Mobile, Menu Version Administration Sites Web fait avec Mezzanine Version Normal
  27. 27. Les environnements de développement intégrés de code Python sont nombreux, des solutions propriétaires à celles portant le label GPL. Ils sont de trois grandes catégories : Les applications bureaux (Desktop) Les consoles de commande en ligne Les interfaces orientées Web Outils d’élaboration de code Python (IDE) 27
  28. 28. Les environnements de développement intégrés de code Python sont nombreux, des solutions propriétaires à celles portant le label GPL. Ils sont de trois grandes catégories : Les applications bureaux (Desktop) Les consoles de commande en ligne Les interfaces orientées Web Outils d’élaboration de code Python (IDE) 28
  29. 29. Les environnements de développement intégrés de code Python sont nombreux, des solutions propriétaires à celles portant le label GPL. Ils sont de trois grandes catégories : Les applications bureaux (Desktop) Les consoles de commande en ligne Les interfaces orientées Web Outils d’élaboration de code Python (IDE) 29
  30. 30. 30
  31. 31. Nom de Symbole : Les noms de variables en Python peuvent contenir des caractères alphanumériques a-z, A-Z, 0- 9 et certains caractères spéciaux tel que _. Les noms de variables normales doivent commencer par une lettre. Par convention, les noms de variables commencent par une lettre minuscule, et les noms de classe commencent par une lettre majuscule. En outre, il y a un certain nombre de mots-clés Python qui ne peuvent pas être utilisés comme noms de variables. Ces mots-clés sont les suivants: and, as, assert, break, class, continue, def, del, elif, else, except, exec, finally, for, from, global, if, import, in, is, lambda, not, or, pass, print, raise, return, try, while, with, yield Affectation : # assignment de variable x = 1.0 my_variable = 12.2 type(x) #fonction TYPE retourne le type de la variable entre parenthèse builtins.float Verification de type : x = 1.0 # vérifier si la variable est réelle type(x) is float isinstance(x, float) True z = complex(x) print(z, type(z)) (1+0j) <class 'complex‘> Base de représentation des données 31
  32. 32. Operateurs et comparaisons Opérateurs arithmétiques +, -, *, /, // (division entière), '**' puissance. 3.0 // 2.0 1.0 # NB: operators puissance en python n’est pas ^, mais ** 2 ** 2 4 Les opérateurs de comparaison sont >,<,>=,<=,==. # objects identiques ? x1 = x2 = [1,2] x1 is x2 True 2 >= 2, 2 <= 2 (True, True) Chaines de caractères, les liste et les dictionnaires s = "Hello world" type(s) builtins.str # length of the string: the number of characters len(s) 11 # replace a substring in a string with somethign else s2 = s.replace("world", "test") print(s2) Hello test s[0] 'H' Base de représentation des données 32
  33. 33. Chaines de caractères, les liste et les dictionnaires s = "Hello world“ # replace a substring in a string with somethign else s2 = s.replace("world", "test") Hello test print(s2) s[0:5] 'Hello‘ s[0:5] 'Hello‘ s[:] 'Hello world‘ print("value = %f" % 1.0) # Formatage C des variables value = 1.000000 s2 = "value1 = %.2f. value2 = %d" % (3.1415, 1.5) print(s2) value1 = 3.14. value2 = 1 Listes l = [1,2,3,4] print(type(l)) print(l) <class 'list'> [1, 2, 3, 4] l = [1, 'a', 1.0, 1-1j] # peuvent être hétérogène print(l) [1, 'a', 1.0, (1-1j)] Base de représentation des données 33
  34. 34. Listes start = 10 stop = 30 step = 2 range(start, stop, step) range(10, 30, 2) list(range(start, stop, step)) [10, 12, 14, 16, 18, 20, 22, 24, 26, 28] s2 = list(s) S2 ['H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'] # Tri de la liste s2.sort() print(s2) [' ', 'H', 'd', 'e', 'l', 'l', 'l', 'o', 'o', 'r', 'w'] l = [] l.append("A") l.append("d") l.append("d") print(l) ['A', 'd', 'd'] Tuples Ce sont des variables comme les listes mais pas altérables point = (10, 20) print(point, type(point)) (10, 20) <class 'tuple'> Base de représentation des données 34
  35. 35. Tuples x, y = point print("x =", x) print("y =", y) x = 10 y = 20 Dictionaries params = {"parameter1" : 1.0, "parameter2" : 2.0, "parameter3" : 3.0,} print(type(params)) print(params) <class 'dict'> f'parameter2': 2.0, 'parameter3': 3.0, 'parameter1': 1.0} params["parameter1"] = "A" params["parameter2"] = "B" # Ajouter une nouvelle entrée params["parameter4"] = "D" print("paramètre = " + str(params["parameter1"])) print("paramètre = " + str(params["parameter2"])) print("paramètre = " + str(params["parameter3"])) print("paramètre = " + str(params["parameter4"])) paramètre = A paramètre = B paramètre = 3.0 paramètre = D Base de représentation des données 35
  36. 36. 36
  37. 37. Affectation & Contrôle conditionnel de flue statement1 = False # C’est une affectation statement2 = False if statement1: # Test validé condition (statement1) est VRAIE print("statement1 is True") elif statement2: # Exécutée condition (statement2) est VRAIE print("statement2 is True") else: # Exécutée sinon print("statement1 and statement2 are False") Boucles for x in [1,2,3]: # [1,2,3] peut être désigné par range(3) avec print(x+1) print(x) 1 2 3 for word in ["scientific", "computing", "with", "python"]: print(word) # condition de répétition dépendante du contenu de la liste scientific computing with python l1 = [x**2 for x in range(0,5)] # à remarquer la compacité du Python print(l1) [0, 1, 4, 9, 16] Base de représentation des données 37
  38. 38. Boucles var = 0 while var != 1: print " .... " # j‘écris mon programme ici choix = raw_input("voulez vous recommencer ? ( o/n ) : ") if choix == "n": var = 1 else: ‘vous allez être renvoyé au début du programme’ X = y / 2 while x > 1: If y % x == 0: print y, ‘ est facteur de ’, x break x -= 1 else: print y, ‘ est premier‘ L’utilisation de zip et map, peut s’avérée encore plus efficace l1 = [1, 2, 3] l2 = [4, 5, 6] for (x, y) in zip(l1, l2): print x, y, '--', x + y 1 4 -- 5 2 5 -- 7 3 6 -- 9 Base de représentation des données 38 s='0123456789' print map(int, s) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] Utilisation et puissance de MAP Utilisation de ZIP
  39. 39. Intervales range(start, stop, step) range(5, 10) 5 jusqu’à 10 (exclue) avec un pas de 1 range(0, 10, 3) 0, 3, 6, 9 range(-10, -100, -30) -10, -40, -70 Test conditionnel binaire x = 5 y = 10 if x > y: print('x est grand que y') else: print(“x n’est pas grand que y”) # Dans Python, on peut compliquer les chose x = 5 y = 10 Z = 12 if z > x > y: print(‘y est petit que x, et x est petit que z') Base de représentation des données 39
  40. 40. Boucle avec test conditionnel binaire # break, continue et else dans une boucle for for n in range(2, 10): for x in range(2, n): if n % x == 0: print(n, ‘est égal à', x, '*', n//x) break else: print(n, ‘est premier') # Utilisation de l’instruction continue for num in range(2, 10): if num % 2 == 0: # le symbole % désigne l’opération RESTE de la division print(“Nombre paire trouvé ", num) continue print(“Nombre non premier ", num) Base de représentation des données 40
  41. 41. Définition de fonction (procédure avec retour) def fib(n): # Ecrire la suite de Fibonacci jusqu’à n a, b = 0, 1 while a < n: print(a, end=' ') a, b = b, a+b print() fib(2000) 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 f = fib # désignation par référence f à la fonction fib f(100) 0 1 1 2 3 5 8 13 21 34 55 89 # autre type de définition de fonction def ask_ok(prompt, retries=4, complaint="Oui or Non, s’il vou plait !"): while True: ok = input(prompt) if ok in (‘o', ‘oui', ‘Oui'): return True if ok in (‘n', 'no', 'non', ‘Non'): return False retries = retries - 1 if retries < 0: raise OSError(‘Utilisateur non coopératif') print(complaint) Base de représentation des données 41
  42. 42. L’instruction lambda def make_incrementeur(n): return lambda x: x + n f = make_incrementeur(42) f(0) 42 f(1) 43 # un autre cas d’utilisation pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')] pairs.sort(key=lambda pair: pair[1]) pairs [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')] Les annotations dans une fonction # Les annotations définissent des messages de présentation def f(chiken: str, eggs: str = 'eggs') -> str: # remarquer que la fonction est de type STR print("Annotations:", f.__annotations__) print("Arguments:", chiken, eggs) return chiken + ' and ' + eggs f('spam') Annotations: {'chiken': <class 'str'>, 'return': <class 'str'>, 'eggs': <class 'str'>} Arguments: spam eggs 'spam and eggs‘ Base de représentation des données 42
  43. 43. Les décorateurs python # Notre décorateur def decorate(func): print u"Je suis dans la fonction 'decorate' et je décore '%s'." % func.__name__ print u"Exécution de la fonction '%s'." % func.__name__ return func # Fonction cible utilisée avec DECORATOR @decorate def foobar(*args): print ", ".join(args) # Exemple d’appel de la fonction foobar("A", "B", "C", "D") Je suis dans la fonction 'decorate' et je décore 'foobar'. Exécution de la fonction 'foobar'. A, B, C, D # Il est posible d’attribuer plusieurs décorateurs à une seule fonction. @decorateur1 @decorateur2 def ma_fonction(): instructions Base de représentation des données 43
  44. 44. Manipulation des listes a = [66.25, 333, 333, 1, 1234.5] print(a.count(333), a.count(66.25), a.count('x')) 2 1 0 a.insert(2, -1) a.append(333) a [66.25, 333, -1, 333, 1, 1234.5, 333] a.index(333) 1 a.remove(333) a [66.25, -1, 333, 1, 1234.5, 333] a.reverse() a [333, 1234.5, 1, 333, -1, 66.25] a.sort() a [-1, 1, 66.25, 333, 333, 1234.5] a.pop() 1234.5 a [-1, 1, 66.25, 333, 333] Base de représentation des données 44
  45. 45. Puissance du langage Python # L’ensemble des lignes suiantes peut être compacté par ce qui suit combs = [] for x in [1,2,3]: for y in [3,1,4]: if x != y: combs.append((x, y)) Combs # Ou bien [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y] # Donne le même résultat [(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)] # Calcul de la valeur de PI arrondie from math import pi [str(round(pi, i)) for i in range(1, 6)] ['3.1', '3.14', '3.142', '3.1416', '3.14159'] # Générateur avec utilisation de YIELD def generateur(): yield "a" yield "b" yield "c“ i=generateur() for v in i: print v a b c Base de représentation des données 45
  46. 46. Les expressions régulières en python # Les expressions régulière sont utilisées pour vérifier la conformité des expressions de # chaines de caractères par rapport à un motif. Les symboles suivants sont utilisés : # . ^ $ * + ? { } [ ] | ( ) # . Le point correspond à n'importe quel caractère. # ^ Indique un commencement de segment mais signifie aussi "contraire de" # $ Fin de segment # [xy] Une liste de segment possible. Exemple [abc] équivaut à : a, b ou c # (x|y) Indique un choix multiple type (ps|ump) équivaut à "ps" OU "UMP" # d le segment est composé uniquement de chiffre, ce qui équivaut à [0-9]. # D le segment n'est pas composé de chiffre, ce qui équivaut à [^0-9]. # s Un espace, ce qui équivaut à [ tnrfv]. # S Pas d'espace, ce qui équivaut à [^ tnrfv]. # w Présence alphanumérique, ce qui équivaut à [a-zA-Z0-9_]. # W Pas de présence alphanumérique [^a-zA-Z0-9_]. # Est un caractère d'échappement # T{2} Le T soit répété 2 fois # TA{1,9} La séquence TA doit être présente de 1 à 9 fois # TAM{,10} La séquence TAM n’existe pas ou répétée 10 fois # LI{1,} La séquence LI doit être répétée au moins une fois. Base de représentation des données 46
  47. 47. Les expressions régulières en python # Utilisation des expressions régulière import re print re.match(r"GR(.)?S", "GRIS") <_sre.SRE_Match object at 0x02019DE0> Une utilisation fréquente, consiste en la validation des valeurs des emails saisis. # Utilisation des expressions régulière import re mails = [‘mtamali@gmail.com’,’utmb@univ-bechar.dz’, ‘8@free.fr’, ‘@univ-bechar.dz’, ‘tamali@cdta’] regex = re.compile(r’^[a-z0-9._-]+@[a-z0-9._-]+.[(com|fr|dz)]+’ for mail in mails: if regex.match(mail) is not None: print "Ce mail : %s est valide" % mail else: print "Erreur ce mail : %s est non valide" % mail Ce mail : mtamali@gmail.com est valide Ce mail : utmb@univ-bechar.dz est valide Ce mail : 8@free.fr est valide Erreur ce mail : @univ-bechar.dz est non valide Erreur ce mail : tamali@cdta est non valide Base de représentation des données 47
  48. 48. Les fichiers, Créer lire et écrire dans un fichier en python # Utilisation des expressions régulière fichier = open("donnees.txt", "r") print fichier <open file ‘donnees.txt', mode 'r' at 0x7ff6cf3fe4b0> Le descripteur permet de renseigner la machine sur la manière avec laquelle le fichier est utilisé. r, pour ouverture en mode READ. w, pour ouverture en mode WRITE, chaque fois, le contenu du fichier est écrasé sinon python le crée. a, pour ajout ‘APPEND’. Si le fichier n'existe pas python le crée. b, Ouverture en mode Binaire. t, Ouverture en mode Texte. x, crée un nouveau fichier et l'ouvrir pour écriture # procédure générale pour l’utilisation d’un fichier fichier = open(‘donnees.txt’, "r") print fichier.read() fichier.close() # L’instruction WITH peut être utilisée sans besoin de la fonction CLOSE with open("data.txt", "r") as fichier: print fichier.read() Base de représentation des données 48
  49. 49. 49
  50. 50. Le langage Python, est un langage script interprété. Le programme, portant l’une des extension .py, .pyw ou .pwc est structuré selon le canevas suivant : Les codifications #!/usr/bin/python2.7 # -*-coding:encodage -* Les imports des librairies Les instructions Le langage Python passe, pour être exécuté sur deux étapes, la première UNE PRECOMPILATION génération du code machine et finalement un écriture en code machine exécutable (selon la machine). L’environnement d’exécution des scripts écrits en Python, regroupe les avantages des TRADUCTEURS (travaille en ligne par ligne) et les COMPILATEURS (puissance de la structure algorithmique). La bibliothèque cx_Freeze sert à transformer les fichiers scripts Pyhon .py en exécutable .exe. Structures algorithmique du python 50
  51. 51. 51
  52. 52. Matrices & Systèmes linéaires 52
  53. 53. 53
  54. 54. 54
  55. 55. 55
  56. 56. 56
  57. 57. 57 Le calcul scientifique
  58. 58. Références L.-V. Bertallanfy, ‘General System Theory’, Edition MASSON, 1972. 58

×