| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 
 |  
#! /usr/bin/python
# -*- coding: utf-8 -*-
 
import Tkinter
from Tkinter import *
import tkMessageBox
 
import re
 
 
 
class Application:
	def __init__(self):
		#Constructeur fenetre principale#
		fenetre = Tk()
		#fenetre.initialize()
 
 
 
 
		#Entree des donnees
		fenetre.title('Alignement de séquences')
		Label(fenetre, text = "Rentrez vos séquences:", fg='black', font =("Helvetica", "20")).grid(row = 0, column = 10, sticky='NS')
		Label(fenetre, text = "Séquence1:", fg='blue', font =("Helvetica", "16", "bold italic underline")).grid(row = 2, column = 10, sticky='NS')
		self.entree1 = Entry(fenetre, width =150)
		self.entree1.grid(row = 3, column = 10, sticky='NS')
 
		self.entree1.bind("<Return>", lambda event : self.Check(event, 1)) #la séquence est entrée définitivement lorsque l'utlisateur
																#appuie sur la touche "entrée"
		Label(fenetre, text = "Séquence2:", fg='blue', font =("Helvetica", "16", "bold italic underline")).grid(row = 4, column = 10, sticky='NS')
		self.entree2 = Entry(fenetre, width =150)
		self.entree2.grid(row =5, column = 10, sticky='NS')
 
		self.entree2.bind("<Return>", lambda event : self.Check(event, 2))
 
		#Toolbar
		bar = Menu(fenetre)
 
		fichier = Menu(bar)
		fichier.add_command(label="Enregistrer sous...")#, command =)
		fichier.add_separator()
		fichier.add_command(label="Quitter", command = fenetre.destroy)
		methode = Menu(bar)
		methode.add_command(label="M1" )#, command = self.DL(seq1, seq2))
		methode.add_command(label="M2")#, command = )
		methode.add_command(label="M3 ")#, command = )
		methode.add_command(label="M4")#, command = )
		methode.add_command(label="M5")#, command = )
		aide = Menu(bar)
		aide.add_command(label="A propos", command = self.about)
 
		bar.add_cascade(label="Fichier", menu = fichier)
		bar.add_cascade(label="ChoixMéthode", menu = methode)
		bar.add_cascade(label="Aide", menu = aide)
 
		fenetre.config(menu=bar)
 
		#Commande d'alignement des séquences
		bouton = Button(fenetre, text="Choisissez la méthode pour aligner", fg='red', font=("-*-lucidatypewriter-medium-r-*-*-*-200-*-*-*-*-*-*")).grid(row =8,column = 10, sticky='NS')
 
		#Place pour l'alignement des séquences
		liste = Listbox(height=3,width=50).grid(row = 9, column = 10, rowspan = 50, sticky='NSEW')
 
		fenetre.grid_rowconfigure(0, weight = 2)
		fenetre.grid_rowconfigure(2, weight = 2)
		fenetre.grid_rowconfigure(3, weight = 2)
		fenetre.grid_rowconfigure(4, weight = 2)
		fenetre.grid_rowconfigure(5, weight = 2)
		fenetre.grid_rowconfigure(8, weight = 1)
		fenetre.grid_rowconfigure(9, weight = 20)
		fenetre.grid_columnconfigure(10, weight = 2)
 
		fenetre.mainloop()
 
	def about(self):
		tkMessageBox.showinfo("Principe", "Choisir une méthode et rentrer les deux séquences à aligner...")
 
	def Check(self, event, numEntry):
 
		if numEntry == 1:
			seq = self.entree1.get()
		else:
			seq = self.entree2.get()
 
		motif = r"[^a-zA-Z]"
		if re.search(motif, seq):
			tkMessageBox.showinfo("La séquence entrée n'est pas une suite de lettre", "Tous les éléments n'appartenant pas à l'alphaber seront ignorés")
			s = re.findall('[A-Z]+', seq.upper()) #on ne garde que les lettres de l'alphabet
			seq=''.join(s)
			print seq
		else:
			print "koikispass"
		return seq
 
 
 
	def DL(self, Seq1, Seq2):
		m = len(Seq1)
		n = len(Seq2)
		T = Matrice_cout(Seq1, Seq2)
		L = Alignement(Seq1, Seq2, m+1, n+1, T, [])
		print L
 
 
# démarrer le gestionnaire d'événement
 
if __name__ == "__main__":
    i=Application() | 
Partager