From 97677b185fe47051e1a2ff9be25e0967d8dc27c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Montan=CC=83ana?= Date: Mon, 5 Jun 2023 20:04:12 +0200 Subject: [PATCH] Add datasets and enhance select --- app/app.db | Bin 28672 -> 28672 bytes app/config.py | 11 +++- app/env.dist | 3 + app/results/main_select.py | 62 +++++++++++++++++++-- app/results/templates/_table_datasets.html | 25 +++++++++ app/results/templates/_table_select.html | 20 +++++-- app/results/templates/datasets.html | 26 +++++++++ 7 files changed, 136 insertions(+), 11 deletions(-) create mode 100644 app/env.dist create mode 100644 app/results/templates/_table_datasets.html create mode 100644 app/results/templates/datasets.html diff --git a/app/app.db b/app/app.db index 9544a8c8d33ec94ce599936ae89f2c0319d333ea..8132068b98b61438c78d2dbff3bb0ca745c09a29 100644 GIT binary patch delta 61 zcmV-D0K)%(-~oW(0gxL3(2*QN0no8vp+5@%0006G>HrUM4(hWJ5KayR4{-pHlU`1X T0RofiPKN}63;_tUbx(^RcX<6#!$f63PGo diff --git a/app/config.py b/app/config.py index 298c10d..7de7c2e 100644 --- a/app/config.py +++ b/app/config.py @@ -1,17 +1,26 @@ import os from dotenv import load_dotenv +dotenv_file = ".env" basedir = os.path.abspath(os.path.dirname(__file__)) -load_dotenv(os.path.join(basedir, ".env")) +load_dotenv(os.path.join(basedir, dotenv_file)) class Config(object): FRAMEWORKS = ["bootstrap", "bulma"] FRAMEWORK = os.environ.get("FRAMEWORK") or FRAMEWORKS[0] OUTPUT = os.environ.get("OUTPUT") or "local" # local or docker + COMPARE = os.environ.get("COMPARE") == "True" or False TEMPLATES_AUTO_RELOAD = True SECRET_KEY = os.environ.get("SECRET_KEY") or "really-hard-to-guess-key" SQLALCHEMY_DATABASE_URI = os.environ.get( "DATABASE_URL" ) or "sqlite:///" + os.path.join(basedir, "app.db") SQLALCHEMY_TRACK_MODIFICATIONS = False + + @staticmethod + def save(): + with open(dotenv_file, "w") as f: + f.write("FRAMEWORK=" + Config.FRAMEWORK + "\n") + f.write("OUTPUT=" + Config.OUTPUT + "\n") + f.write("COMPARE=" + str(Config.COMPARE) + "\n") diff --git a/app/env.dist b/app/env.dist new file mode 100644 index 0000000..de335b0 --- /dev/null +++ b/app/env.dist @@ -0,0 +1,3 @@ +OUTPUT="local" +FRAMEWORK="bulma" +COMPARE="True" \ No newline at end of file diff --git a/app/results/main_select.py b/app/results/main_select.py index 90f5f4b..f5b9933 100644 --- a/app/results/main_select.py +++ b/app/results/main_select.py @@ -1,16 +1,16 @@ 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 json # import shutil # import xlsxwriter # from benchmark.ResultsFiles import Excel, ReportDatasets -# from benchmark.Datasets import Datasets results = Blueprint("results", __name__, template_folder="templates") @@ -43,5 +43,59 @@ def select(compare="False"): @results.route("/datasets") @login_required -def datasets(compare="False"): - return render_template("test.html") +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/") +@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/") +@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 diff --git a/app/results/templates/_table_datasets.html b/app/results/templates/_table_datasets.html new file mode 100644 index 0000000..c0a7cde --- /dev/null +++ b/app/results/templates/_table_datasets.html @@ -0,0 +1,25 @@ + + + + + + + + + + + + + {% for dataset in datasets %} + + + + + + + + + {% endfor %} + +
DatasetSamplesFeaturesCont. Feat.ClassesBalance
{{ dataset.dataset }}{{ "{:,}".format(dataset.samples) }}{{ "{:,}".format(dataset.features) }}{{ dataset.cont_features }}{{ dataset.classes }}{{ dataset.balance }}
diff --git a/app/results/templates/_table_select.html b/app/results/templates/_table_select.html index 7bfe53e..fb4ea9e 100644 --- a/app/results/templates/_table_select.html +++ b/app/results/templates/_table_select.html @@ -1,7 +1,7 @@ -{%- macro get_button_tag(icon_name, method, visible=True, name="") -%} - -{%- endmacro -%} +
+ + Comparing with best results +
@@ -39,9 +39,17 @@ diff --git a/app/results/templates/datasets.html b/app/results/templates/datasets.html new file mode 100644 index 0000000..c10e8f7 --- /dev/null +++ b/app/results/templates/datasets.html @@ -0,0 +1,26 @@ +{% extends "base.html" %} +{% block content %} + {% include "_table_datasets.html" %} +{% endblock %} +{% block jscript %} + {{ super() }} + +{% endblock %}
{{ "%s" % data["title"] }} {{ "%.6f" % data["score"] }} - {{ get_button_tag("table-eye", "showFile('" ~ file ~ "') ") | safe }} {% set file_best = "best_results_" ~ parts[1] ~ "_" ~ parts[2] ~ ".json" %} - {{ get_button_tag("star-circle-outline", "redirectDouble('best_results', '" ~ file_best ~ "') ", visible=False, name="best_buttons") | safe }} + +