1 2 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