diff --git a/forest/__init__.py b/forest/__init__.py index 4ec1f9020..e4c51a542 100644 --- a/forest/__init__.py +++ b/forest/__init__.py @@ -29,7 +29,6 @@ from .config import * from . import ( - navigate, redux, tutorial) from .db import Database diff --git a/forest/intake_loader.py b/forest/drivers/intake_loader.py similarity index 96% rename from forest/intake_loader.py rename to forest/drivers/intake_loader.py index 040e34f99..197408fc7 100644 --- a/forest/intake_loader.py +++ b/forest/drivers/intake_loader.py @@ -18,12 +18,29 @@ except ModuleNotFoundError: intake = None +import forest.view from forest import geo, util from forest.drivers import gridded_forecast # Location of the Pangeo-CMIP6 intake catalogue file. URL = 'https://raw.githubusercontent.com/NCAR/intake-esm-datastore/master/catalogs/pangeo-cmip6.json' + +class Dataset: + def __init__(self, pattern=None, color_mapper=None, **kwargs): + self.pattern = pattern + self.color_mapper = color_mapper + + def navigator(self): + return Navigator() + + def map_view(self): + loader = IntakeLoader(self.pattern) + view = forest.view.UMView(loader, self.color_mapper) + view.set_hover_properties(INTAKE_TOOLTIPS, INTAKE_FORMATTERS) + return view + + @functools.lru_cache(maxsize=64) def _get_intake_vars( experiment_id, diff --git a/forest/load.py b/forest/load.py index 249152d0a..28e86e6c4 100644 --- a/forest/load.py +++ b/forest/load.py @@ -24,8 +24,7 @@ from forest import ( exceptions, data, - rdt, - intake_loader) + rdt) __all__ = [] @@ -83,7 +82,5 @@ def file_loader(file_type, pattern, label=None): return rdt.Loader(pattern) elif file_type == 'gpm': return data.GPM(pattern) - elif file_type == 'intake': - return intake_loader.IntakeLoader(pattern) else: raise exceptions.UnknownFileType("unrecognised file_type: {}".format(file_type)) diff --git a/forest/main.py b/forest/main.py index b7e241c3a..4f5468c90 100644 --- a/forest/main.py +++ b/forest/main.py @@ -24,7 +24,6 @@ presets, redux, rx, - intake_loader, navigate, parse_args) import forest.components @@ -107,10 +106,6 @@ def main(argv=None): viewer = rdt.View(loader) elif isinstance(loader, data.GPM): viewer = view.GPMView(loader, color_mapper) - elif isinstance(loader, intake_loader.IntakeLoader): - viewer = view.UMView(loader, color_mapper) - viewer.set_hover_properties(intake_loader.INTAKE_TOOLTIPS, - intake_loader.INTAKE_FORMATTERS) else: viewer = view.UMView(loader, color_mapper) else: diff --git a/forest/navigate.py b/forest/navigate.py index 0dbea7095..b0822c2ef 100644 --- a/forest/navigate.py +++ b/forest/navigate.py @@ -10,8 +10,7 @@ exceptions, drivers, db, - rdt, - intake_loader) + rdt) class Navigator: @@ -86,8 +85,6 @@ def from_file_type(cls, paths, file_type, pattern=None): if file_type.lower() == "rdt": coordinates = rdt.Coordinates() return cls(paths, coordinates) - elif file_type.lower() == 'intake': - return intake_loader.Navigator() else: raise Exception("Unrecognised file type: '{}'".format(file_type)) diff --git a/test/test_drivers_intake_loader.py b/test/test_drivers_intake_loader.py new file mode 100644 index 000000000..b1dfd0193 --- /dev/null +++ b/test/test_drivers_intake_loader.py @@ -0,0 +1,21 @@ +import bokeh.models +import forest.drivers +import forest.view + + +def test_dataset_navigator(): + dataset = forest.drivers.get_dataset("intake_loader", {}) + navigator = dataset.navigator() + assert isinstance(navigator, forest.drivers.intake_loader.Navigator) + + +def test_dataset_map_view(): + pattern = "a_b_c_d_e_f" + dataset = forest.drivers.get_dataset("intake_loader", { + "pattern": pattern, + "color_mapper": bokeh.models.ColorMapper() + }) + map_view = dataset.map_view() + assert isinstance(map_view, forest.view.UMView) + assert map_view.tooltips == forest.drivers.intake_loader.INTAKE_TOOLTIPS + assert map_view.formatters == forest.drivers.intake_loader.INTAKE_FORMATTERS