Example #1
0
def writePmml(pmmlObj, filepath, lockForPMML):
    try:
        lockForPMML.acquire()
        pmmlObj = removeExtraNewLinesFromWeights(pmmlObj)
        scrptVal2 = []
        scrptVal = pmmlObj.script
        if len(scrptVal) > 0:
            for num, sc in enumerate(scrptVal):
                urlOfScript = sc.class_
                useFor = sc.for_
                code = None
                scripCode = sc.get_valueOf_()
                code = scripCode.lstrip('\n')
                lines = []
                code = scripCode.lstrip('\n')
                leading_spaces = len(code) - len(code.lstrip(' '))
                for line in code.split('\n'):
                    lines.append(line[leading_spaces:])
                code = '\n'.join(lines)
                scriptCode = code.replace('<', '&lt;')
                # print (scriptCode)
                scrp = pml.script(content=scriptCode,
                                  class_=urlOfScript,
                                  for_=useFor)
                scrptVal2.append(scrp)
        pmmlObj.script = scrptVal2
        # print ('Code Step 10.1')
        pmmlObj.export(open(filepath, 'w'), 0)
        # print('>>>>>>>>>>>, PMML written')
    except Exception as e:
        print('>>>>>>>>>>>> ', str(e))
    finally:
        lockForPMML.release()
Example #2
0
def writePmml(pmmlObj, filepath, lockForPMML):
    _deepNetworkObj = pmmlObj.DeepNetwork[0]
    _deepNetworkObj.modelName = 'model1'
    _deepNetworkObj.taskType = "trainAndscore"

    pmmlObj.DeepNetwork[0] = _deepNetworkObj

    # print ('came to write')
    try:
        lockForPMML.acquire()
        pmmlObj = removeExtraNewLinesFromWeights(pmmlObj)
        scrptVal2 = []
        scrptVal = pmmlObj.script
        if len(scrptVal) > 0:
            for num, sc in enumerate(scrptVal):
                scriptPurpose = sc.scriptPurpose
                modelVal = sc.for_
                classVal = sc.class_
                filePathUrl = sc.filePath
                scriptOutput = sc.scriptOutput

                code = None
                scripCode = sc.get_valueOf_()
                code = scripCode.lstrip('\n')
                lines = []
                code = scripCode.lstrip('\n')
                leading_spaces = len(code) - len(code.lstrip(' '))
                for line in code.split('\n'):
                    lines.append(line[leading_spaces:])
                code = '\n'.join(lines)
                scriptCode = code.replace('<', '&lt;')
                # scrp=pml.script(content=scriptCode,for_=modelVal,class_=taskTypeVal,scriptPurpose=scriptPurpose,scriptOutput=scriptOutput,filePath=filePathUrl)
                scrp = pml.script(content=scriptCode,
                                  for_=modelVal,
                                  class_=classVal,
                                  scriptPurpose=scriptPurpose,
                                  scriptOutput=scriptOutput,
                                  filePath=filePathUrl)
                scrptVal2.append(scrp)
        pmmlObj.script = scrptVal2
        # print ('Code Step 10.1')
        pmmlObj.export(open(filepath, 'w'), 0)
        # print('>>>>>>>>>>>, PMML written')
    except Exception as e:
        print('>>>>>>>>>>>> ', str(e))
    finally:
        lockForPMML.release()
