aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2023-05-05 20:57:24 -0400
committerDavid Robillard <d@drobilla.net>2023-05-05 21:38:50 -0400
commited77fe14175e94138390f2ebf5348656e4421746 (patch)
tree034d6f3b72615f58181a83b3023e891172f39ca9
parent0bd97c0deec5829b73b17d009d74fc0346e8d3f2 (diff)
downloadserd-ed77fe14175e94138390f2ebf5348656e4421746.tar.gz
serd-ed77fe14175e94138390f2ebf5348656e4421746.tar.bz2
serd-ed77fe14175e94138390f2ebf5348656e4421746.zip
Update benchmarks
-rw-r--r--README.md2
-rw-r--r--doc/serdi-memory.svg258
-rw-r--r--doc/serdi-throughput.svg270
-rw-r--r--doc/serdi-time.svg267
-rwxr-xr-xscripts/serd_bench.py44
5 files changed, 453 insertions, 388 deletions
diff --git a/README.md b/README.md
index d3ebbca6..fa15c878 100644
--- a/README.md
+++ b/README.md
@@ -47,8 +47,8 @@ Turtle data generated by [sp2b][] on an AMD 1950x. Of the three, `serdi` is
the fastest by a wide margin, and the only one that uses a constant amount of
memory for all input sizes.
-![Time](doc/serdi-time.svg)
![Throughput](doc/serdi-throughput.svg)
+![Time](doc/serdi-time.svg)
![Memory](doc/serdi-memory.svg)
Documentation
diff --git a/doc/serdi-memory.svg b/doc/serdi-memory.svg
index 11d6ed1d..db837a07 100644
--- a/doc/serdi-memory.svg
+++ b/doc/serdi-memory.svg
@@ -1,82 +1,88 @@
-<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="243.064" height="200.88" viewBox="0 0 182.298 150.66" xmlns="http://www.w3.org/2000/svg">
+<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="254.918" height="200.88" viewBox="0 0 191.188 150.66" xmlns="http://www.w3.org/2000/svg">
<defs>
<style>
*{stroke-linejoin:round;stroke-linecap:butt}
</style>
</defs>
<g id="figure_1">
- <path d="M0 150.66h182.298V0H0z" fill="#fff" id="patch_1"/>
+ <path d="M0 150.66h191.188V0H0z" fill="#fff" id="patch_1"/>
<g id="axes_1">
- <path d="M31.255 117.11h142.043V17.32H31.255z" fill="#fff" id="patch_2"/>
+ <path d="M40.145 117.11h142.043V17.32H40.145z" fill="#fff" id="patch_2"/>
<g id="matplotlib.axis_1">
<g id="xtick_1">
- <path d="M52.06 117.11V17.32" clip-path="url(#p10c715e517)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_1"/>
+ <path d="M46.601 117.11V17.32" clip-path="url(#p693c8de2e3)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_1"/>
<g id="line2d_2">
<defs>
- <path id="m2c59509df4" d="M0 0v3.5" stroke="#000" stroke-width=".75"/>
+ <path id="mf5f1bb61bc" d="M0 0v3.5" stroke="#000" stroke-width=".75"/>
</defs>
- <use xlink:href="#m2c59509df4" x="52.059" y="117.111" stroke="#000" stroke-width=".75"/>
+ <use xlink:href="#mf5f1bb61bc" x="46.601" y="117.111" stroke="#000" stroke-width=".75"/>
</g>
- <g transform="matrix(.07 0 0 -.07 46.67 129.43)" id="text_1">
+ <g transform="matrix(.07 0 0 -.07 41.001 129.43)" id="text_1">
<defs>
<path id="DejaVuSans-30" d="M2034 4250q-487 0-733-480-245-479-245-1442 0-959 245-1439 246-480 733-480 491 0 736 480 246 480 246 1439 0 963-246 1442-245 480-736 480zm0 500q785 0 1199-621 414-620 414-1801 0-1178-414-1799Q2819-91 2034-91q-784 0-1198 620-414 621-414 1799 0 1181 414 1801 414 621 1198 621z" transform="scale(.01563)"/>
<path id="DejaVuSans-2e" d="M684 794h660V0H684v794z" transform="scale(.01563)"/>
- <path id="DejaVuSans-32" d="M1228 531h2203V0H469v531q359 372 979 998 621 627 780 809 303 340 423 576 121 236 121 464 0 372-261 606-261 235-680 235-297 0-627-103-329-103-704-313v638q381 153 712 231 332 78 607 78 725 0 1156-363 431-362 431-968 0-288-108-546-107-257-392-607-78-91-497-524-418-433-1181-1211z" transform="scale(.01563)"/>
+ <path id="DejaVuSans-35" d="M691 4666h2478v-532H1269V2991q137 47 274 70 138 23 276 23 781 0 1237-428 457-428 457-1159 0-753-469-1171Q2575-91 1722-91q-294 0-599 50Q819 9 494 109v635q281-153 581-228t634-75q541 0 856 284 316 284 316 772 0 487-316 771-315 285-856 285-253 0-505-56-251-56-513-175v2344z" transform="scale(.01563)"/>
</defs>
<use xlink:href="#DejaVuSans-30" transform="translate(0 .781)"/>
<use xlink:href="#DejaVuSans-2e" transform="translate(63.623 .781)"/>
- <use xlink:href="#DejaVuSans-32" transform="translate(89.91 .781)"/>
+ <use xlink:href="#DejaVuSans-35" transform="translate(95.41 .781)"/>
</g>
</g>
<g id="xtick_2">
- <path d="M80.755 117.11V17.32" clip-path="url(#p10c715e517)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_3"/>
- <use xlink:href="#m2c59509df4" x="80.755" y="117.111" stroke="#000" stroke-width=".75" id="line2d_4"/>
- <g transform="matrix(.07 0 0 -.07 75.155 129.43)" id="text_2">
+ <path d="M72.427 117.11V17.32" clip-path="url(#p693c8de2e3)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_3"/>
+ <use xlink:href="#mf5f1bb61bc" x="72.427" y="117.111" stroke="#000" stroke-width=".75" id="line2d_4"/>
+ <g transform="matrix(.07 0 0 -.07 66.827 129.43)" id="text_2">
<defs>
- <path id="DejaVuSans-34" d="M2419 4116L825 1625h1594v2491zm-166 550h794V1625h666v-525h-666V0h-628v1100H313v609l1940 2957z" transform="scale(.01563)"/>
+ <path id="DejaVuSans-31" d="M794 531h1031v3560L703 3866v575l1116 225h631V531h1031V0H794v531z" transform="scale(.01563)"/>
</defs>
- <use xlink:href="#DejaVuSans-30" transform="translate(0 .781)"/>
+ <use xlink:href="#DejaVuSans-31" transform="translate(0 .781)"/>
<use xlink:href="#DejaVuSans-2e" transform="translate(63.623 .781)"/>
- <use xlink:href="#DejaVuSans-34" transform="translate(95.41 .781)"/>
+ <use xlink:href="#DejaVuSans-30" transform="translate(95.41 .781)"/>
</g>
</g>
<g id="xtick_3">
- <path d="M109.45 117.11V17.32" clip-path="url(#p10c715e517)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_5"/>
- <use xlink:href="#m2c59509df4" x="109.45" y="117.111" stroke="#000" stroke-width=".75" id="line2d_6"/>
- <g transform="matrix(.07 0 0 -.07 103.85 129.43)" id="text_3">
- <defs>
- <path id="DejaVuSans-36" d="M2113 2584q-425 0-674-291-248-290-248-796 0-503 248-796 249-292 674-292t673 292q248 293 248 796 0 506-248 796-248 291-673 291zm1253 1979v-575q-238 112-480 171-242 60-480 60-625 0-955-422-329-422-376-1275 184 272 462 417 279 145 613 145 703 0 1111-427 408-426 408-1160 0-719-425-1154Q2819-91 2113-91q-810 0-1238 620-428 621-428 1799 0 1106 525 1764t1409 658q238 0 480-47t505-140z" transform="scale(.01563)"/>
- </defs>
- <use xlink:href="#DejaVuSans-30" transform="translate(0 .781)"/>
- <use xlink:href="#DejaVuSans-2e" transform="translate(63.623 .781)"/>
- <use xlink:href="#DejaVuSans-36" transform="translate(95.41 .781)"/>
+ <path d="M98.253 117.11V17.32" clip-path="url(#p693c8de2e3)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_5"/>
+ <use xlink:href="#mf5f1bb61bc" x="98.253" y="117.111" stroke="#000" stroke-width=".75" id="line2d_6"/>
+ <g transform="matrix(.07 0 0 -.07 92.653 129.43)" id="text_3">
+ <use xlink:href="#DejaVuSans-31" transform="translate(0 .094)"/>
+ <use xlink:href="#DejaVuSans-2e" transform="translate(63.623 .094)"/>
+ <use xlink:href="#DejaVuSans-35" transform="translate(95.41 .094)"/>
</g>
</g>
<g id="xtick_4">
- <path d="M138.146 117.11V17.32" clip-path="url(#p10c715e517)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_7"/>
- <use xlink:href="#m2c59509df4" x="138.146" y="117.111" stroke="#000" stroke-width=".75" id="line2d_8"/>
- <g transform="matrix(.07 0 0 -.07 132.651 129.43)" id="text_4">
+ <path d="M124.08 117.11V17.32" clip-path="url(#p693c8de2e3)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_7"/>
+ <use xlink:href="#mf5f1bb61bc" x="124.08" y="117.111" stroke="#000" stroke-width=".75" id="line2d_8"/>
+ <g transform="matrix(.07 0 0 -.07 118.48 129.43)" id="text_4">
<defs>
- <path id="DejaVuSans-38" d="M2034 2216q-450 0-708-241-257-241-257-662 0-422 257-663 258-241 708-241t709 242q260 243 260 662 0 421-258 662-257 241-711 241zm-631 268q-406 100-633 378-226 279-226 679 0 559 398 884 399 325 1092 325 697 0 1094-325t397-884q0-400-227-679-226-278-629-378 456-106 710-416 255-309 255-755 0-679-414-1042Q2806-91 2034-91q-771 0-1186 362-414 363-414 1042 0 446 256 755 257 310 713 416zm-231 997q0-362 226-565 227-203 636-203 407 0 636 203 230 203 230 565 0 363-230 566-229 203-636 203-409 0-636-203-226-203-226-566z" transform="scale(.01563)"/>
+ <path id="DejaVuSans-32" d="M1228 531h2203V0H469v531q359 372 979 998 621 627 780 809 303 340 423 576 121 236 121 464 0 372-261 606-261 235-680 235-297 0-627-103-329-103-704-313v638q381 153 712 231 332 78 607 78 725 0 1156-363 431-362 431-968 0-288-108-546-107-257-392-607-78-91-497-524-418-433-1181-1211z" transform="scale(.01563)"/>
</defs>
- <use xlink:href="#DejaVuSans-30" transform="translate(0 .781)"/>
+ <use xlink:href="#DejaVuSans-32" transform="translate(0 .781)"/>
<use xlink:href="#DejaVuSans-2e" transform="translate(63.623 .781)"/>
- <use xlink:href="#DejaVuSans-38" transform="translate(92.785 .781)"/>
+ <use xlink:href="#DejaVuSans-30" transform="translate(95.41 .781)"/>
</g>
</g>
<g id="xtick_5">
- <path d="M166.842 117.11V17.32" clip-path="url(#p10c715e517)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_9"/>
- <use xlink:href="#m2c59509df4" x="166.842" y="117.111" stroke="#000" stroke-width=".75" id="line2d_10"/>
- <g transform="matrix(.07 0 0 -.07 161.242 129.43)" id="text_5">
+ <path d="M149.906 117.11V17.32" clip-path="url(#p693c8de2e3)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_9"/>
+ <use xlink:href="#mf5f1bb61bc" x="149.906" y="117.111" stroke="#000" stroke-width=".75" id="line2d_10"/>
+ <g transform="matrix(.07 0 0 -.07 144.306 129.43)" id="text_5">
+ <use xlink:href="#DejaVuSans-32" transform="translate(0 .781)"/>
+ <use xlink:href="#DejaVuSans-2e" transform="translate(63.623 .781)"/>
+ <use xlink:href="#DejaVuSans-35" transform="translate(95.41 .781)"/>
+ </g>
+ </g>
+ <g id="xtick_6">
+ <path d="M175.732 117.11V17.32" clip-path="url(#p693c8de2e3)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_11"/>
+ <use xlink:href="#mf5f1bb61bc" x="175.732" y="117.111" stroke="#000" stroke-width=".75" id="line2d_12"/>
+ <g transform="matrix(.07 0 0 -.07 170.132 129.43)" id="text_6">
<defs>
- <path id="DejaVuSans-31" d="M794 531h1031v3560L703 3866v575l1116 225h631V531h1031V0H794v531z" transform="scale(.01563)"/>
+ <path id="DejaVuSans-33" d="M2597 2516q453-97 707-404 255-306 255-756 0-690-475-1069Q2609-91 1734-91q-293 0-604 58T488 141v609q262-153 574-231 313-78 654-78 593 0 904 234t311 681q0 413-289 645-289 233-804 233h-544v519h569q465 0 712 186t247 536q0 359-255 551-254 193-729 193-260 0-557-57-297-56-653-174v562q360 100 674 150t592 50q719 0 1137-327 419-326 419-882 0-388-222-655t-631-370z" transform="scale(.01563)"/>
</defs>
- <use xlink:href="#DejaVuSans-31" transform="translate(0 .781)"/>
+ <use xlink:href="#DejaVuSans-33" transform="translate(0 .781)"/>
<use xlink:href="#DejaVuSans-2e" transform="translate(63.623 .781)"/>
<use xlink:href="#DejaVuSans-30" transform="translate(95.41 .781)"/>
</g>
</g>
- <g transform="matrix(.07 0 0 -.07 82.036 140.204)" id="text_6">
+ <g transform="matrix(.07 0 0 -.07 90.926 140.204)" id="text_7">
<defs>
<path id="DejaVuSans-53" d="M3425 4513v-616q-359 172-678 256-319 85-616 85-515 0-795-200t-280-569q0-310 186-468 186-157 705-254l381-78q706-135 1042-474t336-907q0-679-455-1029Q2797-91 1919-91q-331 0-705 75-373 75-773 222v650q384-215 753-325 369-109 725-109 540 0 834 212 294 213 294 607 0 343-211 537t-692 291l-385 75q-706 140-1022 440-315 300-315 835 0 619 436 975t1201 356q329 0 669-60 341-59 697-177z" transform="scale(.01563)"/>
<path id="DejaVuSans-74" d="M1172 4494v-994h1184v-447H1172V1153q0-428 117-550t477-122h590V0h-590q-666 0-919 248-253 249-253 905v1900H172v447h422v994h578z" transform="scale(.01563)"/>
@@ -97,61 +103,68 @@
<use xlink:href="#DejaVuSans-74" x="487.012"/>
<use xlink:href="#DejaVuSans-73" x="526.221"/>
</g>
- <g transform="matrix(.07 0 0 -.07 155.098 139.204)" id="text_7">
+ <g transform="matrix(.07 0 0 -.07 163.988 139.204)" id="text_8">
<defs>
<path id="DejaVuSans-d7" d="M4488 3438L3059 2003 4488 575l-372-378-1435 1434L1247 197 878 575l1425 1428L878 3438l369 378 1434-1435 1435 1435 372-378z" transform="scale(.01563)"/>
- <path id="DejaVuSans-37" d="M525 4666h3000v-269L1831 0h-659l1594 4134H525v532z" transform="scale(.01563)"/>
+ <path id="DejaVuSans-36" d="M2113 2584q-425 0-674-291-248-290-248-796 0-503 248-796 249-292 674-292t673 292q248 293 248 796 0 506-248 796-248 291-673 291zm1253 1979v-575q-238 112-480 171-242 60-480 60-625 0-955-422-329-422-376-1275 184 272 462 417 279 145 613 145 703 0 1111-427 408-426 408-1160 0-719-425-1154Q2819-91 2113-91q-810 0-1238 620-428 621-428 1799 0 1106 525 1764t1409 658q238 0 480-47t505-140z" transform="scale(.01563)"/>
</defs>
- <use xlink:href="#DejaVuSans-d7" transform="translate(0 .684)"/>
- <use xlink:href="#DejaVuSans-31" transform="translate(83.79 .684)"/>
- <use xlink:href="#DejaVuSans-30" transform="translate(147.412 .684)"/>
- <use xlink:href="#DejaVuSans-37" transform="matrix(.7 0 0 .7 211.992 38.966)"/>
+ <use xlink:href="#DejaVuSans-d7" transform="translate(0 .766)"/>
+ <use xlink:href="#DejaVuSans-31" transform="translate(83.79 .766)"/>
+ <use xlink:href="#DejaVuSans-30" transform="translate(147.412 .766)"/>
+ <use xlink:href="#DejaVuSans-36" transform="matrix(.7 0 0 .7 211.992 39.047)"/>
</g>
</g>
<g id="matplotlib.axis_2">
<g id="ytick_1">
- <path d="M31.255 112.602h142.043" clip-path="url(#p10c715e517)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_11"/>
- <g id="line2d_12">
+ <path d="M40.145 117.11h142.043" clip-path="url(#p693c8de2e3)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_13"/>
+ <g id="line2d_14">
<defs>
- <path id="m8dbbf5985f" d="M0 0h-3.5" stroke="#000" stroke-width=".75"/>
+ <path id="m1a67c07686" d="M0 0h-3.5" stroke="#000" stroke-width=".75"/>
</defs>
- <use xlink:href="#m8dbbf5985f" x="31.255" y="112.602" stroke="#000" stroke-width=".75"/>
+ <use xlink:href="#m1a67c07686" x="40.145" y="117.111" stroke="#000" stroke-width=".75"/>
</g>
- <use xlink:href="#DejaVuSans-30" transform="matrix(.07 0 0 -.07 19.775 115.207)" id="text_8"/>
+ <use xlink:href="#DejaVuSans-30" transform="matrix(.07 0 0 -.07 28.665 119.716)" id="text_9"/>
</g>
<g id="ytick_2">
- <path d="M31.255 93.554h142.043" clip-path="url(#p10c715e517)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_13"/>
- <use xlink:href="#m8dbbf5985f" x="31.255" y="93.554" stroke="#000" stroke-width=".75" id="line2d_14"/>
- <use xlink:href="#DejaVuSans-31" transform="matrix(.07 0 0 -.07 19.775 96.207)" id="text_9"/>
+ <path d="M40.145 93.455h142.043" clip-path="url(#p693c8de2e3)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_15"/>
+ <use xlink:href="#m1a67c07686" x="40.145" y="93.455" stroke="#000" stroke-width=".75" id="line2d_16"/>
+ <g transform="matrix(.07 0 0 -.07 19.775 96.114)" id="text_10">
+ <use xlink:href="#DejaVuSans-32" transform="translate(0 .781)"/>
+ <use xlink:href="#DejaVuSans-30" transform="translate(63.623 .781)"/>
+ <use xlink:href="#DejaVuSans-30" transform="translate(127.246 .781)"/>
+ </g>
</g>
<g id="ytick_3">
- <path d="M31.255 74.506h142.043" clip-path="url(#p10c715e517)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_15"/>
- <use xlink:href="#m8dbbf5985f" x="31.255" y="74.506" stroke="#000" stroke-width=".75" id="line2d_16"/>
- <use xlink:href="#DejaVuSans-32" transform="matrix(.07 0 0 -.07 19.775 77.111)" id="text_10"/>
- </g>
- <g id="ytick_4">
- <path d="M31.255 55.459h142.043" clip-path="url(#p10c715e517)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_17"/>
- <use xlink:href="#m8dbbf5985f" x="31.255" y="55.459" stroke="#000" stroke-width=".75" id="line2d_18"/>
- <g transform="matrix(.07 0 0 -.07 19.775 58.118)" id="text_11">
+ <path d="M40.145 69.799h142.043" clip-path="url(#p693c8de2e3)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_17"/>
+ <use xlink:href="#m1a67c07686" x="40.145" y="69.799" stroke="#000" stroke-width=".75" id="line2d_18"/>
+ <g transform="matrix(.07 0 0 -.07 19.775 72.458)" id="text_11">
<defs>
- <path id="DejaVuSans-33" d="M2597 2516q453-97 707-404 255-306 255-756 0-690-475-1069Q2609-91 1734-91q-293 0-604 58T488 141v609q262-153 574-231 313-78 654-78 593 0 904 234t311 681q0 413-289 645-289 233-804 233h-544v519h569q465 0 712 186t247 536q0 359-255 551-254 193-729 193-260 0-557-57-297-56-653-174v562q360 100 674 150t592 50q719 0 1137-327 419-326 419-882 0-388-222-655t-631-370z" transform="scale(.01563)"/>
+ <path id="DejaVuSans-34" d="M2419 4116L825 1625h1594v2491zm-166 550h794V1625h666v-525h-666V0h-628v1100H313v609l1940 2957z" transform="scale(.01563)"/>
</defs>
- <use xlink:href="#DejaVuSans-33" transform="translate(0 .781)"/>
+ <use xlink:href="#DejaVuSans-34" transform="translate(0 .781)"/>
+ <use xlink:href="#DejaVuSans-30" transform="translate(63.623 .781)"/>
+ <use xlink:href="#DejaVuSans-30" transform="translate(127.246 .781)"/>
</g>
</g>
- <g id="ytick_5">
- <path d="M31.255 36.41h142.043" clip-path="url(#p10c715e517)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_19"/>
- <use xlink:href="#m8dbbf5985f" x="31.255" y="36.411" stroke="#000" stroke-width=".75" id="line2d_20"/>
- <use xlink:href="#DejaVuSans-34" transform="matrix(.07 0 0 -.07 19.775 39.064)" id="text_12"/>
+ <g id="ytick_4">
+ <path d="M40.145 46.143h142.043" clip-path="url(#p693c8de2e3)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_19"/>
+ <use xlink:href="#m1a67c07686" x="40.145" y="46.143" stroke="#000" stroke-width=".75" id="line2d_20"/>
+ <g transform="matrix(.07 0 0 -.07 19.775 48.802)" id="text_12">
+ <use xlink:href="#DejaVuSans-36" transform="translate(0 .781)"/>
+ <use xlink:href="#DejaVuSans-30" transform="translate(63.623 .781)"/>
+ <use xlink:href="#DejaVuSans-30" transform="translate(127.246 .781)"/>
+ </g>
</g>
- <g id="ytick_6">
- <path d="M31.255 17.363h142.043" clip-path="url(#p10c715e517)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_21"/>
- <use xlink:href="#m8dbbf5985f" x="31.255" y="17.363" stroke="#000" stroke-width=".75" id="line2d_22"/>
- <g transform="matrix(.07 0 0 -.07 19.775 20.023)" id="text_13">
+ <g id="ytick_5">
+ <path d="M40.145 22.487h142.043" clip-path="url(#p693c8de2e3)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_21"/>
+ <use xlink:href="#m1a67c07686" x="40.145" y="22.487" stroke="#000" stroke-width=".75" id="line2d_22"/>
+ <g transform="matrix(.07 0 0 -.07 19.775 25.146)" id="text_13">
<defs>
- <path id="DejaVuSans-35" d="M691 4666h2478v-532H1269V2991q137 47 274 70 138 23 276 23 781 0 1237-428 457-428 457-1159 0-753-469-1171Q2575-91 1722-91q-294 0-599 50Q819 9 494 109v635q281-153 581-228t634-75q541 0 856 284 316 284 316 772 0 487-316 771-315 285-856 285-253 0-505-56-251-56-513-175v2344z" transform="scale(.01563)"/>
+ <path id="DejaVuSans-38" d="M2034 2216q-450 0-708-241-257-241-257-662 0-422 257-663 258-241 708-241t709 242q260 243 260 662 0 421-258 662-257 241-711 241zm-631 268q-406 100-633 378-226 279-226 679 0 559 398 884 399 325 1092 325 697 0 1094-325t397-884q0-400-227-679-226-278-629-378 456-106 710-416 255-309 255-755 0-679-414-1042Q2806-91 2034-91q-771 0-1186 362-414 363-414 1042 0 446 256 755 257 310 713 416zm-231 997q0-362 226-565 227-203 636-203 407 0 636 203 230 203 230 565 0 363-230 566-229 203-636 203-409 0-636-203-226-203-226-566z" transform="scale(.01563)"/>
</defs>
- <use xlink:href="#DejaVuSans-35" transform="translate(0 .094)"/>
+ <use xlink:href="#DejaVuSans-38" transform="translate(0 .781)"/>
+ <use xlink:href="#DejaVuSans-30" transform="translate(63.623 .781)"/>
+ <use xlink:href="#DejaVuSans-30" transform="translate(127.246 .781)"/>
</g>
</g>
<g transform="matrix(0 -.07 -.07 0 14.319 77.037)" id="text_14">
@@ -165,81 +178,66 @@
<use xlink:href="#DejaVuSans-65" x="166.992"/>
<use xlink:href="#DejaVuSans-73" x="228.516"/>
</g>
- <g transform="matrix(.07 0 0 -.07 31.255 14.319)" id="text_15">
- <defs>
- <path id="DejaVuSans-39" d="M703 97v575q238-113 481-172 244-59 479-59 625 0 954 420 330 420 377 1277-181-269-460-413-278-144-615-144-700 0-1108 423-408 424-408 1159 0 718 425 1152 425 435 1131 435 810 0 1236-621 427-620 427-1801 0-1103-524-1761Q2575-91 1691-91q-238 0-482 47Q966 3 703 97zm1256 1978q425 0 673 290 249 291 249 798 0 503-249 795-248 292-673 292t-673-292q-248-292-248-795 0-507 248-798 248-290 673-290z" transform="scale(.01563)"/>
- </defs>
+ <g transform="matrix(.07 0 0 -.07 40.145 14.319)" id="text_15">
<use xlink:href="#DejaVuSans-d7" transform="translate(0 .766)"/>
<use xlink:href="#DejaVuSans-31" transform="translate(83.79 .766)"/>
<use xlink:href="#DejaVuSans-30" transform="translate(147.412 .766)"/>
- <use xlink:href="#DejaVuSans-39" transform="matrix(.7 0 0 .7 211.992 39.047)"/>
+ <use xlink:href="#DejaVuSans-36" transform="matrix(.7 0 0 .7 211.992 39.047)"/>
</g>
</g>
<g id="line2d_23">
- <path d="M37.711 112.57l14.348.003 14.348.002 14.348-.003h28.695l14.348-.001 14.348.002h14.348l14.348-.003" clip-path="url(#p10c715e517)" fill="none" stroke="#1f77b4" stroke-linecap="square"/>
+ <path d="M46.601 116.9l25.826-.022 25.826.022 25.827-.023 25.826.019 25.826-.019" clip-path="url(#p693c8de2e3)" fill="none" stroke="#1f77b4" stroke-linecap="square"/>
<defs>
- <path id="me569cba688" d="M0 1.5a1.5 1.5 0 100-3 1.5 1.5 0 000 3z" stroke="#1f77b4"/>
+ <path id="m00c9f72e7c" d="M0 1.5a1.5 1.5 0 100-3 1.5 1.5 0 000 3z" stroke="#1f77b4"/>
</defs>
- <g clip-path="url(#p10c715e517)" fill="#1f77b4" stroke="#1f77b4">
- <use xlink:href="#me569cba688" x="37.711" y="112.571"/>
- <use xlink:href="#me569cba688" x="52.059" y="112.573"/>
- <use xlink:href="#me569cba688" x="66.407" y="112.575"/>
- <use xlink:href="#me569cba688" x="80.755" y="112.572"/>
- <use xlink:href="#me569cba688" x="95.103" y="112.572"/>
- <use xlink:href="#me569cba688" x="109.45" y="112.572"/>
- <use xlink:href="#me569cba688" x="123.798" y="112.571"/>
- <use xlink:href="#me569cba688" x="138.146" y="112.573"/>
- <use xlink:href="#me569cba688" x="152.494" y="112.573"/>
- <use xlink:href="#me569cba688" x="166.842" y="112.57"/>
+ <g clip-path="url(#p693c8de2e3)" fill="#1f77b4" stroke="#1f77b4">
+ <use xlink:href="#m00c9f72e7c" x="46.601" y="116.9"/>
+ <use xlink:href="#m00c9f72e7c" x="72.427" y="116.878"/>
+ <use xlink:href="#m00c9f72e7c" x="98.253" y="116.9"/>
+ <use xlink:href="#m00c9f72e7c" x="124.08" y="116.877"/>
+ <use xlink:href="#m00c9f72e7c" x="149.906" y="116.896"/>
+ <use xlink:href="#m00c9f72e7c" x="175.732" y="116.877"/>
</g>
</g>
<g id="line2d_24">
- <path d="M37.711 103.216l14.348-9.138 14.348-9.103 14.348-9.065 14.348-9.091 14.347-9.034 14.348-9.015 14.348-8.959 14.348-9.006 14.348-8.95" clip-path="url(#p10c715e517)" fill="none" stroke-dasharray="2,.75" stroke="#ff7f0e"/>
+ <path d="M46.601 100.297l25.826-15.285 25.826-15.16 25.827-15.029 25.826-15.026 25.826-14.855" clip-path="url(#p693c8de2e3)" fill="none" stroke-dasharray="2,.75" stroke="#ff7f0e"/>
<defs>
- <path id="ma7ee05176d" d="M-1.5 1.5h3v-3h-3z" stroke="#ff7f0e" stroke-linejoin="miter"/>
+ <path id="m948d9e2144" d="M-1.5 1.5h3v-3h-3z" stroke="#ff7f0e" stroke-linejoin="miter"/>
</defs>
- <g clip-path="url(#p10c715e517)" fill="#ff7f0e" stroke="#ff7f0e">
- <use xlink:href="#ma7ee05176d" x="37.711" y="103.216"/>
- <use xlink:href="#ma7ee05176d" x="52.059" y="94.078"/>
- <use xlink:href="#ma7ee05176d" x="66.407" y="84.975"/>
- <use xlink:href="#ma7ee05176d" x="80.755" y="75.91"/>
- <use xlink:href="#ma7ee05176d" x="95.103" y="66.819"/>
- <use xlink:href="#ma7ee05176d" x="109.45" y="57.785"/>
- <use xlink:href="#ma7ee05176d" x="123.798" y="48.77"/>
- <use xlink:href="#ma7ee05176d" x="138.146" y="39.811"/>
- <use xlink:href="#ma7ee05176d" x="152.494" y="30.805"/>
- <use xlink:href="#ma7ee05176d" x="166.842" y="21.855"/>
+ <g clip-path="url(#p693c8de2e3)" fill="#ff7f0e" stroke="#ff7f0e">
+ <use xlink:href="#m948d9e2144" x="46.601" y="100.297"/>
+ <use xlink:href="#m948d9e2144" x="72.427" y="85.012"/>
+ <use xlink:href="#m948d9e2144" x="98.253" y="69.853"/>
+ <use xlink:href="#m948d9e2144" x="124.08" y="54.823"/>
+ <use xlink:href="#m948d9e2144" x="149.906" y="39.797"/>
+ <use xlink:href="#m948d9e2144" x="175.732" y="24.942"/>
</g>
</g>
<g id="line2d_25">
- <path d="M37.711 101.372L52.06 98.31l14.348-2.952 14.348 2.53 14.348-3.355 14.347.01 14.348-.179 14.348.132 14.348.016 14.348-.519" clip-path="url(#p10c715e517)" fill="none" stroke-dasharray=".75,.75" stroke="#2ca02c"/>
+ <path d="M46.601 54.37l25.826-8.34 25.826-11.668 25.827-14.61 25.826 2.507 25.826.2" clip-path="url(#p693c8de2e3)" fill="none" stroke-dasharray=".75,.75" stroke="#2ca02c"/>
<defs>
- <path id="m87094ea7c4" d="M0 1.5l1.5-3h-3z" stroke="#2ca02c" stroke-linejoin="miter"/>
+ <path id="m769183cefa" d="M0 1.5l1.5-3h-3z" stroke="#2ca02c" stroke-linejoin="miter"/>
</defs>
- <g clip-path="url(#p10c715e517)" fill="#2ca02c" stroke="#2ca02c">
- <use xlink:href="#m87094ea7c4" x="37.711" y="101.372"/>
- <use xlink:href="#m87094ea7c4" x="52.059" y="98.309"/>
- <use xlink:href="#m87094ea7c4" x="66.407" y="95.357"/>
- <use xlink:href="#m87094ea7c4" x="80.755" y="97.887"/>
- <use xlink:href="#m87094ea7c4" x="95.103" y="94.532"/>
- <use xlink:href="#m87094ea7c4" x="109.45" y="94.542"/>
- <use xlink:href="#m87094ea7c4" x="123.798" y="94.363"/>
- <use xlink:href="#m87094ea7c4" x="138.146" y="94.495"/>
- <use xlink:href="#m87094ea7c4" x="152.494" y="94.511"/>
- <use xlink:href="#m87094ea7c4" x="166.842" y="93.992"/>
+ <g clip-path="url(#p693c8de2e3)" fill="#2ca02c" stroke="#2ca02c">
+ <use xlink:href="#m769183cefa" x="46.601" y="54.37"/>
+ <use xlink:href="#m769183cefa" x="72.427" y="46.031"/>
+ <use xlink:href="#m769183cefa" x="98.253" y="34.362"/>
+ <use xlink:href="#m769183cefa" x="124.08" y="19.753"/>
+ <use xlink:href="#m769183cefa" x="149.906" y="22.259"/>
+ <use xlink:href="#m769183cefa" x="175.732" y="22.46"/>
</g>
</g>
- <path d="M31.255 117.11V17.32" fill="none" stroke="#000" stroke-width=".8" stroke-linecap="square" id="patch_3"/>
- <path d="M173.298 117.11V17.32" fill="none" stroke="#000" stroke-width=".8" stroke-linecap="square" id="patch_4"/>
- <path d="M31.255 117.11h142.043" fill="none" stroke="#000" stroke-width=".8" stroke-linecap="square" id="patch_5"/>
- <path d="M31.255 17.319h142.043" fill="none" stroke="#000" stroke-width=".8" stroke-linecap="square" id="patch_6"/>
+ <path d="M40.145 117.11V17.32" fill="none" stroke="#000" stroke-width=".8" stroke-linecap="square" id="patch_3"/>
+ <path d="M182.188 117.11V17.32" fill="none" stroke="#000" stroke-width=".8" stroke-linecap="square" id="patch_4"/>
+ <path d="M40.145 117.11h142.043" fill="none" stroke="#000" stroke-width=".8" stroke-linecap="square" id="patch_5"/>
+ <path d="M40.145 17.319h142.043" fill="none" stroke="#000" stroke-width=".8" stroke-linecap="square" id="patch_6"/>
<g id="legend_1">
- <path d="M36.155 50.243h45.64q1.4 0 1.4-1.4V22.219q0-1.4-1.4-1.4h-45.64q-1.4 0-1.4 1.4v26.624q0 1.4 1.4 1.4z" fill="#fff" opacity=".8" stroke="#ccc" id="patch_7"/>
+ <path d="M131.648 113.61h45.64q1.4 0 1.4-1.4V85.588q0-1.4-1.4-1.4h-45.64q-1.4 0-1.4 1.4v26.624q0 1.4 1.4 1.4z" fill="#fff" opacity=".8" stroke="#ccc" id="patch_7"/>
<g id="line2d_26">
- <path d="M37.555 26.488h14" fill="none" stroke="#1f77b4" stroke-linecap="square"/>
- <use xlink:href="#me569cba688" x="44.555" y="26.488" fill="#1f77b4" stroke="#1f77b4"/>
+ <path d="M133.048 89.856h14" fill="none" stroke="#1f77b4" stroke-linecap="square"/>
+ <use xlink:href="#m00c9f72e7c" x="140.048" y="89.856" fill="#1f77b4" stroke="#1f77b4"/>
</g>
- <g transform="matrix(.07 0 0 -.07 57.155 28.938)" id="text_16">
+ <g transform="matrix(.07 0 0 -.07 152.648 92.306)" id="text_16">
<defs>
<path id="DejaVuSans-72" d="M2631 2963q-97 56-211 82-114 27-251 27-488 0-749-317t-261-911V0H581v3500h578v-544q182 319 472 473 291 155 707 155 59 0 131-8 72-7 159-23l3-590z" transform="scale(.01563)"/>
<path id="DejaVuSans-64" d="M2906 2969v1894h575V0h-575v525q-181-312-458-464-276-152-664-152-634 0-1033 506-398 507-398 1332t398 1331q399 506 1033 506 388 0 664-152 277-151 458-463zM947 1747q0-634 261-995t717-361q456 0 718 361 263 361 263 995t-263 995q-262 361-718 361t-717-361q-261-361-261-995z" transform="scale(.01563)"/>
@@ -252,10 +250,10 @@
<use xlink:href="#DejaVuSans-69" x="216.463"/>
</g>
<g id="line2d_27">
- <path d="M37.555 35.013h14" fill="none" stroke-dasharray="2,.75" stroke="#ff7f0e"/>
- <use xlink:href="#ma7ee05176d" x="44.555" y="35.013" fill="#ff7f0e" stroke="#ff7f0e"/>
+ <path d="M133.048 98.38h14" fill="none" stroke-dasharray="2,.75" stroke="#ff7f0e"/>
+ <use xlink:href="#m948d9e2144" x="140.048" y="98.38" fill="#ff7f0e" stroke="#ff7f0e"/>
</g>
- <g transform="matrix(.07 0 0 -.07 57.155 37.462)" id="text_17">
+ <g transform="matrix(.07 0 0 -.07 152.648 100.83)" id="text_17">
<defs>
<path id="DejaVuSans-70" d="M1159 525v-1856H581v4831h578v-531q182 312 458 463 277 152 661 152 638 0 1036-506 399-506 399-1331T3314 415Q2916-91 2278-91q-384 0-661 152-276 152-458 464zm1957 1222q0 634-261 995t-717 361q-457 0-718-361t-261-995q0-634 261-995t718-361q456 0 717 361t261 995z" transform="scale(.01563)"/>
</defs>
@@ -267,10 +265,10 @@
<use xlink:href="#DejaVuSans-72" x="290.869"/>
</g>
<g id="line2d_28">
- <path d="M37.555 43.537h14" fill="none" stroke-dasharray=".75,.75" stroke="#2ca02c"/>
- <use xlink:href="#m87094ea7c4" x="44.555" y="43.537" fill="#2ca02c" stroke="#2ca02c"/>
+ <path d="M133.048 106.905h14" fill="none" stroke-dasharray=".75,.75" stroke="#2ca02c"/>
+ <use xlink:href="#m769183cefa" x="140.048" y="106.905" fill="#2ca02c" stroke="#2ca02c"/>
</g>
- <g transform="matrix(.07 0 0 -.07 57.155 45.987)" id="text_18">
+ <g transform="matrix(.07 0 0 -.07 152.648 109.355)" id="text_18">
<defs>
<path id="DejaVuSans-6f" d="M1959 3097q-462 0-731-361t-269-989q0-628 267-989 268-361 733-361 460 0 728 362 269 363 269 988 0 622-269 986-268 364-728 364zm0 487q750 0 1178-488 429-487 429-1349 0-859-429-1349Q2709-91 1959-91q-753 0-1180 489-426 490-426 1349 0 862 426 1349 427 488 1180 488z" transform="scale(.01563)"/>
</defs>
@@ -283,8 +281,8 @@
</g>
</g>
<defs>
- <clipPath id="p10c715e517">
- <path d="M31.255 17.319h142.044v99.792H31.255z"/>
+ <clipPath id="p693c8de2e3">
+ <path d="M40.145 17.319h142.044v99.792H40.145z"/>
</clipPath>
</defs>
</svg>
diff --git a/doc/serdi-throughput.svg b/doc/serdi-throughput.svg
index 33654985..e32c3355 100644
--- a/doc/serdi-throughput.svg
+++ b/doc/serdi-throughput.svg
@@ -1,82 +1,88 @@
-<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="243.064" height="200.88" viewBox="0 0 182.298 150.66" xmlns="http://www.w3.org/2000/svg">
+<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="254.918" height="200.88" viewBox="0 0 191.188 150.66" xmlns="http://www.w3.org/2000/svg">
<defs>
<style>
*{stroke-linejoin:round;stroke-linecap:butt}
</style>
</defs>
<g id="figure_1">
- <path d="M0 150.66h182.298V0H0z" fill="#fff" id="patch_1"/>
+ <path d="M0 150.66h191.188V0H0z" fill="#fff" id="patch_1"/>
<g id="axes_1">
- <path d="M31.255 117.11h142.043V17.32H31.255z" fill="#fff" id="patch_2"/>
+ <path d="M40.145 117.11h142.043V17.32H40.145z" fill="#fff" id="patch_2"/>
<g id="matplotlib.axis_1">
<g id="xtick_1">
- <path d="M52.06 117.11V17.32" clip-path="url(#p881b2e6b17)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_1"/>
+ <path d="M46.601 117.11V17.32" clip-path="url(#p7ddd47be6d)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_1"/>
<g id="line2d_2">
<defs>
- <path id="m7e832739e1" d="M0 0v3.5" stroke="#000" stroke-width=".75"/>
+ <path id="m04c57fa67f" d="M0 0v3.5" stroke="#000" stroke-width=".75"/>
</defs>
- <use xlink:href="#m7e832739e1" x="52.059" y="117.111" stroke="#000" stroke-width=".75"/>
+ <use xlink:href="#m04c57fa67f" x="46.601" y="117.111" stroke="#000" stroke-width=".75"/>
</g>
- <g transform="matrix(.07 0 0 -.07 46.67 129.43)" id="text_1">
+ <g transform="matrix(.07 0 0 -.07 41.001 129.43)" id="text_1">
<defs>
<path id="DejaVuSans-30" d="M2034 4250q-487 0-733-480-245-479-245-1442 0-959 245-1439 246-480 733-480 491 0 736 480 246 480 246 1439 0 963-246 1442-245 480-736 480zm0 500q785 0 1199-621 414-620 414-1801 0-1178-414-1799Q2819-91 2034-91q-784 0-1198 620-414 621-414 1799 0 1181 414 1801 414 621 1198 621z" transform="scale(.01563)"/>
<path id="DejaVuSans-2e" d="M684 794h660V0H684v794z" transform="scale(.01563)"/>
- <path id="DejaVuSans-32" d="M1228 531h2203V0H469v531q359 372 979 998 621 627 780 809 303 340 423 576 121 236 121 464 0 372-261 606-261 235-680 235-297 0-627-103-329-103-704-313v638q381 153 712 231 332 78 607 78 725 0 1156-363 431-362 431-968 0-288-108-546-107-257-392-607-78-91-497-524-418-433-1181-1211z" transform="scale(.01563)"/>
+ <path id="DejaVuSans-35" d="M691 4666h2478v-532H1269V2991q137 47 274 70 138 23 276 23 781 0 1237-428 457-428 457-1159 0-753-469-1171Q2575-91 1722-91q-294 0-599 50Q819 9 494 109v635q281-153 581-228t634-75q541 0 856 284 316 284 316 772 0 487-316 771-315 285-856 285-253 0-505-56-251-56-513-175v2344z" transform="scale(.01563)"/>
</defs>
<use xlink:href="#DejaVuSans-30" transform="translate(0 .781)"/>
<use xlink:href="#DejaVuSans-2e" transform="translate(63.623 .781)"/>
- <use xlink:href="#DejaVuSans-32" transform="translate(89.91 .781)"/>
+ <use xlink:href="#DejaVuSans-35" transform="translate(95.41 .781)"/>
</g>
</g>
<g id="xtick_2">
- <path d="M80.755 117.11V17.32" clip-path="url(#p881b2e6b17)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_3"/>
- <use xlink:href="#m7e832739e1" x="80.755" y="117.111" stroke="#000" stroke-width=".75" id="line2d_4"/>
- <g transform="matrix(.07 0 0 -.07 75.155 129.43)" id="text_2">
+ <path d="M72.427 117.11V17.32" clip-path="url(#p7ddd47be6d)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_3"/>
+ <use xlink:href="#m04c57fa67f" x="72.427" y="117.111" stroke="#000" stroke-width=".75" id="line2d_4"/>
+ <g transform="matrix(.07 0 0 -.07 66.827 129.43)" id="text_2">
<defs>
- <path id="DejaVuSans-34" d="M2419 4116L825 1625h1594v2491zm-166 550h794V1625h666v-525h-666V0h-628v1100H313v609l1940 2957z" transform="scale(.01563)"/>
+ <path id="DejaVuSans-31" d="M794 531h1031v3560L703 3866v575l1116 225h631V531h1031V0H794v531z" transform="scale(.01563)"/>
</defs>
- <use xlink:href="#DejaVuSans-30" transform="translate(0 .781)"/>
+ <use xlink:href="#DejaVuSans-31" transform="translate(0 .781)"/>
<use xlink:href="#DejaVuSans-2e" transform="translate(63.623 .781)"/>
- <use xlink:href="#DejaVuSans-34" transform="translate(95.41 .781)"/>
+ <use xlink:href="#DejaVuSans-30" transform="translate(95.41 .781)"/>
</g>
</g>
<g id="xtick_3">
- <path d="M109.45 117.11V17.32" clip-path="url(#p881b2e6b17)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_5"/>
- <use xlink:href="#m7e832739e1" x="109.45" y="117.111" stroke="#000" stroke-width=".75" id="line2d_6"/>
- <g transform="matrix(.07 0 0 -.07 103.85 129.43)" id="text_3">
- <defs>
- <path id="DejaVuSans-36" d="M2113 2584q-425 0-674-291-248-290-248-796 0-503 248-796 249-292 674-292t673 292q248 293 248 796 0 506-248 796-248 291-673 291zm1253 1979v-575q-238 112-480 171-242 60-480 60-625 0-955-422-329-422-376-1275 184 272 462 417 279 145 613 145 703 0 1111-427 408-426 408-1160 0-719-425-1154Q2819-91 2113-91q-810 0-1238 620-428 621-428 1799 0 1106 525 1764t1409 658q238 0 480-47t505-140z" transform="scale(.01563)"/>
- </defs>
- <use xlink:href="#DejaVuSans-30" transform="translate(0 .781)"/>
- <use xlink:href="#DejaVuSans-2e" transform="translate(63.623 .781)"/>
- <use xlink:href="#DejaVuSans-36" transform="translate(95.41 .781)"/>
+ <path d="M98.253 117.11V17.32" clip-path="url(#p7ddd47be6d)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_5"/>
+ <use xlink:href="#m04c57fa67f" x="98.253" y="117.111" stroke="#000" stroke-width=".75" id="line2d_6"/>
+ <g transform="matrix(.07 0 0 -.07 92.653 129.43)" id="text_3">
+ <use xlink:href="#DejaVuSans-31" transform="translate(0 .094)"/>
+ <use xlink:href="#DejaVuSans-2e" transform="translate(63.623 .094)"/>
+ <use xlink:href="#DejaVuSans-35" transform="translate(95.41 .094)"/>
</g>
</g>
<g id="xtick_4">
- <path d="M138.146 117.11V17.32" clip-path="url(#p881b2e6b17)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_7"/>
- <use xlink:href="#m7e832739e1" x="138.146" y="117.111" stroke="#000" stroke-width=".75" id="line2d_8"/>
- <g transform="matrix(.07 0 0 -.07 132.651 129.43)" id="text_4">
+ <path d="M124.08 117.11V17.32" clip-path="url(#p7ddd47be6d)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_7"/>
+ <use xlink:href="#m04c57fa67f" x="124.08" y="117.111" stroke="#000" stroke-width=".75" id="line2d_8"/>
+ <g transform="matrix(.07 0 0 -.07 118.48 129.43)" id="text_4">
<defs>
- <path id="DejaVuSans-38" d="M2034 2216q-450 0-708-241-257-241-257-662 0-422 257-663 258-241 708-241t709 242q260 243 260 662 0 421-258 662-257 241-711 241zm-631 268q-406 100-633 378-226 279-226 679 0 559 398 884 399 325 1092 325 697 0 1094-325t397-884q0-400-227-679-226-278-629-378 456-106 710-416 255-309 255-755 0-679-414-1042Q2806-91 2034-91q-771 0-1186 362-414 363-414 1042 0 446 256 755 257 310 713 416zm-231 997q0-362 226-565 227-203 636-203 407 0 636 203 230 203 230 565 0 363-230 566-229 203-636 203-409 0-636-203-226-203-226-566z" transform="scale(.01563)"/>
+ <path id="DejaVuSans-32" d="M1228 531h2203V0H469v531q359 372 979 998 621 627 780 809 303 340 423 576 121 236 121 464 0 372-261 606-261 235-680 235-297 0-627-103-329-103-704-313v638q381 153 712 231 332 78 607 78 725 0 1156-363 431-362 431-968 0-288-108-546-107-257-392-607-78-91-497-524-418-433-1181-1211z" transform="scale(.01563)"/>
</defs>
- <use xlink:href="#DejaVuSans-30" transform="translate(0 .781)"/>
+ <use xlink:href="#DejaVuSans-32" transform="translate(0 .781)"/>
<use xlink:href="#DejaVuSans-2e" transform="translate(63.623 .781)"/>
- <use xlink:href="#DejaVuSans-38" transform="translate(92.785 .781)"/>
+ <use xlink:href="#DejaVuSans-30" transform="translate(95.41 .781)"/>
</g>
</g>
<g id="xtick_5">
- <path d="M166.842 117.11V17.32" clip-path="url(#p881b2e6b17)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_9"/>
- <use xlink:href="#m7e832739e1" x="166.842" y="117.111" stroke="#000" stroke-width=".75" id="line2d_10"/>
- <g transform="matrix(.07 0 0 -.07 161.242 129.43)" id="text_5">
+ <path d="M149.906 117.11V17.32" clip-path="url(#p7ddd47be6d)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_9"/>
+ <use xlink:href="#m04c57fa67f" x="149.906" y="117.111" stroke="#000" stroke-width=".75" id="line2d_10"/>
+ <g transform="matrix(.07 0 0 -.07 144.306 129.43)" id="text_5">
+ <use xlink:href="#DejaVuSans-32" transform="translate(0 .781)"/>
+ <use xlink:href="#DejaVuSans-2e" transform="translate(63.623 .781)"/>
+ <use xlink:href="#DejaVuSans-35" transform="translate(95.41 .781)"/>
+ </g>
+ </g>
+ <g id="xtick_6">
+ <path d="M175.732 117.11V17.32" clip-path="url(#p7ddd47be6d)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_11"/>
+ <use xlink:href="#m04c57fa67f" x="175.732" y="117.111" stroke="#000" stroke-width=".75" id="line2d_12"/>
+ <g transform="matrix(.07 0 0 -.07 170.132 129.43)" id="text_6">
<defs>
- <path id="DejaVuSans-31" d="M794 531h1031v3560L703 3866v575l1116 225h631V531h1031V0H794v531z" transform="scale(.01563)"/>
+ <path id="DejaVuSans-33" d="M2597 2516q453-97 707-404 255-306 255-756 0-690-475-1069Q2609-91 1734-91q-293 0-604 58T488 141v609q262-153 574-231 313-78 654-78 593 0 904 234t311 681q0 413-289 645-289 233-804 233h-544v519h569q465 0 712 186t247 536q0 359-255 551-254 193-729 193-260 0-557-57-297-56-653-174v562q360 100 674 150t592 50q719 0 1137-327 419-326 419-882 0-388-222-655t-631-370z" transform="scale(.01563)"/>
</defs>
- <use xlink:href="#DejaVuSans-31" transform="translate(0 .781)"/>
+ <use xlink:href="#DejaVuSans-33" transform="translate(0 .781)"/>
<use xlink:href="#DejaVuSans-2e" transform="translate(63.623 .781)"/>
<use xlink:href="#DejaVuSans-30" transform="translate(95.41 .781)"/>
</g>
</g>
- <g transform="matrix(.07 0 0 -.07 82.036 140.204)" id="text_6">
+ <g transform="matrix(.07 0 0 -.07 90.926 140.204)" id="text_7">
<defs>
<path id="DejaVuSans-53" d="M3425 4513v-616q-359 172-678 256-319 85-616 85-515 0-795-200t-280-569q0-310 186-468 186-157 705-254l381-78q706-135 1042-474t336-907q0-679-455-1029Q2797-91 1919-91q-331 0-705 75-373 75-773 222v650q384-215 753-325 369-109 725-109 540 0 834 212 294 213 294 607 0 343-211 537t-692 291l-385 75q-706 140-1022 440-315 300-315 835 0 619 436 975t1201 356q329 0 669-60 341-59 697-177z" transform="scale(.01563)"/>
<path id="DejaVuSans-74" d="M1172 4494v-994h1184v-447H1172V1153q0-428 117-550t477-122h590V0h-590q-666 0-919 248-253 249-253 905v1900H172v447h422v994h578z" transform="scale(.01563)"/>
@@ -97,44 +103,71 @@
<use xlink:href="#DejaVuSans-74" x="487.012"/>
<use xlink:href="#DejaVuSans-73" x="526.221"/>
</g>
- <g transform="matrix(.07 0 0 -.07 155.098 139.204)" id="text_7">
+ <g transform="matrix(.07 0 0 -.07 163.988 139.204)" id="text_8">
<defs>
<path id="DejaVuSans-d7" d="M4488 3438L3059 2003 4488 575l-372-378-1435 1434L1247 197 878 575l1425 1428L878 3438l369 378 1434-1435 1435 1435 372-378z" transform="scale(.01563)"/>
- <path id="DejaVuSans-37" d="M525 4666h3000v-269L1831 0h-659l1594 4134H525v532z" transform="scale(.01563)"/>
+ <path id="DejaVuSans-36" d="M2113 2584q-425 0-674-291-248-290-248-796 0-503 248-796 249-292 674-292t673 292q248 293 248 796 0 506-248 796-248 291-673 291zm1253 1979v-575q-238 112-480 171-242 60-480 60-625 0-955-422-329-422-376-1275 184 272 462 417 279 145 613 145 703 0 1111-427 408-426 408-1160 0-719-425-1154Q2819-91 2113-91q-810 0-1238 620-428 621-428 1799 0 1106 525 1764t1409 658q238 0 480-47t505-140z" transform="scale(.01563)"/>
</defs>
- <use xlink:href="#DejaVuSans-d7" transform="translate(0 .684)"/>
- <use xlink:href="#DejaVuSans-31" transform="translate(83.79 .684)"/>
- <use xlink:href="#DejaVuSans-30" transform="translate(147.412 .684)"/>
- <use xlink:href="#DejaVuSans-37" transform="matrix(.7 0 0 .7 211.992 38.966)"/>
+ <use xlink:href="#DejaVuSans-d7" transform="translate(0 .766)"/>
+ <use xlink:href="#DejaVuSans-31" transform="translate(83.79 .766)"/>
+ <use xlink:href="#DejaVuSans-30" transform="translate(147.412 .766)"/>
+ <use xlink:href="#DejaVuSans-36" transform="matrix(.7 0 0 .7 211.992 39.047)"/>
</g>
</g>
<g id="matplotlib.axis_2">
<g id="ytick_1">
- <path d="M31.255 99.453h142.043" clip-path="url(#p881b2e6b17)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_11"/>
- <g id="line2d_12">
+ <path d="M40.145 117.11h142.043" clip-path="url(#p7ddd47be6d)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_13"/>
+ <g id="line2d_14">
<defs>
- <path id="m09346f1a52" d="M0 0h-3.5" stroke="#000" stroke-width=".75"/>
+ <path id="mce6c36552d" d="M0 0h-3.5" stroke="#000" stroke-width=".75"/>
</defs>
- <use xlink:href="#m09346f1a52" x="31.255" y="99.453" stroke="#000" stroke-width=".75"/>
+ <use xlink:href="#mce6c36552d" x="40.145" y="117.111" stroke="#000" stroke-width=".75"/>
</g>
- <use xlink:href="#DejaVuSans-32" transform="matrix(.07 0 0 -.07 19.775 102.058)" id="text_8"/>
+ <use xlink:href="#DejaVuSans-30" transform="matrix(.07 0 0 -.07 28.665 119.716)" id="text_9"/>
</g>
<g id="ytick_2">
- <path d="M31.255 76.065h142.043" clip-path="url(#p881b2e6b17)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_13"/>
- <use xlink:href="#m09346f1a52" x="31.255" y="76.065" stroke="#000" stroke-width=".75" id="line2d_14"/>
- <use xlink:href="#DejaVuSans-34" transform="matrix(.07 0 0 -.07 19.775 78.718)" id="text_9"/>
+ <path d="M40.145 94.33h142.043" clip-path="url(#p7ddd47be6d)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_15"/>
+ <use xlink:href="#mce6c36552d" x="40.145" y="94.329" stroke="#000" stroke-width=".75" id="line2d_16"/>
+ <g transform="matrix(.07 0 0 -.07 19.775 96.989)" id="text_10">
+ <use xlink:href="#DejaVuSans-32" transform="translate(0 .781)"/>
+ <use xlink:href="#DejaVuSans-30" transform="translate(63.623 .781)"/>
+ <use xlink:href="#DejaVuSans-30" transform="translate(127.246 .781)"/>
+ </g>
</g>
<g id="ytick_3">
- <path d="M31.255 52.676h142.043" clip-path="url(#p881b2e6b17)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_15"/>
- <use xlink:href="#m09346f1a52" x="31.255" y="52.676" stroke="#000" stroke-width=".75" id="line2d_16"/>
- <use xlink:href="#DejaVuSans-36" transform="matrix(.07 0 0 -.07 19.775 55.28)" id="text_10"/>
+ <path d="M40.145 71.547h142.043" clip-path="url(#p7ddd47be6d)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_17"/>
+ <use xlink:href="#mce6c36552d" x="40.145" y="71.547" stroke="#000" stroke-width=".75" id="line2d_18"/>
+ <g transform="matrix(.07 0 0 -.07 19.775 74.207)" id="text_11">
+ <defs>
+ <path id="DejaVuSans-34" d="M2419 4116L825 1625h1594v2491zm-166 550h794V1625h666v-525h-666V0h-628v1100H313v609l1940 2957z" transform="scale(.01563)"/>
+ </defs>
+ <use xlink:href="#DejaVuSans-34" transform="translate(0 .781)"/>
+ <use xlink:href="#DejaVuSans-30" transform="translate(63.623 .781)"/>
+ <use xlink:href="#DejaVuSans-30" transform="translate(127.246 .781)"/>
+ </g>
</g>
<g id="ytick_4">
- <path d="M31.255 29.287h142.043" clip-path="url(#p881b2e6b17)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_17"/>
- <use xlink:href="#m09346f1a52" x="31.255" y="29.287" stroke="#000" stroke-width=".75" id="line2d_18"/>
- <use xlink:href="#DejaVuSans-38" transform="matrix(.07 0 0 -.07 19.775 31.892)" id="text_11"/>
+ <path d="M40.145 48.765h142.043" clip-path="url(#p7ddd47be6d)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_19"/>
+ <use xlink:href="#mce6c36552d" x="40.145" y="48.765" stroke="#000" stroke-width=".75" id="line2d_20"/>
+ <g transform="matrix(.07 0 0 -.07 19.775 51.425)" id="text_12">
+ <use xlink:href="#DejaVuSans-36" transform="translate(0 .781)"/>
+ <use xlink:href="#DejaVuSans-30" transform="translate(63.623 .781)"/>
+ <use xlink:href="#DejaVuSans-30" transform="translate(127.246 .781)"/>
+ </g>
+ </g>
+ <g id="ytick_5">
+ <path d="M40.145 25.984h142.043" clip-path="url(#p7ddd47be6d)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_21"/>
+ <use xlink:href="#mce6c36552d" x="40.145" y="25.984" stroke="#000" stroke-width=".75" id="line2d_22"/>
+ <g transform="matrix(.07 0 0 -.07 19.775 28.643)" id="text_13">
+ <defs>
+ <path id="DejaVuSans-38" d="M2034 2216q-450 0-708-241-257-241-257-662 0-422 257-663 258-241 708-241t709 242q260 243 260 662 0 421-258 662-257 241-711 241zm-631 268q-406 100-633 378-226 279-226 679 0 559 398 884 399 325 1092 325 697 0 1094-325t397-884q0-400-227-679-226-278-629-378 456-106 710-416 255-309 255-755 0-679-414-1042Q2806-91 2034-91q-771 0-1186 362-414 363-414 1042 0 446 256 755 257 310 713 416zm-231 997q0-362 226-565 227-203 636-203 407 0 636 203 230 203 230 565 0 363-230 566-229 203-636 203-409 0-636-203-226-203-226-566z" transform="scale(.01563)"/>
+ </defs>
+ <use xlink:href="#DejaVuSans-38" transform="translate(0 .781)"/>
+ <use xlink:href="#DejaVuSans-30" transform="translate(63.623 .781)"/>
+ <use xlink:href="#DejaVuSans-30" transform="translate(127.246 .781)"/>
+ </g>
</g>
- <g transform="matrix(0 -.07 -.07 0 14.319 92.683)" id="text_12">
+ <g transform="matrix(0 -.07 -.07 0 14.319 92.683)" id="text_14">
<defs>
<path id="DejaVuSans-2f" d="M1625 4666h531L531-594H0l1625 5260z" transform="scale(.01563)"/>
</defs>
@@ -153,81 +186,66 @@
<use xlink:href="#DejaVuSans-20" x="643.799"/>
<use xlink:href="#DejaVuSans-73" x="675.586"/>
</g>
- <g transform="matrix(.07 0 0 -.07 31.255 14.319)" id="text_13">
- <defs>
- <path id="DejaVuSans-35" d="M691 4666h2478v-532H1269V2991q137 47 274 70 138 23 276 23 781 0 1237-428 457-428 457-1159 0-753-469-1171Q2575-91 1722-91q-294 0-599 50Q819 9 494 109v635q281-153 581-228t634-75q541 0 856 284 316 284 316 772 0 487-316 771-315 285-856 285-253 0-505-56-251-56-513-175v2344z" transform="scale(.01563)"/>
- </defs>
- <use xlink:href="#DejaVuSans-d7" transform="translate(0 .684)"/>
- <use xlink:href="#DejaVuSans-31" transform="translate(83.79 .684)"/>
- <use xlink:href="#DejaVuSans-30" transform="translate(147.412 .684)"/>
- <use xlink:href="#DejaVuSans-35" transform="matrix(.7 0 0 .7 211.992 38.966)"/>
+ <g transform="matrix(.07 0 0 -.07 40.145 14.319)" id="text_15">
+ <use xlink:href="#DejaVuSans-d7" transform="translate(0 .766)"/>
+ <use xlink:href="#DejaVuSans-31" transform="translate(83.79 .766)"/>
+ <use xlink:href="#DejaVuSans-30" transform="translate(147.412 .766)"/>
+ <use xlink:href="#DejaVuSans-33" transform="matrix(.7 0 0 .7 211.992 39.047)"/>
</g>
</g>
- <g id="line2d_19">
- <path d="M37.711 25.39l14.348-1.234 14.348.962 14.348-2.014 14.348-1.25 14.347 2.163 14.348.789 14.348-1.915 14.348 2.045 14.348.858" clip-path="url(#p881b2e6b17)" fill="none" stroke="#1f77b4" stroke-linecap="square"/>
+ <g id="line2d_23">
+ <path d="M46.601 22.187l25.826 2.315 25.826-2.845 25.827 2.467 25.826-3.874 25.826-.497" clip-path="url(#p7ddd47be6d)" fill="none" stroke="#1f77b4" stroke-linecap="square"/>
<defs>
- <path id="m05a9ecb041" d="M0 1.5a1.5 1.5 0 100-3 1.5 1.5 0 000 3z" stroke="#1f77b4"/>
+ <path id="m480bfd2a44" d="M0 1.5a1.5 1.5 0 100-3 1.5 1.5 0 000 3z" stroke="#1f77b4"/>
</defs>
- <g clip-path="url(#p881b2e6b17)" fill="#1f77b4" stroke="#1f77b4">
- <use xlink:href="#m05a9ecb041" x="37.711" y="25.389"/>
- <use xlink:href="#m05a9ecb041" x="52.059" y="24.156"/>
- <use xlink:href="#m05a9ecb041" x="66.407" y="25.118"/>
- <use xlink:href="#m05a9ecb041" x="80.755" y="23.104"/>
- <use xlink:href="#m05a9ecb041" x="95.103" y="21.855"/>
- <use xlink:href="#m05a9ecb041" x="109.45" y="24.017"/>
- <use xlink:href="#m05a9ecb041" x="123.798" y="24.806"/>
- <use xlink:href="#m05a9ecb041" x="138.146" y="22.891"/>
- <use xlink:href="#m05a9ecb041" x="152.494" y="24.936"/>
- <use xlink:href="#m05a9ecb041" x="166.842" y="25.794"/>
+ <g clip-path="url(#p7ddd47be6d)" fill="#1f77b4" stroke="#1f77b4">
+ <use xlink:href="#m480bfd2a44" x="46.601" y="22.187"/>
+ <use xlink:href="#m480bfd2a44" x="72.427" y="24.502"/>
+ <use xlink:href="#m480bfd2a44" x="98.253" y="21.657"/>
+ <use xlink:href="#m480bfd2a44" x="124.08" y="24.124"/>
+ <use xlink:href="#m480bfd2a44" x="149.906" y="20.25"/>
+ <use xlink:href="#m480bfd2a44" x="175.732" y="19.753"/>
</g>
</g>
- <g id="line2d_20">
- <path d="M37.711 108.615l14.348.289 14.348.413 14.348-.097 14.348.488 14.347-.195 14.348.187 14.348.242 14.348-.21 14.348.092" clip-path="url(#p881b2e6b17)" fill="none" stroke-dasharray="2,.75" stroke="#ff7f0e"/>
+ <g id="line2d_24">
+ <path d="M46.601 103.32l25.826.468 25.826-.141 25.827.49 25.826-.247 25.826.311" clip-path="url(#p7ddd47be6d)" fill="none" stroke-dasharray="2,.75" stroke="#ff7f0e"/>
<defs>
- <path id="m2f1d957fc5" d="M-1.5 1.5h3v-3h-3z" stroke="#ff7f0e" stroke-linejoin="miter"/>
+ <path id="m91453323a4" d="M-1.5 1.5h3v-3h-3z" stroke="#ff7f0e" stroke-linejoin="miter"/>
</defs>
- <g clip-path="url(#p881b2e6b17)" fill="#ff7f0e" stroke="#ff7f0e">
- <use xlink:href="#m2f1d957fc5" x="37.711" y="108.615"/>
- <use xlink:href="#m2f1d957fc5" x="52.059" y="108.904"/>
- <use xlink:href="#m2f1d957fc5" x="66.407" y="109.317"/>
- <use xlink:href="#m2f1d957fc5" x="80.755" y="109.22"/>
- <use xlink:href="#m2f1d957fc5" x="95.103" y="109.708"/>
- <use xlink:href="#m2f1d957fc5" x="109.45" y="109.513"/>
- <use xlink:href="#m2f1d957fc5" x="123.798" y="109.7"/>
- <use xlink:href="#m2f1d957fc5" x="138.146" y="109.942"/>
- <use xlink:href="#m2f1d957fc5" x="152.494" y="109.732"/>
- <use xlink:href="#m2f1d957fc5" x="166.842" y="109.824"/>
+ <g clip-path="url(#p7ddd47be6d)" fill="#ff7f0e" stroke="#ff7f0e">
+ <use xlink:href="#m91453323a4" x="46.601" y="103.321"/>
+ <use xlink:href="#m91453323a4" x="72.427" y="103.788"/>
+ <use xlink:href="#m91453323a4" x="98.253" y="103.647"/>
+ <use xlink:href="#m91453323a4" x="124.08" y="104.137"/>
+ <use xlink:href="#m91453323a4" x="149.906" y="103.89"/>
+ <use xlink:href="#m91453323a4" x="175.732" y="104.201"/>
</g>
</g>
- <g id="line2d_21">
- <path d="M37.711 112.575l14.348-5.03 14.348-2.315 14.348-2.192 14.348-.626 14.347-.923 14.348-.97 14.348-.264 14.348-1.41 14.348.228" clip-path="url(#p881b2e6b17)" fill="none" stroke-dasharray=".75,.75" stroke="#2ca02c"/>
+ <g id="line2d_25">
+ <path d="M46.601 112.048l25.826-3.167 25.826-2.68 25.827-1.418 25.826-1.31 25.826-1.194" clip-path="url(#p7ddd47be6d)" fill="none" stroke-dasharray=".75,.75" stroke="#2ca02c"/>
<defs>
- <path id="m24bf662d63" d="M0 1.5l1.5-3h-3z" stroke="#2ca02c" stroke-linejoin="miter"/>
+ <path id="md2a3e2c3c4" d="M0 1.5l1.5-3h-3z" stroke="#2ca02c" stroke-linejoin="miter"/>
</defs>
- <g clip-path="url(#p881b2e6b17)" fill="#2ca02c" stroke="#2ca02c">
- <use xlink:href="#m24bf662d63" x="37.711" y="112.575"/>
- <use xlink:href="#m24bf662d63" x="52.059" y="107.545"/>
- <use xlink:href="#m24bf662d63" x="66.407" y="105.23"/>
- <use xlink:href="#m24bf662d63" x="80.755" y="103.038"/>
- <use xlink:href="#m24bf662d63" x="95.103" y="102.412"/>
- <use xlink:href="#m24bf662d63" x="109.45" y="101.489"/>
- <use xlink:href="#m24bf662d63" x="123.798" y="100.519"/>
- <use xlink:href="#m24bf662d63" x="138.146" y="100.255"/>
- <use xlink:href="#m24bf662d63" x="152.494" y="98.846"/>
- <use xlink:href="#m24bf662d63" x="166.842" y="99.073"/>
+ <g clip-path="url(#p7ddd47be6d)" fill="#2ca02c" stroke="#2ca02c">
+ <use xlink:href="#md2a3e2c3c4" x="46.601" y="112.048"/>
+ <use xlink:href="#md2a3e2c3c4" x="72.427" y="108.881"/>
+ <use xlink:href="#md2a3e2c3c4" x="98.253" y="106.2"/>
+ <use xlink:href="#md2a3e2c3c4" x="124.08" y="104.783"/>
+ <use xlink:href="#md2a3e2c3c4" x="149.906" y="103.472"/>
+ <use xlink:href="#md2a3e2c3c4" x="175.732" y="102.279"/>
</g>
</g>
- <path d="M31.255 117.11V17.32" fill="none" stroke="#000" stroke-width=".8" stroke-linecap="square" id="patch_3"/>
- <path d="M173.298 117.11V17.32" fill="none" stroke="#000" stroke-width=".8" stroke-linecap="square" id="patch_4"/>
- <path d="M31.255 117.11h142.043" fill="none" stroke="#000" stroke-width=".8" stroke-linecap="square" id="patch_5"/>
- <path d="M31.255 17.319h142.043" fill="none" stroke="#000" stroke-width=".8" stroke-linecap="square" id="patch_6"/>
+ <path d="M40.145 117.11V17.32" fill="none" stroke="#000" stroke-width=".8" stroke-linecap="square" id="patch_3"/>
+ <path d="M182.188 117.11V17.32" fill="none" stroke="#000" stroke-width=".8" stroke-linecap="square" id="patch_4"/>
+ <path d="M40.145 117.11h142.043" fill="none" stroke="#000" stroke-width=".8" stroke-linecap="square" id="patch_5"/>
+ <path d="M40.145 17.319h142.043" fill="none" stroke="#000" stroke-width=".8" stroke-linecap="square" id="patch_6"/>
<g id="legend_1">
- <path d="M122.758 81.927h45.64q1.4 0 1.4-1.4V53.903q0-1.4-1.4-1.4h-45.64q-1.4 0-1.4 1.4v26.624q0 1.4 1.4 1.4z" fill="#fff" opacity=".8" stroke="#ccc" id="patch_7"/>
- <g id="line2d_22">
- <path d="M124.158 58.172h14" fill="none" stroke="#1f77b4" stroke-linecap="square"/>
- <use xlink:href="#m05a9ecb041" x="131.158" y="58.172" fill="#1f77b4" stroke="#1f77b4"/>
+ <path d="M131.648 81.927h45.64q1.4 0 1.4-1.4V53.903q0-1.4-1.4-1.4h-45.64q-1.4 0-1.4 1.4v26.624q0 1.4 1.4 1.4z" fill="#fff" opacity=".8" stroke="#ccc" id="patch_7"/>
+ <g id="line2d_26">
+ <path d="M133.048 58.172h14" fill="none" stroke="#1f77b4" stroke-linecap="square"/>
+ <use xlink:href="#m480bfd2a44" x="140.048" y="58.172" fill="#1f77b4" stroke="#1f77b4"/>
</g>
- <g transform="matrix(.07 0 0 -.07 143.758 60.622)" id="text_14">
+ <g transform="matrix(.07 0 0 -.07 152.648 60.622)" id="text_16">
<defs>
<path id="DejaVuSans-72" d="M2631 2963q-97 56-211 82-114 27-251 27-488 0-749-317t-261-911V0H581v3500h578v-544q182 319 472 473 291 155 707 155 59 0 131-8 72-7 159-23l3-590z" transform="scale(.01563)"/>
<path id="DejaVuSans-64" d="M2906 2969v1894h575V0h-575v525q-181-312-458-464-276-152-664-152-634 0-1033 506-398 507-398 1332t398 1331q399 506 1033 506 388 0 664-152 277-151 458-463zM947 1747q0-634 261-995t717-361q456 0 718 361 263 361 263 995t-263 995q-262 361-718 361t-717-361q-261-361-261-995z" transform="scale(.01563)"/>
@@ -239,11 +257,11 @@
<use xlink:href="#DejaVuSans-64" x="152.986"/>
<use xlink:href="#DejaVuSans-69" x="216.463"/>
</g>
- <g id="line2d_23">
- <path d="M124.158 66.696h14" fill="none" stroke-dasharray="2,.75" stroke="#ff7f0e"/>
- <use xlink:href="#m2f1d957fc5" x="131.158" y="66.696" fill="#ff7f0e" stroke="#ff7f0e"/>
+ <g id="line2d_27">
+ <path d="M133.048 66.696h14" fill="none" stroke-dasharray="2,.75" stroke="#ff7f0e"/>
+ <use xlink:href="#m91453323a4" x="140.048" y="66.696" fill="#ff7f0e" stroke="#ff7f0e"/>
</g>
- <g transform="matrix(.07 0 0 -.07 143.758 69.146)" id="text_15">
+ <g transform="matrix(.07 0 0 -.07 152.648 69.146)" id="text_17">
<defs>
<path id="DejaVuSans-70" d="M1159 525v-1856H581v4831h578v-531q182 312 458 463 277 152 661 152 638 0 1036-506 399-506 399-1331T3314 415Q2916-91 2278-91q-384 0-661 152-276 152-458 464zm1957 1222q0 634-261 995t-717 361q-457 0-718-361t-261-995q0-634 261-995t718-361q456 0 717 361t261 995z" transform="scale(.01563)"/>
</defs>
@@ -254,11 +272,11 @@
<use xlink:href="#DejaVuSans-65" x="229.346"/>
<use xlink:href="#DejaVuSans-72" x="290.869"/>
</g>
- <g id="line2d_24">
- <path d="M124.158 75.221h14" fill="none" stroke-dasharray=".75,.75" stroke="#2ca02c"/>
- <use xlink:href="#m24bf662d63" x="131.158" y="75.221" fill="#2ca02c" stroke="#2ca02c"/>
+ <g id="line2d_28">
+ <path d="M133.048 75.221h14" fill="none" stroke-dasharray=".75,.75" stroke="#2ca02c"/>
+ <use xlink:href="#md2a3e2c3c4" x="140.048" y="75.221" fill="#2ca02c" stroke="#2ca02c"/>
</g>
- <g transform="matrix(.07 0 0 -.07 143.758 77.671)" id="text_16">
+ <g transform="matrix(.07 0 0 -.07 152.648 77.671)" id="text_18">
<defs>
<path id="DejaVuSans-6f" d="M1959 3097q-462 0-731-361t-269-989q0-628 267-989 268-361 733-361 460 0 728 362 269 363 269 988 0 622-269 986-268 364-728 364zm0 487q750 0 1178-488 429-487 429-1349 0-859-429-1349Q2709-91 1959-91q-753 0-1180 489-426 490-426 1349 0 862 426 1349 427 488 1180 488z" transform="scale(.01563)"/>
</defs>
@@ -271,8 +289,8 @@
</g>
</g>
<defs>
- <clipPath id="p881b2e6b17">
- <path d="M31.255 17.319h142.044v99.792H31.255z"/>
+ <clipPath id="p7ddd47be6d">
+ <path d="M40.145 17.319h142.044v99.792H40.145z"/>
</clipPath>
</defs>
</svg>
diff --git a/doc/serdi-time.svg b/doc/serdi-time.svg
index 30c1340e..3b8e5523 100644
--- a/doc/serdi-time.svg
+++ b/doc/serdi-time.svg
@@ -1,82 +1,88 @@
-<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="243.064" height="200.88" viewBox="0 0 182.298 150.66" xmlns="http://www.w3.org/2000/svg">
+<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="252.024" height="200.88" viewBox="0 0 189.018 150.66" xmlns="http://www.w3.org/2000/svg">
<defs>
<style>
*{stroke-linejoin:round;stroke-linecap:butt}
</style>
</defs>
<g id="figure_1">
- <path d="M0 150.66h182.298V0H0z" fill="#fff" id="patch_1"/>
+ <path d="M0 150.66h189.018V0H0z" fill="#fff" id="patch_1"/>
<g id="axes_1">
- <path d="M31.255 117.11h142.043V17.32H31.255z" fill="#fff" id="patch_2"/>
+ <path d="M37.975 117.11h142.043V17.32H37.975z" fill="#fff" id="patch_2"/>
<g id="matplotlib.axis_1">
<g id="xtick_1">
- <path d="M52.06 117.11V17.32" clip-path="url(#p19fc02bc89)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_1"/>
+ <path d="M44.431 117.11V17.32" clip-path="url(#ped76838f68)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_1"/>
<g id="line2d_2">
<defs>
- <path id="mf55c704fa2" d="M0 0v3.5" stroke="#000" stroke-width=".75"/>
+ <path id="ma4d2dccd2c" d="M0 0v3.5" stroke="#000" stroke-width=".75"/>
</defs>
- <use xlink:href="#mf55c704fa2" x="52.059" y="117.111" stroke="#000" stroke-width=".75"/>
+ <use xlink:href="#ma4d2dccd2c" x="44.431" y="117.111" stroke="#000" stroke-width=".75"/>
</g>
- <g transform="matrix(.07 0 0 -.07 46.67 129.43)" id="text_1">
+ <g transform="matrix(.07 0 0 -.07 38.831 129.43)" id="text_1">
<defs>
<path id="DejaVuSans-30" d="M2034 4250q-487 0-733-480-245-479-245-1442 0-959 245-1439 246-480 733-480 491 0 736 480 246 480 246 1439 0 963-246 1442-245 480-736 480zm0 500q785 0 1199-621 414-620 414-1801 0-1178-414-1799Q2819-91 2034-91q-784 0-1198 620-414 621-414 1799 0 1181 414 1801 414 621 1198 621z" transform="scale(.01563)"/>
<path id="DejaVuSans-2e" d="M684 794h660V0H684v794z" transform="scale(.01563)"/>
- <path id="DejaVuSans-32" d="M1228 531h2203V0H469v531q359 372 979 998 621 627 780 809 303 340 423 576 121 236 121 464 0 372-261 606-261 235-680 235-297 0-627-103-329-103-704-313v638q381 153 712 231 332 78 607 78 725 0 1156-363 431-362 431-968 0-288-108-546-107-257-392-607-78-91-497-524-418-433-1181-1211z" transform="scale(.01563)"/>
+ <path id="DejaVuSans-35" d="M691 4666h2478v-532H1269V2991q137 47 274 70 138 23 276 23 781 0 1237-428 457-428 457-1159 0-753-469-1171Q2575-91 1722-91q-294 0-599 50Q819 9 494 109v635q281-153 581-228t634-75q541 0 856 284 316 284 316 772 0 487-316 771-315 285-856 285-253 0-505-56-251-56-513-175v2344z" transform="scale(.01563)"/>
</defs>
<use xlink:href="#DejaVuSans-30" transform="translate(0 .781)"/>
<use xlink:href="#DejaVuSans-2e" transform="translate(63.623 .781)"/>
- <use xlink:href="#DejaVuSans-32" transform="translate(89.91 .781)"/>
+ <use xlink:href="#DejaVuSans-35" transform="translate(95.41 .781)"/>
</g>
</g>
<g id="xtick_2">
- <path d="M80.755 117.11V17.32" clip-path="url(#p19fc02bc89)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_3"/>
- <use xlink:href="#mf55c704fa2" x="80.755" y="117.111" stroke="#000" stroke-width=".75" id="line2d_4"/>
- <g transform="matrix(.07 0 0 -.07 75.155 129.43)" id="text_2">
+ <path d="M70.257 117.11V17.32" clip-path="url(#ped76838f68)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_3"/>
+ <use xlink:href="#ma4d2dccd2c" x="70.257" y="117.111" stroke="#000" stroke-width=".75" id="line2d_4"/>
+ <g transform="matrix(.07 0 0 -.07 64.657 129.43)" id="text_2">
<defs>
- <path id="DejaVuSans-34" d="M2419 4116L825 1625h1594v2491zm-166 550h794V1625h666v-525h-666V0h-628v1100H313v609l1940 2957z" transform="scale(.01563)"/>
+ <path id="DejaVuSans-31" d="M794 531h1031v3560L703 3866v575l1116 225h631V531h1031V0H794v531z" transform="scale(.01563)"/>
</defs>
- <use xlink:href="#DejaVuSans-30" transform="translate(0 .781)"/>
+ <use xlink:href="#DejaVuSans-31" transform="translate(0 .781)"/>
<use xlink:href="#DejaVuSans-2e" transform="translate(63.623 .781)"/>
- <use xlink:href="#DejaVuSans-34" transform="translate(95.41 .781)"/>
+ <use xlink:href="#DejaVuSans-30" transform="translate(95.41 .781)"/>
</g>
</g>
<g id="xtick_3">
- <path d="M109.45 117.11V17.32" clip-path="url(#p19fc02bc89)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_5"/>
- <use xlink:href="#mf55c704fa2" x="109.45" y="117.111" stroke="#000" stroke-width=".75" id="line2d_6"/>
- <g transform="matrix(.07 0 0 -.07 103.85 129.43)" id="text_3">
- <defs>
- <path id="DejaVuSans-36" d="M2113 2584q-425 0-674-291-248-290-248-796 0-503 248-796 249-292 674-292t673 292q248 293 248 796 0 506-248 796-248 291-673 291zm1253 1979v-575q-238 112-480 171-242 60-480 60-625 0-955-422-329-422-376-1275 184 272 462 417 279 145 613 145 703 0 1111-427 408-426 408-1160 0-719-425-1154Q2819-91 2113-91q-810 0-1238 620-428 621-428 1799 0 1106 525 1764t1409 658q238 0 480-47t505-140z" transform="scale(.01563)"/>
- </defs>
- <use xlink:href="#DejaVuSans-30" transform="translate(0 .781)"/>
- <use xlink:href="#DejaVuSans-2e" transform="translate(63.623 .781)"/>
- <use xlink:href="#DejaVuSans-36" transform="translate(95.41 .781)"/>
+ <path d="M96.083 117.11V17.32" clip-path="url(#ped76838f68)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_5"/>
+ <use xlink:href="#ma4d2dccd2c" x="96.083" y="117.111" stroke="#000" stroke-width=".75" id="line2d_6"/>
+ <g transform="matrix(.07 0 0 -.07 90.483 129.43)" id="text_3">
+ <use xlink:href="#DejaVuSans-31" transform="translate(0 .094)"/>
+ <use xlink:href="#DejaVuSans-2e" transform="translate(63.623 .094)"/>
+ <use xlink:href="#DejaVuSans-35" transform="translate(95.41 .094)"/>
</g>
</g>
<g id="xtick_4">
- <path d="M138.146 117.11V17.32" clip-path="url(#p19fc02bc89)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_7"/>
- <use xlink:href="#mf55c704fa2" x="138.146" y="117.111" stroke="#000" stroke-width=".75" id="line2d_8"/>
- <g transform="matrix(.07 0 0 -.07 132.651 129.43)" id="text_4">
+ <path d="M121.91 117.11V17.32" clip-path="url(#ped76838f68)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_7"/>
+ <use xlink:href="#ma4d2dccd2c" x="121.91" y="117.111" stroke="#000" stroke-width=".75" id="line2d_8"/>
+ <g transform="matrix(.07 0 0 -.07 116.31 129.43)" id="text_4">
<defs>
- <path id="DejaVuSans-38" d="M2034 2216q-450 0-708-241-257-241-257-662 0-422 257-663 258-241 708-241t709 242q260 243 260 662 0 421-258 662-257 241-711 241zm-631 268q-406 100-633 378-226 279-226 679 0 559 398 884 399 325 1092 325 697 0 1094-325t397-884q0-400-227-679-226-278-629-378 456-106 710-416 255-309 255-755 0-679-414-1042Q2806-91 2034-91q-771 0-1186 362-414 363-414 1042 0 446 256 755 257 310 713 416zm-231 997q0-362 226-565 227-203 636-203 407 0 636 203 230 203 230 565 0 363-230 566-229 203-636 203-409 0-636-203-226-203-226-566z" transform="scale(.01563)"/>
+ <path id="DejaVuSans-32" d="M1228 531h2203V0H469v531q359 372 979 998 621 627 780 809 303 340 423 576 121 236 121 464 0 372-261 606-261 235-680 235-297 0-627-103-329-103-704-313v638q381 153 712 231 332 78 607 78 725 0 1156-363 431-362 431-968 0-288-108-546-107-257-392-607-78-91-497-524-418-433-1181-1211z" transform="scale(.01563)"/>
</defs>
- <use xlink:href="#DejaVuSans-30" transform="translate(0 .781)"/>
+ <use xlink:href="#DejaVuSans-32" transform="translate(0 .781)"/>
<use xlink:href="#DejaVuSans-2e" transform="translate(63.623 .781)"/>
- <use xlink:href="#DejaVuSans-38" transform="translate(92.785 .781)"/>
+ <use xlink:href="#DejaVuSans-30" transform="translate(95.41 .781)"/>
</g>
</g>
<g id="xtick_5">
- <path d="M166.842 117.11V17.32" clip-path="url(#p19fc02bc89)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_9"/>
- <use xlink:href="#mf55c704fa2" x="166.842" y="117.111" stroke="#000" stroke-width=".75" id="line2d_10"/>
- <g transform="matrix(.07 0 0 -.07 161.242 129.43)" id="text_5">
+ <path d="M147.736 117.11V17.32" clip-path="url(#ped76838f68)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_9"/>
+ <use xlink:href="#ma4d2dccd2c" x="147.736" y="117.111" stroke="#000" stroke-width=".75" id="line2d_10"/>
+ <g transform="matrix(.07 0 0 -.07 142.136 129.43)" id="text_5">
+ <use xlink:href="#DejaVuSans-32" transform="translate(0 .781)"/>
+ <use xlink:href="#DejaVuSans-2e" transform="translate(63.623 .781)"/>
+ <use xlink:href="#DejaVuSans-35" transform="translate(95.41 .781)"/>
+ </g>
+ </g>
+ <g id="xtick_6">
+ <path d="M173.562 117.11V17.32" clip-path="url(#ped76838f68)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_11"/>
+ <use xlink:href="#ma4d2dccd2c" x="173.562" y="117.111" stroke="#000" stroke-width=".75" id="line2d_12"/>
+ <g transform="matrix(.07 0 0 -.07 167.962 129.43)" id="text_6">
<defs>
- <path id="DejaVuSans-31" d="M794 531h1031v3560L703 3866v575l1116 225h631V531h1031V0H794v531z" transform="scale(.01563)"/>
+ <path id="DejaVuSans-33" d="M2597 2516q453-97 707-404 255-306 255-756 0-690-475-1069Q2609-91 1734-91q-293 0-604 58T488 141v609q262-153 574-231 313-78 654-78 593 0 904 234t311 681q0 413-289 645-289 233-804 233h-544v519h569q465 0 712 186t247 536q0 359-255 551-254 193-729 193-260 0-557-57-297-56-653-174v562q360 100 674 150t592 50q719 0 1137-327 419-326 419-882 0-388-222-655t-631-370z" transform="scale(.01563)"/>
</defs>
- <use xlink:href="#DejaVuSans-31" transform="translate(0 .781)"/>
+ <use xlink:href="#DejaVuSans-33" transform="translate(0 .781)"/>
<use xlink:href="#DejaVuSans-2e" transform="translate(63.623 .781)"/>
<use xlink:href="#DejaVuSans-30" transform="translate(95.41 .781)"/>
</g>
</g>
- <g transform="matrix(.07 0 0 -.07 82.036 140.204)" id="text_6">
+ <g transform="matrix(.07 0 0 -.07 88.756 140.204)" id="text_7">
<defs>
<path id="DejaVuSans-53" d="M3425 4513v-616q-359 172-678 256-319 85-616 85-515 0-795-200t-280-569q0-310 186-468 186-157 705-254l381-78q706-135 1042-474t336-907q0-679-455-1029Q2797-91 1919-91q-331 0-705 75-373 75-773 222v650q384-215 753-325 369-109 725-109 540 0 834 212 294 213 294 607 0 343-211 537t-692 291l-385 75q-706 140-1022 440-315 300-315 835 0 619 436 975t1201 356q329 0 669-60 341-59 697-177z" transform="scale(.01563)"/>
<path id="DejaVuSans-74" d="M1172 4494v-994h1184v-447H1172V1153q0-428 117-550t477-122h590V0h-590q-666 0-919 248-253 249-253 905v1900H172v447h422v994h578z" transform="scale(.01563)"/>
@@ -97,49 +103,78 @@
<use xlink:href="#DejaVuSans-74" x="487.012"/>
<use xlink:href="#DejaVuSans-73" x="526.221"/>
</g>
- <g transform="matrix(.07 0 0 -.07 155.098 139.204)" id="text_7">
+ <g transform="matrix(.07 0 0 -.07 161.818 139.204)" id="text_8">
<defs>
<path id="DejaVuSans-d7" d="M4488 3438L3059 2003 4488 575l-372-378-1435 1434L1247 197 878 575l1425 1428L878 3438l369 378 1434-1435 1435 1435 372-378z" transform="scale(.01563)"/>
- <path id="DejaVuSans-37" d="M525 4666h3000v-269L1831 0h-659l1594 4134H525v532z" transform="scale(.01563)"/>
+ <path id="DejaVuSans-36" d="M2113 2584q-425 0-674-291-248-290-248-796 0-503 248-796 249-292 674-292t673 292q248 293 248 796 0 506-248 796-248 291-673 291zm1253 1979v-575q-238 112-480 171-242 60-480 60-625 0-955-422-329-422-376-1275 184 272 462 417 279 145 613 145 703 0 1111-427 408-426 408-1160 0-719-425-1154Q2819-91 2113-91q-810 0-1238 620-428 621-428 1799 0 1106 525 1764t1409 658q238 0 480-47t505-140z" transform="scale(.01563)"/>
</defs>
- <use xlink:href="#DejaVuSans-d7" transform="translate(0 .684)"/>
- <use xlink:href="#DejaVuSans-31" transform="translate(83.79 .684)"/>
- <use xlink:href="#DejaVuSans-30" transform="translate(147.412 .684)"/>
- <use xlink:href="#DejaVuSans-37" transform="matrix(.7 0 0 .7 211.992 38.966)"/>
+ <use xlink:href="#DejaVuSans-d7" transform="translate(0 .766)"/>
+ <use xlink:href="#DejaVuSans-31" transform="translate(83.79 .766)"/>
+ <use xlink:href="#DejaVuSans-30" transform="translate(147.412 .766)"/>
+ <use xlink:href="#DejaVuSans-36" transform="matrix(.7 0 0 .7 211.992 39.047)"/>
</g>
</g>
<g id="matplotlib.axis_2">
<g id="ytick_1">
- <path d="M31.255 113.803h142.043" clip-path="url(#p19fc02bc89)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_11"/>
- <g id="line2d_12">
+ <path d="M37.975 117.11h142.043" clip-path="url(#ped76838f68)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_13"/>
+ <g id="line2d_14">
<defs>
- <path id="m5394df87a7" d="M0 0h-3.5" stroke="#000" stroke-width=".75"/>
+ <path id="mb89c9bd36d" d="M0 0h-3.5" stroke="#000" stroke-width=".75"/>
</defs>
- <use xlink:href="#m5394df87a7" x="31.255" y="113.803" stroke="#000" stroke-width=".75"/>
+ <use xlink:href="#mb89c9bd36d" x="37.975" y="117.111" stroke="#000" stroke-width=".75"/>
+ </g>
+ <g transform="matrix(.07 0 0 -.07 19.775 119.77)" id="text_9">
+ <use xlink:href="#DejaVuSans-30" transform="translate(0 .781)"/>
+ <use xlink:href="#DejaVuSans-2e" transform="translate(63.623 .781)"/>
+ <use xlink:href="#DejaVuSans-30" transform="translate(95.41 .781)"/>
</g>
- <use xlink:href="#DejaVuSans-30" transform="matrix(.07 0 0 -.07 19.775 116.408)" id="text_8"/>
</g>
<g id="ytick_2">
- <path d="M31.255 93.332h142.043" clip-path="url(#p19fc02bc89)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_13"/>
- <use xlink:href="#m5394df87a7" x="31.255" y="93.332" stroke="#000" stroke-width=".75" id="line2d_14"/>
- <use xlink:href="#DejaVuSans-32" transform="matrix(.07 0 0 -.07 19.775 95.936)" id="text_9"/>
+ <path d="M37.975 98.72h142.043" clip-path="url(#ped76838f68)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_15"/>
+ <use xlink:href="#mb89c9bd36d" x="37.975" y="98.721" stroke="#000" stroke-width=".75" id="line2d_16"/>
+ <g transform="matrix(.07 0 0 -.07 19.775 101.38)" id="text_10">
+ <use xlink:href="#DejaVuSans-30" transform="translate(0 .781)"/>
+ <use xlink:href="#DejaVuSans-2e" transform="translate(63.623 .781)"/>
+ <use xlink:href="#DejaVuSans-35" transform="translate(95.41 .781)"/>
+ </g>
</g>
<g id="ytick_3">
- <path d="M31.255 72.86h142.043" clip-path="url(#p19fc02bc89)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_15"/>
- <use xlink:href="#m5394df87a7" x="31.255" y="72.86" stroke="#000" stroke-width=".75" id="line2d_16"/>
- <use xlink:href="#DejaVuSans-34" transform="matrix(.07 0 0 -.07 19.775 75.513)" id="text_10"/>
+ <path d="M37.975 80.33h142.043" clip-path="url(#ped76838f68)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_17"/>
+ <use xlink:href="#mb89c9bd36d" x="37.975" y="80.33" stroke="#000" stroke-width=".75" id="line2d_18"/>
+ <g transform="matrix(.07 0 0 -.07 19.775 82.99)" id="text_11">
+ <use xlink:href="#DejaVuSans-31" transform="translate(0 .781)"/>
+ <use xlink:href="#DejaVuSans-2e" transform="translate(63.623 .781)"/>
+ <use xlink:href="#DejaVuSans-30" transform="translate(95.41 .781)"/>
+ </g>
</g>
<g id="ytick_4">
- <path d="M31.255 52.388h142.043" clip-path="url(#p19fc02bc89)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_17"/>
- <use xlink:href="#m5394df87a7" x="31.255" y="52.388" stroke="#000" stroke-width=".75" id="line2d_18"/>
- <use xlink:href="#DejaVuSans-36" transform="matrix(.07 0 0 -.07 19.775 54.993)" id="text_11"/>
+ <path d="M37.975 61.94h142.043" clip-path="url(#ped76838f68)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_19"/>
+ <use xlink:href="#mb89c9bd36d" x="37.975" y="61.94" stroke="#000" stroke-width=".75" id="line2d_20"/>
+ <g transform="matrix(.07 0 0 -.07 19.775 64.6)" id="text_12">
+ <use xlink:href="#DejaVuSans-31" transform="translate(0 .094)"/>
+ <use xlink:href="#DejaVuSans-2e" transform="translate(63.623 .094)"/>
+ <use xlink:href="#DejaVuSans-35" transform="translate(95.41 .094)"/>
+ </g>
</g>
<g id="ytick_5">
- <path d="M31.255 31.917h142.043" clip-path="url(#p19fc02bc89)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_19"/>
- <use xlink:href="#m5394df87a7" x="31.255" y="31.917" stroke="#000" stroke-width=".75" id="line2d_20"/>
- <use xlink:href="#DejaVuSans-38" transform="matrix(.07 0 0 -.07 19.775 34.521)" id="text_12"/>
+ <path d="M37.975 43.55h142.043" clip-path="url(#ped76838f68)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_21"/>
+ <use xlink:href="#mb89c9bd36d" x="37.975" y="43.55" stroke="#000" stroke-width=".75" id="line2d_22"/>
+ <g transform="matrix(.07 0 0 -.07 19.775 46.21)" id="text_13">
+ <use xlink:href="#DejaVuSans-32" transform="translate(0 .781)"/>
+ <use xlink:href="#DejaVuSans-2e" transform="translate(63.623 .781)"/>
+ <use xlink:href="#DejaVuSans-30" transform="translate(95.41 .781)"/>
+ </g>
+ </g>
+ <g id="ytick_6">
+ <path d="M37.975 25.16h142.043" clip-path="url(#ped76838f68)" fill="none" stroke-dasharray=".05,.4" stroke="#000" stroke-width=".25" id="line2d_23"/>
+ <use xlink:href="#mb89c9bd36d" x="37.975" y="25.16" stroke="#000" stroke-width=".75" id="line2d_24"/>
+ <g transform="matrix(.07 0 0 -.07 19.775 27.819)" id="text_14">
+ <use xlink:href="#DejaVuSans-32" transform="translate(0 .781)"/>
+ <use xlink:href="#DejaVuSans-2e" transform="translate(63.623 .781)"/>
+ <use xlink:href="#DejaVuSans-35" transform="translate(95.41 .781)"/>
+ </g>
</g>
- <g transform="matrix(0 -.07 -.07 0 14.319 81.445)" id="text_13">
+ <g transform="matrix(0 -.07 -.07 0 14.319 81.445)" id="text_15">
<defs>
<path id="DejaVuSans-54" d="M-19 4666h3947v-532H2272V0h-634v4134H-19v532z" transform="scale(.01563)"/>
<path id="DejaVuSans-69" d="M603 3500h575V0H603v3500zm0 1363h575v-729H603v729z" transform="scale(.01563)"/>
@@ -155,78 +190,66 @@
<use xlink:href="#DejaVuSans-73" x="315.479"/>
<use xlink:href="#DejaVuSans-29" x="367.578"/>
</g>
- <g transform="matrix(.07 0 0 -.07 31.255 14.319)" id="text_14">
+ <g transform="matrix(.07 0 0 -.07 37.975 14.319)" id="text_16">
<use xlink:href="#DejaVuSans-d7" transform="translate(0 .684)"/>
<use xlink:href="#DejaVuSans-31" transform="translate(83.79 .684)"/>
<use xlink:href="#DejaVuSans-30" transform="translate(147.412 .684)"/>
<use xlink:href="#DejaVuSans-31" transform="matrix(.7 0 0 .7 211.992 38.966)"/>
</g>
</g>
- <g id="line2d_21">
- <path d="M37.711 112.575l14.348-1.198 14.348-1.248 14.348-1.126 14.348-1.126 14.347-1.341 14.348-1.28 14.348-1.034 14.348-1.422 14.348-1.331" clip-path="url(#p19fc02bc89)" fill="none" stroke="#1f77b4" stroke-linecap="square"/>
+ <g id="line2d_25">
+ <path d="M44.431 114.904l25.826-2.317 25.826-2.06 25.827-2.427 25.826-1.803 25.826-2.096" clip-path="url(#ped76838f68)" fill="none" stroke="#1f77b4" stroke-linecap="square"/>
<defs>
- <path id="m2d79b52d97" d="M0 1.5a1.5 1.5 0 100-3 1.5 1.5 0 000 3z" stroke="#1f77b4"/>
+ <path id="m2ed1c57d17" d="M0 1.5a1.5 1.5 0 100-3 1.5 1.5 0 000 3z" stroke="#1f77b4"/>
</defs>
- <g clip-path="url(#p19fc02bc89)" fill="#1f77b4" stroke="#1f77b4">
- <use xlink:href="#m2d79b52d97" x="37.711" y="112.575"/>
- <use xlink:href="#m2d79b52d97" x="52.059" y="111.377"/>
- <use xlink:href="#m2d79b52d97" x="66.407" y="110.129"/>
- <use xlink:href="#m2d79b52d97" x="80.755" y="109.003"/>
- <use xlink:href="#m2d79b52d97" x="95.103" y="107.877"/>
- <use xlink:href="#m2d79b52d97" x="109.45" y="106.536"/>
- <use xlink:href="#m2d79b52d97" x="123.798" y="105.256"/>
- <use xlink:href="#m2d79b52d97" x="138.146" y="104.222"/>
- <use xlink:href="#m2d79b52d97" x="152.494" y="102.8"/>
- <use xlink:href="#m2d79b52d97" x="166.842" y="101.469"/>
+ <g clip-path="url(#ped76838f68)" fill="#1f77b4" stroke="#1f77b4">
+ <use xlink:href="#m2ed1c57d17" x="44.431" y="114.904"/>
+ <use xlink:href="#m2ed1c57d17" x="70.257" y="112.587"/>
+ <use xlink:href="#m2ed1c57d17" x="96.083" y="110.527"/>
+ <use xlink:href="#m2ed1c57d17" x="121.91" y="108.1"/>
+ <use xlink:href="#m2ed1c57d17" x="147.736" y="106.297"/>
+ <use xlink:href="#m2ed1c57d17" x="173.562" y="104.201"/>
</g>
</g>
- <g id="line2d_22">
- <path d="M37.711 105.39l14.348-8.762 14.348-9.376 14.348-8.599 14.348-10.42 14.347-8.311 14.348-9.878 14.348-10.47 14.348-7.944 14.348-9.775" clip-path="url(#p19fc02bc89)" fill="none" stroke-dasharray="2,.75" stroke="#ff7f0e"/>
+ <g id="line2d_26">
+ <path d="M44.431 101.92l25.826-16.256 25.826-15.228 25.827-17.912 25.826-14.638 25.826-18.133" clip-path="url(#ped76838f68)" fill="none" stroke-dasharray="2,.75" stroke="#ff7f0e"/>
<defs>
- <path id="mf9f099e4f9" d="M-1.5 1.5h3v-3h-3z" stroke="#ff7f0e" stroke-linejoin="miter"/>
+ <path id="m78bb2d44e0" d="M-1.5 1.5h3v-3h-3z" stroke="#ff7f0e" stroke-linejoin="miter"/>
</defs>
- <g clip-path="url(#p19fc02bc89)" fill="#ff7f0e" stroke="#ff7f0e">
- <use xlink:href="#mf9f099e4f9" x="37.711" y="105.389"/>
- <use xlink:href="#mf9f099e4f9" x="52.059" y="96.628"/>
- <use xlink:href="#mf9f099e4f9" x="66.407" y="87.252"/>
- <use xlink:href="#mf9f099e4f9" x="80.755" y="78.653"/>
- <use xlink:href="#mf9f099e4f9" x="95.103" y="68.233"/>
- <use xlink:href="#mf9f099e4f9" x="109.45" y="59.922"/>
- <use xlink:href="#mf9f099e4f9" x="123.798" y="50.044"/>
- <use xlink:href="#mf9f099e4f9" x="138.146" y="39.573"/>
- <use xlink:href="#mf9f099e4f9" x="152.494" y="31.63"/>
- <use xlink:href="#mf9f099e4f9" x="166.842" y="21.855"/>
+ <g clip-path="url(#ped76838f68)" fill="#ff7f0e" stroke="#ff7f0e">
+ <use xlink:href="#m78bb2d44e0" x="44.431" y="101.921"/>
+ <use xlink:href="#m78bb2d44e0" x="70.257" y="85.664"/>
+ <use xlink:href="#m78bb2d44e0" x="96.083" y="70.436"/>
+ <use xlink:href="#m78bb2d44e0" x="121.91" y="52.524"/>
+ <use xlink:href="#m78bb2d44e0" x="147.736" y="37.886"/>
+ <use xlink:href="#m78bb2d44e0" x="173.562" y="19.753"/>
</g>
</g>
- <g id="line2d_23">
- <path d="M37.711 102.145l14.348-3.992 14.348-4.74 14.348-3.787 14.348-5.118 14.347-4.34 14.348-3.9 14.348-4.862 14.348-2.497 14.348-5.466" clip-path="url(#p19fc02bc89)" fill="none" stroke-dasharray=".75,.75" stroke="#2ca02c"/>
+ <g id="line2d_27">
+ <path d="M44.431 75.733l25.826-9.526 25.826-6.694L121.91 49.14l25.826-8.827 25.826-7.944" clip-path="url(#ped76838f68)" fill="none" stroke-dasharray=".75,.75" stroke="#2ca02c"/>
<defs>
- <path id="mb927f7b32d" d="M0 1.5l1.5-3h-3z" stroke="#2ca02c" stroke-linejoin="miter"/>
+ <path id="m73b2b4440e" d="M0 1.5l1.5-3h-3z" stroke="#2ca02c" stroke-linejoin="miter"/>
</defs>
- <g clip-path="url(#p19fc02bc89)" fill="#2ca02c" stroke="#2ca02c">
- <use xlink:href="#mb927f7b32d" x="37.711" y="102.145"/>
- <use xlink:href="#mb927f7b32d" x="52.059" y="98.153"/>
- <use xlink:href="#mb927f7b32d" x="66.407" y="93.413"/>
- <use xlink:href="#mb927f7b32d" x="80.755" y="89.626"/>
- <use xlink:href="#mb927f7b32d" x="95.103" y="84.508"/>
- <use xlink:href="#mb927f7b32d" x="109.45" y="80.168"/>
- <use xlink:href="#mb927f7b32d" x="123.798" y="76.268"/>
- <use xlink:href="#mb927f7b32d" x="138.146" y="71.406"/>
- <use xlink:href="#mb927f7b32d" x="152.494" y="68.909"/>
- <use xlink:href="#mb927f7b32d" x="166.842" y="63.443"/>
+ <g clip-path="url(#ped76838f68)" fill="#2ca02c" stroke="#2ca02c">
+ <use xlink:href="#m73b2b4440e" x="44.431" y="75.733"/>
+ <use xlink:href="#m73b2b4440e" x="70.257" y="66.207"/>
+ <use xlink:href="#m73b2b4440e" x="96.083" y="59.513"/>
+ <use xlink:href="#m73b2b4440e" x="121.91" y="49.14"/>
+ <use xlink:href="#m73b2b4440e" x="147.736" y="40.313"/>
+ <use xlink:href="#m73b2b4440e" x="173.562" y="32.369"/>
</g>
</g>
- <path d="M31.255 117.11V17.32" fill="none" stroke="#000" stroke-width=".8" stroke-linecap="square" id="patch_3"/>
- <path d="M173.298 117.11V17.32" fill="none" stroke="#000" stroke-width=".8" stroke-linecap="square" id="patch_4"/>
- <path d="M31.255 117.11h142.043" fill="none" stroke="#000" stroke-width=".8" stroke-linecap="square" id="patch_5"/>
- <path d="M31.255 17.319h142.043" fill="none" stroke="#000" stroke-width=".8" stroke-linecap="square" id="patch_6"/>
+ <path d="M37.975 117.11V17.32" fill="none" stroke="#000" stroke-width=".8" stroke-linecap="square" id="patch_3"/>
+ <path d="M180.018 117.11V17.32" fill="none" stroke="#000" stroke-width=".8" stroke-linecap="square" id="patch_4"/>
+ <path d="M37.975 117.11h142.043" fill="none" stroke="#000" stroke-width=".8" stroke-linecap="square" id="patch_5"/>
+ <path d="M37.975 17.319h142.043" fill="none" stroke="#000" stroke-width=".8" stroke-linecap="square" id="patch_6"/>
<g id="legend_1">
- <path d="M36.155 50.243h45.64q1.4 0 1.4-1.4V22.219q0-1.4-1.4-1.4h-45.64q-1.4 0-1.4 1.4v26.624q0 1.4 1.4 1.4z" fill="#fff" opacity=".8" stroke="#ccc" id="patch_7"/>
- <g id="line2d_24">
- <path d="M37.555 26.488h14" fill="none" stroke="#1f77b4" stroke-linecap="square"/>
- <use xlink:href="#m2d79b52d97" x="44.555" y="26.488" fill="#1f77b4" stroke="#1f77b4"/>
+ <path d="M42.875 50.243h45.64q1.4 0 1.4-1.4V22.219q0-1.4-1.4-1.4h-45.64q-1.4 0-1.4 1.4v26.624q0 1.4 1.4 1.4z" fill="#fff" opacity=".8" stroke="#ccc" id="patch_7"/>
+ <g id="line2d_28">
+ <path d="M44.275 26.488h14" fill="none" stroke="#1f77b4" stroke-linecap="square"/>
+ <use xlink:href="#m2ed1c57d17" x="51.275" y="26.488" fill="#1f77b4" stroke="#1f77b4"/>
</g>
- <g transform="matrix(.07 0 0 -.07 57.155 28.938)" id="text_15">
+ <g transform="matrix(.07 0 0 -.07 63.875 28.938)" id="text_17">
<defs>
<path id="DejaVuSans-72" d="M2631 2963q-97 56-211 82-114 27-251 27-488 0-749-317t-261-911V0H581v3500h578v-544q182 319 472 473 291 155 707 155 59 0 131-8 72-7 159-23l3-590z" transform="scale(.01563)"/>
<path id="DejaVuSans-64" d="M2906 2969v1894h575V0h-575v525q-181-312-458-464-276-152-664-152-634 0-1033 506-398 507-398 1332t398 1331q399 506 1033 506 388 0 664-152 277-151 458-463zM947 1747q0-634 261-995t717-361q456 0 718 361 263 361 263 995t-263 995q-262 361-718 361t-717-361q-261-361-261-995z" transform="scale(.01563)"/>
@@ -237,11 +260,11 @@
<use xlink:href="#DejaVuSans-64" x="152.986"/>
<use xlink:href="#DejaVuSans-69" x="216.463"/>
</g>
- <g id="line2d_25">
- <path d="M37.555 35.013h14" fill="none" stroke-dasharray="2,.75" stroke="#ff7f0e"/>
- <use xlink:href="#mf9f099e4f9" x="44.555" y="35.013" fill="#ff7f0e" stroke="#ff7f0e"/>
+ <g id="line2d_29">
+ <path d="M44.275 35.013h14" fill="none" stroke-dasharray="2,.75" stroke="#ff7f0e"/>
+ <use xlink:href="#m78bb2d44e0" x="51.275" y="35.013" fill="#ff7f0e" stroke="#ff7f0e"/>
</g>
- <g transform="matrix(.07 0 0 -.07 57.155 37.462)" id="text_16">
+ <g transform="matrix(.07 0 0 -.07 63.875 37.462)" id="text_18">
<defs>
<path id="DejaVuSans-70" d="M1159 525v-1856H581v4831h578v-531q182 312 458 463 277 152 661 152 638 0 1036-506 399-506 399-1331T3314 415Q2916-91 2278-91q-384 0-661 152-276 152-458 464zm1957 1222q0 634-261 995t-717 361q-457 0-718-361t-261-995q0-634 261-995t718-361q456 0 717 361t261 995z" transform="scale(.01563)"/>
</defs>
@@ -252,11 +275,11 @@
<use xlink:href="#DejaVuSans-65" x="229.346"/>
<use xlink:href="#DejaVuSans-72" x="290.869"/>
</g>
- <g id="line2d_26">
- <path d="M37.555 43.537h14" fill="none" stroke-dasharray=".75,.75" stroke="#2ca02c"/>
- <use xlink:href="#mb927f7b32d" x="44.555" y="43.537" fill="#2ca02c" stroke="#2ca02c"/>
+ <g id="line2d_30">
+ <path d="M44.275 43.537h14" fill="none" stroke-dasharray=".75,.75" stroke="#2ca02c"/>
+ <use xlink:href="#m73b2b4440e" x="51.275" y="43.537" fill="#2ca02c" stroke="#2ca02c"/>
</g>
- <g transform="matrix(.07 0 0 -.07 57.155 45.987)" id="text_17">
+ <g transform="matrix(.07 0 0 -.07 63.875 45.987)" id="text_19">
<defs>
<path id="DejaVuSans-6f" d="M1959 3097q-462 0-731-361t-269-989q0-628 267-989 268-361 733-361 460 0 728 362 269 363 269 988 0 622-269 986-268 364-728 364zm0 487q750 0 1178-488 429-487 429-1349 0-859-429-1349Q2709-91 1959-91q-753 0-1180 489-426 490-426 1349 0 862 426 1349 427 488 1180 488z" transform="scale(.01563)"/>
</defs>
@@ -269,8 +292,8 @@
</g>
</g>
<defs>
- <clipPath id="p19fc02bc89">
- <path d="M31.255 17.319h142.044v99.792H31.255z"/>
+ <clipPath id="ped76838f68">
+ <path d="M37.975 17.319h142.044v99.792H37.975z"/>
</clipPath>
</defs>
</svg>
diff --git a/scripts/serd_bench.py b/scripts/serd_bench.py
index ae2f0f66..e342976b 100755
--- a/scripts/serd_bench.py
+++ b/scripts/serd_bench.py
@@ -41,6 +41,23 @@ class WorkingDirectory:
os.chdir(self.original_dir)
+def order_of_magnitude(values):
+ "Return the order of magnitude to use for an axis with the given values"
+ if len(values) <= 0:
+ return 0
+
+ # Calculate the "best" order of magnitude like ScalarFormatter does
+ val = max(values)
+ oom = math.floor(math.log10(max(1.0, val)))
+ if -3 <= oom <= 3:
+ return 0
+
+ # Round down to a sensible (thousand, millions, billions, etc) order
+ remainder = oom % 3
+ oom = oom - remainder
+ return oom
+
+
def filename(num):
"Filename for a generated file with n statements"
return "gen%d.ttl" % num
@@ -73,7 +90,7 @@ def parse_time(report):
if line.startswith("\tUser time"):
time = float(line[after_colon:])
elif line.startswith("\tMaximum resident set"):
- memory = float(line[after_colon:]) * 1024
+ memory = int(float(line[after_colon:]) * 1024)
return (time, memory)
@@ -94,7 +111,6 @@ def get_dashes():
def plot(in_file, out_filename, x_label, y_label, y_max=None):
"Plot a TSV file as SVG"
-
matplotlib.use("agg")
import matplotlib.pyplot as plt
@@ -108,22 +124,22 @@ def plot(in_file, out_filename, x_label, y_label, y_max=None):
header = next(reader)
cols = list(zip(*list(reader)))
+ # Create a figure with a grid
plt.clf()
fig = plt.figure(figsize=(fig_height * math.sqrt(2), fig_height))
ax = fig.add_subplot(111)
-
ax.set_xlabel(x_label)
ax.set_ylabel(y_label)
ax.grid(linewidth=0.25, linestyle=":", color="0", dashes=[0.2, 1.6])
- ax.ticklabel_format(style="sci", scilimits=(4, 0), useMathText=True)
ax.tick_params(axis="both", width=0.75)
x = list(map(float, cols[0]))
actual_y_max = 0.0
for i, y in enumerate(cols[1::]):
y_floats = list(map(float, y))
- actual_y_max = max(actual_y_max, y_floats)
+ y_floats_max = max(y_floats)
+ actual_y_max = max(actual_y_max, y_floats_max)
ax.plot(
x,
y_floats,
@@ -134,9 +150,17 @@ def plot(in_file, out_filename, x_label, y_label, y_max=None):
linewidth=1.0,
)
- y_max = actual_y_max if y_max is None else y_max
+ # Set Y axis limits to go from zero to the maximum value with a small pad
+ y_max = (1.025 * actual_y_max) if y_max is None else y_max
ax.set_ylim([0.0, y_max])
+ # Set axis magnitudes
+ x_m = (order_of_magnitude(x),) * 2
+ y_m = (order_of_magnitude([y_max]),) * 2
+ ax.ticklabel_format(axis="x", style="sci", scilimits=x_m, useMathText=True)
+ ax.ticklabel_format(axis="y", style="sci", scilimits=y_m, useMathText=True)
+
+ # Save plot
plt.legend(labelspacing=0.25)
plt.savefig(out_filename, bbox_inches="tight", pad_inches=0.125)
plt.close()
@@ -215,7 +239,7 @@ if __name__ == "__main__":
formatter_class=argparse.RawDescriptionHelpFormatter,
epilog="""
example:
- %(prog)s --max 100000 \\
+ %(prog)s --max 300000 \\
--run 'rapper -i turtle -o turtle' \\
--run 'riot --output=ttl' \\
--run 'rdfpipe -i turtle -o turtle' /path/to/sp2b/src/
@@ -223,7 +247,7 @@ example:
)
ap.add_argument(
- "--max", type=int, default=1000000, help="maximum triple count"
+ "--max", type=int, default=3000000, help="maximum triple count"
)
ap.add_argument(
"--run",
@@ -241,12 +265,14 @@ example:
ap.add_argument(
"--no-plot", action="store_true", help="do not plot benchmarks"
)
+ ap.add_argument("--steps", type=int, default=6, help="number of steps")
+
ap.add_argument("sp2b_dir", help="path to sp2b test data generator")
args = ap.parse_args(sys.argv[1:])
progs = ["serdi -b -f -i turtle -o turtle"] + args.run
- min_n = int(args.max / 10)
+ min_n = int(args.max / args.steps)
max_n = args.max
step = min_n