Beispiel #1
0
class EsdcDataStore(DataStore):
    def __init__(self):
        super().__init__('esdc', title='Earth System Data Cube')
        esdc_data_source_defs = conf.get_config_value('esdc_data_sources', [])
        self._data_sources = OrderedDict()
        for ds_id, title, local_path in esdc_data_source_defs:
            if ds_id.startswith('esdc.'):
                ds_id = 'esdc.' + ds_id
            cube = None
            try:
                cube = cablab.Cube.open(local_path)
            except Exception as e:
                warnings.warn('ESDC data source "%s" registered: %s' %
                              (ds_id, e))
                pass
            if cube:
                self._data_sources[ds_id] = EsdcDataSource(
                    self, ds_id, title, cube)

    def query(self,
              id: str = None,
              query_expr: str = None,
              monitor: Monitor = Monitor.NONE) -> Sequence[DataSource]:
        if id:
            data_source = self._data_sources.get(id)
            return [data_source] if data_source else None
        # TODO (forman): use query_expr
        return list(self._data_sources.values())

    def _repr_html_(self):
        # TODO (forman): implement me
        return self.__repr__()
Beispiel #2
0
class EsdcDataStore(DataStore):
    """
    A Cate data store implementation exposing each configured ESDC as an individual data source.

    ESDC are configured in Cate's configuration file ``$HOME/.cate/<version>/conf.py`` as follows:::

         esdc_data_sources = [
             (id, title, data_cube_dir_path),
             ...
         ]

    The ``esdc_data_sources``entries are 3-element tuples as follows:
    * *id* is a string that should by prefixed by "esdc.";
    * *title* should be a non-empty, human-readable text;
    * *data_cube_dir_path* is a string pointing to aESDC directory in your local file system.

    """

    def __init__(self):
        super().__init__('esdc', title='Earth System Data Cube', is_local=True)
        esdc_data_source_defs = conf.get_config_value('esdc_data_sources', [])
        self._data_sources = OrderedDict()
        for ds_id, title, local_path in esdc_data_source_defs:
            if not ds_id.startswith('esdc.'):
                ds_id = 'esdc.' + ds_id
            cube = None
            try:
                cube = cablab.Cube.open(local_path)
                # print('Success registering ESDC data source "%s"!' % ds_id)
            except Exception as e:
                warnings.warn('Failed registering ESDC data source "%s": %s' % (ds_id, e))
                # print('Failed to register ESDC data source "%s": %s' % (ds_id, e))
                pass
            if cube:
                self._data_sources[ds_id] = EsdcDataSource(self, ds_id, title, cube)

    def query(self,
              ds_id: str = None,
              query_expr: str = None,
              monitor: Monitor = Monitor.NONE) -> Sequence[DataSource]:
        if ds_id:
            data_source = self._data_sources.get(ds_id)
            return [data_source] if data_source else []
        # TODO (forman): use query_expr
        return list(self._data_sources.values())

    def _repr_html_(self):
        # TODO (forman): implement me
        return self.__repr__()
Beispiel #3
0
 def __init__(self):
     super().__init__('esdc', title='Earth System Data Cube', is_local=True)
     esdc_data_source_defs = conf.get_config_value('esdc_data_sources', [])
     self._data_sources = OrderedDict()
     for ds_id, title, local_path in esdc_data_source_defs:
         if not ds_id.startswith('esdc.'):
             ds_id = 'esdc.' + ds_id
         cube = None
         try:
             cube = cablab.Cube.open(local_path)
             # print('Success registering ESDC data source "%s"!' % ds_id)
         except Exception as e:
             warnings.warn('Failed registering ESDC data source "%s": %s' % (ds_id, e))
             # print('Failed to register ESDC data source "%s": %s' % (ds_id, e))
             pass
         if cube:
             self._data_sources[ds_id] = EsdcDataSource(self, ds_id, title, cube)
Beispiel #4
0
 def test_format(self):
     self.assertEqual(
         DictLike.format(
             OrderedDict([('name', 'bibo'), ('thres', 0.5),
                          ('drop', True)])),
         "name='bibo', thres=0.5, drop=True")