Closed jbednar closed 8 years ago
There is a lot to discuss here! The breakdown of what the project contains looks accurate to me.
Just to get the naming discussion started, I'll say that I agree that Cube Browser sounds more like a GUI tool and that I don't find the Cube Browser vs Cube Explorer distinction particularly helpful.
This could be fixed if a CubeExplorer organization was registered and this repository were transferred to it (getting rid of the name Cube Browser). Alternatively, we could simply rename this repository to cube-browser
in order to ditch the Cube Explorer name.
In terms of naming, I think the former option would be nicer but it would also be more work. We would need a lot more input before going ahead with such a change and maybe we'll just stick to these two names simply to avoid the disruption.
I agree that CubeBrowser and CubeExplorer aren't very descriptive names for this project. Your summary of what this project actually contains is a good one and should guide the discussion on naming and where to move different components. To me there are two major aspects to the work we've done here:
1) Providing an interface to use cartopy projections and various geographical features in HoloViews. This includes various GeoElements including GeoFeature, GeoTiles, WMTS, Points and Text and their corresponding plotting classes.
2) Providing an interface to work with Iris Cube data in HoloViews, which basically consists of the CubeInterface
, HoloCube
and conversion interface. It also includes the plotting classes for the custom Image and Contours classes as those are currently only well defined when these Elements wrap actual cube data.
The question then becomes whether these two aspects fit into one project or whether they can move into other projects. The first comment I'd like to make in that regard is that I'd like to see an object like the HoloCube exist in HoloViews itself. Currrently we have the Table
class, which implements a conversion interface. This made sense when the interfaces only supported tabular data but now that we have support for labelled nd-arrays in HoloViews I'd like to have a different class, which will allow you to wrap and convert data either in a gridded or in a tabular format. This would eliminate the need for a HoloCube class and conversion interface in this project.
That would leave just the Element types and the CubeInterface
, which I think fit together into a nice project. The only thing to do to make this library completely general would be to implement the Image and Contour plotting classes in such a way that they can work with or without cube data. At that point the support for cube data will be a secondary detail and simply an easy way of supplying the data but the project could be used completely independently. If that were the case I think a general name like cartoviews
or geoviews
would be best.
The only question then would be under which organization this project would be managed.
If you think the future of this Python package is to end up with cube data support being a secondary detail, then I think we should name it accordingly, i.e. not have "cube" in the name. So I'd vote for either cartoviews
(if we want to make an explicit link to cartopy, which is helpful for explanations but means that if the library moves beyond cartopy someday then it will start to be confusing), or geoviews
(if this package is where we expect to put any HoloViews support that's specific to geography, whether based on cartopy or other libraries). Philipp, what does your gut say? Will we (should we) ever have non-cartopy stuff in this package, other than the Iris support (which we hope to fade into the background)?
I have no particular preference between cartoviews and geoviews, both convey in some sense that they are extension for plotting cartographic/geographic data using HoloViews. Cartography is a meaningful term independent of cartopy so I don't think it locks us in in any way.
Will we (should we) ever have non-cartopy stuff in this package, other than the Iris support (which we hope to fade into the background)?
I don't know, it depends a little bit on what the MetOffice guys think. Once I'm done with my PhD I'd be very happy to continue developing a holoviews geographic package and possible extend it with geographic plotting support for bokeh for example and would therefore not necessarily tie it to just cartopy/matplotlib. However it may be that the MetOffice guys would rather have a separate package that deals exclusively with cartopy/iris interfaces, which may be easier to maintain for them.
Moved discussion of versioning to issue #49.
It seems to me that using the name cartoviews
and limiting this package to containing HoloViews-based code specific to Iris and Cartopy would be the clearest option, so that the ownership of this package rests definitively with the Met. That way, if we did want to provide Bokeh-based geographic support, we would be free to develop it separately (perhaps as a geoviews
project, or even just as part of Bokeh), or else we could contact the Met if we really thought it belonged in this package, but it would always be clear who has responsibility for making decisions about this package. I wouldn't want this package to become an orphan, owned by no one!
@marqh, how does that sound? I.e., call it cartoviews
, specific to Iris and Cartopy interfaces to HoloViews, with the Met having the last word on any and all items included in the package (including setting all defaults, choosing all names, etc.)?
I can't help the feeling that the cartography aspects and the Met metadata are independent.
cartoviews
doesn't give me a sense of working with the metadata which is key to us
I am still quite taken with the initial place I started, which is cubebrowser
If we choose in the future to separate the interfaces out, so there is a map specific aspect that isn't related to Iris and cubes, perhaps that could be cartoviews
but for now I like having the term cube in the name. The fact that cubes are often related to geography is useful, but not key.
So, to details:
The overall project being done by Continuum with input from the Met. Currently, informally, the "Cube Browser" project, or (within Continuum) the "Met Office" project. This project includes work done as contributions to several different existing projects (HoloViews, Iris, Cartopy), plus work stored in a new GitHub repository created specifically for this project.
I'm not too worried about this naming, I have always called this Cube Browser within my stakeholder communications.
The GitHub organization hosting packages created specifically for this project. Currently CubeBrowser.
This github organisation may well not last much longer. The repository may well move into http://github.com/SciTools as part of the adoption of code by our community.
The Gitub project name holding Python package(s) created specifically for this project, plus examples and documentation specifically for this project. Currently cube-explorer.
Any newly created conda and pip package(s) that users will install, once we release 0.1.0. Mainly contains Python packages.
I'm not sure about these.
Any new Python package(s) that users will import. Currently holocube.
This is the most crucial name for me. This is what we expect the Python coders to import, this should convey the nature of the library.
I like holocube
here, it clearly describes the link between holoviews and Iris.cube
I can see how cubebrowser
could be a reasonable alternative name, but perhaps that is better suited to the set of pre-prepared notebooks that are ready to roll, rather than the API which powers them.
If we choose in the future to separate the interfaces out, so there is a map specific aspect that isn't related to Iris and cubes, perhaps that could be cartoviews but for now I like having the term cube in the name.
I think this is the key point. I don't see this happening any time but once I personally have some more time I will probably devote some time to developing a package based on holoviews and cartopy that is centered around working with GIS data but independent of iris. Once that is done holocube
can become a simple extension of that package adding support for iris.Cube
s as a data source. Similarly we will likely develop a very similar interface for xarray datasets. Until that point it makes sense to keep the projects together under the header of holocube.
Moving it to the SciTools organization also makes sense to me, although I'd hold off on that until at least after the sprint.
Sounds like a plan to me!
Here is my summary of what I think is being proposed:
holocube
will eventually move under SciTools. It refers to the HoloViews/Iris Cube interface. Currently this also includes cartopy support.cubebrowser
consists of concrete notebook examples of holocube
usage in order to browse Iris Cubes.The only thing to add is that if holocube
only adds Iris Cube support to HoloViews via a data interface, I can see it becoming part of HoloViews itself. In that case, there is only the Iris independent holoviews/cartopy component Philipp suggested. Maybe that would be the thing called cartoviews
?
In this scenario, the cubebrowser
notebooks will rely on holocube
for the time being and may eventually rely only on cartoviews
if Iris support is folded into HoloViews itself.
Exeter group consensus has settled on geoviews
as the python package name
we now have a question of github organisation ownership for this project candidates:
pypi, conda and github repo are to be called
geoviews
we now have https://github.com/ioam/holoviews (including Dataset) https://github.com/ioam/geoviews and https://github.com/scitools/cube_browser
this completes the naming issues
cube-explorer (this one) remains open as a focal point for the project issues
Right now this project has three associated names: Cube Explorer, Cube Browser, and HoloCube. Usually, when something has lots of names, that's an indication that no one is particularly happy with any of them, or at least that not everyone is happy with any one of them. While the project has been completely in flux, settling on a name hasn't been urgent. But now as the project nears its first release and I'm working on the documentation, I think we need to take a step back and see what the shape of it is and thus (as a byproduct) what a good name would be.
I think the existing names have different connotations:
Cube Browser: to me, implies that we have some datastore of cube objects that we want to index and survey, visualizing specific cubes at will, but perhaps not diving too deeply into any one cube. Also seems to imply some sort of graphical app or GUI interface, not a library.
Cube Explorer: similar to Cube Browser, but perhaps indicates more that we will be diving into individual cubes to understand them, not simply surveying a set of them. As for Cube Browser, sounds like an app or GUI, not a library.
HoloCube: To someone who knows what HoloViews does and that Iris has cubes, this name suggests an interface between Iris cubes and HoloViews. To anyone else, probably means nothing at all. Sounds vaguely futuristic, at best. :-)
There are actually at least 5 different things that need a name:
CubeBrowser
.cube-explorer
.holocube
.Very often, items 3, 4, and 5 will have the same name, which makes it much easier on the users: what they install with pip or conda provides a Python package of the same name, and corresponds to a GitHub project of the same name. The names for 1 and 2 are often the same as each other too, and for simplicity let's just assume those remain CubeBrowser for now. So we mainly need a name for item 5 that makes sense in the context of item 1 (because item 3 contains item 5 plus documentation of item 1).
Considering the overall project (item 1), what we did in this project is:
Element
s. Implemented inholocube.element.cube
, plus associated changes folded into HoloViews itself. Cubes are now usable as the data of any HoloViews Element, as soon as someone has doneimport holocube
.Element
s that have an associated geographic projection, based oncartopy.crs
. Implemented inholocube.geo.GeoElement
. One could imagine making general support for nonlinear projections in any Element and putting that into HoloViews itself, but that would require a future project, being out of scope for this one.GeoElement
usable in HoloViews, based oncartopy.feature
. Implemented inholocube.geo.GeoFeature
.GeoElement
types:WMTS
,GeoTiles
,Points
,Contours
,Image
, andText
. Any of theGeoElement
types can be overlaid freely with each other, because they all support the same nonlinear projections. It's not well defined what happens if someone tried to overlay a non-projection-aware Element type with any of these, because of the different coordinate systems involved. Yet bothGeoElement
and regularElement
types can be freely laid out alongside each other in HoloViews, because layout doesn't depend on the projection support.holocube.plotting
.holocube
and HoloViews to work with geographic data, and associated documentation.At a user level, a summary is that the main functionality provided by the
holocube
package is that they can now use Iris cube data whenever they create a HoloViews Element, plus they now have a set of specific projection-aware geographic Elements (GeoElements) they can use. The full power of HoloViews is then available for cube data and for geographic data, i.e. flexible combination and selection of instantly visualized data to create complex multi-figure layouts and animations with ease.So, in terms of naming item 5, there are a few things we could focus on:
a. Connecting Iris, Cartopy, and HoloViews b. Plotting Iris data cubes flexibly (e.g.
cube-browser
,cube-explorer
) c. Adding cube data support to HoloViews (e.g.holocube
) d. Adding geographic projection support to HoloViews (e.g.geoviews
,cartoviews
) e. In general, plotting geographic data easily and flexibly (geoviews
actually works here too)Any opinions?