Salome HOME
Minor improvements and fixes for internal variables
[modules/adao.git] / resources / ADAOSchemaCatalog.xml
index 4569aa13b076792b467f361f8b5af04e04649523..c01b789c935256277b80f5358886a5e78d960199 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version='1.0' encoding='utf-8' ?>
 <!--
-  Copyright (C) 2008-2018 EDF R&D
+  Copyright (C) 2008-2021 EDF R&D
 
   This file is part of SALOME ADAO module
 
@@ -59,7 +59,7 @@
     <script><code>
 
 <![CDATA[
-import numpy, logging
+import sys, numpy, logging
 logging.debug("CREATE YI Entering in CreateAssimilationStudy")
 print("Entering in the assimilation study")
 print("Name is set to........:", Name)
@@ -67,7 +67,7 @@ print("Algorithm is set to...:", Algorithm)
 
 try:
     # Create Assimilation study
-    import adao
+    if sys.version_info.major > 2: import adao
     from daYacsIntegration.daStudy import *
     assim_study = daStudy(Name, Algorithm, Debug)
 
@@ -237,6 +237,7 @@ if (matrix_in_string.find("array")>-1) or (matrix_in_string.find("matrix")>-1):
     exec("matrix="+matrix_in_string)
     matrix = numpy.matrix(matrix)
 else:
+    matrix_in_string=matrix_in_string.replace("'","").replace('"','')
     matrix = numpy.matrix(matrix_in_string)
 type = "Matrix"
 logging.debug("CREATE YI Matrix is %s"%matrix)
@@ -257,6 +258,7 @@ if (matrix_in_string.find("array")>-1) or (matrix_in_string.find("matrix")>-1):
     exec("matrix="+matrix_in_string)
     matrix = numpy.matrix(matrix)
 else:
+    matrix_in_string=matrix_in_string.replace("'","").replace('"','')
     matrix = numpy.matrix(matrix_in_string)
 type = "ScalarSparseMatrix"
 logging.debug("CREATE YI ScalarSparseMatrix is %s"%matrix)
@@ -277,6 +279,7 @@ if (matrix_in_string.find("array")>-1) or (matrix_in_string.find("matrix")>-1):
     exec("matrix="+matrix_in_string)
     matrix = numpy.matrix(matrix)
 else:
+    matrix_in_string=matrix_in_string.replace("'","").replace('"','')
     matrix = numpy.matrix(matrix_in_string)
 type = "DiagonalSparseMatrix"
 logging.debug("CREATE YI DiagonalSparseMatrix is %s"%matrix)
@@ -369,6 +372,7 @@ if (vector_in_string.find("array")>-1) or (vector_in_string.find("matrix")>-1):
     exec("vector="+vector_in_string)
     vector = numpy.matrix(vector)
 else:
+    vector_in_string=vector_in_string.replace("'","").replace('"','')
     vector = numpy.matrix(vector_in_string)
 type = "Vector"
 logging.debug("Vector is %s"%vector)
@@ -403,12 +407,42 @@ if sys.path.count(filepath)==0 or (sys.path.count(filepath)>0 and sys.path.index
     <outport name="stored" type="bool"/>
   </inline>
 
+  <inline name="CreateNumpyVectorFromDataFile">
+    <script><code><![CDATA[
+import logging, sys, numpy
+logging.debug("CREATE YI Entering in CreateNumpyVectorFromDataFile")
+type = "Vector"
+
+if sys.version_info.major > 2: import adao
+from daCore.Interfaces import ImportFromFile as aif
+if colmajor:
+    vector = numpy.ravel( numpy.transpose( aif(script).getvalue(columns)[1] ) )
+else:
+    vector = numpy.ravel( aif(script).getvalue(columns)[1] )
+]]></code></script>
+    <inport name="script" type="string"/>
+    <inport name="columns" type="stringvec"/>
+    <inport name="colmajor" type="bool"/>
+    <outport name="vector" type="pyobj"/>
+    <outport name="type" type="string"/>
+    <outport name="stored" type="bool"/>
+  </inline>
+
   <inline name="CreateNumpyVectorSerieFromString">
     <script><code><![CDATA[
 import numpy, logging
 logging.debug("CREATE YI Entering in CreateNumpyVectorSerieFromString")
-vector_in_list = eval(str(vector_in_string),{},{})
-vector = numpy.matrix(vector_in_list)
+# vector_in_list = eval(str(vector_in_string),{},{})
+# vector = numpy.matrix(vector_in_list)
+if (vector_in_string.find("array")>-1) or (vector_in_string.find("matrix")>-1):
+    vector_in_string=vector_in_string.replace("array","numpy.array")
+    vector_in_string=vector_in_string.replace("matrix","numpy.matrix")
+    exec("vector="+vector_in_string)
+    vector = numpy.array(vector)
+else:
+    vector_in_string=vector_in_string.replace("'","").replace('"','')
+    vector_in_list = eval(str(vector_in_string),{},{})
+    vector = numpy.array(vector_in_list)
 type = "VectorSerie"
 logging.debug("VectorSerie is %s"%vector)
 ]]></code></script>
@@ -442,6 +476,28 @@ if sys.path.count(filepath)==0 or (sys.path.count(filepath)>0 and sys.path.index
     <outport name="stored" type="bool"/>
   </inline>
 
+  <inline name="CreateNumpyVectorSerieFromDataFile">
+    <script><code><![CDATA[
+import logging, sys, numpy
+logging.debug("CREATE YI Entering in CreateNumpyVectorSerieFromDataFile")
+type = "VectorSerie"
+
+if sys.version_info.major > 2: import adao
+from daCore.Interfaces import ImportFromFile as aif
+if len(columns) == 0: columns = None
+if colmajor:
+    aif(script).getvalue(columns)[1]
+else:
+    vector = numpy.transpose( aif(script).getvalue(columns)[1] )
+]]></code></script>
+    <inport name="script" type="string"/>
+    <inport name="columns" type="stringvec"/>
+    <inport name="colmajor" type="bool"/>
+    <outport name="vector" type="pyobj"/>
+    <outport name="type" type="string"/>
+    <outport name="stored" type="bool"/>
+  </inline>
+
   <inline name="SimpleExecuteDirectAlgorithm">
     <script><code><![CDATA[
 import logging
@@ -457,9 +513,12 @@ ADD.analyze()
   <inline name="SimpleUserAnalysis">
     <script><code><![CDATA[
 #-*- coding: utf-8 -*-
-import logging
+import sys, logging
 logging.debug("TERMINATE Entering in SimpleUserAnalysis")
-ADD = Study.getResults()
+if sys.version_info.major < 3:
+    ADD = Study.getResults()
+else:
+    ADD = Study
 # User code is below
 
 ]]></code></script>
@@ -529,14 +588,17 @@ if sys.path.count(filepath)==0 or (sys.path.count(filepath)>0 and sys.path.index
   </inline>
 
   <inline name="ReadForSwitchNode">
-    <script><code><![CDATA[
-import logging
+    <script><code><![CDATA[import sys, logging, codecs, pickle
+if sys.version_info.major > 2: import adao
+def loads( data ):
+  return pickle.loads(codecs.decode(data.encode(), "base64"))
 logging.debug("CREATE YI Entering in ReadForSwitchNode")
-logging.debug("       with input data : "+str(data["specificParameters"]))
+# logging.debug("       with input data : ",list(data["specificParameters"]))
 switch_value = -1
 for param in data["specificParameters"]:
+  # logging.debug("       ReadForSwitchNode specificParameters : ",param)
   if param["name"] == "switch_value":
-    switch_value = int(param["value"])
+    switch_value = int(loads(param["value"]))
 logging.debug("       switching to value : "+str(switch_value))
 ]]></code></script>
     <inport name="data" type="SALOME_TYPES/ParametricInput"/>
@@ -545,21 +607,19 @@ logging.debug("       switching to value : "+str(switch_value))
   </inline>
 
   <inline name="ExtractDataNode">
-    <script><code><![CDATA[
-import logging
-logging.debug("TERMINATE Entering in ExtractDataNode")
-try:
-  import cPickle as pickle
-except:
-  import pickle
+    <script><code><![CDATA[import sys, logging, codecs, pickle
+if sys.version_info.major > 2: import adao
+def loads( data ):
+  return pickle.loads(codecs.decode(data.encode(), "base64"))
+logging.debug("TERMINATE Entering in ExtractData/Node")
 from daCore.AssimilationStudy import AssimilationStudy
 var = None
 info = None
 for param in data["specificParameters"]:
   if param["name"] == "var":
-    var = pickle.loads(param["value"])
+    var = loads(param["value"])
   if param["name"] == "info":
-    info = param["value"]
+    info = loads(param["value"])
 ]]></code></script>
     <inport name="data" type="SALOME_TYPES/ParametricInput"/>
     <outport name="var" type="pyobj"/>
@@ -573,7 +633,7 @@ for param in data["specificParameters"]:
   </inline>
 
   <inline name="ObservationNodeFile">
-    <script><code><![CDATA[execfile(script)]]></code></script>
+    <script><code><![CDATA[with open(script, 'rb') as file: exec(file.read())]]></code></script>
     <inport name="var"    type="pyobj"/>
     <inport name="info"   type="pyobj"/>
     <inport name="script" type="string"/>