]> SALOME platform Git repositories - modules/adao.git/commitdiff
Salome HOME
Update and documentation of InputValuesTest
authorJean-Philippe ARGAUD <jean-philippe.argaud@edf.fr>
Sun, 8 Mar 2020 18:59:52 +0000 (19:59 +0100)
committerJean-Philippe ARGAUD <jean-philippe.argaud@edf.fr>
Sun, 8 Mar 2020 18:59:52 +0000 (19:59 +0100)
18 files changed:
doc/en/ref_algorithm_FunctionTest.rst
doc/en/ref_algorithm_InputValuesTest.rst [new file with mode: 0644]
doc/en/ref_algorithm_ObserverTest.rst
doc/en/ref_algorithm_ParallelFunctionTest.rst
doc/en/ref_entry_types.rst
doc/en/reference.rst
doc/en/snippets/PrintAllValuesFor.rst [new file with mode: 0644]
doc/en/snippets/ShowInformationOnlyFor.rst [new file with mode: 0644]
doc/fr/ref_algorithm_FunctionTest.rst
doc/fr/ref_algorithm_InputValuesTest.rst [new file with mode: 0644]
doc/fr/ref_algorithm_ObserverTest.rst
doc/fr/ref_algorithm_ParallelFunctionTest.rst
doc/fr/ref_entry_types.rst
doc/fr/reference.rst
doc/fr/snippets/PrintAllValuesFor.rst [new file with mode: 0644]
doc/fr/snippets/ShowInformationOnlyFor.rst [new file with mode: 0644]
src/daComposant/daAlgorithms/InputValuesTest.py
src/daComposant/daCore/BasicObjects.py

index c41eccb65c726d797582258593983e8c53c0f8ae..91072d879a498ad2c32be9accbb16e286156c56b 100644 (file)
@@ -35,10 +35,12 @@ correctly and that its call is compatible with its usage in ADAO algorithms. In
 practice, it allows to call one or several times the operator, activating or not
 the "debug" mode during execution.
 
-Statistics on input and output vectors for each execution of operator are given,
-and an another global statistic is given at the end of the checking algorithm.
-The precision of printed outputs can be controlled to facilitate automatic tests
-of operator.
+Statistics on input and output vectors for each execution of operator are
+given, and an another global statistic is given at the end of the checking
+algorithm. The precision of printed outputs can be controlled to facilitate
+automatic tests of operator. It may also be useful to check the entries
+themselves beforehand with the intended test
+:ref:`section_ref_algorithm_InputValuesTest`.
 
 .. ------------------------------------ ..
 .. include:: snippets/Header2Algo02.rst
@@ -87,5 +89,6 @@ StoreSupplementaryCalculations
 .. ------------------------------------ ..
 .. include:: snippets/Header2Algo06.rst
 
+- :ref:`section_ref_algorithm_InputValuesTest`
 - :ref:`section_ref_algorithm_LinearityTest`
 - :ref:`section_ref_algorithm_ParallelFunctionTest`
diff --git a/doc/en/ref_algorithm_InputValuesTest.rst b/doc/en/ref_algorithm_InputValuesTest.rst
new file mode 100644 (file)
index 0000000..a3fb845
--- /dev/null
@@ -0,0 +1,74 @@
+..
+   Copyright (C) 2008-2020 EDF R&D
+
+   This file is part of SALOME ADAO module.
+
+   This library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   This library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with this library; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+
+   See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+
+   Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D
+
+.. index:: single: InputValuesTest
+.. _section_ref_algorithm_InputValuesTest:
+
+Checking algorithm "*InputValuesTest*"
+--------------------------------------
+
+.. ------------------------------------ ..
+.. include:: snippets/Header2Algo00.rst
+
+.. ------------------------------------ ..
+.. include:: snippets/Header2Algo01.rst
+
+This algorithm verifies the content of the current input variables and the way
+the data is interpreted or read during its acquisition, through the display of
+size information and statistics on the inputs. It also allows to display the
+whole content of the variables read in printed form for verification (*warning,
+if a variable is large in size, this can be difficult*).
+
+.. ------------------------------------ ..
+.. include:: snippets/Header2Algo02.rst
+
+.. include:: snippets/Background.rst
+
+.. include:: snippets/CheckingPoint.rst
+
+.. include:: snippets/Observation.rst
+
+*Tips for this algorithm:*
+
+    Because *"ObservationOperator"* is a required command for ALL checking
+    algorithms in the graphical interface, you have to provide a value for it,
+    despite the fact that this command is not required for this test, and will
+    not be used. The easiest way is to give "1" as a STRING,
+    *"ObservationOperator"* having to be of type *Matrix*.
+
+.. ------------------------------------ ..
+.. include:: snippets/Header2Algo03Chck.rst
+
+.. include:: snippets/NumberOfPrintedDigits.rst
+
+.. include:: snippets/PrintAllValuesFor.rst
+
+.. include:: snippets/ShowInformationOnlyFor.rst
+
+.. include:: snippets/SetDebug.rst
+
+.. ------------------------------------ ..
+.. include:: snippets/Header2Algo06.rst
+
+- :ref:`section_ref_algorithm_FunctionTest`
+- :ref:`section_ref_algorithm_ParallelFunctionTest`
index 8b2f4a3cf72a13ddc5e4a02f3cc1ebaecd8aea77..545a752bb6f29878b362f85eae73878b6b068b9b 100644 (file)
@@ -47,6 +47,6 @@ indicated in :ref:`section_ref_assimilation_keywords`.
 
     Because *"CheckingPoint"* and *"ObservationOperator"* are required commands
     for ALL checking algorithms in the interface, you have to provide a value
