Vous êtes sur la page 1sur 60

.

Une introduction au langage Python


pour l’analyse de données (génétiques)
Bertrand Servin
Mars 2014
Plan
Introduction

Le langage
1 Introduction
Exécution d’un programme python
Types de données
Fonctions de base
2 Le langage
Définir ses propres fonctions
Conclusions
Exécution d’un programme python
Liste d’outils pour le Types de données
calcul et l’analyse de
données
Fonctions de base
Modules du projet Scipy
Intégration de code C et fortran
Définir ses propres fonctions
.
Conclusions
3 Liste d’outils pour le calcul et l’analyse de données
Modules du projet Scipy
Intégration de code C et fortran

Bertrand Servin / Introduction à python Mars 2014 2.


Plan
Introduction

Le langage
1 Introduction
Exécution d’un programme python
Types de données
Fonctions de base
2 Le langage
Définir ses propres fonctions
Conclusions
Exécution d’un programme python
Liste d’outils pour le Types de données
calcul et l’analyse de
données
Fonctions de base
Modules du projet Scipy
Intégration de code C et fortran
Définir ses propres fonctions
.
Conclusions
3 Liste d’outils pour le calcul et l’analyse de données
Modules du projet Scipy
Intégration de code C et fortran

Bertrand Servin / Introduction à python Mars 2014 3.


Caractéristiques du langage python
Introduction

Le langage
Exécution d’un programme python
Langage de haut niveau ( “loin du hardware” )
Types de données
Fonctions de base Généraliste : nombreux domaines d’application (calcul numérique ,
Définir ses propres fonctions
Conclusions administration système, développement web, jeux ...)
Liste d’outils pour le
calcul et l’analyse de
multi paradigme : procédural, orienté objet, fonctionnel
données
Modules du projet Scipy
Gestion mémoire automatique (garbage collection)
Intégration de code C et fortran
.
Très grande bibliothèque standard
Syntaxe orientée sur la lisibilité du code
Plusieurs contextes d’utilisation: Interface interactive (shell) > scripts >
programmes > bibliothèques (modules)

Bertrand Servin / Introduction à python Mars 2014 4.


Historique
Introduction

Le langage Premières versions du langage datent du début des années 90. Version 1.0 :
Exécution d’un programme python
Types de données 1994.
Fonctions de base
Définir ses propres fonctions
Conclusions
Python 2.0 : 2000
Liste d’outils pour le Aujourd’hui deux versions co-existent:
calcul et l’analyse de
données python 2.7 : Dernière version de la série des 2.x, la plus utilisée (ici aussi)
Modules du projet Scipy
Intégration de code C et fortran
python 3.0 : version destinée à corriger certaines erreurs de design qui
.
nécessitent de casser la compatibilité.
Certaines bibliothèques (modules) dont nous parlerons sont compatibles 2.7 pas
3.x
Il existe un outil de conversion automatique 2to3 qui semble assez efficace (non
testé).

Bertrand Servin / Introduction à python Mars 2014 5.


Mon historique personelle avec python
Introduction

Le langage
Exécution d’un programme python Avant: développement C et R exclusivement
Types de données
Fonctions de base Volonté d’apprendre un langage de haut niveau pour:
Définir ses propres fonctions
Conclusions Manipuler / formater des fichiers rapidement
Liste d’outils pour le Développer rapidement. Tester des idées.
calcul et l’analyse de
données
Modules du projet Scipy
Apprentissage très rapide, coder est agréable
.
Intégration de code C et fortran
Exécution suffisamment rapide
Réutilisation du code simple
Aujourd’hui: remplace 99.9% du C et 80% du R (subsiste
pour plot + packages spécifiques)

Bertrand Servin / Introduction à python Mars 2014 6.


Philosophie
Introduction

Le langage
Exécution d’un programme python
Types de données
Les principes
Fonctions de base
Définir ses propres fonctions
Conclusions
There should be one – and preferably only one – obvious way to do it
Liste d’outils pour le Beautiful is better than ugly
calcul et l’analyse de
données
Modules du projet Scipy
Explicit is better than implicit
.
Intégration de code C et fortran
Simple is better than complex
Complex is better than complicated
Readability counts

Bertrand Servin / Introduction à python Mars 2014 7.


Plan
Introduction

Le langage
1 Introduction
Exécution d’un programme python
Types de données
Fonctions de base
2 Le langage
Définir ses propres fonctions
Conclusions
Exécution d’un programme python
Liste d’outils pour le Types de données
calcul et l’analyse de
données
Fonctions de base
Modules du projet Scipy
Intégration de code C et fortran
Définir ses propres fonctions
.
Conclusions
3 Liste d’outils pour le calcul et l’analyse de données
Modules du projet Scipy
Intégration de code C et fortran

Bertrand Servin / Introduction à python Mars 2014 8.


Plan
Introduction

Le langage
1 Introduction
Exécution d’un programme python
Types de données
Fonctions de base
2 Le langage
Définir ses propres fonctions
Conclusions
Exécution d’un programme python
Liste d’outils pour le Types de données
calcul et l’analyse de
données
Fonctions de base
Modules du projet Scipy
Intégration de code C et fortran
Définir ses propres fonctions
.
Conclusions
3 Liste d’outils pour le calcul et l’analyse de données
Modules du projet Scipy
Intégration de code C et fortran

Bertrand Servin / Introduction à python Mars 2014 9.


