diff --git a/out/figs/dyn_longrun_200.pdf b/out/figs/dyn_longrun_200.pdf index 435a028..e04e46a 100644 Binary files a/out/figs/dyn_longrun_200.pdf and b/out/figs/dyn_longrun_200.pdf differ diff --git a/out/figs/dyn_longrun_200.svg b/out/figs/dyn_longrun_200.svg index 22a5c38..9657ea9 100644 --- a/out/figs/dyn_longrun_200.svg +++ b/out/figs/dyn_longrun_200.svg @@ -6,7 +6,7 @@ - 2026-06-05T03:25:37.157024 + 2026-06-05T03:30:52.925244 image/svg+xml @@ -40,18 +40,18 @@ z +" clip-path="url(#pc8b1e9d6e4)" style="fill: none; stroke-dasharray: 3.2,2.4; stroke-dashoffset: 0; stroke: #8c8c8c; stroke-width: 0.8"/> - - + @@ -87,7 +87,7 @@ z - + @@ -128,7 +128,7 @@ z - + @@ -159,7 +159,7 @@ z - + @@ -174,7 +174,7 @@ z - + @@ -436,12 +436,12 @@ z - - + @@ -465,7 +465,7 @@ z - + @@ -480,7 +480,7 @@ z - + @@ -516,7 +516,7 @@ z - + @@ -563,7 +563,7 @@ z - + @@ -619,7 +619,7 @@ z - + @@ -756,7 +756,7 @@ L 189.768429 104.991779 L 203.903836 104.991779 L 204.689136 104.120737 L 204.689136 104.120737 -" clip-path="url(#p123d1eb0e0)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pc8b1e9d6e4)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pc8b1e9d6e4)" style="fill: none; stroke: #c1432b; stroke-width: 1.8; stroke-linecap: round"/> +" clip-path="url(#pc8b1e9d6e4)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pc8b1e9d6e4)" style="fill: none; stroke: #2f7d4f; stroke-width: 1.8; stroke-linecap: round"/> - + @@ -1076,7 +1076,7 @@ z - + @@ -1090,7 +1090,7 @@ z - + @@ -1105,7 +1105,7 @@ z - + @@ -1120,7 +1120,7 @@ z - + @@ -1156,42 +1156,42 @@ z - + - + - + - + - + - + @@ -1200,13 +1200,13 @@ z +" clip-path="url(#pb7ee5b5d97)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pb7ee5b5d97)" style="fill: none; stroke: #c1432b; stroke-width: 1.8; stroke-linecap: round"/> +" clip-path="url(#pb7ee5b5d97)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pb7ee5b5d97)" style="fill: none; stroke: #2f7d4f; stroke-width: 1.8; stroke-linecap: round"/> + - + diff --git a/out/figs/dyn_longrun_200_hack_overlay.pdf b/out/figs/dyn_longrun_200_hack_overlay.pdf index 53239fe..41c707b 100644 Binary files a/out/figs/dyn_longrun_200_hack_overlay.pdf and b/out/figs/dyn_longrun_200_hack_overlay.pdf differ diff --git a/out/figs/dyn_longrun_200_hack_overlay.png b/out/figs/dyn_longrun_200_hack_overlay.png index 52a1338..d6d4e68 100644 Binary files a/out/figs/dyn_longrun_200_hack_overlay.png and b/out/figs/dyn_longrun_200_hack_overlay.png differ diff --git a/out/figs/dyn_longrun_200_hack_overlay.svg b/out/figs/dyn_longrun_200_hack_overlay.svg index 72bd552..92038d2 100644 --- a/out/figs/dyn_longrun_200_hack_overlay.svg +++ b/out/figs/dyn_longrun_200_hack_overlay.svg @@ -1,12 +1,12 @@ - + - 2026-06-05T03:25:37.601250 + 2026-06-05T03:30:53.366156 image/svg+xml @@ -22,8 +22,8 @@ @@ -31,8 +31,8 @@ z @@ -41,82 +41,54 @@ z - - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - + @@ -159,9 +131,9 @@ z - + - + @@ -200,9 +172,9 @@ z - + - + @@ -236,9 +208,9 @@ z - + - + @@ -283,9 +255,9 @@ z - + - + @@ -339,9 +311,9 @@ z - + - + @@ -537,63 +509,63 @@ z - - + + - - + + - - + + - - + + - - + + - - - + + + + + - + + + + - + - + - - + + - + - + - - + + - + - - + + - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - + - + - - + + - + - - - - - - - - - - - - - - - - + - + - - + + - + - - - - - - - - - - - - - - - - + - + - + - + - + - + - + @@ -1084,12 +996,12 @@ z - + - + - + @@ -1099,12 +1011,12 @@ z - + - + - + @@ -1114,12 +1026,12 @@ z - + - + - + @@ -1129,12 +1041,12 @@ z - + - + - + @@ -1144,12 +1056,12 @@ z - + - + - + @@ -1158,7 +1070,7 @@ z - + @@ -1174,148 +1086,148 @@ z - - + + - - + + - - + + - - + + - + - + - - + + - - + + diff --git a/out/figs/dyn_longrun_200_train_deploy.pdf b/out/figs/dyn_longrun_200_train_deploy.pdf index c93994e..fee2b9a 100644 Binary files a/out/figs/dyn_longrun_200_train_deploy.pdf and b/out/figs/dyn_longrun_200_train_deploy.pdf differ diff --git a/out/figs/dyn_longrun_200_train_deploy.svg b/out/figs/dyn_longrun_200_train_deploy.svg index e7098f3..20e03cd 100644 --- a/out/figs/dyn_longrun_200_train_deploy.svg +++ b/out/figs/dyn_longrun_200_train_deploy.svg @@ -6,7 +6,7 @@ - 2026-06-05T03:25:37.940817 + 2026-06-05T03:30:53.699039 image/svg+xml @@ -41,12 +41,12 @@ z - - + @@ -82,7 +82,7 @@ z - + @@ -123,7 +123,7 @@ z - + @@ -154,7 +154,7 @@ z - + @@ -169,7 +169,7 @@ z - + @@ -431,12 +431,12 @@ z - - + @@ -460,7 +460,7 @@ z - + @@ -475,7 +475,7 @@ z - + @@ -511,7 +511,7 @@ z - + @@ -558,7 +558,7 @@ z - + @@ -614,7 +614,7 @@ z - + @@ -692,7 +692,7 @@ L 222.278179 130.877865 L 239.494268 130.877865 L 240.450717 129.597283 L 240.450717 129.597283 -" clip-path="url(#pdf061196e4)" style="fill: none; stroke-dasharray: 7.2,3.6; stroke-dashoffset: 0; stroke: #c1432b; stroke-width: 1.8"/> +" clip-path="url(#pbfd65d4e4b)" style="fill: none; stroke-dasharray: 7.2,3.6; stroke-dashoffset: 0; stroke: #c1432b; stroke-width: 1.8"/> +" clip-path="url(#pbfd65d4e4b)" style="fill: none; stroke: #c1432b; stroke-width: 1.8; stroke-linecap: round"/> +" clip-path="url(#pbfd65d4e4b)" style="fill: none; stroke-dasharray: 7.2,3.6; stroke-dashoffset: 0; stroke: #2f7d4f; stroke-width: 1.8"/> +" clip-path="url(#pbfd65d4e4b)" style="fill: none; stroke: #2f7d4f; stroke-width: 1.8; stroke-linecap: round"/> - + @@ -854,7 +854,7 @@ z - + @@ -868,7 +868,7 @@ z - + @@ -883,7 +883,7 @@ z - + @@ -898,7 +898,7 @@ z - + @@ -934,42 +934,42 @@ z - + - + - + - + - + - + @@ -978,13 +978,13 @@ z +" clip-path="url(#p8b578bf6c3)" style="fill: none; stroke-dasharray: 7.2,3.6; stroke-dashoffset: 0; stroke: #c1432b; stroke-width: 1.8"/> +" clip-path="url(#p8b578bf6c3)" style="fill: none; stroke: #c1432b; stroke-width: 1.8; stroke-linecap: round"/> +" clip-path="url(#p8b578bf6c3)" style="fill: none; stroke-dasharray: 7.2,3.6; stroke-dashoffset: 0; stroke: #2f7d4f; stroke-width: 1.8"/> +" clip-path="url(#p8b578bf6c3)" style="fill: none; stroke: #2f7d4f; stroke-width: 1.8; stroke-linecap: round"/> + - + diff --git a/out/figs/dyn_sub4.pdf b/out/figs/dyn_sub4.pdf index 55253c4..c83fe2f 100644 Binary files a/out/figs/dyn_sub4.pdf and b/out/figs/dyn_sub4.pdf differ diff --git a/out/figs/dyn_sub4.svg b/out/figs/dyn_sub4.svg index 6d5d48d..9605832 100644 --- a/out/figs/dyn_sub4.svg +++ b/out/figs/dyn_sub4.svg @@ -6,7 +6,7 @@ - 2026-06-05T03:25:29.951339 + 2026-06-05T03:30:46.415244 image/svg+xml @@ -40,18 +40,18 @@ z +" clip-path="url(#pd6750f6782)" style="fill: none; stroke-dasharray: 3.2,2.4; stroke-dashoffset: 0; stroke: #8c8c8c; stroke-width: 0.8"/> - - + @@ -87,7 +87,7 @@ z - + @@ -117,7 +117,7 @@ z - + @@ -157,7 +157,7 @@ z - + @@ -205,7 +205,7 @@ z - + @@ -240,7 +240,7 @@ z - + @@ -281,7 +281,7 @@ z - + @@ -548,12 +548,12 @@ z - - + @@ -577,7 +577,7 @@ z - + @@ -592,7 +592,7 @@ z - + @@ -607,7 +607,7 @@ z - + @@ -622,7 +622,7 @@ z - + @@ -678,7 +678,7 @@ z - + @@ -855,7 +855,7 @@ L 197.158675 98.861038 L 199.814451 98.861038 L 202.470228 98.861038 L 205.126005 100.398536 -" clip-path="url(#p8ab2e37765)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pd6750f6782)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pd6750f6782)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pd6750f6782)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pd6750f6782)" style="fill: none; stroke: #c1432b; stroke-width: 1.8; stroke-linecap: round"/> +" clip-path="url(#pd6750f6782)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pd6750f6782)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pd6750f6782)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pd6750f6782)" style="fill: none; stroke: #2f7d4f; stroke-width: 1.8; stroke-linecap: round"/> +" clip-path="url(#pa8f1e9e40a)" style="fill: none; stroke-dasharray: 3.2,2.4; stroke-dashoffset: 0; stroke: #8c8c8c; stroke-width: 0.8"/> - + @@ -1553,7 +1553,7 @@ L 331.821041 30.116625 - + @@ -1567,7 +1567,7 @@ L 331.821041 30.116625 - + @@ -1581,7 +1581,7 @@ L 331.821041 30.116625 - + @@ -1595,7 +1595,7 @@ L 331.821041 30.116625 - + @@ -1609,7 +1609,7 @@ L 331.821041 30.116625 - + @@ -1623,7 +1623,7 @@ L 331.821041 30.116625 - + @@ -1658,42 +1658,42 @@ L 331.821041 30.116625 - + - + - + - + - + - + @@ -1759,7 +1759,7 @@ L 400.871241 139.604548 L 403.527018 139.604548 L 406.182795 139.604548 L 408.838572 139.604548 -" clip-path="url(#p0d0a4d9343)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pa8f1e9e40a)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pa8f1e9e40a)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pa8f1e9e40a)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pa8f1e9e40a)" style="fill: none; stroke: #c1432b; stroke-width: 1.8; stroke-linecap: round"/> +" clip-path="url(#pa8f1e9e40a)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pa8f1e9e40a)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pa8f1e9e40a)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pa8f1e9e40a)" style="fill: none; stroke: #2f7d4f; stroke-width: 1.8; stroke-linecap: round"/> + - + diff --git a/out/figs/dyn_sub4_hack_overlay.pdf b/out/figs/dyn_sub4_hack_overlay.pdf index f72c314..513dfdd 100644 Binary files a/out/figs/dyn_sub4_hack_overlay.pdf and b/out/figs/dyn_sub4_hack_overlay.pdf differ diff --git a/out/figs/dyn_sub4_hack_overlay.png b/out/figs/dyn_sub4_hack_overlay.png index dde58ed..a7811a9 100644 Binary files a/out/figs/dyn_sub4_hack_overlay.png and b/out/figs/dyn_sub4_hack_overlay.png differ diff --git a/out/figs/dyn_sub4_hack_overlay.svg b/out/figs/dyn_sub4_hack_overlay.svg index bedf981..536059d 100644 --- a/out/figs/dyn_sub4_hack_overlay.svg +++ b/out/figs/dyn_sub4_hack_overlay.svg @@ -1,12 +1,12 @@ - + - 2026-06-05T03:25:30.395321 + 2026-06-05T03:30:46.887995 image/svg+xml @@ -22,8 +22,8 @@ @@ -31,8 +31,8 @@ z @@ -41,54 +41,54 @@ z - - + - + - + - + - + - + - + @@ -97,12 +97,12 @@ L 0 3.5 - - + @@ -147,7 +147,7 @@ z - + @@ -188,7 +188,7 @@ z - + @@ -224,7 +224,7 @@ z - + @@ -271,7 +271,7 @@ z - + @@ -327,7 +327,7 @@ z - + @@ -524,508 +524,508 @@ z - + - + - + - + - + - + - + - + - + - - - + + - + - - - + + + + + - + + + + - + - + @@ -1231,12 +1241,12 @@ z - + - + @@ -1244,12 +1254,12 @@ z - + - + @@ -1258,12 +1268,12 @@ z - + - + @@ -1272,12 +1282,12 @@ z - + - + - + - + @@ -1334,12 +1344,12 @@ z - + - + - + - + @@ -1388,7 +1398,7 @@ z - + - + @@ -1527,7 +1537,7 @@ z - + @@ -1542,7 +1552,7 @@ z - + @@ -1557,7 +1567,7 @@ z - + @@ -1572,7 +1582,7 @@ z - + @@ -1587,7 +1597,7 @@ z - + @@ -1616,527 +1626,527 @@ z - + - + - + - + - + - + - + - + - + - + - - + + - - + + diff --git a/out/figs/dyn_sub4_train_deploy.pdf b/out/figs/dyn_sub4_train_deploy.pdf index eecf5e4..4294675 100644 Binary files a/out/figs/dyn_sub4_train_deploy.pdf and b/out/figs/dyn_sub4_train_deploy.pdf differ diff --git a/out/figs/dyn_sub4_train_deploy.svg b/out/figs/dyn_sub4_train_deploy.svg index 689b373..d3d3826 100644 --- a/out/figs/dyn_sub4_train_deploy.svg +++ b/out/figs/dyn_sub4_train_deploy.svg @@ -6,7 +6,7 @@ - 2026-06-05T03:25:30.730474 + 2026-06-05T03:30:47.241059 image/svg+xml @@ -41,12 +41,12 @@ z - - + @@ -82,7 +82,7 @@ z - + @@ -112,7 +112,7 @@ z - + @@ -152,7 +152,7 @@ z - + @@ -200,7 +200,7 @@ z - + @@ -235,7 +235,7 @@ z - + @@ -276,7 +276,7 @@ z - + @@ -543,12 +543,12 @@ z - - + @@ -572,7 +572,7 @@ z - + @@ -587,7 +587,7 @@ z - + @@ -602,7 +602,7 @@ z - + @@ -617,7 +617,7 @@ z - + @@ -673,7 +673,7 @@ z - + @@ -791,7 +791,7 @@ L 231.275263 122.768725 L 234.509778 122.768725 L 237.744292 122.768725 L 240.978807 123.386359 -" clip-path="url(#p6d868a6acc)" style="fill: none; stroke-dasharray: 7.2,3.6; stroke-dashoffset: 0; stroke: #c1432b; stroke-width: 1.8"/> +" clip-path="url(#pc20f6c1d4e)" style="fill: none; stroke-dasharray: 7.2,3.6; stroke-dashoffset: 0; stroke: #c1432b; stroke-width: 1.8"/> +" clip-path="url(#pc20f6c1d4e)" style="fill: none; stroke: #c1432b; stroke-width: 1.8; stroke-linecap: round"/> +" clip-path="url(#pc20f6c1d4e)" style="fill: none; stroke-dasharray: 7.2,3.6; stroke-dashoffset: 0; stroke: #2f7d4f; stroke-width: 1.8"/> +" clip-path="url(#pc20f6c1d4e)" style="fill: none; stroke: #2f7d4f; stroke-width: 1.8; stroke-linecap: round"/> - + @@ -1069,7 +1069,7 @@ z - + @@ -1083,7 +1083,7 @@ z - + @@ -1097,7 +1097,7 @@ z - + @@ -1111,7 +1111,7 @@ z - + @@ -1125,7 +1125,7 @@ z - + @@ -1139,7 +1139,7 @@ z - + @@ -1174,42 +1174,42 @@ z - + - + - + - + - + - + @@ -1275,7 +1275,7 @@ L 455.495263 179.430722 L 458.729778 179.430722 L 461.964292 179.430722 L 465.198807 179.314432 -" clip-path="url(#pc2f7daaff6)" style="fill: none; stroke-dasharray: 7.2,3.6; stroke-dashoffset: 0; stroke: #c1432b; stroke-width: 1.8"/> +" clip-path="url(#p062c9f4b2a)" style="fill: none; stroke-dasharray: 7.2,3.6; stroke-dashoffset: 0; stroke: #c1432b; stroke-width: 1.8"/> +" clip-path="url(#p062c9f4b2a)" style="fill: none; stroke: #c1432b; stroke-width: 1.8; stroke-linecap: round"/> +" clip-path="url(#p062c9f4b2a)" style="fill: none; stroke-dasharray: 7.2,3.6; stroke-dashoffset: 0; stroke: #2f7d4f; stroke-width: 1.8"/> +" clip-path="url(#p062c9f4b2a)" style="fill: none; stroke: #2f7d4f; stroke-width: 1.8; stroke-linecap: round"/> + - + diff --git a/out/figs/substrate_aggregate.pdf b/out/figs/substrate_aggregate.pdf index 6ef2932..6bdb7f7 100644 Binary files a/out/figs/substrate_aggregate.pdf and b/out/figs/substrate_aggregate.pdf differ diff --git a/out/figs/substrate_aggregate.svg b/out/figs/substrate_aggregate.svg index 7c06971..257f60c 100644 --- a/out/figs/substrate_aggregate.svg +++ b/out/figs/substrate_aggregate.svg @@ -6,7 +6,7 @@ - 2026-06-05T03:14:21.296658 + 2026-06-05T03:31:08.966297 image/svg+xml @@ -40,18 +40,18 @@ z +" clip-path="url(#pead795804b)" style="fill: none; stroke-dasharray: 3.2,2.4; stroke-dashoffset: 0; stroke: #8c8c8c; stroke-width: 0.8"/> - - + @@ -87,7 +87,7 @@ z - + @@ -117,7 +117,7 @@ z - + @@ -157,7 +157,7 @@ z - + @@ -205,7 +205,7 @@ z - + @@ -240,7 +240,7 @@ z - + @@ -281,7 +281,7 @@ z - + @@ -548,12 +548,12 @@ z - - + @@ -577,7 +577,7 @@ z - + @@ -592,7 +592,7 @@ z - + @@ -607,7 +607,7 @@ z - + @@ -622,7 +622,7 @@ z - + @@ -678,7 +678,7 @@ z - + @@ -855,7 +855,7 @@ L 213.857023 93.861601 L 216.796063 90.861263 L 219.735103 90.164465 L 222.674143 93.610216 -" clip-path="url(#p3f20b8d9f6)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pead795804b)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pead795804b)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pead795804b)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pead795804b)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pead795804b)" style="fill: none; stroke: #c1432b; stroke-width: 1.8; stroke-linecap: round"/> +" clip-path="url(#pead795804b)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pead795804b)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pead795804b)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pead795804b)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pead795804b)" style="fill: none; stroke: #2f7d4f; stroke-width: 1.8; stroke-linecap: round"/> +" clip-path="url(#p0279d00aa0)" style="fill: none; stroke-dasharray: 3.2,2.4; stroke-dashoffset: 0; stroke: #8c8c8c; stroke-width: 0.8"/> - + @@ -1571,7 +1571,7 @@ L 277.758351 30.116625 - + @@ -1585,7 +1585,7 @@ L 277.758351 30.116625 - + @@ -1599,7 +1599,7 @@ L 277.758351 30.116625 - + @@ -1613,7 +1613,7 @@ L 277.758351 30.116625 - + @@ -1627,7 +1627,7 @@ L 277.758351 30.116625 - + @@ -1641,7 +1641,7 @@ L 277.758351 30.116625 - + @@ -1676,42 +1676,42 @@ L 277.758351 30.116625 - + - + - + - + - + - + @@ -1777,7 +1777,7 @@ L 419.567023 106.424997 L 422.506063 103.147143 L 425.445103 97.051624 L 428.384143 92.987945 -" clip-path="url(#pa97eb2865c)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#p0279d00aa0)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#p0279d00aa0)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#p0279d00aa0)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#p0279d00aa0)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#p0279d00aa0)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#p0279d00aa0)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#p0279d00aa0)" style="fill: none; stroke: #c1432b; stroke-width: 1.8; stroke-linecap: round"/> +" clip-path="url(#p0279d00aa0)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#p0279d00aa0)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#p0279d00aa0)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#p0279d00aa0)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#p0279d00aa0)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#p0279d00aa0)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#p0279d00aa0)" style="fill: none; stroke: #2f7d4f; stroke-width: 1.8; stroke-linecap: round"/> +" clip-path="url(#p494698e85a)" style="fill: none; stroke-dasharray: 3.2,2.4; stroke-dashoffset: 0; stroke: #8c8c8c; stroke-width: 0.8"/> - + @@ -2113,7 +2113,7 @@ L 501.83735 30.116625 - + @@ -2127,7 +2127,7 @@ L 501.83735 30.116625 - + @@ -2141,7 +2141,7 @@ L 501.83735 30.116625 - + @@ -2155,7 +2155,7 @@ L 501.83735 30.116625 - + @@ -2169,7 +2169,7 @@ L 501.83735 30.116625 - + @@ -2183,7 +2183,7 @@ L 501.83735 30.116625 - + @@ -2218,42 +2218,42 @@ L 501.83735 30.116625 - + - + - + - + - + - + @@ -2319,7 +2319,7 @@ L 625.277023 94.278855 L 628.216063 98.959998 L 631.155103 91.653339 L 634.094143 90.692516 -" clip-path="url(#p364141d41d)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#p494698e85a)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#p494698e85a)" style="fill: none; stroke: #c1432b; stroke-width: 1.8; stroke-linecap: round"/> +" clip-path="url(#p494698e85a)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#p494698e85a)" style="fill: none; stroke: #2f7d4f; stroke-width: 1.8; stroke-linecap: round"/> +" clip-path="url(#pbf03b901e3)" style="fill: none; stroke-dasharray: 3.2,2.4; stroke-dashoffset: 0; stroke: #8c8c8c; stroke-width: 0.8"/> - + @@ -2599,7 +2599,7 @@ L 717.83399 30.116625 - + @@ -2613,7 +2613,7 @@ L 717.83399 30.116625 - + @@ -2627,7 +2627,7 @@ L 717.83399 30.116625 - + @@ -2641,7 +2641,7 @@ L 717.83399 30.116625 - + @@ -2655,7 +2655,7 @@ L 717.83399 30.116625 - + @@ -2669,7 +2669,7 @@ L 717.83399 30.116625 - + @@ -2704,42 +2704,42 @@ L 717.83399 30.116625 - + - + - + - + - + - + @@ -2758,7 +2758,7 @@ L 692.852151 139.604548 L 695.791191 136.997692 L 698.730231 133.956361 L 701.669271 128.018524 -" clip-path="url(#p23e63e4571)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pbf03b901e3)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pbf03b901e3)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pbf03b901e3)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pbf03b901e3)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pbf03b901e3)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pbf03b901e3)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pbf03b901e3)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pbf03b901e3)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pbf03b901e3)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pbf03b901e3)" style="fill: none; stroke: #c1432b; stroke-width: 1.8; stroke-linecap: round"/> +" clip-path="url(#pbf03b901e3)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pbf03b901e3)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pbf03b901e3)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pbf03b901e3)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pbf03b901e3)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pbf03b901e3)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pbf03b901e3)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pbf03b901e3)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pbf03b901e3)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pbf03b901e3)" style="fill: none; stroke: #2f7d4f; stroke-width: 1.8; stroke-linecap: round"/> + - + - + - + diff --git a/out/figs/substrate_aggregate_hack_overlay.pdf b/out/figs/substrate_aggregate_hack_overlay.pdf index 83ee4ec..acac1df 100644 Binary files a/out/figs/substrate_aggregate_hack_overlay.pdf and b/out/figs/substrate_aggregate_hack_overlay.pdf differ diff --git a/out/figs/substrate_aggregate_hack_overlay.png b/out/figs/substrate_aggregate_hack_overlay.png index c5648b3..3ca84e2 100644 Binary files a/out/figs/substrate_aggregate_hack_overlay.png and b/out/figs/substrate_aggregate_hack_overlay.png differ diff --git a/out/figs/substrate_aggregate_hack_overlay.svg b/out/figs/substrate_aggregate_hack_overlay.svg index d72a9d4..a43e91a 100644 --- a/out/figs/substrate_aggregate_hack_overlay.svg +++ b/out/figs/substrate_aggregate_hack_overlay.svg @@ -1,12 +1,12 @@ - + - 2026-06-05T03:14:21.819453 + 2026-06-05T03:31:09.535245 image/svg+xml @@ -22,8 +22,8 @@ @@ -31,8 +31,8 @@ z @@ -41,54 +41,54 @@ z - - + - + - + - + - + - + - + @@ -97,12 +97,12 @@ L 0 3.5 - - + @@ -147,7 +147,7 @@ z - + @@ -188,7 +188,7 @@ z - + @@ -224,7 +224,7 @@ z - + @@ -271,7 +271,7 @@ z - + @@ -327,7 +327,7 @@ z - + @@ -524,985 +524,985 @@ z - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - + + - + - - - + + - + - - - + + - + - - - + + + + + - + - - + - + + + + - + + + + - + @@ -1815,10 +1830,10 @@ z - + @@ -1827,12 +1842,12 @@ z - + - + @@ -1840,12 +1855,12 @@ z - + - + @@ -1854,12 +1869,12 @@ z - + - + @@ -1868,12 +1883,12 @@ z - + - + - + - + @@ -1930,12 +1945,12 @@ z - + - + - + - + @@ -1984,7 +1999,7 @@ z - + - + @@ -2092,7 +2107,7 @@ z - + @@ -2107,7 +2122,7 @@ z - + @@ -2122,7 +2137,7 @@ z - + @@ -2137,7 +2152,7 @@ z - + @@ -2152,7 +2167,7 @@ z - + @@ -2181,1004 +2196,1004 @@ z - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + diff --git a/out/figs/substrate_by_hack.pdf b/out/figs/substrate_by_hack.pdf index 6ecbb84..d0a17b9 100644 Binary files a/out/figs/substrate_by_hack.pdf and b/out/figs/substrate_by_hack.pdf differ diff --git a/out/figs/substrate_by_hack.svg b/out/figs/substrate_by_hack.svg index 3b87622..2901fb0 100644 --- a/out/figs/substrate_by_hack.svg +++ b/out/figs/substrate_by_hack.svg @@ -6,7 +6,7 @@ - 2026-06-05T03:14:20.624896 + 2026-06-05T03:31:08.289247 image/svg+xml @@ -41,12 +41,12 @@ z - - + @@ -82,7 +82,7 @@ z - + @@ -112,7 +112,7 @@ z - + @@ -152,7 +152,7 @@ z - + @@ -200,7 +200,7 @@ z - + @@ -453,16 +453,16 @@ z +" clip-path="url(#pe2d9f10a73)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - - + @@ -476,11 +476,11 @@ L -3.5 0 +" clip-path="url(#pe2d9f10a73)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -494,11 +494,11 @@ L 241.648125 182.246725 +" clip-path="url(#pe2d9f10a73)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -512,11 +512,11 @@ L 241.648125 151.823325 +" clip-path="url(#pe2d9f10a73)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -530,11 +530,11 @@ L 241.648125 121.399924 +" clip-path="url(#pe2d9f10a73)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -548,11 +548,11 @@ L 241.648125 90.976523 +" clip-path="url(#pe2d9f10a73)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -593,11 +593,11 @@ z +" clip-path="url(#pe2d9f10a73)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -917,7 +917,7 @@ L 163.870312 163.171881 L 168.340302 99.082635 L 172.810291 88.074203 L 177.28028 80.211037 -" clip-path="url(#pc6ba3d7184)" style="fill: none; stroke: #444444; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: square"/> +" clip-path="url(#pe2d9f10a73)" style="fill: none; stroke: #444444; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: square"/> +" clip-path="url(#pe2d9f10a73)" style="fill: none; stroke: #444444; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: square"/> +" clip-path="url(#pe2d9f10a73)" style="fill: none; stroke: #444444; stroke-width: 1.8; stroke-linecap: round"/> - + @@ -1134,7 +1134,7 @@ z - + @@ -1148,7 +1148,7 @@ z - + @@ -1162,7 +1162,7 @@ z - + @@ -1176,7 +1176,7 @@ z - + @@ -1207,11 +1207,11 @@ z +" clip-path="url(#pfbb4472c6a)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -1219,11 +1219,11 @@ L 463.355625 212.670126 +" clip-path="url(#pfbb4472c6a)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -1231,11 +1231,11 @@ L 463.355625 182.246725 +" clip-path="url(#pfbb4472c6a)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -1243,11 +1243,11 @@ L 463.355625 151.823325 +" clip-path="url(#pfbb4472c6a)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -1255,11 +1255,11 @@ L 463.355625 121.399924 +" clip-path="url(#pfbb4472c6a)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -1267,11 +1267,11 @@ L 463.355625 90.976523 +" clip-path="url(#pfbb4472c6a)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -1279,11 +1279,11 @@ L 463.355625 60.553123 +" clip-path="url(#pfbb4472c6a)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -1322,7 +1322,7 @@ L 385.577812 102.78389 L 390.047802 116.795157 L 394.517791 144.188005 L 398.98778 42.060723 -" clip-path="url(#p74d8534f1e)" style="fill: none; stroke: #444444; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: square"/> +" clip-path="url(#pfbb4472c6a)" style="fill: none; stroke: #444444; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: square"/> +" clip-path="url(#pfbb4472c6a)" style="fill: none; stroke: #444444; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: square"/> +" clip-path="url(#pfbb4472c6a)" style="fill: none; stroke: #444444; stroke-width: 1.8; stroke-linecap: round"/> - + @@ -1514,7 +1514,7 @@ z - + @@ -1528,7 +1528,7 @@ z - + @@ -1542,7 +1542,7 @@ z - + @@ -1556,7 +1556,7 @@ z - + @@ -1587,11 +1587,11 @@ z +" clip-path="url(#pe1864eaba4)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -1599,11 +1599,11 @@ L 685.063125 212.670126 +" clip-path="url(#pe1864eaba4)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -1611,11 +1611,11 @@ L 685.063125 182.246725 +" clip-path="url(#pe1864eaba4)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -1623,11 +1623,11 @@ L 685.063125 151.823325 +" clip-path="url(#pe1864eaba4)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -1635,11 +1635,11 @@ L 685.063125 121.399924 +" clip-path="url(#pe1864eaba4)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -1647,11 +1647,11 @@ L 685.063125 90.976523 +" clip-path="url(#pe1864eaba4)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -1659,11 +1659,11 @@ L 685.063125 60.553123 +" clip-path="url(#pe1864eaba4)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -1702,7 +1702,7 @@ L 607.285312 199.712957 L 611.755302 203.415005 L 616.225291 197.366925 L 620.69528 201.739268 -" clip-path="url(#p9b4254ae40)" style="fill: none; stroke: #444444; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: square"/> +" clip-path="url(#pe1864eaba4)" style="fill: none; stroke: #444444; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: square"/> +" clip-path="url(#pe1864eaba4)" style="fill: none; stroke: #444444; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: square"/> +" clip-path="url(#pe1864eaba4)" style="fill: none; stroke: #444444; stroke-width: 1.8; stroke-linecap: round"/> - + @@ -1892,7 +1892,7 @@ z - + @@ -1906,7 +1906,7 @@ z - + @@ -1920,7 +1920,7 @@ z - + @@ -1934,7 +1934,7 @@ z - + @@ -1965,11 +1965,11 @@ z +" clip-path="url(#p3f3163d0c2)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -1977,11 +1977,11 @@ L 906.770625 212.670126 +" clip-path="url(#p3f3163d0c2)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -1989,11 +1989,11 @@ L 906.770625 182.246725 +" clip-path="url(#p3f3163d0c2)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -2001,11 +2001,11 @@ L 906.770625 151.823325 +" clip-path="url(#p3f3163d0c2)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -2013,11 +2013,11 @@ L 906.770625 121.399924 +" clip-path="url(#p3f3163d0c2)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -2025,11 +2025,11 @@ L 906.770625 90.976523 +" clip-path="url(#p3f3163d0c2)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -2037,11 +2037,11 @@ L 906.770625 60.553123 +" clip-path="url(#p3f3163d0c2)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -2080,7 +2080,7 @@ L 828.992813 212.670126 L 833.462802 212.670126 L 837.932791 212.670126 L 842.40278 212.670126 -" clip-path="url(#p12b8b4a41a)" style="fill: none; stroke: #444444; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: square"/> +" clip-path="url(#p3f3163d0c2)" style="fill: none; stroke: #444444; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: square"/> +" clip-path="url(#p3f3163d0c2)" style="fill: none; stroke: #444444; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: square"/> +" clip-path="url(#p3f3163d0c2)" style="fill: none; stroke: #444444; stroke-width: 1.8; stroke-linecap: round"/> + - + - + - + diff --git a/out/figs/substrate_by_method.pdf b/out/figs/substrate_by_method.pdf index 01aea69..ff3d163 100644 Binary files a/out/figs/substrate_by_method.pdf and b/out/figs/substrate_by_method.pdf differ diff --git a/out/figs/substrate_by_method.svg b/out/figs/substrate_by_method.svg index accbfcf..c275710 100644 --- a/out/figs/substrate_by_method.svg +++ b/out/figs/substrate_by_method.svg @@ -6,7 +6,7 @@ - 2026-06-05T03:14:20.065041 + 2026-06-05T03:31:07.735964 image/svg+xml @@ -41,12 +41,12 @@ z - - + @@ -82,7 +82,7 @@ z - + @@ -112,7 +112,7 @@ z - + @@ -152,7 +152,7 @@ z - + @@ -200,7 +200,7 @@ z - + @@ -453,16 +453,16 @@ z +" clip-path="url(#p653b69ae85)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - - + @@ -476,11 +476,11 @@ L -3.5 0 +" clip-path="url(#p653b69ae85)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -494,11 +494,11 @@ L 212.979856 182.246725 +" clip-path="url(#p653b69ae85)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -512,11 +512,11 @@ L 212.979856 151.823325 +" clip-path="url(#p653b69ae85)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -530,11 +530,11 @@ L 212.979856 121.399924 +" clip-path="url(#p653b69ae85)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -548,11 +548,11 @@ L 212.979856 90.976523 +" clip-path="url(#p653b69ae85)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -593,11 +593,11 @@ z +" clip-path="url(#p653b69ae85)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.35; stroke-width: 0.4; stroke-linecap: square"/> - + @@ -917,7 +917,7 @@ L 158.842493 163.171881 L 163.139109 99.082635 L 167.435725 88.074203 L 171.732341 80.211037 -" clip-path="url(#p4644f827d5)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.3; stroke-width: 0.6; stroke-linecap: square"/> +" clip-path="url(#p653b69ae85)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.3; stroke-width: 0.6; stroke-linecap: square"/> +" clip-path="url(#p653b69ae85)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.3; stroke-width: 0.6; stroke-linecap: square"/> +" clip-path="url(#p653b69ae85)" style="fill: none; stroke: #c1432b; stroke-width: 1.8; stroke-linecap: round"/> +" clip-path="url(#p653b69ae85)" style="fill: none; stroke: #7b3294; stroke-opacity: 0.3; stroke-width: 0.6; stroke-linecap: square"/> +" clip-path="url(#p653b69ae85)" style="fill: none; stroke: #7b3294; stroke-opacity: 0.3; stroke-width: 0.6; stroke-linecap: square"/> +" clip-path="url(#p653b69ae85)" style="fill: none; stroke: #7b3294; stroke-width: 1.8; stroke-linecap: round"/> +" clip-path="url(#p653b69ae85)" style="fill: none; stroke: #b8860b; stroke-opacity: 0.3; stroke-width: 0.6; stroke-linecap: square"/> +" clip-path="url(#p653b69ae85)" style="fill: none; stroke: #b8860b; stroke-opacity: 0.3; stroke-width: 0.6; stroke-linecap: square"/> +" clip-path="url(#p653b69ae85)" style="fill: none; stroke: #b8860b; stroke-width: 1.8; stroke-linecap: round"/> +" clip-path="url(#p653b69ae85)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.3; stroke-width: 0.6; stroke-linecap: square"/> +" clip-path="url(#p653b69ae85)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.3; stroke-width: 0.6; stroke-linecap: square"/> +" clip-path="url(#p653b69ae85)" style="fill: none; stroke: #2f7d4f; stroke-width: 1.8; stroke-linecap: round"/> + diff --git a/out/figs/train_vs_deploy_60.pdf b/out/figs/train_vs_deploy_60.pdf index 50d06bd..35c57fa 100644 Binary files a/out/figs/train_vs_deploy_60.pdf and b/out/figs/train_vs_deploy_60.pdf differ diff --git a/out/figs/train_vs_deploy_60.svg b/out/figs/train_vs_deploy_60.svg index ab1b98e..c2fd7d8 100644 --- a/out/figs/train_vs_deploy_60.svg +++ b/out/figs/train_vs_deploy_60.svg @@ -6,7 +6,7 @@ - 2026-06-05T03:25:20.898497 + 2026-06-05T03:30:59.724929 image/svg+xml @@ -40,18 +40,18 @@ z +" clip-path="url(#p8b32e399ed)" style="fill: none; stroke-dasharray: 3.2,2.4; stroke-dashoffset: 0; stroke: #8c8c8c; stroke-width: 0.8"/> - - + @@ -87,7 +87,7 @@ z - + @@ -117,7 +117,7 @@ z - + @@ -157,7 +157,7 @@ z - + @@ -205,7 +205,7 @@ z - + @@ -240,7 +240,7 @@ z - + @@ -281,7 +281,7 @@ z - + @@ -548,12 +548,12 @@ z - - + @@ -577,7 +577,7 @@ z - + @@ -592,7 +592,7 @@ z - + @@ -607,7 +607,7 @@ z - + @@ -622,7 +622,7 @@ z - + @@ -678,7 +678,7 @@ z - + @@ -855,7 +855,7 @@ L 197.158675 98.861038 L 199.814451 98.861038 L 202.470228 98.861038 L 205.126005 100.398536 -" clip-path="url(#p4569e67037)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#p8b32e399ed)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#p8b32e399ed)" style="fill: none; stroke: #c1432b; stroke-width: 1.8; stroke-linecap: round"/> +" clip-path="url(#p8b32e399ed)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#p8b32e399ed)" style="fill: none; stroke: #2f7d4f; stroke-width: 1.8; stroke-linecap: round"/> - + @@ -1295,7 +1295,7 @@ z - + @@ -1309,7 +1309,7 @@ z - + @@ -1323,7 +1323,7 @@ z - + @@ -1337,7 +1337,7 @@ z - + @@ -1351,7 +1351,7 @@ z - + @@ -1365,7 +1365,7 @@ z - + @@ -1400,42 +1400,42 @@ z - + - + - + - + - + - + @@ -1501,7 +1501,7 @@ L 400.871241 139.604548 L 403.527018 139.604548 L 406.182795 139.604548 L 408.838572 139.604548 -" clip-path="url(#pbe11fee266)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pb8a15f3f63)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pb8a15f3f63)" style="fill: none; stroke: #c1432b; stroke-width: 1.8; stroke-linecap: round"/> +" clip-path="url(#pb8a15f3f63)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/> +" clip-path="url(#pb8a15f3f63)" style="fill: none; stroke: #2f7d4f; stroke-width: 1.8; stroke-linecap: round"/> + - + diff --git a/out/figs/train_vs_deploy_60_hack_overlay.pdf b/out/figs/train_vs_deploy_60_hack_overlay.pdf index 5a06024..056c394 100644 Binary files a/out/figs/train_vs_deploy_60_hack_overlay.pdf and b/out/figs/train_vs_deploy_60_hack_overlay.pdf differ diff --git a/out/figs/train_vs_deploy_60_hack_overlay.png b/out/figs/train_vs_deploy_60_hack_overlay.png index fffbc95..0bb491f 100644 Binary files a/out/figs/train_vs_deploy_60_hack_overlay.png and b/out/figs/train_vs_deploy_60_hack_overlay.png differ diff --git a/out/figs/train_vs_deploy_60_hack_overlay.svg b/out/figs/train_vs_deploy_60_hack_overlay.svg index 9439b7a..368453c 100644 --- a/out/figs/train_vs_deploy_60_hack_overlay.svg +++ b/out/figs/train_vs_deploy_60_hack_overlay.svg @@ -1,12 +1,12 @@ - + - 2026-06-05T03:25:21.345304 + 2026-06-05T03:31:00.180103 image/svg+xml @@ -22,8 +22,8 @@ @@ -31,8 +31,8 @@ z @@ -41,54 +41,54 @@ z - - + - + - + - + - + - + - + @@ -97,12 +97,12 @@ L 0 3.5 - - + @@ -147,7 +147,7 @@ z - + @@ -188,7 +188,7 @@ z - + @@ -224,7 +224,7 @@ z - + @@ -271,7 +271,7 @@ z - + @@ -327,7 +327,7 @@ z - + @@ -524,256 +524,256 @@ z - + - + - + - + - + - - - + + + + + - + + + + - + - + @@ -959,12 +969,12 @@ z - + - + @@ -972,12 +982,12 @@ z - + - + @@ -986,12 +996,12 @@ z - + - + @@ -1000,12 +1010,12 @@ z - + - + - + - + @@ -1062,12 +1072,12 @@ z - + - + - + - + @@ -1116,7 +1126,7 @@ z - + - + @@ -1255,7 +1265,7 @@ z - + @@ -1270,7 +1280,7 @@ z - + @@ -1285,7 +1295,7 @@ z - + @@ -1300,7 +1310,7 @@ z - + @@ -1315,7 +1325,7 @@ z - + @@ -1344,275 +1354,275 @@ z - + - + - + - + - + - + - - + + - - + + diff --git a/out/figs/train_vs_deploy_60_train_deploy.pdf b/out/figs/train_vs_deploy_60_train_deploy.pdf index 2d5309b..4873037 100644 Binary files a/out/figs/train_vs_deploy_60_train_deploy.pdf and b/out/figs/train_vs_deploy_60_train_deploy.pdf differ diff --git a/out/figs/train_vs_deploy_60_train_deploy.svg b/out/figs/train_vs_deploy_60_train_deploy.svg index 9df59d5..44a5144 100644 --- a/out/figs/train_vs_deploy_60_train_deploy.svg +++ b/out/figs/train_vs_deploy_60_train_deploy.svg @@ -6,7 +6,7 @@ - 2026-06-05T03:25:21.697913 + 2026-06-05T03:31:00.529089 image/svg+xml @@ -41,12 +41,12 @@ z - - + @@ -82,7 +82,7 @@ z - + @@ -112,7 +112,7 @@ z - + @@ -152,7 +152,7 @@ z - + @@ -200,7 +200,7 @@ z - + @@ -235,7 +235,7 @@ z - + @@ -276,7 +276,7 @@ z - + @@ -543,12 +543,12 @@ z - - + @@ -572,7 +572,7 @@ z - + @@ -587,7 +587,7 @@ z - + @@ -602,7 +602,7 @@ z - + @@ -617,7 +617,7 @@ z - + @@ -673,7 +673,7 @@ z - + @@ -791,7 +791,7 @@ L 231.275263 121.864614 L 234.509778 121.864614 L 237.744292 121.864614 L 240.978807 124.125003 -" clip-path="url(#p29c5205ca7)" style="fill: none; stroke-dasharray: 7.2,3.6; stroke-dashoffset: 0; stroke: #c1432b; stroke-width: 1.8"/> +" clip-path="url(#p006785f810)" style="fill: none; stroke-dasharray: 7.2,3.6; stroke-dashoffset: 0; stroke: #c1432b; stroke-width: 1.8"/> +" clip-path="url(#p006785f810)" style="fill: none; stroke: #c1432b; stroke-width: 1.8; stroke-linecap: round"/> +" clip-path="url(#p006785f810)" style="fill: none; stroke-dasharray: 7.2,3.6; stroke-dashoffset: 0; stroke: #2f7d4f; stroke-width: 1.8"/> +" clip-path="url(#p006785f810)" style="fill: none; stroke: #2f7d4f; stroke-width: 1.8; stroke-linecap: round"/> - + @@ -1069,7 +1069,7 @@ z - + @@ -1083,7 +1083,7 @@ z - + @@ -1097,7 +1097,7 @@ z - + @@ -1111,7 +1111,7 @@ z - + @@ -1125,7 +1125,7 @@ z - + @@ -1139,7 +1139,7 @@ z - + @@ -1174,42 +1174,42 @@ z - + - + - + - + - + - + @@ -1275,7 +1275,7 @@ L 455.495263 147.982413 L 458.729778 147.982413 L 461.964292 147.982413 L 465.198807 145.8293 -" clip-path="url(#p9cc3748215)" style="fill: none; stroke-dasharray: 7.2,3.6; stroke-dashoffset: 0; stroke: #c1432b; stroke-width: 1.8"/> +" clip-path="url(#p11643125d9)" style="fill: none; stroke-dasharray: 7.2,3.6; stroke-dashoffset: 0; stroke: #c1432b; stroke-width: 1.8"/> +" clip-path="url(#p11643125d9)" style="fill: none; stroke: #c1432b; stroke-width: 1.8; stroke-linecap: round"/> +" clip-path="url(#p11643125d9)" style="fill: none; stroke-dasharray: 7.2,3.6; stroke-dashoffset: 0; stroke: #2f7d4f; stroke-width: 1.8"/> +" clip-path="url(#p11643125d9)" style="fill: none; stroke: #2f7d4f; stroke-width: 1.8; stroke-linecap: round"/> + - + diff --git a/scripts/plot_dynamics.py b/scripts/plot_dynamics.py index 2b5448e..e001711 100644 --- a/scripts/plot_dynamics.py +++ b/scripts/plot_dynamics.py @@ -382,16 +382,22 @@ def _overlay_panel(ax, by_arm, arms, key, *, label, with_onset, label_arms, ylim if not label_arms: # other panel shares colours -- redundant ink return ends.sort(key=lambda e: e[0]) # bottom-to-top by endpoint - gap = 0.052 * (ylim[1] - ylim[0]) # min y-separation, scaled to the range + gap = 0.06 * (ylim[1] - ylim[0]) # min y-separation, scaled to the range + xmax = max(e[1] for e in ends) + dx = 0.035 * (xmax - ax.get_xlim()[0]) # horizontal clearance off the line end + x_lab = xmax + dx # ALL labels share one gutter x, leaders fan back + ax.set_xlim(right=xmax + dx * 3.4) # right margin so labels sit clear in the gutter placed = [] for y, x, arm, color, is_zero in ends: y_lab = y if not placed else max(y, placed[-1] + gap) placed.append(y_lab) text = arm_label(arm) + (r" $\equiv 0$" if is_zero else "") - arrow = dict(arrowstyle="-", color=color, lw=0.5, shrinkA=0, shrinkB=0) - ax.annotate(text, xy=(x, y), xytext=(x + 1.0, y_lab), textcoords="data", - color=color, fontsize=8, va="center", - arrowprops=arrow if abs(y_lab - y) > 1e-3 else None) + # Common gutter x + leader back to each line's actual end: ragged run lengths + # otherwise scatter labels mid-plot onto other arms' lines (collision test). + arrow = dict(arrowstyle="-", color=color, lw=0.5, shrinkA=0, shrinkB=2) + ax.annotate(text, xy=(x, y), xytext=(x_lab, y_lab), textcoords="data", + color=color, fontsize=8, va="center", annotation_clip=False, + arrowprops=arrow) def plot_hack_overlay(runs: list[dict], out: Path) -> None: