source: CPL/oasis3-mct/branches/OASIS3-MCT_2.0_branch/util/oasisgui/XDRpy/dsgraph_utilities.py @ 4775

Last change on this file since 4775 was 4775, checked in by aclsce, 4 years ago
  • Imported oasis3-mct from Cerfacs svn server (not suppotred anymore).

The version has been extracted from https://oasis3mct.cerfacs.fr/svn/branches/OASIS3-MCT_2.0_branch/oasis3-mct@1818

File size: 2.7 KB
Line 
1#!/usr/bin/env python
2
3
4#######################################
5#
6# Projet Manager Graph Dataset utilities
7#
8########################################
9# This class allows to handle a the datasets stored in xml files
10# for further datamining thourough the compare widget
11#
12# Created by A. Dauptain
13#
14# Last modified : 16 septembre 2013 A Dauptain (comments)
15#               
16########################################
17
18
19import os
20from XDR import getFileList
21
22
23class DSGraph_Utilities(object):
24    def __init__(self,code_id):
25        self.solver = code_id
26        self.post_proc_dir = os.path.join(os.getcwd(),code_id.upper(),"COMPARE")
27        self.runlist = []
28       
29        # cleaning
30        for f in getFileList(self.post_proc_dir,"*.dat","relative") :
31            print "Cleaning file :",f
32            os.remove(f)
33
34
35    def DatasetDump(self,ds,simu,project_name,run_name):
36        """ This procedure dup the content of an XML file in a key/value file
37        , to be read afterward for comparisons """
38       
39        run_id = "Sim."+simu+"#"+project_name+"#"+run_name
40        self.runlist.append(run_id)
41       
42       
43       
44        address = []
45        address.append("dataset")
46       
47        arraylist = []
48        #point de depart
49        arraylist.append('dataset-value= \n')
50        arraylist.append("dataset-children= "+self.solver+"\n")
51        address.append(self.solver)
52       
53        # EXTENSION PAR RECURSION
54        arraylist.extend(self.DatasetDumpIterate(ds,address))
55       
56        # SAUVEGARDE
57        filename=os.path.join( self.post_proc_dir, run_id+".dat")
58        tracefile = open(filename, 'w')
59        tracefile.writelines(arraylist)
60        tracefile.close()
61       
62   
63    def DatasetDumpIterate(self,ds,address):
64        """ This procedure is the iterative part of DatasetDump procedure """
65         
66        dsadr = []
67        arraylist=[]
68        dsadr.append(address[-1])
69       
70       
71       
72        dsadr.extend(address[0:-1])
73        value=ds.getValue(*dsadr)
74        if type(value) is list:
75            value=" ".join(value)
76           
77        listChildren = ds.getChildrenName(*dsadr)
78        for banned in ["avbp_db","scriptNode", "projcontent"]:
79            if banned in listChildren :
80                listChildren.remove(banned)
81       
82        arraylist.append(".".join(address)+'-value= '+str(value)+'\n')
83        arraylist.append(".".join(address)+"-children= "+" ".join(listChildren)+"\n")
84       
85       
86       
87        for child in listChildren: 
88            newaddress=list(address)
89            newaddress.append(child)
90            arraylist.extend(self.DatasetDumpIterate(ds,newaddress))       
91        return arraylist
92
93
94
95if __name__ == '__main__':
96    pass # Do tests
Note: See TracBrowser for help on using the repository browser.