Lancer un programme python
Introduction Principe
Le langage
Exécution d’un programme python
Types de données Ecrire une suite d’instruction dans un fichier texte programme.py.
Fonctions de base
Définir ses propres fonctions
Conclusions print 'Hello World '
Liste d’outils pour le
calcul et l’analyse de
données
Exécuter python programme.py
Modules du projet Scipy
Intégration de code C et fortran
.

Déroulement
L’interpréteur python compile programme.py en un bytecode (indépendant
du système)
Le bytecode est exécuté par une Machine Virtuelle.

Bertrand Servin / Introduction à python Mars 2014 10.


Quelques remarques sur ce
fonctionnement
Introduction

Le langage
Exécution d’un programme python
Types de données Pas d’étape de compilation explicite : l’environnement d’exécution et de
Fonctions de base
Définir ses propres fonctions
développement sont les mêmes.
Conclusions

Liste d’outils pour le


Le bytecode n’est pas du langage machine: peut être plus lent que du code
calcul et l’analyse de
données
compilé
.
Modules du projet Scipy
Intégration de code C et fortran
Mais le code n’est pas toujours réinterprété non plus. Pour des modules (cf
plus loin), python utilisera le byte-code directement sans passer par l’étape
de compilation.
Typiquement plus rapide qu’un langage interprété

Bertrand Servin / Introduction à python Mars 2014 11.


Plan
Introduction

Le langage
1 Introduction
Exécution d’un programme python
Types de données
Fonctions de base
2 Le langage
Définir ses propres fonctions
Conclusions
Exécution d’un programme python
Liste d’outils pour le Types de données
calcul et l’analyse de
données
Fonctions de base
Modules du projet Scipy
Intégration de code C et fortran
Définir ses propres fonctions
.
Conclusions
3 Liste d’outils pour le calcul et l’analyse de données
Modules du projet Scipy
Intégration de code C et fortran

Bertrand Servin / Introduction à python Mars 2014 12.


Les nombres
Introduction
Types
Le langage
Exécution d’un programme python
Types de données
Fonctions de base
Entiers (dimension arbitraire): 3486, -12, 999999999999L
Définir ses propres fonctions
Conclusions Réels (précision dépend de l’architecture) : 3.2, 2.5e-10, 4e6
Liste d’outils pour le
calcul et l’analyse de
Complexes : 3+4j, 5J
données
Modules du projet Scipy Octets, Hexadécimaux : 0177, 0xFF
Intégration de code C et fortran
.

Opérateurs : +, *, >>, **, /, % ...


Fonctions : pow, abs, round, ...
Modules : math (log, cos, gamma, pi ...) , random (randint,
gauss, sample, shuffle ...)

Bertrand Servin / Introduction à python Mars 2014 13.


Chaînes de caractères (Strings)
Introduction
Écriture
Le langage
Exécution d’un programme python
Types de données Simple guillemets: 'Carmen'
Fonctions de base
Définir ses propres fonctions
Conclusions
Double guillemets: "L'amour est l'enfant de bohème"
Liste d’outils pour le Échappement:'L\' amour est l\'enfant de bohème\n'
calcul et l’analyse de
données
Modules du projet Scipy
Triple guillemens:'''...opéra tragique en quatre actes de Georges
.
Intégration de code C et fortran
Bizet...''',"""...un des rôles les plus exigeants du
répertoire..."""

Les formes simple et double guillemets sont les plus utilisées.


La forme triple permet d’écrire du texte sur plusieurs lignes (inclusion de
scripts, documentation ...).
Bertrand Servin / Introduction à python Mars 2014 14.
Chaînes de caractères (Strings)
Introduction

Le langage
Exécution d’un programme python
Types de données
Fonctions de base Actions
Définir ses propres fonctions
Conclusions

Liste d’outils pour le Taille : len('Carmen')


calcul et l’analyse de
données Concaténation : "L'amour " + "est l'enfant de bohème"
Modules du projet Scipy

.
Intégration de code C et fortran
Répétition : "Il n'a " + 'jamais '*2 + 'connu de loi'
Exemples de surcharge d’opérateurs

Bertrand Servin / Introduction à python Mars 2014 15.


Chaînes de caractères (Strings)
Introduction Actions
Le langage
Exécution d’un programme python
Types de données Les strings sont des séquences
Fonctions de base
Définir ses propres fonctions
Conclusions
>>> titre ='Carmen '
Liste d’outils pour le
>>> for c in titre : print c,
calcul et l’analyse de ...
données
Modules du projet Scipy C a r m e n
Intégration de code C et fortran
.

Autre utilisation de l’opérateur in, recherche:


>>> 'b' in titre
False
>>> 'a' in titre
True

Bertrand Servin / Introduction à python Mars 2014 16.


Chaînes de caractères (Strings)
Introduction
Indexation, sous-chaînes
Le langage
Exécution d’un programme python
Types de données En tant que séquence, on peut accéder aux éléments par index
Fonctions de base
Définir ses propres fonctions
Conclusions
Les index sont utilisés ’à la C’ de 0 à (n-1)
Liste d’outils pour le Il est possible d’indéxer en partant de la fin avec des indices négatifs:
calcul et l’analyse de
données
Modules du projet Scipy
>>> titre [0]
.
Intégration de code C et fortran
'C'
>>> titre [ -1]
'n'

