]> SALOME platform Git repositories - modules/adao.git/commitdiff
Salome HOME
Extending data file input capacity
authorJean-Philippe ARGAUD <jean-philippe.argaud@edf.fr>
Tue, 16 Jul 2019 12:43:32 +0000 (14:43 +0200)
committerJean-Philippe ARGAUD <jean-philippe.argaud@edf.fr>
Tue, 16 Jul 2019 12:43:32 +0000 (14:43 +0200)
bin/AdaoCatalogGenerator.py
doc/en/snippets/EntryTypeDataFile.rst
doc/fr/snippets/EntryTypeDataFile.rst
resources/ADAOSchemaCatalog.xml
src/daEficas/generator_adao.py
src/daSalome/daYacsSchemaCreator/infos_daComposant.py
src/daSalome/daYacsSchemaCreator/methods.py

index ed2c5f11ef12aa64dcbb911b1c5e811cbc032aa2..2fad6971a698d0a092a093606cd9a85671dd2f85 100644 (file)
@@ -144,6 +144,7 @@ def F_{data_name}(statut, fv=NoCheckInNS) : return FACT(
         ),
     DATA_DATA = BLOC ( condition = " FROM in ( 'DataFile', ) ",
         DATA_FILE = SIMP(statut = "o", typ = ("FichierNoAbs",'CSV Text Files (*.csv);;TSV Text Files (*.tsv);;TXT Text Files (*.txt);;NPY Binary Numpy Files (*.npy);;NPZ Binary Numpy Files (*.npz);;All Files (*)", ',), validators=[OnlyStr(), FunctionVal(ColDataFileExtVal)], fr="En attente d'un nom de fichier de données, avec ou sans le chemin complet pour le trouver, contenant ou plusieurs colonnes pour définir un unique vecteur continu", ang="Waiting for a data file name, with or without the full path to find it, containing one or more columns to define a unique continuous vector"),
+        ColMajor = SIMP(statut="f", typ = "I", into=(0, 1), defaut=0, fr="Variables en colonnes acquises par ligne (0) ou par colonne (1)", ang="Variables in columns acquired by line (0) or by column (1)"),
         ),
     STRING_DATA = BLOC ( condition = " FROM in ( 'String', ) ",
         STRING = SIMP(statut = "o", typ = "TXM",{ms_default} fr="En attente d'une chaine de caractères entre guillements. Pour construire un vecteur ou une matrice, ce doit être une suite de nombres, utilisant un espace ou une virgule pour séparer deux éléments et un point-virgule pour séparer deux lignes", ang="Waiting for a string in quotes. To build a vector or a matrix, it has to be a float serie, using a space or comma to separate two elements in a line, a semi-colon to separate rows"),
index ed34fe57e7c8be0bd8ddeb971cf3fb753374ff77..d2cc263163b9d2755397729d49ec1b3e5d59b6a7 100644 (file)
     - in binary format (single-variable in a Numpy file with a ".npy"
       extension, multi-variables in a NumpyZ file with a ".npz" extension)
 
-    By default, the values of a variable has to be ordered in rows
-    ("ColMajor=False"), but they can also be ordered in lines
+    By default, the values of a variable has to be ordered in rows to be
+    acquired record line by record line ("ColMajor=False"), but they can also
+    be ordered in lines to be acquired record row by record row
     ("ColMajor=True").
 
     Without information or with a void list, all the values of all the
     variables are used, but one can also select only the ones of the variables
-    that are indicated in the name list in "ColNames".
+    that are indicated in the name list "ColNames". the variable names are
+    always as header of columns.
 
     Example of CSV file for "*Observation*" variable in "*DataFile*" ::
 
index e322159fff955f3555c52436f4f9403d9551419a..49629fc4733c0790046ea29f5cd8fdf5e86eecc0 100644 (file)
       ".npy", multi-variables dans un fichier NumpyZ à extension ".npz").
 
     Par défaut, les valeurs d'une variable doivent être rangées en colonnes
-    ("ColMajor=False"), mais elles peuvent aussi être rangées en lignes
+    pour être acquises ligne d'enregistrement par ligne d'enregistrement
+    ("ColMajor=False"), mais elles peuvent aussi être rangées en lignes pour
+    être acquises colonne d'enregistrement par colonne d'enregistrement
     ("ColMajor=True").
 
