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")
93 self.add_data("AlgorithmParameters")
97 def add_data(self, data_name):
98 search_text = "__ASSIM_STUDY__ALGORITHM__" + self.dictMCVal["ALGORITHM_NAME"] + "__"
99 back_search_text = search_text + data_name + "__"
102 search_vector = back_search_text + "Vector"
103 if search_vector + "__FROM" in self.dictMCVal:
104 back_from = self.dictMCVal[search_vector + "__FROM"]
106 search_string = search_vector + "__STRING_DATA__STRING"
107 search_script = search_vector + "__SCRIPT_DATA__SCRIPT_FILE"
109 # Vector is from a string
110 if search_string in self.dictMCVal:
111 back_data = self.dictMCVal[search_string]
112 # Vector is from a script
113 elif search_script in self.dictMCVal:
114 back_data = self.dictMCVal[search_script]
116 print "[generator adao] Error cannot found Vector data"
118 self.text_da += data_name + "_config = {} \n"
119 self.text_da += data_name + "_config[\"Type\"] = \"Vector\" \n"
120 self.text_da += data_name + "_config[\"From\"] = \"" + back_from + "\" \n"
121 self.text_da += data_name + "_config[\"Data\"] = \"" + back_data + "\" \n"
122 self.text_da += "study_config[\"" + data_name + "\"] = " + data_name + "_config \n"
126 search_matrix = back_search_text + "Matrix"
127 if search_matrix + "__FROM" in self.dictMCVal:
128 back_from = self.dictMCVal[search_matrix + "__FROM"]
130 search_string = search_matrix + "__STRING_DATA__STRING"
131 search_script = search_matrix + "__SCRIPT_DATA__SCRIPT_FILE"
133 # Matrix is from a string
134 if search_string in self.dictMCVal:
135 back_data = self.dictMCVal[search_string]
136 # Matrix is from a script
137 elif search_script in self.dictMCVal:
138 back_data = self.dictMCVal[search_script]
140 print "[generator adao] Error cannot found Matrix data"
142 self.text_da += data_name + "_config = {} \n"
143 self.text_da += data_name + "_config[\"Type\"] = \"Matrix\" \n"
144 self.text_da += data_name + "_config[\"From\"] = \"" + back_from + "\" \n"
145 self.text_da += data_name + "_config[\"Data\"] = \"" + back_data + "\" \n"
146 self.text_da += "study_config[\"" + data_name + "\"] = " + data_name + "_config \n"
150 search_dict = back_search_text + "Dict"
151 if search_dict + "__FROM" in self.dictMCVal:
152 back_from = self.dictMCVal[search_dict + "__FROM"]
153 back_data = self.dictMCVal[search_dict + "__SCRIPT_DATA__SCRIPT_FILE"]
155 self.text_da += data_name + "_config = {} \n"
156 self.text_da += data_name + "_config[\"Type\"] = \"Dict\" \n"
157 self.text_da += data_name + "_config[\"From\"] = \"" + back_from + "\" \n"
158 self.text_da += data_name + "_config[\"Data\"] = \"" + back_data + "\" \n"
159 self.text_da += "study_config[\"" + data_name + "\"] = " + data_name + "_config \n"
162 # Data is a FunctionDict
163 search_function = back_search_text + "Function"
164 if search_function + "__FROM" in self.dictMCVal:
165 back_from = self.dictMCVal[search_function + "__FROM"]
166 back_data = self.dictMCVal[search_function + "__FUNCTIONDICT_DATA__FUNCTIONDICT_FILE"]
168 self.text_da += data_name + "_FunctionDict = {} \n"
169 self.text_da += data_name + "_FunctionDict[\"Function\"] = [\"Direct\", \"Tangent\", \"Adjoint\"] \n"
170 self.text_da += data_name + "_FunctionDict[\"Script\"] = {} \n"
171 self.text_da += data_name + "_FunctionDict[\"Script\"][\"Direct\"] = \"" + back_data + "\" \n"
172 self.text_da += data_name + "_FunctionDict[\"Script\"][\"Tangent\"] = \"" + back_data + "\" \n"
173 self.text_da += data_name + "_FunctionDict[\"Script\"][\"Adjoint\"] = \"" + back_data + "\" \n"
174 self.text_da += data_name + "_config = {} \n"
175 self.text_da += data_name + "_config[\"Type\"] = \"Function\" \n"
176 self.text_da += data_name + "_config[\"From\"] = \"FunctionDict\" \n"
177 self.text_da += data_name + "_config[\"Data\"] = " + data_name + "_FunctionDict \n"
178 self.text_da += "study_config[\"" + data_name + "\"] = " + data_name + "_config \n"
181 def add_analysis(self):
182 search_text = "__ASSIM_STUDY__ALGORITHM__" + self.dictMCVal["ALGORITHM_NAME"] + "__Analysis__"
184 ana_from = self.dictMCVal[search_text + "FROM"]
186 if ana_from == "String":
187 ana_data = self.dictMCVal[search_text + "STRING_DATA__STRING"]
188 self.text_da += "Analysis_config = {} \n"
189 self.text_da += "Analysis_config[\"From\"] = \"String\" \n"
190 self.text_da += "Analysis_config[\"Data\"] = \"\"\"" + ana_data + "\"\"\" \n"
191 self.text_da += "study_config[\"Analysis\"] = Analysis_config \n"
193 if ana_from == "Script":
194 ana_data = self.dictMCVal[search_text + "SCRIPT_DATA__SCRIPT_FILE"]
195 self.text_da += "Analysis_config = {} \n"
196 self.text_da += "Analysis_config[\"From\"] = \"Script\" \n"
197 self.text_da += "Analysis_config[\"Data\"] = \"" + ana_data + "\" \n"
198 self.text_da += "study_config[\"Analysis\"] = Analysis_config \n"
204 search_text = "__ASSIM_STUDY__ALGORITHM__" + self.dictMCVal["ALGORITHM_NAME"] + "__Init__"
206 if search_text + "INIT_FILE" in self.dictMCVal:
208 init_file_data = self.dictMCVal[search_text + "INIT_FILE"]
209 init_target_list = self.dictMCVal[search_text + "TARGET_LIST"]
211 self.text_da += "Init_config = {} \n"
212 self.text_da += "Init_config[\"Type\"] = \"Dict\" \n"
213 self.text_da += "Init_config[\"From\"] = \"Script\" \n"
214 self.text_da += "Init_config[\"Data\"] = \"" + init_file_data + "\"\n"
215 self.text_da += "Init_config[\"Target\"] = ["
216 for target in init_target_list:
217 self.text_da += "\"" + target + "\","
218 self.text_da += "] \n"
219 self.text_da += "study_config[\"Init\"] = Init_config \n"