Guilherme Schardong [1]
Ariane Rodrigues[1]
Simone Barbosa [1]
Hélio Lopes [1]
[1] Departamento de Informática, PUC-Rio
This is the official implementation of "Visual interactive support for selecting scenarios from time-series ensembles", published on Decision Support Systems, Vol. 113, 2018.
TL-DR: If you just want to run the code, follow the steps below (assuming a UNIX system). For more details, jump to Setup and sample run section.
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python mainwindow.py --input-path data_50/
Our codebase resides entirely on the repository root. It is divided in three main categories: Plot, Data and Miscellaneous classes/files. We list them below.
brushableplot.py- base class for all plots that support connected-views, a.k.a. "Brushing and Linking"distplot.py- distance chart class definition. See an example at the bottom right of Fig. 1fanchart.py- fan chart class definition. See an example at the top left of Fig. 1rankplot.py- bump chart class definition. See an example at the bottom left of Fig. 1tlplot.py- time-lapsed LAMP chart class definition. See an example at the top right of Fig. 1
These are the only domain specific classes contained here. They are mostly related to oil-reservoir data types. Replace them for your use case. You will also need to replace the loading function in mainwindow.py.
field.py- information on a field scenario with all wells' types, names, properties, data and meta-information on the scenario itself (an ID, really)fieldensemble.py- a set of fields with well types and observed data. Allows querying group-data, historic data (not implemented), well type (not implemented)timeseries.py- class that contains a thin-wrapper for multidimensional time-series data. Should be replaced bypandas.DataFramesreally
mp.py- dimesionality reduction methods implementation: MDS, LAMP, TL-LAMPmainwindow.py- main window of the prototype, also it's entry point. Contains a plot widget, menu, and side-bar for interactionplotwidget.py- plot widget containing all plots. Handles their communicationzoompanhandler.py- zoom+pan interaction handler used in some of our plotszoompantest.py- test file for the zoom+pan handler
Assuming you have Qt5 installed, this setup is straightforward. Simply create a virtual environment to isolate your Python installation, install the requirements and run the prototype. These steps are shown below, assuming an UNIX-like system with Python v3.13.1, pyenv, and pyenv-virtualenv installed.
cd $PATH_TO_REPOSITORY_ROOT
pyenv virtualenv 3.13.1 tsvis
pyenv activate tsvis
pip install -r requirements.txt
python mainwindow.py --input-path data_50/
If everything works well, you should see the following window:

Any contribution is welcome. If you spot an error or have questions, open issues, or send an e-mail and we will answer as soon as possible.
If you find our work useful in your research, consider citing it in your tech report or paper.
@article{schardong:2018:dss,
title = {Visual interactive support for selecting scenarios from time-series ensembles},
author = {Guilherme G. Schardong and Ariane M.B. Rodrigues and Simone D.J. Barbosa and Hélio Lopes},
journal = {Decision Support Systems},
volume = {113},
pages = {99-107},
year = {2018},
issn = {0167-9236},
doi = {https://doi.org/10.1016/j.dss.2018.08.001},
url = {https://www.sciencedirect.com/science/article/pii/S0167923618301222},
}