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

Next-generation GUI #225

Closed
martindurant opened this issue Jan 9, 2019 · 6 comments

Comments

Projects
None yet
4 participants
@martindurant
Copy link
Member

commented Jan 9, 2019

Supersedes #183, #182, #156, #95

Following the simple but useful jupyter-widgets GUI:
GUI

The previous GUI is useful, and only works in, the jupyter-notebook context. The selected item becomes available to the user, so that they can continue their analysis in normal code.

A new GUI should be based on panel or bokeh, so that it can be run within a notebook or stand-alone with the same experience. For the stand-alone version to be useful, it must be able to interact with the data to some degree, rather than just listing datasets and entry details.

Here we want to sketch out ideas for a data application on Intake, which can be stand-alone.

Phase 1

Initially, this can be the same as the previous version, but with the following addition:

  • show "discover" information about selected dataset
  • display head/sample of the data for given dataset
  • pick between the pre-determined plots to show, or allow arbitrary selection of the methods and arguments available in hvplot

This extra information can be a box below the main area, which can be similar to what we have now.

Phase 2

Currently, the file browser only navigates the local filesystem, but we have the ability to view any. The "load URL" box shows that we can actually load from any place. Would be nice to be able to import catalogues from wherever by browsing.
Similarly, the search interface (API and GUI) is very simplistic. intake-bluesky is showing that something more powerful can be done. For the GUI, it should be possible to save a catalogue created via search.
In a similar vein, copy/paste of data-sets between catalogues, including starting a new cat and copying things into it, are the kinds of things that a full data app should be able to do.
At some point, "persist" should be an option in the interface, which simply calls that method on the selected data-set.

Phase 3

Many online platforms in this space have a "create data source" wizard, in which you can select data type, select files/query, and for each choose from appropriate options to define a file source, insert it into the given catalogue and save the result.
This wizard would take some thinking about... and obviously lends itself to creating derived data-sets in the manner that Mosaic once did.

@martindurant

This comment has been minimized.

Copy link
Member Author

commented Jan 9, 2019

@rsignell-usgs

This comment has been minimized.

Copy link
Contributor

commented Feb 7, 2019

I was thinking about a GSOC project for Pangeo to build a "ncview" like interface, but using Panel, Intake and hvplot. The user would:

  • paste the URL for an intake catalog into a text widget
  • select a dataset from drop-down widget
  • select a variable from a drop-down widget

Using xarray.hvplot, render map of the data and if there are additional dimensions to the data, display widgets to select indices for those dimensions.

Does that sound reasonable?

@martindurant

This comment has been minimized.

Copy link
Member Author

commented Feb 7, 2019

This is definitely in-scope for the interface that I am imagining here, but it could be a specialised interface for netCDF data (taking advantage of labels and variable names), but I had originally imagined all being unified in the same interface. Each data type (xarray, dataframe...) would present a different graphical "explore" panel, but the selection, navigating and searching of catalogues and display of basic entry details should be the same for all types. The GSoC project could be to make the one panel type that you care about.

An open question here would be compute resources, since the data could be very large. Anything we're thinking of can run on Dask, of course (with imaging via datashader), but we will probably have to assume that there is already a correctly-configures Client around to take the load.

@bryevdv , how far along are you in thinking about a strategy for implementing my three phases, above?

@martindurant

This comment has been minimized.

Copy link
Member Author

commented Feb 18, 2019

@rsignell-usgs fyi: panel's layout system is improving rapidly and will have auto-sizing and spacers in the next release, much like a desktop widget-set. That should be enough to make something nice, even for someone who doesn't wish to make their own CSS.

@jsignell jsignell assigned jsignell and unassigned bryevdv Feb 20, 2019

@martindurant martindurant added in progress and removed to do labels Feb 20, 2019

@martindurant

This comment has been minimized.

Copy link
Member Author

commented Mar 2, 2019

Possible future direction, just a thought.

Given that we are/will be able to browse datasets at will, and create arbitrary plots from them, it may make sense to come up with a prescription for a "layout" (or "dashboard") which is basically some arrangement of these visuals or tables from one or more sources, where we can surface some of the control options to the viewer.
The GUI itself would be the place in which we can first create a specific visualisation, then lay them out, then save the layout. Since we cannot possibly make a general-purpose click-and-drag interface, the layout would probably be exactly a set of Panel layout widgets. A pity there is not TreeView widget in Panel ( @philippjfr - or will there be?).

(together with the "import wizard", this would make for a complete data app - except for computational pipelines)

@jsignell jsignell referenced this issue Mar 5, 2019

Merged

New Panel GUI #286

16 of 16 tasks complete
@martindurant

This comment has been minimized.

Copy link
Member Author

commented Mar 10, 2019

Phase I in #286

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.