From c6357cfd28cb26d1d505597b5bdf669af6807959 Mon Sep 17 00:00:00 2001 From: Jean-Philippe ARGAUD Date: Wed, 30 Jun 2021 21:40:34 +0200 Subject: [PATCH] Documentation update (observers and Pf) --- doc/en/images/ref_observer_simple.png | Bin 0 -> 62101 bytes doc/en/ref_algorithm_EnsembleKalmanFilter.rst | 5 +- doc/en/ref_algorithm_ExtendedKalmanFilter.rst | 3 + doc/en/ref_observers_requirements.rst | 96 +++++++++------ doc/en/snippets/ForecastCovariance.rst | 9 ++ doc/fr/images/ref_observer_simple.png | Bin 0 -> 61200 bytes doc/fr/ref_algorithm_EnsembleKalmanFilter.rst | 7 +- doc/fr/ref_algorithm_ExtendedKalmanFilter.rst | 3 + doc/fr/ref_observers_requirements.rst | 112 ++++++++++++------ doc/fr/snippets/ForecastCovariance.rst | 9 ++ 10 files changed, 168 insertions(+), 76 deletions(-) create mode 100644 doc/en/images/ref_observer_simple.png create mode 100644 doc/en/snippets/ForecastCovariance.rst create mode 100644 doc/fr/images/ref_observer_simple.png create mode 100644 doc/fr/snippets/ForecastCovariance.rst diff --git a/doc/en/images/ref_observer_simple.png b/doc/en/images/ref_observer_simple.png new file mode 100644 index 0000000000000000000000000000000000000000..a4460a377eb705bfb1176e17e5aaa9542437edc0 GIT binary patch literal 62101 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