On peut accéder à une sous-chaine par tranchage (slicing):


>>> titre [1:5] ## ou titre [1: -1]
'arme '
Bertrand Servin / Introduction à python Mars 2014 17.
Chaînes de caractères (Strings)
Introduction

Le langage
Exécution d’un programme python
Les chaînes ne sont pas modifiables (immutable):
Types de données
Fonctions de base >>> titre [0]= 'B'
Définir ses propres fonctions
Conclusions Traceback (most recent call last ):
Liste d’outils pour le File "<stdin >", line 1, in <module >
calcul et l’analyse de
données
TypeError : 'str ' object does not support item assignment
Modules du projet Scipy

.
Intégration de code C et fortran
Pour modifier, il faut créer :
>>> titre ='B'+titre [1:]
>>> titre
'Barmen '

Bertrand Servin / Introduction à python Mars 2014 18.


Chaînes de caractères (Strings)
Introduction
Formatage
Le langage
Exécution d’un programme python
Types de données
Utilisation du caractère % pour formater des chaînes de caractères. Similaire à
Fonctions de base
Définir ses propres fonctions
la fonction C sprintf
Conclusions
>>> auteur ='Georges Bizet '
Liste d’outils pour le
calcul et l’analyse de >>> annee =1875
données
Modules du projet Scipy
>>> '%s, %s (%d)' % (titre ,auteur , annee)
.
Intégration de code C et fortran 'Carmen , Georges Bizet (1875) '
Ou utiliser la méthode format (compat. python3):
>>> '{0}, {1} ({2}) '. format (titre ,auteur , annee )
'Carmen , Georges Bizet (1875) '
qui permet de nombreuses subtilités.

Bertrand Servin / Introduction à python Mars 2014 19.


Chaînes de caractères (Strings)
Introduction
Méthodes
Le langage

Comptage : '0001100110'.count('0') → 6
Exécution d’un programme python
Types de données
Fonctions de base
Définir ses propres fonctions
Conclusions
Recherche : opérateur in méthodes find , index
Liste d’outils pour le >>> s='genes .csv '
calcul et l’analyse de
données >>> '.' in s , s.find('.'), s.index('.')
Modules du projet Scipy
Intégration de code C et fortran
(True , 5, 5)
.
>>> ',' in s , s.find(',')
(False , -1)
>>> s.index (',')
Traceback (most recent call last ):
File "<stdin >", line 1, in <module >
ValueError : substring not found

Bertrand Servin / Introduction à python Mars 2014 20.


Chaînes de caractères (Strings)
Introduction
Méthodes: parsing de texte
Le langage
Exécution d’un programme python
Types de données Deux méthodes principales : split et join
Fonctions de base
Définir ses propres fonctions
Conclusions
>>> gene='14 ,14231363 ,14232541 , MC1R '
Liste d’outils pour le
>>> gene. split (',') ## renvoie une "list"
calcul et l’analyse de ['14 ', '14231363 ', '14232541 ', 'MC1R ']
données
Modules du projet Scipy
>>> items=gene. split (',')
.
Intégration de code C et fortran
>>> '\t'.join( items ) ## conc. les éléments avec la chaîne \t
'14\ t14231363 \ t14232541 \ tMC1R '
>>> print '\t'.join( items)
14 14231363 14232541 MC1R
>>> gene. replace (',','\t') ## plus simple :)
'14\ t14231363 \ t14232541 \ tMC1R '

Bertrand Servin / Introduction à python Mars 2014 21.


Listes
Introduction

Le langage
Exécution d’un programme python
Types de données
Fonctions de base
Définir ses propres fonctions Le type list est un des types les plus utilisés en python
Conclusions

Liste d’outils pour le Collection ordonnée (de gauche à droite) d’éléments


calcul et l’analyse de
données De taille quelconque, peut grandir, rétrécir, être modifiée, être encapsulée
Modules du projet Scipy

.
Intégration de code C et fortran (liste de listes de listes)
Actions similaires à celles vues sur les chaînes

Bertrand Servin / Introduction à python Mars 2014 22.


Listes par l’exemple
Introduction

Le langage >>> gene='14 ,14231363 ,14232541 , MC1R '


Exécution d’un programme python
Types de données
>>> L=gene. split (',')
Fonctions de base
Définir ses propres fonctions
>>> L[3]= 'ENSOARG00000002239 ' ### une liste est modifiable
Conclusions >>> L
Liste d’outils pour le ['14 ', '14231363 ', '14232541 ', 'ENSOARG00000002239 ']
calcul et l’analyse de
données >>> L. append ('MC1R ')
Modules du projet Scipy
Intégration de code C et fortran
>>> L
.
['14 ', '14231363 ', '14232541 ', 'ENSOARG00000002239 ', 'MC1R ']
>>> L[1]= int(L[1]) ## conversion de string vers integer
>>> L[2]= int(L[2])
>>> L ## les éléments sont de types différents
['14 ', 14231363 , 14232541 , 'ENSOARG00000002239 ', 'MC1R ']

Bertrand Servin / Introduction à python Mars 2014 23.


Listes par l’exemple
Introduction

