1 # -*- coding: utf-8 -*-
2 print "import generator_adao"
4 from generator.generator_python import PythonGenerator
9 Retourne les informations necessaires pour le chargeur de plugins
11 Ces informations sont retournees dans un dictionnaire
16 # La factory pour creer une instance du plugin
17 'factory' : AdaoGenerator,
20 class AdaoGenerator(PythonGenerator):
22 def __init__(self,cr=None):
23 PythonGenerator.__init__(self, cr)
27 self.text_da_status = False
29 def gener(self,obj,format='brut',config=None):
30 print "AdaoGenerator gener"
31 self.text_comm = PythonGenerator.gener(self, obj, format, config)
37 self.text_da_status = False
39 self.text_da_status = True
41 print "Case seems not be correct"
46 def writeDefault(self, fn):
47 if self.text_da_status:
48 print "write adao python command file"
49 filename = fn[:fn.rfind(".")] + '.py'
50 f = open( str(filename), 'wb')
51 f.write( self.text_da )
54 def generMCSIMP(self,obj) :
56 Convertit un objet MCSIMP en texte python
59 for i in obj.get_genealogie() :
61 self.dictMCVal[clef]=obj.valeur
63 s=PythonGenerator.generMCSIMP(self,obj)
66 def generMCFACT(self,obj):
68 if obj.parent.nom == "ALGORITHM":
69 self.dictMCVal["ALGORITHM_NAME"] = obj.nom
71 s=PythonGenerator.generMCFACT(self,obj)
74 def generate_da(self):
76 self.text_da += "#-*-coding:iso-8859-1-*- \n"
77 self.text_da += "study_config = {} \n"
78 self.text_da += "study_config[\"Name\"] = \"" + self.dictMCVal["__ASSIM_STUDY__STUDY_NAME"] + "\"\n"
80 if self.dictMCVal["ALGORITHM_NAME"] != "ThreeDVAR":
81 self.text_da += "study_config[\"Algorithm\"] = \"" + self.dictMCVal["ALGORITHM_NAME"] + "\"\n"
83 self.text_da += "study_config[\"Algorithm\"] = \"3DVAR\"\n"
86 self.add_data("Background")
87 self.add_data("BackgroundError")
88 self.add_data("Observation")
89 self.add_data("ObservationError")
90 self.add_data("ObservationOperator")
95 def add_data(self, data_name):
96 search_text = "__ASSIM_STUDY__ALGORITHM__" + self.dictMCVal["ALGORITHM_NAME"] + "__"
97 back_search_text = search_text + data_name + "__"
100 search_vector = back_search_text + "Vector"
101 if search_vector + "__FROM" in self.dictMCVal:
102 back_from = self.dictMCVal[search_vector + "__FROM"]
104 search_string = search_vector + "__STRING_DATA__STRING"
105 search_script = search_vector + "__SCRIPT_DATA__SCRIPT_FILE"
107 # Vector is from a string
108 if search_string in self.dictMCVal:
109 back_data = self.dictMCVal[search_string]
110 # Vector is from a script
111 elif search_script in self.dictMCVal:
112 back_data = self.dictMCVal[search_script]
114 print "[generator adao] Error cannot found Vector data"
116 self.text_da += data_name + "_config = {} \n"
117 self.text_da += data_name + "_config[\"Type\"] = \"Vector\" \n"
118 self.text_da += data_name + "_config[\"From\"] = \"" + back_from + "\" \n"
119 self.text_da += data_name + "_config[\"Data\"] = \"" + back_data + "\" \n"
120 self.text_da += "study_config[\"" + data_name + "\"] = " + data_name + "_config \n"
124 search_matrix = back_search_text + "Matrix"
125 if search_matrix + "__FROM" in self.dictMCVal:
126 back_from = self.dictMCVal[search_matrix + "__FROM"]
128 search_string = search_matrix + "__STRING_DATA__STRING"
129 search_script = search_matrix + "__SCRIPT_DATA__SCRIPT_FILE"
131 # Matrix is from a string
132 if search_string in self.dictMCVal:
133 back_data = self.dictMCVal[search_string]
134 # Matrix is from a script
135 elif search_script in self.dictMCVal:
136 back_data = self.dictMCVal[search_script]
138 print "[generator adao] Error cannot found Matrix data"
140 self.text_da += data_name + "_config = {} \n"
141 self.text_da += data_name + "_config[\"Type\"] = \"Matrix\" \n"
142 self.text_da += data_name + "_config[\"From\"] = \"" + back_from + "\" \n"
143 self.text_da += data_name + "_config[\"Data\"] = \"" + back_data + "\" \n"
144 self.text_da += "study_config[\"" + data_name + "\"] = " + data_name + "_config \n"
147 # Data is a FunctionDict
148 search_function = back_search_text + "Function"
149 if search_function + "__FROM" in self.dictMCVal:
150 back_from = self.dictMCVal[search_function + "__FROM"]
151 back_data = self.dictMCVal[search_function + "__FUNCTIONDICT_DATA__FUNCTIONDICT_FILE"]
153 self.text_da += "FunctionDict = {} \n"
154 self.text_da += "FunctionDict[\"Function\"] = [\"Direct\", \"Tangent\", \"Adjoint\"] \n"
155 self.text_da += "FunctionDict[\"Script\"] = {} \n"
156 self.text_da += "FunctionDict[\"Script\"][\"Direct\"] = \"" + back_data + "\" \n"
157 self.text_da += "FunctionDict[\"Script\"][\"Tangent\"] = \"" + back_data + "\" \n"
158 self.text_da += "FunctionDict[\"Script\"][\"Adjoint\"] = \"" + back_data + "\" \n"
159 self.text_da += data_name + "_config = {} \n"
160 self.text_da += data_name + "_config[\"Type\"] = \"Function\" \n"
161 self.text_da += data_name + "_config[\"From\"] = \"FunctionDict\" \n"
162 self.text_da += data_name + "_config[\"Data\"] = FunctionDict \n"
163 self.text_da += "study_config[\"" + data_name + "\"] = " + data_name + "_config \n"
166 def add_analysis(self):
167 search_text = "__ASSIM_STUDY__ALGORITHM__" + self.dictMCVal["ALGORITHM_NAME"] + "__Analysis__"
169 ana_from = self.dictMCVal[search_text + "FROM"]
171 if ana_from == "String":
172 ana_data = self.dictMCVal[search_text + "STRING_DATA__STRING"]
173 self.text_da += "Analysis_config = {} \n"
174 self.text_da += "Analysis_config[\"From\"] = \"String\" \n"
175 self.text_da += "Analysis_config[\"Data\"] = \"\"\"" + ana_data + "\"\"\" \n"
176 self.text_da += "study_config[\"Analysis\"] = Analysis_config \n"
178 if ana_from == "Script":
179 ana_data = self.dictMCVal[search_text + "SCRIPT_DATA__SCRIPT_FILE"]
180 self.text_da += "Analysis_config = {} \n"
181 self.text_da += "Analysis_config[\"From\"] = \"Script\" \n"
182 self.text_da += "Analysis_config[\"Data\"] = \"" + ana_data + "\" \n"
183 self.text_da += "study_config[\"Analysis\"] = Analysis_config \n"