Created
September 18, 2019 21:59
-
-
Save martindurant/774e428c7e3e349de9d5dfad834a93fd to your computer and use it in GitHub Desktop.
Pangeo CSV loader
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from intake.catalog import Catalog | |
from intake.catalog.local import LocalCatalogEntry | |
import pandas as pd | |
class PangeoCSVSource(Catalog): | |
_grid = [None] | |
container = 'catalog' | |
name = 'pangeo_csv' | |
version = '0.0.1' | |
def __init__(self, url=None, df=None, metadata=None): | |
super().__init__(metadata=metadata) | |
if url: | |
df = pd.read_csv(url) | |
self._df = df | |
def __getitem__(self, item): | |
return self._get_entry(item) | |
def _get_entries(self): | |
return self._df.index.tolist() | |
def _get_entry(self, name): | |
row = self._df.loc[name] | |
return LocalCatalogEntry(str(name), "unknown", "zarr", | |
args={'urlpath': row['zstore']}, | |
metadata=row.to_dict(), catalog=self) | |
@property | |
def qgrid(self): | |
import qgrid | |
widget = qgrid.show_grid(self._df) | |
self._grid[0] = widget | |
return widget | |
@classmethod | |
def from_selection(cls): | |
if cls._grid is None: | |
raise ValueError("No grid selection") | |
return cls(df=cls._grid[0].get_changed_df()) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment