mirror of
https://github.com/Doctorado-ML/beflask.git
synced 2025-08-15 23:25:51 +00:00
102 lines
3.0 KiB
Python
102 lines
3.0 KiB
Python
import os
|
|
import json
|
|
from benchmark.Utils import Files, Folders
|
|
from benchmark.ResultsBase import StubReport
|
|
from benchmark.Datasets import Datasets
|
|
from flask_login import current_user
|
|
from flask import Blueprint, current_app, send_file
|
|
from flask import render_template, current_app, request, redirect, url_for
|
|
from flask_login import login_required
|
|
|
|
# import shutil
|
|
# import xlsxwriter
|
|
# from benchmark.ResultsFiles import Excel, ReportDatasets
|
|
|
|
results = Blueprint("results", __name__, template_folder="templates")
|
|
|
|
|
|
@results.route("/select")
|
|
@login_required
|
|
def select(compare="False"):
|
|
# Get a list of files in a directory
|
|
files = {}
|
|
os.chdir(current_user.benchmark.folder)
|
|
names = Files.get_all_results(hidden=False)
|
|
for name in names:
|
|
report = StubReport(os.path.join(Folders.results, name))
|
|
report.report()
|
|
files[name] = {
|
|
"duration": report.duration,
|
|
"score": report.score,
|
|
"title": report.title,
|
|
}
|
|
candidate = current_app.config["FRAMEWORKS"].copy()
|
|
candidate.remove(current_app.config["FRAMEWORK"])
|
|
return render_template(
|
|
"select.html",
|
|
files=files,
|
|
candidate=candidate[0],
|
|
framework=current_app.config["FRAMEWORK"],
|
|
compare=compare.capitalize() == "True",
|
|
)
|
|
|
|
|
|
@results.route("/datasets")
|
|
@login_required
|
|
def datasets():
|
|
os.chdir(current_user.benchmark.folder)
|
|
dt = Datasets()
|
|
datos = []
|
|
for dataset in dt:
|
|
datos.append(dt.get_attributes(dataset))
|
|
return render_template("datasets.html", datasets=datos)
|
|
|
|
|
|
@results.route("/best/<file_name>")
|
|
@login_required
|
|
def best(file_name):
|
|
os.chdir(current_user.benchmark.folder)
|
|
dt = Datasets()
|
|
datos = []
|
|
for dataset in dt:
|
|
datos.append(dt.get_attributes(dataset))
|
|
return render_template("datasets.html", datasets=datos)
|
|
|
|
|
|
@results.route("/report/<file_name>")
|
|
@login_required
|
|
def report(file_name):
|
|
os.chdir(current_user.benchmark.folder)
|
|
with open(os.path.join(Folders.results, file_name)) as f:
|
|
data = json.load(f)
|
|
try:
|
|
compare = current_app.config["COMPARE"]
|
|
summary = process_data(file_name, compare, data)
|
|
except Exception as e:
|
|
return render_template("error.html", message=str(e), compare=compare)
|
|
return render_template(
|
|
"report.html",
|
|
data=data,
|
|
file=file_name,
|
|
summary=summary,
|
|
framework=current_app.config["FRAMEWORK"],
|
|
back=back,
|
|
)
|
|
|
|
|
|
def process_data(file_name, compare, data):
|
|
report = StubReport(
|
|
os.path.join(Folders.results, file_name), compare=compare
|
|
)
|
|
new_list = []
|
|
for result in data["results"]:
|
|
symbol = report._compute_status(result["dataset"], result["score"])
|
|
result["symbol"] = symbol if symbol != " " else " "
|
|
new_list.append(result)
|
|
data["results"] = new_list
|
|
# Compute summary with explanation of symbols
|
|
summary = {}
|
|
for key, value in report._compare_totals.items():
|
|
summary[key] = (report._status_meaning(key), value)
|
|
return summary
|