-    for them, despite the fact that these commands are not required for
-    *"ObserverTest"*, and will not be used. The easiest way is to give "1" as a
-    STRING for both, *"ObservationOperator"* having to be of type *Matrix*.
+    for them, despite the fact that these commands are not required for this
+    test, and will not be used. The easiest way is to give "1" as a STRING for
+    both, *"ObservationOperator"* having to be of type *Matrix*.
index a16f883e76926fabfd49969e1c63018c7e958b2e..f274da4fddaca8771985f0a027cd649473ac6e7e 100644 (file)
@@ -35,10 +35,12 @@ correctly in parallel and that its call is compatible with its usage in ADAO
 algorithms. In practice, it allows to call one or several times the operator in
 parallel, activating or not the "debug" mode during execution.
 
-Statistics on input and output vectors for each execution of operator are given,
-and an another global statistic is given at the end of the checking algorithm.
-The precision of printed outputs can be controlled to facilitate automatic tests
-of operator.
+Statistics on input and output vectors for each execution of operator are
+given, and an another global statistic is given at the end of the checking
+algorithm. The precision of printed outputs can be controlled to facilitate
+automatic tests of operator. It may also be useful to check the entries
+themselves beforehand with the intended test
+:ref:`section_ref_algorithm_InputValuesTest`.
 
 .. ------------------------------------ ..
 .. include:: snippets/Header2Algo02.rst
@@ -88,4 +90,5 @@ StoreSupplementaryCalculations
 .. include:: snippets/Header2Algo06.rst
 
 - :ref:`section_ref_algorithm_FunctionTest`
+- :ref:`section_ref_algorithm_InputValuesTest`
 - :ref:`section_ref_algorithm_LinearityTest`
index 4fb1cf96999fea1d19329f056a7d3d9bc128b835..f8fbd19087a5d3ab9202d574a6a1f5f07e49ec8f 100644 (file)
@@ -34,6 +34,10 @@ computationaly. These pseudo-types explicitly represent mathematical forms
 :ref:`section_notations` are also used, together with
 :ref:`section_ref_entry_types_names`.
 
+The explicit :ref:`section_ref_algorithm_InputValuesTest` test is designed so
+that the user can specifically check some entries, with the same analysis and
+criteria as during the usual setup of a study.
+
 .. _section_ref_entry_types_math:
 
 Pseudo-types of mathematical representation of data
index 3e48ba2979644f353dc44561eaee273f4d3b0382..6f92201200502058248120695e5aea9594735676 100644 (file)
@@ -134,6 +134,7 @@ The mathematical notations used afterward are explained in the section
    ref_algorithm_AdjointTest
    ref_algorithm_FunctionTest
    ref_algorithm_GradientTest
+   ref_algorithm_InputValuesTest
    ref_algorithm_LinearityTest
    ref_algorithm_LocalSensitivityTest
    ref_algorithm_ObserverTest
