|
| 1 | +data sasep.out; |
| 2 | +dcl package pymas pm; |
| 3 | +dcl package logger logr('App.tk.MAS'); |
| 4 | +dcl varchar(32767) character set utf8 pypgm; |
| 5 | +dcl double resultCode revision; |
| 6 | +dcl double tensor; |
| 7 | + |
| 8 | + |
| 9 | +method score(double fixedacidity, double volatileacidity, double citricacid, double residualsugar, double chlorides, double freesulfurdioxide, double totalsulfurdioxide, double density, double pH, double sulphates, double alcohol, in_out double resultCode, in_out double tensor); |
| 10 | + resultCode = revision = 0; |
| 11 | + if null(pm) then do; |
| 12 | + pm = _new_ pymas(); |
| 13 | + resultCode = pm.useModule('model_exec_3106686d-a021-449a-9c2d-f2a6f47a4948', 1); |
| 14 | + if resultCode then do; |
| 15 | + resultCode = pm.appendSrcLine(''); |
| 16 | + resultCode = pm.appendSrcLine(''); |
| 17 | + resultCode = pm.appendSrcLine('import math'); |
| 18 | + resultCode = pm.appendSrcLine('import pickle'); |
| 19 | + resultCode = pm.appendSrcLine('import pandas as pd'); |
| 20 | + resultCode = pm.appendSrcLine('import numpy as np'); |
| 21 | + resultCode = pm.appendSrcLine(''); |
| 22 | + resultCode = pm.appendSrcLine('with open("/models/resources/viya/d02aadfe-618e-44e0-af6d-1bf00c6396e3/MLFlowTest.pickle", "rb") as _pFile:'); |
| 23 | + resultCode = pm.appendSrcLine(' _thisModelFit = pickle.load(_pFile)'); |
| 24 | + resultCode = pm.appendSrcLine(''); |
| 25 | + resultCode = pm.appendSrcLine('def scoreMLFlowTest(fixedacidity, volatileacidity, citricacid, residualsugar, chlorides, freesulfurdioxide, totalsulfurdioxide, density, pH, sulphates, alcohol):'); |
| 26 | + resultCode = pm.appendSrcLine(' "Output: tensor"'); |
| 27 | + resultCode = pm.appendSrcLine(''); |
| 28 | + resultCode = pm.appendSrcLine(' try:'); |
| 29 | + resultCode = pm.appendSrcLine(' global _thisModelFit'); |
| 30 | + resultCode = pm.appendSrcLine(' except NameError:'); |
| 31 | + resultCode = pm.appendSrcLine(''); |
| 32 | + resultCode = pm.appendSrcLine(' with open("/models/resources/viya/d02aadfe-618e-44e0-af6d-1bf00c6396e3/MLFlowTest.pickle", "rb") as _pFile:'); |
| 33 | + resultCode = pm.appendSrcLine(' _thisModelFit = pickle.load(_pFile)'); |
| 34 | + resultCode = pm.appendSrcLine(''); |
| 35 | + resultCode = pm.appendSrcLine(' try:'); |
| 36 | + resultCode = pm.appendSrcLine(' inputArray = pd.DataFrame([[fixedacidity, volatileacidity, citricacid, residualsugar, chlorides, freesulfurdioxide, totalsulfurdioxide, density, pH, sulphates, alcohol]],'); |
| 37 | + resultCode = pm.appendSrcLine(' columns=["fixedacidity", "volatileacidity", "citricacid", "residualsugar", "chlorides", "freesulfurdioxide", "totalsulfurdioxide", "density", "pH", "sulphates", "alcohol"],'); |
| 38 | + resultCode = pm.appendSrcLine(' dtype=float)'); |
| 39 | + resultCode = pm.appendSrcLine(' prediction = _thisModelFit.predict(inputArray)'); |
| 40 | + resultCode = pm.appendSrcLine(' except ValueError:'); |
| 41 | + resultCode = pm.appendSrcLine(' # For models requiring or including an intercept value, a "const" column is required'); |
| 42 | + resultCode = pm.appendSrcLine(' # For example, many statsmodels models include an intercept value that must be included for the model prediction'); |
| 43 | + resultCode = pm.appendSrcLine(' inputArray = pd.DataFrame([[1.0, fixedacidity, volatileacidity, citricacid, residualsugar, chlorides, freesulfurdioxide, totalsulfurdioxide, density, pH, sulphates, alcohol]],'); |
| 44 | + resultCode = pm.appendSrcLine(' columns=["const", "fixedacidity", "volatileacidity", "citricacid", "residualsugar", "chlorides", "freesulfurdioxide", "totalsulfurdioxide", "density", "pH", "sulphates", "alcohol"],'); |
| 45 | + resultCode = pm.appendSrcLine(' dtype=float)'); |
| 46 | + resultCode = pm.appendSrcLine(' prediction = _thisModelFit.predict(inputArray)'); |
| 47 | + resultCode = pm.appendSrcLine(''); |
| 48 | + resultCode = pm.appendSrcLine(' tensor = prediction'); |
| 49 | + resultCode = pm.appendSrcLine(''); |
| 50 | + resultCode = pm.appendSrcLine(' return(tensor)'); |
| 51 | + revision = pm.publish(pm.getSource(), 'model_exec_3106686d-a021-449a-9c2d-f2a6f47a4948'); |
| 52 | + |
| 53 | + if ( revision < 1 ) then do; |
| 54 | + logr.log( 'e', 'py.publish() failed.'); |
| 55 | + resultCode = -1; |
| 56 | + return; |
| 57 | + end; |
| 58 | + end; |
| 59 | + end; |
| 60 | + resultCode = pm.useMethod('scoreMLFlowTest'); |
| 61 | + if resultCode then do; |
| 62 | + logr.log('E', 'useMethod() failed. resultCode=$s', resultCode); |
| 63 | + return; |
| 64 | + end; |
| 65 | + resultCode = pm.setDouble('fixedacidity', fixedacidity); |
| 66 | + if resultCode then |
| 67 | + logr.log('E', 'useMethod() failed. resultCode=$s', resultCode); |
| 68 | + resultCode = pm.setDouble('volatileacidity', volatileacidity); |
| 69 | + if resultCode then |
| 70 | + logr.log('E', 'useMethod() failed. resultCode=$s', resultCode); |
| 71 | + resultCode = pm.setDouble('citricacid', citricacid); |
| 72 | + if resultCode then |
| 73 | + logr.log('E', 'useMethod() failed. resultCode=$s', resultCode); |
| 74 | + resultCode = pm.setDouble('residualsugar', residualsugar); |
| 75 | + if resultCode then |
| 76 | + logr.log('E', 'useMethod() failed. resultCode=$s', resultCode); |
| 77 | + resultCode = pm.setDouble('chlorides', chlorides); |
| 78 | + if resultCode then |
| 79 | + logr.log('E', 'useMethod() failed. resultCode=$s', resultCode); |
| 80 | + resultCode = pm.setDouble('freesulfurdioxide', freesulfurdioxide); |
| 81 | + if resultCode then |
| 82 | + logr.log('E', 'useMethod() failed. resultCode=$s', resultCode); |
| 83 | + resultCode = pm.setDouble('totalsulfurdioxide', totalsulfurdioxide); |
| 84 | + if resultCode then |
| 85 | + logr.log('E', 'useMethod() failed. resultCode=$s', resultCode); |
| 86 | + resultCode = pm.setDouble('density', density); |
| 87 | + if resultCode then |
| 88 | + logr.log('E', 'useMethod() failed. resultCode=$s', resultCode); |
| 89 | + resultCode = pm.setDouble('pH', pH); |
| 90 | + if resultCode then |
| 91 | + logr.log('E', 'useMethod() failed. resultCode=$s', resultCode); |
| 92 | + resultCode = pm.setDouble('sulphates', sulphates); |
| 93 | + if resultCode then |
| 94 | + logr.log('E', 'useMethod() failed. resultCode=$s', resultCode); |
| 95 | + resultCode = pm.setDouble('alcohol', alcohol); |
| 96 | + if resultCode then |
| 97 | + logr.log('E', 'useMethod() failed. resultCode=$s', resultCode); |
| 98 | + resultCode = pm.execute(); |
| 99 | + if (resultCode) then put 'Error: pm.execute failed. resultCode=' resultCode; |
| 100 | + else do; |
| 101 | + tensor = pm.getDouble('tensor'); |
| 102 | + end; |
| 103 | +end; |
| 104 | + |
| 105 | +method run(); |
| 106 | + set SASEP.IN; |
| 107 | + score(fixedacidity, volatileacidity, citricacid, residualsugar, chlorides, freesulfurdioxide, totalsulfurdioxide, density, pH, sulphates, alcohol, resultCode, tensor); |
| 108 | +end; |
| 109 | +enddata; |
| 110 | + |
0 commit comments