Vous êtes sur la page 1sur 32

Analyse génomique

fondamentale

E-campus : espace BI423


TD/TP

¢  TD/TP illustrant le cours et programmation


d'un outil de comparaison de séquence (le
Dot-Plot) en langage Python,
¢  Commencent la semaine du 29/01

¢  Présence obligatoire à chaque séance

¢  Ordinateur indispensable à chaque séance


Installation ordinateur

¢  Machine virtuelle
¢  Sur www.cartnum.uvsq.fr

¢  Installation @home

¢  Précision : VM Linux Debian UFR


Sciences Légère (32 ou 64 bits)
Outils informatiques
¢  Automatisation du traitement
¢  On a: ¢  On veut :
l  Un problème l  Des résultats
l  Des données

Trouver le motif « taa » dans


« atgctgaataagtaaggtggtaaa »

Positions : 9, 13, 21
Outils informatiques

¢  Algorithme : description précise des


opérations à faire pour résoudre le problème
¢  Programme : Ecriture d un algorithme dans
un langage compréhensible par l ordinateur.
l  Vocabulaire
l  Syntaxe
l  Représentation des données
Le langage Python

¢  Guido van Rossum (Pays-Bas, 1991)


¢  Open-source, gratuit

¢  Fonctionne sous windows, linux, MacOS …

¢  Facile à apprendre

¢  Très répandu en bio-informatique

¢  Utilisation en mode interactif ou non


Données

¢  Différents types :
l  Nombres entiers : 0 1245 -678
l  Nombres réels (flottants) : 1.5 345.6666 -78.90
l  Chaines de caractères : "J aime la bio-
informatique"  "atgctggata“
l  Valeurs spécifiques : True False None
Opérations sur les nombres
+ (addition) – (soustraction)
* (multiplication) / (division)
Python 2.4 (#60, Nov 30 2004, 11:49:19) [MSC v.1310 32 bit
(Intel)] on win32
Type "copyright", "credits" or "license()" for more
information.

>>> 2+3
5
>>> 3*4
12
>>> 56 / 8
7
A noter

Division est entière si elle est entre 2 entiers,


réelle sinon

>>> 5/2
2
>>> 5.0/2
2.5
Opérations sur les chaines
de caractères
¢  Plusieurs notations :
“Bonjour “ ou bien ‘Bonjour’

¢  Concaténation + Répétition *
>>> 'Bonjour' + "ca va"
'Bonjourca va'
>>> 'Bonjour ' + "ca va"
'Bonjour ca va'
>>> 'Bonjour '*3
'Bonjour Bonjour Bonjour '
Et encore …
¢  Accès aux caractères d une chaine [ ]
>>> "Bonjour"[1]
'o'
>>> "Bonjour"[0]
'B'
>>> "Bonjour"[5]
'u'

Numérotation des caractères à partir de 0

B o n j o u r
0 1 2 3 4 5 6
Et encore …
¢  Extraction de sous-chaine [ : ]
>>> "Bonjour"[0:3]
'Bon'
>>> "Bonjour"[2:]
'njour'
>>> "Bonjour"[:5]
'Bonjo'

B o n j o u r
0 1 2 3 4 5 6

>>> "Bonjour"[2:5]
'njo'
Et encore …

¢  Appartenance d un élément à une chaîne


de caractères

>>> "e" in "aeiouy"


True
>>> "f" in "aeiouy"
False
Les variables
Mémorisation d une valeur sous un nom
particulier

¢  Affectation d  une valeur à une variable = :


>>> adn = "atgggattatagccctgagat"
¢  Accès : le nom de la variable donne l accès à sa
valeur
>>> adn+"gggggggg"
'atgggattatagccctgagatgggggggg
>>> adn[2]
'g'
>>> adn[0:3]
'atg'
Expressions
¢  Assemblage
de constantes, de variables et
d opérateurs.
>>> surface = (largeur * longueur) / 2
Traceback (most recent call last):
File "<pyshell#24>", line 1, in -toplevel-
surface = (largeur * longueur) / 2
NameError: name 'largeur' is not defined
¢  Les éléments doivent être définis !
>>> largeur = 5
>>> longueur = 6
>>> surface = (largeur * longueur) / 2
>>> surface
15
D autres opérateurs …
¢  Comparaison :
== != < <= > >=
¢  Logique :
and or not
>>> 4+4 == 8
True
>>> x = 23
>>> x >= 10 and x < 35
True
Un programme

¢  Suite d instructions enregistrées dans un


fichier.
¢  Exécuter ce programme sur différentes
données.
¢  Saisir les instructions, les enregistrer puis
les exécuter.
Saisie et exécution d un
programme
1.  Appeler un éditeur de texte (geany)
2.  Saisir le programme (taper les lignes de
codes)
3.  Exécuter le programme (bouton exécuter
dans geany).
Gestion des données

Ecriture Programme

Lecture
Lecture : fonction input
input(chaine) :
l  Litune expression python correcte
l  Avec les mêmes règles

>>> x = input ("Entrez un nombre :")


Entrez un nombre :12
>>> x
12
>>> x = input ("Entrez une chaine de
caractères :")
Entrez une chaine de caractères : "il fait beau"
>>> x
'il fait beau'
Un programme (encore)

¢  Suited instructions exécutées les unes à la


suite des autres . Une ligne = une instruction.

NbeA = input ("Nombre de A dans la séquence ? ")


Longueur = input ("Longueur de la séquence ?")
pourcentage = (NbeA / Longueur) * 100
print "il y a " ,pourcentage ," % de A dans la séquence"

¢  Il
existe des possibilités de choisir et/ou de
répéter certaines instructions
Instruction conditionnelle

¢  Permet de choisir les instructions à exécuter en


fonction d une condition.
¢  Traduction de :
Si condition alors instructionsA sinon instructionsB

if condition :
instructionsA
else :
instructionsB

Espace important : il signale le début d un bloc


if … else
base = input("entrez une base ? ")
if base in "atgc" :
print "base valide"
else :
print "base invalide"

>>> python exemple2.py


entrez une base ? "e"
base invalide
>>> python exemple2.py
>>>
entrez une base ? "c"
base valide
If … elif … else
base = input("entrez une base ? ")
if base in "atgc" :
print "base valide"
elif base in "bdnhkmnrsuvwxy" :
print "base ambigüe"
else :
print "base invalide"
$python exemple3.py
entrez une base ? "e"
base invalide
$python exemple3.py
entrez une base ? "w"
base ambigüe
$python exemple3.py
entrez une base ? "a"
base valide
Instructions répétitives

¢  Permet de répéter un certain nombre de fois, un


ensemble d instructions
¢  Traduction de : Tant que condition faire instructions

while condition :
instructions
Exemple : jusqu où peut
grossir une population qui
double chaque semaine ?
k = input("Valeur maximum ?")
p = 1
while p <= k :
p = 2 *p
p = p / 2
print "p : ", p

$ python exemple4.py
Valeur maximum ?25
p : 16
$ python exemple4.py

Valeur maximum ?245


p : 128
Combien de semaines vivra
une telle population ?
k = input("Valeur maximum ?")
p = 1
n = 0
while p <= k :
p = 2 *p
n = n + 1
p = p / 2
n = n - 1
print "p : ", p, "nbe de semaines : ", s
>>>
Valeur maximum ?245
p : 128 nbe de semaines : 7
>>>
Pour chaque élément faire

¢  Permet
de répéter un ensemble d instructions
pour chaque élément d une collection.

For x in collection :
instructions
For … in

adn = "atgc"

for base in adn :


print base *2
print " c'est fini"

$python exemple5.py
aa
tt
gg
cc
c'est fini
Pour revenir sur les
chaines de caractères
¢  Il
existe de nombreuses fonctionnalités
prédéfinies qui facilitent la vie du programmeur
l  len : longueur de la chaîne de caractères
l  lower : convertit une chaîne de caractères en
minuscules
l  upper : convertit une chaîne en majuscules
>>> adn = "ATGC"
>>> adn.lower()
'atgc
>>> adn = "atgc"
>>> adn.upper()
'ATGC'
>>> len(adn)
4
Quelques autres …

¢  find(sch): cherche la position d une sous-


chaîne sch dans la chaîne
¢  count(sch) : compte le nombre de sous-
chaîne sch dans la chaîne.

>>> adn = "aatgctggtatggatgccc"


>>> start = "atg"
>>> print adn.find(start)
1
>>> print adn.count(start)
3

Vous aimerez peut-être aussi