Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ensemble summary provider #721

Merged
merged 71 commits into from
Nov 24, 2021

Conversation

sigurdp
Copy link
Collaborator

@sigurdp sigurdp commented Jul 19, 2021

Implements data providers for accessing ensemble summary data through a unified interface. Supports optional lazy resampling/interpolation depending on data input format .

Access to summary data for an ensemble is made available through the EnsembleSummaryProvider interface, implemented as an abstract class in Python.

Behind the scenes there is two different concrete implementations of the EnsembleSummaryProvider interface:

  • ProviderImplArrowLazy - supports lazy/on demand resampling (only used when input data format in .arrow files)
  • ProviderImplArrowPresampled - works similar to our current scheme where smry data is either used directly or is sampled at provider creation time.

Currently, all instances of EnsembleSummaryProvider should be created using the EnsembleSummaryProviderFactory singleton factory class, obtainable through EnsembleSummaryProviderFactory.instance(). There is currently four factory methods available for creating EnsembleSummaryProvider instances:

EnsembleSummaryProviderFactory.create_from_ensemble_csv_file()
EnsembleSummaryProviderFactory.create_from_per_realization_csv_file()
EnsembleSummaryProviderFactory.create_from_arrow_unsmry_lazy()
EnsembleSummaryProviderFactory.create_from_arrow_unsmry_presampled()

The factory methods mentioned above will create concrete data provider instances based on the input parameters specified. The two latter methods accept the same raw data input, but will create and return different concrete implementations of the EnsembleSummaryProvider interface.


Contributor checklist

  • 🤖 I have added tests, or extended existing tests, to cover any new features or bugs fixed in this PR.
  • 📖 I have considered adding a new entry in CHANGELOG.md, and added it if should be communicated there.

@sigurdp sigurdp self-assigned this Jul 19, 2021
@sigurdp sigurdp marked this pull request as ready for review November 22, 2021 07:54
Copy link
Collaborator

@anders-kiaer anders-kiaer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Impressive work @sigurdp! 👏🚀

This is very much worth a changelog entry (add that before merge?) 🍾 Other than that I don't have much to comment on from my point of view (there are some dev_*.py files and commented out code sections you want to keep since they are in the last commit?).

@sigurdp
Copy link
Collaborator Author

sigurdp commented Nov 24, 2021

Impressive work @sigurdp! 👏🚀

This is very much worth a changelog entry (add that before merge?) 🍾 Other than that I don't have much to comment on from my point of view (there are some dev_*.py files and commented out code sections you want to keep since they are in the last commit?).

Changelog - check.

The dev_* files were intentionally left in place since they provide a valuable test harness for assessing performance and for investigating any discrepancies in the interpolation functionality. Could't quite fit this into the unit test category, and really want to have them handy for a while, but they are certainly not needed for normal operation. I suggest we leave them in there for now, at least until we get some more real-world traction with the data provider.

@sigurdp sigurdp merged commit 4398f48 into equinor:master Nov 24, 2021
@jorgenherje jorgenherje mentioned this pull request Dec 1, 2021
4 tasks
VincentNevermore pushed a commit to VincentNevermore/webviz-subsurface that referenced this pull request Jul 19, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
next release 🚢 To be included in next release
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

2 participants