ometah-devel
[Top][All Lists]
Advanced

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

[oMetah-devel] ometah/experiment interface.py metahtest.py


From: Jean-Philippe Aumasson
Subject: [oMetah-devel] ometah/experiment interface.py metahtest.py
Date: Mon, 13 Jun 2005 04:34:05 -0400

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

Modified files:
        experiment     : interface.py metahtest.py 

Log message:
        * some parsing bugs fixed
        * stop when ometah failed (Usage returned instead of XML)

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

Patches:
Index: ometah/experiment/interface.py
diff -u ometah/experiment/interface.py:1.4 ometah/experiment/interface.py:1.5
--- ometah/experiment/interface.py:1.4  Fri Jun 10 13:03:35 2005
+++ ometah/experiment/interface.py      Mon Jun 13 08:34:03 2005
@@ -58,7 +58,7 @@
             self.log('ERROR : wrong path to XML file 
[Interface.getXmlFromFile]\n')
         return fd
         
-    def plotValuesIterationsDistribHist(self, plist, breaks):
+    def plotValuesDistribHist(self, plist, breaks):
         """ plot distribution of points
         plist = list of Point objects
         breaks = number of breaks in the histogram """
@@ -76,7 +76,7 @@
             vlist = [x.value for x in plist]
             r.plot(vlist, type='o', col='red', main='Values evolution', 
xlab='Points', ylab='Value')
         elif dimension == 2:
-            self.log('ERROR : dimension 2 
[Interface.plotValuesIterationsGraph]\n')
+            self.log('ERROR : dimension > 1 
[Interface.plotValuesIterationsGraph]\n')
 
     def plotValuesIterationsBoxes(self, plist, iterations):
         """ plot a box for each iteration's list of Points  """
Index: ometah/experiment/metahtest.py
diff -u ometah/experiment/metahtest.py:1.16 ometah/experiment/metahtest.py:1.17
--- ometah/experiment/metahtest.py:1.16 Mon Jun 13 06:42:54 2005
+++ ometah/experiment/metahtest.py      Mon Jun 13 08:34:04 2005
@@ -72,10 +72,22 @@
 
 13/06/05
 
-Interface pour les 25 runs
+
+D Bug parser <problem>
+(bug 1 because 'print x' avec x non définit, aucun avertissement du python )
+(bug 2 because valeur vide entre les balises <description>, ajouté 'Unknown' à 
la place)
+(bug 3 because solution mal lues, et séparateur différents, pour dimension > 1)
+
+D Ne pas lancer le parse & plott si erreur / usage en sortie
+
+Interface pour les 25 runs CEC-like
 
 Distribution des optimums de chaque itération
 
+Critère d'arrêt (précision ou nbre d'itérations)
+
+
+
 /----
 
 NOTES
@@ -107,6 +119,7 @@
 """
 
 from rpy import *
+import string
 
 # path to ometah binary
 __OMETAH_PATH = "../ometah"
@@ -150,6 +163,21 @@
         for n in nodes:
             li.append(float(self.__getText(n)))
         return li
+
+    def __getSplitListFloat(self, domObject):
+        """ from a string of coordinates separated with blkspace,
+        return the splitted string as a list of float """
+        slist = self.__getText(domObject)
+        slist = string.split(slist)
+        return [float(x) for x in slist]
+
+    def __getSplitCommaListFloat(self, domObject):
+        """ from a string of coordinates separated with blkspace,
+        return the splitted string as a list of float """
+        slist = self.__getText(domObject)
+        slist = string.split(slist, sep=',')
+        return [float(x) for x in slist]
+    
     
     def getPoints(self):
         """ returns a list of Points """
@@ -167,7 +195,7 @@
                                 p = Point()                            
                                 try:
                                     p.value = 
float(self.__getText(point.getElementsByTagName('values')[0]))
-                                    p.coords = 
self.__getListFloat(point.getElementsByTagName('solution')) #returns a list
+                                    p.coords = 
self.__getSplitListFloat(point.getElementsByTagName('solution')[0])
                                 except:
                                     self.__interface.log('ERROR : XML element 
missing [XMLParser.getPoints]\n')
                                 self.__pointsList__.append(p)
@@ -184,28 +212,30 @@
             self.__header__.problem.name = 
self.__getText(probl.getElementsByTagName('name')[0])
             self.__header__.problem.description = 
self.__getText(probl.getElementsByTagName('description')[0])
             self.__header__.problem.dimension = 
int(self.__getText(probl.getElementsByTagName('dimension')[0]))
-            print "Dimension: ", dimension
             self.__header__.problem.reference = 
self.__getText(probl.getElementsByTagName('reference')[0])
+        except:
+            self.__interface.log('ERROR: XML exploration error for <problem> 
simple values [XMLParser.getHeader]')
 
+        try:
             optimums = probl.getElementsByTagName('optimums')[0]
             for point in optimums.getElementsByTagName('point'):
                 if point.nodeType == point.ELEMENT_NODE:
                     p = Point()
                     p.value = 
self.__getText(point.getElementsByTagName('values')[0])
-                    p.coords = 
self.__getListFloat(point.getElementsByTagName('solution'))
+                    p.coords = 
self.__getSplitCommaListFloat(point.getElementsByTagName('solution')[0])
                     self.__header__.problem.optimum.append(p)
                     bounds = probl.getElementsByTagName('bounds')[0]
                     mini = bounds.getElementsByTagName('minimums')[0]
                     for point in mini.getElementsByTagName('point'):
                         if point.nodeType == point.ELEMENT_NODE:
                             p = Point()
-                            p.coords = 
self.__getListFloat(point.getElementsByTagName('solution'))
+                            p.coords = 
self.__getSplitCommaListFloat(point.getElementsByTagName('solution')[0])
                             self.__header__.problem.min_bound.append(p)
                     maxi = bounds.getElementsByTagName('maximums')[0]        
                     for point in maxi.getElementsByTagName('point'):
                         if point.nodeType == point.ELEMENT_NODE:
                             p = Point()
-                            p.coords = 
self.__getListFloat(point.getElementsByTagName('solution'))
+                            p.coords = 
self.__getSplitCommaListFloat(point.getElementsByTagName('solution')[0])
                             self.__header__.problem.max_bound.append(p)
 
         except:
@@ -323,9 +353,13 @@
     fd.close()
     fd = open(fileOut, 'r')    
 
-    # to avoid bug during parsing
-    fd.readline()
-
+    # read 1st line to avoid bug during parsing,
+    # and check that xml file was generated
+    if not 'xml-version="1.0"' in fd.readline():
+        intfc.log('ERROR : ometah failed to create XML\n')
+        print 'ERROR : see log file for details\n'
+        sys.exit()
+    
     parser = XMLParser(fd, intfc)
     parser.readXml()
     fd.close() # we don't need it anymore
@@ -365,7 +399,8 @@
     intfc.plotValuesIterationsDistribHist(points, __HIST_BREAKS)    
     r.dev_off()
     intfc.log('outputing results : plotValuesIterationsDistribHist(...)  ...  
OK\n')
-
+    
+    
     # plotValues for each point
     intfc.setBitmapOutput(filename = intfc.datedFileName('values', '.png'))    
     intfc.plotValuesIterationsGraph(points, 1)
@@ -384,6 +419,7 @@
     intfc.plotValuesIterationsStdGraph(points, 10)
     r.dev_off()
     intfc.log('outputing results : plotValuesIterationsStdGraph(...)  ...  
OK\n')
+    
 
 
 def plotMultiRun(intfc, errorsList, valuesList, solutionsList):




reply via email to

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