[mlpack-svn] r15648 - in mlpack/conf/jenkins-conf/benchmark: benchmark reports/img util
fastlab-svn at coffeetalk-1.cc.gatech.edu
fastlab-svn at coffeetalk-1.cc.gatech.edu
Fri Aug 23 06:46:24 EDT 2013
Author: marcus
Date: Fri Aug 23 06:46:23 2013
New Revision: 15648
Log:
Improve page structure and clean the page template.
Removed:
mlpack/conf/jenkins-conf/benchmark/reports/img/mlpack_top_1.png
Modified:
mlpack/conf/jenkins-conf/benchmark/benchmark/make_reports.py
mlpack/conf/jenkins-conf/benchmark/util/database.py
mlpack/conf/jenkins-conf/benchmark/util/graph.py
mlpack/conf/jenkins-conf/benchmark/util/template.py
Modified: mlpack/conf/jenkins-conf/benchmark/benchmark/make_reports.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/benchmark/make_reports.py (original)
+++ mlpack/conf/jenkins-conf/benchmark/benchmark/make_reports.py Fri Aug 23 06:46:23 2013
@@ -25,6 +25,7 @@
import argparse
import glob
import re
+import collections
'''
Create the top line chart.
@@ -36,7 +37,7 @@
build, results = db.GetResultsSum("mlpack")
GenerateSingleLineChart(results, "reports/img/mlpack_top_" + str(build) +
- ".png", backgroundColor="#F3F3F3")
+ ".png", backgroundColor="#F3F3F3", windowWidth=9, windowHeight=1.6)
return "img/mlpack_top_" + str(build) + ".png"
'''
@@ -76,27 +77,28 @@
'''
Create the table with the datasets informations.
- at results List of a List which contains the datasets informations.
+ at param resultList - List of a List which contains the datasets informations.
@return HTML code which contains the dataset informations.
'''
-def CreateDatasetTable(results):
+def CreateDatasetTable(resultList):
datasets = []
datasetTable = ""
+ for results in resultList:
+ results = results[0]
+ for result in results:
+ for data in result:
+ datasetName = data[8]
+
+ if datasetName not in datasets:
+ datasets.append(datasetName)
- for result in results:
- for data in result:
- datasetName = data[8]
-
- if datasetName not in datasets:
- datasets.append(datasetName)
-
- datasetTable += "<tr><td>" + datasetName + "</td>"
- datasetTable += "<td>" + "{0:.5f}".format(data[9]) + " MB</td>"
- datasetTable += "<td>" + str(data[10]) + "</td>"
- datasetTable += "<td>" + str(data[11]) + "</td>"
- datasetTable += "<td>" + str(data[10] * data[11]) + "</td>"
- datasetTable += "<td>" + str(data[12]) + "</td>"
- datasetTable += "</tr>"
+ datasetTable += "<tr><td>" + datasetName + "</td>"
+ datasetTable += "<td>" + "{0:.5f}".format(data[9]) + " MB</td>"
+ datasetTable += "<td>" + str(data[10]) + "</td>"
+ datasetTable += "<td>" + str(data[11]) + "</td>"
+ datasetTable += "<td>" + str(data[10] * data[11]) + "</td>"
+ datasetTable += "<td>" + str(data[12]) + "</td>"
+ datasetTable += "</tr>"
return datasetTable
@@ -115,7 +117,7 @@
memoryValues["nameID"] = result[7] + str(hash(datetime.datetime.now()))
content = Profiler.MassifMemoryUsageReport(str(result[5])).lstrip(" ")
- memoryValues["content"] = content
+ memoryValues["content"] = "content"
filename = "img/massif_" + os.path.basename(result[5]).split('.')[0] + ".png"
CreateMassifChart(result[5], "reports/" + filename)
@@ -157,81 +159,153 @@
buildIds = []
for libraryid in libraryIds:
buildIds.append((db.GetLatestBuildFromLibary(libraryid[0]), libraryid[1]))
-
+
+ methodGroup = {}
# Iterate throw all methods and create for each method a new container.
for method in db.GetAllMethods():
+
methodResults = []
methodLibararies = []
+ resultBuildId = []
for buildId in buildIds:
results = db.GetMethodResultsForLibary(buildId[0], method[0])
- if results:
+ if results:
methodLibararies.append(buildId[1])
+ resultBuildId.append(buildId[0])
methodResults.append(results)
if methodResults:
- # Generate a "unique" hash for the chart names.
- chartHash = str(hash(str(method[1:]) + str(buildIds)))
+ t = (methodResults, methodLibararies, resultBuildId)
+ if method[1] in methodGroup:
+ methodGroup[method[1]].append(t)
+ else:
+ methodGroup[method[1]] = [t]
- # Create the memory content.
- memoryContent = ""
- mlpackMemoryId = db.GetLibrary("mlpack_memory")
- if mlpackMemoryId:
+ methodGroup = collections.OrderedDict(sorted(methodGroup.items()))
+ collapseGroup = 0
+ for methodName, results in methodGroup.items():
+ # Create the container.
+ reportValues = {}
+ reportValues["methodName"] = methodName
+
+
+ resultPanel = ""
+ methodInfo = ""
+ memoryContent = ""
+
+ mlpackMemoryId = db.GetLibrary("mlpack_memory")
+ mlpackMemoryBuilId = ""
+ if mlpackMemoryId:
mlpackMemoryBuilId = db.GetLatestBuildFromLibary(mlpackMemoryId[0][0])
- if mlpackMemoryBuilId:
- memoryResults = db.GetMemoryResults(mlpackMemoryBuilId, mlpackMemoryId[0][0], method[0])
- memoryContent = CreateMemoryContent(memoryResults)
+
+ # Variables to count the status informations.
+ failureCount= 0
+ datasetCount = 0
+ timeoutCount = 0
+ bestLibCount = 0
+ totalTimeCount = 0
+ libCount = 0
+
+ for result in results:
+ resultValues = {}
+ groupPanel = {}
+
+ methodResults = result[0]
+ methodLibararies = result[1]
+ resultBuildId = result[2]
+ methodId = methodResults[0][0][6]
+
+ # Generate a "unique" hash for the chart name.
+ chartHash = str(hash(str(result)))
# Generate a "unique" name for the line chart.
lineChartName = "img/line_" + chartHash + ".png"
- # Create the line chart.
- build, methodResultsSum = db.GetResultsMethodSum("mlpack", method[0])
+ build, methodResultsSum = db.GetResultsMethodSum("mlpack", methodId)
GenerateSingleLineChart(methodResultsSum, "reports/" + lineChartName)
# Generate a "unique" name for the bar chart.
barChartName = "img/bar_" + chartHash + ".png"
-
+
# Create the bar chart.
ChartInfo = GenerateBarChart(methodResults, methodLibararies,
"reports/" + barChartName)
- numDatasets, totalTime, failure, timeouts, bestLibCount, timingData = ChartInfo
+ numDatasets, totalTime, failure, timeouts, bestLibnum, timingData = ChartInfo
+
+ # Increase status informations.
+ failureCount += failure
+ datasetCount += numDatasets
+ timeoutCount += timeouts
+ bestLibCount += bestLibnum
+ totalTimeCount += totalTime
- # Create the timing table.
header, timingTable = CreateTimingTable(timingData, methodLibararies)
- datasetTable = CreateDatasetTable(methodResults)
- # Create the method info content.
- methodInfo = CreateMethodInfo(db.GetMethodInfo(method[0]), str(method[1:][0]))
+ libCount = libCount if libCount >= len(methodLibararies) else len(methodLibararies)
- # Create the container.
- reportValues = {}
- reportValues["methodName"] = str(method[1:][0])
- reportValues["parameters"] = str(method[1:][1]) if method[1:][1] else "None"
-
- # Calculate the percent for the progress bar.
- if numDatasets != 0:
- negative = (((numDatasets - bestLibCount) / float(numDatasets)) * 100.0)
- reportValues["progressPositive"] = "{0:.2f}".format(100 - negative) + "%"
- reportValues["progressNegative"] = "{0:.2f}".format(negative) + "%"
+ parameters = db.GetMethodParameters(methodId)
+ if parameters:
+ parameters = parameters[0][0]
else:
- reportValues["progressPositive"] = "0%"
- reportValues["progressNegative"] = "100%"
+ parameters = ""
+
+ resultValues["parameters"] = lineChartName
+ resultValues["lineChart"] = lineChartName
+ resultValues["barChart"] = barChartName
+ resultValues["timingHeader"] = header
+ resultValues["timingTable"] = timingTable
+
+ groupPanel["nameID"] = chartHash
+ groupPanel["name"] = "Parameters: " + (parameters if parameters else "None")
+ groupPanel["content"] = resultsPanel % resultValues
+
+ resultPanel += resultsTemplate % groupPanel
+
+ # Create the memory content.
+ if mlpackMemoryBuilId:
+ memoryResults = db.GetMemoryResults(mlpackMemoryBuilId, mlpackMemoryId[0][0], methodId)
+
+ groupPanel["content"] = CreateMemoryContent(memoryResults)
+ if groupPanel["content"]:
+ groupPanel["nameID"] = chartHash + "_m"
+ groupPanel["name"] = "Parameters: " + (parameters if parameters else "None")
+
+ memoryContent += resultsTemplate % groupPanel
+
+ # Create the method info content.
+ if not methodInfo:
+ methodInfo = CreateMethodInfo(db.GetMethodInfo(methodId), methodName)
+
+ datasetTable = CreateDatasetTable(results)
+
+ # Calculate the percent for the progress bar.
+ if numDatasets != 0:
+ negative = (((datasetCount - bestLibCount) / float(datasetCount)) * 100.0)
+ reportValues["progressPositive"] = "{0:.2f}".format(100 - negative) + "%"
+ reportValues["progressNegative"] = "{0:.2f}".format(negative) + "%"
+ else:
+ reportValues["progressPositive"] = "0%"
+ reportValues["progressNegative"] = "100%"
+
+ reportValues["numLibararies"] = libCount
+ reportValues["numDatasets"] = datasetCount
+ reportValues["totalTime"] = "{0:.2f}".format(totalTimeCount)
+ reportValues["failure"] = failureCount
+ reportValues["timeouts"] = timeoutCount
+ reportValues["datasetTable"] = datasetTable
+ reportValues["memoryContent"] = memoryContent
+ reportValues["methodInfo"] = methodInfo
+ reportValues["resultsPanel"] = resultPanel
+ reportValues["methods"] = len(results)
+ reportValues["groupOne"] = collapseGroup
+ reportValues["groupTwo"] = collapseGroup + 1
+ reportValues["groupThree"] = collapseGroup + 2
- reportValues["barChart"] = barChartName
- reportValues["lineChart"] = lineChartName
- reportValues["numLibararies"] = str(len(methodLibararies))
- reportValues["numDatasets"] = numDatasets
- reportValues["totalTime"] = totalTime
- reportValues["failure"] = failure
- reportValues["timeouts"] = timeouts
- reportValues["timingHeader"] = header
- reportValues["timingTable"] = timingTable
- reportValues["datasetTable"] = datasetTable
- reportValues["memoryContent"] = memoryContent
- reportValues["methodInfo"] = methodInfo
+ methodsPage += methodTemplate % reportValues
- methodsPage += methodTemplate % reportValues
+ # Increase collapse group id.
+ collapseGroup += 3
return methodsPage
@@ -270,14 +344,14 @@
content = content[:pos+len(pattern)]
if i == 1:
- content += '<li><a href="index.html">«</a></li>\n'
+ content += '<li class="previous"><a href="index.html">← Newer</a></li>\n'
else:
- content += '<li><a href="index_' + str(i - 1) + '.html">«</a></li>\n'
+ content += '<li class="previous"><a href="index_' + str(i - 1) + '.html">← Newer</a></li>\n'
if i == maxId:
- content += '<li><a href="#">»</a></li>'
+ content += '<li class="next disabled"><a href="#">Older →</a></li>'
else:
- content += '<li><a href="index_' + str(i + 1) + '.html">»</a></li>\n'
+ content += '<li class="next"><a href="index_' + str(i + 1) + '.html">Older →</a></li>\n'
content += paginationTemplate
fid.seek(0)
@@ -292,11 +366,11 @@
def NewPagination():
maxId, files = GetMaxIndex()
- pagination = '<li><a href="#">«</a></li>\n'
+ pagination = '<li class="previous disabled"><a href="#">← Newer</a></li>\n'
if maxId > 0:
- pagination += '<li><a href="index_1.html">»</a></li>\n'
+ pagination += '<li class="next"><a href="index_1.html">Older →</a></li>\n'
else:
- pagination += '<li><a href="#">»</a></li>'
+ pagination += '<li class="next disabled"><a href="#">Older →</a></li>'
return pagination
Modified: mlpack/conf/jenkins-conf/benchmark/util/database.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/util/database.py (original)
+++ mlpack/conf/jenkins-conf/benchmark/util/database.py Fri Aug 23 06:46:23 2013
@@ -5,7 +5,7 @@
Class to handle the database.
'''
-import sqlite3 as lite
+import sqlite3
import datetime
@@ -20,7 +20,7 @@
@param databasePath - Path to the database.
'''
def __init__(self, databasePath="benchmark.db"):
- con = lite.connect(databasePath)
+ con = sqlite3.connect(databasePath)
con.execute('pragma foreign_keys = on')
self.con = con
@@ -308,7 +308,7 @@
'''
def GetAllMethods(self):
with self.con:
- self.cur.execute("SELECT * FROM methods")
+ self.cur.execute("SELECT * FROM methods ORDER BY name ASC")
return self.cur.fetchall()
'''
@@ -394,3 +394,15 @@
with self.con:
self.cur.execute("INSERT INTO method_info VALUES (NULL,?,?)",
(methodId, info))
+
+ '''
+ Get the parameters of a given method.
+
+ @param methodId - The id of the method.
+ @return The parameters of the method.
+ '''
+ def GetMethodParameters(self, methodId):
+ with self.con:
+ self.cur.execute("SELECT parameters FROM methods WHERE id=" +
+ str(methodId))
+ return self.cur.fetchall()
Modified: mlpack/conf/jenkins-conf/benchmark/util/graph.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/util/graph.py (original)
+++ mlpack/conf/jenkins-conf/benchmark/util/graph.py Fri Aug 23 06:46:23 2013
@@ -48,15 +48,15 @@
barWidth = 0.15
opacity = 0.9
fill = True
- windowWidth = 10.4
- windowHeight = 1.5
+ windowWidth = 8.1
+ windowHeight = 1.3
gridLineWidth = 0.2
# Create figure and set the color.
matplotlib.rc('axes', facecolor=backgroundColor)
matplotlib.rcParams.update({'font.size': 8})
fig = plt.figure(figsize=(windowWidth, windowHeight),
- facecolor=backgroundColor, dpi=80)
+ facecolor=backgroundColor, dpi=100)
plt.rc('lines', linewidth=lineWidth)
ax = plt.subplot(1,1,1)
@@ -178,9 +178,11 @@
# Set axis labels.
plt.ylabel("time [s]", color="#6e6e6e")
+
# Save the bar chart.
+ fig.tight_layout()
fig.savefig(fileName, bbox_extra_artists=(lgd,), bbox_inches='tight',
- facecolor=fig.get_facecolor(), edgecolor='none', format='png')
+ facecolor=fig.get_facecolor(), edgecolor='none', format='png', dpi=100)
plt.close()
# Count the time in which bestlib is the best.
@@ -199,7 +201,8 @@
@param fileName - The filename of the line chart.
@param backgroundColor - The color of the image background.
'''
-def GenerateSingleLineChart(data, fileName, backgroundColor="#FFFFFF"):
+def GenerateSingleLineChart(data, fileName, backgroundColor="#FFFFFF",
+ windowWidth=8.1, windowHeight=1.3):
def NormalizeData(data):
i = 0
while len(data) != i:
@@ -215,16 +218,14 @@
if not CheckFileAvailable(fileName):
# Line chart settings.
lineWidth = 1.5
- opacity = 0.9
- windowWidth = 10.3
- windowHeight = 1.5
+ opacity = 0.9
gridLineWidth = 0.2
# Create figure and set the color.
matplotlib.rc('axes', facecolor=backgroundColor)
matplotlib.rcParams.update({'font.size': 8})
fig = plt.figure(figsize=(windowWidth, windowHeight),
- facecolor=backgroundColor, dpi=80)
+ facecolor=backgroundColor, dpi=100)
plt.rc('lines', linewidth=lineWidth)
ax = plt.subplot(1,1,1)
@@ -264,8 +265,9 @@
plt.xlabel("benchmark build", color="#6e6e6e")
# Save the line chart.
+ fig.tight_layout()
fig.savefig(fileName, bbox_inches='tight', facecolor=fig.get_facecolor(),
- edgecolor='none')
+ edgecolor='none', dpi=100)
plt.close()
'''
@@ -279,15 +281,15 @@
if not CheckFileAvailable(fileName):
lineWidth = 1.5
opacity = 0.9
- windowWidth = 10.2
- windowHeight = 1.5
+ windowWidth = 8.1
+ windowHeight = 1.3
gridLineWidth = 0.2
# Create figure and set the color.
matplotlib.rc('axes', facecolor=backgroundColor)
matplotlib.rcParams.update({'font.size': 8})
fig = plt.figure(figsize=(windowWidth, windowHeight),
- facecolor=backgroundColor, dpi=80)
+ facecolor=backgroundColor, dpi=100)
plt.rc('lines', linewidth=lineWidth)
ax = plt.subplot(1,1,1)
@@ -339,6 +341,7 @@
label.set_color("#6e6e6e")
# Save the memory chart.
+ fig.tight_layout()
fig.savefig(fileName, bbox_extra_artists=(lgd,), bbox_inches='tight',
- facecolor=fig.get_facecolor(), edgecolor='none', format='png')
+ facecolor=fig.get_facecolor(), edgecolor='none', format='png', dpi=100)
plt.close()
Modified: mlpack/conf/jenkins-conf/benchmark/util/template.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/util/template.py (original)
+++ mlpack/conf/jenkins-conf/benchmark/util/template.py Fri Aug 23 06:46:23 2013
@@ -8,165 +8,120 @@
pageTemplate = """
<!doctype html>
<html>
- <head>
- <meta charset="utf-8">
- <meta name="description" content="">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title></title>
- <link rel="stylesheet" href="framework/bs3/css/bootstrap.min.css">
- <link rel="stylesheet" href="framework/font/style.css">
- <link rel="stylesheet" href="css/style.css">
- </head>
- <body>
- <div class="container">
- <div class="row">
- <div class="col-lg-12">
- <div class="text-center">
- <h4>Benchmarks</h4>
- </div>
-
- <!-- Container Start -->
- <div class="container--graph collapse-group well">
- <div class="container__topContent">
- <div>
- <img class="center--image" src="%(topLineChart)s" alt="">
- </div>
- </div>
- </div>
- %(methods)s
- </div>
- </div>
- </div>
- <div class="pagination--holder">
- <ul class="pagination">
- %(pagination)s
- </ul>
- </div>
- </div>
- <script src="framework/jquery/jquery.min.js"></script>
- <script src="framework/bs3/js/bootstrap.min.js"></script>
- <script src="js/slider.js"></script>
- <!--[if lte IE 7]>
- <script src="framework/font/lte-ie7.js"></script>
- <![endif]-->
- </body>
+<head>
+<meta charset="utf-8">
+<meta name="description" content="">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<title>Benchmark Results</title>
+<link rel="stylesheet" href="framework/bs3/css/bootstrap.min.css">
+<link rel="stylesheet" href="framework/font/style.css">
+<link rel="stylesheet" href="css/style.css">
+</head>
+<body>
+<div class="container">
+<div class="row">
+<div class="col-lg-12">
+<div class="text-center"><h4>Benchmarks</h4></div>
+<div class="container--graph collapse-group well">
+<div class="container__topContent">
+<div><img class="center--image" src="%(topLineChart)s" alt="" style="max-width: 100%%;"></div>
+</div></div>%(methods)s</div></div></div>
+<div class="pagination--holder">
+<ul class="pagination">%(pagination)s</ul></div>
+<script src="framework/jquery/jquery.min.js"></script>
+<script src="framework/bs3/js/bootstrap.min.js"></script>
+<script src="js/slider.js"></script>
+<!--[if lte IE 7]>
+<script src="framework/font/lte-ie7.js"></script>
+<![endif]-->
+</body>
</html>
"""
paginationTemplate = """
-</ul>
- </div>
- </div>
- <script src="framework/jquery/jquery.min.js"></script>
- <script src="framework/bs3/js/bootstrap.min.js"></script>
- <script src="js/slider.js"></script>
- <!--[if lte IE 7]>
- <script src="framework/font/lte-ie7.js"></script>
- <![endif]-->
- </body>
+</div>
+</div>
+<script src="framework/jquery/jquery.min.js"></script>
+<script src="framework/bs3/js/bootstrap.min.js"></script>
+<script src="js/slider.js"></script>
+<!--[if lte IE 7]>
+<script src="framework/font/lte-ie7.js"></script>
+<![endif]-->
+</body>
</html>
"""
methodTemplate = """
- <!-- Container Start -->
- <div class="container--graph collapse-group well">
- <div class="container__topContent">
- <p class="graph--name">%(methodName)s</p>
- <div class="holder--progressBar">
- <span class="progressBar__percentage">%(progressPositive)s</span>
- <span class="progressBar__firstPart" style="width:%(progressPositive)s;"></span>
- <span class="progressBar__secondPart" style="width:%(progressNegative)s;"></span>
- </div>
- <div class="btn-group">
- <a href="#collapseOne" class="btn graphs btn-grey icon-bars js-button"></a>
- <a href="#collapseTwo" class="btn info btn-grey icon-info js-button"></a>
- <a href="#collapseThree" class="btn memory btn-grey icon-paragraph-right-2 js-button"></a>
- </div>
- </div>
- <div id="collapseOne" class="container__bottomContent graph collapse">
- <div>
- <img class="panel" src="%(lineChart)s" alt="">
- </div>
- <div>
- <img class="panel" src="%(barChart)s" alt="">
- </div>
- <div>
- <div class="panel">
- <table class="table table-striped">
- <thead>
- <tr>
- <th></th>
- %(timingHeader)s
- </tr>
- </thead>
- <tbody>
- %(timingTable)s
- </tbody>
- </table>
- </div>
- </div>
- </div>
- <div id="collapseTwo" class="container__bottomContent infos collapse">
- <div>
- <div class="panel">
- <table class="table table-striped">
- <thead>
- <tr>
- <th></th>
- <th>Size</th>
- <th>Number of Instances</th>
- <th>Number of Attributes</th>
- <th>Instances</th>
- <th>Attribute Types</th>
- </tr>
- </thead>
- <tbody>
- %(datasetTable)s
- </tbody>
- </table>
- %(methodInfo)s
- </div>
- </div>
- </div>
- <div id="collapseTwo" class="container__bottomContent memories collapse">
- <div>
- </div>%(memoryContent)s</div>
- <div class="container__bottomContent"> </div>
- <div class="row">
- <div class="col-lg-2">Libraries: %(numLibararies)s</div>
- <div class="col-lg-2">Datasets: %(numDatasets)s</div>
- <div class="col-lg-3">Total time: %(totalTime)s seconds</div>
- <div class="col-lg-2">Script failure: %(failure)s</div>
- <div class="col-lg-2">Timeouts failure: %(timeouts)s</div>
- </div>
- <div class="row">
- <div class="col-lg-10">Parameters: %(parameters)s</div>
- </div>
- </div>
-
+<div class="container--graph collapse-group well">
+<div class="container__topContent">
+<p class="graph--name">%(methodName)s</p>
+<div class="holder--progressBar">
+<span class="progressBar__percentage">%(progressPositive)s</span>
+<span class="progressBar__firstPart" style="width:%(progressPositive)s;"></span>
+<span class="progressBar__secondPart" style="width:%(progressNegative)s;"></span>
+</div><div class="btn-group">
+<a href="#collapse%(groupOne)s" class="btn graphs btn-grey icon-bars js-button"></a>
+<a href="#collapse%(groupTwo)s" class="btn info btn-grey icon-info js-button"></a>
+<a href="#collapse%(groupThree)s" class="btn memory btn-grey icon-paragraph-right-2 js-button"></a>
+</div></div>
+<div id="collapse%(groupOne)s" class="container__bottomContent graph collapse">
+<div><div class="panel panel-default">
+<div class="panel-heading">Benchmark Results</div>
+<div class="panel-body">%(resultsPanel)s</div></div></div></div>
+<div id="collapse%(groupTwo)s" class="container__bottomContent infos collapse">
+<div>
+<div class="panel panel-default">
+<div class="panel-heading">Dataset Infos</div>
+<div class="panel-body">
+<table class="table table-striped">
+ <thead>
+ <tr><th></th><th>Size</th><th>Number of Instances</th><th>Number of Attributes</th><th>Instances</th><th>Attribute Types</th></tr>
+ </thead>
+ <tbody>%(datasetTable)s</tbody>
+</table>%(methodInfo)s</div></div></div></div>
+<div id="collapse%(groupThree)s" class="container__bottomContent memories collapse"><div>
+<div><div class="panel panel-default">
+<div class="panel-heading">Memory Results</div>
+<div class="panel-body">%(memoryContent)s</div></div></div></div></div>
+<div class="container__bottomContent"> </div>
+<div class="row">
+<div class="col-lg-2">Libraries: %(numLibararies)s</div>
+<div class="col-lg-2">Datasets: %(numDatasets)s</div>
+<div class="col-lg-3">Total time: %(totalTime)s seconds</div>
+<div class="col-lg-2">Script failure: %(failure)s</div>
+<div class="col-lg-2">Timeouts failure: %(timeouts)s</div>
+<div class="col-lg-2">Parameters: %(methods)s</div></div></div>
"""
memoryPanelTemplate = """
<div class="panel">
- <div><img class="center--image" src="%(memoryChart)s" alt=""></div>
- <div class="accordion-group">
- <div class="accordion-heading"><a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#%(nameID)s">%(name)s</a></div>
- <div id="%(nameID)s" class="accordion-body collapse">
- <div class="accordion-inner">
- <pre>%(content)s</pre>
- </div>
- </div>
- </div>
-</div>
+<div><img class="center--image" src="%(memoryChart)s" alt="" style="max-width: 100%%;"></div>
+<div class="accordion-group">
+<div class="accordion-heading"><a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#%(nameID)s">%(name)s</a></div>
+<div id="%(nameID)s" class="accordion-body collapse">
+<div class="accordion-inner"><pre>%(content)s</pre></div></div></div></div>
"""
panelTemplate = """
<div class="accordion-group">
<div class="accordion-heading"><a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#%(nameID)s">%(name)s</a></div>
- <div id="%(nameID)s" class="accordion-body collapse">
- <div class="accordion-inner">
- <pre>%(content)s</pre>
- </div>
- </div>
-</div>
+<div id="%(nameID)s" class="accordion-body collapse">
+<div class="accordion-inner"><pre>%(content)s</pre></div></div></div>
+"""
+
+resultsTemplate = """
+<div class="accordion-group">
+<div class="accordion-heading"><a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#%(nameID)s">%(name)s</a></div>
+<div id="%(nameID)s" class="accordion-body collapse"><div class="accordion-inner">%(content)s</div></div></div>
+"""
+
+resultsPanel = """
+<div class="panel-body">
+<div><img class="panel" src="%(lineChart)s" alt="" style="max-width: 100%%;"></div>
+<div><img class="panel" src="%(barChart)s" alt="" style="max-width: 100%%;"></div>
+<div><div class="panel">
+<table class="table table-striped">
+<thead><tr><th></th>%(timingHeader)s</tr></thead>
+<tbody>%(timingTable)s</tbody>
+</table></div></div></div>
"""
\ No newline at end of file
More information about the mlpack-svn
mailing list