In [1]:
benchmark_id = '3a.1'
line_plots = [
dict(name='free_energy', layout=dict(log_y=True, x_label=r'<i>t</i>', y_label=r'ℱ', range_y=[1.8e6, 2.4e6], title="Free Energy v Time")),
dict(name='solid_fraction', layout=dict(log_y=True, x_label=r'<i>t</i>')),
dict(name='tip_position', layout=dict(log_y=True, x_label=r'<i>t</i>')),
dict(name='phase_field_1500', layout=dict(aspect_ratio=1.0))
]
contour_plots = []
efficiency = True
In [2]:
# Parameters
benchmark_id = "2b.1"
line_plots = [
{
"name": "free_energy",
"layout": {
"log_y": True,
"log_x": True,
"x_label": "Simulated Time, <i>t</i><sub>Sim</sub> [a.u.]",
"y_label": "Simulated Free Energy, ℱ [a.u.]",
"title": "",
},
}
]
In [3]:
from IPython.display import display_markdown
display_markdown(f'''
# Benchmark { benchmark_id } Results
All results for the [{ benchmark_id } benchmark specification](../../benchmarks/benchmark{ benchmark_id }.ipynb/).
''', raw=True)
In [4]:
# To generate the comparison notebooks use:
#
# papermill template.ipynb benchmark{version}.ipynb -f bm{version}.yaml
#
In [5]:
from IPython.display import HTML
HTML('''<script>
code_show=true;
function code_toggle() {
if (code_show){
$('div.input').hide();
$('div.prompt').hide();
} else {
$('div.input').show();
$('div.prompt').show();
}
code_show = !code_show
}
$( document ).ready(code_toggle);
</script>
<form action="javascript:code_toggle()"><input type="submit" value="Code Toggle"></form>''')
Out[5]:
In [6]:
#from IPython.display import HTML, display
#from time import sleep
#display(HTML("""
#<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
#"""))
#sleep(0.1)
from IPython.display import HTML, display, display_markdown
from time import sleep
#import logging
#logging.basicConfig(format='%(asctime)s - %(message)s', level=logging.DEBUG)
display(HTML("""
<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script>
"""))
sleep(0.1)
from pfhub.main import line_plot, levelset_plot, get_table_data_style, plot_order_of_accuracy, get_result_data, efficiency_plot
#import itables.interactive
from itables import init_notebook_mode
init_notebook_mode(all_interactive=False)
In [7]:
colors = dict()
for x in line_plots:
fig = line_plot(
data_name=x['name'],
benchmark_id=benchmark_id,
layout=x['layout'],
columns=x.get('columns', ('x', 'y'))
)
if 'extra_lines' in x:
for kwargs in x['extra_lines']:
fig.add_scatter(**kwargs)
for datum in fig['data']:
name = datum['name']
color = datum['line']['color']
datum['line']['color'] = colors.get(name, color)
colors[name] = datum['line']['color']
fig.show()
In [8]:
for x in contour_plots:
data = get_result_data([x['name']], [benchmark_id], x['columns'])
levelset_plot(
data,
layout=x['layout'],
mask_func=lambda df: (x['mask_z'][0] < df.z) & (df.z < x['mask_z'][1]),
columns=x['columns']
).show()
In [9]:
if efficiency:
efficiency_plot(benchmark_id).show()
display_markdown("<span class='plotly-footnote' >* Wall time divided by the total simulated time.</span>", raw=True)
In [10]:
display_markdown(f'''
# Table of Results
Table of { benchmark_id } benchmark result uploads.
''', raw=True)
In [11]:
## Currently switching off interactive tables as these are not converted to HTML properly.
## This might improve when jupyter-nbcovert is updated to a later version.
init_notebook_mode(all_interactive=False)
get_table_data_style(benchmark_id, pfhub_path='../..')
Out[11]: