.. 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 ================= .. GENERATED FROM PYTHON SOURCE LINES 21-27 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 29-37 .. code-block:: default from __future__ import print_function 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 38-39 create objects to save .. GENERATED FROM PYTHON SOURCE LINES 39-42 .. code-block:: default distribution = ot.Normal(4.0, 3.0) function = ot.SymbolicFunction(['x1', 'x2'], ['x1 + x2']) .. GENERATED FROM PYTHON SOURCE LINES 43-46 **With the pickle module** The objects are retrieved in the same order they are stored. .. GENERATED FROM PYTHON SOURCE LINES 48-49 save objects .. GENERATED FROM PYTHON SOURCE LINES 49-53 .. code-block:: default with open('study.pkl', 'wb') as f: pickle.dump(distribution, f) pickle.dump(function, f) .. GENERATED FROM PYTHON SOURCE LINES 54-55 load saved objects .. GENERATED FROM PYTHON SOURCE LINES 55-60 .. 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 61-73 **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 75-76 Create a Study Object .. GENERATED FROM PYTHON SOURCE LINES 76-78 .. code-block:: default study = ot.Study() .. GENERATED FROM PYTHON SOURCE LINES 79-80 Associate it to an XML file .. GENERATED FROM PYTHON SOURCE LINES 80-83 .. code-block:: default fileName = 'study.xml' study.setStorageManager(ot.XMLStorageManager(fileName)) .. GENERATED FROM PYTHON SOURCE LINES 84-85 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 85-89 .. code-block:: default study_h5 = ot.Study() fileName_h5 = 'study_h5.xml' study_h5.setStorageManager(ot.XMLH5StorageManager(fileName_h5)) .. GENERATED FROM PYTHON SOURCE LINES 90-91 Add an object to the study; at this point it is not written to disk yet .. GENERATED FROM PYTHON SOURCE LINES 91-94 .. code-block:: default study.add('distribution', distribution) study.add('function', function) .. GENERATED FROM PYTHON SOURCE LINES 95-96 Save the study; this writes into the file .. GENERATED FROM PYTHON SOURCE LINES 96-98 .. code-block:: default study.save() .. GENERATED FROM PYTHON SOURCE LINES 99-100 Create a new study associated to the same file .. GENERATED FROM PYTHON SOURCE LINES 100-103 .. code-block:: default study = ot.Study() study.setStorageManager(ot.XMLStorageManager(fileName)) .. GENERATED FROM PYTHON SOURCE LINES 104-105 Load the file and all its objects .. GENERATED FROM PYTHON SOURCE LINES 105-107 .. code-block:: default study.load() .. GENERATED FROM PYTHON SOURCE LINES 108-109 Check the content of the myStudy .. GENERATED FROM PYTHON SOURCE LINES 109-111 .. 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 112-113 List names of stored objects .. GENERATED FROM PYTHON SOURCE LINES 113-115 .. code-block:: default study.printLabels() .. rst-class:: sphx-glr-script-out Out: .. code-block:: none 'distribution;function' .. GENERATED FROM PYTHON SOURCE LINES 116-117 Check our 'distribution' labelled object was loaded .. GENERATED FROM PYTHON SOURCE LINES 117-119 .. code-block:: default study.hasObject('distribution') .. rst-class:: sphx-glr-script-out Out: .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 120-121 Load the objects; we must create a void object of the desired type (or parent type) .. GENERATED FROM PYTHON SOURCE LINES 121-126 .. code-block:: default distributionLoaded = ot.Normal() functionLoaded = ot.Function() study.fillObject('distribution', loaded_distribution) study.fillObject('function', loaded_function) 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]') .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 0.015 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 `_