Le langage
Exécution d’un programme python
>>> L
Types de données
Fonctions de base
['14 ', 14231363 , 14232541 , 'ENSOARG00000002239 ', 'MC1R ']
Définir ses propres fonctions >>> del L[3] ## suppression
Conclusions
>>> L
Liste d’outils pour le
calcul et l’analyse de ['14 ', 14231363 , 14232541 , 'MC1R ']
données
Modules du projet Scipy
>>> L2
.
Intégration de code C et fortran ['13 ', 63237431 , 63242627 , 'ASIP ']
>>> genes =[L,L2] ### liste de listes
>>> genes
[[ '14 ', 14231363 , 14232541 , 'MC1R '],
['13 ', 63237431 , 63242627 , 'ASIP ']]

Bertrand Servin / Introduction à python Mars 2014 24.


Listes par l’exemple
Introduction

Le langage
>>> new_gene
Exécution d’un programme python ['6', 70189729 , 70234612 , 'KIT ']
Types de données
Fonctions de base
>>> genes. append ( new_gene )
Définir ses propres fonctions
Conclusions
>>> genes
Liste d’outils pour le
[[ '14 ', 14231363 , 14232541 , 'MC1R '],
calcul et l’analyse de ['13 ', 63237431 , 63242627 , 'ASIP '],
données
Modules du projet Scipy ['6', 70189729 , 70234612 , 'KIT ']]
.
Intégration de code C et fortran
>>> mygene = genes .pop () ## renvoie et supprime le dernier élémen
>>> mygene
['6', 70189729 , 70234612 , 'KIT ']
>>> genes
[[ '14 ', 14231363 , 14232541 , 'MC1R '],
['13 ', 63237431 , 63242627 , 'ASIP ']]

Bertrand Servin / Introduction à python Mars 2014 25.


Et aussi
Introduction
List Comprehension Un outil puissant permettant de générer de nouvelles
Le langage
Exécution d’un programme python listes avec une syntaxe simple.
Types de données
Fonctions de base
Définir ses propres fonctions
### Un code horriblement long
Conclusions >>> glen =[]
Liste d’outils pour le >>> for g in genes :
calcul et l’analyse de
données ... glen. append (g[2]-g[1])
Modules du projet Scipy
Intégration de code C et fortran
### Un code beaucoup plus court et plus explicite :)
.
>>> glen =[ g[2] -g[1] for g in genes ]
Tuples : ”Listes non modifiables”, pour stocker une collection d’objet en
garantissant son intégrité. Ils n’ont que deux méthodes : count et index. Ils
s’écrivent en général avec des parenthèses :
('Carmen', 'Georges Bizet', 1875)

Bertrand Servin / Introduction à python Mars 2014 26.


Dictionnaires
Introduction
Liste: collection d’objets ordonnée, accès par indice : L[0]
Le langage
Exécution d’un programme python
Types de données
Dictionnaire: collection d’objets non ordonnée, accès par clef : R['D2']
Fonctions de base
Définir ses propres fonctions
Les clefs doivent être de type immutable : nombres, strings, ...
Conclusions

Liste d’outils pour le


calcul et l’analyse de
>>> genes ## rappel
données [[ '14 ', 14231363 , 14232541 , 'MC1R '],
.
Modules du projet Scipy
Intégration de code C et fortran
['13 ', 63237431 , 63242627 , 'ASIP '],
['6', 70189729 , 70234612 , 'KIT ']]
>>> glen ={} ## dictionnaire vide
>>> for g in genes :
... glen[g[ -1]]=g[2]-g[1] ## clef = nom du gène
>>> glen
{'MC1R ': 1178 , 'KIT ': 44883 , 'ASIP ': 5196}

Bertrand Servin / Introduction à python Mars 2014 27.


Dictionnaires par l’exemple
Introduction

Le langage
>>> glen.keys ()
Exécution d’un programme python ['MC1R ', 'KIT ', 'ASIP ']
Types de données
Fonctions de base
>>> glen. values ()
Définir ses propres fonctions
Conclusions
[1178 , 44883 , 5196]
Liste d’outils pour le
>>> glen. items () ## liste de tuples
calcul et l’analyse de [( 'MC1R ', 1178) , ('KIT ', 44883) , ('ASIP ', 5196)]
données
Modules du projet Scipy >>> len(glen)
.
Intégration de code C et fortran
3
>>> for g in glen.keys ():
... print g,'\t',glen[g]
MC1R 1178
KIT 44883
ASIP 5196

Bertrand Servin / Introduction à python Mars 2014 28.


Dictionnaires par l’exemple
Introduction

Le langage
Exécution d’un programme python
Types de données
Fonctions de base
>>> glen. items () ## rappel
Définir ses propres fonctions
Conclusions
[( 'MC1R ', 1178) , ('KIT ', 44883) , ('ASIP ', 5196)]
Liste d’outils pour le
## création a partir d'une liste de tuples
calcul et l’analyse de >>> dict(glen. items ())
données
Modules du projet Scipy {'MC1R ': 1178 , 'ASIP ': 5196 , 'KIT ': 44883}
.
Intégration de code C et fortran
## Warning : Ça commence à devenir moche :(
>>> dict ([ (g[-1],g[2]-g[1]) for g in genes ])
{'MC1R ': 1178 , 'KIT ': 44883 , 'ASIP ': 5196}

Bertrand Servin / Introduction à python Mars 2014 29.


Fichiers
Introduction

Le langage
Exécution d’un programme python Le type d’objet file sert à manipuler les fichiers dans des programmes
Types de données
Fonctions de base python.
Définir ses propres fonctions
Conclusions Ces objets sont créés avec la fonction open.
Liste d’outils pour le
calcul et l’analyse de Ils fournissent des méthodes pour travailler sur les fichiers
données
Modules du projet Scipy

