Add fields to dataset table report

This commit is contained in:
2023-06-07 16:59:30 +02:00
parent 61d76a8651
commit 13af6b83d4
11 changed files with 120 additions and 61 deletions

Binary file not shown.

View File

@@ -106,6 +106,7 @@ def report(file_name):
os.chdir(current_user.benchmark.folder) os.chdir(current_user.benchmark.folder)
back = request.args.get("url") or "" back = request.args.get("url") or ""
back_name = request.args.get("url_name") or "" back_name = request.args.get("url_name") or ""
app_config = dotenv_values(".env")
with open(os.path.join(Folders.results, file_name)) as f: with open(os.path.join(Folders.results, file_name)) as f:
data = json.load(f) data = json.load(f)
try: try:
@@ -121,6 +122,7 @@ def report(file_name):
summary=summary, summary=summary,
back=back, back=back,
back_name=back_name, back_name=back_name,
app_config=app_config,
) )

View File

@@ -0,0 +1,76 @@
<table id="report-table"
class="table table-striped table-hover table-bordered bg-light"
data-toggle="table"
data-sticky-header="true"
data-sticky-header-offset-y="50"
data-sortable="true">
<thead>
<tr class="bg-primary text-white">
<th class="text-center" data-field="model" data-sortable="true">Model</th>
<th class="text-center" data-field="metric" data-sortable="true">Metric</th>
<th class="text-center" data-field="platform" data-sortable="true">Platform</th>
<th class="text-center" data-field="stratified" data-sortable="true">Stratified</th>
<th class="text-center"
data-field="samples"
data-sortable="true"
data-sorter="remove_dot">Samples</th>
<th class="text-center"
data-field="features"
data-sortable="true"
data-sorter="remove_dot">Features</th>
<th class="text-center"
data-field="classes"
data-sortable="true"
data-sorter="remove_dot">Classes</th>
<th class="text-center"
data-field="nodes"
data-sortable="true"
data-sorter="remove_dot">{{ app_config.nodes }}</th>
<th class="text-center"
data-field="leaves"
data-sortable="true"
data-sorter="remove_dot">{{ app_config.leaves }}</th>
<th class="text-center"
data-field="depth"
data-sortable="true"
data-sorter="remove_dot">{{ app_config.depth }}</th>
<th class="text-center"
data-field="score"
data-sortable="true"
data-sorter="remove_plus">Score</th>
<th class="text-center"
data-field="time"
data-sortable="true"
data-sorter="remove_plus">Time</th>
<th class="text-center" data-field="hyperparameters" data-sortable="true">Hyperparameters</th>
<th></th>
</tr>
</thead>
<tbody>
{% for file_name, item in results.items() %}
{% set parts = file_name.split('_') %}
{% set stratified = parts[6].split('.')[0] %}
<tr>
<td class="text-left">{{ parts[2] }}</td>
<td class="text-center">{{ parts[1] }}</td>
<td class="text-center">{{ parts[3] }}</td>
<td class="text-center">{{ 'True' if stratified =='1' else 'False' }}</td>
<td class="text-end">{{ '{:,}'.format(item.samples) }}</td>
<td class="text-end">{{"%d" % item.features }}</td>
<td class="text-end">{{"%d" % item.classes }}</td>
<td class="text-end">{{ '{:,.2f}'.format(item.nodes) }}</td>
<td class="text-end">{{ '{:,}'.format(item.leaves) }}</td>
<td class="text-end">{{ '{:,}'.format(item.depth) }}</td>
<td class="text-end">{{"%.6f±%.4f" % (item.score, item.score_std)}}</td>
<td class="text-end">{{"%.6f±%.4f" % (item.time, item.time_std)}}</td>
<td class="text-left">{{ item.hyperparameters }}</td>
<td class="text-center">
<button class="btn btn-primary btn-small"
onclick='location.href="{{ url_for("results.report", file_name=file_name) }}?url={{ url }}&url_name={{ dataset_name }} Results"'>
<i class="mdi mdi-table-eye"></i>
</button>
</td>
</tr>
{% endfor %}
</tbody>
</table>

View File

@@ -1,5 +1,9 @@
<table id="report-table" <table id="report-table"
class="table table-striped table-hover table-bordered bg-light"> class="table table-striped table-hover table-bordered bg-light"
data-toggle="table"
data-sticky-header="true"
data-sticky-header-offset-y="50"
data-sortable="true">
<thead> <thead>
<tr class="bg-primary text-white"> <tr class="bg-primary text-white">
<th class="text-center">Dataset</th> <th class="text-center">Dataset</th>

View File

@@ -52,7 +52,7 @@
</table> </table>
<div>{{ excel_button([ file ]) }}</div> <div>{{ excel_button([ file ]) }}</div>
<table class="table table-striped table-hover table-bordered bg-light" <table class="table table-striped table-hover table-bordered bg-light"
id="table-report" id="report-table"
data-toggle="table" data-toggle="table"
data-sticky-header="true" data-sticky-header="true"
data-sticky-header-offset-y="50" data-sticky-header-offset-y="50"
@@ -75,7 +75,15 @@
<th class="text-center" <th class="text-center"
data-field="nodes" data-field="nodes"
data-sortable="true" data-sortable="true"
data-sorter="remove_dot">Nodes</th> data-sorter="remove_dot">{{ app_config.nodes }}</th>
<th class="text-center"
data-field="leaves"
data-sortable="true"
data-sorter="remove_dot">{{ app_config.leaves }}</th>
<th class="text-center"
data-field="depth"
data-sortable="true"
data-sorter="remove_dot">{{ app_config.depth }}</th>
<th class="text-center" <th class="text-center"
data-field="score" data-field="score"
data-sortable="true" data-sortable="true"
@@ -88,18 +96,6 @@
<th class="text-center" data-field="hyperparameters" data-sortable="true">Hyperparameters</th> <th class="text-center" data-field="hyperparameters" data-sortable="true">Hyperparameters</th>
</tr> </tr>
</thead> </thead>
<script>
function remove_plus(a, b) {
var aa = a.split('±')[0]
var bb = b.split('±')[0]
return aa - bb
}
function remove_dot(a, b) {
var aa = a.replace(',', '').replace('.', '')
var bb = b.replace(',', '').replace('.', '')
return aa - bb
}
</script>
<tbody> <tbody>
{% for item in data.results %} {% for item in data.results %}
<tr> <tr>
@@ -110,6 +106,8 @@
<td class="text-end">{{"%d" % item.features}}</td> <td class="text-end">{{"%d" % item.features}}</td>
<td class="text-end">{{"%d" % item.classes}}</td> <td class="text-end">{{"%d" % item.classes}}</td>
<td class="text-end">{{ '{:,.2f}'.format(item.nodes) }}</td> <td class="text-end">{{ '{:,.2f}'.format(item.nodes) }}</td>
<td class="text-end">{{ '{:,}'.format(item.leaves) }}</td>
<td class="text-end">{{ '{:,}'.format(item.depth) }}</td>
<td class="text-end">{{"%.6f±%.4f" % (item.score, item.score_std)}}</td> <td class="text-end">{{"%.6f±%.4f" % (item.score, item.score_std)}}</td>
<td class="text-center">{{ item.symbol|safe }}</td> <td class="text-center">{{ item.symbol|safe }}</td>
<td class="text-end">{{"%.6f±%.4f" % (item.time, item.time_std)}}</td> <td class="text-end">{{"%.6f±%.4f" % (item.time, item.time_std)}}</td>

View File

@@ -3,44 +3,9 @@
<div class="alert alert-primary" role="alert"> <div class="alert alert-primary" role="alert">
<h3>Results for {{ dataset_name }}</h3> <h3>Results for {{ dataset_name }}</h3>
</div> </div>
<table id="files-table" {% include "_table_dataset.html" %}
class="table table-striped table-hover table-bordered bg-light" {% endblock %}
data-toggle="table" {% block jscript %}
data-sticky-header="true" {{ super() }}
data-sticky-header-offset-y="50" <script src="{{ url_for('static', filename="js/report.js") }}"></script>
data-sortable="true">
<thead>
<tr class="bg-primary text-white">
<th class="text-center" data-field="file" data-sortable="true">File Name</th>
<th class="text-center" data-field="samples" data-sortable="true">Samples</th>
<th class="text-center" data-field="features" data-sortable="true">Features</th>
<th class="text-center" data-field="classes" data-sortable="true">Classes</th>
<th class="text-center" data-field="nodes" data-sortable="true">{{ app_config.nodes }}</th>
<th class="text-center" data-field="leaves" data-sortable="true">{{ app_config.leaves }}</th>
<th class="text-center" data-field="depth" data-sortable="true">{{ app_config.depth }}</th>
<th class="text-center" data-field="score" data-sortable="true">Score</th>
<th class="text-center" data-field="time" data-sortable="true">Time</th>
<th class="text-center" data-field="hyperparameters" data-sortable="true">Hyperparameters</th>
</tr>
</thead>
<tbody>
{% for file_name, item in results.items() %}
<tr>
<td class="text-left">
{% set url = url_for(request.endpoint, **request.view_args)|urlencode %}
<a href="{{ url_for('results.report', file_name=file_name) }}?url={{ url }}&url_name={{ dataset_name }} report">{{ file_name }}</a>
</td>
<td class="text-end">{{ '{:,}'.format(item.samples) }}</td>
<td class="text-end">{{"%d" % item.features}}</td>
<td class="text-end">{{"%d" % item.classes}}</td>
<td class="text-end">{{ '{:,.2f}'.format(item.nodes) }}</td>
<td class="text-end">{{ '{:,}'.format(item.leaves) }}</td>
<td class="text-end">{{ '{:,}'.format(item.depth) }}</td>
<td class="text-end">{{"%.6f±%.4f" % (item.score, item.score_std)}}</td>
<td class="text-end">{{"%.6f±%.4f" % (item.time, item.time_std)}}</td>
<td class="text-left">{{ item.hyperparameters }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endblock %} {% endblock %}

View File

@@ -1,5 +1,5 @@
{% from "macros.html" import excel_button %} {% from "macros.html" import excel_button %}
{% extends "base.html" %} {% extends "report_tables.html" %}
{% block content %} {% block content %}
{{ excel_button(["datasets"]) }} {{ excel_button(["datasets"]) }}
{% include "_table_datasets.html" %} {% include "_table_datasets.html" %}

View File

@@ -44,5 +44,8 @@ body {
padding-left: 0.5rem; padding-left: 0.5rem;
} }
.nav-benchmark{
color:yellow;
}

View File

@@ -14,4 +14,14 @@ $(document).ready(function () {
$(document).ajaxStop(function(){ $(document).ajaxStop(function(){
$("body").removeClass('ajaxLoading'); $("body").removeClass('ajaxLoading');
}); });
}); });
function remove_plus(a, b) {
var aa = a.split('±')[0]
var bb = b.split('±')[0]
return aa - bb
}
function remove_dot(a, b) {
var aa = a.replace(',', '').replace('.', '')
var bb = b.replace(',', '').replace('.', '')
return aa - bb
}

View File

@@ -14,7 +14,10 @@
<div class="collapse navbar-collapse" id="navbarToggler"> <div class="collapse navbar-collapse" id="navbarToggler">
<ul class="navbar-nav me-auto mb-2 mb-lg-0"> <ul class="navbar-nav me-auto mb-2 mb-lg-0">
{% if current_user.is_authenticated %} {% if current_user.is_authenticated %}
<li>{{ render_nav_item('main.index', "on " + current_user.benchmark.name) }}</li> <li class="nav-benchmark">
<a href="{{ url_for("main.index") }}"
class="nav-item nav-link nav-benchmark">on {{ current_user.benchmark.name }}</a>
</li>
{% endif %} {% endif %}
<li>{{ render_nav_item('results.select', 'Results') }}</li> <li>{{ render_nav_item('results.select', 'Results') }}</li>
<li>{{ render_nav_item('results.datasets', 'Datasets') }}</li> <li>{{ render_nav_item('results.datasets', 'Datasets') }}</li>

View File

@@ -1,7 +1,5 @@
<nav class="navbar fixed-bottom navbar-dark bg-dark navbar-custom"> <nav class="navbar fixed-bottom navbar-dark bg-dark navbar-custom">
<ul class="navbar-nav mr-auto pie"> <ul class="navbar-nav mr-auto pie">
<p class="pie"> <small>Versión <b>1.00</b></small>
<small>Versión <b>1.00</b></small>
</p>
</ul> </ul>
</nav> </nav>