Skip to content

Note

Click here to download the full example code

How to define and run a stochastic validation case.

Problem

I want to validate a model at several validation points and quantify the uncertainty due to the uncertainty on the model inputs and the epistemic uncertainties on the reference data.

Based on repeated reference data, the stochastic validation case of VIMSEO allows to take into account: - the uncertainty on the reference data - the uncertainty on model inputs

and propagate these uncertainties through the model. On the output quantity of interest, this validation tool uses specific metrics that can handle stochastic variables. It compares the cumulative distribution function (CDF) of these variables and outputs scalar metrics such as the area between the two CDFs, the relative mean to mean error, or the relative error on a given percentile.

from __future__ import annotations

import logging

from gemseo.datasets.io_dataset import IODataset

from vimseo import EXAMPLE_RUNS_DIR_NAME
from vimseo.api import activate_logger
from vimseo.api import create_model
from vimseo.core.model_settings import IntegratedModelSettings
from vimseo.io.space_io import SpaceToolFileIO
from vimseo.material.material import Material
from vimseo.material_lib import MATERIAL_LIB_DIR
from vimseo.storage_management.base_storage_manager import PersistencyPolicy
from vimseo.tools.io.reader_file_dataframe import ReaderFileDataFrame
from vimseo.tools.io.reader_file_dataframe import ReaderFileDataFrameSettings
from vimseo.tools.validation.validation_point import NominalValuesOutputType
from vimseo.tools.validation.validation_point import StochasticValidationPoint
from vimseo.tools.validation.validation_point import StochasticValidationPointInputs
from vimseo.tools.validation.validation_point import StochasticValidationPointSettings
from vimseo.tools.validation.validation_point import read_nominal_values
from vimseo.tools.validation_case.validation_case import DeterministicValidationCase
from vimseo.tools.validation_case.validation_case_result import ValidationCaseResult
from vimseo.utilities.datasets import SEP
from vimseo.utilities.generate_validation_reference import Bias
from vimseo.utilities.generate_validation_reference import (
    generate_reference_from_parameter_space,
)

activate_logger(level=logging.INFO)

A first step is to generate uncertain reference data:

model_name = "BendingTestAnalytical"
load_case = "Cantilever"
target_model = create_model(
    model_name,
    load_case,
    model_options=IntegratedModelSettings(
        directory_archive_persistency=PersistencyPolicy.DELETE_ALWAYS,
        directory_scratch_persistency=PersistencyPolicy.DELETE_ALWAYS,
    ),
)
target_model.cache = None

for mult_factor, batch in zip([1.01, 1.02, 1.03], [1, 2, 3], strict=False):
    reference_dataset_cantilever = generate_reference_from_parameter_space(
        target_model,
        SpaceToolFileIO()
        .read(file_name="bending_test_validation_input_space.json")
        .parameter_space,
        n_samples=6,
        input_names=["width", "height", "imposed_dplt"],
        output_names=["reaction_forces", "maximum_dplt"],
        outputs_to_bias={"reaction_forces": Bias(mult_factor=mult_factor)},
        additional_name_to_data={"nominal_length": 600.0, "batch": batch},
    )
    reference_dataset_cantilever.to_csv(
        f"reference_validation_bending_test_cantilever_{batch}.csv",
        sep=SEP,
        index=False,
    )
    print(f"The reference data for batch {batch}: ", reference_dataset_cantilever)

Out:

/home/sebastien.bocquet/PycharmProjects/vimseo/.tox/doc/lib/python3.11/site-packages/pydantic/main.py:209: DeprecationWarning:

Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)

    INFO - 16:52:19: Working directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/CustomDOETool/53
    INFO - 16:52:19:  
    INFO - 16:52:19: *** Start DOEScenario execution ***
    INFO - 16:52:19: DOEScenario
    INFO - 16:52:19:    Disciplines: Model BendingTestAnalytical:  An analytical model for the bending of a parallelepipedic beam
    INFO - 16:52:19: 
    INFO - 16:52:19: Load case:
    INFO - 16:52:19:    Load case Cantilever: A cantilever load case.
    INFO - 16:52:19:    
    INFO - 16:52:19:    Boundary condition variables:
    INFO - 16:52:19:    ['imposed_dplt', 'relative_dplt_location']
    INFO - 16:52:19:    
    INFO - 16:52:19:    Plot parameters:
    INFO - 16:52:19:    {
    INFO - 16:52:19:     "curves": []
    INFO - 16:52:19: }
    INFO - 16:52:19:    Load:
    INFO - 16:52:19:    Load(direction='', sign='', type='')
    INFO - 16:52:19: 
    INFO - 16:52:19: Default values:
    INFO - 16:52:19:    
    INFO - 16:52:19:    Default geometrical variables:
    INFO - 16:52:19:    {"height": [40.0], "length": [600.0], "width": [30.0]}
    INFO - 16:52:19:    
    INFO - 16:52:19:    Default numerical variables:
    INFO - 16:52:19:    {}
    INFO - 16:52:19:    
    INFO - 16:52:19:    Default boundary conditions variables:
    INFO - 16:52:19:    {"imposed_dplt": [-5.0], "relative_dplt_location": [1.0]}
    INFO - 16:52:19:    
    INFO - 16:52:19:    Default material variables:
    INFO - 16:52:19:    {"nu_p": [0.3], "young_modulus": [210000.0]}
    INFO - 16:52:19: model_inputs:
    INFO - 16:52:19:    [
    INFO - 16:52:19:     "length",
    INFO - 16:52:19:     "width",
    INFO - 16:52:19:     "height",
    INFO - 16:52:19:     "imposed_dplt",
    INFO - 16:52:19:     "relative_dplt_location",
    INFO - 16:52:19:     "young_modulus",
    INFO - 16:52:19:     "nu_p"
    INFO - 16:52:19: ]
    INFO - 16:52:19: model_outputs:
    INFO - 16:52:19:    [
    INFO - 16:52:19:     "reaction_forces",
    INFO - 16:52:19:     "maximum_dplt",
    INFO - 16:52:19:     "dplt_grid",
    INFO - 16:52:19:     "location_max_dplt",
    INFO - 16:52:19:     "dplt",
    INFO - 16:52:19:     "moment",
    INFO - 16:52:19:     "moment_grid",
    INFO - 16:52:19:     "dplt_at_force_location",
    INFO - 16:52:19:     "error_code",
    INFO - 16:52:19:     "model",
    INFO - 16:52:19:     "load_case",
    INFO - 16:52:19:     "description",
    INFO - 16:52:19:     "job_name",
    INFO - 16:52:19:     "persistent_result_files",
    INFO - 16:52:19:     "n_cpus",
    INFO - 16:52:19:     "date",
    INFO - 16:52:19:     "cpu_time",
    INFO - 16:52:19:     "user",
    INFO - 16:52:19:     "machine",
    INFO - 16:52:19:     "vims_git_version",
    INFO - 16:52:19:     "directory_archive_root",
    INFO - 16:52:19:     "directory_archive_job",
    INFO - 16:52:19:     "directory_scratch_root",
    INFO - 16:52:19:     "directory_scratch_job"
    INFO - 16:52:19: ]
    INFO - 16:52:19:    MDO formulation: DisciplinaryOpt
    INFO - 16:52:19: Optimization problem:
    INFO - 16:52:19:    minimize reaction_forces(width, height, imposed_dplt)
    INFO - 16:52:19:    with respect to height, imposed_dplt, width
    INFO - 16:52:19:    over the design space:
    INFO - 16:52:19:       +--------------+-------------+-------+-------------+-------+
    INFO - 16:52:19:       | Name         | Lower bound | Value | Upper bound | Type  |
    INFO - 16:52:19:       +--------------+-------------+-------+-------------+-------+
    INFO - 16:52:19:       | width        |     -inf    |  None |     inf     | float |
    INFO - 16:52:19:       | height       |     -inf    |  None |     inf     | float |
    INFO - 16:52:19:       | imposed_dplt |     -inf    |  None |     inf     | float |
    INFO - 16:52:19:       +--------------+-------------+-------+-------------+-------+
    INFO - 16:52:19: Solving optimization problem with algorithm CustomDOE:
    INFO - 16:52:19: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:19: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:19: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:19: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:19:     17%|█▋        | 1/6 [00:00<00:00, 29.94 it/sec, obj=-2.51e+3]
    INFO - 16:52:19: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:19: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:19: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:19: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:19:     33%|███▎      | 2/6 [00:00<00:00, 44.77 it/sec, obj=-2.42e+3]
    INFO - 16:52:19: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:19: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:19: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:19: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:19:     50%|█████     | 3/6 [00:00<00:00, 53.81 it/sec, obj=-2.39e+3]
    INFO - 16:52:19: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:19: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:19: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:19: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:19:     67%|██████▋   | 4/6 [00:00<00:00, 59.84 it/sec, obj=-2.33e+3]
    INFO - 16:52:19: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:19: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:19: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:19: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:19:     83%|████████▎ | 5/6 [00:00<00:00, 63.89 it/sec, obj=-2.19e+3]
    INFO - 16:52:19: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:19: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:19: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:19: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:19:    100%|██████████| 6/6 [00:00<00:00, 67.93 it/sec, obj=-2.09e+3]
    INFO - 16:52:19: Optimization result:
    INFO - 16:52:19:    Optimizer info:
    INFO - 16:52:19:       Status: None
    INFO - 16:52:19:       Message: None
    INFO - 16:52:19:       Number of calls to the objective function by the optimizer: 6
    INFO - 16:52:19:    Solution:
    INFO - 16:52:19:       Objective: -2510.537799821486
    INFO - 16:52:19:       Design space:
    INFO - 16:52:19:          +--------------+-------------+------------------+-------------+-------+
    INFO - 16:52:19:          | Name         | Lower bound |      Value       | Upper bound | Type  |
    INFO - 16:52:19:          +--------------+-------------+------------------+-------------+-------+
    INFO - 16:52:19:          | width        |     -inf    | 29.731689453125  |     inf     | float |
    INFO - 16:52:19:          | height       |     -inf    |  40.77490234375  |     inf     | float |
    INFO - 16:52:19:          | imposed_dplt |     -inf    | -5.1246337890625 |     inf     | float |
    INFO - 16:52:19:          +--------------+-------------+------------------+-------------+-------+
    INFO - 16:52:19: *** End DOEScenario execution (time: 0:00:00.092374) ***
The reference data for batch 1:         width     height  imposed_dplt  maximum_dplt  reaction_forces  nominal_length  batch
0  29.731689  40.774902     -5.124634     -5.124634     -2535.643178           600.0      1
1  28.844360  41.317749     -4.890503     -4.890503     -2442.594202           600.0      1
2  29.704102  40.414917     -5.015015     -5.015015     -2414.018681           600.0      1
3  29.590942  40.666260     -4.824341     -4.824341     -2356.819893           600.0      1
4  31.425171  39.082642     -4.799927     -4.799927     -2210.502014           600.0      1
5  29.982178  38.942017     -4.860352     -4.860352     -2112.579675           600.0      1
/home/sebastien.bocquet/PycharmProjects/vimseo/.tox/doc/lib/python3.11/site-packages/pydantic/main.py:209: DeprecationWarning:

Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)

    INFO - 16:52:19: Working directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/CustomDOETool/54
    INFO - 16:52:19:  
    INFO - 16:52:19: *** Start DOEScenario execution ***
    INFO - 16:52:19: DOEScenario
    INFO - 16:52:19:    Disciplines: Model BendingTestAnalytical:  An analytical model for the bending of a parallelepipedic beam
    INFO - 16:52:19: 
    INFO - 16:52:19: Load case:
    INFO - 16:52:19:    Load case Cantilever: A cantilever load case.
    INFO - 16:52:19:    
    INFO - 16:52:19:    Boundary condition variables:
    INFO - 16:52:19:    ['imposed_dplt', 'relative_dplt_location']
    INFO - 16:52:19:    
    INFO - 16:52:19:    Plot parameters:
    INFO - 16:52:19:    {
    INFO - 16:52:19:     "curves": []
    INFO - 16:52:19: }
    INFO - 16:52:19:    Load:
    INFO - 16:52:19:    Load(direction='', sign='', type='')
    INFO - 16:52:19: 
    INFO - 16:52:19: Default values:
    INFO - 16:52:19:    
    INFO - 16:52:19:    Default geometrical variables:
    INFO - 16:52:19:    {"height": [40.0], "length": [600.0], "width": [30.0]}
    INFO - 16:52:19:    
    INFO - 16:52:19:    Default numerical variables:
    INFO - 16:52:19:    {}
    INFO - 16:52:19:    
    INFO - 16:52:19:    Default boundary conditions variables:
    INFO - 16:52:19:    {"imposed_dplt": [-5.0], "relative_dplt_location": [1.0]}
    INFO - 16:52:19:    
    INFO - 16:52:19:    Default material variables:
    INFO - 16:52:19:    {"nu_p": [0.3], "young_modulus": [210000.0]}
    INFO - 16:52:19: model_inputs:
    INFO - 16:52:19:    [
    INFO - 16:52:19:     "length",
    INFO - 16:52:19:     "width",
    INFO - 16:52:19:     "height",
    INFO - 16:52:19:     "imposed_dplt",
    INFO - 16:52:19:     "relative_dplt_location",
    INFO - 16:52:19:     "young_modulus",
    INFO - 16:52:19:     "nu_p"
    INFO - 16:52:19: ]
    INFO - 16:52:19: model_outputs:
    INFO - 16:52:19:    [
    INFO - 16:52:19:     "reaction_forces",
    INFO - 16:52:19:     "maximum_dplt",
    INFO - 16:52:19:     "dplt_grid",
    INFO - 16:52:19:     "location_max_dplt",
    INFO - 16:52:19:     "dplt",
    INFO - 16:52:19:     "moment",
    INFO - 16:52:19:     "moment_grid",
    INFO - 16:52:19:     "dplt_at_force_location",
    INFO - 16:52:19:     "error_code",
    INFO - 16:52:19:     "model",
    INFO - 16:52:19:     "load_case",
    INFO - 16:52:19:     "description",
    INFO - 16:52:19:     "job_name",
    INFO - 16:52:19:     "persistent_result_files",
    INFO - 16:52:19:     "n_cpus",
    INFO - 16:52:19:     "date",
    INFO - 16:52:19:     "cpu_time",
    INFO - 16:52:19:     "user",
    INFO - 16:52:19:     "machine",
    INFO - 16:52:19:     "vims_git_version",
    INFO - 16:52:19:     "directory_archive_root",
    INFO - 16:52:19:     "directory_archive_job",
    INFO - 16:52:19:     "directory_scratch_root",
    INFO - 16:52:19:     "directory_scratch_job"
    INFO - 16:52:19: ]
    INFO - 16:52:19:    MDO formulation: DisciplinaryOpt
    INFO - 16:52:19: Optimization problem:
    INFO - 16:52:19:    minimize reaction_forces(width, height, imposed_dplt)
    INFO - 16:52:19:    with respect to height, imposed_dplt, width
    INFO - 16:52:19:    over the design space:
    INFO - 16:52:19:       +--------------+-------------+-------+-------------+-------+
    INFO - 16:52:19:       | Name         | Lower bound | Value | Upper bound | Type  |
    INFO - 16:52:19:       +--------------+-------------+-------+-------------+-------+
    INFO - 16:52:19:       | width        |     -inf    |  None |     inf     | float |
    INFO - 16:52:19:       | height       |     -inf    |  None |     inf     | float |
    INFO - 16:52:19:       | imposed_dplt |     -inf    |  None |     inf     | float |
    INFO - 16:52:19:       +--------------+-------------+-------+-------------+-------+
    INFO - 16:52:19: Solving optimization problem with algorithm CustomDOE:
    INFO - 16:52:19: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:19: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:19: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:19: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:19:     17%|█▋        | 1/6 [00:00<00:00, 79.77 it/sec, obj=-2.67e+3]
    INFO - 16:52:19: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:19: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:19: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:19: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:19:     33%|███▎      | 2/6 [00:00<00:00, 86.71 it/sec, obj=-2.38e+3]
    INFO - 16:52:19: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:19: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:19: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:19: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:19:     50%|█████     | 3/6 [00:00<00:00, 89.13 it/sec, obj=-2.41e+3]
    INFO - 16:52:19: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:19: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:19: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:19: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:19:     67%|██████▋   | 4/6 [00:00<00:00, 91.37 it/sec, obj=-2.42e+3]
    INFO - 16:52:19: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:19: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:19: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:19: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:19:     83%|████████▎ | 5/6 [00:00<00:00, 93.26 it/sec, obj=-2.11e+3]
    INFO - 16:52:19: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:19: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:19: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:19: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:19:    100%|██████████| 6/6 [00:00<00:00, 94.15 it/sec, obj=-2.66e+3]
    INFO - 16:52:19: Optimization result:
    INFO - 16:52:19:    Optimizer info:
    INFO - 16:52:19:       Status: None
    INFO - 16:52:19:       Message: None
    INFO - 16:52:19:       Number of calls to the objective function by the optimizer: 6
    INFO - 16:52:19:    Solution:
    INFO - 16:52:19:       Objective: -2674.6691186020826
    INFO - 16:52:19:       Design space:
    INFO - 16:52:19:          +--------------+-------------+------------------+-------------+-------+
    INFO - 16:52:19:          | Name         | Lower bound |      Value       | Upper bound | Type  |
    INFO - 16:52:19:          +--------------+-------------+------------------+-------------+-------+
    INFO - 16:52:19:          | width        |     -inf    | 29.1336669921875 |     inf     | float |
    INFO - 16:52:19:          | height       |     -inf    | 41.9508056640625 |     inf     | float |
    INFO - 16:52:19:          | imposed_dplt |     -inf    |  -5.1162109375   |     inf     | float |
    INFO - 16:52:19:          +--------------+-------------+------------------+-------------+-------+
    INFO - 16:52:19: *** End DOEScenario execution (time: 0:00:00.068094) ***
The reference data for batch 2:         width     height  imposed_dplt  maximum_dplt  reaction_forces  nominal_length  batch
0  29.133667  41.950806     -5.116211     -5.116211     -2728.162501           600.0      2
1  29.151123  40.318115     -5.115479     -5.115479     -2422.969487           600.0      2
2  28.687744  40.479980     -5.211182     -5.211182     -2458.437755           600.0      2
3  30.194824  40.375000     -5.015015     -5.015015     -2470.859447           600.0      2
4  31.169434  38.259888     -4.978882     -4.978882     -2154.753161           600.0      2
5  30.858887  41.138062     -5.092285     -5.092285     -2712.252782           600.0      2
/home/sebastien.bocquet/PycharmProjects/vimseo/.tox/doc/lib/python3.11/site-packages/pydantic/main.py:209: DeprecationWarning:

Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)

    INFO - 16:52:20: Working directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/CustomDOETool/55
    INFO - 16:52:20:  
    INFO - 16:52:20: *** Start DOEScenario execution ***
    INFO - 16:52:20: DOEScenario
    INFO - 16:52:20:    Disciplines: Model BendingTestAnalytical:  An analytical model for the bending of a parallelepipedic beam
    INFO - 16:52:20: 
    INFO - 16:52:20: Load case:
    INFO - 16:52:20:    Load case Cantilever: A cantilever load case.
    INFO - 16:52:20:    
    INFO - 16:52:20:    Boundary condition variables:
    INFO - 16:52:20:    ['imposed_dplt', 'relative_dplt_location']
    INFO - 16:52:20:    
    INFO - 16:52:20:    Plot parameters:
    INFO - 16:52:20:    {
    INFO - 16:52:20:     "curves": []
    INFO - 16:52:20: }
    INFO - 16:52:20:    Load:
    INFO - 16:52:20:    Load(direction='', sign='', type='')
    INFO - 16:52:20: 
    INFO - 16:52:20: Default values:
    INFO - 16:52:20:    
    INFO - 16:52:20:    Default geometrical variables:
    INFO - 16:52:20:    {"height": [40.0], "length": [600.0], "width": [30.0]}
    INFO - 16:52:20:    
    INFO - 16:52:20:    Default numerical variables:
    INFO - 16:52:20:    {}
    INFO - 16:52:20:    
    INFO - 16:52:20:    Default boundary conditions variables:
    INFO - 16:52:20:    {"imposed_dplt": [-5.0], "relative_dplt_location": [1.0]}
    INFO - 16:52:20:    
    INFO - 16:52:20:    Default material variables:
    INFO - 16:52:20:    {"nu_p": [0.3], "young_modulus": [210000.0]}
    INFO - 16:52:20: model_inputs:
    INFO - 16:52:20:    [
    INFO - 16:52:20:     "length",
    INFO - 16:52:20:     "width",
    INFO - 16:52:20:     "height",
    INFO - 16:52:20:     "imposed_dplt",
    INFO - 16:52:20:     "relative_dplt_location",
    INFO - 16:52:20:     "young_modulus",
    INFO - 16:52:20:     "nu_p"
    INFO - 16:52:20: ]
    INFO - 16:52:20: model_outputs:
    INFO - 16:52:20:    [
    INFO - 16:52:20:     "reaction_forces",
    INFO - 16:52:20:     "maximum_dplt",
    INFO - 16:52:20:     "dplt_grid",
    INFO - 16:52:20:     "location_max_dplt",
    INFO - 16:52:20:     "dplt",
    INFO - 16:52:20:     "moment",
    INFO - 16:52:20:     "moment_grid",
    INFO - 16:52:20:     "dplt_at_force_location",
    INFO - 16:52:20:     "error_code",
    INFO - 16:52:20:     "model",
    INFO - 16:52:20:     "load_case",
    INFO - 16:52:20:     "description",
    INFO - 16:52:20:     "job_name",
    INFO - 16:52:20:     "persistent_result_files",
    INFO - 16:52:20:     "n_cpus",
    INFO - 16:52:20:     "date",
    INFO - 16:52:20:     "cpu_time",
    INFO - 16:52:20:     "user",
    INFO - 16:52:20:     "machine",
    INFO - 16:52:20:     "vims_git_version",
    INFO - 16:52:20:     "directory_archive_root",
    INFO - 16:52:20:     "directory_archive_job",
    INFO - 16:52:20:     "directory_scratch_root",
    INFO - 16:52:20:     "directory_scratch_job"
    INFO - 16:52:20: ]
    INFO - 16:52:20:    MDO formulation: DisciplinaryOpt
    INFO - 16:52:20: Optimization problem:
    INFO - 16:52:20:    minimize reaction_forces(width, height, imposed_dplt)
    INFO - 16:52:20:    with respect to height, imposed_dplt, width
    INFO - 16:52:20:    over the design space:
    INFO - 16:52:20:       +--------------+-------------+-------+-------------+-------+
    INFO - 16:52:20:       | Name         | Lower bound | Value | Upper bound | Type  |
    INFO - 16:52:20:       +--------------+-------------+-------+-------------+-------+
    INFO - 16:52:20:       | width        |     -inf    |  None |     inf     | float |
    INFO - 16:52:20:       | height       |     -inf    |  None |     inf     | float |
    INFO - 16:52:20:       | imposed_dplt |     -inf    |  None |     inf     | float |
    INFO - 16:52:20:       +--------------+-------------+-------+-------------+-------+
    INFO - 16:52:20: Solving optimization problem with algorithm CustomDOE:
    INFO - 16:52:20: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:20: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:20: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:20: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:20:     17%|█▋        | 1/6 [00:00<00:00, 88.90 it/sec, obj=-2.42e+3]
    INFO - 16:52:20: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:20: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:20: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:20: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:20:     33%|███▎      | 2/6 [00:00<00:00, 94.79 it/sec, obj=-2.33e+3]
    INFO - 16:52:20: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:20: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:20: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:20: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:20:     50%|█████     | 3/6 [00:00<00:00, 97.05 it/sec, obj=-2.21e+3]
    INFO - 16:52:20: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:20: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:20: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:20: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:20:     67%|██████▋   | 4/6 [00:00<00:00, 98.05 it/sec, obj=-2.29e+3]
    INFO - 16:52:20: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:20: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:20: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:20: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:20:     83%|████████▎ | 5/6 [00:00<00:00, 99.05 it/sec, obj=-2.09e+3]
    INFO - 16:52:20: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:20: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:20: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/default_archive.
    INFO - 16:52:20: Removing job directory: default_archive/BendingTestAnalytical/Cantilever/1
    INFO - 16:52:20:    100%|██████████| 6/6 [00:00<00:00, 99.42 it/sec, obj=-2.28e+3]
    INFO - 16:52:20: Optimization result:
    INFO - 16:52:20:    Optimizer info:
    INFO - 16:52:20:       Status: None
    INFO - 16:52:20:       Message: None
    INFO - 16:52:20:       Number of calls to the objective function by the optimizer: 6
    INFO - 16:52:20:    Solution:
    INFO - 16:52:20:       Objective: -2418.719793402425
    INFO - 16:52:20:       Design space:
    INFO - 16:52:20:          +--------------+-------------+------------------+-------------+-------+
    INFO - 16:52:20:          | Name         | Lower bound |      Value       | Upper bound | Type  |
    INFO - 16:52:20:          +--------------+-------------+------------------+-------------+-------+
    INFO - 16:52:20:          | width        |     -inf    | 30.9337158203125 |     inf     | float |
    INFO - 16:52:20:          | height       |     -inf    |  40.67919921875  |     inf     | float |
    INFO - 16:52:20:          | imposed_dplt |     -inf    | -4.7789306640625 |     inf     | float |
    INFO - 16:52:20:          +--------------+-------------+------------------+-------------+-------+
    INFO - 16:52:20: *** End DOEScenario execution (time: 0:00:00.064216) ***
The reference data for batch 3:         width     height  imposed_dplt  maximum_dplt  reaction_forces  nominal_length  batch
0  30.933716  40.679199     -4.778931     -4.778931     -2491.281387           600.0      3
1  29.584717  39.872437     -5.100830     -5.100830     -2394.800695           600.0      3
2  30.167847  38.632324     -5.236938     -5.236938     -2280.431717           600.0      3
3  30.303345  39.255249     -5.132080     -5.132080     -2355.157620           600.0      3
4  29.017822  38.655273     -5.140381     -5.140381     -2156.895678           600.0      3
5  30.684814  38.794678     -5.226318     -5.226318     -2344.113226           600.0      3

