Skip to main content

Python Ensemble Smoother with Multiple Data Assimilation.

Project description

pyESMDA

https://img.shields.io/badge/License-MITlicense-blue.svg Stars Python PyPI Downoads Build Status Documentation Status Coverage codacy pre-commit Black isort DOI

Python Ensemble Smoother with Multiple Data Assimilation

pyesmda is an open-source, pure python, and object-oriented library that provides a user friendly implementation of one of the most popular ensemble based method for parameters estimation and data assimilation: the Ensemble Smoother with Multiple Data Assimilation (ES-MDA) algorithm, introduced by Emerick and Reynolds [1-2].

Thanks to its simple formulation, ES-MDA of Emerick and Reynolds (2012) is perhaps the most used iterative form of the ensemble smoother in geoscience applications.

How to Cite

Software/Code citation for pyESMDA:

Antoine Collet. (2023). pyESMDA - Python Ensemble Smoother with Multiple Data Assimilation (v0.4.3). Zenodo. https://doi.org/10.5281/zenodo.7425670

References

  • [1] Emerick, A. A. and A. C. Reynolds, Ensemble smoother with multiple data assimilation, Computers & Geosciences, 2012.

  • [2] Emerick, A. A. and A. C. Reynolds. (2013). History-Matching Production and Seismic Data in a Real Field Case Using the Ensemble Smoother With Multiple Data Assimilation. Society of Petroleum Engineers - SPE Reservoir Simulation Symposium 1. 2. 10.2118/163675-MS.

Changelog

0.4.3 (2023-08-03)

  • !PR39 ENH: introduce abstraction through a base class and remove some code duplication (see solve methods) and remove some conflicts around the inflation parameters. ESMDA-RS now supports local update (batch_size and is_parallel_analyse_step) and initial inflation of the ensemble (cov_mm_inflation_factor). The keyword seed has been replaced by a more flexible random_state, that accepts np.random.RandomState and Generator in addition to classic seeds. In ESMDA-RS, the std_m_prior is no longer mandatory and can be omitted. In that case, the initial adjusted parameter variance is estimated from the ensemble.

0.4.2 (2023-08-02)

  • !PR36 ENH: add some correlation functions.

  • Also add new hooks in pre-commit.

0.4.1 (2023-07-31)

  • !PR33 FIX: the covariance inflation is now applied before the forecast step.

0.4.0 (2023-06-28)

  • !PR30 ENH: Allow to perform the analyse step by batches of gridblocks and avoid the construction on large (N, M) correlation matrices. Three new parameters have been introduced - batch_size: Number of parameters that are assimilated at once. This option is available to overcome memory limitations when the number of updated parameters is large. In that case, the size of the covariance matrices tends to explode and the update step must be performed by chunks of parameters. is_parallel_analyse_step: Whether to use parallel computing for the analyse step if the number of batch is above one. The default is True. n_batches: Number of batches required during the update step. It also introduces the support for sparse matrices for correlation matrices and observation covariance matrix.

  • !PR29 ENH: Add a function to get the ensemble variance. Convinient to compute the uncertainty a posteriori without the full covariance matrix approximation.

  • STYLE: Format with updated version of black.

0.3.3 (2022-12-12)

  • !PR27 STYLE: Add a DOI number from zenodo and correct typos.

0.3.2 (2022-10-07)

  • !PR21 FIX: design - some static methods should be moved to a utils.py file.

0.3.1 (2022-08-12)

  • !PR20 Fix ESMDA-RS documentation and change the cov_m_prior input parameter to its diagonal std_m_prior to be consistent with the implementation and be less memory consuming.

0.3.0 (2022-08-12)

  • !PR15 Implement ESMDA-RS (restricted step) which provides an automatic estimation of the inflation parameter and determines when to stop (number of assimilations) on the fly.

  • !PR14 Add keyword is_forecast_for_last_assimilation to choose whether to compute the predictions for the ensemble obtained at the last assimilation step. The default is True.

  • !PR13 Implementation: Faster analyse step by avoiding matrix inversion.

  • !PR12 Add a seed parameter for the random number generation seed in the prediction perturbation step. To avoid confusion , cov_d has been renamed cov_obs.

  • !PR11 Implement the covariance localization. Introduces the correlation matrices dd_correlation_matrix and md_correlation_matrix. To avoid confusion , cov_d has been renamed cov_obs.

  • !PR10 Implement the parameters auto-covariance inflation. Add the estimation of the parameters auto-covariance matrix. The parameter alpha becomes cov_obs_inflation_factors.

0.2.0 (2022-07-23)

  • !PR6 The parameter stdev_d becomes cov_d.

  • !PR5 The parameter n_assimilation becomes n_assimilations.

  • !PR4 The parameter stdev_m is removed.

  • !PR3 Type hints are now used in the library.

  • !PR2 Add the possibility to save the history of m and d. This introduces a new knew keyword (boolean) for the constructor save_ensembles_history. Note that the m_mean attribute is depreciated and two new attributes are introduced: m_history, d_history respectively to access the successive parameter and predictions ensemble.

0.1.0 (2021-11-28)

  • First release on PyPI.

MIT License

Copyright (c) 2021, Antoine Collet

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyesmda-0.4.3.tar.gz (671.0 kB view hashes)

Uploaded Source

Built Distribution

pyesmda-0.4.3-py2.py3-none-any.whl (31.4 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page