.
Intégration de code C et fortran >>> input=open('small_gene_list .csv ','r') ## r: read , par défau
>>> input=open('small_gene_list .csv ')
>>> input. close ()
>>> output =open('/tmp/ small_gene_list .tsv ','w') ## write
>>> output =open('/tmp/ small_gene_list .tsv ','a') ## append

Bertrand Servin / Introduction à python Mars 2014 30.


Lecture de fichiers
Introduction
>>> input=open('small_gene_list .csv ','r')
Le langage
Exécution d’un programme python
Types de données Lecture de l’ensemble du fichier:
Fonctions de base
Définir ses propres fonctions input.read() Une seule chaîne
Conclusions
input.readlines() Une liste de lignes (chaînes)
Liste d’outils pour le
calcul et l’analyse de
données
>>> input =open('small_gene_list .csv ')
Modules du projet Scipy >>> input .read ()
Intégration de code C et fortran
.
'14 ,14231363 ,14232541 , MC1R\n13 ,63237431 ,63242627 , ASIP\n6 ,7018
>>> input =open('small_gene_list .csv ')
>>> input . readlines ()
['14 ,14231363 ,14232541 , MC1R\n',
'13 ,63237431 ,63242627 , ASIP\n',
'6 ,70189729 ,70234612 , KIT\n']

Bertrand Servin / Introduction à python Mars 2014 31.


Lecture de fichiers
Introduction

Le langage Lecture d’une partie du fichier:


Exécution d’un programme python
Types de données
input.read(N) Lit N caractères
Fonctions de base input.readline() lit une ligne
Définir ses propres fonctions
Conclusions

Liste d’outils pour le


>>> input .read (10)
calcul et l’analyse de '14 ,1423136 '
données
Modules du projet Scipy
>>> input . readline ()
.
Intégration de code C et fortran
'14 ,14231363 ,14232541 , MC1R\n'

Parcourir ligne par ligne:


>>> for ligne in input:
... pass ## ici , on ne fait rien.

Bertrand Servin / Introduction à python Mars 2014 32.


Écriture de fichiers
Introduction

Le langage output =open('/tmp/toto ','w')


Exécution d’un programme python
Types de données
Fonctions de base
Définir ses propres fonctions
Méthodes d’un objet file:
Conclusions
output.write(S) : Écrit la chaîne S dans output
Liste d’outils pour le
calcul et l’analyse de
output.writelines(L) : Écrit la liste de chaines L dans output
données
Modules du projet Scipy Utilisation du mot clef print:
Intégration de code C et fortran
.

print >> output , S ## ajoute un \n final


print >> output , S, ## sans \n ajouté
Note: Incompatible avec python3 qui introduit une fonction de base
print() en remplacement.

Bertrand Servin / Introduction à python Mars 2014 33.


Fichiers compressés , archives
gzip:
import gzip
Introduction
f = gzip.open('small_gene_list .csv.gz ')
Le langage
Exécution d’un programme python
file_content = f.read ()
Types de données
Fonctions de base
Définir ses propres fonctions
bz2
Conclusions

Liste d’outils pour le


import bz2
calcul et l’analyse de f = bz2. BZ2File ('small_gene_list .csv.bz2 ')
données
Modules du projet Scipy
file_content = f.read ()
Intégration de code C et fortran
.

Dans une archive tar:


import tarfile
myarch = tarfile .open('monarchive .tar.bz2 ') ## bzip 'ed archiv
f = myarch . extractfile ('small_gene_list .csv ')
file_content = f.read ()

Bertrand Servin / Introduction à python Mars 2014 34.


Plan
Introduction

Le langage
1 Introduction
Exécution d’un programme python
Types de données
Fonctions de base
2 Le langage
Définir ses propres fonctions
Conclusions
Exécution d’un programme python
Liste d’outils pour le Types de données
calcul et l’analyse de
données
Fonctions de base
Modules du projet Scipy
Intégration de code C et fortran
Définir ses propres fonctions
.
Conclusions
3 Liste d’outils pour le calcul et l’analyse de données
Modules du projet Scipy
Intégration de code C et fortran

Bertrand Servin / Introduction à python Mars 2014 35.


help
Introduction Python dispose d’une aide en ligne consultable à partir de l’interpréteur en
Le langage
Exécution d’un programme python
ligne de commande (à la R):
Types de données
Fonctions de base help() ouvre une session interactive pour consulter l’aide. Rubriques:
Définir ses propres fonctions
Conclusions
modules, keywords, topics
Liste d’outils pour le
calcul et l’analyse de
Pour les modules, fonctions, méthodes help(item):
données
Modules du projet Scipy >>> import random
.
Intégration de code C et fortran
>>> help( random ) ## importer le module pour consulter
>>> help(abs)
>>> help(''. format )

Bertrand Servin / Introduction à python Mars 2014 36.


Fonctions de conversion
Introduction float(x) Convertit la chaine ou le nombre x en réel.
Le langage
Exécution d’un programme python
>>> float ("1.32 e6") ## ou float (1320000)
Types de données
Fonctions de base
1320000.0
Définir ses propres fonctions
Conclusions int(x) Convertit la chaine ou le nombre x en entier. Arrondit à l’entier
Liste d’outils pour le inférieur si x est un réel
calcul et l’analyse de
données >>> int("42")
Modules du projet Scipy