Then the model to validate is created:

model_name = "BendingTestAnalytical"
load_case = "Cantilever"
model = create_model(
    model_name,
    load_case,
    model_options=IntegratedModelSettings(
        directory_archive_root=f"../../../{EXAMPLE_RUNS_DIR_NAME}/archive/stochastic_validation_case",
        directory_scratch_root=f"../../../{EXAMPLE_RUNS_DIR_NAME}/scratch/stochastic_validation_case",
        cache_file_path=f"../../../{EXAMPLE_RUNS_DIR_NAME}/caches/stochastic_validation_case/{model_name}_{load_case}.hdf",
    ),
)

Out:

    INFO - 16:52:20: Found 30 entries in the cache file : ../../../model_runs/caches/stochastic_validation_case/BendingTestAnalytical_Cantilever.hdf node : node

Model input uncertainty are captured in the stochastic material properties, compatible with the model:

material = Material.from_json(MATERIAL_LIB_DIR / "Ta6v.json")
print("The stochastic material: ", material)

Out:

The stochastic material:  Ta6v
Material relations:

   Ta6v_elastic_iso
   young_modulus
      Default value: 210000.0
      Distribution:
         Normal
         Parameters:
         {
          "loc": 0.0,
          "location": 0.0,
          "lower": -1000000000000.0,
          "lower_bound": 190000.0,
          "mean": 0.0,
          "mode": 0.0,
          "mu": 210000.0,
          "name": "Normal",
          "rate": 1.0,
          "scale": 1.0,
          "shape": 1.0,
          "sigma": 100.0,
          "upper": 1000000000000.0,
          "upper_bound": 230000.0
}

   nu_p
      Default value: 0.3
      Distribution:
         Normal
         Parameters:
         {
          "loc": 0.0,
          "location": 0.0,
          "lower": -1000000000000.0,
          "lower_bound": -1000000000000.0,
          "mean": 0.0,
          "mode": 0.0,
          "mu": 0.3,
          "name": "Normal",
          "rate": 1.0,
          "scale": 1.0,
          "shape": 1.0,
          "sigma": 0.02,
          "upper": 1000000000000.0,
          "upper_bound": 1000000000000.0
}

All inputs to a stochastic validation are now prepared: the model, the reference data and the uncertain input space. We can define and run the three validation points corresponding to the three batches of reference data, and gather the results in a validation case result.

results = []
for batch, reference_data in zip(
    [1, 2, 3],
    [
        ReaderFileDataFrame()
        .execute(
            settings=ReaderFileDataFrameSettings(
                file_name=f"reference_validation_bending_test_cantilever_{batch}.csv",
                variable_names=[
                    "width",
                    "height",
                    "imposed_dplt",
                    "maximum_dplt",
                    "reaction_forces",
                    "nominal_length",
                    "batch",
                ],
                variable_names_to_group_names={
                    "width": IODataset.INPUT_GROUP,
                    "height": IODataset.INPUT_GROUP,
                    "imposed_dplt": IODataset.INPUT_GROUP,
                    "reaction_forces": IODataset.OUTPUT_GROUP,
                    "maximum_dplt": IODataset.OUTPUT_GROUP,
                },
            )
        )
        .dataset
        for batch in [1, 2, 3]
    ],
    strict=False,
):
    print(f"The reference data for batch {batch}: ", reference_data)

    # If the reference data contain nominal values for the model inputs,
    # it is possible to extract them as a dictionary and pass it to the tool.
    # The model default inputs are then set to these nominal values.
    # The ``read_nominal_values`` function allows to read
    # the nominal values in the reference data, using averaging
    # over the repeats for a given ``master`` variable:
    nominal_data = read_nominal_values(
        "batch",
        csv_path=f"reference_validation_bending_test_cantilever_{batch}.csv",
        master_value=batch,
        additional_names=["nominal_length"],
        name_remapping={"nominal_length": "length"},
        output_type=NominalValuesOutputType.DICTIONARY,
    )
    # Otherwise, the user can define the nominal values as a dictionary,
    # and pass it to the tool.

    result = StochasticValidationPoint().execute(
        inputs=StochasticValidationPointInputs(
            model=model,
            measured_data=reference_data,
            uncertain_input_space=material.to_parameter_space(),
        ),
        settings=StochasticValidationPointSettings(
            metric_names=[
                "AreaMetric",
                "RelativeMeanToMean",
                "AbsoluteRelativeErrorP90",
            ],
            nominal_data=nominal_data,
        ),
    )

    print(f"The error dataset for batch {batch}: ", result.integrated_metrics)

    results.append(result)

case_result = ValidationCaseResult()
case_result.set_from_point_results(results)
case_result.to_hdf5("validation_case_from_stochastic_points.hdf5")
case_result

Out:

    INFO - 16:52:20: Working directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case
    INFO - 16:52:20: Working directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case
    INFO - 16:52:20: Working directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case
The reference data for batch 1:  GROUP         inputs                              outputs                     parameters      
VARIABLE       width     height imposed_dplt maximum_dplt reaction_forces nominal_length batch
COMPONENT          0          0            0            0               0              0     0
0          29.731689  40.774902    -5.124634    -5.124634    -2535.643178          600.0     1
1          28.844360  41.317749    -4.890503    -4.890503    -2442.594202          600.0     1
2          29.704102  40.414917    -5.015015    -5.015015    -2414.018681          600.0     1
3          29.590942  40.666260    -4.824341    -4.824341    -2356.819893          600.0     1
4          31.425171  39.082642    -4.799927    -4.799927    -2210.502014          600.0     1
5          29.982178  38.942017    -4.860352    -4.860352    -2112.579675          600.0     1
/home/sebastien.bocquet/PycharmProjects/vimseo/.tox/doc/lib/python3.11/site-packages/pydantic/main.py:209: DeprecationWarning:

Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)

    INFO - 16:52:20: Working directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/StochasticValidationPoint/43
    INFO - 16:52:20: Working directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/StochasticValidationPoint/43/DOETool
    INFO - 16:52:20: Working directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/StochasticValidationPoint/43/StatisticsTool
    INFO - 16:52:20: Found 30 entries in the cache file : ../../../model_runs/caches/stochastic_validation_case/BendingTestAnalytical_Cantilever.hdf node : node
    INFO - 16:52:20: Working directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/StochasticValidationPoint/43/StatisticsTool
    INFO - 16:52:20: | Set goodness-of-fit criterion: Kolmogorov.
    INFO - 16:52:20: | Set significance level of hypothesis test: 0.05.
    INFO - 16:52:20: Fit different distributions (Uniform, Normal, LogNormal, Exponential, WeibullMin) per variable and compute the goodness-of-fit criterion.
    INFO - 16:52:20: | Fit different distributions for height.
    INFO - 16:52:20: | Fit different distributions for imposed_dplt.
    INFO - 16:52:20: | Fit different distributions for width.
    INFO - 16:52:20: Select the best distribution for each variable.
    INFO - 16:52:20: | The best distribution for height[0] is WeibullMin([4629.87,6628.98,-4589.26]).
    INFO - 16:52:20: | The best distribution for imposed_dplt[0] is WeibullMin([614.693,7507.78,-619.56]).
    INFO - 16:52:20: | The best distribution for width[0] is Normal([29.8797,0.849357]).
/home/sebastien.bocquet/PycharmProjects/vimseo/.tox/doc/lib/python3.11/site-packages/pydantic/main.py:209: DeprecationWarning:

Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)

    INFO - 16:52:20: Working directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/StochasticValidationPoint/43/DOETool
    INFO - 16:52:20:  
    INFO - 16:52:20: *** Start DOE_BendingTestAnalytical_Cantilever_OT_OPT_LHS_10 execution ***
    INFO - 16:52:20: DOE_BendingTestAnalytical_Cantilever_OT_OPT_LHS_10
    INFO - 16:52:20:    Disciplines: Model BendingTestAnalytical:  An analytical model for the bending of a parallelepipedic beam
    INFO - 16:52:20: 
    INFO - 16:52:20: Load case:
    INFO - 16:52:20:    Load case Cantilever: A cantilever load case.
    INFO - 16:52:20:    
    INFO - 16:52:20:    Boundary condition variables:
    INFO - 16:52:20:    ['imposed_dplt', 'relative_dplt_location']
    INFO - 16:52:20:    
    INFO - 16:52:20:    Plot parameters:
    INFO - 16:52:20:    {
    INFO - 16:52:20:     "curves": []
    INFO - 16:52:20: }
    INFO - 16:52:20:    Load:
    INFO - 16:52:20:    Load(direction='', sign='', type='')
    INFO - 16:52:20: 
    INFO - 16:52:20: Default values:
    INFO - 16:52:20:    
    INFO - 16:52:20:    Default geometrical variables:
    INFO - 16:52:20:    {"height": [40.21449132433409], "length": [600.0], "width": [29.879740397135468]}
    INFO - 16:52:20:    
    INFO - 16:52:20:    Default numerical variables:
    INFO - 16:52:20:    {}
    INFO - 16:52:20:    
    INFO - 16:52:20:    Default boundary conditions variables:
    INFO - 16:52:20:    {"imposed_dplt": [-4.914325437637914], "relative_dplt_location": [1.0]}
    INFO - 16:52:20:    
    INFO - 16:52:20:    Default material variables:
    INFO - 16:52:20:    {"nu_p": [0.3000000000000006], "young_modulus": [209999.99999999357]}
    INFO - 16:52:20: model_inputs:
    INFO - 16:52:20:    [
    INFO - 16:52:20:     "length",
    INFO - 16:52:20:     "width",
    INFO - 16:52:20:     "height",
    INFO - 16:52:20:     "imposed_dplt",
    INFO - 16:52:20:     "relative_dplt_location",
    INFO - 16:52:20:     "young_modulus",
    INFO - 16:52:20:     "nu_p"
    INFO - 16:52:20: ]
    INFO - 16:52:20: model_outputs:
    INFO - 16:52:20:    [
    INFO - 16:52:20:     "reaction_forces",
    INFO - 16:52:20:     "maximum_dplt",
    INFO - 16:52:20:     "dplt_grid",
    INFO - 16:52:20:     "location_max_dplt",
    INFO - 16:52:20:     "dplt",
    INFO - 16:52:20:     "moment",
    INFO - 16:52:20:     "moment_grid",
    INFO - 16:52:20:     "dplt_at_force_location",
    INFO - 16:52:20:     "error_code",
    INFO - 16:52:20:     "model",
    INFO - 16:52:20:     "load_case",
    INFO - 16:52:20:     "description",
    INFO - 16:52:20:     "job_name",
    INFO - 16:52:20:     "persistent_result_files",
    INFO - 16:52:20:     "n_cpus",
    INFO - 16:52:20:     "date",
    INFO - 16:52:20:     "cpu_time",
    INFO - 16:52:20:     "user",
    INFO - 16:52:20:     "machine",
    INFO - 16:52:20:     "vims_git_version",
    INFO - 16:52:20:     "directory_archive_root",
    INFO - 16:52:20:     "directory_archive_job",
    INFO - 16:52:20:     "directory_scratch_root",
    INFO - 16:52:20:     "directory_scratch_job"
    INFO - 16:52:20: ]
    INFO - 16:52:20:    MDO formulation: DisciplinaryOpt
    INFO - 16:52:20: Optimization problem:
    INFO - 16:52:20:    minimize maximum_dplt(young_modulus, nu_p, height, imposed_dplt, width)
    INFO - 16:52:20:    with respect to height, imposed_dplt, nu_p, width, young_modulus
    INFO - 16:52:20:    over the design space:
    INFO - 16:52:20:       +---------------+-----------------------------------------------------------------------+--------------------+
    INFO - 16:52:20:       |      Name     |                          Initial distribution                         | Transformation(x)= |
    INFO - 16:52:20:       +---------------+-----------------------------------------------------------------------+--------------------+
    INFO - 16:52:20:       | young_modulus |                    Normal(mu=210000.0, sigma=100.0)                   |      Trunc(x)      |
    INFO - 16:52:20:       |      nu_p     |                       Normal(mu=0.3, sigma=0.02)                      |      Trunc(x)      |
    INFO - 16:52:20:       |     height    | WeibullMin(4629.8726738524065, 6628.982254585978, -4589.255142628196) |      Trunc(x)      |
    INFO - 16:52:20:       |  imposed_dplt |  WeibullMin(614.6930352591813, 7507.780790301626, -619.5601124498656) |      Trunc(x)      |
    INFO - 16:52:20:       |     width     |             Normal(29.879740397135414, 0.8493565866604488)            |      Trunc(x)      |
    INFO - 16:52:20:       +---------------+-----------------------------------------------------------------------+--------------------+
    INFO - 16:52:20: Solving optimization problem with algorithm OT_OPT_LHS:
    INFO - 16:52:20:     10%|â–ˆ         | 1/10 [00:00<00:00, 42.98 it/sec, obj=-4.94]
    INFO - 16:52:20:     20%|██        | 2/10 [00:00<00:00, 51.60 it/sec, obj=-4.92]
    INFO - 16:52:20:     30%|███       | 3/10 [00:00<00:00, 55.31 it/sec, obj=-5.1]
    INFO - 16:52:20:     40%|████      | 4/10 [00:00<00:00, 57.78 it/sec, obj=-4.85]
    INFO - 16:52:20:     50%|█████     | 5/10 [00:00<00:00, 59.28 it/sec, obj=-4.82]
    INFO - 16:52:20:     60%|██████    | 6/10 [00:00<00:00, 57.53 it/sec, obj=-5.02]
    INFO - 16:52:20:     70%|███████   | 7/10 [00:00<00:00, 58.42 it/sec, obj=-4.86]
    INFO - 16:52:20:     80%|████████  | 8/10 [00:00<00:00, 59.43 it/sec, obj=-4.88]
    INFO - 16:52:20:     90%|█████████ | 9/10 [00:00<00:00, 60.20 it/sec, obj=-4.74]
    INFO - 16:52:20:    100%|██████████| 10/10 [00:00<00:00, 60.03 it/sec, obj=-4.98]
    INFO - 16:52:20: Optimization result:
    INFO - 16:52:20:    Optimizer info:
    INFO - 16:52:20:       Status: None
    INFO - 16:52:20:       Message: None
    INFO - 16:52:20:       Number of calls to the objective function by the optimizer: 10
    INFO - 16:52:20:    Solution:
    INFO - 16:52:20:       Objective: -5.0970942904222065
    INFO - 16:52:20:       Design space:
    INFO - 16:52:20:          +---------------+-----------------------------------------------------------------------+--------------------+
    INFO - 16:52:20:          |      Name     |                          Initial distribution                         | Transformation(x)= |
    INFO - 16:52:20:          +---------------+-----------------------------------------------------------------------+--------------------+
    INFO - 16:52:20:          | young_modulus |                    Normal(mu=210000.0, sigma=100.0)                   |      Trunc(x)      |
    INFO - 16:52:20:          |      nu_p     |                       Normal(mu=0.3, sigma=0.02)                      |      Trunc(x)      |
    INFO - 16:52:20:          |     height    | WeibullMin(4629.8726738524065, 6628.982254585978, -4589.255142628196) |      Trunc(x)      |
    INFO - 16:52:20:          |  imposed_dplt |  WeibullMin(614.6930352591813, 7507.780790301626, -619.5601124498656) |      Trunc(x)      |
    INFO - 16:52:20:          |     width     |             Normal(29.879740397135414, 0.8493565866604488)            |      Trunc(x)      |
    INFO - 16:52:20:          +---------------+-----------------------------------------------------------------------+--------------------+
    INFO - 16:52:20: *** End DOE_BendingTestAnalytical_Cantilever_OT_OPT_LHS_10 execution (time: 0:00:00.174562) ***
