Beispiel #1
0
def test_load_invalid_opener(tmp_cwd):
    invalid_script = """
def get_X():
    raise NotImplementedError
def get_y():
    raise NotImplementedError
"""

    import_module('opener', invalid_script)

    with pytest.raises(exceptions.InvalidInterface):
        load_from_module()
Beispiel #2
0
def test_opener_check_folders(tmp_cwd):
    script = """
from substratools import Opener
class MyOpener(Opener):
    def get_X(self, folders):
        assert len(folders) == 5
        return 'Xclass'
    def get_y(self, folders):
        return 'yclass'
    def fake_X(self):
        return 'fakeX'
    def fake_y(self):
        return 'fakey'
    def get_pred(self, path):
        return 'pred'
    def save_pred(self, y_pred, path):
        return 'pred'
"""

    import_module('opener', script)

    o = load_from_module()

    # create some data folders
    data_root_path = o._workspace.data_folder
    data_paths = [os.path.join(data_root_path, str(i)) for i in range(5)]
    [os.makedirs(p) for p in data_paths]

    o.data_folders = data_paths
    assert o.get_X() == 'Xclass'
def test_load_opener_from_path(tmp_cwd, valid_opener_code):
    dirpath = tmp_cwd / 'myopener'
    dirpath.mkdir()
    path = dirpath / 'my_opener.py'
    path.write_text(valid_opener_code)
    o = load_from_module(path=path)
    assert o.get_X() == 'X'
def test_predictions_check(tmp_cwd, save_predictions_method_body):
    script = f"""
import json
from substratools import Opener

class MyOpener(Opener):
    def get_X(self, folder):
        return 'X'

    def get_y(self, folder):
        return list(range(0, 3))

    def fake_X(self, n_samples):
        return 'Xfake'

    def fake_y(self, n_samples):
        return [0] * 3

    def get_predictions(self, path):
        with open(path, 'r') as f:
            return json.load(f)

    def save_predictions(self, pred, path):
        {save_predictions_method_body}
"""
    import_module('opener', script)

    o = load_from_module()

    with pytest.raises(exceptions.MissingFileError):
        o.save_predictions({'foo': 'bar'})
def execute(interface=None, sysargs=None):
    """Launch metrics command line interface."""
    if not interface:
        interface = utils.load_interface_from_module(
            'metrics',
            interface_class=Metrics,
            interface_signature=REQUIRED_FUNCTIONS)

    cli = _generate_cli()
    sysargs = sysargs if sysargs is not None else sys.argv[1:]
    args = cli.parse_args(sysargs)

    workspace = MetricsWorkspace(
        input_data_folder_paths=args.data_sample_paths,
        input_predictions_path=args.input_predictions_path,
        log_path=args.log_path,
        output_perf_path=args.output_perf_path,
    )
    opener_wrapper = opener.load_from_module(
        path=args.opener_path,
        workspace=workspace,
    )
    utils.configure_logging(path=workspace.log_path, debug_mode=args.debug)
    metrics_wrapper = MetricsWrapper(
        interface,
        workspace=workspace,
        opener_wrapper=opener_wrapper,
    )
    fake_data = args.fake_data or FakeDataMode.from_str(args.fake_data_mode)
    n_fake_samples = args.n_fake_samples
    return metrics_wrapper.score(
        fake_data,
        n_fake_samples,
    )
Beispiel #6
0
 def _algo_from_args(args):
     workspace = AlgoWorkspace(
         input_data_folder_paths=args.data_sample_paths,
         input_models_folder_path=args.models_path,
         log_path=args.log_path,
         output_model_path=args.output_model_path,
         output_predictions_path=args.output_predictions_path,
     )
     utils.configure_logging(workspace.log_path, debug_mode=args.debug)
     opener_wrapper = opener.load_from_module(
         path=args.opener_path,
         workspace=workspace,
     )
     return AlgoWrapper(
         interface,
         workspace=workspace,
         opener_wrapper=opener_wrapper,
     )
Beispiel #7
0
def test_load_opener_as_class(tmp_cwd):
    script = """
from substratools import Opener
class MyOpener(Opener):
    def get_X(self, folders):
        return 'Xclass'
    def get_y(self, folders):
        return 'yclass'
    def fake_X(self):
        return 'fakeX'
    def fake_y(self):
        return 'fakey'
    def get_pred(self, path):
        return 'pred'
    def save_pred(self, y_pred, path):
        return 'pred'
"""

    import_module('opener', script)

    o = load_from_module()
    assert o.get_X() == 'Xclass'
Beispiel #8
0
def test_load_opener_as_module(tmp_cwd):
    script = """
def _helper():
    pass
def get_X(folders):
    return 'X'
def get_y(folders):
    return 'y'
def fake_X():
    return 'fakeX'
def fake_y():
    return 'fakey'
def get_pred(path):
    return 'pred'
def save_pred(y_pred, path):
    return 'pred'
"""

    import_module('opener', script)

    o = load_from_module()
    assert o.get_X() == 'X'
Beispiel #9
0
    def __init__(self, interface):
        self._opener_wrapper = opener.load_from_module()

        self._workspace = workspace.Workspace()
        self._interface = interface
Beispiel #10
0
    def __init__(self, interface):
        assert isinstance(interface, Algo)
        self._opener_wrapper = opener.load_from_module()

        self._interface = interface
        self._workspace = workspace.Workspace()
Beispiel #11
0
def test_load_opener_not_found(tmp_cwd):
    with pytest.raises(ImportError):
        load_from_module()
Beispiel #12
0
 def __init__(self, interface, workspace=None, opener_wrapper=None):
     assert isinstance(interface, self._INTERFACE_CLASS)
     self._workspace = workspace or self._DEFAULT_WORKSPACE_CLASS()
     self._opener_wrapper = opener_wrapper or \
         opener.load_from_module(workspace=self._workspace)
     self._interface = interface
 def __init__(self, interface, workspace=None, opener_wrapper=None):
     self._workspace = workspace or MetricsWorkspace()
     self._opener_wrapper = opener_wrapper or \
         opener.load_from_module(workspace=self._workspace)
     self._interface = interface