.
Intégration de code C et fortran 42
>>> int (2.8)
2
str(o) Renvoie une chaine de caractère repésentant l’objet o.
>>> str (10)
'10 '

Bertrand Servin / Introduction à python Mars 2014 37.


range, xrange
Introduction

Le langage range permet de créer des listes d’entiers successifs.


Exécution d’un programme python
Types de données La fonction xrange crée un générateur: elle ne construit pas la liste mais
Fonctions de base
Définir ses propres fonctions renvoie les éléments successivement.
Conclusions

Liste d’outils pour le


calcul et l’analyse de >>> range (5)
données
Modules du projet Scipy
[0, 1, 2, 3, 4]
.
Intégration de code C et fortran >>> range (1 ,5)
[1, 2, 3, 4]
>>> range (0 ,6 ,2)
[0, 2, 4]
>>> xrange (0 ,6 ,2)
xrange (0, 6, 2)

Bertrand Servin / Introduction à python Mars 2014 38.


range, xrange
Introduction

Le langage
Exécution d’un programme python
>>> L= range (100000000000) ## trop gros passera pas
Types de données
Fonctions de base
Traceback (most recent call last ):
Définir ses propres fonctions File "<stdin >", line 1, in <module >
Conclusions
MemoryError
Liste d’outils pour le
calcul et l’analyse de >>> L= xrange (100000000000)
données
Modules du projet Scipy
>>> for x in L:
.
Intégration de code C et fortran if x < 10:
print x,
else:
break
0 1 2 3 4 5 6 7 8 9

Bertrand Servin / Introduction à python Mars 2014 39.


sorted
Introduction

Le langage
Exécution d’un programme python Fonction générique de tri de liste (d’iterables)
Types de données
Fonctions de base
Définir ses propres fonctions
>>> sorted (glen.keys ()) ## ['ASIP ', 'KIT ', 'MC1R ']
Conclusions >>> sorted (glen. values ()) ## [1178 , 5196 , 44883]
Liste d’outils pour le >>> sorted (glen. values (), reverse =True) ## [44883 , 5196 , 1178]
calcul et l’analyse de
données
Modules du projet Scipy Arguments optionnels:
Intégration de code C et fortran
.

cmp Spécifie une fonction de comparaison entre deux éléments.


key Spécifie une fonction calculant une clef associée à un élément
sur laquel le tri s’effectue.

Bertrand Servin / Introduction à python Mars 2014 40.


Plan
Introduction

Le langage
1 Introduction
Exécution d’un programme python
Types de données
Fonctions de base
2 Le langage
Définir ses propres fonctions
Conclusions
Exécution d’un programme python
Liste d’outils pour le Types de données
calcul et l’analyse de
données
Fonctions de base
Modules du projet Scipy
Intégration de code C et fortran
Définir ses propres fonctions
.
Conclusions
3 Liste d’outils pour le calcul et l’analyse de données
Modules du projet Scipy
Intégration de code C et fortran

Bertrand Servin / Introduction à python Mars 2014 41.


Syntaxe de base
Introduction

Le langage Une fonction est définie avec le mot clef def. Il est suivi du nom de la fonction
Exécution d’un programme python
Types de données et d’une liste entre () de ses arguments.
Fonctions de base
Définir ses propres fonctions
Conclusions
>>> def droite (x): # Ecrit le résultat de 2x+1
Liste d’outils pour le
... """ Ecrit le résultat de 2x+1 """
calcul et l’analyse de ... print 2*x+1
données
Modules du projet Scipy
>>> x= droite (2)
.
Intégration de code C et fortran
5
>>> x
>>> print x
None
>>> help( droite ) ## grace à la docstring

Bertrand Servin / Introduction à python Mars 2014 42.


Syntaxe
Introduction

Le langage
Exécution d’un programme python return
Types de données
Fonctions de base
Définir ses propres fonctions
Le mot clef return permet de renvoyer la valeur de la fonction. S’il est omis, ou
Conclusions n’est pas suivi d’une expression, la fonction renvoie la valeur None.
Liste d’outils pour le
calcul et l’analyse de >>> def droite (x): # Renvoie le résultat de 2x+1
données
Modules du projet Scipy ... """ Renvoie le résultat de 2x+1 """
.
Intégration de code C et fortran
... return 2*x+1
>>> x= droite (2)
>>> x
5

Bertrand Servin / Introduction à python Mars 2014 43.


Arguments nommés et valeurs par
défaut
Introduction il est possible de définir des valeurs par défaut pour certains arguments d’une
Le langage
Exécution d’un programme python
fonction. Ces arguments nommés doivent être donnés après les autres (dits
Types de données
Fonctions de base
positionnels).
Définir ses propres fonctions
Conclusions >>> def droite (x,a=2,b=1):
Liste d’outils pour le ... """ Renvoie le résultat de a*x+b"""
calcul et l’analyse de
données
... return a*x+b
Modules du projet Scipy >>> droite (2) ## 5
Intégration de code C et fortran
.
>>> droite (2,a=1) ## 3
>>> droite (2,b=2,a=3) ## 8 ordre b,a n'import pas
>>> droite (b=2,a=3,x=2) ## ici non plus car nommés
>>> droite (b=2,a=3 ,2) ## aie
File "<stdin >", line 1
SyntaxError : non - keyword arg after keyword arg