The error dataset for batch 1:  {'AreaMetric': {'maximum_dplt': 0.03397960853752169, 'reaction_forces': 29.672259968752794}, 'RelativeMeanToMean': {'maximum_dplt': 0.0015794191770066874, 'reaction_forces': 0.008601397009366813}, 'AbsoluteRelativeErrorP90': {'maximum_dplt': 0.05199402730033657, 'reaction_forces': 0.15075655407298094}}
The reference data for batch 2:  GROUP         inputs                              outputs                     parameters      
VARIABLE       width     height imposed_dplt maximum_dplt reaction_forces nominal_length batch
COMPONENT          0          0            0            0               0              0     0
0          29.133667  41.950806    -5.116211    -5.116211    -2728.162501          600.0     2
1          29.151123  40.318115    -5.115479    -5.115479    -2422.969487          600.0     2
2          28.687744  40.479980    -5.211182    -5.211182    -2458.437755          600.0     2
3          30.194824  40.375000    -5.015015    -5.015015    -2470.859447          600.0     2
4          31.169434  38.259888    -4.978882    -4.978882    -2154.753161          600.0     2
5          30.858887  41.138062    -5.092285    -5.092285    -2712.252782          600.0     2
/home/sebastien.bocquet/PycharmProjects/vimseo/.tox/doc/lib/python3.11/site-packages/pydantic/main.py:209: DeprecationWarning:

Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)

    INFO - 16:52:20: Working directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/StochasticValidationPoint/44
    INFO - 16:52:20: Working directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/StochasticValidationPoint/44/DOETool
    INFO - 16:52:20: Working directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/StochasticValidationPoint/44/StatisticsTool
    INFO - 16:52:20: Found 30 entries in the cache file : ../../../model_runs/caches/stochastic_validation_case/BendingTestAnalytical_Cantilever.hdf node : node
    INFO - 16:52:20: Working directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/StochasticValidationPoint/44/StatisticsTool
    INFO - 16:52:20: | Set goodness-of-fit criterion: Kolmogorov.
    INFO - 16:52:20: | Set significance level of hypothesis test: 0.05.
    INFO - 16:52:20: Fit different distributions (Uniform, Normal, LogNormal, Exponential, WeibullMin) per variable and compute the goodness-of-fit criterion.
    INFO - 16:52:20: | Fit different distributions for height.
    INFO - 16:52:20: | Fit different distributions for imposed_dplt.
    INFO - 16:52:20: | Fit different distributions for width.
    INFO - 16:52:20: Select the best distribution for each variable.
    INFO - 16:52:20: | The best distribution for height[0] is WeibullMin([24.4008,26.6566,16.5198]).
    INFO - 16:52:20: | The best distribution for imposed_dplt[0] is WeibullMin([0.237662,3.17349,-5.30049]).
    INFO - 16:52:20: | The best distribution for width[0] is WeibullMin([1.36474,0.891939,28.6877]).
/home/sebastien.bocquet/PycharmProjects/vimseo/.tox/doc/lib/python3.11/site-packages/pydantic/main.py:209: DeprecationWarning:

Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)

    INFO - 16:52:20: Working directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/StochasticValidationPoint/44/DOETool
    INFO - 16:52:20:  
    INFO - 16:52:20: *** Start DOE_BendingTestAnalytical_Cantilever_OT_OPT_LHS_10 execution ***
    INFO - 16:52:20: DOE_BendingTestAnalytical_Cantilever_OT_OPT_LHS_10
    INFO - 16:52:20:    Disciplines: Model BendingTestAnalytical:  An analytical model for the bending of a parallelepipedic beam
    INFO - 16:52:20: 
    INFO - 16:52:20: Load case:
    INFO - 16:52:20:    Load case Cantilever: A cantilever load case.
    INFO - 16:52:20:    
    INFO - 16:52:20:    Boundary condition variables:
    INFO - 16:52:20:    ['imposed_dplt', 'relative_dplt_location']
    INFO - 16:52:20:    
    INFO - 16:52:20:    Plot parameters:
    INFO - 16:52:20:    {
    INFO - 16:52:20:     "curves": []
    INFO - 16:52:20: }
    INFO - 16:52:20:    Load:
    INFO - 16:52:20:    Load(direction='', sign='', type='')
    INFO - 16:52:20: 
    INFO - 16:52:20: Default values:
    INFO - 16:52:20:    
    INFO - 16:52:20:    Default geometrical variables:
    INFO - 16:52:20:    {"height": [40.42508724536511], "length": [600.0], "width": [30.13086067658741]}
    INFO - 16:52:20:    
    INFO - 16:52:20:    Default numerical variables:
    INFO - 16:52:20:    {}
    INFO - 16:52:20:    
    INFO - 16:52:20:    Default boundary conditions variables:
    INFO - 16:52:20:    {"imposed_dplt": [-5.087709775354002], "relative_dplt_location": [1.0]}
    INFO - 16:52:20:    
    INFO - 16:52:20:    Default material variables:
    INFO - 16:52:20:    {"nu_p": [0.3000000000000006], "young_modulus": [209999.99999999357]}
    INFO - 16:52:20: model_inputs:
    INFO - 16:52:20:    [
    INFO - 16:52:20:     "length",
    INFO - 16:52:20:     "width",
    INFO - 16:52:20:     "height",
    INFO - 16:52:20:     "imposed_dplt",
    INFO - 16:52:20:     "relative_dplt_location",
    INFO - 16:52:20:     "young_modulus",
    INFO - 16:52:20:     "nu_p"
    INFO - 16:52:20: ]
    INFO - 16:52:20: model_outputs:
    INFO - 16:52:20:    [
    INFO - 16:52:20:     "reaction_forces",
    INFO - 16:52:20:     "maximum_dplt",
    INFO - 16:52:20:     "dplt_grid",
    INFO - 16:52:20:     "location_max_dplt",
    INFO - 16:52:20:     "dplt",
    INFO - 16:52:20:     "moment",
    INFO - 16:52:20:     "moment_grid",
    INFO - 16:52:20:     "dplt_at_force_location",
    INFO - 16:52:20:     "error_code",
    INFO - 16:52:20:     "model",
    INFO - 16:52:20:     "load_case",
    INFO - 16:52:20:     "description",
    INFO - 16:52:20:     "job_name",
    INFO - 16:52:20:     "persistent_result_files",
    INFO - 16:52:20:     "n_cpus",
    INFO - 16:52:20:     "date",
    INFO - 16:52:20:     "cpu_time",
    INFO - 16:52:20:     "user",
    INFO - 16:52:20:     "machine",
    INFO - 16:52:20:     "vims_git_version",
    INFO - 16:52:20:     "directory_archive_root",
    INFO - 16:52:20:     "directory_archive_job",
    INFO - 16:52:20:     "directory_scratch_root",
    INFO - 16:52:20:     "directory_scratch_job"
    INFO - 16:52:20: ]
    INFO - 16:52:20:    MDO formulation: DisciplinaryOpt
    INFO - 16:52:20: Optimization problem:
    INFO - 16:52:20:    minimize maximum_dplt(young_modulus, nu_p, height, imposed_dplt, width)
    INFO - 16:52:20:    with respect to height, imposed_dplt, nu_p, width, young_modulus
    INFO - 16:52:20:    over the design space:
    INFO - 16:52:20:       +---------------+-------------------------------------------------------------------------+--------------------+
    INFO - 16:52:20:       |      Name     |                           Initial distribution                          | Transformation(x)= |
    INFO - 16:52:20:       +---------------+-------------------------------------------------------------------------+--------------------+
    INFO - 16:52:20:       | young_modulus |                     Normal(mu=210000.0, sigma=100.0)                    |      Trunc(x)      |
    INFO - 16:52:20:       |      nu_p     |                        Normal(mu=0.3, sigma=0.02)                       |      Trunc(x)      |
    INFO - 16:52:20:       |     height    |  WeibullMin(24.400836747901753, 26.656560640854106, 16.519780607184845) |      Trunc(x)      |
    INFO - 16:52:20:       |  imposed_dplt | WeibullMin(0.23766235198634167, 3.1734928201669437, -5.300487581777769) |      Trunc(x)      |
    INFO - 16:52:20:       |     width     |  WeibullMin(1.3647429193372944, 0.8919393916386209, 28.687744140624996) |      Trunc(x)      |
    INFO - 16:52:20:       +---------------+-------------------------------------------------------------------------+--------------------+
    INFO - 16:52:20: Solving optimization problem with algorithm OT_OPT_LHS:
    INFO - 16:52:20:     10%|â–ˆ         | 1/10 [00:00<00:00, 46.72 it/sec, obj=-5.12]
    INFO - 16:52:20:     20%|██        | 2/10 [00:00<00:00, 51.87 it/sec, obj=-5.11]
    INFO - 16:52:20:     30%|███       | 3/10 [00:00<00:00, 54.76 it/sec, obj=-5.2]
    INFO - 16:52:20:     40%|████      | 4/10 [00:00<00:00, 56.11 it/sec, obj=-5.04]
    INFO - 16:52:20:     50%|█████     | 5/10 [00:00<00:00, 57.27 it/sec, obj=-5.02]
    INFO - 16:52:20:     60%|██████    | 6/10 [00:00<00:00, 57.95 it/sec, obj=-5.17]
    INFO - 16:52:20:     70%|███████   | 7/10 [00:00<00:00, 58.56 it/sec, obj=-5.06]
    INFO - 16:52:20:     80%|████████  | 8/10 [00:00<00:00, 59.02 it/sec, obj=-5.07]
    INFO - 16:52:20:     90%|█████████ | 9/10 [00:00<00:00, 58.99 it/sec, obj=-4.92]
    INFO - 16:52:20:    100%|██████████| 10/10 [00:00<00:00, 58.88 it/sec, obj=-5.15]
    INFO - 16:52:20: Optimization result:
    INFO - 16:52:20:    Optimizer info:
    INFO - 16:52:20:       Status: None
    INFO - 16:52:20:       Message: None
    INFO - 16:52:20:       Number of calls to the objective function by the optimizer: 10
    INFO - 16:52:20:    Solution:
    INFO - 16:52:20:       Objective: -5.202443714648249
    INFO - 16:52:20:       Design space:
    INFO - 16:52:20:          +---------------+-------------------------------------------------------------------------+--------------------+
    INFO - 16:52:20:          |      Name     |                           Initial distribution                          | Transformation(x)= |
    INFO - 16:52:20:          +---------------+-------------------------------------------------------------------------+--------------------+
    INFO - 16:52:20:          | young_modulus |                     Normal(mu=210000.0, sigma=100.0)                    |      Trunc(x)      |
    INFO - 16:52:20:          |      nu_p     |                        Normal(mu=0.3, sigma=0.02)                       |      Trunc(x)      |
    INFO - 16:52:20:          |     height    |  WeibullMin(24.400836747901753, 26.656560640854106, 16.519780607184845) |      Trunc(x)      |
    INFO - 16:52:20:          |  imposed_dplt | WeibullMin(0.23766235198634167, 3.1734928201669437, -5.300487581777769) |      Trunc(x)      |
    INFO - 16:52:20:          |     width     |  WeibullMin(1.3647429193372944, 0.8919393916386209, 28.687744140624996) |      Trunc(x)      |
    INFO - 16:52:20:          +---------------+-------------------------------------------------------------------------+--------------------+
    INFO - 16:52:20: *** End DOE_BendingTestAnalytical_Cantilever_OT_OPT_LHS_10 execution (time: 0:00:00.177625) ***
