def test_get_model_contents(self):
        # Resolves https://github.com/sassoftware/python-sasctl/issues/33
        content = mr.get_model_contents(self.MODEL_NAME)

        assert isinstance(content, list)
        assert 'AstoreMetadata.json' in [str(c) for c in content]
        assert 'ModelProperties.json' in [str(c) for c in content]
        assert 'inputVar.json' in [str(c) for c in content]
        assert 'outputVar.json' in [str(c) for c in content]
Ejemplo n.º 2
0
    def test_register_model(self, sklearn_linear_model):
        from sasctl.tasks import register_model
        from sasctl import RestObj

        sk_model, X, _ = sklearn_linear_model

        # Register model and ensure attributes are set correctly
        model = register_model(sk_model,
                               self.MODEL_NAME,
                               project=self.PROJECT_NAME,
                               input=X,
                               force=True)

        assert isinstance(model, RestObj)
        assert self.MODEL_NAME == model.name
        assert 'prediction' == model.function.lower()
        assert 'Linear regression' == model.algorithm
        assert 'Python' == model.trainCodeType
        assert 'ds2MultiType' == model.scoreCodeType

        assert len(model.inputVariables) == 13
        assert len(model.outputVariables) == 1

        # Don't compare to sys.version since cassettes used may have been
        # created by a different version
        assert re.match(r'Python \d\.\d', model.tool)

        # Ensure input & output metadata was set
        for col in X.columns:
            assert 1 == len([
                v for v in model.inputVariables + model.outputVariables
                if v.get('name') == col
            ])

        # Ensure model files were created
        from sasctl.services import model_repository as mr
        files = mr.get_model_contents(model)
        filenames = [f.name for f in files]
        assert 'model.pkl' in filenames
        assert 'dmcas_epscorecode.sas' in filenames
        assert 'dmcas_packagescorecode.sas' in filenames
Ejemplo n.º 3
0
    def test_register_sklearn(self, sklearn_model):
        from sasctl.tasks import register_model
        from sasctl import RestObj

        sk_model, train_df = sklearn_model

        # Register model and ensure attributes are set correctly
        model = register_model(sk_model,
                               SCIKIT_MODEL_NAME,
                               project=PROJECT_NAME,
                               input=train_df,
                               force=True)
        assert isinstance(model, RestObj)
        assert SCIKIT_MODEL_NAME == model.name
        assert 'Classification' == model.function
        assert 'Logistic regression' == model.algorithm
        assert 'Python' == model.trainCodeType
        assert 'ds2MultiType' == model.scoreCodeType

        # Don't compare to sys.version since cassettes used may have been created by a different version
        assert re.match('Python \d\.\d', model.tool)

        # Ensure input & output metadata was set
        for col in train_df.columns:
            assert 1 == len([
                v for v in model.inputVariables + model.outputVariables
                if v.get('name') == col
            ])

        # Ensure model files were created
        from sasctl.services.model_repository import get_model_contents
        files = get_model_contents(model)
        filenames = [f.name for f in files]
        assert 'model.pkl' in filenames
        assert 'dmcas_espscorecode.sas' in filenames
        assert 'dmcas_packagescorecode.sas' in filenames
Ejemplo n.º 4
0
                   project= project,
                   force=True,
                   version = 'latest')

path = Path.cwd()

############################## 
######## adding files ########

#3THIS SESSION IS BUGGED, CANNOT REPLACE FILE

filenames = {'file':['training_code.py'],
            'role':['train']}
            
#### uploading files
model_repository.get_model_contents(modelname)
for i in range(len(filenames['file'])):

    with open(path / filenames['file'][i], "rb") as _file:

        model_repository.add_model_content(
                      model = modelname, 
                      file = _file, 
                      name = filenames['file'][i], 
                      role= filenames['role'][i],
                         )
        
        print('uploaded ' + filenames['file'][i] + ' as ' + filenames['role'][i])
        _file.close()

#### Publish model