Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
N
NPTAV2Maude
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
real-time maude
NPTAV2Maude
Commits
35c12ed7
Commit
35c12ed7
authored
1 year ago
by
Jaime Arias
Browse files
Options
Downloads
Patches
Plain Diff
update noteboo
parent
1d8b9fbd
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
benchmarks/analysis.ipynb
+1054
-196
1054 additions, 196 deletions
benchmarks/analysis.ipynb
with
1054 additions
and
196 deletions
benchmarks/analysis.ipynb
+
1054
−
196
View file @
35c12ed7
...
...
@@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
"execution_count": 2
5
,
"execution_count":
3
2,
"metadata": {},
"outputs": [],
"source": [
...
...
@@ -35,7 +35,15 @@
" {\"name\": \"no_folding_FME\", \"file\": \"{model}.no-folding.maude.{location}.FEM.res\"},\n",
" {\"name\": \"folding\", \"file\": \"{model}.folding.maude.{location}.res\"},\n",
" {\"name\": \"folding_FME\", \"file\": \"{model}.folding.maude.{location}.FEM.res\"},\n",
"]\n"
"]\n",
"\n",
"# maude labels for the tables\n",
"maude_labels = []\n",
"for f in maude_files:\n",
" prefix = f'maude_{f[\"name\"]}'\n",
" maude_labels.append(f\"{prefix}_rewrites\")\n",
" maude_labels.append(f\"{prefix}_cpu(ms)\")\n",
" maude_labels.append(f\"{prefix}_real(ms)\")\n"
]
},
{
...
...
@@ -47,7 +55,7 @@
},
{
"cell_type": "code",
"execution_count":
28
,
"execution_count":
33
,
"metadata": {},
"outputs": [],
"source": [
...
...
@@ -118,12 +126,7 @@
" \"transitions\",\n",
" \"location_reached\",\n",
" \"imitator_time(ms)\",\n",
" ]\n",
" for f in maude_files:\n",
" prefix = f'maude_{f[\"name\"]}'\n",
" fieldnames.append(f\"{prefix}_rewrites\")\n",
" fieldnames.append(f\"{prefix}_cpu(ms)\")\n",
" fieldnames.append(f\"{prefix}_real(ms)\")\n",
" ] + maude_labels\n",
"\n",
" writer = csv.DictWriter(csv_file, fieldnames=fieldnames)\n",
" writer.writeheader()\n",
...
...
@@ -157,11 +160,11 @@
},
{
"cell_type": "code",
"execution_count":
29
,
"execution_count":
34
,
"metadata": {},
"outputs": [],
"source": [
"generate_csv()"
"generate_csv()
\n
"
]
},
{
...
...
@@ -173,112 +176,7 @@
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"def plot(df, model_name):\n",
" model = df.loc[[model_name]]\n",
" max_value_model = (\n",
" model.drop(axis=1, labels=[\"maude_rewrites\", \"maude_collapsing_rewrites\"])\n",
" .max(numeric_only=True, axis=0)\n",
" .max()\n",
" )\n",
" axis_bound = math.ceil(math.log10(max_value_model))\n",
"\n",
" fig = go.Figure()\n",
" # no collapsing\n",
" fig.add_trace(\n",
" go.Scatter(\n",
" x=model[\"maude_real(ms)\"],\n",
" y=model[\"imitator_time(ms)\"],\n",
" text=model[\"location_reached\"],\n",
" mode=\"markers\",\n",
" marker_symbol=\"circle-open\",\n",
" marker_color=\"red\",\n",
" marker_size=12,\n",
" name=\"no-collapsing\",\n",
" )\n",
" )\n",
"\n",
" # collapsing\n",
" fig.add_trace(\n",
" go.Scatter(\n",
" x=model[\"maude_collapsing_real(ms)\"],\n",
" y=model[\"imitator_time(ms)\"],\n",
" text=model[\"location_reached\"],\n",
" mode=\"markers\",\n",
" marker_symbol=\"circle-open\",\n",
" marker_color=\"blue\",\n",
" marker_size=12,\n",
" name=\"collapsing\",\n",
" )\n",
" )\n",
"\n",
" # identity line\n",
" fig.add_trace(\n",
" go.Scatter(\n",
" x=[0, 10**axis_bound],\n",
" y=[0, 10**axis_bound],\n",
" mode=\"lines\",\n",
" line=dict(color=\"black\", width=1),\n",
" showlegend=False,\n",
" )\n",
" )\n",
"\n",
" fig.update_xaxes(\n",
" type=\"log\",\n",
" showgrid=False,\n",
" mirror=True,\n",
" linewidth=1,\n",
" linecolor=\"black\",\n",
" constrain=\"domain\",\n",
" range=[-1, axis_bound],\n",
" title=\"Maude (ms)\",\n",
" )\n",
" fig.update_yaxes(\n",
" type=\"log\",\n",
" showgrid=False,\n",
" mirror=True,\n",
" linewidth=1,\n",
" linecolor=\"black\",\n",
" scaleanchor=\"x\",\n",
" scaleratio=1,\n",
" range=[-1, axis_bound],\n",
" title=\"Imitator (ms)\",\n",
" )\n",
"\n",
" legend_options = dict(\n",
" yanchor=\"top\",\n",
" y=0.99,\n",
" xanchor=\"left\",\n",
" x=0.05,\n",
" bordercolor=\"Black\",\n",
" borderwidth=1,\n",
" )\n",
" margin = margin = dict(l=20, r=20, t=20, b=20)\n",
"\n",
" fig.update_layout(\n",
" width=800,\n",
" height=800,\n",
" paper_bgcolor=\"white\",\n",
" plot_bgcolor=\"white\",\n",
" legend_title_text=\"Method\",\n",
" legend=legend_options,\n",
" autosize=False,\n",
" margin=margin,\n",
" font=dict(size=28),\n",
" )\n",
" fig.update_traces(\n",
" hovertemplate=\"<b>%{text}</b><br><br>Maude: %{x} ms <br>Imitator: %{y} ms<extra></extra>\"\n",
" )\n",
"\n",
" return fig\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"execution_count": 31,
"metadata": {},
"outputs": [],
"source": [
...
...
@@ -290,7 +188,7 @@
},
{
"cell_type": "code",
"execution_count":
6
,
"execution_count":
35
,
"metadata": {},
"outputs": [
{
...
...
@@ -321,12 +219,18 @@
" <th>transitions</th>\n",
" <th>location_reached</th>\n",
" <th>imitator_time(ms)</th>\n",
" <th>maude_rewrites</th>\n",
" <th>maude_cpu(ms)</th>\n",
" <th>maude_real(ms)</th>\n",
" <th>maude_collapsing_rewrites</th>\n",
" <th>maude_collapsing_cpu(ms)</th>\n",
" <th>maude_collapsing_real(ms)</th>\n",
" <th>maude_no_folding_rewrites</th>\n",
" <th>maude_no_folding_cpu(ms)</th>\n",
" <th>maude_no_folding_real(ms)</th>\n",
" <th>maude_no_folding_FME_rewrites</th>\n",
" <th>maude_no_folding_FME_cpu(ms)</th>\n",
" <th>maude_no_folding_FME_real(ms)</th>\n",
" <th>maude_folding_rewrites</th>\n",
" <th>maude_folding_cpu(ms)</th>\n",
" <th>maude_folding_real(ms)</th>\n",
" <th>maude_folding_FME_rewrites</th>\n",
" <th>maude_folding_FME_cpu(ms)</th>\n",
" <th>maude_folding_FME_real(ms)</th>\n",
" </tr>\n",
" <tr>\n",
" <th>model</th>\n",
...
...
@@ -343,24 +247,300 @@
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>tgc</th>\n",
" <td>3</td>\n",
" <td>6</td>\n",
" <td>8</td>\n",
" <td>12</td>\n",
" <td>12</td>\n",
" <td>train0</td>\n",
" <td>6.0</td>\n",
" <td>150</td>\n",
" <td>526.0</td>\n",
" <td>526.0</td>\n",
" <td>150</td>\n",
" <td>528.0</td>\n",
" <td>529.0</td>\n",
" <td>424</td>\n",
" <td>507.0</td>\n",
" <td>507.0</td>\n",
" <td>468</td>\n",
" <td>532.0</td>\n",
" <td>532.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>tgc</th>\n",
" <td>3</td>\n",
" <td>6</td>\n",
" <td>8</td>\n",
" <td>12</td>\n",
" <td>12</td>\n",
" <td>train1</td>\n",
" <td>11.0</td>\n",
" <td>354</td>\n",
" <td>525.0</td>\n",
" <td>524.0</td>\n",
" <td>398</td>\n",
" <td>523.0</td>\n",
" <td>523.0</td>\n",
" <td>999</td>\n",
" <td>574.0</td>\n",
" <td>573.0</td>\n",
" <td>1316</td>\n",
" <td>595.0</td>\n",
" <td>593.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>tgc</th>\n",
" <td>3</td>\n",
" <td>6</td>\n",
" <td>8</td>\n",
" <td>12</td>\n",
" <td>12</td>\n",
" <td>train2</td>\n",
" <td>13.0</td>\n",
" <td>667</td>\n",
" <td>575.0</td>\n",
" <td>575.0</td>\n",
" <td>947</td>\n",
" <td>573.0</td>\n",
" <td>573.0</td>\n",
" <td>2420</td>\n",
" <td>641.0</td>\n",
" <td>640.0</td>\n",
" <td>3297</td>\n",
" <td>709.0</td>\n",
" <td>707.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>tgc</th>\n",
" <td>3</td>\n",
" <td>6</td>\n",
" <td>8</td>\n",
" <td>12</td>\n",
" <td>12</td>\n",
" <td>train3</td>\n",
" <td>16.0</td>\n",
" <td>1222</td>\n",
" <td>582.0</td>\n",
" <td>582.0</td>\n",
" <td>1989</td>\n",
" <td>607.0</td>\n",
" <td>607.0</td>\n",
" <td>5898</td>\n",
" <td>855.0</td>\n",
" <td>855.0</td>\n",
" <td>7753</td>\n",
" <td>878.0</td>\n",
" <td>877.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>tgc</th>\n",
" <td>3</td>\n",
" <td>6</td>\n",
" <td>8</td>\n",
" <td>12</td>\n",
" <td>12</td>\n",
" <td>gate0</td>\n",
" <td>7.0</td>\n",
" <td>150</td>\n",
" <td>498.0</td>\n",
" <td>497.0</td>\n",
" <td>150</td>\n",
" <td>514.0</td>\n",
" <td>513.0</td>\n",
" <td>424</td>\n",
" <td>536.0</td>\n",
" <td>534.0</td>\n",
" <td>468</td>\n",
" <td>524.0</td>\n",
" <td>523.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>tgc</th>\n",
" <td>3</td>\n",
" <td>6</td>\n",
" <td>8</td>\n",
" <td>12</td>\n",
" <td>12</td>\n",
" <td>gate1</td>\n",
" <td>14.0</td>\n",
" <td>767</td>\n",
" <td>551.0</td>\n",
" <td>551.0</td>\n",
" <td>1071</td>\n",
" <td>544.0</td>\n",
" <td>544.0</td>\n",
" <td>2420</td>\n",
" <td>672.0</td>\n",
" <td>672.0</td>\n",
" <td>3297</td>\n",
" <td>689.0</td>\n",
" <td>689.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>tgc</th>\n",
" <td>3</td>\n",
" <td>6</td>\n",
" <td>8</td>\n",
" <td>12</td>\n",
" <td>12</td>\n",
" <td>gate2</td>\n",
" <td>21.0</td>\n",
" <td>1463</td>\n",
" <td>573.0</td>\n",
" <td>572.0</td>\n",
" <td>2300</td>\n",
" <td>585.0</td>\n",
" <td>586.0</td>\n",
" <td>5898</td>\n",
" <td>815.0</td>\n",
" <td>813.0</td>\n",
" <td>7753</td>\n",
" <td>864.0</td>\n",
" <td>862.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>tgc</th>\n",
" <td>3</td>\n",
" <td>6</td>\n",
" <td>8</td>\n",
" <td>12</td>\n",
" <td>12</td>\n",
" <td>gate3</td>\n",
" <td>45.0</td>\n",
" <td>10740</td>\n",
" <td>864.0</td>\n",
" <td>863.0</td>\n",
" <td>18403</td>\n",
" <td>898.0</td>\n",
" <td>897.0</td>\n",
" <td>35973</td>\n",
" <td>2258.0</td>\n",
" <td>2260.0</td>\n",
" <td>45102</td>\n",
" <td>2382.0</td>\n",
" <td>2383.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>tgc</th>\n",
" <td>3</td>\n",
" <td>6</td>\n",
" <td>8</td>\n",
" <td>12</td>\n",
" <td>12</td>\n",
" <td>controller0</td>\n",
" <td>6.0</td>\n",
" <td>150</td>\n",
" <td>508.0</td>\n",
" <td>507.0</td>\n",
" <td>150</td>\n",
" <td>548.0</td>\n",
" <td>547.0</td>\n",
" <td>424</td>\n",
" <td>536.0</td>\n",
" <td>535.0</td>\n",
" <td>468</td>\n",
" <td>549.0</td>\n",
" <td>548.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>tgc</th>\n",
" <td>3</td>\n",
" <td>6</td>\n",
" <td>8</td>\n",
" <td>12</td>\n",
" <td>12</td>\n",
" <td>controller1</td>\n",
" <td>11.0</td>\n",
" <td>354</td>\n",
" <td>569.0</td>\n",
" <td>568.0</td>\n",
" <td>398</td>\n",
" <td>568.0</td>\n",
" <td>568.0</td>\n",
" <td>999</td>\n",
" <td>642.0</td>\n",
" <td>641.0</td>\n",
" <td>1316</td>\n",
" <td>641.0</td>\n",
" <td>640.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>tgc</th>\n",
" <td>3</td>\n",
" <td>6</td>\n",
" <td>8</td>\n",
" <td>12</td>\n",
" <td>12</td>\n",
" <td>controller2</td>\n",
" <td>18.0</td>\n",
" <td>767</td>\n",
" <td>535.0</td>\n",
" <td>535.0</td>\n",
" <td>1071</td>\n",
" <td>531.0</td>\n",
" <td>530.0</td>\n",
" <td>2420</td>\n",
" <td>690.0</td>\n",
" <td>689.0</td>\n",
" <td>3297</td>\n",
" <td>674.0</td>\n",
" <td>673.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>tgc</th>\n",
" <td>3</td>\n",
" <td>6</td>\n",
" <td>8</td>\n",
" <td>12</td>\n",
" <td>12</td>\n",
" <td>controller3</td>\n",
" <td>30.0</td>\n",
" <td>4279</td>\n",
" <td>647.0</td>\n",
" <td>647.0</td>\n",
" <td>7530</td>\n",
" <td>685.0</td>\n",
" <td>686.0</td>\n",
" <td>20078</td>\n",
" <td>1408.0</td>\n",
" <td>1407.0</td>\n",
" <td>23670</td>\n",
" <td>1495.0</td>\n",
" <td>1494.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>coffee</th>\n",
" <td>2</td>\n",
" <td>3</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>6</td>\n",
" <td>addsugar</td>\n",
" <td>0.0</td>\n",
" <td>2</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>85</td>\n",
" <td>4.0</td>\n",
" <td>idle</td>\n",
" <td>5.0</td>\n",
" <td>111</td>\n",
" <td>483.0</td>\n",
" <td>483.0</td>\n",
" <td>111</td>\n",
" <td>510.0</td>\n",
" <td>521.0</td>\n",
" <td>290</td>\n",
" <td>537.0</td>\n",
" <td>537.0</td>\n",
" <td>334</td>\n",
" <td>504.0</td>\n",
" <td>504.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>coffee</th>\n",
...
...
@@ -369,14 +549,20 @@
" <td>4</td>\n",
" <td>4</td>\n",
" <td>6</td>\n",
" <td>cdone</td>\n",
" <td>0.0</td>\n",
" <td>12</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>373</td>\n",
" <td>8.0</td>\n",
" <td>7.0</td>\n",
" <td>addsugar</td>\n",
" <td>10.0</td>\n",
" <td>261</td>\n",
" <td>491.0</td>\n",
" <td>491.0</td>\n",
" <td>273</td>\n",
" <td>489.0</td>\n",
" <td>488.0</td>\n",
" <td>720</td>\n",
" <td>526.0</td>\n",
" <td>526.0</td>\n",
" <td>763</td>\n",
" <td>545.0</td>\n",
" <td>545.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>coffee</th>\n",
...
...
@@ -385,14 +571,20 @@
" <td>4</td>\n",
" <td>4</td>\n",
" <td>6</td>\n",
" <td>idle</td>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>801</td>\n",
" <td>12.0</td>\n",
" <td>15.0</td>\n",
" <td>preparingcoffee</td>\n",
" <td>14.0</td>\n",
" <td>562</td>\n",
" <td>500.0</td>\n",
" <td>499.0</td>\n",
" <td>602</td>\n",
" <td>512.0</td>\n",
" <td>511.0</td>\n",
" <td>1977</td>\n",
" <td>607.0</td>\n",
" <td>606.0</td>\n",
" <td>2019</td>\n",
" <td>602.0</td>\n",
" <td>601.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>coffee</th>\n",
...
...
@@ -401,50 +593,600 @@
" <td>4</td>\n",
" <td>4</td>\n",
" <td>6</td>\n",
" <td>preparingcoffee</td>\n",
" <td>0.0</td>\n",
" <td>6</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>182</td>\n",
" <td>8.0</td>\n",
" <td>cdone</td>\n",
" <td>18.0</td>\n",
" <td>1174</td>\n",
" <td>559.0</td>\n",
" <td>558.0</td>\n",
" <td>1280</td>\n",
" <td>543.0</td>\n",
" <td>543.0</td>\n",
" <td>4357</td>\n",
" <td>670.0</td>\n",
" <td>668.0</td>\n",
" <td>4419</td>\n",
" <td>698.0</td>\n",
" <td>696.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>fischer</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>12</td>\n",
" <td>14</td>\n",
" <td>20</td>\n",
" <td>idle1</td>\n",
" <td>6.0</td>\n",
" <td>112</td>\n",
" <td>517.0</td>\n",
" <td>517.0</td>\n",
" <td>112</td>\n",
" <td>503.0</td>\n",
" <td>502.0</td>\n",
" <td>389</td>\n",
" <td>524.0</td>\n",
" <td>524.0</td>\n",
" <td>423</td>\n",
" <td>565.0</td>\n",
" <td>564.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>fischer</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>12</td>\n",
" <td>14</td>\n",
" <td>20</td>\n",
" <td>active1</td>\n",
" <td>11.0</td>\n",
" <td>297</td>\n",
" <td>538.0</td>\n",
" <td>537.0</td>\n",
" <td>331</td>\n",
" <td>505.0</td>\n",
" <td>505.0</td>\n",
" <td>1218</td>\n",
" <td>595.0</td>\n",
" <td>594.0</td>\n",
" <td>1427</td>\n",
" <td>638.0</td>\n",
" <td>637.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>fischer</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>12</td>\n",
" <td>14</td>\n",
" <td>20</td>\n",
" <td>check1</td>\n",
" <td>15.0</td>\n",
" <td>627</td>\n",
" <td>520.0</td>\n",
" <td>519.0</td>\n",
" <td>826</td>\n",
" <td>520.0</td>\n",
" <td>520.0</td>\n",
" <td>3274</td>\n",
" <td>707.0</td>\n",
" <td>706.0</td>\n",
" <td>3869</td>\n",
" <td>709.0</td>\n",
" <td>709.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>fischer</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>12</td>\n",
" <td>14</td>\n",
" <td>20</td>\n",
" <td>locaccess1</td>\n",
" <td>22.0</td>\n",
" <td>1402</td>\n",
" <td>587.0</td>\n",
" <td>587.0</td>\n",
" <td>2065</td>\n",
" <td>552.0</td>\n",
" <td>552.0</td>\n",
" <td>6752</td>\n",
" <td>860.0</td>\n",
" <td>860.0</td>\n",
" <td>7535</td>\n",
" <td>861.0</td>\n",
" <td>861.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>fischer</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>12</td>\n",
" <td>14</td>\n",
" <td>20</td>\n",
" <td>cs1</td>\n",
" <td>32.0</td>\n",
" <td>2933</td>\n",
" <td>604.0</td>\n",
" <td>604.0</td>\n",
" <td>4466</td>\n",
" <td>670.0</td>\n",
" <td>669.0</td>\n",
" <td>11695</td>\n",
" <td>1101.0</td>\n",
" <td>1101.0</td>\n",
" <td>12672</td>\n",
" <td>1078.0</td>\n",
" <td>1077.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>fischer</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>12</td>\n",
" <td>14</td>\n",
" <td>20</td>\n",
" <td>idle2</td>\n",
" <td>6.0</td>\n",
" <td>112</td>\n",
" <td>548.0</td>\n",
" <td>548.0</td>\n",
" <td>112</td>\n",
" <td>563.0</td>\n",
" <td>563.0</td>\n",
" <td>389</td>\n",
" <td>540.0</td>\n",
" <td>540.0</td>\n",
" <td>423</td>\n",
" <td>522.0</td>\n",
" <td>522.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>fischer</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>12</td>\n",
" <td>14</td>\n",
" <td>20</td>\n",
" <td>active2</td>\n",
" <td>11.0</td>\n",
" <td>349</td>\n",
" <td>542.0</td>\n",
" <td>542.0</td>\n",
" <td>383</td>\n",
" <td>518.0</td>\n",
" <td>518.0</td>\n",
" <td>1218</td>\n",
" <td>616.0</td>\n",
" <td>616.0</td>\n",
" <td>1427</td>\n",
" <td>620.0</td>\n",
" <td>620.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>fischer</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>12</td>\n",
" <td>14</td>\n",
" <td>20</td>\n",
" <td>check2</td>\n",
" <td>17.0</td>\n",
" <td>819</td>\n",
" <td>579.0</td>\n",
" <td>579.0</td>\n",
" <td>1028</td>\n",
" <td>544.0</td>\n",
" <td>544.0</td>\n",
" <td>3274</td>\n",
" <td>732.0</td>\n",
" <td>731.0</td>\n",
" <td>3869</td>\n",
" <td>733.0</td>\n",
" <td>733.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>fischer</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>12</td>\n",
" <td>14</td>\n",
" <td>20</td>\n",
" <td>locaccess2</td>\n",
" <td>24.0</td>\n",
" <td>1782</td>\n",
" <td>619.0</td>\n",
" <td>619.0</td>\n",
" <td>2435</td>\n",
" <td>560.0</td>\n",
" <td>560.0</td>\n",
" <td>6752</td>\n",
" <td>959.0</td>\n",
" <td>959.0</td>\n",
" <td>7535</td>\n",
" <td>902.0</td>\n",
" <td>901.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>fischer</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>12</td>\n",
" <td>14</td>\n",
" <td>20</td>\n",
" <td>cs2</td>\n",
" <td>31.0</td>\n",
" <td>3718</td>\n",
" <td>620.0</td>\n",
" <td>620.0</td>\n",
" <td>5031</td>\n",
" <td>635.0</td>\n",
" <td>635.0</td>\n",
" <td>11695</td>\n",
" <td>1189.0</td>\n",
" <td>1189.0</td>\n",
" <td>12672</td>\n",
" <td>1070.0</td>\n",
" <td>1070.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>fischer</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>12</td>\n",
" <td>14</td>\n",
" <td>20</td>\n",
" <td>obswaiting</td>\n",
" <td>5.0</td>\n",
" <td>112</td>\n",
" <td>509.0</td>\n",
" <td>508.0</td>\n",
" <td>112</td>\n",
" <td>508.0</td>\n",
" <td>508.0</td>\n",
" <td>389</td>\n",
" <td>539.0</td>\n",
" <td>538.0</td>\n",
" <td>423</td>\n",
" <td>566.0</td>\n",
" <td>565.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>fischer</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>12</td>\n",
" <td>14</td>\n",
" <td>20</td>\n",
" <td>obs1</td>\n",
" <td>28.0</td>\n",
" <td>2933</td>\n",
" <td>603.0</td>\n",
" <td>602.0</td>\n",
" <td>4466</td>\n",
" <td>644.0</td>\n",
" <td>641.0</td>\n",
" <td>11695</td>\n",
" <td>1118.0</td>\n",
" <td>1117.0</td>\n",
" <td>12672</td>\n",
" <td>1165.0</td>\n",
" <td>1164.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>fischer</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>12</td>\n",
" <td>14</td>\n",
" <td>20</td>\n",
" <td>obs2</td>\n",
" <td>30.0</td>\n",
" <td>3718</td>\n",
" <td>635.0</td>\n",
" <td>634.0</td>\n",
" <td>5031</td>\n",
" <td>679.0</td>\n",
" <td>678.0</td>\n",
" <td>11695</td>\n",
" <td>1212.0</td>\n",
" <td>1213.0</td>\n",
" <td>12672</td>\n",
" <td>1116.0</td>\n",
" <td>1114.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>fischer</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>12</td>\n",
" <td>14</td>\n",
" <td>20</td>\n",
" <td>obsviolation</td>\n",
" <td>70.0</td>\n",
" <td>49279</td>\n",
" <td>1885.0</td>\n",
" <td>1884.0</td>\n",
" <td>45904</td>\n",
" <td>1486.0</td>\n",
" <td>1485.0</td>\n",
" <td>79004</td>\n",
" <td>3968.0</td>\n",
" <td>3967.0</td>\n",
" <td>75437</td>\n",
" <td>3586.0</td>\n",
" <td>3585.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" clocks parameters actions locations transitions location_reached \\\n",
"model \n",
"coffee 2 3 4 4 6 addsugar \n",
"coffee 2 3 4 4 6 cdone \n",
"coffee 2 3 4 4 6 idle \n",
"coffee 2 3 4 4 6 preparingcoffee \n",
" clocks parameters actions locations transitions location_reached \n",
"model \n",
"tgc 3 6 8 12 12 train0 \\\n",
"tgc 3 6 8 12 12 train1 \n",
"tgc 3 6 8 12 12 train2 \n",
"tgc 3 6 8 12 12 train3 \n",
"tgc 3 6 8 12 12 gate0 \n",
"tgc 3 6 8 12 12 gate1 \n",
"tgc 3 6 8 12 12 gate2 \n",
"tgc 3 6 8 12 12 gate3 \n",
"tgc 3 6 8 12 12 controller0 \n",
"tgc 3 6 8 12 12 controller1 \n",
"tgc 3 6 8 12 12 controller2 \n",
"tgc 3 6 8 12 12 controller3 \n",
"coffee 2 3 4 4 6 idle \n",
"coffee 2 3 4 4 6 addsugar \n",
"coffee 2 3 4 4 6 preparingcoffee \n",
"coffee 2 3 4 4 6 cdone \n",
"fischer 2 2 12 14 20 idle1 \n",
"fischer 2 2 12 14 20 active1 \n",
"fischer 2 2 12 14 20 check1 \n",
"fischer 2 2 12 14 20 locaccess1 \n",
"fischer 2 2 12 14 20 cs1 \n",
"fischer 2 2 12 14 20 idle2 \n",
"fischer 2 2 12 14 20 active2 \n",
"fischer 2 2 12 14 20 check2 \n",
"fischer 2 2 12 14 20 locaccess2 \n",
"fischer 2 2 12 14 20 cs2 \n",
"fischer 2 2 12 14 20 obswaiting \n",
"fischer 2 2 12 14 20 obs1 \n",
"fischer 2 2 12 14 20 obs2 \n",
"fischer 2 2 12 14 20 obsviolation \n",
"\n",
" imitator_time(ms) maude_no_folding_rewrites \n",
"model \n",
"tgc 6.0 150 \\\n",
"tgc 11.0 354 \n",
"tgc 13.0 667 \n",
"tgc 16.0 1222 \n",
"tgc 7.0 150 \n",
"tgc 14.0 767 \n",
"tgc 21.0 1463 \n",
"tgc 45.0 10740 \n",
"tgc 6.0 150 \n",
"tgc 11.0 354 \n",
"tgc 18.0 767 \n",
"tgc 30.0 4279 \n",
"coffee 5.0 111 \n",
"coffee 10.0 261 \n",
"coffee 14.0 562 \n",
"coffee 18.0 1174 \n",
"fischer 6.0 112 \n",
"fischer 11.0 297 \n",
"fischer 15.0 627 \n",
"fischer 22.0 1402 \n",
"fischer 32.0 2933 \n",
"fischer 6.0 112 \n",
"fischer 11.0 349 \n",
"fischer 17.0 819 \n",
"fischer 24.0 1782 \n",
"fischer 31.0 3718 \n",
"fischer 5.0 112 \n",
"fischer 28.0 2933 \n",
"fischer 30.0 3718 \n",
"fischer 70.0 49279 \n",
"\n",
" maude_no_folding_cpu(ms) maude_no_folding_real(ms) \n",
"model \n",
"tgc 526.0 526.0 \\\n",
"tgc 525.0 524.0 \n",
"tgc 575.0 575.0 \n",
"tgc 582.0 582.0 \n",
"tgc 498.0 497.0 \n",
"tgc 551.0 551.0 \n",
"tgc 573.0 572.0 \n",
"tgc 864.0 863.0 \n",
"tgc 508.0 507.0 \n",
"tgc 569.0 568.0 \n",
"tgc 535.0 535.0 \n",
"tgc 647.0 647.0 \n",
"coffee 483.0 483.0 \n",
"coffee 491.0 491.0 \n",
"coffee 500.0 499.0 \n",
"coffee 559.0 558.0 \n",
"fischer 517.0 517.0 \n",
"fischer 538.0 537.0 \n",
"fischer 520.0 519.0 \n",
"fischer 587.0 587.0 \n",
"fischer 604.0 604.0 \n",
"fischer 548.0 548.0 \n",
"fischer 542.0 542.0 \n",
"fischer 579.0 579.0 \n",
"fischer 619.0 619.0 \n",
"fischer 620.0 620.0 \n",
"fischer 509.0 508.0 \n",
"fischer 603.0 602.0 \n",
"fischer 635.0 634.0 \n",
"fischer 1885.0 1884.0 \n",
"\n",
" imitator_time(ms) maude_rewrites maude_cpu(ms) maude_real(ms) \\\n",
"model \n",
"coffee 0.0 2 0.0 0.0 \n",
"coffee 0.0 12 0.0 0.0 \n",
"coffee 0.0 0 0.0 0.0 \n",
"coffee 0.0 6 0.0 0.0 \n",
" maude_no_folding_FME_rewrites maude_no_folding_FME_cpu(ms) \n",
"model \n",
"tgc 150 528.0 \\\n",
"tgc 398 523.0 \n",
"tgc 947 573.0 \n",
"tgc 1989 607.0 \n",
"tgc 150 514.0 \n",
"tgc 1071 544.0 \n",
"tgc 2300 585.0 \n",
"tgc 18403 898.0 \n",
"tgc 150 548.0 \n",
"tgc 398 568.0 \n",
"tgc 1071 531.0 \n",
"tgc 7530 685.0 \n",
"coffee 111 510.0 \n",
"coffee 273 489.0 \n",
"coffee 602 512.0 \n",
"coffee 1280 543.0 \n",
"fischer 112 503.0 \n",
"fischer 331 505.0 \n",
"fischer 826 520.0 \n",
"fischer 2065 552.0 \n",
"fischer 4466 670.0 \n",
"fischer 112 563.0 \n",
"fischer 383 518.0 \n",
"fischer 1028 544.0 \n",
"fischer 2435 560.0 \n",
"fischer 5031 635.0 \n",
"fischer 112 508.0 \n",
"fischer 4466 644.0 \n",
"fischer 5031 679.0 \n",
"fischer 45904 1486.0 \n",
"\n",
" maude_collapsing_rewrites maude_collapsing_cpu(ms) \\\n",
"model \n",
"coffee 85 4.0 \n",
"coffee 373 8.0 \n",
"coffee 801 12.0 \n",
"coffee 182 8.0 \n",
" maude_no_folding_FME_real(ms) maude_folding_rewrites \n",
"model \n",
"tgc 529.0 424 \\\n",
"tgc 523.0 999 \n",
"tgc 573.0 2420 \n",
"tgc 607.0 5898 \n",
"tgc 513.0 424 \n",
"tgc 544.0 2420 \n",
"tgc 586.0 5898 \n",
"tgc 897.0 35973 \n",
"tgc 547.0 424 \n",
"tgc 568.0 999 \n",
"tgc 530.0 2420 \n",
"tgc 686.0 20078 \n",
"coffee 521.0 290 \n",
"coffee 488.0 720 \n",
"coffee 511.0 1977 \n",
"coffee 543.0 4357 \n",
"fischer 502.0 389 \n",
"fischer 505.0 1218 \n",
"fischer 520.0 3274 \n",
"fischer 552.0 6752 \n",
"fischer 669.0 11695 \n",
"fischer 563.0 389 \n",
"fischer 518.0 1218 \n",
"fischer 544.0 3274 \n",
"fischer 560.0 6752 \n",
"fischer 635.0 11695 \n",
"fischer 508.0 389 \n",
"fischer 641.0 11695 \n",
"fischer 678.0 11695 \n",
"fischer 1485.0 79004 \n",
"\n",
" maude_collapsing_real(ms) \n",
"model \n",
"coffee 5.0 \n",
"coffee 7.0 \n",
"coffee 15.0 \n",
"coffee 6.0 "
" maude_folding_cpu(ms) maude_folding_real(ms) \n",
"model \n",
"tgc 507.0 507.0 \\\n",
"tgc 574.0 573.0 \n",
"tgc 641.0 640.0 \n",
"tgc 855.0 855.0 \n",
"tgc 536.0 534.0 \n",
"tgc 672.0 672.0 \n",
"tgc 815.0 813.0 \n",
"tgc 2258.0 2260.0 \n",
"tgc 536.0 535.0 \n",
"tgc 642.0 641.0 \n",
"tgc 690.0 689.0 \n",
"tgc 1408.0 1407.0 \n",
"coffee 537.0 537.0 \n",
"coffee 526.0 526.0 \n",
"coffee 607.0 606.0 \n",
"coffee 670.0 668.0 \n",
"fischer 524.0 524.0 \n",
"fischer 595.0 594.0 \n",
"fischer 707.0 706.0 \n",
"fischer 860.0 860.0 \n",
"fischer 1101.0 1101.0 \n",
"fischer 540.0 540.0 \n",
"fischer 616.0 616.0 \n",
"fischer 732.0 731.0 \n",
"fischer 959.0 959.0 \n",
"fischer 1189.0 1189.0 \n",
"fischer 539.0 538.0 \n",
"fischer 1118.0 1117.0 \n",
"fischer 1212.0 1213.0 \n",
"fischer 3968.0 3967.0 \n",
"\n",
" maude_folding_FME_rewrites maude_folding_FME_cpu(ms) \n",
"model \n",
"tgc 468 532.0 \\\n",
"tgc 1316 595.0 \n",
"tgc 3297 709.0 \n",
"tgc 7753 878.0 \n",
"tgc 468 524.0 \n",
"tgc 3297 689.0 \n",
"tgc 7753 864.0 \n",
"tgc 45102 2382.0 \n",
"tgc 468 549.0 \n",
"tgc 1316 641.0 \n",
"tgc 3297 674.0 \n",
"tgc 23670 1495.0 \n",
"coffee 334 504.0 \n",
"coffee 763 545.0 \n",
"coffee 2019 602.0 \n",
"coffee 4419 698.0 \n",
"fischer 423 565.0 \n",
"fischer 1427 638.0 \n",
"fischer 3869 709.0 \n",
"fischer 7535 861.0 \n",
"fischer 12672 1078.0 \n",
"fischer 423 522.0 \n",
"fischer 1427 620.0 \n",
"fischer 3869 733.0 \n",
"fischer 7535 902.0 \n",
"fischer 12672 1070.0 \n",
"fischer 423 566.0 \n",
"fischer 12672 1165.0 \n",
"fischer 12672 1116.0 \n",
"fischer 75437 3586.0 \n",
"\n",
" maude_folding_FME_real(ms) \n",
"model \n",
"tgc 532.0 \n",
"tgc 593.0 \n",
"tgc 707.0 \n",
"tgc 877.0 \n",
"tgc 523.0 \n",
"tgc 689.0 \n",
"tgc 862.0 \n",
"tgc 2383.0 \n",
"tgc 548.0 \n",
"tgc 640.0 \n",
"tgc 673.0 \n",
"tgc 1494.0 \n",
"coffee 504.0 \n",
"coffee 545.0 \n",
"coffee 601.0 \n",
"coffee 696.0 \n",
"fischer 564.0 \n",
"fischer 637.0 \n",
"fischer 709.0 \n",
"fischer 861.0 \n",
"fischer 1077.0 \n",
"fischer 522.0 \n",
"fischer 620.0 \n",
"fischer 733.0 \n",
"fischer 901.0 \n",
"fischer 1070.0 \n",
"fischer 565.0 \n",
"fischer 1164.0 \n",
"fischer 1114.0 \n",
"fischer 3585.0 "
]
},
"execution_count":
6
,
"execution_count":
35
,
"metadata": {},
"output_type": "execute_result"
}
...
...
@@ -457,7 +1199,7 @@
},
{
"cell_type": "code",
"execution_count":
7
,
"execution_count":
36
,
"metadata": {},
"outputs": [
{
...
...
@@ -499,16 +1241,36 @@
" <td>4</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>fischer</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>12</td>\n",
" <td>14</td>\n",
" <td>20</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>tgc</td>\n",
" <td>3</td>\n",
" <td>6</td>\n",
" <td>8</td>\n",
" <td>12</td>\n",
" <td>12</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" model clocks parameters actions locations transitions\n",
"0 coffee 2 3 4 4 6"
" model clocks parameters actions locations transitions\n",
"0 coffee 2 3 4 4 6\n",
"1 fischer 2 2 12 14 20\n",
"2 tgc 3 6 8 12 12"
]
},
"execution_count":
7
,
"execution_count":
36
,
"metadata": {},
"output_type": "execute_result"
}
...
...
@@ -518,16 +1280,7 @@
" subset=[\"clocks\", \"parameters\", \"actions\", \"locations\", \"transitions\"], keep=\"last\"\n",
").reset_index()\n",
"df_model_info = df_model_info.drop(\n",
" labels=[\n",
" \"location_reached\",\n",
" \"imitator_time(ms)\",\n",
" \"maude_rewrites\",\n",
" \"maude_cpu(ms)\",\n",
" \"maude_real(ms)\",\n",
" \"maude_collapsing_rewrites\",\n",
" \"maude_collapsing_cpu(ms)\",\n",
" \"maude_collapsing_real(ms)\",\n",
" ],\n",
" labels=[\"location_reached\", \"imitator_time(ms)\"] + maude_labels,\n",
" axis=1,\n",
")\n",
"df_model_info = df_model_info.sort_values(\n",
...
...
@@ -536,6 +1289,16 @@
"df_model_info\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"with open(\"images/table.tex\", \"w\") as latex_file:\n",
" latex_file.write(export_to_latex(df_model_info))\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
...
...
@@ -545,12 +1308,107 @@
},
{
"cell_type": "code",
"execution_count":
8
,
"execution_count":
4
,
"metadata": {},
"outputs": [],
"source": [
"with open(\"images/table.tex\", \"w\") as latex_file:\n",
" latex_file.write(export_to_latex(df_model_info))\n"
"def plot(df, model_name):\n",
" model = df.loc[[model_name]]\n",
" max_value_model = (\n",
" model.drop(axis=1, labels=[\"maude_rewrites\", \"maude_collapsing_rewrites\"])\n",
" .max(numeric_only=True, axis=0)\n",
" .max()\n",
" )\n",
" axis_bound = math.ceil(math.log10(max_value_model))\n",
"\n",
" fig = go.Figure()\n",
" # no collapsing\n",
" fig.add_trace(\n",
" go.Scatter(\n",
" x=model[\"maude_real(ms)\"],\n",
" y=model[\"imitator_time(ms)\"],\n",
" text=model[\"location_reached\"],\n",
" mode=\"markers\",\n",
" marker_symbol=\"circle-open\",\n",
" marker_color=\"red\",\n",
" marker_size=12,\n",
" name=\"no-collapsing\",\n",
" )\n",
" )\n",
"\n",
" # collapsing\n",
" fig.add_trace(\n",
" go.Scatter(\n",
" x=model[\"maude_collapsing_real(ms)\"],\n",
" y=model[\"imitator_time(ms)\"],\n",
" text=model[\"location_reached\"],\n",
" mode=\"markers\",\n",
" marker_symbol=\"circle-open\",\n",
" marker_color=\"blue\",\n",
" marker_size=12,\n",
" name=\"collapsing\",\n",
" )\n",
" )\n",
"\n",
" # identity line\n",
" fig.add_trace(\n",
" go.Scatter(\n",
" x=[0, 10**axis_bound],\n",
" y=[0, 10**axis_bound],\n",
" mode=\"lines\",\n",
" line=dict(color=\"black\", width=1),\n",
" showlegend=False,\n",
" )\n",
" )\n",
"\n",
" fig.update_xaxes(\n",
" type=\"log\",\n",
" showgrid=False,\n",
" mirror=True,\n",
" linewidth=1,\n",
" linecolor=\"black\",\n",
" constrain=\"domain\",\n",
" range=[-1, axis_bound],\n",
" title=\"Maude (ms)\",\n",
" )\n",
" fig.update_yaxes(\n",
" type=\"log\",\n",
" showgrid=False,\n",
" mirror=True,\n",
" linewidth=1,\n",
" linecolor=\"black\",\n",
" scaleanchor=\"x\",\n",
" scaleratio=1,\n",
" range=[-1, axis_bound],\n",
" title=\"Imitator (ms)\",\n",
" )\n",
"\n",
" legend_options = dict(\n",
" yanchor=\"top\",\n",
" y=0.99,\n",
" xanchor=\"left\",\n",
" x=0.05,\n",
" bordercolor=\"Black\",\n",
" borderwidth=1,\n",
" )\n",
" margin = margin = dict(l=20, r=20, t=20, b=20)\n",
"\n",
" fig.update_layout(\n",
" width=800,\n",
" height=800,\n",
" paper_bgcolor=\"white\",\n",
" plot_bgcolor=\"white\",\n",
" legend_title_text=\"Method\",\n",
" legend=legend_options,\n",
" autosize=False,\n",
" margin=margin,\n",
" font=dict(size=28),\n",
" )\n",
" fig.update_traces(\n",
" hovertemplate=\"<b>%{text}</b><br><br>Maude: %{x} ms <br>Imitator: %{y} ms<extra></extra>\"\n",
" )\n",
"\n",
" return fig\n"
]
},
{
...
...
%% Cell type:code id: tags:
```
python
import
os
import
re
import
csv
import
pandas
as
pd
import
math
import
plotly.io
as
pio
import
plotly.graph_objects
as
go
# pio.kaleido.scope.mathjax = None
# models to analyse
models
=
[
"
tgc
"
,
"
coffee
"
,
"
fischer
"
]
# csv with results
csv_filename
=
"
results.csv
"
# folder with tools results
log_folder
=
"
logs
"
# folder with the mdoels
models_folder
=
"
models
"
# filenames
imitator_file
=
"
{model}-EFwitness.imiprop.{location}.res
"
maude_files
=
[
{
"
name
"
:
"
no_folding
"
,
"
file
"
:
"
{model}.no-folding.maude.{location}.res
"
},
{
"
name
"
:
"
no_folding_FME
"
,
"
file
"
:
"
{model}.no-folding.maude.{location}.FEM.res
"
},
{
"
name
"
:
"
folding
"
,
"
file
"
:
"
{model}.folding.maude.{location}.res
"
},
{
"
name
"
:
"
folding_FME
"
,
"
file
"
:
"
{model}.folding.maude.{location}.FEM.res
"
},
]
# maude labels for the tables
maude_labels
=
[]
for
f
in
maude_files
:
prefix
=
f
'
maude_
{
f
[
"
name
"
]
}
'
maude_labels
.
append
(
f
"
{
prefix
}
_rewrites
"
)
maude_labels
.
append
(
f
"
{
prefix
}
_cpu(ms)
"
)
maude_labels
.
append
(
f
"
{
prefix
}
_real(ms)
"
)
```
%% Cell type:markdown id: tags:
# Generate CSV file with data
%% Cell type:code id: tags:
```
python
def
format_unit
(
value
,
unit
):
if
unit
==
"
ms
"
:
return
float
(
value
)
elif
unit
==
"
second
"
or
unit
==
"
seconds
"
:
return
float
(
value
)
*
1000
else
:
raise
Exception
(
f
"
Unit
{
unit
}
is not supported
"
)
def
parse_imi_file
(
model
,
loc
):
# regex
regex_imitator
=
re
.
compile
(
r
"
Total computation time\s*:\s*(\d+(?:\.\d+)?) (\w+)
"
)
regex_clocks
=
re
.
compile
(
r
"
Number of clocks\s*:\s*(\d+)
"
)
regex_parameters
=
re
.
compile
(
r
"
Number of parameters\s*:\s*(\d+)
"
)
regex_actions
=
re
.
compile
(
r
"
Number of actions\s*:\s*(\d+)
"
)
regex_locations
=
re
.
compile
(
r
"
Total number of locations\s*:\s*(\d+)
"
)
regex_transitions
=
re
.
compile
(
r
"
Total number of transitions\s*:\s*(\d+)
"
)
output
=
{}
# search in imitator file
imi_filename
=
imitator_file
.
format
(
model
=
model
,
location
=
loc
)
with
open
(
os
.
path
.
join
(
log_folder
,
model
,
imi_filename
),
"
r
"
)
as
imi_file
:
imi_content
=
imi_file
.
read
()
# get imitator times
imi_search
=
regex_imitator
.
search
(
imi_content
)
imi_time
,
imi_unit
=
imi_search
.
groups
()
output
[
"
time
"
]
=
f
"
{
format_unit
(
imi_time
,
imi_unit
)
}
"
# get model's information
output
[
"
nb_clocks
"
]
=
regex_clocks
.
search
(
imi_content
).
group
(
1
)
output
[
"
nb_parameters
"
]
=
regex_parameters
.
search
(
imi_content
).
group
(
1
)
output
[
"
nb_actions
"
]
=
regex_actions
.
search
(
imi_content
).
group
(
1
)
output
[
"
nb_locations
"
]
=
regex_locations
.
search
(
imi_content
).
group
(
1
)
output
[
"
nb_transitions
"
]
=
regex_transitions
.
search
(
imi_content
).
group
(
1
)
return
output
def
parse_maude_file
(
filename_file
,
model
,
loc
):
regex_maude
=
re
.
compile
(
r
"
rewrites: (\d+) in (\d+)(\w+) cpu \((\d+)(\w+) real\)
"
)
output
=
{}
# search in maude file
maude_filename
=
filename_file
.
format
(
model
=
model
,
location
=
loc
)
with
open
(
os
.
path
.
join
(
log_folder
,
model
,
maude_filename
),
"
r
"
)
as
rl_file
:
maude_content
=
regex_maude
.
search
(
rl_file
.
read
())
(
rewrites
,
cpu
,
cpu_unit
,
real
,
real_unit
)
=
maude_content
.
groups
()
output
[
"
rewrites
"
]
=
rewrites
output
[
"
cpu
"
]
=
f
"
{
format_unit
(
cpu
,
cpu_unit
)
}
"
output
[
"
real
"
]
=
f
"
{
format_unit
(
real
,
real_unit
)
}
"
return
output
def
generate_csv
():
with
open
(
csv_filename
,
"
w
"
)
as
csv_file
:
fieldnames
=
[
"
model
"
,
"
clocks
"
,
"
parameters
"
,
"
actions
"
,
"
locations
"
,
"
transitions
"
,
"
location_reached
"
,
"
imitator_time(ms)
"
,
]
for
f
in
maude_files
:
prefix
=
f
'
maude_
{
f
[
"
name
"
]
}
'
fieldnames
.
append
(
f
"
{
prefix
}
_rewrites
"
)
fieldnames
.
append
(
f
"
{
prefix
}
_cpu(ms)
"
)
fieldnames
.
append
(
f
"
{
prefix
}
_real(ms)
"
)
]
+
maude_labels
writer
=
csv
.
DictWriter
(
csv_file
,
fieldnames
=
fieldnames
)
writer
.
writeheader
()
for
model
in
models
:
with
open
(
os
.
path
.
join
(
models_folder
,
f
"
{
model
}
_loc.txt
"
))
as
loc_file
:
locations
=
[
l
.
replace
(
"
\n
"
,
""
).
split
(
"
"
)[
1
]
for
l
in
loc_file
]
for
loc
in
locations
:
imitator_info
=
parse_imi_file
(
model
,
loc
)
results
=
{
"
model
"
:
model
,
"
location_reached
"
:
loc
,
"
clocks
"
:
imitator_info
[
"
nb_clocks
"
],
"
parameters
"
:
imitator_info
[
"
nb_parameters
"
],
"
actions
"
:
imitator_info
[
"
nb_actions
"
],
"
locations
"
:
imitator_info
[
"
nb_locations
"
],
"
transitions
"
:
imitator_info
[
"
nb_transitions
"
],
"
imitator_time(ms)
"
:
imitator_info
[
"
time
"
],
}
for
f
in
maude_files
:
maude_info
=
parse_maude_file
(
f
[
"
file
"
],
model
,
loc
)
prefix
=
f
'
maude_
{
f
[
"
name
"
]
}
'
results
[
f
"
{
prefix
}
_rewrites
"
]
=
maude_info
[
"
rewrites
"
]
results
[
f
"
{
prefix
}
_cpu(ms)
"
]
=
maude_info
[
"
cpu
"
]
results
[
f
"
{
prefix
}
_real(ms)
"
]
=
maude_info
[
"
real
"
]
# save info
writer
.
writerow
(
results
)
```
%% Cell type:code id: tags:
```
python
generate_csv
()
```
%% Cell type:markdown id: tags:
# Analyse Data
%% Cell type:code id: tags:
```
python
def
export_to_latex
(
df
):
styler
=
df
.
style
styler
.
hide
(
axis
=
"
index
"
)
return
styler
.
to_latex
(
hrules
=
True
)
```
%% Cell type:code id: tags:
```
python
df
=
pd
.
read_csv
(
csv_filename
)
df
=
df
.
set_index
(
"
model
"
)
df
```
%% Output
clocks parameters actions locations transitions location_reached
model
tgc 3 6 8 12 12 train0 \
tgc 3 6 8 12 12 train1
tgc 3 6 8 12 12 train2
tgc 3 6 8 12 12 train3
tgc 3 6 8 12 12 gate0
tgc 3 6 8 12 12 gate1
tgc 3 6 8 12 12 gate2
tgc 3 6 8 12 12 gate3
tgc 3 6 8 12 12 controller0
tgc 3 6 8 12 12 controller1
tgc 3 6 8 12 12 controller2
tgc 3 6 8 12 12 controller3
coffee 2 3 4 4 6 idle
coffee 2 3 4 4 6 addsugar
coffee 2 3 4 4 6 preparingcoffee
coffee 2 3 4 4 6 cdone
fischer 2 2 12 14 20 idle1
fischer 2 2 12 14 20 active1
fischer 2 2 12 14 20 check1
fischer 2 2 12 14 20 locaccess1
fischer 2 2 12 14 20 cs1
fischer 2 2 12 14 20 idle2
fischer 2 2 12 14 20 active2
fischer 2 2 12 14 20 check2
fischer 2 2 12 14 20 locaccess2
fischer 2 2 12 14 20 cs2
fischer 2 2 12 14 20 obswaiting
fischer 2 2 12 14 20 obs1
fischer 2 2 12 14 20 obs2
fischer 2 2 12 14 20 obsviolation
imitator_time(ms) maude_no_folding_rewrites
model
tgc 6.0 150 \
tgc 11.0 354
tgc 13.0 667
tgc 16.0 1222
tgc 7.0 150
tgc 14.0 767
tgc 21.0 1463
tgc 45.0 10740
tgc 6.0 150
tgc 11.0 354
tgc 18.0 767
tgc 30.0 4279
coffee 5.0 111
coffee 10.0 261
coffee 14.0 562
coffee 18.0 1174
fischer 6.0 112
fischer 11.0 297
fischer 15.0 627
fischer 22.0 1402
fischer 32.0 2933
fischer 6.0 112
fischer 11.0 349
fischer 17.0 819
fischer 24.0 1782
fischer 31.0 3718
fischer 5.0 112
fischer 28.0 2933
fischer 30.0 3718
fischer 70.0 49279
maude_no_folding_cpu(ms) maude_no_folding_real(ms)
model
tgc 526.0 526.0 \
tgc 525.0 524.0
tgc 575.0 575.0
tgc 582.0 582.0
tgc 498.0 497.0
tgc 551.0 551.0
tgc 573.0 572.0
tgc 864.0 863.0
tgc 508.0 507.0
tgc 569.0 568.0
tgc 535.0 535.0
tgc 647.0 647.0
coffee 483.0 483.0
coffee 491.0 491.0
coffee 500.0 499.0
coffee 559.0 558.0
fischer 517.0 517.0
fischer 538.0 537.0
fischer 520.0 519.0
fischer 587.0 587.0
fischer 604.0 604.0
fischer 548.0 548.0
fischer 542.0 542.0
fischer 579.0 579.0
fischer 619.0 619.0
fischer 620.0 620.0
fischer 509.0 508.0
fischer 603.0 602.0
fischer 635.0 634.0
fischer 1885.0 1884.0
maude_no_folding_FME_rewrites maude_no_folding_FME_cpu(ms)
model
tgc 150 528.0 \
tgc 398 523.0
tgc 947 573.0
tgc 1989 607.0
tgc 150 514.0
tgc 1071 544.0
tgc 2300 585.0
tgc 18403 898.0
tgc 150 548.0
tgc 398 568.0
tgc 1071 531.0
tgc 7530 685.0
coffee 111 510.0
coffee 273 489.0
coffee 602 512.0
coffee 1280 543.0
fischer 112 503.0
fischer 331 505.0
fischer 826 520.0
fischer 2065 552.0
fischer 4466 670.0
fischer 112 563.0
fischer 383 518.0
fischer 1028 544.0
fischer 2435 560.0
fischer 5031 635.0
fischer 112 508.0
fischer 4466 644.0
fischer 5031 679.0
fischer 45904 1486.0
maude_no_folding_FME_real(ms) maude_folding_rewrites
model
tgc 529.0 424 \
tgc 523.0 999
tgc 573.0 2420
tgc 607.0 5898
tgc 513.0 424
tgc 544.0 2420
tgc 586.0 5898
tgc 897.0 35973
tgc 547.0 424
tgc 568.0 999
tgc 530.0 2420
tgc 686.0 20078
coffee 521.0 290
coffee 488.0 720
coffee 511.0 1977
coffee 543.0 4357
fischer 502.0 389
fischer 505.0 1218
fischer 520.0 3274
fischer 552.0 6752
fischer 669.0 11695
fischer 563.0 389
fischer 518.0 1218
fischer 544.0 3274
fischer 560.0 6752
fischer 635.0 11695
fischer 508.0 389
fischer 641.0 11695
fischer 678.0 11695
fischer 1485.0 79004
maude_folding_cpu(ms) maude_folding_real(ms)
model
tgc 507.0 507.0 \
tgc 574.0 573.0
tgc 641.0 640.0
tgc 855.0 855.0
tgc 536.0 534.0
tgc 672.0 672.0
tgc 815.0 813.0
tgc 2258.0 2260.0
tgc 536.0 535.0
tgc 642.0 641.0
tgc 690.0 689.0
tgc 1408.0 1407.0
coffee 537.0 537.0
coffee 526.0 526.0
coffee 607.0 606.0
coffee 670.0 668.0
fischer 524.0 524.0
fischer 595.0 594.0
fischer 707.0 706.0
fischer 860.0 860.0
fischer 1101.0 1101.0
fischer 540.0 540.0
fischer 616.0 616.0
fischer 732.0 731.0
fischer 959.0 959.0
fischer 1189.0 1189.0
fischer 539.0 538.0
fischer 1118.0 1117.0
fischer 1212.0 1213.0
fischer 3968.0 3967.0
maude_folding_FME_rewrites maude_folding_FME_cpu(ms)
model
tgc 468 532.0 \
tgc 1316 595.0
tgc 3297 709.0
tgc 7753 878.0
tgc 468 524.0
tgc 3297 689.0
tgc 7753 864.0
tgc 45102 2382.0
tgc 468 549.0
tgc 1316 641.0
tgc 3297 674.0
tgc 23670 1495.0
coffee 334 504.0
coffee 763 545.0
coffee 2019 602.0
coffee 4419 698.0
fischer 423 565.0
fischer 1427 638.0
fischer 3869 709.0
fischer 7535 861.0
fischer 12672 1078.0
fischer 423 522.0
fischer 1427 620.0
fischer 3869 733.0
fischer 7535 902.0
fischer 12672 1070.0
fischer 423 566.0
fischer 12672 1165.0
fischer 12672 1116.0
fischer 75437 3586.0
maude_folding_FME_real(ms)
model
tgc 532.0
tgc 593.0
tgc 707.0
tgc 877.0
tgc 523.0
tgc 689.0
tgc 862.0
tgc 2383.0
tgc 548.0
tgc 640.0
tgc 673.0
tgc 1494.0
coffee 504.0
coffee 545.0
coffee 601.0
coffee 696.0
fischer 564.0
fischer 637.0
fischer 709.0
fischer 861.0
fischer 1077.0
fischer 522.0
fischer 620.0
fischer 733.0
fischer 901.0
fischer 1070.0
fischer 565.0
fischer 1164.0
fischer 1114.0
fischer 3585.0
%% Cell type:code id: tags:
```
python
df_model_info
=
df
.
drop_duplicates
(
subset
=
[
"
clocks
"
,
"
parameters
"
,
"
actions
"
,
"
locations
"
,
"
transitions
"
],
keep
=
"
last
"
).
reset_index
()
df_model_info
=
df_model_info
.
drop
(
labels
=
[
"
location_reached
"
,
"
imitator_time(ms)
"
]
+
maude_labels
,
axis
=
1
,
)
df_model_info
=
df_model_info
.
sort_values
(
by
=
"
model
"
,
key
=
lambda
col
:
col
.
str
.
lower
(),
ignore_index
=
True
)
df_model_info
```
%% Output
model clocks parameters actions locations transitions
0 coffee 2 3 4 4 6
1 fischer 2 2 12 14 20
2 tgc 3 6 8 12 12
%% Cell type:code id: tags:
```
python
with
open
(
"
images/table.tex
"
,
"
w
"
)
as
latex_file
:
latex_file
.
write
(
export_to_latex
(
df_model_info
))
```
%% Cell type:markdown id: tags:
# Plot
%% Cell type:code id: tags:
```
python
def
plot
(
df
,
model_name
):
model
=
df
.
loc
[[
model_name
]]
max_value_model
=
(
model
.
drop
(
axis
=
1
,
labels
=
[
"
maude_rewrites
"
,
"
maude_collapsing_rewrites
"
])
.
max
(
numeric_only
=
True
,
axis
=
0
)
.
max
()
)
axis_bound
=
math
.
ceil
(
math
.
log10
(
max_value_model
))
fig
=
go
.
Figure
()
# no collapsing
fig
.
add_trace
(
go
.
Scatter
(
x
=
model
[
"
maude_real(ms)
"
],
y
=
model
[
"
imitator_time(ms)
"
],
text
=
model
[
"
location_reached
"
],
mode
=
"
markers
"
,
marker_symbol
=
"
circle-open
"
,
marker_color
=
"
red
"
,
marker_size
=
12
,
name
=
"
no-collapsing
"
,
)
)
# collapsing
fig
.
add_trace
(
go
.
Scatter
(
x
=
model
[
"
maude_collapsing_real(ms)
"
],
y
=
model
[
"
imitator_time(ms)
"
],
text
=
model
[
"
location_reached
"
],
mode
=
"
markers
"
,
marker_symbol
=
"
circle-open
"
,
marker_color
=
"
blue
"
,
marker_size
=
12
,
name
=
"
collapsing
"
,
)
)
# identity line
fig
.
add_trace
(
go
.
Scatter
(
x
=
[
0
,
10
**
axis_bound
],
y
=
[
0
,
10
**
axis_bound
],
mode
=
"
lines
"
,
line
=
dict
(
color
=
"
black
"
,
width
=
1
),
showlegend
=
False
,
)
)
fig
.
update_xaxes
(
type
=
"
log
"
,
showgrid
=
False
,
mirror
=
True
,
linewidth
=
1
,
linecolor
=
"
black
"
,
constrain
=
"
domain
"
,
range
=
[
-
1
,
axis_bound
],
title
=
"
Maude (ms)
"
,
)
fig
.
update_yaxes
(
type
=
"
log
"
,
showgrid
=
False
,
mirror
=
True
,
linewidth
=
1
,
linecolor
=
"
black
"
,
scaleanchor
=
"
x
"
,
scaleratio
=
1
,
range
=
[
-
1
,
axis_bound
],
title
=
"
Imitator (ms)
"
,
)
legend_options
=
dict
(
yanchor
=
"
top
"
,
y
=
0.99
,
xanchor
=
"
left
"
,
x
=
0.05
,
bordercolor
=
"
Black
"
,
borderwidth
=
1
,
)
margin
=
margin
=
dict
(
l
=
20
,
r
=
20
,
t
=
20
,
b
=
20
)
fig
.
update_layout
(
width
=
800
,
height
=
800
,
paper_bgcolor
=
"
white
"
,
plot_bgcolor
=
"
white
"
,
legend_title_text
=
"
Method
"
,
legend
=
legend_options
,
autosize
=
False
,
margin
=
margin
,
font
=
dict
(
size
=
28
),
)
fig
.
update_traces
(
hovertemplate
=
"
<b>%{text}</b><br><br>Maude: %{x} ms <br>Imitator: %{y} ms<extra></extra>
"
)
return
fig
```
%% Cell type:code id: tags:
```
python
def
export_to_latex
(
df
):
styler
=
df
.
style
styler
.
hide
(
axis
=
"
index
"
)
return
styler
.
to_latex
(
hrules
=
True
)
```
%% Cell type:code id: tags:
```
python
df
=
pd
.
read_csv
(
csv_filename
)
df
=
df
.
set_index
(
"
model
"
)
df
```
%% Output
clocks parameters actions locations transitions location_reached \
model
coffee 2 3 4 4 6 addsugar
coffee 2 3 4 4 6 cdone
coffee 2 3 4 4 6 idle
coffee 2 3 4 4 6 preparingcoffee
imitator_time(ms) maude_rewrites maude_cpu(ms) maude_real(ms) \
model
coffee 0.0 2 0.0 0.0
coffee 0.0 12 0.0 0.0
coffee 0.0 0 0.0 0.0
coffee 0.0 6 0.0 0.0
maude_collapsing_rewrites maude_collapsing_cpu(ms) \
model
coffee 85 4.0
coffee 373 8.0
coffee 801 12.0
coffee 182 8.0
maude_collapsing_real(ms)
model
coffee 5.0
coffee 7.0
coffee 15.0
coffee 6.0
%% Cell type:code id: tags:
```
python
df_model_info
=
df
.
drop_duplicates
(
subset
=
[
"
clocks
"
,
"
parameters
"
,
"
actions
"
,
"
locations
"
,
"
transitions
"
],
keep
=
"
last
"
).
reset_index
()
df_model_info
=
df_model_info
.
drop
(
labels
=
[
"
location_reached
"
,
"
imitator_time(ms)
"
,
"
maude_rewrites
"
,
"
maude_cpu(ms)
"
,
"
maude_real(ms)
"
,
"
maude_collapsing_rewrites
"
,
"
maude_collapsing_cpu(ms)
"
,
"
maude_collapsing_real(ms)
"
,
],
axis
=
1
,
)
df_model_info
=
df_model_info
.
sort_values
(
by
=
"
model
"
,
key
=
lambda
col
:
col
.
str
.
lower
(),
ignore_index
=
True
)
df_model_info
```
%% Output
model clocks parameters actions locations transitions
0 coffee 2 3 4 4 6
%% Cell type:markdown id: tags:
# Plot
%% Cell type:code id: tags:
```
python
with
open
(
"
images/table.tex
"
,
"
w
"
)
as
latex_file
:
latex_file
.
write
(
export_to_latex
(
df_model_info
))
```
%% Cell type:code id: tags:
```
python
for
m
in
models
:
fig
=
plot
(
df
,
m
)
filename
=
m
.
replace
(
"
_
"
,
"
-
"
)
fig
.
write_html
(
f
"
images/
{
filename
}
.html
"
)
fig
.
write_image
(
f
"
images/
{
filename
}
.pdf
"
,
format
=
"
pdf
"
)
```
%% Output
../../sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc:**CRASHING**:seccomp-bpf failure in syscall 0230
../../sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc:**CRASHING**:seccomp-bpf failure in syscall 0230
../../sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc:**CRASHING**:seccomp-bpf failure in syscall 0230
%% Cell type:code id: tags:
```
python
# show a figure
plot
(
df
,
models
[
0
])
```
%% Output
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment