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 [Link]
¢ 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, [Link]) [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 [Link]
entrez une base ? "e"
base invalide
>>> python [Link]
>>>
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 [Link]
entrez une base ? "e"
base invalide
$python [Link]
entrez une base ? "w"
base ambigüe
$python [Link]
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 [Link]
Valeur maximum ?25
p : 16
$ python [Link]
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 [Link]
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"
>>> [Link]()
'atgc
>>> adn = "atgc"
>>> [Link]()
'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 [Link](start)
1
>>> print [Link](start)
3