diff --git a/doc/en/snippets/PrintAllValuesFor.rst b/doc/en/snippets/PrintAllValuesFor.rst
new file mode 100644 (file)
index 0000000..9d0f0a8
--- /dev/null
@@ -0,0 +1,14 @@
+.. index:: single: PrintAllValuesFor
+
+PrintAllValuesFor
+  This key indicates the list of vector names whose detailed values are to be
+  printed, the default value being the empty list. If the named vector is not a
+  supplied entry, the name is simply ignored. The possible names are in the
+  following list: [
+  "Background",
+  "CheckingPoint",
+  "Observation",
+  ].
+
+  Exemple :
+  ``{"PrintAllValuesFor":["Background"]}``
diff --git a/doc/en/snippets/ShowInformationOnlyFor.rst b/doc/en/snippets/ShowInformationOnlyFor.rst
new file mode 100644 (file)
index 0000000..aabe3db
--- /dev/null
@@ -0,0 +1,15 @@
+.. index:: single: ShowInformationOnlyFor
+
+ShowInformationOnlyFor
+  This key indicates the list of vector names whose summarized information
+  (size, min/max...) is to be printed, the default value being the set of
+  vectors. If the named vector is not a provided entry, the name is simply
+  ignored. This allows you to restrict summarized printing. The possible names
+  are in the following list: [
+  "Background",
+  "CheckingPoint",
+  "Observation",
+  ].
+
+  Exemple :
+  ``{"ShowInformationOnlyFor":["Background"]}``
index 8d8ea478ca145e239018833743cf5857f6f440b7..0ec22a271dfa43d15499f78cd683541e0771e7b4 100644 (file)
@@ -40,7 +40,8 @@ Une statistique sur les vecteurs en entrée et en sortie de chaque exécution de
 l'opérateur est indiquée, et une autre globale est fournie de manière
 récapitulative à la fin de l'algorithme de vérification. La précision
 d'affichage est contrôlable pour permettre l'automatisation des tests
-d'opérateur.
+d'opérateur. Il peut être aussi utile de vérifier préalablement les entrées
+elles-mêmes avec le test prévu :ref:`section_ref_algorithm_InputValuesTest`.
 
 .. ------------------------------------ ..
 .. include:: snippets/Header2Algo02.rst
@@ -89,5 +90,6 @@ StoreSupplementaryCalculations
 .. ------------------------------------ ..
 .. include:: snippets/Header2Algo06.rst
 
+- :ref:`section_ref_algorithm_InputValuesTest`
 - :ref:`section_ref_algorithm_LinearityTest`
 - :ref:`section_ref_algorithm_ParallelFunctionTest`
diff --git a/doc/fr/ref_algorithm_InputValuesTest.rst b/doc/fr/ref_algorithm_InputValuesTest.rst
new file mode 100644 (file)
index 0000000..38a13d1
--- /dev/null
@@ -0,0 +1,77 @@
+..
+   Copyright (C) 2008-2020 EDF R&D
+
+   This file is part of SALOME ADAO module.
+
+   This library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   This library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with this library; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+
+   See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+
+   Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D
+
+.. index:: single: InputValuesTest
+.. _section_ref_algorithm_InputValuesTest:
+
+Algorithme de vérification "*InputValuesTest*"
+----------------------------------------------
+
+.. ------------------------------------ ..
+.. include:: snippets/Header2Algo00.rst
+
+.. ------------------------------------ ..
+.. include:: snippets/Header2Algo01.rst
+
+Cet algorithme permet de vérifier le contenu des variables d'entrée courantes
+et la manière dont les données sont interprétées ou lues lors de leur
+acquisition, à travers l'affichage des informations de taille et des
+statistique sur les entrées. Il permet aussi de restituer la totalité du
+contenu des variables lues sous forme imprimée pour vérification (*attention,
+si une variable est de grande taille, cette restitution peut être
+informatiquement problématique*).
+
+.. ------------------------------------ ..
+.. include:: snippets/Header2Algo02.rst
+
+.. include:: snippets/Background.rst
+
+.. include:: snippets/CheckingPoint.rst
+
+.. include:: snippets/Observation.rst
+
+*Astuce pour cet algorithme :*
+
+    Comme la commande *"ObservationOperator"* est requise pour TOUS les
+    algorithmes de vérification dans l'interface graphique, vous devez fournir
+    une valeur, malgré le fait que cette commandes ne soit pas nécessaires pour
+    cet test, et ne soit donc pas utilisée. La manière la plus simple est de
+    donner "1" comme un STRING, l'*"ObservationOperator"* devant être de type
+    *Matrix*.
+
+.. ------------------------------------ ..
+.. include:: snippets/Header2Algo03Chck.rst
+
+.. include:: snippets/NumberOfPrintedDigits.rst
+
+.. include:: snippets/PrintAllValuesFor.rst
+
+.. include:: snippets/ShowInformationOnlyFor.rst
+
+.. include:: snippets/SetDebug.rst
+
+.. ------------------------------------ ..
+.. include:: snippets/Header2Algo06.rst
+
+- :ref:`section_ref_algorithm_FunctionTest`
+- :ref:`section_ref_algorithm_ParallelFunctionTest`
index b9ff6c3406f337e6333785ac3f60757f15c49a97..c6f314ed0777a1869f04dc9ff10143c6bc2cccc4 100644 (file)
@@ -49,6 +49,6 @@ sont indiquées dans la :ref:`section_ref_checking_keywords`.
     Comme les commandes *"CheckingPoint"* et *"ObservationOperator"* sont
     requises pour TOUS les algorithmes de vérification dans l'interface, vous
     devez fournir une valeur, malgré le fait que ces commandes ne soient pas