_rx*NQsgjJgJJat^Mk^{1Ef=MVIHPLg+mam<14q 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 literal 0 HcmV?d00001 diff --git a/doc/en/ref_algorithm_EnsembleKalmanFilter.rst b/doc/en/ref_algorithm_EnsembleKalmanFilter.rst index 097963d..baef174 100644 --- a/doc/en/ref_algorithm_EnsembleKalmanFilter.rst +++ b/doc/en/ref_algorithm_EnsembleKalmanFilter.rst @@ -69,7 +69,7 @@ robust formulations are proposed here: - "ETKF" (Ensemble-Transform Kalman Filter), deterministic EnKF algorithm, allowing treatment of non-linear evolution operator with a lot less members (one recommends to use a number of members on the order of 10 or even sometimes less), - "ETKF-N" (Ensemble-Transform Kalman Filter of finite size N), ETKF algorithm of "finite size N", yhat doesn't need inflation that is often required with the other algorithms, - "MLEF" (Maximum Likelihood Kalman Filter, see [Zupanski05]_), deterministic EnKF scheme, allowing in addition the consistent treament of non-linear observation operator, -- "IEnKF" (Iterative_EnKF), deterministic EnKF scheme, improving treament of operators non-linearities. +- "IEnKF" (Iterative EnKF), deterministic EnKF scheme, improving treament of operators non-linearities. Without being a universal recommandation, one recommend to use "EnKF" as a reference algorithm, and the other algorithms (in this order) as means to @@ -129,6 +129,7 @@ StoreSupplementaryCalculations "CurrentIterationNumber", "CurrentOptimum", "CurrentState", + "ForecastCovariance", "ForecastState", "IndexOfOptimum", "InnovationAtCurrentAnalysis", @@ -181,6 +182,8 @@ StoreSupplementaryCalculations .. include:: snippets/CurrentState.rst +.. include:: snippets/ForecastCovariance.rst + .. include:: snippets/ForecastState.rst .. include:: snippets/IndexOfOptimum.rst diff --git a/doc/en/ref_algorithm_ExtendedKalmanFilter.rst b/doc/en/ref_algorithm_ExtendedKalmanFilter.rst index df75f97..c4429c5 100644 --- a/doc/en/ref_algorithm_ExtendedKalmanFilter.rst +++ b/doc/en/ref_algorithm_ExtendedKalmanFilter.rst @@ -107,6 +107,7 @@ StoreSupplementaryCalculations "CurrentIterationNumber", "CurrentOptimum", "CurrentState", + "ForecastCovariance", "ForecastState", "IndexOfOptimum", "InnovationAtCurrentAnalysis", @@ -157,6 +158,8 @@ StoreSupplementaryCalculations .. include:: snippets/CurrentState.rst +.. include:: snippets/ForecastCovariance.rst + .. include:: snippets/ForecastState.rst .. include:: snippets/IndexOfOptimum.rst diff --git a/doc/en/ref_observers_requirements.rst b/doc/en/ref_observers_requirements.rst index f9fa2ba..d20d8cc 100644 --- a/doc/en/ref_observers_requirements.rst +++ b/doc/en/ref_observers_requirements.rst @@ -33,12 +33,24 @@ Requirements for functions describing an "*observer*" Some special variables, internal to the optimization process and used inside calculation, can be monitored during an ADAO calculation. These variables can be printed, plotted, saved, etc. by the user. This can be done using some -"*observer*", sometimes also called "callback". They are Python scripts, each -one associated to a given variable, and that are automatically activated for -each variable modification. +"*observer*", sometimes also called "callback" on a variable. They are special +Python functions, each one associated with a given variable, as conceptually +described in the following figure: + + .. ref_observer_simple: + .. image:: images/ref_observer_simple.png + :align: center + :width: 75% + .. centered:: + **Conceptual definition of an "observer" function** + +These "*observer*" functions are described in the next subsections. + +Register and activate of an "*observer*" function ++++++++++++++++++++++++++++++++++++++++++++++++++ In the graphical interface EFICAS of ADAO, there are 3 practical methods to -provide an "*observer*" in an ADAO case. The method is chosen with the +provide an "*observer*" function in an ADAO case. The method is chosen with the "*NodeType*" keyword of each "*observer*" entry type, as shown in the following figure: @@ -47,12 +59,12 @@ figure: :align: center :width: 100% .. centered:: - **Choosing for an "*observer*" its entry type** + **Choosing its entry type for an "observer" function** -The "*observer*" can be given as an explicit script (entry of type "*String*"), -as a script in an external file (entry of type "*Script*"), or by using a -template or pattern (entry of type"*Template*") available by default in ADAO -when using the graphical editor and detailed in the following part +The "*observer*" function can be given as an explicit script (entry of type +"*String*"), as a script in an external file (entry of type "*Script*"), or by +using a template or pattern (entry of type"*Template*") available by default in +ADAO when using the graphical editor and detailed in the following part :ref:`section_ref_observers_templates`. These templates are simple scripts that can be tuned by the user, either in the integrated edition stage of the case with ADAO EFICAS, or in the edition stage of the schema before execution, to @@ -60,40 +72,56 @@ improve the ADAO case performance in the SALOME execution supervisor YACS. In the textual interface (TUI) of ADAO (see the part :ref:`section_tui`), the same information can be given with the command "*setObserver*" applied to a -specific variable indicated in the argument "*Variable*". The other arguments -of this command allow to define the observer either as a template (argument -"*Template*") representing one of the scripts detailed in the part -:ref:`section_ref_observers_templates`, or as an explicit script (argument -"*String*"), or as a script in an external file (argument "*Script*"). - -General form for a script describing an *observer* -++++++++++++++++++++++++++++++++++++++++++++++++++ - -To use this capability, the user must have or build scripts that have on -standard input (that is, in the naming space) the variables ``var`` and -``info``. The variable ``var`` is to be used as an object of list/tuple type, -that contains the variable of interest indexed by the updating step. - -As an example, here is a very simple script (similar to the model -"*ValuePrinter*"), that can be used to print the value of the monitored -variable:: +specific variable indicated using the "*Variable*" argument. The other +arguments of this command allow to define an "*observer*" either as a template +("*Template*" argument) representing one of the scripts detailed in the part +:ref:`section_ref_observers_templates`, or as an explicit script ("*String*" +argument), or as a script in an external file ("*Script*" argument). + +General form for a script describing an "*observer*" function ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +An "*observer*" function is a special Python script, associated with a given +variable, and that is automatically activated for each variable modification +during calculation. Every (carefully established) function that applies to the +selected variable can be used. Many "*observer*" functions are available by +default. + +To use directly this "*observer*" capability, the user must use or build a +script that have on standard input (that is, in the naming space) the variables +``var`` and ``info``. The variable ``var`` is to be used as an object of +list/tuple type, that contains the history of the variable of interest, indexed +by the iterating steps. Only the body of the "*observer*" function has to be +specified by the user, not the function call itself. + +As an example, here is a very simple script (similar to the "*ValuePrinter*" +template), that can be used to print the value of the monitored variable:: print(" --->",info," Value =",var[-1]) Stored as a Python file or as an explicit string, these script lines can be associated to each variable found in the keyword "*SELECTION*" of the "*Observers*" command of the ADAO case: "*Analysis*", "*CurrentState*", -"*CostFunction*"... The current value of the variable will be printed at each -step of the optimization or data assimilation algorithm. The "*observer*" can -include graphical output, storage capacities, complex treatment, statistical -analysis, etc. - -Hereinafter we give the identifier and the contents of each model available. +"*CostFunction*"... The current value of the variable will for example be +printed at each step of the optimization or data assimilation algorithm. The +"*observer*" can include graphical output, storage capacities, complex +treatment, statistical analysis, etc. If the variable, to which the +"*observer*" is linked, is not required in the calculation and by the user, the +execution of this "*observer*" is simply never activated. + +.. warning:: + If not using the default available templates, it is up to the user to make + carefully established function scripts or external programs that do not + crash before being registered as an "*observer*" function. The debugging + can otherwise be really difficult! + +Hereinafter we give the identifier and the contents of all the available +"*observer*" models. .. _section_ref_observers_templates: -Inventory of available *observer* models ("*Template*") -+++++++++++++++++++++++++++++++++++++++++++++++++++++++ +Inventory of available "*observer*" function models ("*Template*") +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .. index:: single: ValuePrinter (Observer) diff --git a/doc/en/snippets/ForecastCovariance.rst b/doc/en/snippets/ForecastCovariance.rst new file mode 100644 index 0000000..e2bc302 --- /dev/null +++ b/doc/en/snippets/ForecastCovariance.rst @@ -0,0 +1,9 @@ +.. index:: single: ForecastCovariance + +ForecastCovariance + *Liste of matrices*. Each element is a forecast state error covariance + matrix predicted by the model during the time iteration of the algorithm + used. + + Example : + ``Pf = ADD.get("ForecastCovariance")[-1]`` diff --git a/doc/fr/images/ref_observer_simple.png b/doc/fr/images/ref_observer_simple.png new file mode 100644 index 0000000000000000000000000000000000000000..a73a6eae5aaec03a8474d8393da3bd0706a308d7 GIT binary patch literal 61200 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 ZokhWvqW2+Y=|{ItU0M5n$z98*{|Em}7T*8> literal 0 HcmV?d00001 diff --git a/doc/fr/ref_algorithm_EnsembleKalmanFilter.rst b/doc/fr/ref_algorithm_EnsembleKalmanFilter.rst index 9767961..42fd995 100644 --- a/doc/fr/ref_algorithm_EnsembleKalmanFilter.rst +++ b/doc/fr/ref_algorithm_EnsembleKalmanFilter.rst @@ -68,9 +68,9 @@ formulations stables et robustes suivantes : - "EnKF" (Ensemble Kalman Filter, voir [Evensen94]_), algorithme stochastique original, permettant de traiter de manière consistante un opérateur d'évolution non-linéaire, - "ETKF" (Ensemble-Transform Kalman Filter), algorithme déterministe d'EnKF, permettant de traiter un opérateur d'évolution non-linéaire avec beaucoup moins de membres (on recommande d'utiliser un nombre de membres de l'ordre de 10 ou même parfois moins), -- "ETKF-N" (Ensemble-Transform Kalman Filter of finite size N), algorithme d'ETKF dit de "taille finie N", évitant de recourir à une inflation souvent nécessaire avec les autres algorithms +- "ETKF-N" (Ensemble-Transform Kalman Filter of finite size N), algorithme d'ETKF dit de "taille finie N", évitant de recourir à une inflation souvent nécessaire avec les autres algorithmes, - "MLEF" (Maximum Likelihood Kalman Filter, voir [Zupanski05]_), schéma déterministe d'EnKF, permettant en plus de traiter de manière consistante un opérateur d'observation non-linéaire), -- "IEnKF" (Iterative_EnKF), schéma déterministe d'EnKF, améliorant le traitement des non-linéarités des opérateurs. +- "IEnKF" (Iterative EnKF), schéma déterministe d'EnKF, améliorant le traitement des non-linéarités des opérateurs. Sans pouvoir prétendre à l'universalité, on recommande d'utiliser l'"EnKF" comme référence, et les autres algorithmes (dans l'ordre) comme des moyens pour @@ -132,6 +132,7 @@ StoreSupplementaryCalculations "CurrentIterationNumber", "CurrentOptimum", "CurrentState", + "ForecastCovariance", "ForecastState", "IndexOfOptimum", "InnovationAtCurrentAnalysis", @@ -184,6 +185,8 @@ StoreSupplementaryCalculations .. include:: snippets/CurrentState.rst +.. include:: snippets/ForecastCovariance.rst + .. include:: snippets/ForecastState.rst .. include:: snippets/IndexOfOptimum.rst diff --git a/doc/fr/ref_algorithm_ExtendedKalmanFilter.rst b/doc/fr/ref_algorithm_ExtendedKalmanFilter.rst index ebc0244..bde01ed 100644 --- a/doc/fr/ref_algorithm_ExtendedKalmanFilter.rst +++ b/doc/fr/ref_algorithm_ExtendedKalmanFilter.rst @@ -109,6 +109,7 @@ StoreSupplementaryCalculations "CurrentIterationNumber", "CurrentOptimum", "CurrentState", + "ForecastCovariance", "ForecastState", "IndexOfOptimum", "InnovationAtCurrentAnalysis", @@ -159,6 +160,8 @@ StoreSupplementaryCalculations .. include:: snippets/CurrentState.rst +.. include:: snippets/ForecastCovariance.rst + .. include:: snippets/ForecastState.rst .. include:: snippets/IndexOfOptimum.rst diff --git a/doc/fr/ref_observers_requirements.rst b/doc/fr/ref_observers_requirements.rst index dd2e2f9..23f8a8b 100644 --- a/doc/fr/ref_observers_requirements.rst +++ b/doc/fr/ref_observers_requirements.rst @@ -33,49 +33,72 @@ Exigences pour les fonctions décrivant un "*observer*" Certaines variables spéciales, internes à l'optimisation et utilisées au cours des calculs, peuvent être surveillées durant un calcul ADAO. Ces variables peuvent être affichées, tracées, enregistrées, etc. par l'utilisateur. C'est -réalisable en utilisant des "*observer*", parfois aussi appelés des "callback". -Ce sont des scripts Python, qui sont chacun associés à une variable donnée, et -qui sont automatiquement activés à chaque modification de la variable. +réalisable en utilisant des "*observer*", parfois aussi appelés des "callback" +sur une variable. Ce sont des fonctions Python spéciales, qui sont chacune +associées à une variable donnée, comme décrit conceptuellement dans la figure +suivante : + + .. ref_observer_simple: + .. image:: images/ref_observer_simple.png + :align: center + :width: 75% + .. centered:: + **Définition conceptuelle d'une fonction "observer"** + +Ces fonctions "*observer*" sont décrites dans les sous-sections suivantes. + +Enregistrer et activer une fonction "*observer*" +++++++++++++++++++++++++++++++++++++++++++++++++ Dans l'interface graphique EFICAS d'ADAO, il y a 3 méthodes pratiques pour -intégrer un "*observer*" dans un cas ADAO. La méthode est choisie à l'aide du -mot-clé "*NodeType*" de chaque entrée de type "*observer*", comme montré dans -la figure qui suit : +intégrer une fonction "*observer*" dans un cas ADAO. La méthode est choisie à +l'aide du mot-clé "*NodeType*" de chaque entrée de type "*observer*", comme +montré dans la figure qui suit : .. eficas_observer_nodetype: .. image:: images/eficas_observer_nodetype.png :align: center :width: 100% .. centered:: - **Choisir pour un "*observer*" son type d'entrée** - -L'"*observer*" peut être fourni sous la forme d'un script explicite (entrée de -type "*String*"), d'un script contenu dans un fichier externe (entrée de type -"*Script*"), ou en utilisant un modèle (entrée de type "*Template*") fourni par -défaut dans ADAO lors de l'usage de l'éditeur graphique EFICAS d'ADAO et -détaillé dans la partie :ref:`section_ref_observers_templates` qui suit. Ces -derniers sont des scripts simples qui peuvent être adaptés par l'utilisateur, -soit dans l'étape d'édition intégrée du cas avec EFICAS d'ADAO, soit dans -l'étape d'édition du schéma avant l'exécution, pour améliorer la performance du -calcul ADAO dans le superviseur d'exécution de SALOME. + **Choisir son type d'entrée pour une fonction "observer"** + +Une fonction "*observer*" peut être fourni sous la forme d'un script explicite +(entrée de type "*String*"), d'un script contenu dans un fichier externe +(entrée de type "*Script*"), ou en utilisant un modèle (entrée de type +"*Template*") fourni par défaut dans ADAO lors de l'usage de l'éditeur +graphique EFICAS d'ADAO et détaillé dans la partie +:ref:`section_ref_observers_templates` qui suit. Ces derniers sont des scripts +simples qui peuvent être adaptés par l'utilisateur, soit dans l'étape d'édition +intégrée du cas avec EFICAS d'ADAO, soit dans l'étape d'édition du schéma avant +l'exécution, pour améliorer la performance du calcul ADAO dans le superviseur +d'exécution de SALOME. Dans l'interface textuelle (TUI) d'ADAO (voir la partie :ref:`section_tui`), les mêmes informations peuvent être données à l'aide de la commande -"*setObserver*" appliquée pour une variable données indiquée dans l'argument -"*Variable*". Les autres arguments de cette commande permettent de le définir -soit comme un template (argument "*Template*") désignant l'un des scripts -détaillés dans la partie :ref:`section_ref_observers_templates`, soit comme un -script explicite (argument "*String*"), soit comme un script contenu dans un -fichier externe (argument "*Script*"). - -Forme générale d'un script permettant de définir un *observer* -++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -Pour pouvoir utiliser cette capacité, l'utilisateur doit disposer ou construire -des scripts utilisant en entrée standard (i.e. disponible dans l'espace de -nommage) les variables ``var`` et ``info``. La variable ``var`` est à utiliser -comme un objet de type liste/tuple, contenant la variable d'intérêt indicée par -l'étape de mise à jour. +"*setObserver*" appliquée pour une variable donnée indiquée en utilisant +l'argument "*Variable*". Les autres arguments de cette commande permettent de +définir un "*observer*" soit comme un template (argument "*Template*") +désignant l'un des scripts détaillés dans la partie +:ref:`section_ref_observers_templates`, soit comme un script explicite +(argument "*String*"), soit comme un script contenu dans un fichier externe +(argument "*Script*"). + +Forme générale d'un script permettant de définir une fonction "*observer*" +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +Une fonction "*observer*" est un script Python spécial, associé à une variable +donnée, et qui est automatiquement activée à chaque modification de la variable +lors du calcul. Chaque fonction (soigneusement établie) qui s'applique à la +variable sélectionnée peut être utilisée. De nombreuses fonctions "*observer*" +sont disponibles par défaut. + +Pour pouvoir utiliser directement cette capacité "*observer*", l'utilisateur +doit utiliser ou construire un script utilisant en entrée standard (i.e. +disponible dans l'espace de nommage) les variables ``var`` et ``info``. La +variable ``var`` est à utiliser comme un objet de type liste/tuple, contenant +l'historique de la variable d'intérêt, indicé par les pas d'itérations. Seul le +corps de la fonction "*observer*" doit être spécifié par l'utilisateur, pas +l'appel de fonction lui-même. A titre d'exemple, voici un script très simple (similaire au modèle "*ValuePrinter*"), utilisable pour afficher la valeur d'une variable @@ -87,16 +110,27 @@ Stockées comme un fichier Python ou une chaîne de caractères explicite, ces lignes de script peuvent être associées à chaque variable présente dans le mot-clé "*SELECTION*" de la commande "*Observers*" du cas ADAO : "*Analysis*", "*CurrentState*", "*CostFunction*"... La valeur courante de la variable sera -affichée à chaque étape de l'algorithme d'optimisation ou d'assimilation. Les -"*observer*" peuvent inclure des capacités d'affichage graphique, de stockage, -de traitement complexe, d'analyse statistique, etc. - -On donne ci-après l'identifiant et le contenu de chaque modèle disponible. +par exemple affichée à chaque étape de l'algorithme d'optimisation ou +d'assimilation. Les "*observer*" peuvent inclure des capacités d'affichage +graphique, de stockage, de traitement complexe, d'analyse statistique, etc. Si +une variable, à laquelle est lié un "*observer*", n'est pas requise dans le +calcul et par l'utilisateur, l'exécution de cet "*observer*" n'est tout +simplement jamais activée. + +.. warning:: + Si les modèles disponibles par défaut ne sont pas utilisés, il revient à + l'utilisateur de faire des scripts de fonctions soigneusement établis ou + des programmes externes qui ne se plantent pas avant d'être enregistrés + comme une fonction "*observer*". Le débogage peut sinon être vraiment + difficile ! + +On donne ci-après l'identifiant et le contenu de tous les modèles "*observer*" +disponibles. .. _section_ref_observers_templates: -Inventaire des modèles d'*observer* disponibles ("*Template*") -++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +Inventaire des modèles de fonctions "*observer*" disponibles ("*Template*") ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .. index:: single: ValuePrinter (Observer) diff --git a/doc/fr/snippets/ForecastCovariance.rst b/doc/fr/snippets/ForecastCovariance.rst new file mode 100644 index 0000000..81d5dea --- /dev/null +++ b/doc/fr/snippets/ForecastCovariance.rst @@ -0,0 +1,9 @@ +.. index:: single: ForecastCovariance + +ForecastCovariance + *Liste de matrices*. Chaque élément est une matrice de covariance d'erreur + sur l'état prévu par le modèle au cours du déroulement itératif temporel de + l'algorithme utilisé. + + Exemple : + ``Pf = ADD.get("ForecastCovariance")[-1]`` -- 2.39.2