The error dataset for batch 2:  {'AreaMetric': {'maximum_dplt': 0.027499902644314598, 'reaction_forces': 66.16607054491195}, 'RelativeMeanToMean': {'maximum_dplt': 0.00044560463591247377, 'reaction_forces': 0.013458453272939245}, 'AbsoluteRelativeErrorP90': {'maximum_dplt': 0.03547883304952189, 'reaction_forces': 0.19733065258156343}}
The reference data for batch 3:  GROUP         inputs                              outputs                     parameters      
VARIABLE       width     height imposed_dplt maximum_dplt reaction_forces nominal_length batch
COMPONENT          0          0            0            0               0              0     0
0          30.933716  40.679199    -4.778931    -4.778931    -2491.281387          600.0     3
1          29.584717  39.872437    -5.100830    -5.100830    -2394.800695          600.0     3
2          30.167847  38.632324    -5.236938    -5.236938    -2280.431717          600.0     3
3          30.303345  39.255249    -5.132080    -5.132080    -2355.157620          600.0     3
4          29.017822  38.655273    -5.140381    -5.140381    -2156.895678          600.0     3
5          30.684814  38.794678    -5.226318    -5.226318    -2344.113226          600.0     3
/home/sebastien.bocquet/PycharmProjects/vimseo/.tox/doc/lib/python3.11/site-packages/pydantic/main.py:209: DeprecationWarning:

Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)

    INFO - 16:52:21: Working directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/StochasticValidationPoint/45
    INFO - 16:52:21: Working directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/StochasticValidationPoint/45/DOETool
    INFO - 16:52:21: Working directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/StochasticValidationPoint/45/StatisticsTool
    INFO - 16:52:21: Found 30 entries in the cache file : ../../../model_runs/caches/stochastic_validation_case/BendingTestAnalytical_Cantilever.hdf node : node
    INFO - 16:52:21: Working directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/StochasticValidationPoint/45/StatisticsTool
    INFO - 16:52:21: | Set goodness-of-fit criterion: Kolmogorov.
    INFO - 16:52:21: | Set significance level of hypothesis test: 0.05.
    INFO - 16:52:21: Fit different distributions (Uniform, Normal, LogNormal, Exponential, WeibullMin) per variable and compute the goodness-of-fit criterion.
    INFO - 16:52:21: | Fit different distributions for height.
    INFO - 16:52:21: | Fit different distributions for imposed_dplt.
    INFO - 16:52:21: | Fit different distributions for width.
    INFO - 16:52:21: Select the best distribution for each variable.
    INFO - 16:52:21: | The best distribution for height[0] is Normal([39.3149,0.818213]).
    INFO - 16:52:21: | The best distribution for imposed_dplt[0] is WeibullMin([0.222802,0.679502,-5.23694]).
    INFO - 16:52:21: | The best distribution for width[0] is WeibullMin([293.614,562.951,-263.192]).
/home/sebastien.bocquet/PycharmProjects/vimseo/.tox/doc/lib/python3.11/site-packages/pydantic/main.py:209: DeprecationWarning:

Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)

    INFO - 16:52:21: Working directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case/StochasticValidationPoint/45/DOETool
    INFO - 16:52:21:  
    INFO - 16:52:21: *** Start DOE_BendingTestAnalytical_Cantilever_OT_OPT_LHS_10 execution ***
    INFO - 16:52:21: DOE_BendingTestAnalytical_Cantilever_OT_OPT_LHS_10
    INFO - 16:52:21:    Disciplines: Model BendingTestAnalytical:  An analytical model for the bending of a parallelepipedic beam
    INFO - 16:52:21: 
    INFO - 16:52:21: Load case:
    INFO - 16:52:21:    Load case Cantilever: A cantilever load case.
    INFO - 16:52:21:    
    INFO - 16:52:21:    Boundary condition variables:
    INFO - 16:52:21:    ['imposed_dplt', 'relative_dplt_location']
    INFO - 16:52:21:    
    INFO - 16:52:21:    Plot parameters:
    INFO - 16:52:21:    {
    INFO - 16:52:21:     "curves": []
    INFO - 16:52:21: }
    INFO - 16:52:21:    Load:
    INFO - 16:52:21:    Load(direction='', sign='', type='')
    INFO - 16:52:21: 
    INFO - 16:52:21: Default values:
    INFO - 16:52:21:    
    INFO - 16:52:21:    Default geometrical variables:
    INFO - 16:52:21:    {"height": [39.31486002604183], "length": [600.0], "width": [30.12170869962808]}
    INFO - 16:52:21:    
    INFO - 16:52:21:    Default numerical variables:
    INFO - 16:52:21:    {}
    INFO - 16:52:21:    
    INFO - 16:52:21:    Default boundary conditions variables:
    INFO - 16:52:21:    {"imposed_dplt": [-4.946543675172578], "relative_dplt_location": [1.0]}
    INFO - 16:52:21:    
    INFO - 16:52:21:    Default material variables:
    INFO - 16:52:21:    {"nu_p": [0.3000000000000006], "young_modulus": [209999.99999999357]}
    INFO - 16:52:21: model_inputs:
    INFO - 16:52:21:    [
    INFO - 16:52:21:     "length",
    INFO - 16:52:21:     "width",
    INFO - 16:52:21:     "height",
    INFO - 16:52:21:     "imposed_dplt",
    INFO - 16:52:21:     "relative_dplt_location",
    INFO - 16:52:21:     "young_modulus",
    INFO - 16:52:21:     "nu_p"
    INFO - 16:52:21: ]
    INFO - 16:52:21: model_outputs:
    INFO - 16:52:21:    [
    INFO - 16:52:21:     "reaction_forces",
    INFO - 16:52:21:     "maximum_dplt",
    INFO - 16:52:21:     "dplt_grid",
    INFO - 16:52:21:     "location_max_dplt",
    INFO - 16:52:21:     "dplt",
    INFO - 16:52:21:     "moment",
    INFO - 16:52:21:     "moment_grid",
    INFO - 16:52:21:     "dplt_at_force_location",
    INFO - 16:52:21:     "error_code",
    INFO - 16:52:21:     "model",
    INFO - 16:52:21:     "load_case",
    INFO - 16:52:21:     "description",
    INFO - 16:52:21:     "job_name",
    INFO - 16:52:21:     "persistent_result_files",
    INFO - 16:52:21:     "n_cpus",
    INFO - 16:52:21:     "date",
    INFO - 16:52:21:     "cpu_time",
    INFO - 16:52:21:     "user",
    INFO - 16:52:21:     "machine",
    INFO - 16:52:21:     "vims_git_version",
    INFO - 16:52:21:     "directory_archive_root",
    INFO - 16:52:21:     "directory_archive_job",
    INFO - 16:52:21:     "directory_scratch_root",
    INFO - 16:52:21:     "directory_scratch_job"
    INFO - 16:52:21: ]
    INFO - 16:52:21:    MDO formulation: DisciplinaryOpt
    INFO - 16:52:21: Optimization problem:
    INFO - 16:52:21:    minimize maximum_dplt(young_modulus, nu_p, height, imposed_dplt, width)
    INFO - 16:52:21:    with respect to height, imposed_dplt, nu_p, width, young_modulus
    INFO - 16:52:21:    over the design space:
    INFO - 16:52:21:       +---------------+------------------------------------------------------------------------+--------------------+
    INFO - 16:52:21:       |      Name     |                          Initial distribution                          | Transformation(x)= |
    INFO - 16:52:21:       +---------------+------------------------------------------------------------------------+--------------------+
    INFO - 16:52:21:       | young_modulus |                    Normal(mu=210000.0, sigma=100.0)                    |      Trunc(x)      |
    INFO - 16:52:21:       |      nu_p     |                       Normal(mu=0.3, sigma=0.02)                       |      Trunc(x)      |
    INFO - 16:52:21:       |     height    |             Normal(39.314860026041664, 0.8182133789449563)             |      Trunc(x)      |
    INFO - 16:52:21:       |  imposed_dplt | WeibullMin(0.2228020469551345, 0.6795017932457235, -5.236938476562502) |      Trunc(x)      |
    INFO - 16:52:21:       |     width     |  WeibullMin(293.6140381339876, 562.9507349049163, -263.192190192467)   |      Trunc(x)      |
    INFO - 16:52:21:       +---------------+------------------------------------------------------------------------+--------------------+
    INFO - 16:52:21: Solving optimization problem with algorithm OT_OPT_LHS:
    INFO - 16:52:21:     10%|â–ˆ         | 1/10 [00:00<00:00, 59.93 it/sec, obj=-5.17]
    INFO - 16:52:21:     20%|██        | 2/10 [00:00<00:00, 64.09 it/sec, obj=-5.15]
    INFO - 16:52:21:     30%|███       | 3/10 [00:00<00:00, 65.70 it/sec, obj=-5.23]
    INFO - 16:52:21:     40%|████      | 4/10 [00:00<00:00, 66.73 it/sec, obj=-4.91]
    INFO - 16:52:21:     50%|█████     | 5/10 [00:00<00:00, 66.08 it/sec, obj=-4.75]
    INFO - 16:52:21:     60%|██████    | 6/10 [00:00<00:00, 66.32 it/sec, obj=-5.22]
    INFO - 16:52:21:     70%|███████   | 7/10 [00:00<00:00, 66.64 it/sec, obj=-5]
    INFO - 16:52:21:     80%|████████  | 8/10 [00:00<00:00, 66.98 it/sec, obj=-5.05]
    INFO - 16:52:21:     90%|█████████ | 9/10 [00:00<00:00, 67.30 it/sec, obj=-3.22]
    INFO - 16:52:21:    100%|██████████| 10/10 [00:00<00:00, 67.09 it/sec, obj=-5.21]
    INFO - 16:52:21: Optimization result:
    INFO - 16:52:21:    Optimizer info:
    INFO - 16:52:21:       Status: None
    INFO - 16:52:21:       Message: None
    INFO - 16:52:21:       Number of calls to the objective function by the optimizer: 10
    INFO - 16:52:21:    Solution:
    INFO - 16:52:21:       Objective: -5.233374019519989
    INFO - 16:52:21:       Design space:
    INFO - 16:52:21:          +---------------+------------------------------------------------------------------------+--------------------+
    INFO - 16:52:21:          |      Name     |                          Initial distribution                          | Transformation(x)= |
    INFO - 16:52:21:          +---------------+------------------------------------------------------------------------+--------------------+
    INFO - 16:52:21:          | young_modulus |                    Normal(mu=210000.0, sigma=100.0)                    |      Trunc(x)      |
    INFO - 16:52:21:          |      nu_p     |                       Normal(mu=0.3, sigma=0.02)                       |      Trunc(x)      |
    INFO - 16:52:21:          |     height    |             Normal(39.314860026041664, 0.8182133789449563)             |      Trunc(x)      |
    INFO - 16:52:21:          |  imposed_dplt | WeibullMin(0.2228020469551345, 0.6795017932457235, -5.236938476562502) |      Trunc(x)      |
    INFO - 16:52:21:          |     width     |  WeibullMin(293.6140381339876, 562.9507349049163, -263.192190192467)   |      Trunc(x)      |
    INFO - 16:52:21:          +---------------+------------------------------------------------------------------------+--------------------+
    INFO - 16:52:21: *** End DOE_BendingTestAnalytical_Cantilever_OT_OPT_LHS_10 execution (time: 0:00:00.156758) ***