Bertrand Servin / Introduction à python Mars 2014 44.


Expressions Lambda
Introduction

Le langage De petites fonctions anonymes peuvent être créées en utilisant le mot clef
Exécution d’un programme python
Types de données lambda. Elles ne doivent être constituées que d’une seule expression.
Fonctions de base
Définir ses propres fonctions
Conclusions Exemple: Tri des items d’un dictionnaire
Liste d’outils pour le
calcul et l’analyse de
données >>> glen. items ()
Modules du projet Scipy
[( 'ASIP ', 5196) , ('MC1R ', 1178) , ('KIT ', 44883)]
Intégration de code C et fortran
.
>>> sorted (glen. items (), key= lambda i: i[0])
[( 'ASIP ', 5196) , ('KIT ', 44883) , ('MC1R ', 1178)]
>>> sorted (glen. items (), key= lambda i: i[1])
[( 'MC1R ', 1178) , ('ASIP ', 5196) , ('KIT ', 44883)]

Bertrand Servin / Introduction à python Mars 2014 45.


Plan
Introduction

Le langage
1 Introduction
Exécution d’un programme python
Types de données
Fonctions de base
2 Le langage
Définir ses propres fonctions
Conclusions
Exécution d’un programme python
Liste d’outils pour le Types de données
calcul et l’analyse de
données
Fonctions de base
Modules du projet Scipy
Intégration de code C et fortran
Définir ses propres fonctions
.
Conclusions
3 Liste d’outils pour le calcul et l’analyse de données
Modules du projet Scipy
Intégration de code C et fortran

Bertrand Servin / Introduction à python Mars 2014 46.


Interface interactive
Introduction

Le langage
Exécution d’un programme python
Types de données
Fonctions de base
Définir ses propres fonctions
Conclusions
$ python
Liste d’outils pour le
calcul et l’analyse de
Python 2.7.6 (default , Mar 8 2014 , 08:59:18)
données ....
.
Modules du projet Scipy
Intégration de code C et fortran
>>> print " Hello World "
Hello World
>>>

Bertrand Servin / Introduction à python Mars 2014 47.


Script
Introduction

Le langage
Exécution d’un programme python
script.py
Types de données
Fonctions de base
Définir ses propres fonctions #!/ usr/bin/env python
Conclusions
print " Hello World "
Liste d’outils pour le
calcul et l’analyse de
données
Modules du projet Scipy

.
Intégration de code C et fortran Execution
python script .py
chmod +x script .py
./ script .py

Bertrand Servin / Introduction à python Mars 2014 48.


Programme
Introduction
bonjour.py
Le langage
Exécution d’un programme python
Types de données
Fonctions de base
def dis_bonjour ():
Définir ses propres fonctions ''' Dis Bonjour '''
Conclusions
print 'Hello World '
Liste d’outils pour le
calcul et l’analyse de
données
Modules du projet Scipy
def main ():
.
Intégration de code C et fortran ''' Fonction principale '''
dis_bonjour ()

if __name__ == '__main__ ':


# vaut True si éxécuté avec: python bonjour .py
main ()

Bertrand Servin / Introduction à python Mars 2014 49.


Module
Introduction

Le langage
Exécution d’un programme python Importer tout le module
Types de données
Fonctions de base
Définir ses propres fonctions
Conclusions
import bonjour
Liste d’outils pour le
bonjour . dis_bonjour ()
calcul et l’analyse de
données

.
Modules du projet Scipy
Intégration de code C et fortran
Importer un sous ensemble de fonctions

from bonjour import dis_bonjour


dis_bonjour ()

Bertrand Servin / Introduction à python Mars 2014 50.


Pour continuer
Introduction

Le langage
Exécution d’un programme python Syntaxe
Types de données
Fonctions de base Autres types
Définir ses propres fonctions
Conclusions
Programmation Objet
Liste d’outils pour le
calcul et l’analyse de Exceptions
données
Modules du projet Scipy
Intégration de code C et fortran
Modules de la bibliothèque standard
.

Pour continuer à découvrir, apprendre les bases du langage:


http://docs.python.org/2/
et en particulier le tutorial:
http://docs.python.org/2/tutorial/index.html

Bertrand Servin / Introduction à python Mars 2014 51.


Plan
Introduction

Le langage
1 Introduction
Exécution d’un programme python
Types de données
Fonctions de base
2 Le langage
Définir ses propres fonctions
Conclusions
Exécution d’un programme python
Liste d’outils pour le Types de données
calcul et l’analyse de
données
Fonctions de base
Modules du projet Scipy
Intégration de code C et fortran
Définir ses propres fonctions
.
Conclusions
3 Liste d’outils pour le calcul et l’analyse de données
Modules du projet Scipy
Intégration de code C et fortran

Bertrand Servin / Introduction à python Mars 2014 52.


Plan
Introduction

Le langage
1 Introduction
Exécution d’un programme python
Types de données
Fonctions de base
2 Le langage
Définir ses propres fonctions
Conclusions
Exécution d’un programme python
Liste d’outils pour le Types de données
calcul et l’analyse de
données
Fonctions de base
Modules du projet Scipy
Intégration de code C et fortran
Définir ses propres fonctions
.
Conclusions
3 Liste d’outils pour le calcul et l’analyse de données
Modules du projet Scipy
Intégration de code C et fortran

