def __init__(self, info=None, config=None): """Inheritor class must assign these values.""" if info is None: info = utils.load_info(self.__class__.__name__.lower()) self.info = info self.name = self.info['properties']['name'] if not config: config = default() config.DATA_PATH = os.path.join(config.DATA_PATH, self.name) self.config = config self.data_path = self.config.DATA_PATH
def get_dataset(self, info, root=None, data_path=None): if not isinstance(info, dict): root = root or os.path.dirname(os.path.abspath(info)) info = utils.load_info(info, given_path=True) name = info['properties']['name'] module_name = info['properties'].get('module', name) dataset_module = utils.load_module(module_name, root=root) obj = None logger.info(inspect.getmembers(dataset_module)) config = None if data_path: config = default() config.DATA_PATH = root for data_name, data_class in inspect.getmembers(dataset_module): if inspect.isclass(data_class) and \ data_name.lower() == module_name.lower(): obj = data_class(info, config) break if not obj: raise ImportError(('Module {} not found ' 'the desired class.').format(name)) return obj
Utils for the datasets submodule. """ import os import logging import hashlib import zipfile import tarfile import yaml import shutil import sys import importlib from six.moves import urllib from gsitk.config import default config = default() logger = logging.getLogger(__name__) def load_info(name, given_path=False): """Load YAML info for dataset.""" if not given_path: path = os.path.dirname(os.path.abspath(__file__)) if os.path.exists(os.path.join(path, '{}.yml'.format(name))): ext = '.yml' elif os.path.exists(os.path.join(path, '{}.yaml'.format(name))): ext = '.yaml' else: raise FileNotFoundError("{}".format(name))