diff --git a/slope-evaluator/api.py b/slope-evaluator/api.py index e3fa5b74c31ff43451871ceda4c10da206d423d0..927c454fe56eb5b4f2d668f1ecbbe0ded1b35048 100644 --- a/slope-evaluator/api.py +++ b/slope-evaluator/api.py @@ -1,25 +1,30 @@ -from fastapi import FastAPI +from fastapi import FastAPI,Request import trend_slope_computer as trend_slope_computer import logging import os import pandas as pd +import json +import numpy as np +from fastapi.encoders import jsonable_encoder app = FastAPI() +def execute(results, threshold): -@app.get("/evaluate-slope") -def evaluate_slope(total_lag): - print("request received") - print(total_lag) - execute(total_lag, 1000) - return {"suitable" : "false"} - + d = [] + for result in results: + #print(results) + group = result['metric']['group'] + for value in result['values']: + # print(value) + d.append({'group': group, 'timestamp': int( + value[0]), 'value': int(value[1]) if value[1] != 'NaN' else 0}) + df = pd.DataFrame(d) -def execute(total_lag, threshold): - df = pd.DataFrame(total_lag) + print(df) try: - trend_slope = trend_slope_computer.compute(df, 60) + trend_slope = trend_slope_computer.compute(df, 0) except Exception as e: err_msg = 'Computing trend slope failed' print(err_msg) @@ -30,3 +35,12 @@ def execute(total_lag, threshold): print(f"Trend Slope: {trend_slope}") return trend_slope < threshold + +@app.post("/evaluate-slope",response_model=bool) +async def evaluate_slope(request: Request): + print("request received") + x = json.loads(await request.body()) + #x = np.array(x['total_lag']) + y = execute(x['total_lag'], 1000) + print(print(y)) + return y diff --git a/slope-evaluator/trend_slope_computer.py b/slope-evaluator/trend_slope_computer.py index ea6e7bacdfdc176d8049a41c7090093f9b5d852f..c128d9f48c1e7ba20e43dfbfd6a0391eeec2b60b 100644 --- a/slope-evaluator/trend_slope_computer.py +++ b/slope-evaluator/trend_slope_computer.py @@ -2,7 +2,8 @@ from sklearn.linear_model import LinearRegression import pandas as pd import os -def compute(input, warmup_sec): +def compute(x, warmup_sec): + input = x input['sec_start'] = input.loc[0:, 'timestamp'] - input.iloc[0]['timestamp'] regress = input.loc[input['sec_start'] >= warmup_sec] # Warm-Up