Bertrand Servin / Introduction à python Mars 2014 53.


Numpy
Introduction

Le langage
Exécution d’un programme python Numpy est un ensemble de modules (package) dédié au calcul numérique en
Types de données
Fonctions de base
python
Définir ses propres fonctions
Conclusions Basé sur un nouveau type d’objet : le tableau (array) multidimensionnel
Liste d’outils pour le
calcul et l’analyse de
homogène. Il est associé à un type (entier, flottant, complexe ...).
données
Modules du projet Scipy
Des modules numpy fournissent des fonctions pour le calcul numérique, en
.
Intégration de code C et fortran particulier:
Algèbre Linéaire (numpy.linalg): calcul matriciel, décompositions, résolution
d’équations
Echantillonage aléatoire (numpy.random): Générateurs de nombres aléatoires,
principales distributions, permutations, mélanges

Bertrand Servin / Introduction à python Mars 2014 54.


Autres éléments du projet scipy
Introduction

Le langage Bibliotheque Scipy Basé sur numpy


Exécution d’un programme python
Types de données
Etend le panel de fonction de numpy
Fonctions de base
Définir ses propres fonctions
scipy.linalg = extension de numpy.linalg
Conclusions
scipy.stats : accès à l’ensemble des distributions
Liste d’outils pour le
calcul et l’analyse de statistiques /tests ...
données
Modules du projet Scipy Shell ipython Une interface en ligne de commande améliorée, qui inclut
Intégration de code C et fortran
.
d’emblée les modules numpy et permet d’exécuter des
commandes shell (ls, cd ...)
matplotlib Une bibliothèque de représentation graphique 2D. Peut être
utilisée de manière interactive (dans ipython) ou au sein de
programmes python /numpy.

Bertrand Servin / Introduction à python Mars 2014 55.


Scikits
Introduction

Le langage
Exécution d’un programme python Packages pour certaines analyses plus spécialisées. En particulier, pour
Types de données
Fonctions de base l’analyse de données génétiques on peut mentionner les packages :
Définir ses propres fonctions
Conclusions scikit-learn: Machine Learning. Stable.
Liste d’outils pour le
calcul et l’analyse de
classification (SVM, random forest ...)
données clustering : k-means, hclust, melange gaussiens ...
Modules du projet Scipy

.
Intégration de code C et fortran regression : ridge, lasso, elastic net, Automatic Relevance Determination ...
Reduction de dimension : PCA, Analyse factorielle
scikit-statsmodel : en developpement, : Modèles linéaires et linéaires
généralisés, ANOVA, tests statistiques ...

Bertrand Servin / Introduction à python Mars 2014 56.


Plan
Introduction

Le langage
1 Introduction
Exécution d’un programme python
Types de données
Fonctions de base
2 Le langage
Définir ses propres fonctions
Conclusions
Exécution d’un programme python
Liste d’outils pour le Types de données
calcul et l’analyse de
données
Fonctions de base
Modules du projet Scipy
Intégration de code C et fortran
Définir ses propres fonctions
.
Conclusions
3 Liste d’outils pour le calcul et l’analyse de données
Modules du projet Scipy
Intégration de code C et fortran

Bertrand Servin / Introduction à python Mars 2014 57.


Ecrire des extensions en C
Introduction

Le langage
Exécution d’un programme python Python fournit une interface permettant :
Types de données
Fonctions de base d’écrire des extensions en C
Définir ses propres fonctions
Conclusions d’inclure l’interpréteur dans un programme C.
Liste d’outils pour le Les mains dans le camboui ...
calcul et l’analyse de
données
Modules du projet Scipy
Cython est un logiciel permettant de faciliter l’écriture d’extensions C.
.
Intégration de code C et fortran Convertit automatiquement du code python en code C
Fournit une extension du langage python pour générer du code C plus efficace.
Compatible openMP pour la parallélisation fine du code.
pythran : Meme objectif que cython. Génère du C++

Bertrand Servin / Introduction à python Mars 2014 58.


Ecrire des extensions en Fortran
Introduction

Le langage
Exécution d’un programme python
Types de données
Fonctions de base
Définir ses propres fonctions
Conclusions F2py est un ensemble d’outils permettant de construire des interfaces entre
Liste d’outils pour le
calcul et l’analyse de
fortran et python. Fait partie du projet scipy, dépend de numpy.
données
Modules du projet Scipy
Construire des modules codés en fortran utilisables en python
Intégration de code C et fortran
.
Appeller des fonctions python depuis un code fortran

Bertrand Servin / Introduction à python Mars 2014 59.


Conclusions
Introduction

Le langage
Exécution d’un programme python
Types de données
Python est un langage complet, facile à apprendre
Fonctions de base
Définir ses propres fonctions
Apprentissage progressif:
Conclusions
Interface interactive pour tester /apprendre
Liste d’outils pour le Langage de script pour la manipulation de fichiers
calcul et l’analyse de
données Langage objet pour l’écriture de programmes complets / de bibliothèques
Modules du projet Scipy

.
Intégration de code C et fortran Extension / Optimisation pour le calcul intensif
Packages d’analyse numérique / statistique
Potentiel certain à remplacer R ...
Bon candidat pour l’apprentissage d’un nouveau langage :)

Bertrand Servin / Introduction à python Mars 2014 60.

Vous aimerez peut-être aussi