Example #3
0
        def addLayerToPMML(_positionOfLayer, toUpdateLayer, processedOutput,
                           pmmlObject):
            def checkIfFlushRequired(_oldPosition, _newPositon, _pmmlLayer,
                                     _networkLayers):
                if _oldPosition == _newPositon:
                    if (_pmmlLayer.LayerParameters.inputDimension
                            == _networkLayers[_oldPosition].LayerParameters.
                            inputDimension) & (
                                _pmmlLayer.LayerParameters.outputDimension
                                == _networkLayers[_oldPosition].
                                LayerParameters.outputDimension):
                        return False
                    else:
                        return True
                else:
                    return True

            if processedOutput['itemType'] == 'LAYER':
                _inputForPMML = nyokaPMMLUtilities.convertToStandardJson(
                    processedOutput)
                # print ('',_inputForPMML)
                _pmmlOfLayer = nyokaPMMLUtilities.addLayer(_inputForPMML)
                # print('>>>>>>>',_pmmlOfLayer.__dict__)
                _deepNetworkObj = pmmlObject.DeepNetwork[0]
                # print ('step 1')
                _NetworkLayersObject = _deepNetworkObj.NetworkLayer
                # print ('step 2')
                _idsOfNetworklayer = [i.layerId for i in _NetworkLayersObject]
                flushMemory = False
                if toUpdateLayer == True:
                    _oldPositionOFLayer = _idsOfNetworklayer.index(
                        processedOutput['layerId'])
                    # print('>>>> layer id is ',processedOutput['layerId'])
                    # print('>>>> old position to delete',_oldPositionOFLayer)
                    # print('>>>> new position ',_positionOfLayer)
                    # print ('_idsOfNetworklayer',_idsOfNetworklayer)
                    flushMemory = checkIfFlushRequired(_oldPositionOFLayer,
                                                       _positionOfLayer,
                                                       _pmmlOfLayer,
                                                       _NetworkLayersObject)
                    # print('flushmemory is ',flushMemory)
                    if flushMemory == False:
                        _NetworkLayersObject[
                            _oldPositionOFLayer].Extension = _pmmlOfLayer.Extension
                        _pmmlOfLayer = _NetworkLayersObject[
                            _oldPositionOFLayer]
                    del _NetworkLayersObject[_oldPositionOFLayer]
                _NetworkLayersObject.insert(_positionOfLayer, _pmmlOfLayer)
                # print ('step 3')
                if flushMemory == True:
                    _NetworkLayersObject = resetNetworkLayer(
                        _NetworkLayersObject, _positionOfLayer)
                    # print ('step 6')
                _NetworkLayersObject = reorderIdsOfPmml(_NetworkLayersObject)
                _deepNetworkObj.NetworkLayer = _NetworkLayersObject
                _deepNetworkObj.numberOfLayers = len(_NetworkLayersObject)
                _deepNetworkObj.modelName = 'model1'
                _deepNetworkObj.taskType = "trainAndscore"
                pmmlObject.DeepNetwork[0] = _deepNetworkObj

            elif processedOutput['itemType'] == 'DATA':
                # print ("DATA layer came",processedOutput['filePath'])
                try:
                    dataUrl = processedOutput['filePath']
                    # if processedOutput['for']:
                    # 	dataTagValues=pml.Data(filePath=dataVal,for_=processedOutput['for'])
                    # else:
                    dataTagValues = pml.Data(filePath=dataUrl, for_='model1')
                    pmmlObject.Data = [dataTagValues]
                    # print ('Data Step 3')
                    # pmmlObject.export(sys.stdout,0)
                except:
                    pass

            elif processedOutput['itemType'] == 'CODE':
                print("CODE layer came")
                # print ('processedOutput',processedOutput)
                try:
                    scrptVal = pmmlObject.script
                    urlOfScript = processedOutput['url']
                    filePathUrl = processedOutput['filePath']
                    scriptFile = open(processedOutput['filePath'], 'r')
                    scriptCode = scriptFile.read()
                    scriptCode = scriptCode.replace('<', '&lt;')
                    # print (scriptCode)
                    modelVal = 'model1'
                    taskTypeVal = processedOutput['taskType']
                    scriptPurpose = processedOutput['scriptPurpose']
                    scriptOutput = processedOutput['scriptOutput']
                    scrp = pml.script(content=scriptCode,
                                      for_=modelVal,
                                      class_=taskTypeVal,
                                      scriptPurpose=scriptPurpose,
                                      scriptOutput=scriptOutput,
                                      filePath=filePathUrl)
                    scrp.export(sys.stdout, 0)
                    scrptVal.append(scrp)
                    pmmlObject.script = scrptVal
                    # print ('Code Step 10')
                    # pmmlObject.export(sys.stdout,0)
                except:
                    pass
            return (pmmlObject)
Example #4
0
        def addLayerToPMML(_positionOfLayer, toUpdateLayer, processedOutput,
                           pmmlObject):
            def checkIfFlushRequired(_oldPosition, _newPositon, _pmmlLayer,
                                     _networkLayers):
                if _oldPosition == _newPositon:
                    if (_pmmlLayer.LayerParameters.inputDimension
                            == _networkLayers[_oldPosition].LayerParameters.
                            inputDimension) & (
                                _pmmlLayer.LayerParameters.outputDimension
                                == _networkLayers[_oldPosition].
                                LayerParameters.outputDimension):
                        return False
                    else:
                        return True
                else:
                    return True

            if processedOutput['itemType'] == 'LAYER':
                _inputForPMML = nyokaPMMLUtilities.convertToStandardJson(
                    processedOutput)
                # print ('',_inputForPMML)
                _pmmlOfLayer = nyokaPMMLUtilities.addLayer(_inputForPMML)
                # print('>>>>>>>',_pmmlOfLayer.__dict__)
                _deepNetworkObj = pmmlObject.DeepNetwork[0]
                # print ('step 1')
                _NetworkLayersObject = _deepNetworkObj.NetworkLayer
                # print ('step 2')
                _idsOfNetworklayer = [i.layerId for i in _NetworkLayersObject]
                flushMemory = False
                if toUpdateLayer == True:
                    _oldPositionOFLayer = _idsOfNetworklayer.index(
                        processedOutput['layerId'])
                    # print('>>>> layer id is ',processedOutput['layerId'])
                    # print('>>>> old position to delete',_oldPositionOFLayer)
                    # print('>>>> new position ',_positionOfLayer)
                    # print ('_idsOfNetworklayer',_idsOfNetworklayer)
                    flushMemory = checkIfFlushRequired(_oldPositionOFLayer,
                                                       _positionOfLayer,
                                                       _pmmlOfLayer,
                                                       _NetworkLayersObject)
                    # print('flushmemory is ',flushMemory)
                    if flushMemory == False:
                        _NetworkLayersObject[
                            _oldPositionOFLayer].Extension = _pmmlOfLayer.Extension
                        _pmmlOfLayer = _NetworkLayersObject[
                            _oldPositionOFLayer]
                    del _NetworkLayersObject[_oldPositionOFLayer]
                _NetworkLayersObject.insert(_positionOfLayer, _pmmlOfLayer)
                # print ('step 3')
                if flushMemory == True:
                    _NetworkLayersObject = resetNetworkLayer(
                        _NetworkLayersObject, _positionOfLayer)
                    # print ('step 6')
                _NetworkLayersObject = reorderIdsOfPmml(_NetworkLayersObject)
                _deepNetworkObj.NetworkLayer = _NetworkLayersObject
                _deepNetworkObj.numberOfLayers = len(_NetworkLayersObject)
                pmmlObject.DeepNetwork[0] = _deepNetworkObj

            elif processedOutput['itemType'] == 'DATA':
                # print ("DATA layer came")
                extensionInfoForData = [
                    pml.Extension(value=[], anytypeobjs_=[''])
                ]
                dataVal = {}
                try:
                    dataVal['dataUrl'] = processedOutput['filePath']
                    extensionInfoForData = [
                        pml.Extension(value=dataVal, anytypeobjs_=[''])
                    ]
                    pmmlObject.Header.Extension = extensionInfoForData
                    # print ('Data Step 3')
                    # pmmlObject.export(sys.stdout,0)
                except:
                    pass

            elif processedOutput['itemType'] == 'CODE':
                # print ("CODE layer came")
                try:
                    scrptVal = pmmlObject.script
                    urlOfScript = processedOutput['url']
                    scriptFile = open(processedOutput['filePath'], 'r')
                    scriptCode = scriptFile.read()
                    scriptCode = scriptCode.replace('<', '&lt;')
                    # print (scriptCode)
                    useFor = processedOutput['useFor']
                    scrp = pml.script(content=scriptCode,
                                      class_=urlOfScript,
                                      for_=useFor)
                    # scrp.export(sys.stdout,0)
                    scrptVal.append(scrp)
                    pmmlObject.script = scrptVal
                    # print ('Code Step 10')
                    # pmmlObject.export(sys.stdout,0)
                except:
                    pass
            return (pmmlObject)
Example #5
0
    def getPmml(self, architecture):

        fName = 'classification'
        lenOfArch = len(architecture)
        mName = 'Keras Model'

        netWorkInfo = []
        scriptVal = []
        extensionInfoForData = [pml.Extension(value=[], anytypeobjs_=[''])]
        dataVal = {}
        for counta, j in enumerate(architecture):
            if counta == 0:
                someConectionId = 'na'
            else:
                someConectionId = tempConId
            if j['itemType'] in ['CODE']:
                # print ('##################',j)
                scriptFile = open(j['filePath'], 'r')
                scriptCode = scriptFile.read()
                scriptCode = scriptCode.replace('<', '&lt;')
                scriptInfo = {}
                scrptVal = []
                # dataVal['scriptUrl']=j['url']
                useFor = j['useFor']
                extensionInfoForScript = [
                    pml.Extension(value=scrptVal, anytypeobjs_=[''])
                ]
                scrp = pml.script(content=scriptCode,
                                  Extension=extensionInfoForScript,
                                  for_=useFor)
                scriptVal.append(scrp)
                tempConId = None
            elif j['itemType'] in ['DATA']:
                try:
                    dataVal['dataUrl'] = j['filePath']
                    extensionInfoForData = [
                        pml.Extension(value=dataVal, anytypeobjs_=[''])
                    ]
                except:
                    pass
                tempConId = None

            elif j['itemType'] == 'FOLDING':
                #         print (j)
                for k in j['children']:
                    tempdata7 = self.convertToStandardJson(k)
                    tempdata7['connectionLayerId'] = someConectionId
                    tempConId = tempdata7['layerId']
                    pp = addLayer(tempdata7)
                    netWorkInfo.append(pp)
                    someConectionId = tempConId
            else:
                # print ('Start of tamasha$$$$$$$$$$',j)
                tempdata7 = self.convertToStandardJson(j)
                tempdata7['connectionLayerId'] = someConectionId
                tempConId = tempdata7['layerId']
                # print ('pakda', tempdata7)
                pp = self.addLayer(tempdata7)
                netWorkInfo.append(pp)

        kk = pml.DeepNetwork(modelName=mName,
                             functionName=fName,
                             NetworkLayer=netWorkInfo,
                             numberOfLayers=lenOfArch)
        tt = pml.Timestamp(datetime.now())
        hd = pml.Header(copyright="Copyright (c) 2018 Software AG",
                        Extension=extensionInfoForData,
                        description="Neural Network Model",
                        Timestamp=pml.Timestamp(datetime.now()))

        jj = pml.PMML(version="4.3Ext",
                      script=scriptVal,
                      Header=hd,
                      DeepNetwork=[kk])
        return jj