The error dataset for batch 3:  {'AreaMetric': {'maximum_dplt': 0.21661668165418124, 'reaction_forces': 174.06983434027282}, 'RelativeMeanToMean': {'maximum_dplt': 0.04123406491524969, 'reaction_forces': 0.0698326433624655}, 'AbsoluteRelativeErrorP90': {'maximum_dplt': 0.2338413100113296, 'reaction_forces': 0.2690870622991148}}
/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`


ValidationCaseResult(metadata=ToolResultMetadata(generic={'datetime': '11-05-2026_16-52-20', 'version': '0.1.7.dev11+g45528c259'}, misc={}, settings={'variable_names': [], 'fitting_criterion': 'Kolmogorov', 'selection_criterion': 'best', 'level': 0.05, 'tested_distributions': ['Uniform', 'Normal', 'LogNormal', 'Exponential', 'WeibullMin'], 'coverage': 0.05, 'confidence': 0.95, 'output_names': [], 'n_samples': 10, 'algo': 'OT_OPT_LHS', 'metric_names': ['AreaMetric', 'RelativeMeanToMean', 'AbsoluteRelativeErrorP90'], 'simulated_uncertainties': {}, 'nominal_data': {'batch': array([1]), 'length': array([600.])}, 'typeb_uncertainties': {}}, report={'title': 'Validation of BendingTestAnalytical Cantilever', 'simulated_uncertainties': {}, 'typeb_uncertainties': {}, 'measured_output_names': ['maximum_dplt', 'reaction_forces'], 'measured_data_statistics': "StatisticsResult(metadata=ToolResultMetadata(generic={'datetime': '11-05-2026_16-52-20', 'version': '0.1.7.dev11+g45528c259'}, misc={}, settings={'variable_names': ['height', 'imposed_dplt', 'width'], 'fitting_criterion': 'Kolmogorov', 'selection_criterion': 'best', 'level': 0.05, 'tested_distributions': ['Uniform', 'Normal', 'LogNormal', 'Exponential', 'WeibullMin'], 'coverage': 0.05, 'confidence': 0.95}, report={}, model=None), analysis=StatisticsTool\n   n_samples: 6\n   n_variables: 3\n   variables: height, imposed_dplt, width, best_fitting_distributions={'height': 'WeibullMin', 'imposed_dplt': 'WeibullMin', 'width': 'Normal'}, statistics=OrderedDict([('maximum', {'height': array([inf]), 'imposed_dplt': array([inf]), 'width': array([inf])}), ('minimum', {'height': array([-4589.25514263]), 'imposed_dplt': array([-619.56011245]), 'width': array([-inf])}), ('range', {'height': array([inf]), 'imposed_dplt': array([inf]), 'width': array([inf])}), ('mean', {'height': array([40.21449132]), 'imposed_dplt': array([-4.91432544]), 'width': array([29.8797404])}), ('median', {'height': array([40.36155509]), 'imposed_dplt': array([-4.89708439]), 'width': array([29.8797404])}), ('compute_standard_deviation', {'height': array([0.89559315]), 'imposed_dplt': array([0.10498937]), 'width': array([0.84935659])}), ('variance', {'height': array([0.8020871]), 'imposed_dplt': array([0.01102277]), 'width': array([0.72140661])}), ('percentile_5', {'height': array([38.54352575]), 'imposed_dplt': array([-5.11021125]), 'width': array([28.48267313])}), ('percentile_10', {'height': array([39.04607643]), 'imposed_dplt': array([-5.05129645]), 'width': array([28.79124613])}), ('percentile_25', {'height': array([39.74744092]), 'imposed_dplt': array([-4.96907565]), 'width': array([29.30685809])}), ('percentile_50', {'height': array([40.36155509]), 'imposed_dplt': array([-4.89708439]), 'width': array([29.8797404])}), ('percentile_75', {'height': array([40.84566765]), 'imposed_dplt': array([-4.84033371]), 'width': array([30.45262271])}), ('percentile_90', {'height': array([41.20008022]), 'imposed_dplt': array([-4.79878772]), 'width': array([30.96823466])}), ('percentile_95', {'height': array([41.38390292]), 'imposed_dplt': array([-4.77723925]), 'width': array([31.27680766])}), ('tolerance_interval', {'height': [Bounds(lower=array([39.47849905]), upper=array([41.19468511]))], 'imposed_dplt': [Bounds(lower=array([-5.00060347]), upper=array([-4.79942015]))], 'width': [Bounds(lower=array([29.75943725]), upper=array([30.00004354]))]}), ('a_value', {'height': array([[36.47046503]]), 'imposed_dplt': array([[-5.35324731]]), 'width': array([[27.20512676]])}), ('b_value', {'height': array([[38.26699932]]), 'imposed_dplt': array([[-5.1426292]]), 'width': array([[28.09253139]])})]))"}, model=ModelDescription(name='BendingTestAnalytical', summary=' An analytical model for the bending of a parallelepipedic beam', load_case=Beam_Cantilever(name='Cantilever', domain='Beam', summary='A cantilever load case.', plot_parameters=PlotParameters(curves=[]), bc_variable_names=['imposed_dplt', 'relative_dplt_location'], load=Load(direction='', sign='', type='')), dataflow={'model_inputs': ['length', 'width', 'height', 'imposed_dplt', 'relative_dplt_location', 'young_modulus', 'nu_p'], 'model_outputs': ['reaction_forces', 'maximum_dplt', 'dplt_grid', 'location_max_dplt', 'dplt', 'moment', 'moment_grid', 'dplt_at_force_location', 'error_code', 'model', 'load_case', 'description', 'job_name', 'persistent_result_files', 'n_cpus', 'date', 'cpu_time', 'user', 'machine', 'vims_git_version', 'directory_archive_root', 'directory_archive_job', 'directory_scratch_root', 'directory_scratch_job'], 'PreBendingTestAnalytical_Cantilever': {'inputs': ['length', 'width', 'height', 'imposed_dplt', 'relative_dplt_location', 'young_modulus', 'nu_p'], 'outputs': ['imposed_dplt_location', 'quadratic_moment', 'reaction_forces', 'moment', 'moment_grid', 'solver', 'boundary']}, 'RunBendingTestAnalytical': {'inputs': ['imposed_dplt_location', 'quadratic_moment', 'reaction_forces', 'moment', 'moment_grid', 'solver', 'boundary', 'length', 'width', 'height', 'imposed_dplt', 'relative_dplt_location', 'young_modulus', 'nu_p'], 'outputs': ['dplt', 'dplt_grid', 'moment', 'moment_grid', 'imposed_dplt_location', 'reaction_forces']}, 'PostBendingTestAnalytical_Cantilever': {'inputs': ['dplt', 'dplt_grid', 'moment', 'moment_grid', 'imposed_dplt_location', 'reaction_forces'], 'outputs': ['reaction_forces', 'maximum_dplt', 'dplt_grid', 'location_max_dplt', 'dplt', 'moment', 'moment_grid', 'dplt_at_force_location', 'error_code']}, 'subroutine_names': []}, default_inputs={<InputGroupNames.NUMERICAL_VARS: 'numerical variables'>: {}, <InputGroupNames.BC_VARS: 'boundary conditions variables'>: {'imposed_dplt': [-5.0], 'relative_dplt_location': [1.0]}, <InputGroupNames.GEOMETRICAL_VARS: 'geometrical variables'>: {'length': [600.0], 'width': [30.0], 'height': [40.0]}, <InputGroupNames.MATERIAL_VARS: 'material variables'>: {'young_modulus': [210000.0], 'nu_p': [0.3]}}, curves=[('dplt_grid', 'dplt'), ('moment_grid', 'moment')], verbose=False)), element_wise_metrics=GROUP     Nominal          AbsoluteRelativeErrorP90                  ... ReferenceInputs              ReferenceOutputs                
VARIABLE    batch   length             maximum_dplt reaction_forces  ...          height imposed_dplt     maximum_dplt reaction_forces
COMPONENT       0        0                        0               0  ...               0            0                0               0
0             [1]  [600.0]                 0.051994        0.150757  ...       40.199748    -4.919128        -4.919128    -2345.359607
1             [2]  [600.0]                 0.035479        0.197331  ...       40.420308    -5.088175        -5.088175    -2491.239189
2             [3]  [600.0]                 0.233841        0.269087  ...       39.314860    -5.102580        -5.102580    -2337.113387

[3 rows x 20 columns], integrated_metrics=defaultdict(<class 'dict'>, {'AbsoluteRelativeErrorP90': {'maximum_dplt': 0.10710472345372934, 'reaction_forces': 0.20572475631788642}, 'AreaMetric': {'maximum_dplt': 0.09269873094533916, 'reaction_forces': 89.96938828464586}, 'RelativeMeanToMean': {'maximum_dplt': 0.01441969624272295, 'reaction_forces': 0.030630831214923854}}), stochastic_point_results=[ValidationPointResult(metadata=ToolResultMetadata(generic={'datetime': '11-05-2026_16-52-20', 'version': '0.1.7.dev11+g45528c259'}, misc={}, settings={'variable_names': [], 'fitting_criterion': 'Kolmogorov', 'selection_criterion': 'best', 'level': 0.05, 'tested_distributions': ['Uniform', 'Normal', 'LogNormal', 'Exponential', 'WeibullMin'], 'coverage': 0.05, 'confidence': 0.95, 'output_names': [], 'n_samples': 10, 'algo': 'OT_OPT_LHS', 'metric_names': ['AreaMetric', 'RelativeMeanToMean', 'AbsoluteRelativeErrorP90'], 'simulated_uncertainties': {}, 'nominal_data': {'batch': array([1]), 'length': array([600.])}, 'typeb_uncertainties': {}}, report={'title': 'Validation of BendingTestAnalytical Cantilever', 'simulated_uncertainties': {}, 'typeb_uncertainties': {}, 'measured_output_names': ['maximum_dplt', 'reaction_forces'], 'measured_data_statistics': "StatisticsResult(metadata=ToolResultMetadata(generic={'datetime': '11-05-2026_16-52-20', 'version': '0.1.7.dev11+g45528c259'}, misc={}, settings={'variable_names': ['height', 'imposed_dplt', 'width'], 'fitting_criterion': 'Kolmogorov', 'selection_criterion': 'best', 'level': 0.05, 'tested_distributions': ['Uniform', 'Normal', 'LogNormal', 'Exponential', 'WeibullMin'], 'coverage': 0.05, 'confidence': 0.95}, report={}, model=None), analysis=StatisticsTool\n   n_samples: 6\n   n_variables: 3\n   variables: height, imposed_dplt, width, best_fitting_distributions={'height': 'WeibullMin', 'imposed_dplt': 'WeibullMin', 'width': 'Normal'}, statistics=OrderedDict([('maximum', {'height': array([inf]), 'imposed_dplt': array([inf]), 'width': array([inf])}), ('minimum', {'height': array([-4589.25514263]), 'imposed_dplt': array([-619.56011245]), 'width': array([-inf])}), ('range', {'height': array([inf]), 'imposed_dplt': array([inf]), 'width': array([inf])}), ('mean', {'height': array([40.21449132]), 'imposed_dplt': array([-4.91432544]), 'width': array([29.8797404])}), ('median', {'height': array([40.36155509]), 'imposed_dplt': array([-4.89708439]), 'width': array([29.8797404])}), ('compute_standard_deviation', {'height': array([0.89559315]), 'imposed_dplt': array([0.10498937]), 'width': array([0.84935659])}), ('variance', {'height': array([0.8020871]), 'imposed_dplt': array([0.01102277]), 'width': array([0.72140661])}), ('percentile_5', {'height': array([38.54352575]), 'imposed_dplt': array([-5.11021125]), 'width': array([28.48267313])}), ('percentile_10', {'height': array([39.04607643]), 'imposed_dplt': array([-5.05129645]), 'width': array([28.79124613])}), ('percentile_25', {'height': array([39.74744092]), 'imposed_dplt': array([-4.96907565]), 'width': array([29.30685809])}), ('percentile_50', {'height': array([40.36155509]), 'imposed_dplt': array([-4.89708439]), 'width': array([29.8797404])}), ('percentile_75', {'height': array([40.84566765]), 'imposed_dplt': array([-4.84033371]), 'width': array([30.45262271])}), ('percentile_90', {'height': array([41.20008022]), 'imposed_dplt': array([-4.79878772]), 'width': array([30.96823466])}), ('percentile_95', {'height': array([41.38390292]), 'imposed_dplt': array([-4.77723925]), 'width': array([31.27680766])}), ('tolerance_interval', {'height': [Bounds(lower=array([39.47849905]), upper=array([41.19468511]))], 'imposed_dplt': [Bounds(lower=array([-5.00060347]), upper=array([-4.79942015]))], 'width': [Bounds(lower=array([29.75943725]), upper=array([30.00004354]))]}), ('a_value', {'height': array([[36.47046503]]), 'imposed_dplt': array([[-5.35324731]]), 'width': array([[27.20512676]])}), ('b_value', {'height': array([[38.26699932]]), 'imposed_dplt': array([[-5.1426292]]), 'width': array([[28.09253139]])})]))"}, model=ModelDescription(name='BendingTestAnalytical', summary=' An analytical model for the bending of a parallelepipedic beam', load_case=Beam_Cantilever(name='Cantilever', domain='Beam', summary='A cantilever load case.', plot_parameters=PlotParameters(curves=[]), bc_variable_names=['imposed_dplt', 'relative_dplt_location'], load=Load(direction='', sign='', type='')), dataflow={'model_inputs': ['length', 'width', 'height', 'imposed_dplt', 'relative_dplt_location', 'young_modulus', 'nu_p'], 'model_outputs': ['reaction_forces', 'maximum_dplt', 'dplt_grid', 'location_max_dplt', 'dplt', 'moment', 'moment_grid', 'dplt_at_force_location', 'error_code', 'model', 'load_case', 'description', 'job_name', 'persistent_result_files', 'n_cpus', 'date', 'cpu_time', 'user', 'machine', 'vims_git_version', 'directory_archive_root', 'directory_archive_job', 'directory_scratch_root', 'directory_scratch_job'], 'PreBendingTestAnalytical_Cantilever': {'inputs': ['length', 'width', 'height', 'imposed_dplt', 'relative_dplt_location', 'young_modulus', 'nu_p'], 'outputs': ['imposed_dplt_location', 'quadratic_moment', 'reaction_forces', 'moment', 'moment_grid', 'solver', 'boundary']}, 'RunBendingTestAnalytical': {'inputs': ['imposed_dplt_location', 'quadratic_moment', 'reaction_forces', 'moment', 'moment_grid', 'solver', 'boundary', 'length', 'width', 'height', 'imposed_dplt', 'relative_dplt_location', 'young_modulus', 'nu_p'], 'outputs': ['dplt', 'dplt_grid', 'moment', 'moment_grid', 'imposed_dplt_location', 'reaction_forces']}, 'PostBendingTestAnalytical_Cantilever': {'inputs': ['dplt', 'dplt_grid', 'moment', 'moment_grid', 'imposed_dplt_location', 'reaction_forces'], 'outputs': ['reaction_forces', 'maximum_dplt', 'dplt_grid', 'location_max_dplt', 'dplt', 'moment', 'moment_grid', 'dplt_at_force_location', 'error_code']}, 'subroutine_names': []}, default_inputs={<InputGroupNames.NUMERICAL_VARS: 'numerical variables'>: {}, <InputGroupNames.BC_VARS: 'boundary conditions variables'>: {'imposed_dplt': [-5.0], 'relative_dplt_location': [1.0]}, <InputGroupNames.GEOMETRICAL_VARS: 'geometrical variables'>: {'length': [600.0], 'width': [30.0], 'height': [40.0]}, <InputGroupNames.MATERIAL_VARS: 'material variables'>: {'young_modulus': [210000.0], 'nu_p': [0.3]}}, curves=[('dplt_grid', 'dplt'), ('moment_grid', 'moment')], verbose=False)), nominal_data={'batch': array([1]), 'length': array([600.])}, measured_data=GROUP         inputs                              outputs                     parameters      
VARIABLE       width     height imposed_dplt maximum_dplt reaction_forces nominal_length batch
COMPONENT          0          0            0            0               0              0     0
0          29.731689  40.774902    -5.124634    -5.124634    -2535.643178          600.0     1
1          28.844360  41.317749    -4.890503    -4.890503    -2442.594202          600.0     1
2          29.704102  40.414917    -5.015015    -5.015015    -2414.018681          600.0     1
3          29.590942  40.666260    -4.824341    -4.824341    -2356.819893          600.0     1
4          31.425171  39.082642    -4.799927    -4.799927    -2210.502014          600.0     1
5          29.982178  38.942017    -4.860352    -4.860352    -2112.579675          600.0     1, simulated_data=GROUP             inputs                                                   outputs                
VARIABLE   young_modulus      nu_p     height imposed_dplt      width maximum_dplt reaction_forces
COMPONENT              0         0          0            0          0            0               0
0          209961.744159  0.280202  41.322422    -4.937780  29.648245    -4.937780    -2510.235580
1          210026.296796  0.327193  40.329852    -4.918647  31.119893    -4.918647    -2440.751461
2          210013.264139  0.299666  38.811544    -5.097094  29.101894    -5.097094    -2107.946830
3          209946.421366  0.324960  39.289325    -4.845941  29.730807    -4.845941    -2123.260444
4          210270.957738  0.291460  40.491287    -4.824026  29.266630    -4.824026    -2281.038968
5          210104.507837  0.316615  40.942415    -5.020804  30.068855    -5.020804    -2519.603440
6          210070.375395  0.273124  39.597977    -4.864461  30.171610    -4.864461    -2215.661026
7          209802.120029  0.306318  40.594061    -4.876030  28.364563    -4.876030    -2246.602012
8          209987.410348  0.302707  40.977441    -4.744410  30.437961    -4.744410    -2414.970386
9          209874.402755  0.287067  40.115491    -4.984395  30.600530    -4.984395    -2391.792232, sample_to_sample_error=None, integrated_metrics={'AreaMetric': {'maximum_dplt': 0.03397960853752169, 'reaction_forces': 29.672259968752794}, 'RelativeMeanToMean': {'maximum_dplt': 0.0015794191770066874, 'reaction_forces': 0.008601397009366813}, 'AbsoluteRelativeErrorP90': {'maximum_dplt': 0.05199402730033657, 'reaction_forces': 0.15075655407298094}}), ValidationPointResult(metadata=ToolResultMetadata(generic={'datetime': '11-05-2026_16-52-20', 'version': '0.1.7.dev11+g45528c259'}, misc={}, settings={'variable_names': [], 'fitting_criterion': 'Kolmogorov', 'selection_criterion': 'best', 'level': 0.05, 'tested_distributions': ['Uniform', 'Normal', 'LogNormal', 'Exponential', 'WeibullMin'], 'coverage': 0.05, 'confidence': 0.95, 'output_names': [], 'n_samples': 10, 'algo': 'OT_OPT_LHS', 'metric_names': ['AreaMetric', 'RelativeMeanToMean', 'AbsoluteRelativeErrorP90'], 'simulated_uncertainties': {}, 'nominal_data': {'batch': array([2]), 'length': array([600.])}, 'typeb_uncertainties': {}}, report={'title': 'Validation of BendingTestAnalytical Cantilever', 'simulated_uncertainties': {}, 'typeb_uncertainties': {}, 'measured_output_names': ['maximum_dplt', 'reaction_forces'], 'measured_data_statistics': "StatisticsResult(metadata=ToolResultMetadata(generic={'datetime': '11-05-2026_16-52-20', 'version': '0.1.7.dev11+g45528c259'}, misc={}, settings={'variable_names': ['height', 'imposed_dplt', 'width'], 'fitting_criterion': 'Kolmogorov', 'selection_criterion': 'best', 'level': 0.05, 'tested_distributions': ['Uniform', 'Normal', 'LogNormal', 'Exponential', 'WeibullMin'], 'coverage': 0.05, 'confidence': 0.95}, report={}, model=None), analysis=StatisticsTool\n   n_samples: 6\n   n_variables: 3\n   variables: height, imposed_dplt, width, best_fitting_distributions={'height': 'WeibullMin', 'imposed_dplt': 'WeibullMin', 'width': 'WeibullMin'}, statistics=OrderedDict([('maximum', {'height': array([inf]), 'imposed_dplt': array([inf]), 'width': array([inf])}), ('minimum', {'height': array([16.51978061]), 'imposed_dplt': array([-5.30048758]), 'width': array([28.68774414])}), ('range', {'height': array([inf]), 'imposed_dplt': array([inf]), 'width': array([inf])}), ('mean', {'height': array([40.42508725]), 'imposed_dplt': array([-5.08770978]), 'width': array([30.13086068])}), ('median', {'height': array([40.58741531]), 'imposed_dplt': array([-5.0887476]), 'width': array([29.5926261])}), ('compute_standard_deviation', {'height': array([1.12062048]), 'imposed_dplt': array([0.07353025]), 'width': array([1.62126567])}), ('variance', {'height': array([1.25579025]), 'imposed_dplt': array([0.0054067]), 'width': array([2.62850236])}), ('percentile_5', {'height': array([38.3477659]), 'imposed_dplt': array([-5.20727226]), 'width': array([28.7365905])}), ('percentile_10', {'height': array([38.94523468]), 'imposed_dplt': array([-5.18353866]), 'width': array([28.79722137])}), ('percentile_25', {'height': array([39.8063899]), 'imposed_dplt': array([-5.13999377]), 'width': array([29.02534973])}), ('percentile_50', {'height': array([40.58741531]), 'imposed_dplt': array([-5.0887476]), 'width': array([29.5926261])}), ('percentile_75', {'height': array([41.22145062]), 'imposed_dplt': array([-5.03706046]), 'width': array([30.65604933])}), ('percentile_90', {'height': array([41.69614161]), 'imposed_dplt': array([-4.99138812]), 'width': array([32.16430505])}), ('percentile_95', {'height': array([41.94591605]), 'imposed_dplt': array([-4.96466387]), 'width': array([33.35738344])}), ('tolerance_interval', {'height': [Bounds(lower=array([39.47234957]), upper=array([41.68884788]))], 'imposed_dplt': [Bounds(lower=array([-5.15833649]), upper=array([-4.99213949]))], 'width': [Bounds(lower=array([28.90696197]), upper=array([32.13433004]))]}), ('a_value', {'height': array([[36.04621524]]), 'imposed_dplt': array([[-5.26392665]]), 'width': array([[28.68949247]])}), ('b_value', {'height': array([[38.02580083]]), 'imposed_dplt': array([[-5.21821055]]), 'width': array([[28.71907407]])})]))"}, model=ModelDescription(name='BendingTestAnalytical', summary=' An analytical model for the bending of a parallelepipedic beam', load_case=Beam_Cantilever(name='Cantilever', domain='Beam', summary='A cantilever load case.', plot_parameters=PlotParameters(curves=[]), bc_variable_names=['imposed_dplt', 'relative_dplt_location'], load=Load(direction='', sign='', type='')), dataflow={'model_inputs': ['length', 'width', 'height', 'imposed_dplt', 'relative_dplt_location', 'young_modulus', 'nu_p'], 'model_outputs': ['reaction_forces', 'maximum_dplt', 'dplt_grid', 'location_max_dplt', 'dplt', 'moment', 'moment_grid', 'dplt_at_force_location', 'error_code', 'model', 'load_case', 'description', 'job_name', 'persistent_result_files', 'n_cpus', 'date', 'cpu_time', 'user', 'machine', 'vims_git_version', 'directory_archive_root', 'directory_archive_job', 'directory_scratch_root', 'directory_scratch_job'], 'PreBendingTestAnalytical_Cantilever': {'inputs': ['length', 'width', 'height', 'imposed_dplt', 'relative_dplt_location', 'young_modulus', 'nu_p'], 'outputs': ['imposed_dplt_location', 'quadratic_moment', 'reaction_forces', 'moment', 'moment_grid', 'solver', 'boundary']}, 'RunBendingTestAnalytical': {'inputs': ['imposed_dplt_location', 'quadratic_moment', 'reaction_forces', 'moment', 'moment_grid', 'solver', 'boundary', 'length', 'width', 'height', 'imposed_dplt', 'relative_dplt_location', 'young_modulus', 'nu_p'], 'outputs': ['dplt', 'dplt_grid', 'moment', 'moment_grid', 'imposed_dplt_location', 'reaction_forces']}, 'PostBendingTestAnalytical_Cantilever': {'inputs': ['dplt', 'dplt_grid', 'moment', 'moment_grid', 'imposed_dplt_location', 'reaction_forces'], 'outputs': ['reaction_forces', 'maximum_dplt', 'dplt_grid', 'location_max_dplt', 'dplt', 'moment', 'moment_grid', 'dplt_at_force_location', 'error_code']}, 'subroutine_names': []}, default_inputs={<InputGroupNames.NUMERICAL_VARS: 'numerical variables'>: {}, <InputGroupNames.BC_VARS: 'boundary conditions variables'>: {'imposed_dplt': [-4.914325437637914], 'relative_dplt_location': [1.0]}, <InputGroupNames.GEOMETRICAL_VARS: 'geometrical variables'>: {'length': [600.0], 'width': [29.879740397135468], 'height': [40.21449132433409]}, <InputGroupNames.MATERIAL_VARS: 'material variables'>: {'young_modulus': [209999.99999999357], 'nu_p': [0.3000000000000006]}}, curves=[('dplt_grid', 'dplt'), ('moment_grid', 'moment')], verbose=False)), nominal_data={'batch': array([2]), 'length': array([600.])}, measured_data=GROUP         inputs                              outputs                     parameters      
VARIABLE       width     height imposed_dplt maximum_dplt reaction_forces nominal_length batch
COMPONENT          0          0            0            0               0              0     0
0          29.133667  41.950806    -5.116211    -5.116211    -2728.162501          600.0     2
1          29.151123  40.318115    -5.115479    -5.115479    -2422.969487          600.0     2
2          28.687744  40.479980    -5.211182    -5.211182    -2458.437755          600.0     2
3          30.194824  40.375000    -5.015015    -5.015015    -2470.859447          600.0     2
4          31.169434  38.259888    -4.978882    -4.978882    -2154.753161          600.0     2
5          30.858887  41.138062    -5.092285    -5.092285    -2712.252782          600.0     2, simulated_data=GROUP             inputs                                                   outputs                
VARIABLE   young_modulus      nu_p     height imposed_dplt      width maximum_dplt reaction_forces
COMPONENT              0         0          0            0          0            0               0
0          209961.744159  0.280202  41.862103    -5.119447  29.313133    -5.119447    -2675.314793
1          210026.296796  0.327193  40.546465    -5.105611  32.721900    -5.105611    -2707.105297
2          210013.264139  0.299666  38.664405    -5.202444  28.910212    -5.202444    -2113.127123
3          209946.421366  0.324960  39.240248    -5.042685  29.404188    -5.042685    -2177.012697
4          210270.957738  0.291460  40.755717    -5.019998  28.999734    -5.019998    -2398.439392
5          210104.507837  0.316615  41.350140    -5.168972  29.880769    -5.168972    -2655.513673
6          210070.375395  0.273124  39.620155    -5.060421  30.062168    -5.060421    -2300.416498
7          209802.120029  0.306318  40.889876    -5.070875  28.722567    -5.070875    -2417.963274
8          209987.410348  0.302707  41.396894    -4.919444  30.621334    -4.919444    -2597.304812
9          209874.402755  0.287067  40.271388    -5.149185  31.030511    -5.149185    -2534.912068, sample_to_sample_error=None, integrated_metrics={'AreaMetric': {'maximum_dplt': 0.027499902644314598, 'reaction_forces': 66.16607054491195}, 'RelativeMeanToMean': {'maximum_dplt': 0.00044560463591247377, 'reaction_forces': 0.013458453272939245}, 'AbsoluteRelativeErrorP90': {'maximum_dplt': 0.03547883304952189, 'reaction_forces': 0.19733065258156343}}), ValidationPointResult(metadata=ToolResultMetadata(generic={'datetime': '11-05-2026_16-52-20', 'version': '0.1.7.dev11+g45528c259'}, misc={}, settings={'variable_names': [], 'fitting_criterion': 'Kolmogorov', 'selection_criterion': 'best', 'level': 0.05, 'tested_distributions': ['Uniform', 'Normal', 'LogNormal', 'Exponential', 'WeibullMin'], 'coverage': 0.05, 'confidence': 0.95, 'output_names': [], 'n_samples': 10, 'algo': 'OT_OPT_LHS', 'metric_names': ['AreaMetric', 'RelativeMeanToMean', 'AbsoluteRelativeErrorP90'], 'simulated_uncertainties': {}, 'nominal_data': {'batch': array([3]), 'length': array([600.])}, 'typeb_uncertainties': {}}, report={'title': 'Validation of BendingTestAnalytical Cantilever', 'simulated_uncertainties': {}, 'typeb_uncertainties': {}, 'measured_output_names': ['maximum_dplt', 'reaction_forces'], 'measured_data_statistics': "StatisticsResult(metadata=ToolResultMetadata(generic={'datetime': '11-05-2026_16-52-20', 'version': '0.1.7.dev11+g45528c259'}, misc={}, settings={'variable_names': ['height', 'imposed_dplt', 'width'], 'fitting_criterion': 'Kolmogorov', 'selection_criterion': 'best', 'level': 0.05, 'tested_distributions': ['Uniform', 'Normal', 'LogNormal', 'Exponential', 'WeibullMin'], 'coverage': 0.05, 'confidence': 0.95}, report={}, model=None), analysis=StatisticsTool\n   n_samples: 6\n   n_variables: 3\n   variables: height, imposed_dplt, width, best_fitting_distributions={'height': 'Normal', 'imposed_dplt': 'WeibullMin', 'width': 'WeibullMin'}, statistics=OrderedDict([('maximum', {'height': array([inf]), 'imposed_dplt': array([inf]), 'width': array([inf])}), ('minimum', {'height': array([-inf]), 'imposed_dplt': array([-5.23693848]), 'width': array([-263.19219019])}), ('range', {'height': array([inf]), 'imposed_dplt': array([inf]), 'width': array([inf])}), ('mean', {'height': array([39.31486003]), 'imposed_dplt': array([-4.94654368]), 'width': array([30.1217087])}), ('median', {'height': array([39.31486003]), 'imposed_dplt': array([-5.10702107]), 'width': array([30.23075073])}), ('compute_standard_deviation', {'height': array([0.81821338]), 'imposed_dplt': array([0.439521]), 'width': array([0.66738148])}), ('variance', {'height': array([0.66947313]), 'imposed_dplt': array([0.19317871]), 'width': array([0.44539804])}), ('percentile_5', {'height': array([37.96901878]), 'imposed_dplt': array([-5.23412296]), 'width': array([28.8767848])}), ('percentile_10', {'height': array([38.26627739]), 'imposed_dplt': array([-5.22881715]), 'width': array([29.25048335])}), ('percentile_25', {'height': array([38.76298349]), 'imposed_dplt': array([-5.2013246]), 'width': array([29.77275202])}), ('percentile_50', {'height': array([39.31486003]), 'imposed_dplt': array([-5.10702107]), 'width': array([30.23075073])}), ('percentile_75', {'height': array([39.86673656]), 'imposed_dplt': array([-4.87662285]), 'width': array([30.59225758])}), ('percentile_90', {'height': array([40.36344266]), 'imposed_dplt': array([-4.47664746]), 'width': array([30.85717045])}), ('percentile_95', {'height': array([40.66070127]), 'imposed_dplt': array([-4.11705546]), 'width': array([30.99465853])}), ('tolerance_interval', {'height': [Bounds(lower=array([39.19896801]), upper=array([39.43075204]))], 'imposed_dplt': [Bounds(lower=array([-5.21673363]), upper=array([-4.48524051]))], 'width': [Bounds(lower=array([29.57238456]), upper=array([30.85313613]))]}), ('a_value', {'height': array([[36.73831597]]), 'imposed_dplt': array([[-5.2369029]]), 'width': array([[27.33986372]])}), ('b_value', {'height': array([[37.59318229]]), 'imposed_dplt': array([[-5.23536672]]), 'width': array([[28.67134514]])})]))"}, model=ModelDescription(name='BendingTestAnalytical', summary=' An analytical model for the bending of a parallelepipedic beam', load_case=Beam_Cantilever(name='Cantilever', domain='Beam', summary='A cantilever load case.', plot_parameters=PlotParameters(curves=[]), bc_variable_names=['imposed_dplt', 'relative_dplt_location'], load=Load(direction='', sign='', type='')), dataflow={'model_inputs': ['length', 'width', 'height', 'imposed_dplt', 'relative_dplt_location', 'young_modulus', 'nu_p'], 'model_outputs': ['reaction_forces', 'maximum_dplt', 'dplt_grid', 'location_max_dplt', 'dplt', 'moment', 'moment_grid', 'dplt_at_force_location', 'error_code', 'model', 'load_case', 'description', 'job_name', 'persistent_result_files', 'n_cpus', 'date', 'cpu_time', 'user', 'machine', 'vims_git_version', 'directory_archive_root', 'directory_archive_job', 'directory_scratch_root', 'directory_scratch_job'], 'PreBendingTestAnalytical_Cantilever': {'inputs': ['length', 'width', 'height', 'imposed_dplt', 'relative_dplt_location', 'young_modulus', 'nu_p'], 'outputs': ['imposed_dplt_location', 'quadratic_moment', 'reaction_forces', 'moment', 'moment_grid', 'solver', 'boundary']}, 'RunBendingTestAnalytical': {'inputs': ['imposed_dplt_location', 'quadratic_moment', 'reaction_forces', 'moment', 'moment_grid', 'solver', 'boundary', 'length', 'width', 'height', 'imposed_dplt', 'relative_dplt_location', 'young_modulus', 'nu_p'], 'outputs': ['dplt', 'dplt_grid', 'moment', 'moment_grid', 'imposed_dplt_location', 'reaction_forces']}, 'PostBendingTestAnalytical_Cantilever': {'inputs': ['dplt', 'dplt_grid', 'moment', 'moment_grid', 'imposed_dplt_location', 'reaction_forces'], 'outputs': ['reaction_forces', 'maximum_dplt', 'dplt_grid', 'location_max_dplt', 'dplt', 'moment', 'moment_grid', 'dplt_at_force_location', 'error_code']}, 'subroutine_names': []}, default_inputs={<InputGroupNames.NUMERICAL_VARS: 'numerical variables'>: {}, <InputGroupNames.BC_VARS: 'boundary conditions variables'>: {'imposed_dplt': [-5.087709775354002], 'relative_dplt_location': [1.0]}, <InputGroupNames.GEOMETRICAL_VARS: 'geometrical variables'>: {'length': [600.0], 'width': [30.13086067658741], 'height': [40.42508724536511]}, <InputGroupNames.MATERIAL_VARS: 'material variables'>: {'young_modulus': [209999.99999999357], 'nu_p': [0.3000000000000006]}}, curves=[('dplt_grid', 'dplt'), ('moment_grid', 'moment')], verbose=False)), nominal_data={'batch': array([3]), 'length': array([600.])}, measured_data=GROUP         inputs                              outputs                     parameters      
VARIABLE       width     height imposed_dplt maximum_dplt reaction_forces nominal_length batch
COMPONENT          0          0            0            0               0              0     0
0          30.933716  40.679199    -4.778931    -4.778931    -2491.281387          600.0     3
1          29.584717  39.872437    -5.100830    -5.100830    -2394.800695          600.0     3
2          30.167847  38.632324    -5.236938    -5.236938    -2280.431717          600.0     3
3          30.303345  39.255249    -5.132080    -5.132080    -2355.157620          600.0     3
4          29.017822  38.655273    -5.140381    -5.140381    -2156.895678          600.0     3
5          30.684814  38.794678    -5.226318    -5.226318    -2344.113226          600.0     3, simulated_data=GROUP             inputs                                                   outputs                
VARIABLE   young_modulus      nu_p     height imposed_dplt      width maximum_dplt reaction_forces
COMPONENT              0         0          0            0          0            0               0
0          209961.744159  0.280202  40.557895    -5.174428  30.059053    -5.174428    -2521.681687
1          210026.296796  0.327193  39.282817    -5.148766  30.926482    -5.148766    -2346.396755
2          210013.264139  0.299666  38.122578    -5.233374  29.579210    -5.233374    -2084.721846
3          209946.421366  0.324960  38.426008    -4.911169  30.122215    -4.911169    -2039.587601
4          210270.957738  0.291460  39.450782    -4.753907  29.736128    -4.753907    -2112.357784
5          210104.507837  0.316615  39.993404    -5.222887  30.359297    -5.222887    -2466.545227
6          210070.375395  0.273124  38.647203    -5.003411  30.425136    -5.003411    -2136.505153
7          209802.120029  0.306318  39.564294    -5.047256  28.720229    -5.047256    -2179.965591
8          209987.410348  0.302707  40.040823    -3.216700  30.583975    -3.216700    -1534.945777
9          209874.402755  0.287067  39.077184    -5.209898  30.673335    -5.209898    -2316.358394, sample_to_sample_error=None, integrated_metrics={'AreaMetric': {'maximum_dplt': 0.21661668165418124, 'reaction_forces': 174.06983434027282}, 'RelativeMeanToMean': {'maximum_dplt': 0.04123406491524969, 'reaction_forces': 0.0698326433624655}, 'AbsoluteRelativeErrorP90': {'maximum_dplt': 0.2338413100113296, 'reaction_forces': 0.2690870622991148}})])

A validation point result can be plotted to compare the measured and simulated distributions of the quantity of interest.

result = results[0]
figs = StochasticValidationPoint().plot_results(
    result, output_name="reaction_forces", show=True, save=False
)
figs["PDF_comparison"]

plot stochastic validation case straightbeammodel

Out:

    INFO - 16:52:21: Working directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case
    INFO - 16:52:22: Working directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case
/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/tools/validation/validation_point.py:321: UserWarning:

FigureCanvasAgg is non-interactive, and thus cannot be shown

The comparison of the measured and simulated CDF:

figs["CDF_comparison"]

Even if the validation case is stochastic, it is possible to get the same plots as for a deterministic validation case, using integrated metrics such as the AreaMetric (or a metric of this family), which output a scalar value for each validation point. The plots are computed for a given output and metric:

figs = DeterministicValidationCase().plot_results(
    case_result,
    metric_name="AbsoluteRelativeErrorP90",
    output_name="reaction_forces",
    show=True,
    save=False,
)
# a parallel coordinates plot:
figs["parallel_coordinates"]

Out:

    INFO - 16:52:22: Working directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case
    INFO - 16:52:23: Working directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case
/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/utilities/datasets.py:376: FutureWarning:

Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`

/home/sebastien.bocquet/PycharmProjects/vimseo/.tox/doc/lib/python3.11/site-packages/plotly/basedatatypes.py:2314: DeprecationWarning:

The append_trace method is deprecated and will be removed in a future version.
Please use the add_trace method with the row and col parameters.


    INFO - 16:52:24: Working directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case
    INFO - 16:52:25: Working directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/07_validation_case

an error scatter matrix:

figs["error_scatter_matrix"]

a predict-versus-true plot:

figs["predict_vs_true"]

a bar plot of the integrated metrics:

figs["integrated_metric_bars"]

Total running time of the script: ( 0 minutes 6.085 seconds)

Download Python source code: plot_stochastic_validation_case_straightbeammodel.py

Download Jupyter notebook: plot_stochastic_validation_case_straightbeammodel.ipynb

Gallery generated by mkdocs-gallery