00001
00002 print "Algorithme de clustering hierarchique"
00003 print "\t@version: 1.2 date: 26/06/2007 modified by Thomas Leaute"
00004 print "\t@version: 1.1 date: 25/05/2007 modified by Thomas Leaute"
00005 print "\t@version: 1.0 date: 05/03/2007 created by Thomas Leaute"
00006 print "\t@author: thomas.leaute _AT_ epfl.ch date: 09/05/2007"
00007 print "\t@copyright: EPFL-IC-IIF-LIA 2007"
00008
00009
00010
00011
00012
00013 execfile("distance.py")
00014
00015
00016 METHODE = ""
00017
00018
00019 NOEUDS = []
00020
00021
00022 class Noeud:
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 def __init__ (self, p, succ, c = None):
00039 self.profondeur = p
00040 self.successeurs = succ
00041 if c != None:
00042 self.cluster = c
00043 else:
00044 self.cluster = [ donnee for noeud in self.successeurs for donnee in noeud.cluster ]
00045
00046
00047
00048
00049 def afficheDentogramme (self, prefixe = ""):
00050 print prefixe + str(self.cluster)
00051 for i in range(0, len(self.successeurs)):
00052 print prefixe + "|\n" + prefixe + "|"
00053 trait = "---" + "".join(["---" for j in range(0, self.successeurs[i].profondeur - self.profondeur - 1)])
00054 marge = "".join([" " for j in range(0, self.successeurs[i].profondeur - self.profondeur - 1)])
00055 if i == len(self.successeurs)-1:
00056 marge = " " + marge
00057 else:
00058 marge = "| " + marge
00059 print prefixe + trait
00060 self.successeurs[i].afficheDentogramme(prefixe + marge)
00061
00062
00063
00064
00065
00066
00067 def chargeDonnees (methode):
00068 global NOEUDS, METHODE
00069 METHODE = methode
00070 print "a completer"
00071
00072
00073
00074
00075 def fini ():
00076 print "a completer"
00077
00078
00079
00080
00081
00082
00083
00084
00085 def distanceClusters (cluster1, cluster2):
00086 if METHODE == "single-link":
00087 print "a completer"
00088 elif METHODE == "complete-link":
00089 print "a completer"
00090 else:
00091 print "Methode de calcul de la distance entre clusters '" + METHODE + "' inconnue"
00092 return None
00093
00094
00095
00096 def reviseClusters ():
00097
00098
00099 if len(NOEUDS) <= 1:
00100 return
00101
00102
00103 print "a completer"
00104
00105
00106 print "a completer"
00107
00108
00109
00110 def afficheResultat ():
00111 NOEUDS[0].afficheDentogramme()
00112
00113
00114
00115
00116
00117
00118 execfile("profits.py")
00119
00120
00121 chargeDonnees("single-link")
00122
00123
00124
00125 execfile("clustering.py")