ometah-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[oMetah-devel] ometah/experiment metahtest.py


From: Jean-Philippe Aumasson
Subject: [oMetah-devel] ometah/experiment metahtest.py
Date: Tue, 07 Jun 2005 04:33:50 -0400

CVSROOT:        /cvsroot/ometah
Module name:    ometah
Branch:         
Changes by:     Jean-Philippe Aumasson <address@hidden> 05/06/07 08:33:50

Modified files:
        experiment     : metahtest.py 

Log message:
        * plot values and distrib in *png, log events in *.log file

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/ometah/ometah/experiment/metahtest.py.diff?tr1=1.4&tr2=1.5&r1=text&r2=text

Patches:
Index: ometah/experiment/metahtest.py
diff -u ometah/experiment/metahtest.py:1.4 ometah/experiment/metahtest.py:1.5
--- ometah/experiment/metahtest.py:1.4  Tue Jun  7 06:51:36 2005
+++ ometah/experiment/metahtest.py      Tue Jun  7 08:33:49 2005
@@ -31,12 +31,12 @@
 
 TODO
 
-!!! Parser : fdXML --> dictionary !!! 
-interface / structure globale :
-plotage de la distribution avec R, dans un fichier ps (cf fx hist de R)
+histogramme 3D ?? transfo Xdim en 1 ou 2 dim...
 
+fonctions 'plotAutrechosequedistribution (listOfPoints)'
+
+Exceptions ! Errors in log !
 
-Exceptions !
 
 NOTES
 fonction math :
@@ -54,6 +54,7 @@
 
 import os
 import sys
+import time
 import string
 from rpy import *
 import datetime
@@ -61,18 +62,23 @@
 
 def setPostscriptOutput(filename):
     """  set a postscript output file """
-    s = filename + ".ps"
-    r.postscript(s, paper='letter')
+    r.postscript(filename, paper='letter')
 
 def setBitmapOutput(filename):
     """ set a bitmap (png) output file """
-    s= filename + ".png"
-    r.bitmap(s, res=100)
+    r.bitmap(filename, res=100)
 
-def datedFileName(name):
+def datedFileName(name, extension):
     """ return a string of today's date + given string """
     s = datetime.date.today().isoformat()
-    return s + name
+    return name + s + extension
+
+def log(filename, string):
+    """ will write log of current job in a *.log file with date,
+    pb name, output files... """
+    fd = open(filename, 'a')
+    fd.write(string)
+    fd.close()
 
 
 class Interface:
@@ -80,13 +86,9 @@
         
     def __init__(self, args):
         """ constructor, from command line arguments """
-        self.__argv = [''] + args[1:]
-        self.__dimension = 1
-        self.__iterations = 0
-        self.__problemName = ''
-        self.__metahName = ''        
+        self.__argv = [''] + args[1:]     
     
-    def execOmetah(self, path, output):
+    def execOmetah(self, path):
         """ execute ometah with given arguments,
         returns the file objects corresponding to the cmd output """
         cmd = path + string.join(self.__argv)
@@ -99,18 +101,18 @@
         
     def plotDistribution(self, plist, breaks):
         """ plot from informations read in xml file """        
-        xlist = []
+        vlist = []
         for x in plist:
-            xlist.append(float(x.value))
-        print xlist    
-        r.hist(xlist, breaks, col='green')
+            vlist.append(float(x.value))
+        r.hist(vlist, breaks, col='green', main='Distribution', xlab='Values')
     
+    def plotValues(self, plist):
+        """ plot values """
+        vlist = []
+        for x in plist:
+            vlist.append(float(x.value))
+        r.plot(vlist, type='o', col='red', main='Values evolution', 
xlab='Points', ylab='Value')
     
-        
-    def log(self):
-        """ will write log of current job in a *.log file with date,
-        pb name, output files... """
-        print "log..."
 
     def getProblemName():
         return self.__problemName
@@ -160,13 +162,6 @@
         if self.__pointsList__ != None:
             return self.__pointsList__
         self.__pointsList__ = []
-        # "triple for" nécessaire ? (sur root, iteration, sample)
-        # pour les attributs :
-        #  help(xml.dom.minidom.Element)
-        #  -> ... getAttribute(self, attname) !!
-        #
-        #  TODO : commits itsMetaheuristic.cpp !!!
-        #
         for iteration in 
self.getRootElement().getElementsByTagName('iteration'):
             if iteration.getAttribute("class") == "intensification":
                 for sample in iteration.getElementsByTagName('sample'):
@@ -175,9 +170,9 @@
                             p = Point()                            
                             try:
                                 p.value = 
self.getText(point.getElementsByTagName('values')[0])
-                                p.coords = 
self.getList(point.getElementsByTagName('solution')) # returns a list ?
+                                p.coords = 
self.getList(point.getElementsByTagName('solution')) #returns a list
                             except:
-                                print 'XML element missing'
+                                log(__LOG_NAME, 'ERROR : XML element missing')
                             self.__pointsList__.append(p)
         return self.__pointsList__
 
@@ -185,7 +180,11 @@
 
 class Header:
     """ for additional informations in XML file """
-    
+    dimension = None
+    iterations = None
+    problemName = None
+    metahName = None
+        
     def __init__(self):
         pass
 
@@ -202,27 +201,46 @@
 
 def main():
     """ main() """
-    OMETAH_PATH = "../ometah"
-    OMETAH_OUT = "temp"
-    R_OUT = "results"
-    
-    # set_postscript_output(R_OUT)
-    setBitmapOutput(datedFileName(R_OUT))
-    
+    # path to ometah binary
+    __OMETAH_PATH = "../ometah"
+
+    # generic name of the ouput file
+    __R_OUT = "results"
+
+    # nb of breaks in the distribution histogram
+    __HIST_BREAKS = 20
+
+    # name of the log file
+    __LOG_NAME = datedFileName("", ".log")
+
+    slog = "\n\n[ Starting at " + time.ctime() + " ] \n"
+    log(__LOG_NAME, slog)
     main = Interface(sys.argv)
 
     # fd ~ XML output
-    fd = main.execOmetah(OMETAH_PATH, OMETAH_OUT)
+    fd = main.execOmetah(__OMETAH_PATH)
+    log(__LOG_NAME, 'ometah execution ... OK\n')
+    
+    # skip first line to avoid bug in parsing
+    fd.readline()
     
-    print "readline() : " + fd.readline()
-
     parser = XMLParser(fd)
     parser.readXml()
-    pointsList = parser.getPoints()
-    
-    main.plotDistribution(pointsList, 10)
+    log(__LOG_NAME, 'parsing XML :  readXML() ... OK\n')
     
+    pointsList = parser.getPoints()    
+    log(__LOG_NAME, 'getting points list : getPoints() ...  OK\n')
+
+    # set_postscript_output(R_OUT)
+    setBitmapOutput(datedFileName(__R_OUT, '.png'))    
+    main.plotDistribution(pointsList, __HIST_BREAKS)    
+    r.dev_off()
+    log(__LOG_NAME, 'outputing results : plotDistribution(...)  ...  OK\n')
+
+    setBitmapOutput(datedFileName('values', '.png'))    
+    main.plotValues(pointsList)    
     r.dev_off()
+    log(__LOG_NAME, 'outputing results : plotValues(...)  ...  OK\n')
     
 
 if __name__ == '__main__':




reply via email to

[Prev in Thread] Current Thread [Next in Thread]