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)
back = request.args.get("url") 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:
data = json.load(f)
try:
@@ -121,6 +122,7 @@ def report(file_name):
summary=summary,
back=back,
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"
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>
<tr class="bg-primary text-white">
<th class="text-center">Dataset</th>

View File

@@ -52,7 +52,7 @@
</table>
<div>{{ excel_button([ file ]) }}</div>
<table class="table table-striped table-hover table-bordered bg-light"
id="table-report"
id="report-table"
data-toggle="table"
data-sticky-header="true"
data-sticky-header-offset-y="50"
@@ -75,7 +75,15 @@
<th class="text-center"
data-field="nodes"
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"
data-field="score"
data-sortable="true"
@@ -88,18 +96,6 @@
<th class="text-center" data-field="hyperparameters" data-sortable="true">Hyperparameters</th>
</tr>
</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>
{% for item in data.results %}
<tr>
@@ -110,6 +106,8 @@
<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-center">{{ item.symbol|safe }}</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">
<h3>Results for {{ dataset_name }}</h3>
</div>
<table id="files-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="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>
{% include "_table_dataset.html" %}
{% endblock %}
{% block jscript %}
{{ super() }}
<script src="{{ url_for('static', filename="js/report.js") }}"></script>
{% endblock %}

View File

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

View File

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

View File

@@ -15,3 +15,13 @@ $(document).ready(function () {
$("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">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
{% 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 %}
<li>{{ render_nav_item('results.select', 'Results') }}</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">
<ul class="navbar-nav mr-auto pie">
<p class="pie">
<small>Versión <b>1.00</b></small>
</p>
</ul>
</nav>