Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions analytics_platform/kronos/deployment/rest_api.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import logging
import sys
import os
import time

import flask
import datetime
Expand Down Expand Up @@ -110,6 +111,47 @@ def train_and_save_kronos():

@app.route('/api/v1/schemas/kronos_scoring', methods=['POST'])
def predict_and_score():

# Added Hardcoded PGM response with sleep time to benchmark Load Tests
time.sleep(12)
response = [
{
'user_persona': '1',
'alternate_packages': {},
'ecosystem': 'maven',
'companion_packages':
[{
'cooccurrence_probability': 75,
'package_name': 'mysql:mysql-connector-java',
'topic_list': ['java', 'connector', 'mysql']
},
{
'cooccurrence_probability': 3,
'package_name': 'org.springframework.boot:spring-boot-starter-web',
'topic_list': ['spring-webapp-booster', 'spring-starter-web',
'spring-rest-api-starter', 'spring-web-service']
},
{
'cooccurrence_probability': 1,
'package_name': 'org.springframework.boot:spring-boot-starter-data-jpa',
'topic_list': ['spring-persistence', 'spring-jpa',
'spring-data', 'spring-jpa-adaptor']
},
{
'cooccurrence_probability': 2,
'package_name': 'org.springframework.boot:spring-boot-starter-actuator',
'topic_list': ['spring-rest-api', 'spring-starter',
'spring-actuator', 'spring-http']
}],
'missing_packages': [],
'outlier_package_list': [],
'package_to_topic_dict': {
'io.vertx:vertx-web': ['vertx-web', 'webapp', 'auth', 'routing'],
'io.vertx:vertx-core': ['http', 'socket', 'tcp', 'reactive']
}
}
]
return flask.jsonify(response)
input_json = request.get_json()

app.logger.info("Analyzing the given EPV")
Expand Down
5 changes: 2 additions & 3 deletions analytics_platform/kronos/pgm/src/pgm_pomegranate.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import util.pgm_util as utils
from util.data_store.local_filesystem import LocalFileSystem
from util.data_store.s3_data_store import S3DataStore
import pickle
from joblib import Parallel, delayed
import functools

Expand Down Expand Up @@ -38,7 +37,7 @@ def save(self, data_store, filename):
with open(local_filename, 'wb') as f:
# IMPORTANT: Set pickle.HIGHEST_PROTOCOL only after complete porting to
# Python3
pickle.dump(pgm_model.to_json(), f, protocol=2)
f.write(pgm_model.to_json())

data_store.upload_file(local_filename, filename)
return None
Expand All @@ -52,7 +51,7 @@ def load(cls, data_store, filename):
local_filename = "/tmp/kronos.json"
data_store.download_file(filename, local_filename)
with open(local_filename, 'rb') as f:
pgm_model = BayesianNetwork.from_json(pickle.load(f))
pgm_model = BayesianNetwork.from_json(f.read())
return PGMPomegranate(pgm_model)

@classmethod
Expand Down