[Top][All Lists]
[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__':
- [oMetah-devel] ometah/experiment metahtest.py, Jean-Philippe Aumasson, 2005/06/06
- [oMetah-devel] ometah/experiment metahtest.py, Jean-Philippe Aumasson, 2005/06/07
- [oMetah-devel] ometah/experiment metahtest.py,
Jean-Philippe Aumasson <=
- [oMetah-devel] ometah/experiment metahtest.py, Jean-Philippe Aumasson, 2005/06/07
- [oMetah-devel] ometah/experiment metahtest.py, Jean-Philippe Aumasson, 2005/06/07
- [oMetah-devel] ometah/experiment metahtest.py, Jean-Philippe Aumasson, 2005/06/07
- [oMetah-devel] ometah/experiment metahtest.py, Jean-Philippe Aumasson, 2005/06/09
- [oMetah-devel] ometah/experiment metahtest.py, Jean-Philippe Aumasson, 2005/06/09
- [oMetah-devel] ometah/experiment metahtest.py, Jean-Philippe Aumasson, 2005/06/10
- [oMetah-devel] ometah/experiment metahtest.py, Jean-Philippe Aumasson, 2005/06/13