-    Sans précision ou avec une liste vide pour les noms de variable, on utilise
-    les valeurs toutes les variables, mais on peut aussi sélectionner
-    uniquement celles des variables indiquées dans la liste indiquée de noms
-    dans "ColNames".
+    Sans précision ou avec une liste vide pour les noms de variables, on
+    utilise les valeurs toutes les variables, mais on peut aussi sélectionner
+    uniquement celles des variables indiquées dans la liste de noms fournie
+    dans "ColNames". Les noms de variable sont toujours en entête de colonne.
 
     Exemple de fichier CSV pour la variable "*Observation*" en "*DataFile*" ::
 
index 0b7d4d5ad9ab4d4bbea7d1e4f950bf7e386e472e..b818c89c08824cda89f262779f08d6bfd4283eee 100644 (file)
@@ -415,10 +415,14 @@ type = "Vector"
 
 if sys.version_info.major > 2: import adao
 from daCore.Interfaces import ImportFromFile as aif
-vector = numpy.ravel( aif(script).getvalue(columns)[1] )
+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"/>
@@ -481,10 +485,14 @@ type = "VectorSerie"
 if sys.version_info.major > 2: import adao
 from daCore.Interfaces import ImportFromFile as aif
 if len(columns) == 0: columns = None
-vector = numpy.transpose( aif(script).getvalue(columns)[1] )
+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"/>
index 9b66d87efb42574008b9a93da6f39b34056dab86..af993c9188c59f962cbd0f043c9ad0518955d6d4 100644 (file)
@@ -185,6 +185,8 @@ class AdaoGenerator(PythonGenerator):
       self.text_da += data_name + "_config['Data'] = '" + data      + "'\n"
       if search_text+"Stored" in self.dictMCVal.keys():
         self.text_da += data_name + "_config['Stored'] = '" +  str(self.dictMCVal[search_text+"Stored"])  + "'\n"
+      if search_type+"DATA_DATA__ColMajor" in self.dictMCVal.keys():
+        self.text_da += data_name + "_config['ColMajor'] = '" +  str(self.dictMCVal[search_type+"DATA_DATA__ColMajor"])  + "'\n"
       self.text_da += "study_config['" + data_name + "'] = " + data_name + "_config\n"
 
     if from_type == "ScriptWithSwitch":
index 3323f411b542ce58ab540ea4273615be31001334..374780d81ad9b2b38e72af98f15db85953e79090 100644 (file)
@@ -29,13 +29,18 @@ AnalysisData = {}
 AnalysisFromList = ["String", "Script"]
 
 # -- Infos from daCore --
-AssimData = ["Background", "BackgroundError",
-             "Observation", "ObservationError",
-             "ObservationOperator",
-             "EvolutionModel", "EvolutionError",
-             "AlgorithmParameters",
-             "CheckingPoint", "ControlInput",
-             ]
+AssimData = [
+    "Background",
+    "BackgroundError",
+    "Observation",
+    "ObservationError",
+    "ObservationOperator",
+    "EvolutionModel",
+    "EvolutionError",
+    "AlgorithmParameters",
+    "CheckingPoint",
+    "ControlInput",
+    ]
 
 AssimType = {}
 AssimType["Background"]          = ["Vector", "VectorSerie"]
index accc553739da6295d711b18199c978aa56361067..6a1ac12e975da6806dfc84a34f3c490ab61a5d35 100644 (file)
@@ -267,6 +267,11 @@ def create_yacs_proc(study_config):
         back_node = factory_back_node.cloneNode("Get" + key)
         back_node.getInputPort("script").edInitPy(data_config["Data"])
         back_node.getInputPort("columns").edInitPy((key,)) # On impose le concept, et le schéma YACS est ammendable
+        if "ColMajor" in data_config:
+            colmajor = bool(data_config["ColMajor"])
+        else:
+            colmajor = False
+        back_node.getInputPort("colmajor").edInitPy(colmajor) # On impose le concept, et le schéma YACS est ammendable
         ADAO_Case.edAddChild(back_node)
         # Set content of the node
         back_node_script = back_node.getScript()
@@ -349,6 +354,11 @@ def create_yacs_proc(study_config):
         back_node = factory_back_node.cloneNode("Get" + key)
         back_node.getInputPort("script").edInitPy(data_config["Data"])
         back_node.getInputPort("columns").edInitPy(()) # On impose aucun nom et le schéma YACS est ammendable
+        if "ColMajor" in data_config:
+            colmajor = bool(data_config["ColMajor"])
+        else:
+            colmajor = False
+        back_node.getInputPort("colmajor").edInitPy(colmajor) # On impose le concept, et le schéma YACS est ammendable
         ADAO_Case.edAddChild(back_node)
         # Set content of the node
         back_node_script = back_node.getScript()