-    nécessaires pour cet algorithme, et ne sont donc pas utilisées. La manière
-    la plus simple est de donner "1" comme un STRING pour les deux,
+    nécessaires pour ce test, et ne sont donc pas utilisées. La manière la plus
+    simple est de donner "1" comme un STRING pour les deux,
     l'*"ObservationOperator"* devant être de type *Matrix*.
index 46046cc123fe0babfe1cb4718f75aa0e4dde0734..56429f745ff34b32f5c2ce665504098cf3a44b9c 100644 (file)
@@ -40,7 +40,8 @@ Une statistique sur les vecteurs en entrée et en sortie de chaque exécution de
 l'opérateur est indiquée, et une autre globale est fournie de manière
 récapitulative à la fin de l'algorithme de vérification. La précision
 d'affichage est contrôlable pour permettre l'automatisation des tests
-d'opérateur.
+d'opérateur. Il peut être aussi utile de vérifier préalablement les entrées
+elles-mêmes avec le test prévu :ref:`section_ref_algorithm_InputValuesTest`.
 
 .. ------------------------------------ ..
 .. include:: snippets/Header2Algo02.rst
@@ -90,4 +91,5 @@ StoreSupplementaryCalculations
 .. include:: snippets/Header2Algo06.rst
 
 - :ref:`section_ref_algorithm_FunctionTest`
+- :ref:`section_ref_algorithm_InputValuesTest`
 - :ref:`section_ref_algorithm_LinearityTest`
index 40049ce27199b84e90da59d774e1a7d0632658fa..fc2c023e7f9afba9f90c1970a15f76762ac7b25c 100644 (file)
@@ -34,6 +34,10 @@ simples (:ref:`section_ref_entry_types_info`), que l'on détaille ici. On
 utilise aussi les :ref:`section_notations`, en même temps que les
 :ref:`section_ref_entry_types_names`.
 
+Le test explicite :ref:`section_ref_algorithm_InputValuesTest` est prévu pour
+que l'utilisateur puisse vérifier spécifiquement certaines entrées, avec les
+mêmes analyses et critères que lors de la mise en place usuelle d'une étude.
+
 .. _section_ref_entry_types_math:
 
 Pseudo-types de représentation mathématique des données
index 2d57133ffb00a9f1e686785c1b781285acdfad24..645d6bf223e1cafeeed0725bb49d6715228018a8 100644 (file)
@@ -135,6 +135,7 @@ section :ref:`section_theory`.
    ref_algorithm_AdjointTest
    ref_algorithm_FunctionTest
    ref_algorithm_GradientTest
+   ref_algorithm_InputValuesTest
    ref_algorithm_LinearityTest
    ref_algorithm_LocalSensitivityTest
    ref_algorithm_ObserverTest
