Example #1
0
    def setUp(self):
        set_project_path(testenv.MOCK_PROJECT_PATH)

        self.path_to_dataset = testenv.IRIS_DATASET
        self.path_to_test_dir = testenv.TEST_PATH
        self.aux_project_name = testenv.MOCK_PROJECT_NAME
        self.path_to_auxproj = testenv.MOCK_PROJECT_PATH
        self.project_default_name = testenv.DEFAULT_PROJECT_NAME

        # Generate a project
        self.p = Project(path=self.path_to_test_dir,
                         name=self.aux_project_name)

        # Add a dataset
        self.ds = Dataset.read_file(path=self.path_to_dataset, )
        self.ds.save()

        # Generate subdataset
        self.sbds = SubDataset(self.ds, method="k_fold", by=5)
        self.sbds.save()

        # set apporach
        self.approach = Approach(self.p,
                                 "decision_tree",
                                 self.sbds,
                                 path=str(Path(testenv.TEST_PATH, "dt")))
        shutil.copyfile(testenv.IRIS_APPROACH, str(self.approach.script_path))
        self.approach.save()

        # generate runs
        import_from("test.dt.decision_tree", "DecisionTreeApproach")().run()
Example #2
0
    def setUp(self):
        set_project_path(testenv.MOCK_PROJECT_PATH)

        self.path_to_dataset = testenv.MOCK_DATASET
        self.path_to_test_dir = testenv.TEST_PATH
        self.aux_project_name = testenv.MOCK_PROJECT_NAME
        self.path_to_auxproj = testenv.MOCK_PROJECT_PATH
        self.project_default_name = testenv.DEFAULT_PROJECT_NAME

        # Generate a project
        self.p = Project(path=self.path_to_test_dir,
                         name=self.aux_project_name)

        # Add a dataset
        self.ds = Dataset.read_file(path=self.path_to_dataset)
        self.ds.save()

        # Generate subdataset
        self.sbds = SubDataset(self.ds, method="k_fold", by=5)
        self.sbds.save()

        # set apporach
        self.approach = Approach(self.p,
                                 "logistic_regression",
                                 self.sbds,
                                 path=str(Path(testenv.TEST_PATH, "lr")))
        shutil.copyfile(testenv.APPROACH_EXAMPLE,
                        str(self.approach.script_path))
        self.approach.save()

        # generate runs
        import_from("test.lr.logistic_regression",
                    "LogisticRegressionApproach")().run()
Example #3
0
    def test_get_subdataset_runs(self):
        runnable = import_from("test.lr.logistic_regression",
                               "LogisticRegressionApproach")
        runs = RunGenerator.from_runnable_approach(runnable())
        for run in runs:
            run.save()

        runs = Approach.load(self.approach.id).runs
        self.assertTrue(len(runs) > 0)
        for run in runs:
            self.assertIsInstance(run, Run)
        return runs
Example #4
0
def run(approach_id, resume):
    if not _is_running_in_project():
        print("You must use driftai CLI inside an driftai project directory")
        return
    if not Approach.collection().exists(approach_id):
        print("Approach with id {} does not exist.".format(approach_id))
        return

    sys.path.append(Project.load().path)

    namespace = 'approaches.' + approach_id
    cls_name = to_camel_case(approach_id) + "Approach"

    approach_cls = import_from(namespace, cls_name)
    approach_cls().run(resume=resume)
Example #5
0
    def test_generate_runs_from_subdataset(self):
        # Trick to load runnable approach
        LogisticRegressionApproach = import_from("test.lr.logistic_regression",
                                                 "LogisticRegressionApproach")
        ra = LogisticRegressionApproach()

        # Generate the runs
        run_gens = RunGenerator.from_runnable_approach(ra)

        # Write runs to database
        ra.approach.runs = run_gens
        ra.approach.update()

        # Reload approach to test if runs were correctly stored
        approach = Approach.load(ra.approach.id)
        self.assertEqual(len(approach.runs), len(run_gens))
Example #6
0
    def load_from_data(data):
        """
        Create datasource from serialized data

        Parameters
        ----------
        data: dict
            Dictionary containing serialized datasource data

        Returns
        -------
        Datasource
        """

        datasource_class_ = import_from(data["module"], data["class_name"])
        del data["class_name"]
        del data["module"]

        return datasource_class_(**data)
Example #7
0
 def _custom_datasource_class(dtype):
     split = dtype.split('.')
     return import_from('.'.join(split[:-1]), split[-1])