.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_numerical_methods/general_methods/plot_study_save_load.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note Click :ref:`here ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_numerical_methods_general_methods_plot_study_save_load.py: Save/load a study ================= The objective of this example is to demonstrate how to save the structures created within a script session to disk in order to be able to load them in a future session. There are several possible ways to achieve this: - with the standard pickle module - with openturns's Study .. GENERATED FROM PYTHON SOURCE LINES 14-21 .. code-block:: default import openturns as ot import openturns.viewer as viewer from matplotlib import pylab as plt import os import pickle ot.Log.Show(ot.Log.NONE) .. GENERATED FROM PYTHON SOURCE LINES 22-23 create objects to save .. GENERATED FROM PYTHON SOURCE LINES 23-26 .. code-block:: default distribution = ot.Normal(4.0, 3.0) function = ot.SymbolicFunction(['x1', 'x2'], ['x1 + x2']) .. GENERATED FROM PYTHON SOURCE LINES 27-30 **With the pickle module** The objects are retrieved in the same order they are stored. .. GENERATED FROM PYTHON SOURCE LINES 32-33 save objects .. GENERATED FROM PYTHON SOURCE LINES 33-37 .. code-block:: default with open('study.pkl', 'wb') as f: pickle.dump(distribution, f) pickle.dump(function, f) .. GENERATED FROM PYTHON SOURCE LINES 38-39 load saved objects .. GENERATED FROM PYTHON SOURCE LINES 39-44 .. code-block:: default with open('study.pkl', 'rb') as f: loaded_distribution = pickle.load(f) loaded_function = pickle.load(f) str(loaded_distribution), str(loaded_function) .. rst-class:: sphx-glr-script-out Out: .. code-block:: none ('Normal(mu = 4, sigma = 3)', '[x1,x2]->[x1 + x2]') .. GENERATED FROM PYTHON SOURCE LINES 45-57 **With OpenTURNS' Study** In order to be able to manipulate the objects contained in a Study, it is necessary to: - create the same empty structure in the new study, - fill this new empty structure with the content of the loaded structure, identified with its name or its id. Each object is identified whether with: - its name: it is useful to give names to the objects we want to save. If no name has been given by the user, we can use the default name. The name of each saved object can be checked in the output XML file or with the python `print` command (applied to the `Study` object). - its id number: this id number is unique to each object. It distinguishes objects with identical type and name (like the default name "Unnamed"). This id number may be checked by printing the study **after** it has been loaded in the python interface (with the `print` command). It can differ from the id number indicated in the XML file the study was loaded from. - for HDF5 storage (see below): the id serves both as xml id and hdf5 dataset name. Id uniqueness forbids any misleading in reading/writing hdf5 datasets. .. GENERATED FROM PYTHON SOURCE LINES 59-60 Create a Study Object .. GENERATED FROM PYTHON SOURCE LINES 60-62 .. code-block:: default study = ot.Study() .. GENERATED FROM PYTHON SOURCE LINES 63-64 Associate it to an XML file .. GENERATED FROM PYTHON SOURCE LINES 64-67 .. code-block:: default fileName = 'study.xml' study.setStorageManager(ot.XMLStorageManager(fileName)) .. GENERATED FROM PYTHON SOURCE LINES 68-69 Alternatively, large amounts of data can be stored in binary HDF5 file. An XML file (`study_h5.xml`) serves as header for binary data, which are stored in the automatically created `study_h5.h5` file. .. GENERATED FROM PYTHON SOURCE LINES 69-73 .. code-block:: default study_h5 = ot.Study() fileName_h5 = 'study_h5.xml' study_h5.setStorageManager(ot.XMLH5StorageManager(fileName_h5)) .. GENERATED FROM PYTHON SOURCE LINES 74-75 Add an object to the study; at this point it is not written to disk yet .. GENERATED FROM PYTHON SOURCE LINES 75-78 .. code-block:: default study.add('distribution', distribution) study.add('function', function) .. GENERATED FROM PYTHON SOURCE LINES 79-80 Save the study; this writes into the file .. GENERATED FROM PYTHON SOURCE LINES 80-82 .. code-block:: default study.save() .. GENERATED FROM PYTHON SOURCE LINES 83-84 Create a new study associated to the same file .. GENERATED FROM PYTHON SOURCE LINES 84-87 .. code-block:: default study = ot.Study() study.setStorageManager(ot.XMLStorageManager(fileName)) .. GENERATED FROM PYTHON SOURCE LINES 88-89 Load the file and all its objects .. GENERATED FROM PYTHON SOURCE LINES 89-91 .. code-block:: default study.load() .. GENERATED FROM PYTHON SOURCE LINES 92-93 Check the content of the myStudy .. GENERATED FROM PYTHON SOURCE LINES 93-95 .. code-block:: default print("Study = ", study) .. rst-class:: sphx-glr-script-out Out: .. code-block:: none Study = 196 => FunctionImplementation [x1,x2]->[x1 + x2] 197 => Normal Normal(mu = 4, sigma = 3) 'distribution' is aliased to 197 'function' is aliased to 196 .. GENERATED FROM PYTHON SOURCE LINES 96-97 List names of stored objects .. GENERATED FROM PYTHON SOURCE LINES 97-99 .. code-block:: default study.printLabels() .. rst-class:: sphx-glr-script-out Out: .. code-block:: none 'distribution;function' .. GENERATED FROM PYTHON SOURCE LINES 100-101 Check our 'distribution' labelled object was loaded .. GENERATED FROM PYTHON SOURCE LINES 101-103 .. code-block:: default study.hasObject('distribution') .. rst-class:: sphx-glr-script-out Out: .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 104-105 Load the objects; we must create a void object of the desired type (or parent type) .. GENERATED FROM PYTHON SOURCE LINES 105-110 .. code-block:: default distribution2 = ot.Normal() function2 = ot.Function() study.fillObject('distribution', distribution2) study.fillObject('function', function2) str(distribution2), str(function2) .. rst-class:: sphx-glr-script-out Out: .. code-block:: none ('Normal(mu = 4, sigma = 3)', '[x1,x2]->[x1 + x2]') .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 0.016 seconds) .. _sphx_glr_download_auto_numerical_methods_general_methods_plot_study_save_load.py: .. only :: html .. container:: sphx-glr-footer :class: sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_study_save_load.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_study_save_load.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_