diff --git a/doc/fr/snippets/PrintAllValuesFor.rst b/doc/fr/snippets/PrintAllValuesFor.rst
new file mode 100644 (file)
index 0000000..018d975
--- /dev/null
@@ -0,0 +1,14 @@
+.. index:: single: PrintAllValuesFor
+
+PrintAllValuesFor
+  Cette clé indique la liste des noms de vecteurs dont les valeurs détaillées
+  sont à imprimer, la valeur par défaut étant la liste vide. Si le vecteur
+  nommé n'est pas une entrée fournie, le nom est simplement ignoré. Les noms
+  possibles sont dans la liste suivante : [
+  "Background",
+  "CheckingPoint",
+  "Observation",
+  ].
+
+  Exemple :
+  ``{"PrintAllValuesFor":["Background"]}``
diff --git a/doc/fr/snippets/ShowInformationOnlyFor.rst b/doc/fr/snippets/ShowInformationOnlyFor.rst
new file mode 100644 (file)
index 0000000..953c7b9
--- /dev/null
@@ -0,0 +1,15 @@
+.. index:: single: ShowInformationOnlyFor
+
+ShowInformationOnlyFor
+  Cette clé indique la liste des noms de vecteurs dont les informations
+  synthétiques (taille, min/max...) sont à imprimer, la valeur par défaut étant
+  l'ensemble des vecteurs. Si le vecteur nommé n'est pas une entrée fournie, le
+  nom est simplement ignoré. Cela permet de restreindre les impressions
+  synthétiques. Les noms possibles sont dans la liste suivante : [
+  "Background",
+  "CheckingPoint",
+  "Observation",
+  ].
+
+  Exemple :
+  ``{"ShowInformationOnlyFor":["Background"]}``
index 9a1dff757186e59e3ab32aa41e6e1a6f395ab925..6f2c60f826b52052489779168ad0702f74226a60 100644 (file)
@@ -36,10 +36,21 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
             minval   = 0,
             )
         self.defineRequiredParameter(
-            name     = "PrintValuesFor",
+            name     = "PrintAllValuesFor",
             default  = [],
             typecast = tuple,
-            message  = "Liste de vecteurs dont les valeurs sont à imprimer",
+            message  = "Liste de noms de vecteurs dont les valeurs détaillées sont à imprimer",
+            listval  = [
+                "Background",
+                "CheckingPoint",
+                "Observation",
+                ]
+            )
+        self.defineRequiredParameter(
+            name     = "ShowInformationOnlyFor",
+            default  = ["Background", "CheckingPoint", "Observation"],
+            typecast = tuple,
+            message  = "Liste de noms de vecteurs dont les informations synthétiques sont à imprimer",
             listval  = [
                 "Background",
                 "CheckingPoint",
@@ -63,12 +74,15 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
         numpy.set_printoptions(precision=_p)
         #
         def __buildPrintableVectorProperties( __name, __vector ):
-            if __vector is None:   return ""
-            if len(__vector) == 0: return ""
-            if hasattr(__vector,"name") and __name != __vector.name():
-                    return ""
+            if __vector is None:                                         return ""
+            if len(__vector) == 0:                                       return ""
+            if hasattr(__vector,"name") and __name != __vector.name():   return ""
+            if __name not in self._parameters["ShowInformationOnlyFor"]: return ""
             #
-            __title = "Information for %svector:"%(str(__name)+" ",)
+            if hasattr(__vector,"mins"):
+                __title = "Information for %svector series:"%(str(__name)+" ",)
+            else:
+                __title = "Information for %svector:"%(str(__name)+" ",)
             msgs = "\n"
             msgs += ("===> "+__title+"\n")
             msgs += ("     "+("-"*len(__title))+"\n")
@@ -94,7 +108,7 @@ class ElementaryAlgorithm(BasicObjects.Algorithm):
                 msgs += ("       Serie of maximum values...: %s\n")%numpy.array(__vector.maxs())
             else:
                 msgs += ("       Maximum of vector.........: %12."+str(_p)+"e\n")%__vector.max()
-            if self._parameters["SetDebug"] or __name in self._parameters["PrintValuesFor"]:
+            if self._parameters["SetDebug"] or __name in self._parameters["PrintAllValuesFor"]:
                 msgs += ("\n")
                 msgs += ("     Printing all values :\n")
                 msgs += ("%s"%(__vector,))
index 5d0e6107f0c0b2ec7e8bc4ad524053f49727eadf..9535f5b06553c43c4f54cd6bbca3f6224dcbf22d 100644 (file)
@@ -753,7 +753,7 @@ class Algorithm(object):
                     _EI = numpy.diag(1./numpy.sqrt(numpy.diag(_A)))
                     _C = numpy.dot(_EI, numpy.dot(_A, _EI))
                     self.StoredVariables["APosterioriCorrelations"].store( _C )
-        if _oH is not None:
+        if _oH is not None and "Direct" in _oH and "Tangent" in _oH and "Adjoint" in _oH:
             logging.debug("%s Nombre d'évaluation(s) de l'opérateur d'observation direct/tangent/adjoint.: %i/%i/%i", self._name, _oH["Direct"].nbcalls(0),_oH["Tangent"].nbcalls(0),_oH["Adjoint"].nbcalls(0))
             logging.debug("%s Nombre d'appels au cache d'opérateur d'observation direct/tangent/adjoint..: %i/%i/%i", self._name, _oH["Direct"].nbcalls(3),_oH["Tangent"].nbcalls(3),_oH["Adjoint"].nbcalls(3))
         logging.debug("%s Taille mémoire utilisée de %.0f Mio", self._name, self._m.getUsedMemory("Mio"))