From 6eeb7a217ddf9804d864b62d5082f462ae5214c2 Mon Sep 17 00:00:00 2001 From: Gilles Magalhaes Date: Wed, 29 May 2024 14:51:56 +0200 Subject: [PATCH] Latest results for thesis manuscript --- lib/src/main/scala/benchmark/Benchmark.scala | 20 +- .../test/resources/runner-config-example.conf | 125 +- .../test/scala/benchmark/BenchmarkTests.scala | 111 +- .../scala/benchmark/ConfigFilesTest.scala | 3 +- .../duration-pagerank.pdf | Bin 17722 -> 0 bytes .../duration-sssp.pdf | Bin 17495 -> 0 bytes .../20240521-010312-baseline/duration-wcc.pdf | Bin 17779 -> 0 bytes .../das6/20240521-022009-tracing/desc.csv | 5 - .../das6/20240521-022009-tracing/overhead.pdf | Bin 23198 -> 0 bytes .../duration-pagerank.pdf | Bin 17363 -> 0 bytes .../duration-sssp.pdf | Bin 16708 -> 0 bytes .../duration-wcc.pdf | Bin 16988 -> 0 bytes .../size-sssp.pdf | Bin 18839 -> 0 bytes .../size-wcc.pdf | Bin 19146 -> 0 bytes .../overhead-duration.pdf | Bin 16400 -> 0 bytes .../overhead-size.pdf | Bin 20214 -> 0 bytes results/plots/das6/conclusion/factor.pdf | Bin 19820 -> 0 bytes .../plots/das6/final/csv/es01-duration.csv | 22 + results/plots/das6/final/csv/es01-size.csv | 7 + .../plots/das6/final/csv/es02-duration.csv | 22 + .../plots/das6/final/csv/es03-duration.csv | 22 + results/plots/das6/final/csv/es03-size.csv | 22 + .../plots/das6/final/csv/es04-duration.csv | 18 + results/plots/das6/final/csv/es04-size.csv | 18 + .../plots/das6/final/csv/es05-duration.csv | 22 + results/plots/das6/final/csv/es05-size.csv | 22 + .../plots/das6/final/csv/es06-duration.csv | 22 + results/plots/das6/final/csv/es06-size.csv | 22 + .../duration.pdf => final/es01-duration.pdf} | Bin 17182 -> 18622 bytes results/plots/das6/final/es01-size.pdf | Bin 0 -> 18750 bytes .../das6/final/es02-overhead-duration.pdf | Bin 0 -> 18757 bytes .../es03-overhead-duration.pdf} | Bin 17323 -> 19699 bytes .../es03-overhead-size.pdf} | Bin 18157 -> 20388 bytes .../es04-overhead-duration.pdf} | Bin 19335 -> 18894 bytes .../es04-overhead-size.pdf} | Bin 15815 -> 17895 bytes .../es05-overhead-duration.pdf} | Bin 19507 -> 20041 bytes .../es05-overhead-size.pdf} | Bin 16741 -> 18391 bytes .../es06-overhead-duration.pdf} | Bin 19366 -> 19903 bytes .../plots/das6/final/es06-overhead-size.pdf | Bin 0 -> 18054 bytes .../summary-duration.pdf} | Bin 16339 -> 14642 bytes .../summary-size.pdf} | Bin 15781 -> 15488 bytes results/src/plots copy.ipynb | 14123 ++++++++++ results/src/plots.ipynb | 21302 ++++++++-------- 43 files changed, 25662 insertions(+), 10246 deletions(-) delete mode 100644 results/plots/das6/20240521-010312-baseline/duration-pagerank.pdf delete mode 100644 results/plots/das6/20240521-010312-baseline/duration-sssp.pdf delete mode 100644 results/plots/das6/20240521-010312-baseline/duration-wcc.pdf delete mode 100644 results/plots/das6/20240521-022009-tracing/desc.csv delete mode 100644 results/plots/das6/20240521-022009-tracing/overhead.pdf delete mode 100644 results/plots/das6/20240521-034221-completeprovenance/duration-pagerank.pdf delete mode 100644 results/plots/das6/20240521-034221-completeprovenance/duration-sssp.pdf delete mode 100644 results/plots/das6/20240521-034221-completeprovenance/duration-wcc.pdf delete mode 100644 results/plots/das6/20240521-034221-completeprovenance/size-sssp.pdf delete mode 100644 results/plots/das6/20240521-034221-completeprovenance/size-wcc.pdf delete mode 100644 results/plots/das6/20240521-111351-combinedpruning/overhead-duration.pdf delete mode 100644 results/plots/das6/20240521-111351-combinedpruning/overhead-size.pdf delete mode 100644 results/plots/das6/conclusion/factor.pdf create mode 100644 results/plots/das6/final/csv/es01-duration.csv create mode 100644 results/plots/das6/final/csv/es01-size.csv create mode 100644 results/plots/das6/final/csv/es02-duration.csv create mode 100644 results/plots/das6/final/csv/es03-duration.csv create mode 100644 results/plots/das6/final/csv/es03-size.csv create mode 100644 results/plots/das6/final/csv/es04-duration.csv create mode 100644 results/plots/das6/final/csv/es04-size.csv create mode 100644 results/plots/das6/final/csv/es05-duration.csv create mode 100644 results/plots/das6/final/csv/es05-size.csv create mode 100644 results/plots/das6/final/csv/es06-duration.csv create mode 100644 results/plots/das6/final/csv/es06-size.csv rename results/plots/das6/{20240521-010312-baseline/duration.pdf => final/es01-duration.pdf} (67%) create mode 100644 results/plots/das6/final/es01-size.pdf create mode 100644 results/plots/das6/final/es02-overhead-duration.pdf rename results/plots/das6/{20240521-034221-completeprovenance/duration-bfs.pdf => final/es03-overhead-duration.pdf} (64%) rename results/plots/das6/{20240521-010312-baseline/duration-bfs.pdf => final/es03-overhead-size.pdf} (65%) rename results/plots/das6/{20240521-034221-completeprovenance/size-pagerank.pdf => final/es04-overhead-duration.pdf} (65%) rename results/plots/das6/{20240521-093950-datagraphpruning/overhead-size.pdf => final/es04-overhead-size.pdf} (63%) rename results/plots/das6/{20240521-034221-completeprovenance/size-bfs.pdf => final/es05-overhead-duration.pdf} (65%) rename results/plots/das6/{20240521-093950-datagraphpruning/overhead-duration.pdf => final/es05-overhead-size.pdf} (67%) rename results/plots/das6/{20240521-010312-baseline/legend.pdf => final/es06-overhead-duration.pdf} (72%) create mode 100644 results/plots/das6/final/es06-overhead-size.pdf rename results/plots/das6/{20240521-081524-provenancegraphpruning/overhead-duration.pdf => final/summary-duration.pdf} (53%) rename results/plots/das6/{20240521-081524-provenancegraphpruning/overhead-size.pdf => final/summary-size.pdf} (53%) create mode 100644 results/src/plots copy.ipynb diff --git a/lib/src/main/scala/benchmark/Benchmark.scala b/lib/src/main/scala/benchmark/Benchmark.scala index 585b626..d79ed3e 100644 --- a/lib/src/main/scala/benchmark/Benchmark.scala +++ b/lib/src/main/scala/benchmark/Benchmark.scala @@ -88,9 +88,10 @@ object Benchmark { CaptureFilter( provenanceFilter = ProvenancePredicate( nodePredicate = ProvenanceGraph.allNodes, - edgePredicate = provenanceFilter(description.setup) + edgePredicate = + provenanceFilter(description.setup, description.algorithm) ), - dataFilter = dataFilter(gl, description.setup, description.algorithm) + dataFilter = dataFilter(description.setup, description.algorithm) ) ) @@ -182,7 +183,7 @@ object Benchmark { ) // Clean up lineage folder after being done with it -// fs.delete(lineagePath, true) + fs.delete(lineagePath, true) } def computeFlags(expSetup: ExperimentSetup): (Boolean, Boolean) = { @@ -201,7 +202,6 @@ object Benchmark { } def dataFilter( - gl: GraphLineage[Unit, Double], experimentSetup: ExperimentSetup, algorithm: GraphAlgorithm ): DataPredicate = { @@ -239,14 +239,20 @@ object Benchmark { } } - def provenanceFilter(expSetup: ExperimentSetup): Relation => Boolean = { + def provenanceFilter( + expSetup: ExperimentSetup, + algorithm: GraphAlgorithm + ): Relation => Boolean = { expSetup match { case ExperimentSetup.ProvenanceGraphPruning | ExperimentSetup.CombinedPruning => (r: ProvenanceGraph.Relation) => { r.edge.event match { - case Operation("joinVertices") => true - case _ => false + case Operation("outerJoinVertices") => + algorithm == GraphAlgorithm.fromString("pr") + case Operation("joinVertices") => + algorithm != GraphAlgorithm.fromString("pr") + case _ => false } } case _ => diff --git a/lib/src/test/resources/runner-config-example.conf b/lib/src/test/resources/runner-config-example.conf index a9ec4aa..3440d54 100644 --- a/lib/src/test/resources/runner-config-example.conf +++ b/lib/src/test/resources/runner-config-example.conf @@ -1,61 +1,68 @@ runner { - # Inputs - repetitions = 1 - algorithms = [ - BFS - PageRank - WCC - SSSP - ] - - graphs = [ - kgs - wiki-Talk - #cit-Patents - # S graphs - #datagen-7_5-fb - #datagen-7_6-fb - #datagen-7_7-zf - #datagen-7_8-zf - #datagen-7_9-fb - #dota-league - #graph500-22 - # M graphs - datagen-8_4-fb - # L graphs - #datagen-8_8-zf - ] - - storageFormats = [ - TextFile() - ObjectFile() - ParquetFile() - AvroFile() - ORCFile() - CSVFile() - JSONFormat() - TextFile(true) - CSVFile(true) - JSONFormat(true) - ] - - jar = "invalid-path" - datasetPath = "./src/test/resources" - experimentsPath = "/var/scratch/gmo520/thesis/experiments" - setups = [ - Baseline - StorageFormats - # Compression - # Storage - # Tracing - # SmartPruning - # AlgorithmOpOnly - # JoinVerticesOpOnly - # Combined - ] - - # Outputs - lineagePath = "file:///tmp/lineage" - outputPath = "file:///tmp/output" - sparkLogs = "file:///tmp/spark-logs" + // Inputs + repetitions = 1 + algorithms = [ + "BFS", + "PageRank", + "WCC", + "SSSP", + ] + + setups = [ + "Baseline", + "StorageFormats", + // "Compression", + // "Storage", + // "Tracing", + // "SmartPruning", + // "AlgorithmOpOnly", + // "JoinVerticesOpOnly", + // "Combined", + ] + + graphs = [ + // XS graphs + "kgs" + "wiki-Talk" + // "cit-Patents", + + // S graphs + // "datagen-7_5-fb", + // "datagen-7_6-fb", + // "datagen-7_7-zf", + // "datagen-7_8-zf", + // "datagen-7_9-fb", + // "dota-league", + // "graph500-22", + + // M graphs + "datagen-8_4-fb", + + // L graphs + // "datagen-8_8-zf", + ] + + storageFormats = [ + "TextFile()", + "ObjectFile()", + "ParquetFile()", + "AvroFile()", + "ORCFile()", + "CSVFile()", + "JSONFormat()", + "TextFile(true)", + "CSVFile(true)", + "JSONFormat(true)", + ] + + jar = "invalid-path" + datasetPath = "./src/test/resources" + experimentsPath = "/var/scratch/gmo520/thesis/experiments" + + // Outputs + lineagePath = "file:///tmp/lineage" + outputPath = "file:///tmp/output" + sparkLogs = "file:///tmp/spark-logs" + + timeoutMinutes = 10 } \ No newline at end of file diff --git a/lib/src/test/scala/benchmark/BenchmarkTests.scala b/lib/src/test/scala/benchmark/BenchmarkTests.scala index a0a0f1d..6365f3d 100644 --- a/lib/src/test/scala/benchmark/BenchmarkTests.scala +++ b/lib/src/test/scala/benchmark/BenchmarkTests.scala @@ -11,6 +11,10 @@ import provenance.{ProvenanceGraph, ProvenanceGraphNode} import provenance.events.{BFS, Operation} import provenance.metrics.ObservationSet +import lu.magalhaes.gilles.provxlib.provenance.query.{ + DeltaPredicate, + GraphPredicate +} import lu.magalhaes.gilles.provxlib.provenance.storage.TextFile import lu.magalhaes.gilles.provxlib.utils.LocalSparkSession.withSparkSession import org.apache.spark.graphx.{Edge, Graph} @@ -61,7 +65,8 @@ class BenchmarkTests extends AnyFunSuite { outputDir = outputDir, graphalyticsConfigPath = graphalyticsConfigPath, lineageDir = runnerConfig.runner.lineagePath, - setup = ExperimentSetup.Baseline + setup = ExperimentSetup.Baseline, + numExecutors = 7 ) ) Benchmark.run(sc, config) @@ -70,32 +75,24 @@ class BenchmarkTests extends AnyFunSuite { test("Benchmark flags computation") { assert( - Benchmark.computeFlags(ExperimentSetup.Compression) == (true, true) - ) - assert( - Benchmark.computeFlags(ExperimentSetup.Storage) == (true, true) + Benchmark.computeFlags(ExperimentSetup.CompleteProvenance) == (true, true) ) assert( Benchmark.computeFlags(ExperimentSetup.Tracing) == (true, false) ) assert( Benchmark.computeFlags( - ExperimentSetup.SmartPruning - ) == (true, true) - ) - assert( - Benchmark.computeFlags( - ExperimentSetup.AlgorithmOpOnly + ExperimentSetup.DataGraphPruning ) == (true, true) ) assert( Benchmark.computeFlags( - ExperimentSetup.JoinVerticesOpOnly + ExperimentSetup.ProvenanceGraphPruning ) == (true, true) ) assert( Benchmark.computeFlags( - ExperimentSetup.Combined + ExperimentSetup.CombinedPruning ) == (true, true) ) assert( @@ -131,32 +128,61 @@ class BenchmarkTests extends AnyFunSuite { val g = Graph(longVertices, edges) - assert( - g.subgraph(vpred = - Benchmark - .dataFilter(ExperimentSetup.SmartPruning, GraphAlgorithm.WCC) - ).vertices - .collect() - .length == 1 - ) + { + val filter = Benchmark.dataFilter( + ExperimentSetup.DataGraphPruning, + GraphAlgorithm.WCC + ) match { + case GraphPredicate(nodePredicate, _) => nodePredicate + case DeltaPredicate(_) => ??? + case _ => ??? + } - assert( - g.subgraph(vpred = - Benchmark.dataFilter(ExperimentSetup.Baseline, GraphAlgorithm.WCC) - ).vertices - .collect() - .length == 3 - ) + assert( + g.subgraph(vpred = filter) + .vertices + .collect() + .length == 1 + ) + } + + { + val filter = Benchmark.dataFilter( + ExperimentSetup.Baseline, + GraphAlgorithm.WCC + ) match { + case GraphPredicate(nodePredicate, _) => nodePredicate + case DeltaPredicate(_) => ??? + case _ => ??? + } + assert( + g.subgraph(vpred = filter) + .vertices + .collect() + .length == 3 + ) + } + + { + val filter = Benchmark + .dataFilter( + ExperimentSetup.DataGraphPruning, + GraphAlgorithm.SSSP + ) match { + case DeltaPredicate(_) => ??? + case GraphPredicate(nodePredicate, _) => nodePredicate + case _ => ??? + } - val g2 = Graph(doubleVertices, edges) - assert( - g2.subgraph(vpred = - Benchmark - .dataFilter(ExperimentSetup.SmartPruning, GraphAlgorithm.SSSP) - ).vertices - .collect() - .length == 1 - ) + val g2 = Graph(doubleVertices, edges) + assert( + g2.subgraph(vpred = filter) + .vertices + .collect() + .length == 1 + ) + + } } } @@ -185,17 +211,8 @@ class BenchmarkTests extends AnyFunSuite { ProvenanceGraph.Edge(BFS(3), ObservationSet()) ) - val algOpFilter = - Benchmark.provenanceFilter(ExperimentSetup.AlgorithmOpOnly) - - val res = pg.filter(nodeP = ProvenanceGraph.allNodes, edgeP = algOpFilter) - - assert(res.graph.edges.count((e: ProvenanceGraph.Type#EdgeT) => { - algOpFilter(e.outer) - }) == 1) - val joinVerticesFilter = - Benchmark.provenanceFilter(ExperimentSetup.JoinVerticesOpOnly) + Benchmark.provenanceFilter(ExperimentSetup.ProvenanceGraphPruning) val res2 = pg.filter(nodeP = ProvenanceGraph.allNodes, edgeP = joinVerticesFilter) diff --git a/lib/src/test/scala/benchmark/ConfigFilesTest.scala b/lib/src/test/scala/benchmark/ConfigFilesTest.scala index 5ae4f8b..988d993 100644 --- a/lib/src/test/scala/benchmark/ConfigFilesTest.scala +++ b/lib/src/test/scala/benchmark/ConfigFilesTest.scala @@ -101,7 +101,8 @@ class ConfigFilesTest extends AnyFunSuite { outputDir = outputDir, graphalyticsConfigPath = graphalyticsConfigPath, lineageDir = runnerConfig.runner.lineagePath, - setup = ExperimentSetup.Baseline + setup = ExperimentSetup.Baseline, + numExecutors = 7 ) println(BenchmarkAppConfig.write(config)) diff --git a/results/plots/das6/20240521-010312-baseline/duration-pagerank.pdf b/results/plots/das6/20240521-010312-baseline/duration-pagerank.pdf deleted file mode 100644 index abde5905c94c861ba69e2647316b41fb1c51e54b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17722 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 B1Ka=r diff --git a/results/plots/das6/20240521-010312-baseline/duration-wcc.pdf b/results/plots/das6/20240521-010312-baseline/duration-wcc.pdf deleted file mode 100644 index d768668c863a99fe5ee7ce409e659c31fe0fce9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17779 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 diff --git a/results/plots/das6/20240521-022009-tracing/desc.csv b/results/plots/das6/20240521-022009-tracing/desc.csv deleted file mode 100644 index c7f3d9b..0000000 --- a/results/plots/das6/20240521-022009-tracing/desc.csv +++ /dev/null @@ -1,5 +0,0 @@ -algorithm,std,min,median,max -PageRank,0.14,1.06,1.22,1.40 -WCC,0.12,0.93,1.00,1.25 -BFS,0.08,0.92,0.95,1.09 -SSSP,0.08,0.70,0.82,0.89 diff --git a/results/plots/das6/20240521-022009-tracing/overhead.pdf b/results/plots/das6/20240521-022009-tracing/overhead.pdf deleted file mode 100644 index 5d2a171f6ac636312366a2cfcf769dba994dd0d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23198 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 R#VCrT8N$4I%R1YHe*nff5$6B^ diff --git a/results/plots/das6/20240521-034221-completeprovenance/duration-pagerank.pdf b/results/plots/das6/20240521-034221-completeprovenance/duration-pagerank.pdf deleted file mode 100644 index 82c6624e2dd71a7584744c8c06367ed71b56e88c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17363 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 M3c|@Lry&pdKS>kDt^fc4 diff --git a/results/plots/das6/20240521-034221-completeprovenance/duration-sssp.pdf b/results/plots/das6/20240521-034221-completeprovenance/duration-sssp.pdf deleted file mode 100644 index 22dd2d28edc9a644cd14ad6369ebc594496011cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16708 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
dq&j=ow}PxP|YUfrkNg~pnhh9 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 diff --git a/results/plots/das6/20240521-034221-completeprovenance/duration-wcc.pdf b/results/plots/das6/20240521-034221-completeprovenance/duration-wcc.pdf deleted file mode 100644 index ed144a5e593d56e16906d403457fa35601274527..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16988 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 diff --git a/results/plots/das6/20240521-034221-completeprovenance/size-sssp.pdf b/results/plots/das6/20240521-034221-completeprovenance/size-sssp.pdf deleted file mode 100644 index 1fc8fed683ca56d17704348030d0b2dd1e4b99b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18839 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 OFPt01$S9#83Hm?FIOwqe diff --git a/results/plots/das6/20240521-111351-combinedpruning/overhead-duration.pdf b/results/plots/das6/20240521-111351-combinedpruning/overhead-duration.pdf deleted file mode 100644 index 1b774a35b75c838216a74e80bb3629a3f52529bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16400 zcmb_@1yoee7qAE@E-8%?OCz@FpUbcb|`#L~HhqzKX-23=xcP$CTqigc)m3P?)| z1_(%g?*Yai_d7q&cRoDho4qr0Yi91fGw)qaEja}NgdhsS`CtfozXpPU!lAB~4iE_m zC`{Ma4FiSAT6kJGx!OWuS{Ak#52z5(K^uDJ3!*63MGaH$iQR)0Rb!?P_aEWrCnTHfnNx4$e&69 zn}2Fi4dY_#X$M8@Q&zBd0_29m6r2EM$YHEptuY|`9-df?g)_t_^Rbb-E43I!{f5CB z(NRW&Yf=duwQ}QSXW85@OUhX&wQ8IV<^R+(VjH1mpy`)-JVn7F>C%Twdc{r#*Y1#S z8wTunHu!i1*d=ImHo9Hh?n)}4|z*IZx$Tn_%iX6HVv%(EuPLwSCp^wli}BXipLR*sqX%p zRA}?#=B_!u5^T?-!U8{Pr8Z8>L?7$UG0%9W`oy0(O)L2Fbb=SXm$>%maFcv=j2`bt z3Y~XGKB*?6Rg7Uga^mFVquWh<)w&_p%8!e4KZN#V55Y;5Y7loGgpmV7WQhcAt(T3j zJkJVCNY3cKmRCiYkuhl|fa2n{N`KM-a}lJoW%;zh&9YrDR=c(Q@zK`T*_Btrg4?x^ zS)L4;=6q-fs%g|dyknNj@T0n~=FNOcN{T^7Yd-M@BQE!3d%m}WH*b>arkOQffV5di zI&+E#xR(V-A}PgaLd$%(sVlYX#cK`g#5Oj2Qj5tXfI)N=tI$*in@&^9m6 z7wNZ*dhiiJTuF)b z>*XTv^@#z4RHyne+~;>Oz>>m8Sf6gLiNG@riRh(5~U^EC9+ zlt)u72187x%CmW`|E0_Q<2<@<;n9epx%$dQwKtWSscok&mvPQ5-&H#tgkV z?cwx8R?ZS6x{RaIm#B(}ZW+GFObylz>~EMM|hWk$1PwAkvh%Pf+J-{%^8^?6cyh3SZqWa|UcCI*H(1iX#x zNtDT{+}&HF)iPFI4A=p8`UT9xyBG=5q8Bi3qv`hgc75gCTeT@3Iwy#SYK~5~)u}uw zi?4`fCqpjN_g8-WAnnjxzNTii#qhP*z5BuaNnY|JZm#4Pt~qw7owDX1OAVAGOXRu9 zO)eblS8z1#v9z5uWknG6WxG5E+q-=xiFg=(pSC=alMGv?GQ%mPGtm}eZKq9$^Xr=N zsw${BQOiSFC{dlG`Azwq)0c&-vb>p_w=3qPBAdl0RZ#JV(l@ToKiGCELX824l zR~`qa+Y5b){1#>_Mqh`Hb)$eM{#A70duybGuAn&vvcfk(J*hM6Z*jH|OKfNUJ&$IV z(zrBJ&VZytdHDTGNLd)W@OpX!J*Q}bWn65zjO_pk@8R|{Cyr+747zG3SOg7f>pGlc z^`JD42|nstU{rZU`$2%#4EtIMhG~-R)Y6PyVec4)n5IW>jRGxXV#*-*OG%k6R6oQ80f+d zT5|*%Fya4U%F(eMr1;WAvY&OrR7ZQXdKAu)Det_6+ZiaW1q�*l}61i+vgQ>K;k% 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
    F<)8zA)WsQD;>F$JzL%}yH^h|KIWQTlF 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 diff --git a/results/plots/das6/conclusion/factor.pdf b/results/plots/das6/conclusion/factor.pdf deleted file mode 100644 index 60da19dac27d59ce92b3326ebea62d31657fe41e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19820 zcmb_^1yq$y6R?V?bO}hw1qJEL1uiAs-Cfe%C5?24bR*r}sep8eba#V*bpQAA>ihZm z`k(JT|M}tU*?nerXJ%(-XJ?X&^>c6l9`sVpq+jd z3$*&D9L4m^4QveopdYjaj7%XT2LJ_3A>!cE)3MOigATyP)>==?4BjDWG)cIGq|?gh zbWd?6tLcm0K%0!0I2UCv@q*7HEPs_DJpN1Lh56HS;&Kf=d6aZ&PhUQUkv-d{M&)?4 zR}y>zb75`=Yb9@7PS)l*Zzh-5Kf0Z7Ty0ixHhu2gJ6=B&bhy%RZ+8CN*?Dnz-Ye

    t$n#rvo^ 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 diff --git a/results/plots/das6/final/csv/es01-duration.csv b/results/plots/das6/final/csv/es01-duration.csv new file mode 100644 index 0000000..9eb7082 --- /dev/null +++ b/results/plots/das6/final/csv/es01-duration.csv @@ -0,0 +1,22 @@ +algorithm,dataset,min,mean,max,std +BFS,graph500-22,30.44,32.87,35.11,2.00 +BFS,datagen-7\_5-fb,33.20,34.32,36.05,1.20 +BFS,datagen-7\_9-fb,62.32,69.31,80.59,8.00 +BFS,cit-Patents,79.37,82.97,88.44,4.02 +BFS,datagen-8\_8-zf,184.12,218.72,247.36,26.50 +BFS,datagen-8\_4-fb,224.23,241.79,251.48,9.34 +PageRank,datagen-7\_5-fb,38.60,39.98,43.88,2.02 +PageRank,datagen-7\_9-fb,67.77,69.88,71.44,1.65 +PageRank,graph500-22,75.87,78.38,81.21,2.04 +PageRank,cit-Patents,76.20,85.10,88.41,4.45 +PageRank,datagen-8\_4-fb,205.04,215.87,227.36,7.12 +PageRank,datagen-8\_8-zf,223.81,245.95,258.35,11.81 +SSSP,datagen-7\_5-fb,34.57,38.12,45.16,3.77 +SSSP,datagen-7\_9-fb,60.92,76.50,94.05,14.17 +SSSP,datagen-8\_8-zf,162.00,209.25,248.77,30.70 +SSSP,datagen-8\_4-fb,234.95,255.83,264.24,11.53 +WCC,datagen-7\_5-fb,33.54,36.77,38.80,1.94 +WCC,datagen-7\_9-fb,62.89,66.34,72.11,3.28 +WCC,graph500-22,66.38,72.05,82.57,7.97 +WCC,cit-Patents,152.93,157.94,165.29,4.65 +WCC,datagen-8\_4-fb,230.89,239.02,243.93,5.38 diff --git a/results/plots/das6/final/csv/es01-size.csv b/results/plots/das6/final/csv/es01-size.csv new file mode 100644 index 0000000..734401f --- /dev/null +++ b/results/plots/das6/final/csv/es01-size.csv @@ -0,0 +1,7 @@ +dataset,size +cit-Patents,280 MB +datagen-7\_5-fb,1014 MB +datagen-7\_9-fb,2 GB +datagen-8\_4-fb,7 GB +datagen-8\_8-zf,13 GB +graph500-22,963 MB diff --git a/results/plots/das6/final/csv/es02-duration.csv b/results/plots/das6/final/csv/es02-duration.csv new file mode 100644 index 0000000..35f7660 --- /dev/null +++ b/results/plots/das6/final/csv/es02-duration.csv @@ -0,0 +1,22 @@ +algorithm,dataset,min,mean,max,std +BFS,graph500-22,27.69,31.13,33.59,2.15 +BFS,datagen-7\_5-fb,36.28,47.08,64.88,10.78 +BFS,cit-Patents,67.31,72.70,93.08,10.12 +BFS,datagen-7\_9-fb,49.26,73.49,106.84,26.70 +BFS,datagen-8\_8-zf,113.86,175.32,251.50,44.62 +BFS,datagen-8\_4-fb,122.33,189.15,294.74,69.82 +PageRank,datagen-7\_5-fb,43.05,44.33,46.67,1.32 +PageRank,graph500-22,79.79,84.80,92.39,4.60 +PageRank,datagen-7\_9-fb,84.40,89.33,94.55,4.04 +PageRank,cit-Patents,85.08,90.95,95.72,4.09 +PageRank,datagen-8\_4-fb,295.67,313.20,349.99,21.03 +PageRank,datagen-8\_8-zf,329.03,362.90,399.79,27.96 +SSSP,datagen-7\_5-fb,33.83,45.50,73.23,13.94 +SSSP,datagen-7\_9-fb,53.02,81.02,105.83,21.56 +SSSP,datagen-8\_8-zf,110.66,169.43,261.90,49.85 +SSSP,datagen-8\_4-fb,132.02,175.24,266.42,52.84 +WCC,datagen-7\_5-fb,37.75,40.63,43.53,2.06 +WCC,graph500-22,57.96,72.30,85.57,8.79 +WCC,datagen-7\_9-fb,71.36,77.43,80.37,3.69 +WCC,cit-Patents,156.39,160.63,167.99,4.68 +WCC,datagen-8\_4-fb,184.61,211.99,266.39,31.77 diff --git a/results/plots/das6/final/csv/es03-duration.csv b/results/plots/das6/final/csv/es03-duration.csv new file mode 100644 index 0000000..95d50b2 --- /dev/null +++ b/results/plots/das6/final/csv/es03-duration.csv @@ -0,0 +1,22 @@ +algorithm,dataset,min,mean,max,std +BFS,graph500-22,36.40,39.64,43.21,2.21 +BFS,datagen-7\_5-fb,41.68,51.72,58.53,6.14 +BFS,datagen-7\_9-fb,67.92,99.09,132.25,21.23 +BFS,cit-Patents,107.64,122.38,154.33,16.12 +BFS,datagen-8\_4-fb,229.72,229.72,229.72,nan +BFS,datagen-8\_8-zf,338.59,338.59,338.59,nan +PageRank,datagen-7\_5-fb,56.88,76.00,96.04,12.65 +PageRank,graph500-22,133.40,133.40,133.40,nan +PageRank,datagen-7\_9-fb,112.68,137.97,165.56,19.01 +PageRank,cit-Patents,150.14,190.39,253.34,41.64 +PageRank,datagen-8\_4-fb,363.00,363.00,363.00,nan +PageRank,datagen-8\_8-zf,889.40,889.40,889.40,nan +SSSP,datagen-7\_5-fb,44.07,51.89,60.18,5.05 +SSSP,datagen-7\_9-fb,78.07,99.48,137.11,19.05 +SSSP,datagen-8\_4-fb,245.58,245.58,245.58,nan +SSSP,datagen-8\_8-zf,281.94,281.94,281.94,nan +WCC,datagen-7\_5-fb,39.84,44.61,48.55,2.46 +WCC,graph500-22,72.91,72.91,72.91,nan +WCC,datagen-7\_9-fb,72.53,82.26,89.65,4.79 +WCC,cit-Patents,181.91,204.88,244.70,20.24 +WCC,datagen-8\_4-fb,240.27,240.27,240.27,nan diff --git a/results/plots/das6/final/csv/es03-size.csv b/results/plots/das6/final/csv/es03-size.csv new file mode 100644 index 0000000..d5a0412 --- /dev/null +++ b/results/plots/das6/final/csv/es03-size.csv @@ -0,0 +1,22 @@ +algorithm,dataset,min,mean,max +BFS,graph500-22,20 MB,113 MB,353 MB +BFS,datagen-7\_5-fb,46 MB,162 MB,465 MB +BFS,datagen-7\_9-fb,110 MB,373 MB,1 GB +BFS,cit-Patents,259 MB,1 GB,4 GB +BFS,datagen-8\_4-fb,1 GB,1 GB,1 GB +BFS,datagen-8\_8-zf,18 GB,18 GB,18 GB +PageRank,datagen-7\_5-fb,183 MB,401 MB,831 MB +PageRank,datagen-7\_9-fb,408 MB,884 MB,1 GB +PageRank,graph500-22,1 GB,1 GB,1 GB +PageRank,cit-Patents,935 MB,2 GB,4 GB +PageRank,datagen-8\_4-fb,3 GB,3 GB,3 GB +PageRank,datagen-8\_8-zf,37 GB,37 GB,37 GB +SSSP,datagen-7\_5-fb,59 MB,181 MB,569 MB +SSSP,datagen-7\_9-fb,147 MB,428 MB,1 GB +SSSP,datagen-8\_4-fb,1 GB,1 GB,1 GB +SSSP,datagen-8\_8-zf,2 GB,2 GB,2 GB +WCC,datagen-7\_5-fb,23 MB,70 MB,203 MB +WCC,datagen-7\_9-fb,54 MB,156 MB,447 MB +WCC,graph500-22,255 MB,255 MB,255 MB +WCC,datagen-8\_4-fb,553 MB,553 MB,553 MB +WCC,cit-Patents,368 MB,1012 MB,3 GB diff --git a/results/plots/das6/final/csv/es04-duration.csv b/results/plots/das6/final/csv/es04-duration.csv new file mode 100644 index 0000000..449acaa --- /dev/null +++ b/results/plots/das6/final/csv/es04-duration.csv @@ -0,0 +1,18 @@ +algorithm,dataset,min,mean,max,std +BFS,datagen-7\_5-fb,37.92,40.18,42.66,2.38 +BFS,datagen-7\_9-fb,77.67,82.29,87.89,5.18 +BFS,cit-Patents,111.47,118.76,126.97,7.79 +BFS,datagen-8\_4-fb,265.03,266.33,268.19,1.65 +PageRank,datagen-7\_5-fb,53.63,54.89,56.20,1.28 +PageRank,datagen-7\_9-fb,101.65,104.01,107.76,3.29 +PageRank,graph500-22,98.87,105.41,114.26,7.95 +PageRank,cit-Patents,115.43,119.57,123.09,3.87 +PageRank,datagen-8\_4-fb,299.08,310.82,333.71,19.83 +SSSP,datagen-7\_5-fb,39.65,46.63,55.61,8.17 +SSSP,datagen-7\_9-fb,72.10,80.80,86.98,7.76 +SSSP,datagen-8\_4-fb,279.81,284.01,287.48,3.89 +WCC,datagen-7\_5-fb,34.17,35.38,37.01,1.47 +WCC,graph500-22,72.00,74.71,77.96,3.02 +WCC,datagen-7\_9-fb,71.78,75.16,78.97,3.62 +WCC,cit-Patents,188.15,190.02,192.39,2.16 +WCC,datagen-8\_4-fb,249.94,253.73,256.83,3.50 diff --git a/results/plots/das6/final/csv/es04-size.csv b/results/plots/das6/final/csv/es04-size.csv new file mode 100644 index 0000000..e49ee50 --- /dev/null +++ b/results/plots/das6/final/csv/es04-size.csv @@ -0,0 +1,18 @@ +algorithm,dataset,min,mean,max +BFS,datagen-7\_5-fb,181 MB,181 MB,181 MB +BFS,datagen-7\_9-fb,415 MB,415 MB,415 MB +BFS,datagen-8\_4-fb,1 GB,1 GB,1 GB +BFS,cit-Patents,2 GB,2 GB,2 GB +PageRank,datagen-7\_5-fb,230 MB,230 MB,230 MB +PageRank,datagen-7\_9-fb,507 MB,507 MB,507 MB +PageRank,graph500-22,743 MB,744 MB,744 MB +PageRank,cit-Patents,1 GB,1 GB,1 GB +PageRank,datagen-8\_4-fb,1 GB,1 GB,1 GB +SSSP,datagen-7\_5-fb,184 MB,184 MB,184 MB +SSSP,datagen-7\_9-fb,445 MB,445 MB,445 MB +SSSP,datagen-8\_4-fb,1 GB,1 GB,1 GB +WCC,datagen-7\_5-fb,55 MB,55 MB,55 MB +WCC,datagen-7\_9-fb,123 MB,123 MB,123 MB +WCC,graph500-22,175 MB,175 MB,175 MB +WCC,datagen-8\_4-fb,347 MB,347 MB,347 MB +WCC,cit-Patents,920 MB,920 MB,920 MB diff --git a/results/plots/das6/final/csv/es05-duration.csv b/results/plots/das6/final/csv/es05-duration.csv new file mode 100644 index 0000000..d4d389c --- /dev/null +++ b/results/plots/das6/final/csv/es05-duration.csv @@ -0,0 +1,22 @@ +algorithm,dataset,min,mean,max,std +BFS,graph500-22,31.00,32.36,34.16,1.62 +BFS,datagen-7\_5-fb,39.53,46.00,58.52,10.84 +BFS,datagen-7\_9-fb,60.90,67.15,79.56,10.75 +BFS,cit-Patents,71.69,78.79,84.12,6.40 +BFS,datagen-8\_4-fb,197.84,218.85,234.28,18.85 +BFS,datagen-8\_8-zf,174.64,232.69,290.74,82.10 +PageRank,datagen-7\_5-fb,74.66,75.88,77.10,1.22 +PageRank,datagen-7\_9-fb,137.28,140.30,145.44,4.48 +PageRank,graph500-22,144.99,150.52,156.77,5.92 +PageRank,cit-Patents,181.05,187.90,196.82,8.09 +PageRank,datagen-8\_4-fb,383.87,399.11,406.74,13.20 +PageRank,datagen-8\_8-zf,768.63,1041.84,1282.99,258.68 +SSSP,datagen-7\_5-fb,42.36,49.16,61.56,10.75 +SSSP,datagen-7\_9-fb,65.87,76.02,85.27,9.73 +SSSP,datagen-8\_8-zf,165.21,177.86,188.40,11.74 +SSSP,datagen-8\_4-fb,245.07,249.60,253.18,4.14 +WCC,datagen-7\_5-fb,40.52,41.67,43.23,1.40 +WCC,graph500-22,70.44,71.57,72.31,0.99 +WCC,datagen-7\_9-fb,73.08,75.05,76.22,1.71 +WCC,cit-Patents,186.84,188.81,190.77,1.96 +WCC,datagen-8\_4-fb,221.59,241.08,255.28,17.46 diff --git a/results/plots/das6/final/csv/es05-size.csv b/results/plots/das6/final/csv/es05-size.csv new file mode 100644 index 0000000..1c80217 --- /dev/null +++ b/results/plots/das6/final/csv/es05-size.csv @@ -0,0 +1,22 @@ +algorithm,dataset,min,mean,max +BFS,graph500-22,33 B,33 B,33 B +BFS,datagen-8\_8-zf,155 KB,155 KB,155 KB +BFS,cit-Patents,48 MB,48 MB,48 MB +BFS,datagen-7\_5-fb,94 MB,94 MB,94 MB +BFS,datagen-7\_9-fb,231 MB,231 MB,231 MB +BFS,datagen-8\_4-fb,598 MB,598 MB,598 MB +PageRank,datagen-7\_5-fb,524 MB,524 MB,525 MB +PageRank,datagen-7\_9-fb,1 GB,1 GB,1 GB +PageRank,graph500-22,1 GB,1 GB,1 GB +PageRank,cit-Patents,2 GB,2 GB,2 GB +PageRank,datagen-8\_4-fb,3 GB,3 GB,3 GB +PageRank,datagen-8\_8-zf,41 GB,41 GB,41 GB +SSSP,datagen-8\_8-zf,187 KB,187 KB,187 KB +SSSP,datagen-7\_5-fb,126 MB,126 MB,126 MB +SSSP,datagen-7\_9-fb,321 MB,321 MB,321 MB +SSSP,datagen-8\_4-fb,850 MB,850 MB,850 MB +WCC,datagen-7\_5-fb,89 MB,89 MB,89 MB +WCC,datagen-7\_9-fb,198 MB,198 MB,198 MB +WCC,graph500-22,255 MB,255 MB,255 MB +WCC,datagen-8\_4-fb,553 MB,553 MB,553 MB +WCC,cit-Patents,1 GB,1 GB,1 GB diff --git a/results/plots/das6/final/csv/es06-duration.csv b/results/plots/das6/final/csv/es06-duration.csv new file mode 100644 index 0000000..43a4a98 --- /dev/null +++ b/results/plots/das6/final/csv/es06-duration.csv @@ -0,0 +1,22 @@ +algorithm,dataset,min,mean,max,std +BFS,graph500-22,30.48,30.82,31.08,0.31 +BFS,datagen-7\_5-fb,47.65,48.19,49.00,0.71 +BFS,cit-Patents,84.82,87.39,90.77,3.06 +BFS,datagen-7\_9-fb,84.56,87.84,89.69,2.85 +BFS,datagen-8\_4-fb,251.01,252.75,255.93,2.75 +BFS,datagen-8\_8-zf,232.21,252.94,277.67,22.99 +PageRank,datagen-7\_5-fb,59.71,61.56,62.76,1.62 +PageRank,datagen-7\_9-fb,99.28,102.50,105.31,3.04 +PageRank,graph500-22,119.63,124.52,129.00,4.70 +PageRank,cit-Patents,136.00,137.27,139.41,1.86 +PageRank,datagen-8\_4-fb,346.04,349.16,354.79,4.88 +PageRank,datagen-8\_8-zf,547.50,628.88,730.19,92.96 +SSSP,datagen-7\_5-fb,39.45,47.39,58.48,9.90 +SSSP,datagen-7\_9-fb,68.36,74.94,88.07,11.37 +SSSP,datagen-8\_8-zf,202.22,207.26,215.50,7.20 +SSSP,datagen-8\_4-fb,277.56,286.91,294.07,8.47 +WCC,datagen-7\_5-fb,36.35,38.29,40.73,2.23 +WCC,datagen-7\_9-fb,66.19,71.02,76.46,5.16 +WCC,graph500-22,71.56,72.28,73.37,0.96 +WCC,cit-Patents,181.75,185.56,188.32,3.41 +WCC,datagen-8\_4-fb,245.92,251.77,254.85,5.07 diff --git a/results/plots/das6/final/csv/es06-size.csv b/results/plots/das6/final/csv/es06-size.csv new file mode 100644 index 0000000..8b176ce --- /dev/null +++ b/results/plots/das6/final/csv/es06-size.csv @@ -0,0 +1,22 @@ +algorithm,dataset,min,mean,max +BFS,graph500-22,0 B,0 B,0 B +BFS,datagen-8\_8-zf,155 KB,155 KB,155 KB +BFS,cit-Patents,48 MB,48 MB,48 MB +BFS,datagen-7\_5-fb,94 MB,94 MB,94 MB +BFS,datagen-7\_9-fb,231 MB,231 MB,231 MB +BFS,datagen-8\_4-fb,598 MB,598 MB,598 MB +PageRank,datagen-7\_5-fb,229 MB,229 MB,229 MB +PageRank,datagen-7\_9-fb,505 MB,505 MB,505 MB +PageRank,graph500-22,733 MB,733 MB,733 MB +PageRank,cit-Patents,1 GB,1 GB,1 GB +PageRank,datagen-8\_4-fb,1 GB,1 GB,1 GB +PageRank,datagen-8\_8-zf,17 GB,17 GB,17 GB +SSSP,datagen-8\_8-zf,187 KB,187 KB,187 KB +SSSP,datagen-7\_5-fb,126 MB,126 MB,126 MB +SSSP,datagen-7\_9-fb,321 MB,321 MB,321 MB +SSSP,datagen-8\_4-fb,850 MB,850 MB,850 MB +WCC,datagen-7\_5-fb,55 MB,55 MB,55 MB +WCC,datagen-7\_9-fb,123 MB,123 MB,123 MB +WCC,graph500-22,175 MB,175 MB,175 MB +WCC,datagen-8\_4-fb,347 MB,347 MB,347 MB +WCC,cit-Patents,920 MB,920 MB,920 MB diff --git a/results/plots/das6/20240521-010312-baseline/duration.pdf b/results/plots/das6/final/es01-duration.pdf similarity index 67% rename from results/plots/das6/20240521-010312-baseline/duration.pdf rename to results/plots/das6/final/es01-duration.pdf index 9d8040c399c465d7cde7df7dee45d44a59a322a0..4ffc5f27812742f21743138d40282cdf9fae5203 100644 GIT binary patch delta 5962 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 I(N<;pKdNc0Bme*a delta 4538 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 Biv0ip literal 0 HcmV?d00001 diff --git a/results/plots/das6/final/es02-overhead-duration.pdf b/results/plots/das6/final/es02-overhead-duration.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ebc49e30d2c52d601af5fb6e4bb27819f8b2c8ed GIT binary patch literal 18757 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 delta 4520 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 diff --git a/results/plots/das6/20240521-010312-baseline/duration-bfs.pdf b/results/plots/das6/final/es03-overhead-size.pdf similarity index 65% rename from results/plots/das6/20240521-010312-baseline/duration-bfs.pdf rename to results/plots/das6/final/es03-overhead-size.pdf index 9eae7bd4f18852f55c276b9fbc878d914d513912..a77458abee27d9cef929c90492f6e16a2090015d 100644 GIT binary patch delta 6770 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 (c?chtOoRJ|Q$GH>bM)D*7z z7!nT6HKEG-Wj^{ai}QRO)kSu>VN>v31!v=&%VD%8heBkP1$8yLkbOoiJzbL<*$E=| z(h_gqgdSN|!XR(NwMpDFPph-_J=2`47{`)-c8H|{Ak$9)6PdE60Jv<_Tj>%<=tBae!7c0cn1I6D|&s?=Ze4# z73piOZecx{9czDPQn_DgO!l@PTBDui#-$DdYZ4HTI4YS8Ab*;0?9q*f)0e0gU^ zD=S=j(yCfzXpjFvDU>z+AV|rt7T&) z)`vPb_8w(c;Dk}!9K3zJD7LQKmb;w`42=O$z_x)y;|agP;xJ|=Ch#2_6|7~0gO2Re zpdmXPwB@)C>TX4A3+~%dDyNO z=hxa<9z2%*GQs}!d`cGLNuQ&-J)gVUn2YLE{dp(e3@(e*S(^OyWUmhfzPd@nh<4le zDJN9l#+GhGojq;0@*z6?F+8u9wKq+eJw0+1CMt?O+o55;}oW?#> zlw$=i&nyRHlR}x_Ym@g!bc~3ZS9qj^ZLLabX4W-KM{WpKs)tzu7=BW`Y6`KdHZ(xu!nXAy`gc!3>t~;fO*t7bUVWO3@*HZPjK&xs}HOA=b#(xZZ6giVEF;bVo;b& zUtAG5ICfy5cukbV2-b?Vf_Y+a2pLQl7c+p}Ug(ItcDnNWOn z-mmwiR+CruguWFr0re%}V5B&_SU^G>0zxI=ps(Z?&_NPj>@Ot-0Uf2_V7~NIFjblx z)RhqjV-IJ6=7&k3mrNF@AOmN>;pht~E?uUF(ks9*afKY~?yNa>u;JGJwl|YOun7-= z2L;D)@h#(8jC&G2SZLeXiiKpaF*D$|1I4g-ydg@j6OV(~Y488b5bF)p^{Z`%%O~xp zFa&!)AD6K?l^!Ha8x+oC$;0i*KFpy9is7ZeR9rH+hKGZi_(ISY0WW4H1T)AXJt$tz z?hXKs1RyU{yxak#yBh_D^zo%zK2BZ~3P8XENEHBi96+jqbtGARq$xng!;lx<94KDi z_U>L3fJ_9CwgA!&K-vRH2LMR{kd6TI9DsBJ&?o|cbODg(=@uD4x&lZydIkWE#sWxB z0ONG$+^{%z?3nC-iOj-3WD*li1j)B`ZM-b`IlmBS*+-~>Z)p!9o z=;Zb1J zaVZ{p4gc~+;qYW4*nC`^io+A>)%6F#h~y++|F82gl(pOi$M|4+Y7rr{+EM*BmX0IJ3oEU z`@XX}6cLTxMMxxU@2c(bKSCmrw5vKInXoICgxM{SL?xnkwTq0}-t7NQLdFv4+kOW| zpr7=AV`vm=_bxzT=y%3WKl=X(+Zet6|5if361ES>_V^!$MiF;bf<|M=JH?>UIQ-5+ z&}b5B7luLotB}9@Pv36DU4$4sVP_Z67$RwxKr9Nq%MVNU+*t?~hu^u6&{zV!|2rMG zf9CAMFuOa0!;yE#lCirA!DDuv2s9qQeY4Sr_CH#UClGce#*_Xy{=<)cAa?nY$XGO( zrY=n1IY2ln*#7|* C-x*N= delta 4564 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 GFY-S}7PXuJ diff --git a/results/plots/das6/20240521-034221-completeprovenance/size-pagerank.pdf b/results/plots/das6/final/es04-overhead-duration.pdf similarity index 65% rename from results/plots/das6/20240521-034221-completeprovenance/size-pagerank.pdf rename to results/plots/das6/final/es04-overhead-duration.pdf index 13f76b5564452934bacb997fc11faa8b2c8f8459..d5c4b98602dad0fc74878dd4aafe5594472547e4 100644 GIT binary patch delta 6278 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 QCKAv%KB$7i9*QCKKT<^K0ssI2 delta 6484 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 k$HNi2u|Xj~a~qmEKEAfzz8f! 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 Mr8PAz94w{(3qRp-2LJ#7 diff --git a/results/plots/das6/20240521-034221-completeprovenance/size-bfs.pdf b/results/plots/das6/final/es05-overhead-duration.pdf similarity index 65% rename from results/plots/das6/20240521-034221-completeprovenance/size-bfs.pdf rename to results/plots/das6/final/es05-overhead-duration.pdf index 0defd75fb10f362ea006c32d4c8d176210ec2259..020d0c547e358dcfbe7fcba43a9a5d8de8c7c77c 100644 GIT binary patch delta 6813 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 az#zwfpwIwUHzY^}$rR+yojNAE$o~VUE`g^2 diff --git a/results/plots/das6/20240521-093950-datagraphpruning/overhead-duration.pdf b/results/plots/das6/final/es05-overhead-size.pdf similarity index 67% rename from results/plots/das6/20240521-093950-datagraphpruning/overhead-duration.pdf rename to results/plots/das6/final/es05-overhead-size.pdf index 093dc90608246ec1f625595e14bbb7081eff9b1a..14680b1ef3886a3afbe0875b0289778898ebe4ef 100644 GIT binary patch delta 5803 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 I94xW_0UiWbz5oCK diff --git a/results/plots/das6/20240521-010312-baseline/legend.pdf b/results/plots/das6/final/es06-overhead-duration.pdf similarity index 72% rename from results/plots/das6/20240521-010312-baseline/legend.pdf rename to results/plots/das6/final/es06-overhead-duration.pdf index 0797b5e5779070d71848db299abed5a7e43a66f2..01a59c0f189eff7c213620e7b5026307556522b7 100644 GIT binary patch delta 5441 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 K)URBa|CxpbQljhM;Xsz=nLkb&#^Pae^Wa8^AOb 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⁢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 literal 0 HcmV?d00001 diff --git a/results/plots/das6/20240521-081524-provenancegraphpruning/overhead-duration.pdf b/results/plots/das6/final/summary-duration.pdf similarity index 53% rename from results/plots/das6/20240521-081524-provenancegraphpruning/overhead-duration.pdf rename to results/plots/das6/final/summary-duration.pdf index a4c55a1a5157af57b335abd1d92d92cc0ed35bda..9f3a970827e70be2157c5a06ca22f6a6c3854c69 100644 GIT binary patch delta 5864 zcmd5=c|28pw||Z)osuzAhHV~FXP%4^B1wiqNM^_Em?bBLLvR%2cMuc=y5kK5yLn&%O7Lcc1e)d+oK?`hC~*TkH2Zozz0gGhP@A5qlJcMUqHp zJO+gVMPMG(mh-x|KjPUcz8jDC2-PIB9#Dza?POwZJD$iG=orZS;v+VMpsL(AH@2w% zLcJ-r=(E4w$VLCPyZjY=@AeDJSSXgRFLrg!=ie4yP*MJV^jm%|tKee(Y(TH!27jua z(&BB1WDoB5Rt{)Lp`2U&RIGCL>M!L(XPl_3{XSG5Dv!#m+CAn!OTOPP+9#s%U03jM zr4^ou$1uv3|CDE#OI}yhA&-)}vURW5PVEJA99M0Es;Z`_-v{P+RJ251uW<%l82*(l zb?=xff-TO%pi6-NF-s5Ic#4nSieH))#fACe^INI6{Tvq$RA;Qi1}){7=-bWEsf-H` zSh;JLbCal3gLZzim~aM%wNcCCGl-2J!P8Y~(<>^=Z>9S6?)7&LK3SZ^*<-cd_sA<* zWv&Q#cE+?=NB2h0nYy^k~t>q(c?C$LoAu{C?L@}Oe> ztnK|7mj|KaJ?dlghXpJ?m_`ph_bI^?BpTD3B>x_2#KzNB1Q8hSndwJYg6{Z~3}H50b`8kS{U zeR{202dDx3ew;_d4+MB635F#J=Wnd|w{;5QG%IaKZLToy=rlY!#qi z7hGOM_~ArJKk8YZ8z81WMwL}WJz}Zw6fMpOiB|UVV03@_Jii zjeYyn!$ZQs7Wn}cU&bn9oV3QqrN03gTvVrsl*95q56(Jb^_?6a>NudujhB^fW&iTM zgsD1_vHUc2Z3-oW4XMV@+S;#%f4y@K1OC|1r}f8cM`j= zW7_;ygz8=V%(S>Hug84Qv*NB@{CAOfYlS~ii7$)3mb$<)2^wgUd1$6^okjEG$%D}Om;d80)` zBBuWHbGApWmI-IVZ|;u^KM+@|D&Ii=#e2=Z{o6N-jL&g#oiPnQyfp)I#@_u;4PNV; zGONC{ZJD@W^2v%%$YN|<-795Js25XL(A_5nkg5E0T(S+=_|tW1uRw9Rzu4%?0`yT1 zss(VWQLzA7%{tDdAcieR@uAG<8FBi)xFrV0U`BfOE{O-Le@H#yU8Xy|7vfwi_< z9B^Sd<>+ey-lwQwk}U3u2W!GEX{2VmJSx45C=zqgeG5A^%-5FefMXIn_q02Xjm>^i zOXGNpW2INp)hTvLj}#Cc*Da1IEFb4V)L-GD4tL$pdz8mz-+AV*7hdO-a*I|1gv{gX z=Wa!*G)sPsdt1+1U5Ld`u-8qQTlXvsk3?WEDTGFIk8Xb> zTS`fKI-7-Us#cE{;{T%TDA1poJFVZ;tNS@B!nC(9IYZBQ<8VB;Qb?0von=#ozsxbv zlZw&4_UBMSF?|LXiFx4*xHPO35K-!I+!8@DCa`>&50L3DwIA%3%ZU_WP!T zk5qOr=B8G0`WCI8=B*c6Io<0rZaeg>KeK;B&=Zpj<}wM;6QD8H#3TS3?BgnWu_qA* z7VJMrhr@y}5pimxCxa^UiXIm{Bx%b3!{|?&+OCgOg(SBlfd4$bj!E;d; z6cSFpslDf!YjCj-GaK$3r~63tqneShASE>&*?kSJJw?u?UUl*mki^Qh=|^b8G7Uq# zjC($QnjRZ#$3OV8_Y);@Z)I{!lo#8Dl3~ely#y7aVTG26Qm^#e;>26&CzNV!IX>>~ zHzgI4Zw5s@-)j=qIw_5MIoGIvNUek*5B9KE@B5*2HK*>QZrslsPEq+RsIC=Ghq%id zur75AE4ZDTEm*=L3L}Cj4lzC5mIC%GNM^>i6d7I^om%1TF;nrCmul|}`Pbwr{zy_d?Kp zk*8LkL!FwfgJ|Gawc%TNV+ob)qM`+Tlz;V@G1G7f$)LR9RsU^7=$c^wgq} zAkMkB@2Fb4d0PbAci$iC0si%-5u#b=BwgZL9~X$3_Ii?zc1xH`OICWFnWo+&SCVza z9{>2h@=LfOo4!%0DL0^gaK!VYzrSe|DMi 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 RF-BiO69_OkoNTNO`!CzF1K0on delta 6852 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\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    total_sizedataset
    9412051dota-league
    115714619kgs
    18266855datagen-7_5-fb
    29844505datagen-7_6-fb
    1218043970wiki-Talk
    518190864datagen-7_9-fb
    1018538268graph500-22
    030025298cit-Patents
    650232462datagen-8_4-fb
    760699993datagen-8_5-fb
    8139876016datagen-8_9-fb
    3175245468datagen-7_7-zf
    4219958278datagen-7_8-zf
    132267897486datagen-8_8-zf
    \n", + "" + ], + "text/plain": [ + " total_size dataset\n", + "9 412051 dota-league\n", + "11 5714619 kgs\n", + "1 8266855 datagen-7_5-fb\n", + "2 9844505 datagen-7_6-fb\n", + "12 18043970 wiki-Talk\n", + "5 18190864 datagen-7_9-fb\n", + "10 18538268 graph500-22\n", + "0 30025298 cit-Patents\n", + "6 50232462 datagen-8_4-fb\n", + "7 60699993 datagen-8_5-fb\n", + "8 139876016 datagen-8_9-fb\n", + "3 175245468 datagen-7_7-zf\n", + "4 219958278 datagen-7_8-zf\n", + "13 2267897486 datagen-8_8-zf" + ] + }, + "execution_count": 69, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "node_sizes = pd.read_csv(f\"{root_dir}/data/node-sizes.csv\")\n", + "node_sizes.sort_values(by=[\"total_size\", \"dataset\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "id": "84eae130", + "metadata": {}, + "outputs": [], + "source": [ + "algorithm_names_short = {\n", + " \"pagerank\": \"PageRank\",\n", + " \"sssp\": \"SSSP\",\n", + " \"bfs\": \"BFS\",\n", + " \"lcc\": \"LCC\",\n", + " \"wcc\": \"WCC\",\n", + " \"cdlp\": \"CDLP\",\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "id": "9fab2e05", + "metadata": {}, + "outputs": [], + "source": [ + "bar_colors = matplotlib.colormaps.get_cmap(\"tab20\")" + ] + }, + { + "cell_type": "markdown", + "id": "5df688b0", + "metadata": {}, + "source": [ + "# Baseline" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "id": "2c9e0da2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "

    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    configalgorithmdatasetrunstorage_formatcompressedtotal_sizenr_executorsnr_verticesiterationsduration
    17baselineBFScit-Patents3TextFalse073774768075.359330
    33baselineBFScit-Patents2TextFalse073774768078.508584
    61baselineBFScit-Patents1TextFalse073774768081.451720
    3baselineBFSdatagen-7_5-fb3TextFalse07633432038.979522
    30baselineBFSdatagen-7_5-fb2TextFalse07633432040.240121
    62baselineBFSdatagen-7_5-fb1TextFalse07633432036.199678
    9baselineBFSdatagen-7_9-fb3TextFalse071387587058.865354
    32baselineBFSdatagen-7_9-fb1TextFalse071387587086.624194
    51baselineBFSdatagen-7_9-fb2TextFalse071387587058.516089
    48baselineBFSdatagen-8_4-fb2TextFalse0738090840243.730245
    49baselineBFSdatagen-8_4-fb3TextFalse0738090840255.773910
    58baselineBFSdatagen-8_4-fb1TextFalse0738090840275.851543
    29baselineBFSdatagen-8_8-zf3TextFalse071683088930269.058769
    50baselineBFSdatagen-8_8-zf1TextFalse071683088930174.929828
    52baselineBFSdatagen-8_8-zf2TextFalse071683088930220.400575
    24baselineBFSgraph500-223TextFalse072396657035.339122
    25baselineBFSgraph500-222TextFalse072396657034.686291
    60baselineBFSgraph500-221TextFalse072396657034.238623
    11baselinePageRankcit-Patents2TextFalse073774768076.081428
    44baselinePageRankcit-Patents3TextFalse073774768087.697755
    55baselinePageRankcit-Patents1TextFalse073774768075.921501
    8baselinePageRankdatagen-7_5-fb1TextFalse07633432047.507380
    31baselinePageRankdatagen-7_5-fb3TextFalse07633432040.380749
    35baselinePageRankdatagen-7_5-fb2TextFalse07633432043.796047
    6baselinePageRankdatagen-7_9-fb3TextFalse071387587069.278353
    7baselinePageRankdatagen-7_9-fb1TextFalse071387587073.923572
    10baselinePageRankdatagen-7_9-fb2TextFalse071387587069.521444
    2baselinePageRankdatagen-8_4-fb2TextFalse0738090840218.253472
    20baselinePageRankdatagen-8_4-fb1TextFalse0738090840218.085054
    39baselinePageRankdatagen-8_4-fb3TextFalse0738090840214.856316
    19baselinePageRankdatagen-8_8-zf3TextFalse071683088930225.317426
    22baselinePageRankdatagen-8_8-zf2TextFalse071683088930243.289249
    59baselinePageRankdatagen-8_8-zf1TextFalse071683088930368.163083
    0baselinePageRankgraph500-223TextFalse072396657074.750826
    18baselinePageRankgraph500-222TextFalse072396657079.603313
    23baselinePageRankgraph500-221TextFalse072396657075.515693
    1baselineSSSPdatagen-7_5-fb2TextFalse07633432035.501028
    34baselineSSSPdatagen-7_5-fb1TextFalse07633432042.308347
    46baselineSSSPdatagen-7_5-fb3TextFalse07633432036.201935
    15baselineSSSPdatagen-7_9-fb2TextFalse071387587062.903029
    16baselineSSSPdatagen-7_9-fb3TextFalse071387587093.535453
    28baselineSSSPdatagen-7_9-fb1TextFalse071387587064.763987
    37baselineSSSPdatagen-8_4-fb3TextFalse0738090840280.923577
    43baselineSSSPdatagen-8_4-fb1TextFalse0738090840270.646939
    56baselineSSSPdatagen-8_4-fb2TextFalse0738090840266.520828
    12baselineSSSPdatagen-8_8-zf3TextFalse071683088930248.325604
    42baselineSSSPdatagen-8_8-zf2TextFalse071683088930217.254241
    57baselineSSSPdatagen-8_8-zf1TextFalse071683088930261.041497
    5baselineWCCcit-Patents2TextFalse0737747680163.299714
    13baselineWCCcit-Patents1TextFalse0737747680161.605391
    36baselineWCCcit-Patents3TextFalse0737747680152.352981
    14baselineWCCdatagen-7_5-fb2TextFalse07633432038.771806
    21baselineWCCdatagen-7_5-fb1TextFalse07633432034.115851
    40baselineWCCdatagen-7_5-fb3TextFalse07633432038.669046
    27baselineWCCdatagen-7_9-fb3TextFalse071387587074.623411
    41baselineWCCdatagen-7_9-fb2TextFalse071387587075.883700
    54baselineWCCdatagen-7_9-fb1TextFalse071387587077.755999
    4baselineWCCdatagen-8_4-fb3TextFalse0738090840216.908659
    38baselineWCCdatagen-8_4-fb2TextFalse0738090840238.952507
    53baselineWCCdatagen-8_4-fb1TextFalse0738090840242.308987
    26baselineWCCgraph500-223TextFalse072396657058.862112
    45baselineWCCgraph500-221TextFalse072396657076.990634
    47baselineWCCgraph500-222TextFalse072396657073.166380
    \n", + "
    " + ], + "text/plain": [ + " config algorithm dataset run storage_format compressed \\\n", + "17 baseline BFS cit-Patents 3 Text False \n", + "33 baseline BFS cit-Patents 2 Text False \n", + "61 baseline BFS cit-Patents 1 Text False \n", + "3 baseline BFS datagen-7_5-fb 3 Text False \n", + "30 baseline BFS datagen-7_5-fb 2 Text False \n", + "62 baseline BFS datagen-7_5-fb 1 Text False \n", + "9 baseline BFS datagen-7_9-fb 3 Text False \n", + "32 baseline BFS datagen-7_9-fb 1 Text False \n", + "51 baseline BFS datagen-7_9-fb 2 Text False \n", + "48 baseline BFS datagen-8_4-fb 2 Text False \n", + "49 baseline BFS datagen-8_4-fb 3 Text False \n", + "58 baseline BFS datagen-8_4-fb 1 Text False \n", + "29 baseline BFS datagen-8_8-zf 3 Text False \n", + "50 baseline BFS datagen-8_8-zf 1 Text False \n", + "52 baseline BFS datagen-8_8-zf 2 Text False \n", + "24 baseline BFS graph500-22 3 Text False \n", + "25 baseline BFS graph500-22 2 Text False \n", + "60 baseline BFS graph500-22 1 Text False \n", + "11 baseline PageRank cit-Patents 2 Text False \n", + "44 baseline PageRank cit-Patents 3 Text False \n", + "55 baseline PageRank cit-Patents 1 Text False \n", + "8 baseline PageRank datagen-7_5-fb 1 Text False \n", + "31 baseline PageRank datagen-7_5-fb 3 Text False \n", + "35 baseline PageRank datagen-7_5-fb 2 Text False \n", + "6 baseline PageRank datagen-7_9-fb 3 Text False \n", + "7 baseline PageRank datagen-7_9-fb 1 Text False \n", + "10 baseline PageRank datagen-7_9-fb 2 Text False \n", + "2 baseline PageRank datagen-8_4-fb 2 Text False \n", + "20 baseline PageRank datagen-8_4-fb 1 Text False \n", + "39 baseline PageRank datagen-8_4-fb 3 Text False \n", + "19 baseline PageRank datagen-8_8-zf 3 Text False \n", + "22 baseline PageRank datagen-8_8-zf 2 Text False \n", + "59 baseline PageRank datagen-8_8-zf 1 Text False \n", + "0 baseline PageRank graph500-22 3 Text False \n", + "18 baseline PageRank graph500-22 2 Text False \n", + "23 baseline PageRank graph500-22 1 Text False \n", + "1 baseline SSSP datagen-7_5-fb 2 Text False \n", + "34 baseline SSSP datagen-7_5-fb 1 Text False \n", + "46 baseline SSSP datagen-7_5-fb 3 Text False \n", + "15 baseline SSSP datagen-7_9-fb 2 Text False \n", + "16 baseline SSSP datagen-7_9-fb 3 Text False \n", + "28 baseline SSSP datagen-7_9-fb 1 Text False \n", + "37 baseline SSSP datagen-8_4-fb 3 Text False \n", + "43 baseline SSSP datagen-8_4-fb 1 Text False \n", + "56 baseline SSSP datagen-8_4-fb 2 Text False \n", + "12 baseline SSSP datagen-8_8-zf 3 Text False \n", + "42 baseline SSSP datagen-8_8-zf 2 Text False \n", + "57 baseline SSSP datagen-8_8-zf 1 Text False \n", + "5 baseline WCC cit-Patents 2 Text False \n", + "13 baseline WCC cit-Patents 1 Text False \n", + "36 baseline WCC cit-Patents 3 Text False \n", + "14 baseline WCC datagen-7_5-fb 2 Text False \n", + "21 baseline WCC datagen-7_5-fb 1 Text False \n", + "40 baseline WCC datagen-7_5-fb 3 Text False \n", + "27 baseline WCC datagen-7_9-fb 3 Text False \n", + "41 baseline WCC datagen-7_9-fb 2 Text False \n", + "54 baseline WCC datagen-7_9-fb 1 Text False \n", + "4 baseline WCC datagen-8_4-fb 3 Text False \n", + "38 baseline WCC datagen-8_4-fb 2 Text False \n", + "53 baseline WCC datagen-8_4-fb 1 Text False \n", + "26 baseline WCC graph500-22 3 Text False \n", + "45 baseline WCC graph500-22 1 Text False \n", + "47 baseline WCC graph500-22 2 Text False \n", + "\n", + " total_size nr_executors nr_vertices iterations duration \n", + "17 0 7 3774768 0 75.359330 \n", + "33 0 7 3774768 0 78.508584 \n", + "61 0 7 3774768 0 81.451720 \n", + "3 0 7 633432 0 38.979522 \n", + "30 0 7 633432 0 40.240121 \n", + "62 0 7 633432 0 36.199678 \n", + "9 0 7 1387587 0 58.865354 \n", + "32 0 7 1387587 0 86.624194 \n", + "51 0 7 1387587 0 58.516089 \n", + "48 0 7 3809084 0 243.730245 \n", + "49 0 7 3809084 0 255.773910 \n", + "58 0 7 3809084 0 275.851543 \n", + "29 0 7 168308893 0 269.058769 \n", + "50 0 7 168308893 0 174.929828 \n", + "52 0 7 168308893 0 220.400575 \n", + "24 0 7 2396657 0 35.339122 \n", + "25 0 7 2396657 0 34.686291 \n", + "60 0 7 2396657 0 34.238623 \n", + "11 0 7 3774768 0 76.081428 \n", + "44 0 7 3774768 0 87.697755 \n", + "55 0 7 3774768 0 75.921501 \n", + "8 0 7 633432 0 47.507380 \n", + "31 0 7 633432 0 40.380749 \n", + "35 0 7 633432 0 43.796047 \n", + "6 0 7 1387587 0 69.278353 \n", + "7 0 7 1387587 0 73.923572 \n", + "10 0 7 1387587 0 69.521444 \n", + "2 0 7 3809084 0 218.253472 \n", + "20 0 7 3809084 0 218.085054 \n", + "39 0 7 3809084 0 214.856316 \n", + "19 0 7 168308893 0 225.317426 \n", + "22 0 7 168308893 0 243.289249 \n", + "59 0 7 168308893 0 368.163083 \n", + "0 0 7 2396657 0 74.750826 \n", + "18 0 7 2396657 0 79.603313 \n", + "23 0 7 2396657 0 75.515693 \n", + "1 0 7 633432 0 35.501028 \n", + "34 0 7 633432 0 42.308347 \n", + "46 0 7 633432 0 36.201935 \n", + "15 0 7 1387587 0 62.903029 \n", + "16 0 7 1387587 0 93.535453 \n", + "28 0 7 1387587 0 64.763987 \n", + "37 0 7 3809084 0 280.923577 \n", + "43 0 7 3809084 0 270.646939 \n", + "56 0 7 3809084 0 266.520828 \n", + "12 0 7 168308893 0 248.325604 \n", + "42 0 7 168308893 0 217.254241 \n", + "57 0 7 168308893 0 261.041497 \n", + "5 0 7 3774768 0 163.299714 \n", + "13 0 7 3774768 0 161.605391 \n", + "36 0 7 3774768 0 152.352981 \n", + "14 0 7 633432 0 38.771806 \n", + "21 0 7 633432 0 34.115851 \n", + "40 0 7 633432 0 38.669046 \n", + "27 0 7 1387587 0 74.623411 \n", + "41 0 7 1387587 0 75.883700 \n", + "54 0 7 1387587 0 77.755999 \n", + "4 0 7 3809084 0 216.908659 \n", + "38 0 7 3809084 0 238.952507 \n", + "53 0 7 3809084 0 242.308987 \n", + "26 0 7 2396657 0 58.862112 \n", + "45 0 7 2396657 0 76.990634 \n", + "47 0 7 2396657 0 73.166380 " + ] + }, + "execution_count": 72, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data_dir = Path(\"das6\") / \"20240525-185211-baseline-3-runs\"\n", + "baseline_scaling = parse_experiment_output(root_dir / \"data\" / data_dir)\n", + "#baseline_scaling = baseline_scaling[baseline_scaling[\"nr_executors\"] == 8]\n", + "baseline_scaling.sort_values(by=[\"algorithm\", \"dataset\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "id": "4cd85826", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    algorithmdatasetmeanstd
    0BFScit-Patents78.4398783.046776
    1BFSdatagen-7_5-fb38.4731072.067278
    2BFSdatagen-7_9-fb68.00187916.128343
    3BFSdatagen-8_4-fb258.45189916.227236
    4BFSdatagen-8_8-zf221.46305847.073464
    5BFSgraph500-2234.7546780.553428
    6PageRankcit-Patents79.9002286.753330
    7PageRankdatagen-7_5-fb43.8947253.564340
    8PageRankdatagen-7_9-fb70.9077902.614571
    9PageRankdatagen-8_4-fb217.0649471.914584
    10PageRankdatagen-8_8-zf278.92325377.804608
    11PageRankgraph500-2276.6232772.608969
    12SSSPdatagen-7_5-fb38.0037703.744310
    13SSSPdatagen-7_9-fb73.73415617.173651
    14SSSPdatagen-8_4-fb272.6971157.417022
    15SSSPdatagen-8_8-zf242.20711422.525716
    16WCCcit-Patents159.0860295.892209
    17WCCdatagen-7_5-fb37.1855682.658949
    18WCCdatagen-7_9-fb76.0877041.576226
    19WCCdatagen-8_4-fb232.72338413.798393
    20WCCgraph500-2269.6730429.555804
    \n", + "
    " + ], + "text/plain": [ + " algorithm dataset mean std\n", + "0 BFS cit-Patents 78.439878 3.046776\n", + "1 BFS datagen-7_5-fb 38.473107 2.067278\n", + "2 BFS datagen-7_9-fb 68.001879 16.128343\n", + "3 BFS datagen-8_4-fb 258.451899 16.227236\n", + "4 BFS datagen-8_8-zf 221.463058 47.073464\n", + "5 BFS graph500-22 34.754678 0.553428\n", + "6 PageRank cit-Patents 79.900228 6.753330\n", + "7 PageRank datagen-7_5-fb 43.894725 3.564340\n", + "8 PageRank datagen-7_9-fb 70.907790 2.614571\n", + "9 PageRank datagen-8_4-fb 217.064947 1.914584\n", + "10 PageRank datagen-8_8-zf 278.923253 77.804608\n", + "11 PageRank graph500-22 76.623277 2.608969\n", + "12 SSSP datagen-7_5-fb 38.003770 3.744310\n", + "13 SSSP datagen-7_9-fb 73.734156 17.173651\n", + "14 SSSP datagen-8_4-fb 272.697115 7.417022\n", + "15 SSSP datagen-8_8-zf 242.207114 22.525716\n", + "16 WCC cit-Patents 159.086029 5.892209\n", + "17 WCC datagen-7_5-fb 37.185568 2.658949\n", + "18 WCC datagen-7_9-fb 76.087704 1.576226\n", + "19 WCC datagen-8_4-fb 232.723384 13.798393\n", + "20 WCC graph500-22 69.673042 9.555804" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "grouped = baseline_scaling.groupby(['algorithm', 'dataset'])[\"duration\"]\n", + "stats = grouped.agg([\"mean\", \"std\"]).reset_index()\n", + "stats" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "id": "da086fd4", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/4z/sr1jzyjd3sjfsw6tlm7k49180000gn/T/ipykernel_55520/1143230043.py:1: FutureWarning: \n", + "\n", + "The `ci` parameter is deprecated. Use `errorbar=('ci', 95)` for the same effect.\n", + "\n", + " sns.barplot(x=\"dataset\", y=\"mean\", hue=\"algorithm\", data=stats, estimator=np.mean, ci=95, errorbar=\"sd\", capsize=0.2)\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sns.barplot(x=\"dataset\", y=\"mean\", hue=\"algorithm\", data=stats, estimator=np.mean, ci=95, errorbar=\"sd\", capsize=0.2)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cbc5955a", + "metadata": {}, + "outputs": [], + "source": [ + "def values_plot(ds, metric=(\"duration\", \"Duration\", \"mm:ss\"), name=\"baseline\", export_legend=False, legend_output_dir=None):\n", + " algorithms = sorted(list(ds[\"algorithm\"].unique()))\n", + " datasets = list(ds[\"dataset\"].unique())\n", + " datasets = sorted([(d, node_sizes[node_sizes[\"dataset\"] == d].iloc[0][\"total_size\"]) for d in datasets], key=lambda v: v[1])\n", + " datasets = [d[0] for d in datasets]\n", + "\n", + " num_algorithms = len(algorithms)\n", + " num_datasets = len(datasets)\n", + "\n", + " #bar_width = 1 / (num_algorithms + 1)\n", + " bar_width = 1 / (num_datasets + 1)\n", + "\n", + " _, ax = plt.subplots()\n", + "\n", + " max_metric_value = ds[metric[0]].max()\n", + "\n", + " for idx, dataset in enumerate(datasets):\n", + " positions = [i + idx * bar_width for i in range(num_algorithms)]\n", + " sizes = []\n", + " for algorithm in algorithms:\n", + " p = ds[(ds[\"algorithm\"] == algorithm) & (ds[\"dataset\"] == dataset)]\n", + " # print(p.shape[0])\n", + " if p.shape[0] == 1:\n", + " sizes.append(p.iloc[0][metric[0]])\n", + " else:\n", + " sizes.append(0)\n", + " # ax.bar(positions, sizes, yerr=errors, width=bar_width, label=dataset, capsize=2, align='center', color=bar_colors(idx))\n", + " ax.bar(positions, sizes, width=bar_width, label=dataset, capsize=2, align='center', color=bar_colors(idx))\n", + "\n", + " ax.set_title(f\"{metric[1]} for {name} scenario\")\n", + " ax.set_ylabel(f\"{metric[1]} ({metric[2]})\")\n", + " ax.set_xlabel(\"Algorithm\")\n", + " #ax.set_xlabel(\"Dataset\")\n", + " #ax.set_xticks([i + bar_width * (num_algorithms - 1) / 2 for i in range(num_datasets)])\n", + " #ax.set_xticklabels(datasets, rotation=45, ha='right')\n", + " func = None\n", + " if metric[0] == \"duration\":\n", + " y_min = 0\n", + " y_max = max_metric_value\n", + "\n", + " num_ticks = 10 # or any desired number of ticks\n", + " y_ticks = np.linspace(y_min, y_max, num_ticks)\n", + " ax.set_yticks(y_ticks)\n", + " func = format_seconds\n", + " elif metric[0] == \"total_size\":\n", + " y_min = 0\n", + " y_max = max_metric_value\n", + " # y_max = 2**29\n", + "\n", + " num_ticks = 10 # or any desired number of ticks\n", + " y_ticks = np.linspace(y_min, y_max, num_ticks)\n", + " ax.set_yticks(y_ticks)\n", + " func = lambda x: f\"{int(format_filesize(x)[0])}{format_filesize(x)[1]}\"\n", + " else:\n", + " raise Exception(\"unknown metric\")\n", + "\n", + " ax.yaxis.set_major_formatter(FuncFormatter(lambda x, _: func(x)))\n", + " ax.set_xticks([i + bar_width * (num_datasets - 1) / 2 for i in range(num_algorithms)])\n", + " # ax.set_xticklabels([algorithm_names_short[a.lower()] for a in algorithms], rotation=45, ha='right')\n", + " ax.set_xticklabels([algorithm_names_short[a.lower()] for a in algorithms])\n", + "\n", + " if export_legend:\n", + " # handles, labels = ax.get_legend_handles_labels()\n", + " # print(handles, labels)\n", + " # order = [0,2,1]\n", + " legend = ax.legend(\n", + " #[handles[idx] for idx in order],\n", + " #[labels[idx] for idx in order],\n", + " loc='center left', bbox_to_anchor=(1.02, 0.5), ncols=6\n", + " )\n", + " legend.get_title().set_multialignment('center')\n", + " fig = legend.figure\n", + " fig.canvas.draw()\n", + " bbox = legend.get_window_extent()\n", + " bbox = bbox.from_extents(*(bbox.extents + np.array([-5,-5,5,5])))\n", + " bbox = bbox.transformed(fig.dpi_scale_trans.inverted())\n", + " fig.savefig(legend_output_dir / \"legend.pdf\", dpi=\"figure\", bbox_inches=bbox)\n", + " legend.remove()" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "cd5ff24f", + "metadata": {}, + "outputs": [], + "source": [ + "write_dir = plot_dir / data_dir\n", + "write_dir.mkdir(exist_ok=True, parents=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "2734cc33", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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PD09adKkCTdu3CAqKoqoqCh+//13li5dirW1tb7M+fPnGTVqFElJSVhbW1O3bl0cHByIi4vj66+/ZsOGDSxevLjMt7QVReHdd99l48aNuLm54ePjQ2JiIsePH+f48ePEx8czfvx4gzLl3bZLly4xaNAgUlNTcXJy0gcsCQkJrFixgl9++YUVK1YYXNP8/HwmTZrExo0bAfDw8ECtVpOYmMhvv/3GH3/8wYIFC+jSpYu+zJEjRxg9ejTp6enY2trSoEEDFEXh5MmT/PXXX2zcuJHvvvsODw+PQm28cuUK/fv3Jzk5mTp16tCwYUNiY2P59ddfiYiIYOXKlTRr1kyf39z3is7ChQs5evQo9erVw9XVlczMTBo0aMCJEyeKvI5l+RyJe0wRohJLTExU1Gq1olarlYMHD5pU5qmnnlLUarXy9ttv648dPHhQfx6tVmu0nLF6fv75Z/3xgQMHKrdu3VIURVHS0tKUgoICJS8vT+nZs6eiVquV0aNHK+np6fqyubm5yqJFi/TlIyIiDOp79913C7Xz3685ISFBf/z48eOKv7+/olarlffff1/JyMjQp506dUrp3bu3olarlQEDBhi8Rl09utdw4cIFfdrRo0eV1q1bK2q1Wvn4449NubyFrue/ff/994parVb8/f2VH3/8UcnPz9en/frrr8pDDz2kqNVqZfr06QblunXrpj/n1q1b9cdTU1NLbM+8efP0ZR955BHl0KFD+rQLFy4offv2VdRqtTJ48GCj5QICApQTJ04YpJ04cULp1KmTolarlTFjxuiP37x5U2nRooWiVquVLVu2GJTZs2eP0rJly0JpWVlZSq9evRS1Wq289tpryt9//61PS05OVkJCQhS1Wq307t1byc7O1qfp3n+dO3c2qGfo0KGKWq1WPv/8c/2xu983TZs2VZYtW6bk5eUpiqIoOTk5yvjx4/X9cvc1NbdtxRk7dqz+umVmZuqPp6SkKC+88IKiVquVl19+2aCM7rPSqlUrZcuWLUpBQYG+7VOmTFHUarXy0EMP6T9jf//9t9K+fXv95+HmzZv6c128eFF5/vnni+1ztVqt9OnTR4mOjtannT9/Xnnsscf018JYudK8VxTln75Sq9XKt99+qz+u64Oi+tjcz5H4b8icMyFKydnZGYD09PRyPe/YsWP1E3erVauGSqXizJkzpKenY2dnx8cff0yVKlX0+W1tbQkJCaFu3boA+pEmc82bN4+8vDweffRRpk+fbrCtSNOmTfnuu+9wcHDg5MmTbN26tVB5W1tb5s+fb3DbpXXr1gQGBgJw9OjRMrUP4Pbt23zzzTcAvPnmmwwZMgQrq39+jPXt25ePP/4YuLNa9fLly4XO0bZtW/r166f/v7u7e6naMHv2bNq2bav/v4+PD/Pnz8fa2prDhw9z+PBhfdr+/fuxsrLijTfeoGXLlgbnadmypX7ftLv7Lj4+ntu3b1OlShWDdgI8+uijhISE0KdPH4PRjLVr13Lx4kWaNWvGV199Rc2aNfVpHh4efPnll3h5eZGQkMD69etL9XqNGTx4MMOHD9eP3Nnb2/Pee++hUqnIy8sjOjr6nrZNt5L36aef1n8eAWrUqMHkyZPp3LmzfuQZ7qy4/vbbbwF45513eOKJJ/S3Xu3t7fnwww/x8fFBo9Hw22+/AfD999+Tnp5O9+7dmT59usFt13r16rFgwQJcXFw4fPgwu3btMtrOOXPm0KJFC/3/fX199VMV/v15MOe9cjcvLy+Cg4P1/y/ufV0enyNxb0lwJkQpabVaAKPzasxlZWVF69atCx1v1qwZhw4d4tChQ0a3NcjNzdUHbNnZ2WbXr9Fo9LdT7p6vdre6devSs2dPAP78889C6c2bNzd6e8fX1xeAjIwMs9unc/jwYW7duoWNjQ1Dhgwxmqdfv37UrFmT/Px8du7cWSj94YcfNrv+Bg0a0KlTp0LHfX199QHb3b+of/rpJ6Kjoxk0aJDR8zk6OgIYLC7x9vbGxsaGmzdvMnHiRH0govP6668zb948g/lAO3bsAO689rtvdeo4ODjQp08fACIiIkx6rcXp1q1boWPVqlXTBwS3bt26p23TzZOcPXs2O3bsMLh+LVq04LvvvmPSpEn6Y4cPHyYjIwM7Ozv9l4W7WVlZ8e2337Jz5079oh9du59++mmjbahRo4b+vWCs3Z6enga3LXWK+jyY8165W+vWrU3+mVQenyNxb8mcMyFKSfdDtbQTmIvj5uZWaKL93RwcHLhw4QKnTp3i0qVLJCYmEhcXx9mzZ7l9+zZwZ+NWcyUmJuqDTmOTonWaN2/Oli1biI+PL5R294jIv9sOdyY7l9WFCxeAO7+c7x7Zu5tKpcLf359r164ZbaexANJUxn7Z6vj5+REZGVnoiQy2trbcvHmT48ePk5CQQGJiIgkJCZw+fZrr168Dhn1XvXp1goODWbhwIRs2bGDDhg14eHjwyCOP8Oijj/LYY48VGhXRjaasXbvWaOAM6OvSXcOyKKmv715tey/a9tZbbxEZGUl8fDyvv/46dnZ2tG7dmk6dOtGlSxeaNGlikF/3JIwGDRoU+TmrV6+e/t9ZWVkkJSUBsGDBApYvX260jC6PsXab83ko7XvlbqV5X5fH50jcWxKcCVEKubm5+h/I5blX2L9XfN3txIkTTJ06lVOnThkcr1atGl26dOHUqVNlvu2QmZmp/3dxeyLpfpBnZWUVSvsvJg3r2lnSvk3FtbO4ILgkd99CKyrt7pGNzMxMPvnkEzZv3qwPfuHOtWrWrBlNmzZlz549hc4VGhpK8+bN+fHHHzl8+DApKSn6Vbc2Njb069ePDz/8UH8ddNdFN3G8OOUxgllSXyuKov/3vWhb06ZN2bRpE4sWLeKPP/4gPT2dyMhIIiMj+fzzz1Gr1UyZMkU/mqmbguDk5GTS+e/+PJgyXcBYu0v7eTD3vaJT3M8QY3VB2T5H4t6S4EyIUoiOjtb/4NStIvy3u38x6Wg0GrPqO3/+PMOHDycnJ4dGjRrx7LPP0qRJExo2bKj/Zj5o0KAyB2d3Bx0ZGRlUr17daL6bN28Wyv9f0tVb0i9x3W218m5ncf2o+4V394jq6NGjiYyMxMHBgaFDh9KqVSsaN25M/fr1sbW1Zc2aNUX+wu3Vqxe9evXSrwyOiopi165dXLhwgU2bNpGRkcHChQuBO7e8dP83dsvxfrpXbatbty4ff/wx06ZN46+//iIqKooDBw4QGRlJbGwswcHB/Pbbb9SuXVt/S9DUIEOXH+5sRWPKSueyKst7pbTu9+dIlEzmnAlRCmvXrgXuzCdp166d/vjdc2lyc3MLlUtOTjarvmXLlpGTk4Ovry/r1q3j5ZdfpmPHjga3TK5du2bWue+m254D4K+//ioyny7t33uj/Vd083UuXrxoMLpxt4KCAv0oY3m3s7jbbidPngTQ/yI/fvy4fh7fokWLmDhxIn379qVRo0b6UZW///670HlycnI4c+aMfq6Zi4sL3bt3Z+LEifz222+8/fbbwJ15TrpfrrpFGOfOnSuyfQkJCcTExJCWllaq11xW5d02RVG4fPky+/fvB+7MF2vZsiXBwcF8//33bN68GRcXF7Kzs9m+fbtBGy5evKifBvBvP/30Ey+99BLff/89bm5u1KhRA0C/j5sxZ8+e5fTp0/ovLeYy971irvv9ORIlk+BMCBNFRUWxadMmAEJCQgwCsrsn6xv7Bf7HH3+YVefdt1Dv/javs2/fPq5cuQIYzvOBfxYsGBvJ+zcnJyceeeQRgCLn1yQmJhIeHg7AY489ZuIrKF8PP/wwVapUIS8vj5UrVxrNs3XrVlJSUlCpVOX+TM7Tp08Xur0MdwKzY8eOAXc2uwUMRjONzePLzs7Wr3q9u+/+97//8cwzzzBhwgSjfdexY0f9v3XldCNS69atMzphPC8vj9GjR/Pcc88xa9askl9oOSrvtqWnp9OnTx+CgoKIiYkplO7j46N//JRuftbDDz+Mk5MTubm5bN68uVCZgoIC1q5dy4EDB/Sjo127dgXgxx9/NDrPKyMjg+HDh9O/f3+WLVtWYruLY+57xVz3+3MkSibBmRAlyMrKYuXKlbzyyisUFBTQoUMH/bJ2HR8fH/2twE8//VR/O0BRFDZv3szXX39tVt26b/z79u0z2KJBt5O4bvd2KLyKS3crQhe8leSNN97AxsaGvXv38sEHHxh8oz5z5gyjRo3i9u3bNGnShP79+5v1esrK0dGRkJAQ4M7WHytXrjT4xblt2zY+/PBDAAYOHGh05/2yUBSFMWPGGKygPHXqFG+88QaKotC3b1/9ZHTd6ATA119/bTCPKC4ujlGjRunnYN290rZv377Y2toSGxtLWFiYwa3UtLQ05s6dC0CrVq30m+cOGTIEDw8PLl68yGuvvWbQ52lpaYwdO5bz589ja2vLyy+/XH4XxATl3bZq1arpg4X33nvPYAFGQUEBK1euJDY2FisrK30+FxcX/RYWM2bM0H/JgDufm08++YSTJ0/i6uqqX60ZEhKCk5MTR44cYcKECQajeklJSYSEhJCeno6rq2uRKx5NZe57xVz3+3MkSiZzzoT4fx9//LHByqW8vDxu3bpFYmKi/ttq9+7d+eyzzwo9nsnKyoqxY8fywQcfEBUVRZcuXfDx8SE5OZmUlBS6detGWlpasbt1G/Pyyy+zZcsWbty4wZAhQ2jQoAHOzs5cvnyZmzdv4uTkROvWrTl27Fih2x5NmzYF7uyn9Pjjj9OoUSPmz59fZF2tW7fmk08+4f3332fNmjVs2rSJhg0botFo9Ku11Go18+fPv6/Puxw5ciSXL1/mp59+Ytq0aXz11VfUrVuXv//+W3/7uE+fPkyePLnc637kkUc4c+YM/fv31++jpbtd16ZNG6ZPn67P6+/vT9++ffntt99YsmQJ69evx9vbm/T0dP1ISadOndi3bx9ZWVlkZmbi4uKCp6cnYWFhTJgwgeXLl7Nu3Trq1atHfn4+ly5d4vbt21SrVk3/BAGAKlWq8M033/Daa6+xf/9+evToQaNGjVCpVMTHx5Obm4uNjQ2ff/650ccG3Uv3om3Tpk3jhRdeIDY2lieffBJvb29cXV25cuUKN27cAO4sqrh7r7PXX3+d+Ph4fvvtN1577TVq166Nu7s7CQkJZGVl4eDgwJw5c/D09ATu3Mr74osvCA0NZcuWLWzbto1GjRqh1WpJSEggLy8PJycnvv322yLnaJrK3PdKWdzPz5EomQRnQvy/f6/KsrKywtHREV9fX1q0aMHTTz9Nhw4diiw/cOBAatWqxdKlS4mOjub8+fP4+PjwyiuvMGTIELO+XdepU4dNmzaxYMECDhw4wNWrV7G2tqZ27do8/fTTjBgxgqSkJEaMGEFkZCQajUa/Iq1///5cuHCBjRs3cvnyZbRabYnbbfTv358WLVron6157tw5nJycaNOmDU8++STPPfdcqVaF3QsqlYqpU6fSq1cvVq1axfHjxzl9+jTVqlWjW7duPPfcc/r92Mpb/fr1mT59Op9//jkHDhwgOzubJk2aMGDAAAYPHlwoaJ0zZw4dO3ZkzZo1XLp0ibNnz+rbOWjQILp27Uq3bt24cuUK4eHh+j21nn76aWrVqsWPP/7IiRMn9CNL9evXp1u3brz00kuFttNo0aKF/hFS4eHhXLx4Ea1Wi4eHB+3btycoKKjQFhP/lfJum6enJ+vWreP7779nz549JCYmcvXqVapXr84TTzzB0KFDCy3YsbGxYe7cufTu3Zt169Zx8uRJzp49S/Xq1enTpw8hISGFRoi6dOnC1q1bWbp0KXv27CE+Pp78/Hy8vLzo1KkTL7/8sn4T6LIy971irvv5ORIlUymmTEgRQgghhBD/CZlzJoQQQghhQSQ4E0IIIYSwIBKcCSGEEEJYEAnOhBBCCCEsiARnQgghhBAWRIIzIYQQQggLIvucPWCOHTuGoij6560JIYQQwvJptVpUKhWtW7cuMa+MnD1gFEUx6VmJlZmiKOTm5sp1qkCkTyse6dOKRfqzZKX5/S0jZw8Y3YhZixYt7nNLLJdGo+H06dM0atRIv1u+eLBJn1Y80qcVi/RnyWJiYkzOKyNnQgghhBAWRIIzIYQQQggLIsGZEEIIIYQFkeBMCCGEEMKCSHAmhBBCCGFBJDgTQgghhLAgEpwJIYQQQlgQCc6EEEIIISzIA7MJbXx8PF9//TVHjhwhNTWVWrVq0bdvX0JCQnB2di6xfGZmJv379ycxMZE///wTb29vk+vOzc1l6dKlbN68mYSEBBwcHPDz8+P555/nmWeeMVomLS2NBQsWEBERwbVr13BwcKBp06YMGTKExx9/3OS6hRBCCFG5PBDBWXR0NCNGjECj0dCqVStatGjB0aNHWbhwIeHh4axatQpXV9dizzF16lQSExNLXbdWq2XUqFEcPHgQV1dXOnToQF5eHkeOHOHQoUPs3r2b2bNno1Kp9GWuXr3KoEGD+Pvvv/H09OSxxx4jPT2dQ4cOERUVRVBQEBMnTix1W4QQQghR8Vl8cKbVahk7diwajYaZM2cyYMAAAHJycggNDSU8PJw5c+YwderUIs+xceNGNm/ebFb9ixcv5uDBgzRv3pzvvvuOatWqAZCUlMTgwYPZsmULPXv2pG/fvvoyM2fO5O+//+bJJ59kxowZ2NnZAXD48GFGjhzJDz/8QL9+/WjZsqVZbRJCCCFExWXxc862bt1KUlISnTp10gdmAA4ODoSFheHk5MS6deu4deuW0fKJiYlMmzaNZs2amfW8rw0bNgAwefJkfWAG4OXlxdChQwHYvXu3QZk9e/YA8NZbb+kDM4C2bdvSs2dPAKKiokrdFiGEEEJUfBYfnEVERADQu3fvQmnVqlUjICAArVbL3r17C6Xn5eUxfvx48vPzmT17NtbW1kXWs379evz8/OjevbvB8Y0bN7JhwwZat25dqExBQQHwz8PIdXT1/P3334XKpKWlAVC1atUi2yKEEEKIysvig7PY2FgA/Pz8jKY3btwYgLNnzxZKmz9/PsePH2fixIn4+vqaVb+joyNNmzY1mFMGcOzYMZYtW4aVlRX9+/c3SHvssccAeO+999i7dy8ajYZr167x6aefsn//fry9vQ1ugwohhBBC6Fj8nLNr164BULNmTaPpHh4eACQnJxscP3z4MIsWLaJbt24MGjSoxHp69epFq1atCo2C3S0rK4tJkyYRHx9PbGwsVatWZfbs2bRp08Yg3wcffMD169c5ePAgI0eONEh74okneO+990xaYVoURVHQaDRml6/osrOzDf4WDz5L6dN/f0kzl6Io5XKeB5ml9KkoH9KfJVMUxeSfIRYfnOk62sHBwWi67vjdwcqtW7eYMGEC7u7uhIWFmVSPq6triSs+L1++zLZt2/T/V6lUxMbG0qdPH2xs/rmUVapUYcCAAcTFxWFtbY2/vz9paWmcPHmSiIgImjZtyqhRo0xqlzFarZbTp0+bXb6ySEhIuN9NEOXsfvapra0tzZo1K3Z6hCny8/M5efIkWq22nFr2YJPPacUi/Vm8u+ehF8figzNra2v93K7i3P1N9IMPPuDKlSt8++23uLu7l1tbvL29iYyMxNramkOHDhEWFsbChQtJSkpi9uzZ+nzvvvsuGzduZMSIEUyYMEE/Gnfq1Clef/11Zs+ejZOTE0OGDDGrHba2tjRq1KhcXlNFlJ2dTUJCAg0aNMDR0fF+N0eUA0voU5VKhbW1NX+mbCFdm2rWOaraVqeHx5M0bty40o+eWUKfivIj/VmyuLg4k/NafHDm7OxMeno6t2/fNpqek5MDoF+JuW7dOn7//XeGDh1Kly5dyr0tOt27d6dhw4Y8/fTTbN68mVdeeYXGjRuzb98+Nm7cSLNmzZg4cSJWVv9M6/P39+eTTz4hKCiIBQsW8OKLLxqkm0qlUpm18rSycXR0lOtUwVhCn6ZrU7mem1xyxmLIL69/WEKfivIj/Vm00kyLsPjgzNPTk/T0dFJSUqhdu3ahdN1cM09PTwA++eQT/fHx48cb5NUFcjNmzMDR0ZFBgwbRtm1bs9tWv359WrduzYEDBzh58iSNGzfm4MGDAHTu3Nlo4PXII4/g4ODA9evX+fvvv6lTp47Z9QshhBCi4rH44MzPz4/Y2FjOnTtndNNW3TChbjWnbu7Z9u3bizznjh07AOjYsWOxwVlqaioLFixAo9EwY8YMo3l0949180du3rwJYDAH7W4qlUoftMmcEyGEEEL8m8VvpdG1a1fAeLB148YNIiMjsbe3p0OHDsCdLTWK+qOb8P/nn39y9uxZAgMDi63bwcGBNWvWsH79emJiYgqlp6enc+LECQBatGgBoJ8LFhERYXROyZEjR9BoNLi5ueHl5WXiVRBCCCFEZWHxwVnPnj3x8vJi586drF69Wn88JyeHyZMno9FoGDhwYJkn/mdkZHD+/HkuXbqkP+bs7Kzfw2zy5MmkpKTo09LS0nj77bdJT0/nscceo0mTJgA8+eSTuLm5cfLkST799FPy8/P1Zc6fP8/kyZMBGDp0aJGja0IIIYSovCw+OnBwcGDWrFkEBwczZcoU1qxZg7e3N8eOHSM5OZnmzZsTGhpa5nr++OMPJk2ahJeXF+Hh4frj7777LqdPnyYmJobevXvTpk0bFEUhOjqajIwMmjVrxqeffqrP7+7uzhdffMEbb7zBkiVL2LJlC61atSItLY2YmBhyc3Pp1q0br7/+epnbLIQQQoiKx+KDM4B27dqxdu1a5s+fT1RUFHFxcXh7ezNw4ECCgoLKtKFrSVxcXFi1ahVLly5ly5YtHDp0CCsrK3x9fXnyyScZOnRooX1LOnXqxMaNG/nuu+/Yu3cvO3fuxN7enhYtWhAYGEhgYKBZqzSFEEL8I78gH2urMu47Vw7nEKK8PRDBGYBarWbevHllOsfhw4eLTNMFTcbY2dkREhJCSEiIyXXVq1ePadOmlbqNQgghTGNtZc3E3RO5cPOCWeV9q/gy87GZ5dwqIcrugQnOhBBCiH+7cPMCp9PkiSmiYpF7a0IIIYQQFkSCMyGEEEIICyLBmRBCCCGEBZHgTAghhBDCgkhwJoQQQghhQSQ4E0IIIYSwIBKcCSGEEEJYEAnOhBBCCCEsiARnQgghhBAWRIIzIYQQQggLIsGZEEIIIYQFkeBMCCGEEMKCSHAmhBBCCGFBJDgTQgghhLAgEpwJIYQQQlgQCc6EMCK/IN8iziGEEKLysbnfDRDCEllbWTNx90Qu3LxgVnnfKr7MfGxmObdKCCFEZSDBmRBFuHDzAqfTTt/vZgghhKhk5LamEEIIIYQFkeBMCCGEEMKCSHAmhBBCCGFBHpg5Z/Hx8Xz99dccOXKE1NRUatWqRd++fQkJCcHZ2bnE8pmZmfTv35/ExET+/PNPvL29S1V/TEwMCxYs4K+//uLWrVvUrVuXZ555hpdeeglbW1t9vsjISIYPH27SOWfMmEFgYGCp2iGEEEKIiu2BCM6io6MZMWIEGo2GVq1a0aJFC44ePcrChQsJDw9n1apVuLq6FnuOqVOnkpiYaFb9f/75J2+++SYFBQW0bdsWNzc3Dh06xOzZs9m3bx+LFy/WB2g1atTgqaeeKvJcly9f5tixY9ja2qJWq81qjxBCCCEqLosPzrRaLWPHjkWj0TBz5kwGDBgAQE5ODqGhoYSHhzNnzhymTp1a5Dk2btzI5s2bzao/PT2dCRMmoFKp+P777+nYsaP+eEhICAcOHGDp0qWMGjUKgIYNGzJ79myj58rKyuK5554DYNq0aTRv3tysNgkhhBCi4rL4OWdbt24lKSmJTp066QMzAAcHB8LCwnBycmLdunXcunXLaPnExESmTZtGs2bNcHJyKnX9P/74I1lZWQwYMEAfmAFUrVqVGTNmALBs2TIKCgpKPNfUqVO5cOEC/fv3l9uZQgghhDDK4oOziIgIAHr37l0orVq1agQEBKDVatm7d2+h9Ly8PMaPH09+fj6zZ8/G2tq6yHrWr1+Pn58f3bt3Nzi+c+fOIutv2LAharWalJQUYmJiin0dBw4cYNOmTXh4eDB58uRi8wohhBCi8rL44Cw2NhYAPz8/o+mNGzcG4OzZs4XS5s+fz/Hjx5k4cSK+vr5m1X/u3Dmz69fJy8vj448/BuCdd97Bzc3NrLYIIYQQouKz+Dln165dA6BmzZpG0z08PABITk42OH748GEWLVpEt27dGDRoUIn19OrVi1atWhmsvExPTycnJwcrKys8PT1LVf/dNm7cSFxcHGq1utjFAqZSFAWNRlPm81RU2dnZBn+XlkqlwtHRsdzaoihKuZyrMitrn5YHeV+UL/mcViyW8Bm1dIqioFKpTMpr8cGZrqMdHByMpuuO3x2s3Lp1iwkTJuDu7k5YWJhJ9bi6uhZa8VlS3UXVfzdFUViyZAkAr7/+uskdUxytVsvp0/JYoZIkJCSYVc7R0RF/f/9yaUN8fLz8sCpH5vZpeZD3xb0hn9OK5X5+Rh8EdnZ2JuWz+ODM2trapMn2d3/r+eCDD7hy5Qrffvst7u7uZtdtZWX6Xd+ivnXt3r2buLg4GjZsSJ8+fcxuy91sbW1p1KhRuZyrIsrOziYhIYEGDRqY9c26PAJoHR8fH/lGXg7K2qflQd4X5Us+pxWLJXxGLV1cXJzJeS0+OHN2diY9PZ3bt28bTc/JyQHQr8Rct24dv//+O0OHDqVLly5lrhsosm5j9f/bli1bAAgMDCy3HyYqlcqslaeVjaOj432/TvJDqnxZQp+WB3lf/MMS+lT6o/xYQn9aqtLEABYfnHl6epKenk5KSgq1a9culK6b66WbE/bJJ5/oj48fP94gry6QmjFjBo6OjgwaNIi2bdsWWbeLiwsuLi5kZmaSmppK9erVS6z/brm5uURERGBlZVUuc82EEEIIUfFZfHDm5+dHbGws586do2XLloXSdcOEutWUurlf27dvL/KcO3bsAKBjx47FBmcAarWao0ePcu7cOaPB2b/rv9uRI0fIyMigbdu2RS5oEEIIIYS4m8UHZ127dmXz5s1s376dZ5991iDtxo0bREZGYm9vT4cOHYDit7Ro27YtGRkZpXq2ZteuXTl69Cjbt2/nkUceMUg7f/48sbGx1KhRw+hu/ydOnADg4YcfNqkuIYQQQgiL3+esZ8+eeHl5sXPnTlavXq0/npOTw+TJk9FoNAwcOLBME/8BMjIyOH/+PJcuXTI4HhgYiIuLC2vWrNFviAt3ttl47733AAgODsbGpnCcq9uYtkWLFmVqmxBCCCEqD4sfOXNwcGDWrFkEBwczZcoU1qxZg7e3N8eOHSM5OZnmzZsTGhpa5nr++OMPJk2ahJeXF+Hh4frjHh4eTJs2jfHjx/Paa6/Rpk0b3N3dOXToEOnp6XTr1o1hw4YZPefly5f15xBCCCGEMIXFB2cA7dq1Y+3atcyfP5+oqCji4uLw9vZm4MCBBAUF6VdV3itPPPEENWvWZNGiRRw/fpy8vDzq1q3La6+9xuDBg42OmgGkpaUBFNo/TQghxP1X3bE6BUoBVqqy3UQqj3MIcbcHIjiDOxPz582bV6ZzHD58uMi0wMDAYh9G3rZt2xIXD/zbnj17SpVfCCHEf8fNzg0rlRV/pmwhXZtq1jmq2lanh8eT5dwyUdk9MMGZEEIIcS+ka1O5nlv0I/iE+K/JOKwQQgghhAWR4EwIIYQQwoJIcCaEEEIIYUEkOBNCCCGEsCASnAkhhBBCWBAJzoQQQgghLIgEZ0IIIYQQFkSCMyGEEEIICyLBmRBCCCGEBZHgTAghhBAWIb8g3yLOcb/J45uEEEIIYRGsrayZuHsiF25eMKu8bxVfZj42s5xb9d+T4EwIIYQQFuPCzQucTjt9v5txX8ltTSGEEEIICyLBmRBCCCGEBZHgTAghhBDCgkhwJoQQQghhQSQ4E0IIIYSwIBKcCSGEEEJYEAnOhBBCCCEsiARnQgghhBAWRIIzIYQQQggL8sA8ISA+Pp6vv/6aI0eOkJqaSq1atejbty8hISE4OzsXyp+RkcGiRYv4448/SEpKwtnZmRYtWjB06FC6du1aqrrNOZeiKPzyyy+sW7eOs2fPkpubS/369enfvz8jRozA1tbWjKsghBBCiIrugQjOoqOjGTFiBBqNhlatWtGiRQuOHj3KwoULCQ8PZ9WqVbi6uurzZ2ZmMnjwYGJjY6levTqPPvooWVlZ7N+/nz179hASEsLbb79tUt3mnCs/P5/Q0FC2bduGvb09AQEB5Ofnc/ToUT777DOio6P58ssvUalU5XqdhBBCCPHgs/jgTKvVMnbsWDQaDTNnzmTAgAEA5OTkEBoaSnh4OHPmzGHq1Kn6MjNmzCA2NpZu3boxd+5cHB0dATh16hTDhg3j22+/pVevXrRs2bLE+s051w8//MC2bdto3Lgxixcvpnbt2gAkJiYyYsQItm3bxq+//soTTzxRXpdJWJjqjtUpUAqwUpVt5kB5nEMIIcSDpUzB2dmzZ9m/fz8HDx4kMTGR1NRUMjIysLe3p3r16vj6+vLwww/TpUsXmjRpYlYdW7duJSkpiU6dOukDMwAHBwfCwsLo3r0769atY9y4cbi5uZGTk8Ovv/6KSqXio48+0gdTAP7+/jz11FP89NNP7N69u8TgzJxz5ebm8u2332Jra8uXX36pD8wA6taty5gxY/j88885deqUBGcVmJudG1YqK/5M2UK6NtWsc1S1rU4PjyfLuWVCCCEsXamDM61Wy88//8yPP/7I+fPngTvzq+6WnZ3N5cuXuXz5Mnv27OGLL76gcePGBAcH89RTT5Xqdl5ERAQAvXv3LpRWrVo1AgICiIiIYO/evfTr1w8HBwf27NnD5cuXqVmzZqEyBQUFAIXmfH311VfMnz+f9u3bs2LFCgCzzrVv3z5u3rxJnz59aNiwYaEyAwYMMAgyRcWWrk3lem7y/W6GEEKIB0ipgrNff/2V2bNnc/XqVRRFoUqVKrRu3Ro/Pz98fHxwdXXFycmJmzdvcuPGDf7++2+OHj1KTEwMsbGxvPvuuyxYsIAxY8aYPGoUGxsLgJ+fn9H0xo0bExERwdmzZ+nXrx8ALi4uRkfqIiIi2LhxI/b29vq8JSntuf766y8AWrdujaIo7N69mwMHDpCZmYmPjw9PPfUUnp6eJtUthBBCiMrHpODs+vXrTJo0iT179uDq6sqLL75I//79adGihUmjYHl5eURFRfG///2P8PBwxo8fz6+//sr06dNxd3cvtuy1a9cAjI5cAXh4eACQnGx8dOLy5cvMmDGDc+fOcfHiRWrXrs2MGTOoW7euQb4hQ4bQr18/g1uX5pwrISEBuDPqNnz4cKKiogzOMX/+fGbNmmV0JNBUiqKg0WjMLl/RZWdnG/xdWiqVqtj3wX8tOzu70Oh0ZVPWPgXKvABHpVLh4OBQpnPoSJ/K57SiKa/PaHn1qSX2h6IoJv8cMik4e/LJJ/UT84cNG2Z064piK7GxoWPHjnTs2JG0tDSWLVvGsmXLeOqpp9i3b1+xZXUdXdQPRd3xooKV2NhYduzYYXDs7NmzdOjQweCYu7t7iYGiKefKzMwE4PPPP8fGxoY5c+bw6KOPkpGRwapVq/jhhx8YN24cq1evpnnz5sXWVxStVsvp06fNKluZ6ALl0nJ0dMTf3798G1MG8fHxZfqBV5GY26e2trb4N/PHxtoy1kBJn/5DPqcVi7n9CeXbp5baH3Z2diblM+knVY8ePRg3bhzVq1cvU6PgThAUGhrKiy++yBdffFFifmtra/3cruIUFSE//PDDHDlyhNzcXPbs2cPMmTOZMWMGN27cIDQ0tFRtN+Vct2/fBu4EaatXr6ZVq1YAVK1alXfffReNRsPq1av5+uuv+eabb0pVv46trS2NGjUyq2xlkJ2dTUJCAg0aNDDrW5ilbXHi4+Njcd8A/2vl0ac21jZM3D2RCzcvmNWGR70e5c02b5pV9t+kT+VzWtGUtT+hfPvUEvsjLi7O5LwmBWeffPKJ2Y0pSq1atZg5c2aJ+ZydnUlPT9cHPf+Wk5MDgJOTk9H0KlWq6P/9zDPP4OXlxdChQ1myZAlBQUFUrVrV5Dabci7dm7JVq1b6wOxuQ4cOZfXq1Rw8eNDkev9NpVIV+XrFPxwdHSvEdbKkWzf3W1n79MLNC5xOM2/U2aeKj9n1/pv06T/kc1qxWEp/WmJ/lCb4tPgNlHST51NSUoym6+aamTrJvm3bttStW5fc3FzOnTtXprYZO5dudNHb29toGd1xjUajDyyFEEIIIXTKZQJGbm6uwX3UmJgYtm7dSn5+Pl26dOHRRx81+9x+fn7ExsZy7tw5o/uS6YYJdas5L1y4wLJly3B2duadd94xek5dW/Py8oqt25xz6dqhW8jwb9evXwfujPSV1+RiIYQQQlQcZRo50+0tdvdtzz///JMXX3yRZcuW8eOPPzJq1CimT59udh26Z1du3769UNqNGzeIjIzE3t5ePynf2tqa1atXs2zZMqMrOC9dukR8fDw2NjY0bdq02LrNOVfXrl1RqVQcPXqUpKSkQmV27doFQEBAQPEvXAghhBCVktnBWWxsLK+99hoXLlzg8uXL+uNhYWHk5eVRu3ZtunTpgrW1NatWrWL37t1m1dOzZ0+8vLzYuXMnq1ev1h/Pyclh8uTJaDQaBg4cqF9pWb9+fTp16kReXh4TJ07Ur56EO1thjB07lvz8fJ5//nmD+WZpaWmcP3+eK1eu6I+Zc666devy+OOPk5eXx7hx40hLS9OXiY6O5quvvgJgxIgRZl0PIYQQQlRsZt/WXL58OVqtlt69ezN58mQATpw4QVJSEo6Ojqxbtw53d3e2b9/Om2++ydq1a3nsscdKXY+DgwOzZs0iODiYKVOmsGbNGry9vTl27BjJyck0b9680KrLsLAwhg0bxr59++jRowcPPfQQGo2G6OhocnJy6Ny5M5MmTTIos3LlykJPCDD3XFOnTuXSpUscP36cHj16EBAQwK1bt4iOjkar1TJ69OhCW3kIIYQQQkAZgrOoqCicnJwICwvDxcUFQD869uijj+pHsnr37o2npyfHjx83u5Ht2rVj7dq1zJ8/n6ioKOLi4vD29mbgwIEEBQUV2netVq1arF+/nsWLF7N9+3b27duHnZ0d/v7+BAYG8uyzz2JlZdqgoTnnqlq1Kj/99BMrVqxg8+bNHDhwADs7Ox5++GFGjBhB9+7dzb4WQgghhKjYzA7OkpOT8fX11QdmcOe5kiqVikceecQgr6enJ2fOnDG/lYBarWbevHkm53d1dWXcuHGMGzfOpPxjxoxhzJgx5XIuAHt7e4KDgwkODja5jBBCCCGE2XPOFEVBq9Xq/5+Zmal/rmT79u0N8qalpcnKRCGEEEIIE5gdnNWrV49Lly5x8+ZN4M6DwPPy8qhZsyaNGzfW54uJieHKlSs0aNCgzI0VQgghhKjozA7Ounfvzu3bt3n99ddZvnw5s2bNQqVS8fjjjwN3HmO0fft23njjDVQqFT169Ci3RgshhBBCVFRmzzkbOXIkv/32G4cPH+bIkSMoioKnpychISEAHD9+nLfeegtFUfD395etI4QQQgghTGB2cObm5sbatWtZvHgxZ8+epX79+gQHB+tXaTZo0ICqVavy5JNPEhoaahHP2hJCCCGEsHRlenxTlSpVGD9+vNG0mjVrsnfvXqytrctShRBCCCFEpXLPHnyemZlJVlbWvTq9EEIIIUSFVKbgTFEUfv31V3bs2KE/lpmZyejRo2nXrh0BAQEMGjSI8+fPl7mhQgghhBCVgdnBmVarZcSIEbz99tts2bJFf3zatGmEh4ejKAqKonD8+HGGDx9Oenp6ebRXCCGEEKJCMzs4W7t2LVFRUdjb2+Pn5wfAjRs3+PXXX1GpVIwbN46ff/6ZTp06kZaWxtKlS8urzUIIIYQQFZbZwdlvv/2GSqViwYIFvPbaawDs2rWLvLw8fH19CQkJoVmzZnz22WfY2dkRERFRbo0WQgghhKiozA7Ozp07h5eXFx07dtQf0z1b87HHHtMfc3d3p169ely+fLlsLRVCCCGEqATMDs4yMzOpVq2awbEDBw4AEBAQYHDc2tqa3Nxcc6sSQgghhKg0zA7O3NzcSE5O1v//zJkzXL9+HWtra9q1a6c/np2dzaVLl6hRo0bZWiqEEEIIUQmYHZy1bNmS5ORkfvvtNwD9hP927drh7Oyszzd37lw0Gg2tWrUqW0uFEEIIISoBs4OzIUOGoCgK48aNIyAggI0bN6JSqRgyZAhwZyTt6aefZsWKFahUKoYOHVpujRZCCCGEqKjMDs46d+7Me++9h52dHTdv3sTa2ppXXnmFnj17AqBSqYiNjcXGxoZPP/2Utm3bllujhRBCCCEqqjI9W3P48OEMGDCA+Ph4vL299Q89hzsPPn/vvffo27cvHh4eZW6oEEIIIURlUKbgDMDV1ZWWLVsWOm5vb8/w4cPLenohhBBCiErlnj34XAghhBBClJ7ZI2fz588HYOjQoVStWrXIfDdu3GDlypUAvPHGG+ZWJ4QQQghRKZQpOFOpVDzxxBMlBmfz58/HyspKgjMhhBBCiBKUac6Zoij3JK8x8fHxfP311xw5coTU1FRq1apF3759CQkJMdhXTScjI4NFixbxxx9/kJSUhLOzMy1atGDo0KF07dq11PXv37+fxYsXc+bMGXJycvD19WXQoEE899xzqFSqQvmHDh3KoUOHijzfO++8w8iRI0vdDiGEEEJUbGYHZ2fOnDEpn6+vr8l5ixIdHc2IESP0m9m2aNGCo0ePsnDhQsLDw1m1ahWurq76/JmZmQwePJjY2FiqV6/Oo48+SlZWFvv372fPnj2EhITw9ttvm1z/ypUrmTZtGra2tgQEBGBra8vBgwd5//33OXz4MLNmzTLIrygKp06dws7Ojj59+hg9Z6NGjcy7GEIIIYSo0Mq8WvNe02q1jB07Fo1Gw8yZMxkwYAAAOTk5hIaGEh4ezpw5c5g6daq+zIwZM4iNjaVbt27MnTsXR0dHAE6dOsWwYcP49ttv6dWrl9FVpv924cIFPv74Y9zc3FixYgVNmjQB4MqVK4wYMYINGzbQpUsX+vXrpy8THx9PVlYWDz30ELNnzy7HqyGEEEKIis7iV2tu3bqVpKQkOnXqpA/MABwcHAgLC8PJyYl169Zx69Yt4E7Q9uuvv6JSqfjoo4/0gRmAv78/Tz31FAC7d+82qf7FixdTUFDAyJEj9YEZQJ06dfjwww8BWLJkiUGZU6dOAdC8eXMzXrEQQgghKrNyCc4yMjK4evUqV65cKfaPOSIiIgDo3bt3obRq1aoREBCAVqtl7969wJ2gbc+ePWzYsIGaNWsWKlNQUACAra2twfGvvvoKPz8/hg0bZnB8586dRdbfsWNH3NzciImJ4fr16/rjJ0+eBCQ4E0IIIUTplem25po1a/j2229JSkoqMa9KpdKPKJVGbGwsAH5+fkbTGzduTEREBGfPntXfWnRxcTEY5dKJiIhg48aN2NvbG9yGLMr169dJS0vD3t4eHx+fQunW1tb4+vpy/Phxzp49S40aNYB/gjONRsOrr77KX3/9RUZGBg0bNuS5555j0KBBWFlZ/KClEEIIIe4Ds4OzDRs26G/rmcLc1ZrXrl0DMDoKBugfDZWcnGw0/fLly8yYMYNz585x8eJFateuzYwZM6hbt65BviFDhtCvXz+D26C6uj08PIyuyLy7/pSUFOCfxQAA06ZNo0GDBrRu3ZqkpCTOnDnDRx99xL59+5g3bx7W1tYmXQMhhBBCVB5mB2fLly8H7jwAPSQkBE9PT2xsyn99QXZ2NnDndqUxuuMajcZoemxsLDt27DA4dvbsWTp06GBwzN3d3eDZoHfXfXfA9m/29vYAZGVlAZCYmEhGRgbW1tZ8/PHHBAYG6vOeOHGCN954gx07dvDdd9/xyiuvFHne4iiKUuTrFf/0m+7v0lKpVMX2+X8tOzu7zFvRPOikTyse6dOKpaz9CeXbp5bYH4qiFDnQ829mR1NxcXFUqVKF+fPn6wOUe8Ha2lo/T6w4RXXCww8/zJEjR8jNzWXPnj3MnDmTGTNmcOPGDUJDQ4s9Z2luPerqr1evHgcOHODWrVs0aNDAIE+rVq344IMPGDNmDMuXLyckJMTkjrqbVqvl9OnTpS5X2SQkJJhVztHREX9///JtTBnEx8eX6QdeRSJ9WvFIn1Ys5vYnlG+fWmp/2NnZmZTP7ODMwcEBLy+vexqYATg7O5Oens7t27eNpufk5ADg5ORkNL1KlSr6fz/zzDN4eXkxdOhQlixZQlBQULFPN9Btbqurwxhdu+6u39gonE7Xrl2xtrbm+vXrXL16lTp16hR57qLY2trKPmnFyM7OJiEhgQYNGpj1LcycgPle8vHxsbhvgP816dOKR/q0Yilrf0L59qkl9kdcXJzJec0Ozlq0aMHx48fRarWFVj6WJ09PT9LT00lJSaF27dqF0nVzzTw9PU06X9u2balbty6XLl3i3LlztGvXrsi8unlud6/ELGv9dnZ2uLu7k5KSUqbh/KKCUfEPR0fHCnGdLOnWzf0mfVrxSJ9WLJbSn5bYH6UJPs1eMhgSEoJGo2Hu3LnmnsIkulWa586dM5qui0R1+S5cuMCUKVP49NNPizynblgxLy+v2LqrVq1KzZo1yc7OJjExsVB6fn4+Fy5cAECtVgOwY8cOxo8fz9KlS42e8/bt26Snp2NlZVXkIgchhBBCVF5mj5wFBAQwZcoUpk2bxl9//cVjjz2Gu7t7sfO0+vfvX+p6unbtyubNm9m+fTvPPvusQdqNGzeIjIzE3t5eP8Hf2tqa1atXY2Njw0svvVRoROvSpUvEx8djY2ND06ZNTar/f//7H9u3by/0LMx9+/aRkZFBs2bN9PVkZGSwefNmjh49ypAhQwqNKm7ZsgWtVkvbtm1xcXEp9fUQQgghRMVmdnCm1Wo5dOgQBQUFHDp0qNiHfMOd4TxzgrOePXvi5eXFzp07Wb16NYMGDQLuzAObPHkyGo2GYcOG6ed41a9fn06dOrFv3z4mTpzIvHnz9EHQ5cuXGTt2LPn5+bz44osG883S0tK4ceMGjo6OBvPABg8ezM8//8w333xDu3bt9I98unLlCtOnTwfg1Vdf1efv1asXs2fPJikpiRkzZjBp0iR9gHb48GFmzJiBSqXijTfeKPW1EEIIIUTFZ3Zw9vXXX7N161bgzqpGd3f3ezL3zMHBgVmzZhEcHMyUKVNYs2YN3t7eHDt2jOTkZJo3b15o1WVYWBjDhg1j37599OjRg4ceegiNRkN0dDQ5OTl07tyZSZMmGZRZuXIl8+fPp3379qxYsUJ/vEmTJoSGhvLZZ5/x4osv0r59e+zt7YmMjESj0TBo0CCDpwe4uLjw+eef8+qrr7Jy5UoiIiLw9/cnLS2NY8eOATBx4sRCW3kIIYQQQkAZgrOtW7eiUqkYPXo0o0aNKnIfsvLQrl071q5dy/z584mKiiIuLg5vb28GDhxIUFCQflWlTq1atVi/fj2LFy9m+/bt7Nu3Dzs7O/z9/QkMDOTZZ58t1TYZwcHB+Pj4sHTpUk6cOIFKpaJhw4YMGTKEZ555plD+gIAANmzYwKJFi9i3bx+7du3CxcWFbt26MXLkSNq2bVvmayKEEEKIisns4OzatWvUrl2bMWPGlGd7iqRWq5k3b57J+V1dXRk3bhzjxo0zKf+YMWOKfS09evSgR48eJtdfv359wsLCTM4vhBBCCAFlWK1ZrVo1XF1dy7MtQgghhBCVntnBWdeuXYmLizO6xYQQQgghhDCP2cHZG2+8QdWqVRk9ejQxMTHl2SYhhBBCiErL7Dlnq1aton379vz2228MHDiQatWqUatWrSJ35VWpVPz4449mN1QIIYQQojIwOzj75ptv9I8iUBSFtLQ00tLSisxvac9BE0IIIYSwRGYHZ7KJqhBCCCFE+ZPgTAghhBDCgpi9IEAIIYQQQpQ/s0fOdHJzc7lw4QKZmZkoilJs3nbt2pW1OiGEEEKICq1MwdncuXNZvnw5OTk5JeZVqVScOnWqLNUJIYQQQlR4ZgdnS5cuZdGiRSbnL2lUTQghhBBClCE4W7NmDSqVisDAQF5//XU8PT2xsSnzXVIhhBBCiErN7GgqMTGR6tWrM336dKysZF2BEEIIIUR5MDuqcnFxwcPDQwIzIYQQQohyZHZk1a5dO+Lj48nKyirP9gghhBBCVGpmB2ejR48mPz+fjz76SCb7CyGEEEKUE7PnnDVp0oQvv/ySN954g+PHj9OpUyfc3d2LfYamPFVACCGEEKJ4ZgdnmZmZLF68mIKCAhITE1m9enWJZSQ4E0IIIYQontnB2RdffMGxY8cA8PDwoE6dOtja2pZbw4QQQgghKiOzg7MdO3agUqkICwtjwIAB5dkmIYQQQohKy+wFAWlpadSvX18CMyGEEEKIcmR2cObp6Ym1tXV5tkUIIYQQotIzOzjr06cPFy5c4OTJk+XZniLFx8czfvx4unXrRsuWLenduzdz584tcp+17OxsFixYwDPPPMNDDz1Ey5Yt6devH59//jm3bt0qVd0ZGRnMnj2bPn360Lx5cwICAggODmbnzp0mnyMiIgI/Pz+GDRtWqrqFEEIIUbmYHZy99tpr1KtXj9dee43ff//9nm5GGx0dTWBgIJs3b8bDw4OuXbui0WhYuHAhgwYNIiMjwyB/eno6AwcO5Msvv+TKlSu0bt2a9u3bk5qayqJFiwgMDOTatWsm1Z2ZmcngwYNZvHgxGRkZPProo6jVavbv388rr7zCnDlzSjxHSkoK7733nlmvXQghhHgQ2NraFrudljCd2QsCpk2bRt26ddm7dy+hoaGoVCpcXV1xdHQ0ml+lUhEREVHqerRaLWPHjkWj0TBz5kz9HLecnBxCQ0MJDw9nzpw5TJ06VV/ms88+IzY2loCAAL788kuqVasGwK1btxg3bhx79uxhypQpLFy4sMT6Z8yYQWxsLN26dWPu3Ln613fq1CmGDRvGt99+S69evWjZsqXR8oqi8O6775KWllbq1y6EEEI8CFQqFc2b+WNlbXZYIe5i9lXctGmT/t+KoqAoCjdv3uTmzZtG85sbTW/dupWkpCQ6depksPjAwcGBsLAwunfvzrp16xg3bhxubm7k5OSwZcsWAGbOnKkPzADc3NyYNWsWnTp1YteuXdy8eZMqVaoUWXdOTg6//vorKpWKjz76yCDw9Pf356mnnuKnn35i9+7dRQZnS5YsYd++fbRv356oqCizroEQQghh6aysbeCv/0FWsnknqO4HjXqXb6MeUGYHZzNmzCjPdhRJN9rWu3fhDqtWrRoBAQFERESwd+9e+vXrR2pqKs2aNUNRFOrUqVOoTPXq1alSpQrp6elcv35dH5x99dVXzJ8/n/bt27NixQrgTgC4Z88eLl++TM2aNQudq6CgAKDI/d1OnTrF3Llz6dixI4MHD5bgTAghRMWWlQwZV8wr6+RRvm15gJkdnP1XW2jExsYC4OfnZzS9cePGREREcPbsWfr164eXlxerVq0q8nwXL14kPT0da2trPD09S6zfxcWFJk2aFDoeERHBxo0bsbe3p1+/foXSs7OzGTduHM7OzsycOZOYmJgS6xJCCCGEsPibw7qJ+8ZGruDO0wkAkpNNG0adPXs2AJ06dcLV1VV/fMiQIfTr16/IOXMAly9fZsaMGZw7d46LFy9Su3ZtZsyYQd26dQvl/eSTT4iPj+err76iZs2aEpwJIYQQwiQmBWcvv/wy7733Ho0aNSq3ik+ePMmsWbNYvnx5sfmys7OBO7cYjdEd12g0Jda5cOFCtm/fjoODA+PHjzdIc3d3x93dvdjysbGx7Nixw+DY2bNn6dChg8Gxbdu2sXbtWp599lmjt2PLSlEUk15vZaV7z+j+Li2VSlVskP5fy87ORlGU+92M+0r6tOKRPq1YcnNzpT9KoCiKyfPvTQrOkpKSeOaZZwgMDOS1114zOpfLVGfOnOH7779n69at1K9fv8T81tbW+rldxSmpE7788ksWLFiAlZUVYWFhRd4mLc7DDz/MkSNHyM3NZc+ePcycOZMZM2Zw48YNQkNDAfj777/54IMPqFevHpMnTy51HabQarWcPn36npy7IklISDCrnKOjI/7+/uXbmDKIj483+xdYRSN9WvFIn1YMjo6OVK1a9X43Q89S+8POzs6kfCYFZxs2bGDGjBmsXbuW9evX07lzZ55++mk6d+5scGuwKH///Te7d+9m7dq1/PXXXwAMHjyYCRMmlFjW2dmZ9PR0bt++bTQ9JycHACcnJ6Ppubm5vP/++2zcuBFbW1tmzpzJE088UWK9xty9svOZZ57By8uLoUOHsmTJEoKCgnBzc2PChAlkZWWxePFinJ2dzaqnJLa2tuU6ilnRZGdnk5CQQIMGDcz6Jmdp+/T4+PhY3DfA/5r0acUjfVqx5Obm3u8mGLDE/oiLizM5r0nBmaOjI9OmTaN///7MnDmTnTt3smvXLqytrWnYsCGNGzemfv36+n3Obt26xY0bN7h27RrHjh3j6tWrwJ3RrXbt2vHWW2/Rtm1bkxro6elJeno6KSkp1K5du1C6bq6Zscn9qampvP766xw7dgwXFxfmzZtHp06dTKrXFG3btqVu3bpcunSJc+fOkZqaSlRUFB4eHqxYsUK/6hP+mTt3/vx5/S1V3fy30lKpVEUGo+Ifjo6OFeI6WdKtgvtN+rTikT6tGCwtWLbE/ijNNSrVgoA2bdqwZs0adu3axfLlyzlw4ABnz57l7NmzRivVRa02NjY8+uijjBw5knbt2pWmSvz8/IiNjeXcuXNG9xLTRaL/vk156dIlXnrpJZKSkvDy8mLRokU0bty4VHVfuHCBZcuW4ezszDvvvGM0j26IMi8vTz8PLCUlhc2bNxvNn5qaqk8zNzgTQgghRMVl1mrNLl260KVLF27evElkZCSRkZFcvnyZ1NRUbt26hb29PTVq1MDHx4c2bdrQsWPHEifbF6Vr165s3ryZ7du38+yzzxqk3bhxg8jISOzt7Q0m5V+7do3hw4dz9epVWrRowaJFi6hevXqp67a2tmb16tXY2Njw0ksvFRqdu3TpEvHx8djY2NC0aVM6dOhAYGCg0XPt2LGD119/3WAfNSGEEEKIfyvTVhpVqlShd+/e92RFok7Pnj3x8vJi586drF69mkGDBgF35ppNnjwZjUbDsGHDDIK/CRMmcPXqVdRqtX7kqyRpaWncuHEDR0dH/YKH+vXr06lTJ/bt28fEiROZN28eLi4uwJ1tNcaOHUt+fj4vvviiRU2EFEIIIcSDy+L3OXNwcGDWrFkEBwczZcoU1qxZg7e3N8eOHSM5OZnmzZvrV0oC7Nu3j8jISODO45qmTJlS5LnHjRunD8RWrlxZ6AkBAGFhYQwbNox9+/bRo0cPHnroITQaDdHR0eTk5NC5c2cmTZp0j169EEIIISobiw/OANq1a8fatWuZP38+UVFRxMXF4e3tzcCBAwkKCjIYGbv74eqHDx8u9rwjR44scVuQWrVqsX79ehYvXsz27dvZt28fdnZ2+Pv7ExgYyLPPPouVlVXZXqAQQgghxP97IIIzALVazbx580rM9/777/P++++X+vxjxoxhzJgxRtNcXV0ZN24c48aNK/V5dXr27MnZs2fNLi+EEEKIykGGfIQQQgghLIgEZ0IIIYQQFkSCMyGEEEIICyLBmRBCCCGEBZHgTAghhBDCgkhwJoQQQghhQcq0lca1a9dYsmQJR48e5datW+Tn5xf5FHiVSsWOHTvKUp0QQgghRIVndnCWlJTEwIEDSUtLKzIgu5ulPbFeCCGEEMISmR2cffPNN6SmpuLs7MyAAQNo2LAhDg4O5dk2IYQQQohKx+zgbM+ePahUKpYsWUKrVq3Ks01CCCGEEJWW2QsC0tLSaNSokQRmQgghhBDlyOzgzN3dHa1WW55tEUIIIYSo9MwOzjp27EhiYiKXLl0qz/YIIYQQQlRqZgdnb7zxBo6Ojrz77rukpaWVZ5uEEEIIISotsxcE7N27l379+rFmzRq6du1K8+bNqVmzJra2tkbzq1QqZs2aZXZDhRBCCCEqA7ODsylTpuj3LsvNzeXo0aNG86lUKhRFkeBMCCGEEMIEZgdn/fv3l41lhRBCCCHKmdnB2cyZM8uzHUIIIYQQAnnwuRBCCCGERSnTg88BCgoK2Lp1Kzt27CA+Pp6srCycnZ1p0KABnTt3pn///kUuEhBCCCGEEIbKFJxdu3aN0aNHc+rUqUIPP4+NjeWPP/7gp59+4quvvsLLy6tMDRVCCCGEqAzMDs5u377NqFGjiI2NxcHBgZ49e9K8eXOcnZ25desWf/31F+Hh4Zw6dYrXX3+dNWvWYGdnV55tF0IIIYSocMwOzn766SdiY2Px8fFh8eLFeHt7F8qTmJjIqFGjOHv2LD///DMvvvii2Q2Nj4/n66+/5siRI6SmplKrVi369u1LSEgIzs7OhfJnZ2fzww8/sG3bNi5evEhBQQHe3t707NmT4OBg3NzcSlX//v37Wbx4MWfOnCEnJwdfX18GDRrEc889Z3TVanx8PN988w379+8nPT0dd3d3OnTowKhRo2jUqJHZ10EIIYQQFZvZCwJ+++03VCoVc+fONRqYAdStW5cvvvgCRVHYsmWL2Y2Mjo4mMDCQzZs34+HhQdeuXdFoNCxcuJBBgwaRkZFhkD89PZ2BAwfy5ZdfcuXKFVq3bk379u1JTU1l0aJFBAYGcu3aNZPrX7lyJUFBQRw6dAh/f38CAgI4f/4877//PhMnTiyU/8yZMwQGBrJx40ZcXFzo2rUr7u7ubNiwgf79+xMeHm72tRBCCCFExWb2yNn58+dp0KABTZo0KTZfkyZN8PHx4cKFC2bVo9VqGTt2LBqNhpkzZzJgwAAAcnJyCA0NJTw8nDlz5jB16lR9mc8++4zY2FgCAgL48ssvqVatGgC3bt1i3Lhx7NmzhylTprBw4cIS679w4QIff/wxbm5urFixQv96r1y5wogRI9iwYQNdunShX79+ACiKwptvvolGo+HNN99k9OjR+pG1tWvX8v777/Pee++xc+dOHBwczLomQgghhKi4zB45u337ttHbicY4OTmh0WjMqmfr1q0kJSXRqVMnfWAG4ODgQFhYGE5OTqxbt45bt24Bd4I23SjdzJkz9YEZgJubG7NmzUKlUrFr1y5u3rxZYv2LFy+moKCAkSNHGgSiderU4cMPPwRgyZIl+uNHjhzh4sWLNGjQgNdff93glufzzz9Pw4YNuXHjBjExMWZdDyGEEEJUbGYHZ7Vr1+b8+fNkZWUVmy8rK4vz58/j6elpVj0REREA9O7du1BatWrVCAgIQKvVsnfvXgBSU1Np1qwZbdq0oU6dOoXKVK9enSpVqlBQUMD169f1x7/66iv8/PwYNmyYQf6dO3cWWX/Hjh1xc3MjJiZGf662bduyd+9evv32W6OvJz8/HwAbmzLvYiKEEEKICsjs4KxDhw7k5OTw6aefFptv1qxZ3L59mw4dOphVT2xsLAB+fn5G0xs3bgzA2bNnAfDy8mLVqlX89NNPRvNfvHiR9PR0rK2tSwwYr1+/TlpaGvb29vj4+BRKt7a2xtfX16B+AA8PD+rXr2+QNzc3lwULFpCQkECjRo1o2bJlsXULIYQQonIye/gmKCiIX375hTVr1nDlyhWGDx9Os2bNcHV1JSMjg5MnT7Js2TL27duHra0tQUFBZtWjm7hfs2ZNo+keHh4AJCcnm3S+2bNnA9CpUydcXV31x4cMGUK/fv1wdHQsVLeHh0eRzxHV1Z+SkmI0fdeuXaxcuZKYmBjS0tJo3bo1c+bMwdra2qT2CiGEEKJyMTs4a9CgAR9//DHvvfcee/fu1d9WvJuiKNjY2DB9+nSjI0+myM7OBihy8rzuuClz2hYuXMj27dtxcHBg/PjxBmnu7u64u7sbrfvugO3f7O3tAYq8vXvgwAF27dql/79WqyUuLq5Mm/IqimL2HL7KQNdvur9LS6VSFdvn/7Xs7OxCmzxXNtKnFY/0acWSm5sr/VECRVGKHOj5tzJNfHr66aepX78+8+bNIyoqCq1W+8+JbWwICAhgzJgxPPTQQ2bXYW1tTUFBQYn5SuqEL7/8kgULFmBlZUVYWFiRt0nvZmVl+l3fouofOXIkoaGhpKSksGHDBhYuXMhrr73GokWL6Ny5s8nnv5tWq+X06dNmla1MEhISzCrn6OiIv79/+TamDOLj483+BVbRSJ9WPNKnFYOjoyNVq1a9383Qs9T+MHUz/jLPSm/VqhXff/892dnZJCYmkpmZibOzM/Xq1SuXKNrZ2Zn09HRu375tND0nJwe4syLUmNzcXN5//302btyIra0tM2fO5IknnjC57rvrMEbXrqLq19329Pb25o033sDGxoa5c+fyxRdfmB2c2drayka2xcjOziYhIYEGDRqY9R409ZvNf8XHx8fivgH+16RPKx7p04olNzf3fjfBgCX2R1xcnMl5y23JoKOjI2q1urxOp+fp6Ul6ejopKSnUrl27ULpurpmxyf2pqam8/vrrHDt2DBcXF+bNm0enTp1Mrls3z+3uVZ2lqd+Y/v37M3fuXM6ePUt+fr5Zc89UKlWRwaD4h6OjY4W4TpZ0q+B+kz6teKRPKwZLC5YtsT9Kc41MCs4SExOBO3t76YIJ3bHSqFu3bqnL+Pn5ERsby7lz54yucNRFov++TXnp0iVeeuklkpKS8PLyYtGiRfqVnaaqWrUqNWvW5Nq1ayQmJhZqf35+vn5zXV1gumvXLn7//XfatWtHYGBgoXPqhjTz8vIsLqoXQgghxP1nUnDWq1cvrKys2Lp1q35iv7F9v4qjUqk4depUqRvYtWtXNm/ezPbt23n22WcN0m7cuEFkZCT29vYGW3Vcu3aN4cOHc/XqVVq0aMGiRYuoXr16qevW1f+///2P7du3M3LkSIO0ffv2kZGRQbNmzfQjZ8nJyaxfv56//vqLAQMGFIqUdfumNW3aVPY6E0IIIUQhJs94//ekfEVRSvXHlEn9xvTs2RMvLy927tzJ6tWr9cdzcnKYPHkyGo2GgQMHGqy0nDBhAlevXkWtVrNs2TKTArO0tDTOnz/PlStXDI4PHjwYGxsbvvnmG6Kjo/XHr1y5wvTp0wF49dVX9ccff/xxqlWrRmxsLHPnzjV43VFRUcycOROAUaNGlfJKCCGEEKIyMGno5s8//wQM9xrTHbvXHBwcmDVrFsHBwUyZMoU1a9bg7e3NsWPHSE5Opnnz5oSGhurz79u3j8jISODO45qmTJlS5LnHjRunf4rAypUrmT9/Pu3bt2fFihX6PE2aNCE0NJTPPvuMF198kfbt22Nvb09kZCQajYZBgwYZjCK6uroyd+5c/YrMX3/9FT8/P65evcqpU6dQFIU33nhD/yxOIYQQQoi7mRScGduTqyz7dJVWu3btWLt2LfPnzycqKoq4uDi8vb0ZOHAgQUFBBs/41D3uCeDw4cPFnnfkyJFGH/H0b8HBwfj4+LB06VJOnDiBSqWiYcOGDBkyhGeeeaZQ/g4dOvDLL7/w7bffsnfvXnbu3Imrqytdu3blpZde4pFHHinFqxdCCCFEZWL2pKfhw4fj5+fH5MmTS8w7ZswYzp49y/bt282tDrVazbx580rM9/777/P++++X+vxjxoxhzJgxRab36NGDHj16mHw+Hx8fZsyYUep2CCGEEKJyMzs4i4qK0j/EuyRxcXH8/fff5lYlhBBCCFFpmBScnT9/nkWLFhU6npCQwDvvvFNkOUVRuHLlCvHx8frNWIUQQgghRNFMCs4aNmxIQkKCwWpFlUpFamoqmzZtMqmi/v37m9VAIYQQQojKxOTbmh988AGrVq3S//+XX36hRo0axT6CSLeTvb+/vwRnQgghhBAmMDk4a9GihcEE919++YX69evLpHchhBBCiHJk9oKA5cuX4+rqWp5tEUIIIYSo9MwOztq3b1+q/Dk5OTg4OJhbnRBCCCFEpVCmhzsqisLu3buJjY0lJyen0COa8vPzyc7O5tq1a0RGRup37hdCCCGEEMaZHZzdvn2b4ODgEnfhhztB3L8fAC6EEEIIIQoz+cHn/7Zq1SoOHTqEoih4e3vTrFkzFEXBy8uLhx56iNq1a6MoCgCtW7dm6dKl5dVmIYQQQogKy+zgbNu2bahUKsaPH88ff/zBqlWrsLe3x9/fn59++onw8HC+//573NzciI2NxdvbuzzbLYQQQghRIZkdnMXHx+Pq6kpQUBAAdnZ2+Pn5Gdzm7NSpEx988AFZWVksW7as7K0VQgghhKjgzA7OsrKy8Pb2xtraWn+sUaNG3Lhxg+TkZP2xvn37UqVKFfbv31+2lgohhBBCVAJmB2fOzs5otVqDY3Xr1gXuPItTx9raGm9vb65cuWJuVUIIIYQQlYbZwVm9evVITEwkIyPD4JiiKJw9e9Ygb2ZmZqFtNoQQQgghRGFmB2cdO3YkJyeHyZMnc/PmTQD8/f0B+Pnnn7l9+zYAR44c4eLFi9SuXbscmiuEEEIIUbGZHZwNHToUNzc3/vjjD7p06UJubi4+Pj40bdqUuLg4AgMDefPNNxk1ahQqlYoOHTqUZ7uFEEIIISoks4MzDw8Pvv32W7y9vbG3t8fOzg6AqVOnYm9vz/nz5/njjz/QaDRUq1aN0aNHl1ujhRBCCCEqqjI9vumhhx5i27ZtnDlzRn+sVatW/PzzzyxfvpzLly/j6+vLyy+/TI0aNcrcWCGEEEKIis7s4GzZsmU0btyYjh076uea6TRs2JCPPvqozI0TQgghhKhszA7OvvvuOzIyMti1axdVqlQpzzYJIYQQQlRaZs85S09Px9fXVwIzIYQQQohyZHZw5uvry+XLl8nKyirP9gghhBBCVGpmB2dTpkxBq9USHBxMVFQUubm55dmuQuLj4xk/fjzdunWjZcuW9O7dm7lz55ocHG7atAk/Pz927NhR6rpzc3P59ttveeqpp2jRogXt2rVj6NChbNy4scgySUlJTJ06lZ49e9K8eXPatGnDwIED+emnn2RDXiGEEEIUyew5ZytXrqR+/focP36cESNGYGVlhaurKw4ODkbzq1QqIiIizKorOjqaESNGoNFoaNWqFS1atODo0aMsXLiQ8PBwVq1ahaura5Hljx49ytSpU82qW6vVMmrUKA4ePIirqysdOnQgLy+PI0eOcOjQIXbv3s3s2bNRqVQG7Q0KCiIzM5PatWvTuXNnMjIyOH78OCdOnGDXrl3Mnz8fG5syLZYVQgghRAVkdnSwdetWg//n5+eTnp5eZP67g5fS0Gq1jB07Fo1Gw8yZMxkwYAAAOTk5hIaGEh4ezpw5c4oMvrZs2cIHH3yARqMxq/7Fixdz8OBBmjdvznfffUe1atWAOyNjgwcPZsuWLfTs2ZO+ffsCUFBQwIQJE8jMzCQoKIjx48frg7ALFy4QHBxMREQEy5cv5+WXXzarTUIIIYSouMwOzmbMmFGe7SjS1q1bSUpKolOnTvrADMDBwYGwsDC6d+/OunXrGDduHG5ubvr0+Ph45s6dy7Zt23BycqJGjRpcv3691PVv2LABgMmTJ+sDMwAvLy+GDh3K7Nmz2b17tz44O3ToEAkJCTRo0IAJEyZgbW2tL+Pr68uECRMYO3YsmzZtkuBMCCGEEIWYHZzdHSjdS7pbob179y6UVq1aNQICAoiIiGDv3r3069dPn/bhhx8SFRVF69at+fjjj/noo4+KDc7Wr1/PpEmT8PLyIjw8XH9848aNJCQk0KRJk0JldHPHbG1t9ccyMzNp2bIlrVu3NgjMdHx9fQFITk4u6aULIYQQohKy+ElPsbGxAPj5+RlNb9y4MREREZw9e9YgOGvevDlDhw6ld+/eZt9SBXB0dKRp06aFjh87doxly5ZhZWVF//799cd79OhBjx49ijxfdHQ0ALVq1TK7TUIIIYSouMwOzg4dOlTqMu3atSt1mWvXrgFQs2ZNo+keHh5A4ZGod999t1T19OrVi1atWhmMgv1bVlYWkyZNIj4+ntjYWKpWrcrs2bNp06aNSXVoNBoWLFgAoL8Nag5FUcyeQ1cZZGdnG/xdWiqVCkdHx/JsUplkZ2ejKMr9bsZ9JX1a8UifViy5ubnSHyVQFMXkwSKzg7Nhw4aVakRKpVJx6tSpUtej++AWtQpUd7yswYqrq2uxKz4BLl++zLZt2/T/V6lUxMbG0qdPnxJXXubm5hIaGsqVK1do0KABQ4cONbutWq2W06dPm12+skhISDCrnKOjY6FHkt1P8fHxZv8Cq2ikTyse6dOKwdHRkapVq97vZuhZan/Y2dmZlK9MtzVNiUpVKhUtW7Y0Ov/KFNbW1ibtC/ZfRMje3t5ERkZibW3NoUOHCAsLY+HChSQlJTF79uwiy2k0Gt566y12795N1apVWbBgQZm+Ydja2tKoUSOzy1d02dnZ+kUZ5lznstwGvxd8fHws7hvgf036tOKRPq1Y7vVep6Vlif0RFxdncl6zg7MzZ84UmZadnU1ycjLbt29nwYIFVK9eXX87r7ScnZ1JT0/n9u3bRtNzcnIAcHJyMuv8pW2LTvfu3WnYsCFPP/00mzdv5pVXXqFx48aFyvz999+MHj2akydP4uHhwffff0/Dhg3L1A6VSvWfvN4HnaOjY4W4TpZ0q+B+kz6teKRPKwZLC5YtsT9Kc43MfkJAcRwdHalfvz6jRo1i2rRpREREsHLlSrPO5enpCUBKSorRdN1cM12+/1L9+vVp3bo1ACdPniyUHh0dzXPPPcfJkydp2LAhq1evLnJhgxBCCCEE3KPg7G5PPfUU1atX5+effzarvC6YOXfunNF03TDhvQh6UlNTmT59OpMmTSoyj+7+sVarNTgeERHBsGHDSElJoWPHjqxevRpvb+9yb6MQQgghKpZ7HpzBnZWW8fHxZpXt2rUrANu3by+UduPGDSIjI7G3t6dDhw5laaJRDg4OrFmzhvXr1xMTE1MoPT09nRMnTgDQokUL/fEDBw4wZswYcnJyePbZZ1m8eLHBBrlCCCGEEEW558FZRkYG8fHxxW5RUZyePXvi5eXFzp07Wb16tf54Tk4OkydPRqPRMHDgQNzd3cvczvPnz3Pp0iX9MWdnZ/0eZpMnTza4tZqWlsbbb79Neno6jz32mH6T2rS0NMaNG4dWqyUwMJCwsDB5hqYQQgghTGZ21FDcCkpFUcjNzeXChQt8+umnZGdn07FjR7PqcXBwYNasWQQHBzNlyhTWrFmDt7c3x44dIzk5mebNmxMaGmruy9D7448/jD4h4N133+X06dPExMTQu3dv2rRpg6IoREdHk5GRQbNmzfj000/1+ZctW0ZaWhpwZ1+08ePHG63PycmJadOmlbndQgghhKhYzA7OmjVrZlI+3aZrQUFB5lZFu3btWLt2LfPnzycqKoq4uDi8vb0ZOHAgQUFBBqsoy5uLiwurVq1i6dKlbNmyhUOHDmFlZYWvry9PPvkkQ4cONdi3RPe4KcBgT7R/c3V1leBMCCGEEIWYHZyZun9I9erVGTt2LI8++qi5VQGgVquZN2+e2eVXrFhRbHpgYCCBgYFG0+zs7AgJCSEkJKTEejZt2mRW+4QQQgghoAzB2fLly4tNt7a2plq1avj4+Fjc/idCCCGEEJbK7OCsffv25dkOIYQQQgjBf7SVhhBCCCGEMI1ZI2e5ubkcPnyYyMhIrl69Snp6OiqVCjc3Nxo2bEibNm1o166d3M4UQgghhCilUgVnWq2W5cuXs3jxYm7evFlsXk9PT0JCQnjxxRexspIBOiGEEEIIU5gcnGVmZjJ69GgOHTqkX6np4uKCl5cXzs7OaLVaMjIyuHz5Mnl5eVy7do2PP/6Y8PBwvvrqqwrxYFshxP1ja2sro/FCiErB5ODsrbfeIioqCmtra1544QVeeOEFo8+zzM3NJTo6mrVr17J582b279/PO++8w/z588u14UKIykOlUtG8mT9W1vK0DSFExWfST7qIiAj27duHi4sLCxcupG3btkXmtbOzo23btrRt25Znn32WV199lT///JODBw/yyCOPlFvDhSiOjLJUPFbWNvDX/yArufSFq/tBo97l3yghhLgHTJoMtmnTJlQqFZMmTSo2MPu39u3b8/bbb6MoCps3bza7kUKUhm6UxdHR8X43RZS3rGTIuFL6P9lp97vlQghhMpNGzk6dOoWdnR1PP/10qSsYMGAAYWFhREdHl7qsEOaSURYhhBAPKpOCs5SUFOrWrYutrW2pK3BycsLb25urV6+WuqwQZaIbZSktJ4/yb4soE7lFLYSoTEy6rXn79m1cXFzMrqRKlSpkZ2ebXV4I8YAryC9TcQcHh3JqiBAVk6nPu77X5xDlw6SRs/z8fKytrc2vxMaGgoICs8sLIR5wVtbwczBcjzWvfKOe0OPD8m2TEBWISqXi0LmbZGTnmVXe1dGGdo2rlHOrhLlkXboQ4r9xPRaunjCvbA11+bZFiAooIzuPmxrzgjNhWWTrfiGEqGTkFpgQls3kkbOMjAwOHTpkViUZGRlmlRNCCFH+5BaYEJbN5ODs3LlzDB8+/F62RQghxH9EboEJYblMDs7KOoQtS+GFEEIIIUpmUnD2559/3ut2CCEslKIo8uVKCFEs+RlRvkwKzry8vO51O4QQFqqs85NqVrWjWT3Xcm6VEKI82dta3dmP0Mq8bbNkL8LyJVtpCCFKVJb5SS6O5u+RKIT4b9jaqMq2H6HsRViuJDgT5ao8boHJbTQhhLhPzN2PUPYiLFcPTHAWHx/P119/zZEjR0hNTaVWrVr07duXkJAQnJ2dSyy/adMmJkyYwNdff03Pnj1LXX9MTAwLFizgr7/+4tatW9StW5dnnnmGl156yaRnjn7zzTd88cUXbNiwgaZNm5a6/geFLNEXQgghyuaBCM6io6MZMWIEGo2GVq1a0aJFC44ePcrChQsJDw9n1apVuLoWPafl6NGjTJ061ez6//zzT958800KCgpo27Ytbm5uHDp0iNmzZ7Nv3z4WL15cbIC2fft25s+fb3b9DxpZoi+EEEKYz+KfEKDVahk7diwajYaZM2eyZs0a5s2bx44dO+jevTuxsbHMmTOnyPJbtmxh5MiRZGVlmVV/eno6EyZMQKVS8f3337NixQq+/vprtm/fTqtWrThw4ABLly4tsvzSpUsZN24ceXkSrAghhBCiZBYfnG3dupWkpCQ6derEgAED9McdHBwICwvDycmJdevWcevWLYNy8fHxvPnmm7z99tsA1KhRw6z6f/zxR7KyshgwYAAdO3bUH69atSozZswAYNmyZYUe7B4TE8Pw4cOZMWMGrq6uJt16FUIIIYSw+OAsIiICgN69exdKq1atGgEBAWi1Wvbu3WuQ9uGHH7Jt2zZat27N2rVr8fX1Lbae9evX4+fnR/fu3Q2O79y5s8j6GzZsiFqtJiUlhZiYGIO0t956i8jISLp27covv/xC1apVS3qpQgghhBCWH5zFxt5Z0uvn52c0vXHjxgCcPXvW4Hjz5s2ZN28eP/30E40aNTK7/nPnzplV/yOPPMLSpUtZtGgRtWrVMrt+IYQQQlQuFr8g4Nq1awDUrFnTaLqHhwcAycnJBsfffffdUtXTq1cvWrVqZTCxPz09nZycHKysrPD09CxV/WFhYaWqvzQURUGj0dyz85tLpVLh6OhYLufKzs42+5Fhubm55dYOS1CWa1FW5dmn4h8VpU/L8jqys7MN/i4tS3tvVpQ+rSjuZ38UpTTbRFl8cKb74Ba1+7DueFmDFVdX10IrPkuquzzrLw2tVsvp06f/s/pM5ejoiL+/f7mcKz4+3uwf2o6OjhXqNnJZrkVZlWefin9UlD4tj9eRkJBgVjlLe29WlD6tKO5nfxTHzs7OpHwWH5xZW1sXmmxvzL2IkK2sTL/r+19G6La2tmW6VXuvlOfGsT4+PmUaOatIynItyko2A743KkqfluV1ZGdnk5CQQIMGDcwa9bG092ZF6dOK4n72R1Hi4uJMzmvxwZmzszPp6encvn3baHpOTg4ATk5O96RuoMi673X9RVGpVP9pffdDWYboK9oPKrldUfFUlD4tj9fh6OhYIX6eVZQ+rSgssT9K87vJ4hcE6OZ6paSkGE3XzfUqak5YWbi4uODi4kJ+fj6pqan/ef1CCCGEqHwsPjjTrZLUrZr8N90wYVGrKctKrVbf1/qFEEIIUblYfHDWtWtX4M4jkP7txo0bREZGYm9vT4cOHf7z+s+fP09sbCw1atSgefPm96R+IYQQQlQuFh+c9ezZEy8vL3bu3Mnq1av1x3Nycpg8eTIajYaBAwfi7u5epnoyMjI4f/48ly5dMjgeGBiIi4sLa9as0W+IC3e22XjvvfcACA4OxsbG4qfvCSGEEOIBYPERhYODA7NmzSI4OJgpU6awZs0avL29OXbsGMnJyTRv3pzQ0NAy1/PHH38wadIkvLy8CA8P1x/38PBg2rRpjB8/ntdee402bdrg7u7OoUOHSE9Pp1u3bgwbNqzM9QshhBBCwAMQnAG0a9eOtWvXMn/+fKKiooiLi8Pb25uBAwcSFBR0z59b+cQTT1CzZk0WLVrE8ePHycvLo27durz22msMHjxYRs2EEEIIUW4emKhCrVYzb948s8uvWLGi2PTAwEACAwOLTG/bti1t27Y1u/67R+OEEEIIIYpi8XPOhBBCCCEqEwnOhBBCCCEsiARnQgghhBAWRIIzIYQQQggLIsGZEEIIIYQFkeBMCCGEEMKCSHAmhBBCCGFBJDgTQgghhLAgEpwJIYQQQlgQCc6EEEIIISyIBGdCCCGEEBZEgjMhhBBCCAsiwZkQQgghhAWR4EyICi6/QLnfTRBCCFEKNve7AUKIe8vaSsVbq48Rl5xZ6rJd/TyY0KfJPWiVEEKIokhwJkQlEJecyckrt0pdrqGH8z1ojRBCiOLIbU0hhBBCCAsiwZkQQgghhAWR4EwIIYQQwoJIcCaEEEIIYUEkOBMGZNsFISybfEaFqPhktaYwINsuCGHZyvIZBfmcWqL8AgVrK9X9boawIA9McBYfH8/XX3/NkSNHSE1NpVatWvTt25eQkBCcnY0v99+/fz+LFy/mzJkz5OTk4Ovry6BBg3juuedQqUz/IOTm5rJ06VI2b95MQkICDg4O+Pn58fzzz/PMM88YLZOXl8fPP//M//73PxISErCxsaFFixaMGjWKRx55xKxr8F+RbReEsGzmfkZBPqeWSAJu8W8PRHAWHR3NiBEj0Gg0tGrVihYtWnD06FEWLlxIeHg4q1atwtXV1aDMypUrmTZtGra2tgQEBGBra8vBgwd5//33OXz4MLNmzTKpbq1Wy6hRozh48CCurq506NCBvLw8jhw5wqFDh9i9ezezZ882CPYKCgp455132Lp1K1WqVKFjx46kp6ezf/9+9u3bx/Tp03n++efL9RqJf5Qm8BZCCEsgAbe4m8UHZ1qtlrFjx6LRaJg5cyYDBgwAICcnh9DQUMLDw5kzZw5Tp07Vl7lw4QIff/wxbm5urFixgiZN7nyjuHLlCiNGjGDDhg106dKFfv36lVj/4sWLOXjwIM2bN+e7776jWrVqACQlJTF48GC2bNlCz5496du3r77Mzz//zNatW2nWrBk//PADVapUAeDAgQO88sorTJ8+nU6dOlGnTp3yukwVhr2tFRTkg5W12edwcHAoxxYJIYQQ/y2LXxCwdetWkpKS6NSpkz4wgzu/gMPCwnBycmLdunXcuvXPN47FixdTUFDAyJEj9YEZQJ06dfjwww8BWLJkiUn1b9iwAYDJkyfrAzMALy8vhg4dCsDu3bsNyixatAiA999/Xx+YAXTo0IERI0Zw+/ZtfvzxR5Pqr2xsbVR3ArOfg2HRY+b9+XPa/X4ZQgghhNksPjiLiIgAoHfv3oXSqlWrRkBAAFqtlr179+qP79y5s8gyHTt2xM3NjZiYGK5fv64/vn79evz8/OjevbtB/o0bN7JhwwZat25d6FwFBQUA2Nra6o/FxcWRmJiIh4cHbdq0KVTm8ccfN3hdogjXY+HqCfP+pF+6360XQgghzGbxwVlsbCwAfn5+RtMbN24MwNmzZwG4fv06aWlp2Nvb4+PjUyi/tbU1vr6+BmWK4+joSNOmTQvNYzp27BjLli3DysqK/v37m9zeRo0aoVKpuHjxIrdv3y6xfiGEEEJULhY/5+zatWsA1KxZ02i6h4cHAMnJyQb5PTw8ipwYriuTkpKiP9arVy9atWplMAr2b1lZWUyaNIn4+HhiY2OpWrUqs2fPNhgh09Xv6elp9Bz29va4ublx8+ZNUlNTzZp3pigKGo2m1OVKolKpcHR0LPfzirLJzs5GUczb20r61DKZ26eW1p9leW9mZ2cb/F1aFeVaWNrrqCjK8t68VxRFMXnBmsUHZ7oPblGTvHXHdcGKLn9xb3Z7e3vgTrCl4+rqWmjF579dvnyZbdu26f+vUqmIjY2lT58+2NjYGLTDlPrNDbC0Wi2nT582q2xxHB0d8ff3L/fzirKJj483+xeY9KllMrdPLa0/y/Le1ElISDCrXEW5Fpb2OiqK8nhv3gt2dnYm5bP44Mza2lo/t6s4ugjZysr0O7Wljaq9vb2JjIzE2tqaQ4cOERYWxsKFC0lKSmL27Nn69prKlNdljK2tLY0aNTKrbHFkCwrL5OPjU6aRM2F5zO1TS+vPsrw3s7OzSUhIoEGDBmaNHFWUa2Fpr6OiKMt7816Ji4szOa/FB2fOzs6kp6cXOT8rJycHACcnJ33+u48bozuXrkxp2qLTvXt3GjZsyNNPP83mzZt55ZVXaNy48T2tX0elUpldVjx45JZHxVNR+rQ8Xoejo2OF+HlWUfq0orDE/ihNIG7xCwJ0c7funh92N91cM10+3dy0u1dillTGXPXr19ev4jx58qRB/UW1Nycnh5s3b2JlZaWf+yaEEEIIoWPxwZlu1eO5c+eMpuuGCXX5qlatSs2aNcnOziYxMbFQ/vz8fC5cuACAWq0utu7U1FSmT5/OpEmTisyju3+s1WoN2lHU8KXueP369fVzz4QQQgghdCw+OOvatSsA27dvL5R248YNIiMjsbe3p0OHDiaV2bdvHxkZGTRr1qzEkTMHBwfWrFnD+vXriYmJKZSenp7OiRMnAGjRogVwJ+jy8fHhypUrRsv8/vvvAHTr1q3YuoUQQghROVl8cNazZ0+8vLzYuXMnq1ev1h/Pyclh8uTJaDQaBg4ciLu7uz5t8ODB2NjY8M033xAdHa0/fuXKFaZPnw7Aq6++alBPRkYG58+f59KlfzYwdXZ21u9hNnnyZINblWlpabz99tukp6fz2GOPGTyJYPjw4cCdJwSkpqbqjx84cIDly5djZ2fHSy+9VIarIoQQQoiKyuIXBDg4ODBr1iyCg4OZMmUKa9aswdvbm2PHjpGcnEzz5s0JDQ01KNOkSRNCQ0P57LPPePHFF2nfvj329vZERkai0WgYNGhQoacH/PHHH0yaNAkvLy/Cw8P1x999911Onz5NTEwMvXv3pk2bNiiKQnR0tH4E7tNPPzU416BBg9i9ezcRERH07t2bgIAAMjIyOHz4MIqi8NlnnxW5b5sQQgghKjeLD84A2rVrx9q1a5k/fz5RUVHExcXh7e3NwIEDCQoKMlhFqRMcHIyPjw9Lly7lxIkTqFQqGjZsyJAhQ3jmmWdMrtvFxYVVq1axdOlStmzZwqFDh7CyssLX15cnn3ySoUOHFtq3xMrKiq+++ooff/yR9evXs3fvXlxcXOjUqROvvvoqbdu2LfM1EUIIIUTF9EAEZ3Bn8v68efNKVaZHjx706NHDpLyBgYEEBgYaTbOzsyMkJISQkBCT67a1tSUoKIigoCCTywghhBBCWPycMyGEEEKIykSCMyGEEEIICyLBmRBCCCGEBZHgTAghhBDCgkhwJoQQQghhQSQ4E0IIIYSwIBKcCSGEEEJYEAnOhBBCCCEsiARnQgghhBAWRIIzIYQQQggLIsGZEEIIIYQFkeBMCCGEEMKCSHAmhBBCCGFBJDgTQgghhLAgEpwJIYQQQlgQCc6EEEIIISyIBGdCCCGEEBZEgjMhhBBCCAsiwZkQQgghhAWR4EwIIYQQwoJIcCaEEEIIYUEkOBNCCCGEsCA297sBpoqPj+frr7/myJEjpKamUqtWLfr27UtISAjOzs5Gy+zfv5/Fixdz5swZcnJy8PX1ZdCgQTz33HOoVKpS1R8TE8OCBQv466+/uHXrFnXr1uWZZ57hpZdewtbW1miZX3/9leXLl3PhwgXy8/Np0qQJw4cPp0+fPqV+/UIIIYSoHB6IkbPo6GgCAwPZvHkzHh4edO3aFY1Gw8KFCxk0aBAZGRmFyqxcuZKgoCAOHTqEv78/AQEBnD9/nvfff5+JEyeWqv4///yTQYMGsXPnTho0aMCjjz5KcnIys2fPZtSoUWi12kJlPv30U0JDQzl79ixt2rShVatWnDhxgjfffJMvv/zS7GshhBBCiIrN4kfOtFotY8eORaPRMHPmTAYMGABATk4OoaGhhIeHM2fOHKZOnaovc+HCBT7++GPc3NxYsWIFTZo0AeDKlSuMGDGCDRs20KVLF/r161di/enp6UyYMAGVSsX3339Px44d9cdDQkI4cOAAS5cuZdSoUfoy+/fv5/vvv8fLy4sff/yROnXqAHDmzBleeuklFixYQNeuXWnVqlV5XSYhhBBCVBAWP3K2detWkpKS6NSpkz4wA3BwcCAsLAwnJyfWrVvHrVu39GmLFy+moKCAkSNH6gMzgDp16vDhhx8CsGTJEpPq//HHH8nKymLAgAH6wAygatWqzJgxA4Bly5ZRUFCgT1u4cCEAoaGh+sAMoEmTJowdO7ZU9QshhBCicrH44CwiIgKA3r17F0qrVq0aAQEBaLVa9u7dqz++c+fOIst07NgRNzc3YmJiuH79uv74+vXr8fPzo3v37gb5iztXw4YNUavVpKSkEBMTA0BmZiaHDx/G1ta20Ll051GpVOzevdsgoBNCCCGEgAcgOIuNjQXAz8/PaHrjxo0BOHv2LADXr18nLS0Ne3t7fHx8CuW3trbG19fXoExxzp07V6r6z58/T35+Pl5eXkYXKri7u1OjRg00Gg2XLl0qsX4hhBBCVC4WP+fs2rVrANSsWdNouoeHBwDJyckG+T08PIpckakrk5KSoj/Wq1cvWrVqZbDyMj09nZycHKysrPD09CxV/UW1V1cmJSWFlJQUGjRoUGQ+Y7RaLYqiEB0dXapyplKpVExo74Q236HUZR1t76xqdcsrwNX4AtYSWWeqiIlJhFYfQYvCCy1MYuMIMTFg0w6q5pe+vNYWYmJ4vdbr5HnmmdUEBxsHYmJiqJvfBC/UZp3DCitiUmNQFMWs8jrSp1SoPi1Lf0L59KkqD2JirpTpdSiKgkql4ty5c6VePa9vh0olfYqFfE7L+hmFcvmc2ljZEBNT9p+b94JWqzX5vW7xwVl2djZwZ46ZMbrjGo3GIL+jo2OR57S3twcgKytLf8zV1RVXV9dS1W2sft3fptSvy1sauo4194eZKao725WpvL1tOQzIOtco+znsjG+xYip3B/cyN8HR2qnM5yiPvpY+vaOi9GlZ+xPKp0/L8jpUKhVWVmVvg/TpPyzic1rGzyiUT5/ey9+R5lKpVBUnOLO2tjZpbpYuSi7Nh72kyNqcc1lbW5tcxpw5Z61bty51GSGEEEI8OCx+zplu3tbt27eNpufk5ADg5ORkkF933BjduXRlzK37XtcvhBBCiMrH4oMz3Vyvu+eH3U0310uXTzfX6+6VmCWVKYqLiwsuLi7k5+eTmppaqvqLam9p6hdCCCFE5WPxwZlulaRu1eS/xcXFGeSrWrUqNWvWJDs7m8TExEL58/PzuXDhAgBqdckTQHV5TK2/UaNG2NjYkJiYaHTELS0tjdTUVBwdHalXr16J9QshhBCicrH44Kxr164AbN++vVDajRs3iIyMxN7eng4dOphUZt++fWRkZNCsWTOTRq6KO9f58+eJjY2lRo0aNG/eHLgz2f+RRx4hNzdXv0fb3bZt24aiKDz22GOlmp8mhBBCiMrB4oOznj174uXlxc6dO1m9erX+eE5ODpMnT0aj0TBw4EDc3f9Z3TF48GBsbGz45ptvDLacuHLlCtOnTwfg1VdfNagnIyOD8+fPF9p7LDAwEBcXF9asWWMQbKWnp/Pee+8BEBwcjI3NP2srhg8fDsDMmTO5ePGi/viZM2f0z9UMCQkx74IIIYQQokJTKZa4Gci/HDp0iODgYHJycmjWrBne3t4cO3aM5ORkmjdvzvLlywtt+Prdd9/x2WefYWNjQ/v27bG3tycyMhKNRsOgQYP46KOPDPKvX7+eSZMm4eXlRXh4uEHa1q1bGT9+PIqi0KZNG9zd3Tl06BDp6el069aN+fPnGwRnAB999BGrVq3Sj6Tl5+cTGRmJVqvl7bffluBMCCGEEEY9EMEZ3HlSwPz584mKikKj0eDt7U3fvn0JCgrCxcXFaJk///yTpUuXcvLkSVQqFT4+PgwZMoRnnnmm0DYZxQVnAIcPH2bRokUcP36cvLw86tatS2BgIIMHD8bOrvD+NIqisH79en766Sfi4uKwt7encePGBAUF0aNHj/K5KEIIIYSocB6Y4EwIIYQQojKw+DlnQgghhBCViQRnQgghhBAWRIIzIYQQQggLIsGZEEIIIYQFsfgHn4uKT7dS1hgXFxdq1qxJp06dGDVqVKGNg7t3705SUpJJ9WzYsIGmTZvq/19QUMCmTZv4/fff+euvv0hPT8fJyYk6derQoUMHhg4dipeXl/kv7D6LjIzU77n3b9bW1jg6OlKnTh0eeeQRgoKCqFOnzn/cwtIbNmwYUVFRRabb29vrN4V++eWXeeihh/67xt1F98SQQ4cO4ebmdl/aYI7MzExWrVpFeHg48fHxZGVl4ebmRsOGDenatSuDBg0qtG2RTlk/T4cOHWLdunUcPnyY69evY2VlhaenJw8//DDPPvssDz/8cKEyX331FfPnzzd6PltbW5ydnfHx8aF79+4MHTq0Uj7PWLetU2BgIDNmzDCa58MPP+R///sfAN988w3du3cvlCcvL4927dqh0WgK/SxNS0tjy5YtbN++ncTERFJTU3F2dkatVvP444/z/PPPG93V4G5RUVFs2LCB6Ohorl69ilarpVatWrRv354hQ4YY1FcZyGpNcd/pgrPq1avTsWNH/XFFUcjMzCQ2NpYrV65QtWpVVq1aRcOGDfV5dMFZx44dqV69erH1jBs3Th+AZGZmEhwczLFjx3B2dqZly5ZUq1aNGzduEBcXR0pKCnZ2dnzyySc8/fTT9+aF32O64MzJyanQ9i0FBQVkZWVx/Phx0tPTqVKlCkuXLsXf3/8+tdY0uuCsdevWeHt7G6QpikJycjKnT58mIyMDlUrF3Llz6du373/ezgcxODt37hxBQUGkpKTg6emJv78/Dg4OpKSkcPr0aTQaDR4eHixZsqTQo+/K+nn6+OOPWbFiBdbW1rRo0YLatWuTnZ3NxYsXiY+PB2Do0KF88MEHBuV0wVndunULBeJ5eXmkp6dz+PBhtFotarWan376qcitlyqqHTt28Prrr1O/fn2jT7qBO0/CuXr1KoDRfUABjh8/zgsvvICHhwd79uxBpVIBd/YBnTJlChkZGbi5udG4cWNq1KjBtWvXOHnyJFqtloYNG/LDDz/onz19t7S0NN577z39Ju+NGjWibt265Ofnc+7cOa5evYqVlRXjx49n5MiR5XVZLJ8ixH32888/K2q1Whk6dKjR9Ly8PGX69OmKWq1WBg8ebJDWrVs3Ra1WKwcPHixVnZMmTVLUarUyevRoJTMz0yAtNzdX+f777xW1Wq00bdpUiYuLK90LshAHDx5U1Gq10q1btyLzZGVlKUOHDlXUarUyYMCA/7B15tG19eeffy4yz61bt5Q33nhDUavVSkBAgKLRaP7DFt6hVqsVtVqt3Lx58z+v2xx5eXlK7969FbVarXzzzTdKQUGBQXp6eroybtw4/fspNzfXIL0sn6dffvlFUavVSq9evZTExMRCbdu7d6/SunVrRa1WK6tXrzZImzdvnqJWq5V33323yNeWkJCgdOrUSVGr1cqMGTNMuh4VSUZGhuLv76+o1WolOTm5UPqZM2cUtVqtBAUFKU2aNCny58WiRYsKXeuffvpJUavVSrNmzZQffvih0GctKSlJGTFihL5///15yMjI0L/vBg0apJw8edIgPT8/X1m/fr3SrFkzRa1WKytWrDD3MjxwZM6ZsHjW1taEhoZia2vL4cOHSU1NLdP5tFotmzZtQqVS8cknnxS6TWNra8vLL7/M448/Tn5+vsFjwyoaJycnJk+eDMDJkydJTEy8zy0qO1dXV8LCwrCysuLGjRscPXr0fjfJ4h09epSEhASaNGnCq6++qh8V0alSpQozZsygVq1aJCUlsWvXLn1aWT9P69evB+Cdd94pNBoK0KlTJ95++20AVq1aVerXVr9+fUaNGgXA77//XuryDzoXFxdatGgB3NlM/d90fdmnTx/8/f1JSkri3LlzhfLpphN07twZgLi4OMLCwgD48ssveemll3B0dDQoU6dOHb755ht8fX25ePEiy5YtM0ifNm0aCQkJtG7dmh9++KHQyL2VlRUDBgxg6tSpAHzxxRfcunWrtJfggSRzzsQDwdnZmSpVqnD9+nWysrJKvIVZnIyMDLRaLVZWVoV+Cd3thRdewN7enkaNGpld14Ogfv36+n9fv36dunXrAnd+aK9du5bo6GjS0tKwtbWlTp06dO3alZCQEKpUqVLoXBs2bGDVqlWcP38eKysr2rZty1tvvcWKFStYt24dy5cvJyAgQJ9fURQ2btzIunXrOH36NFqtlnr16umf/mHuHCFXV1eqVKnCjRs3SE9PN0jLzc1l3bp1/P7778TGxpKRkYGjoyMNGzbkqaeeYvDgwQZPENHdSt21axf79u3Tvz4bGxseeughXnnlFdq1a1dimwoKCpgwYQJbtmxBrVazdOnSMr2Py9P169cBiv082NnZMXLkSE6fPo2rq6v+eFk/T6Z82erVqxdHjhwxelvMFA0aNAD+eZ2VzaOPPsqxY8c4cuRIodv8u3fvBu4EXVevXuWvv/5i165dNG7cWJ8nLy+Po0ePYmVlpZ96smLFCm7fvk23bt2KfeqNo6Mjo0ePZuXKlQaPObx27RpbtmwBYPLkyTg4OBR5jgEDBvDLL7/g4eHBlStXHpipAmUhwZl4ICQlJZGWlkbNmjXLPEnf3d2dWrVq8ffffzN27Fjee+89gx9EOh07djSYA1dRxcbG6v+tm5M3e/ZsFi9ejI2NDW3atKF169akpKRw/Phx4uLi2LNnDz///DO2trb6spMmTWL9+vXY2dnRvn17bG1tiYyMZNCgQQYBoE5+fj6hoaFs27YNR0dHWrRoQZUqVTh69Cjz5s1j+/btLF26lGrVqpX6NR0/fpwbN24A/8z/gjuBWVBQEIcPH8bNzY2HHnoIBwcHLl68yPHjxzl+/Djnzp0zOucmLCyMbdu20aRJEzp37szp06fZs2cPBw4c4IcffqB9+/ZFtqegoIBJkyaxZcsWmjRpwg8//IC7u3upX9e90rRpU1QqFadPnyYsLIxXXnnFaOBobIFJWT9PTZs21Y/CODo60rFjx0JBnqenJ59//rnZr+/s2bMAD/QCn7Lo2LEjX331VaGRs4yMDI4dO0ajRo2oU6cOnTt35ptvvmHXrl0EBwfr8508eZKsrCz9XMKCggJ+++03AJ566qkS63/qqacK5fvtt9/Iz8/Hx8dHP7JXFGtra1auXGnqy60QJDgTFktRlP9r797jcr77B46/cpVEkyGHhrs0tSkMY9HK1tDmcEvttrWZu7FhDottptm9MWeP2+G2hmEPx+1OhESIijXCdJgilbW0DptSkiSdrt8f/a7vurquLNVuyfv5eHg86nv4fL/f9OV9vT+fz/vD7du3iY+PZ/ny5VRUVODj44NKpap323PnzuWDDz4gMjKSUaNGYWlpyXPPPUf//v159tlnH5l/xPPy8li4cCEAgwYNomPHjiQmJvLNN9/QunVrdu3apTUBIyUlhXHjxpGUlERkZCRDhgwBICgoiH379vHEE0+wdetWJRjLzc1lypQpxMfH61x748aNhISEYGdnx1dffaUEhsXFxXz66accOnSIzz//HF9f31o9S0lJCXl5eZw5c4ZVq1YBMHLkSK1Mjb+/P1FRUdjb27Njxw6tLriDBw/y0UcfERAQwJw5c3QGjoeHh7Nu3TqGDh0KVAaXs2bN4tixY2zatKnG4EytVvPZZ58RGBhIz5492bp1K23atKnVM/2vWFpa8sYbb/Ddd9+xfft2du7cSe/evXn22Wfp378//fv315sp1ajP+zR9+nQiIiLIzMxk4sSJtGvXDgcHB+W6tra298zI/ZnLly+zefNmAMaMGVPndh5mffr04bHHHiMpKYlbt24pmc9Tp05RVlaGs7MzAM888wxmZmbExsZSWFiovAPVuzRzcnK4efOmck5dpKSkANC3b986P1dTJsGZaDR+/PFHrSxHdZ999hkjRozQu6+mkhEamk/OGiNGjMDU1JQlS5Zw9epV5Y9mOrmVlRXu7u5MmDDhnun2h8GNGzf46KOPtLaVl5eTk5PDhQsXKCkpoVOnTixevBiA/Px8XF1d6du3r1ZgBmBtbY2DgwOhoaFaJUy2bt0KwIIFC7SyZO3atWP16tW4urpSUVGhbC8pKWHbtm0ArFq1SquMR4sWLVi0aBGRkZEcP36cq1evKt1SGp988kmN5VcADA0NeeONN/Dx8dHZ/uKLL+Ll5aUzNmr06NEsXLiQgoICrl27phOcjRkzRgnMoPLT/IQJEzh27JjeMToaCxYsICAgAHt7e7Zs2XLPIOdB+te//kW3bt1Yt24dBQUFSibxm2++oVmzZjzzzDOMHz+ekSNH6pxbn/fJysoKf39/vvjiC86cOUNubi7BwcEEBwcDlb9Dw4cP57333quxWzMqKkrnd7ykpIT09HQuX76MWq3GwcFBKxv0KFGpVDz33HOEhoYSExOjfKjSdGlqgjOVSsWgQYM4evQop0+fxtXVFdANzq5du6a0bW5uXqd70rTRvn37Op3f1ElwJhoNfaU07ty5Q3p6OsnJySxdupT09HR8fHx0PknXppRGdc7Ozjg5OREbG0tERARRUVHExcVx9+5dUlNTWbVqFQEBAWzfvp3OnTs3yDM+CEVFRRw8eFBrm6GhIaamptjZ2eHk5MSbb76pZHMcHBxwcHDQOr68vJzMzEwSEhLIyMgAKgeCQ2X2LSEhgVatWvH888/rXL9bt2706tWLCxcuKNsSEhK4efMmFhYWWFlZ6ZzTsmVLBg4cyNGjRzl37pxOcFa1lEZZWRlxcXFkZmZiZGSEt7c3Hh4eersNPT098fT01Nqm+fuOj49XAkjNs1W/ZnWaunt37tzR2QeVXaH79+9HpVKxfv36RhuYQeXgay8vLzw9PTl16hSRkZFERUWRnJxMRUUFMTExxMTEcOjQIdauXatTt6o+75OVlRXbtm0jNTWVkydPcu7cOWJjY8nPzyc3Nxc/Pz8OHDjAunXr9HaNpqen60xmMTY2xszMjOeffx5XV1fc3d0bJOv+sHJ0dCQ0NJTo6GiGDBmCWq3mhx9+oGXLllo15JydnTl69CinTp3C1dWV8vJyoqOjMTMzo3fv3gBawxlKS0v/tIaZPprxZ2VlZfV8sqZJgjPRaFhbW7Ny5Uq9++Li4pg8eTLbtm2jc+fOeHl5ae2fOnWq1kDz2jIwMKBfv37069cPqPy0feHCBYKDg9m7dy9paWl8+OGHdZol1lg88cQThIeH39c5JSUlBAcHExISQkpKCllZWco/oprAWP3/JRKzsrIA6Ny5s9ZA+qq6dOmiFZxpzsnKyrpntrTqsVWNGzcOd3d35fvy8nLWr1/PV199xfr167Gzs6txvOCNGzfYvXs3p0+fJjU1lZycHOVZqj9bVfoCK81/9lWzglXt378fQ0NDysrK+Prrr5k/f/49n7UxMDY25qWXXlIGeRcUFHDu3Dn27t3LiRMnCA8PZ/369cyaNUvn3Pq+T1ZWVlhZWfH222+jVqtJTk4mLCyMb7/9ltzcXGbOnElYWJhOt/DYsWNZvnx5g/4cmhpHR0fgjxmbly5dIicnBxcXF63gSpMdO3v2rHLc7du3efnll5Xf96rZsry8vBoLE9+Lpo36zr5vqqSUhngo9O7dm8mTJwPg5+dXr7YyMjI4f/482dnZOvuaN2/OgAEDWLBgAZs2bcLAwIDo6OgmUWKitnJzc3Fzc8PHx4fIyEjMzc3x8PBg3rx57NmzR6eIqCZoKy8vr7HN6sGO5vuOHTsqg4Vr+tO9e/c/vWeVSsXMmTPx8PCgqKiI6dOn8/PPP+scFx0dzdChQ1m9ejVJSUnY2NgwYcIElixZwvHjx++ZIa3LuKe+ffvi7++PsbExfn5+91zd4EFKTEzkzJkzlJSU6Oxr3bo1w4YN4+uvv2batGkAHDhwQNlfn/cpLy+P2NhYvd3CBgYG2NraMm3aNAIDA2nfvj2FhYWEhYU11GM/Uv72t7/RpUsX4uPjKSkp0enS1OjQoQNPPfUUv/76K1lZWTpdmlDZFal5V2pTqqa4uJgVK1YQFhZGcXExgDIJIDY2tlb3f/jwYXbu3KmMVWvqJHMmHhqagd2aStZ1tWrVKg4fPszs2bOZOnVqjccNGjSIrl278uuvv5Kfn6+UmGjqVq9eTUpKCoMGDWLt2rU6GaPqdYY0/0hfu3aNiooKvdmz6n9nmk/NFhYWNWZL6+Kzzz4jKiqKtLQ0Zs+ezd69e5WsgFqt5pNPPqGwsJBJkybx4Ycf6nRzNXQNJV9fX8zNzZkxYwarVq3i008/JSgoSKce1IM2adIkrl+/jp+fn5L10ue1115j/fr1WuVJ6vM+hYSEsGDBAhwdHdmyZUuN53bo0IEXXniBgIAAndIoovYcHR3x9/cnMTGRyMhIQDc402xLTEzkp59+4ty5c4B2cAaV5U127NjBkSNH/nSiRUhICFu2bOG7777j9OnTtGjRAhcXF1QqFb/++iuXLl3Czs7unm385z//IS0tjcmTJyt175oyyZyJh4ZmGZf6jv969tlnAdi9eze3b9+u8biCggKuX79O8+bN9Y6Laqo0n4S9vLx0ArPCwkLlk27V7Je1tTVFRUWcPn1ap73ff/9dZ7Zmr169MDEx4eLFi1qDizXUajVvvfUW48aNu69sk4mJCUuWLMHAwIDk5GQ2bdqk7MvNzSUtLQ2AGTNm6ARm0dHRFBYWAjV3U94vY2NjACZOnKhkIzQzSRsTzZij6kVCq/vll18A7fIk9XmfNNc9e/YsiYmJ931tcX80XZvnz5/nwoULWFtb651JqwnYLl26RExMDDY2NjqTMTSTO06cOMHJkydrvGZ+fj7r1q0DwM3NTZkp2rZtW1599VWgcvkufVlbjR07dpCWlkbz5s15/fXXa//ADzEJzsRD4cqVK8p/tG5ubvVqy8PDg65du5KZmYmXlxcJCQk6x2RlZfH+++9TVFSEp6fnI7Uen6auWFhYmFZ3ZF5eHt7e3krm4u7du8q+iRMnApWLLFftAi4oKGDOnDk649VMTEzw9PSktLSUmTNnap1TXl7Ov//9b3788UfS0tKwt7e/r/sfMGAA//jHP4DKch2abhBTU1NlIPPx48e1zrl8+TIff/yx8n3VZ2sIhoaGLF68GJVKxbfffqu3UvuDNG3aNIyNjTl69Chz584lJydH55jY2FhlNYmqsx7r8z7Z2NgwatQoysvLeeeddwgNDdXpAr99+zZLly4lJiYGOzs7JcAQ98/BwQGVSoWfnx8lJSV6s2ZQ2R1vamrK4cOHKSws1DvRp2vXrsq4wxkzZihFaau6evUqkydPJi0tDQsLC2bPnq21/6OPPqJz587ExMTg5eWl071dVlbGt99+q4wn9Pb2fmTKHEm3pmg0UlJSdKbDV1RUkJWVRVxcHOXl5QwcOLDei9+2aNGCrVu3MmXKFOLi4hg7diyWlpZ0794dIyMjsrKySEhIoLy8nBEjRjBnzpx6Xe9hM3HiRGJiYti9ezdRUVH06NGD/Px8YmNjKSkpoUePHly5ckWr2rqHhwenTp3iyJEjjBw5koEDB2JsbMz58+epqKigbdu25OXlaVUInz17NklJSZw+fZqRI0dib29P27ZtuXTpEllZWbRo0YIvv/yyTqsEzJkzhxMnTpCTk8P8+fPZuXMnLVq0YPz48WzdupWPP/4YPz8/OnToQGZmJhcvXsTExIQuXbqQkZHxl1SS79WrF2+99Rbbtm1j3rx5BAUFNZoyLU899RS+vr7MmTOHwMBAgoKCsLOzw8LCgrKyMlJSUrh69SqGhob4+PholRSp7/u0dOlSiouLlQW627VrR8+ePTE1NSU3N5f4+Hju3LmDjY0NGzZsqFfNs0edmZkZ9vb2yuScmoIzQ0NDBg8erCyUXtNxb7/9NgYGBqxYsYLFixfj6+vL008/zeOPP668VxUVFfTo0YMNGzboFJTW1FKcMmUK0dHRjBo1CltbW7p166bMws7NzcXQ0JBZs2Y9UqVQJDgTjUZubq5OyQcjIyMef/xxBg8ezMsvv4ybm5vWf/B11bVrV4KCgggMDOTkyZMkJCRw9uxZysrKaN++PS+//DJjx47VGWfxKBg6dCjbt29nw4YNJCcnEx4eTps2bXBycmLChAmYmZnh5uZGaGgo8+bNU5btWbVqFQMGDGDPnj2cP38eIyMjBg0axOzZs/H29iYvL09r2Z/mzZuzefNm9u7dS2BgIElJSZSWltK5c2fGjRvHpEmTdEpo1Fbr1q359NNPmTVrFufPn2f37t289tprfPzxx1hbW+Pn58eVK1e4ePEinTp1Yty4cbzzzjucOHGCZcuWERISwvDhwxvoJ/oHb29vjh8/TlpaGqtXr2bevHkNfo26GjJkCMeOHcPf359Tp05x9epVkpKSMDQ0pFOnTowfPx5PT0+9y5nV530yNjZm3bp1nD59muDgYGJiYrhw4QJ37tyhTZs29O/fXymF0RDv/qNu8ODBXLhwgZYtWypd0vo4Oztz7NgxnVIb1Xl5eeHo6MiuXbv48ccflfIpjz32GAMHDmTEiBG4u7trld+oqlOnTuzZs4cDBw4QEhJCYmIiv/zyC82aNcPCwoJhw4Yxfvx4vatONGUGan1zxoUQ4j4kJibSpk0bOnbsqJPZKCkpwdHRkdu3bxMdHd3oBsMLIURjI2POhBD1tmjRIoYMGUJAQIDW9oqKClavXk1BQQHOzs4SmAkhRC1I5kwIUW8nTpxg+vTplJeXY2Njg5WVFSUlJVy6dIns7Gy6dOnCf//73xqX3xFCCPEHCc6EEA0iISFBmYmYnZ2NSqWiS5cuDBs2DC8vr0dqxqsQQtSHBGdCCCGEEI2IjDkTQgghhGhEJDgTQgghhGhEJDgTQgghhGhEJDgTQgghhGhEJDgTQgghhGhEJDgTQjRJhw4dwtbWFltbWz7//PN7HvvWW29ha2vLmjVr/kd3d/8yMjKU50lLS9PZn5+fr7Ngua+vL7a2tnh6ev6vblMI0QAkOBNCNEl79+5Vvj548CCFhYUP8G7+Wtu2bWP48OFcuXLlQd+KEKIBSHAmhGhysrKyOHv2LG3atOGZZ56hqKiIgwcPPujbqpeOHTty+PBhDh8+jIWFhda+ZcuWcfPmzQd0Z0KIhibBmRCiydm3bx8VFRX07dsXFxcXAPz9/R/wXdWPkZER1tbWWFtbY2Rk9KBvRwjxF5LgTAjRpKjVavbv3w+As7Mzr7zyCgCXL1/mp59+eoB3JoQQtSPBmRCiSTl79iwZGRk0a9aMl156iW7dutG7d28A/Pz87ru9a9eusXTpUlxdXenduzdOTk58/vnnZGdn4+Pjg62tLfv27dN73ooVKxgxYgR9+vShb9++jBkzhq+++oqCggKd4zWD91euXEloaCiurq7Y29vj4uJCcHCw3gkBmutrvP322zXeT15eHsuXL2fYsGHY29vj6OjI+++/T3x8fI33smbNGrKzs5k/fz7Ozs706tWLoUOHsmbNGkpKSgA4d+4ckyZNYsCAAfTq1YuxY8cSGBh43z9nIcQfDB/0DQghREPSTAQYOHAgHTt2BGDUqFHExcVx5MgR5s2bh5mZWa3aunTpEu+88w55eXkYGRlhY2NDfn4+/v7+hIWF0bVrV73nnTlzhpkzZ3Lr1i2MjIx48sknKSsrIzk5mcTERAICAti4caNWYKVx/vx5tmzZgpmZGdbW1qSkpPD000/rvY6lpSX9+vUjJiYGABsbG0xNTWnXrp3WcdnZ2YwdO5bff/+dbt26YWVlRWpqKiEhIYSHh7N582YGDRqk035aWhpubm7cuHGDJ598EpVKRXp6Ol9//TXp6ekMGDCAL774AhMTEywtLcnIyCAhIYG5c+dSXFzM66+/XqufsxBCm2TOhBBNxq1btzh+/DgAf//735Xto0aNQqVScffuXaXL88/cvXsXb29v8vLycHJyIiIign379hEeHs7GjRspLi4mNjZW57zMzEymTZvGrVu3cHFx4eTJkwQGBnLo0CGOHTtG3759+e2335g6dSq3bt3SOf+nn37CxcWF77//ngMHDhAREUH37t313uPUqVO1soGffPIJfn5+DBkyROu4jIwMVCoVe/bs4fjx4xw8eJAjR45gaWlJaWkpq1ev1tv+kSNHaNOmDUeOHOHgwYOcOHGC6dOnAxAcHMzChQvx8vLi3Llz7N+/n4iICJycnADYtGlTrX7OQghdEpwJIZqM4OBgiouLadGiBa6ursr2du3aMXjwYAB27dpVq7b27t1Leno6FhYW+Pr60rZtW2XfCy+8wKJFi/Set3HjRoqKirCxsWHt2rW0b99e2de1a1c2btyIubk5WVlZ7Ny5U28bc+fOpXnz5gBa162PlStXKt27mnuZMWMGAPHx8dy9e1fvecuWLcPS0lL5/t1330WlUgHQv39/fHx8lHs1MTFh8uTJQGWQKjNIhagbCc6EEE2GpkvzxRdfxNTUVGufJpOWmprKmTNn/rSt0NBQANzc3DAxMdHZ/8orryjdplWdPHkSAE9PTyVoqcrMzAwPDw+ta1Rlbm5eY3dpXZmbm9OvXz+d7ZpuVbVaTX5+vs7+xx9/nD59+mhtMzExUQJGZ2dnnXM6dOigfN2Ua8sJ8VeS4EwI0SRcuXKFuLg4QLtLU2PYsGG0bNkSqF32LDk5GYCnnnpK734DAwN69uypta2wsJBr164BYG9vX2PbdnZ2QGWgWF3V4Kah1NSm5ucBUFxcrLO/U6dOes+7V1bP0PCPocxqtfq+7lMIUUkmBAghmoSqKwK899579zw2LCyM69eva3U5VqfJJFUNYKqrnp27fft2jfv0nVdUVIRarcbAwEDZZ2xsfM97r4u6tqkvY1hVs2by+V6Iv4IEZ0KIh15paSlBQUEAtG7dusagQq1Wk52dTWlpKQEBAUydOrXGNk1MTCgtLb1n11zVYAygVatWytf3Ok8zFqtly5ZagZkQQoAEZ0KIJuD7778nNzcXgC1bttCrV68ajx01ahRXrlxh9+7dTJ48ucbsj42NDVFRUSQlJSmFbKtLSkrS+t7U1BRzc3NycnK4ePGi1gD8qi5evAigNdBeCCE0JCcthHjoBQQEAJUD3O8VmEHlQH2onE0YERFR43HDhg0DKhdN1zeT8YcffiAzM1Nnu2a5KD8/P6VQa1U3b95UirTqG1BfF5rsm4zxEqJpkOBMCPFQy8nJ4YcffgDA3d39T48fM2ZMrSYGvPrqq3Tu3JmMjAw++OADrdmMUVFR+Pj46D3v3XffpVWrViQnJ+Pt7a1k9ADS09OZMmUK169fp2PHjvzzn/+szSP+Kc3zZGVlNUh7QogHS4IzIcRDLTAwkLKyMoyMjPTO0qzO1NSU0aNHAxAREcFvv/1W43Fr166lVatWhIaG4uTkhLu7O66urrz55psYGxsrEwo0db+gsn7Yl19+iampKeHh4QwZMgQ3NzdGjx7N8OHDiY2NxcLCgg0bNjRYDTPNrNGFCxfi7u6uZBKFEA8nCc6EEA81zTqSLi4utQ52NF2b5eXl+Pv713hcnz59CAoK4tVXX6Vdu3YkJydz584d3njjDQICApRZl9UnIDz//PMEBwfj5eVFly5dSE1N5bfffuPpp5/mww8/5MCBA0o5jYawdOlSHB0dMTQ0JDU1latXrzZY20KI/z0DtQxSEEKIOnFwcODGjRv4+fnpLfIqhBB1IZkzIYTQw9fXl5EjR9a4RmRcXBw3btxQFkQXQoiGIsGZEELo0bNnT37++Wc2bNhAZGSk1r6kpCTmzJkDVK5GcK+Cs0IIcb+kW1MIIfRQq9XMmDFDWf+yU6dOmJubc+PGDTIyMoDKhb83bdokwZkQokFJcCaEEDWoqKggLCyMXbt2kZqaSnZ2NmZmZnTv3p3Ro0fj4eGhNVNTCCEaggRnQgghhBCNiIw5E0IIIYRoRCQ4E0IIIYRoRCQ4E0IIIYRoRCQ4E0IIIYRoRCQ4E0IIIYRoRCQ4E0IIIYRoRCQ4E0IIIYRoRCQ4E0IIIYRoRP4Pm/DvNv9mPacAAAAASUVORK5CYII=", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "values_plot(baseline)\n", + "#plt.savefig(write_dir / \"duration.pdf\", bbox_inches='tight')\n", + "#plt.clf()" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "3ec894db", + "metadata": {}, + "outputs": [], + "source": [ + "# values_plot(baseline_scaling, metric=(\"total_size\", \"Total size\", \"bytes\"))\n", + "# plt.savefig(write_dir / \"total_size.pdf\", bbox_inches='tight')\n", + "# plt.clf()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "4d563c49", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "values_plot(baseline_scaling, export_legend = True, legend_output_dir=write_dir)\n", + "plt.clf()" + ] + }, + { + "cell_type": "markdown", + "id": "094ed146-412f-4ce9-bdf3-9e673fae613c", + "metadata": {}, + "source": [ + "# Complete provenance (storage formats)" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "id": "0d090994-22be-4041-a069-d42fbf206436", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    configalgorithmdatasetstorage_formattotal_sizedurationper_iternice_size
    50completeprovenanceBFScit-PatentsORC272126547113.8154722.646871259.52MB
    58completeprovenanceBFScit-PatentsCSV-C385629051143.4952543.337099367.76MB
    57completeprovenanceBFScit-PatentsText-C398055303154.3273603.589008379.62MB
    100completeprovenanceBFScit-PatentsJSON-C411310835134.9702263.138842392.26MB
    97completeprovenanceBFScit-PatentsParquet452688486110.9551922.580353431.72MB
    18completeprovenanceBFScit-PatentsAvro548177668110.7124512.574708522.78MB
    105completeprovenanceBFScit-PatentsCSV2351958475117.1763852.7250322.19GB
    40completeprovenanceBFScit-PatentsText2525597803101.9735192.3714772.35GB
    29completeprovenanceBFScit-PatentsJSON3567433771107.6383742.5032183.32GB
    116completeprovenanceBFScit-PatentsObject4470241541119.3157612.7747854.16GB
    115completeprovenanceBFSdatagen-7_5-fbCSV-C4869077457.1205791.96967546.44MB
    38completeprovenanceBFSdatagen-7_5-fbText-C4926596057.7098671.98999546.98MB
    98completeprovenanceBFSdatagen-7_5-fbJSON-C5319468057.5471911.98438650.73MB
    0completeprovenanceBFSdatagen-7_5-fbORC5827492050.8684841.75408655.58MB
    104completeprovenanceBFSdatagen-7_5-fbParquet6196124848.8670181.68507059.09MB
    85completeprovenanceBFSdatagen-7_5-fbAvro7254630053.1171641.83162669.19MB
    61completeprovenanceBFSdatagen-7_5-fbCSV23625940158.5276422.018195225.31MB
    78completeprovenanceBFSdatagen-7_5-fbText25652922541.1423541.418702244.65MB
    47completeprovenanceBFSdatagen-7_5-fbJSON37814816948.6437201.677370360.63MB
    35completeprovenanceBFSdatagen-7_5-fbObject48760199541.6753321.437080465.01MB
    28completeprovenanceBFSdatagen-7_9-fbCSV-C116209136128.8291994.155781110.83MB
    43completeprovenanceBFSdatagen-7_9-fbText-C11740740090.1397592.907734111.97MB
    102completeprovenanceBFSdatagen-7_9-fbJSON-C127350354132.2473974.266045121.45MB
    4completeprovenanceBFSdatagen-7_9-fbORC135877889104.0527583.356541129.58MB
    106completeprovenanceBFSdatagen-7_9-fbParquet143053677105.8840963.415616136.43MB
    81completeprovenanceBFSdatagen-7_9-fbAvro17106561093.6611363.021327163.14MB
    75completeprovenanceBFSdatagen-7_9-fbCSV53467744171.0250032.291129509.91MB
    41completeprovenanceBFSdatagen-7_9-fbText58185539961.4505921.982277554.90MB
    5completeprovenanceBFSdatagen-7_9-fbJSON86492314767.9177242.190894824.85MB
    34completeprovenanceBFSdatagen-7_9-fbObject1128077456106.6304193.4396911.05GB
    21completeprovenanceBFSgraph500-22ORC2162581840.42839013.47613020.62MB
    68completeprovenanceBFSgraph500-22Text-C3150596439.14398913.04799630.05MB
    96completeprovenanceBFSgraph500-22JSON-C3224772939.21949913.07316630.75MB
    1completeprovenanceBFSgraph500-22Parquet3619625143.21225814.40408634.52MB
    63completeprovenanceBFSgraph500-22Avro4469153136.40210112.13403442.62MB
    88completeprovenanceBFSgraph500-22CSV19941417041.44811113.816037190.18MB
    82completeprovenanceBFSgraph500-22Text21379411242.71116814.237056203.89MB
    95completeprovenanceBFSgraph500-22Object37035693940.12319813.374399353.20MB
    13completeprovenancePageRankcit-PatentsCSV-C981249822245.7281757.020805935.79MB
    92completeprovenancePageRankcit-PatentsText-C997108236253.3366487.238190950.92MB
    110completeprovenancePageRankcit-PatentsJSON-C1056694971226.3377676.4667931007.74MB
    86completeprovenancePageRankcit-PatentsORC1137685330223.4226056.3835031.06GB
    37completeprovenancePageRankcit-PatentsAvro1589606305160.5031874.5858051.48GB
    94completeprovenancePageRankcit-PatentsParquet1593606785173.2861364.9510321.48GB
    80completeprovenancePageRankcit-PatentsCSV2645496912162.6022874.6457802.46GB
    55completeprovenancePageRankcit-PatentsText2834235312142.7368474.0781962.64GB
    65completeprovenancePageRankcit-PatentsJSON3966665712156.5176524.4719333.69GB
    59completeprovenancePageRankcit-PatentsObject5183266070150.1391354.2896904.83GB
    66completeprovenancePageRankdatagen-7_5-fbCSV-C19242379996.0377682.743936183.51MB
    15completeprovenancePageRankdatagen-7_5-fbText-C19475891789.1763452.547896185.74MB
    87completeprovenancePageRankdatagen-7_5-fbJSON-C20576131990.4460402.584173196.23MB
    77completeprovenancePageRankdatagen-7_5-fbORC29707426377.9293192.226552283.31MB
    12completeprovenancePageRankdatagen-7_5-fbParquet31471226670.9574232.027355300.13MB
    67completeprovenancePageRankdatagen-7_5-fbAvro31667339776.7228202.192081302.00MB
    99completeprovenancePageRankdatagen-7_5-fbCSV52102692468.5119041.957483496.89MB
    14completeprovenancePageRankdatagen-7_5-fbText55275249961.6125381.760358527.15MB
    111completeprovenancePageRankdatagen-7_5-fbJSON74273083470.5914572.016899708.32MB
    33completeprovenancePageRankdatagen-7_5-fbObject87193391462.7199221.791998831.54MB
    51completeprovenancePageRankdatagen-7_9-fbCSV-C428773253164.0059724.685885408.91MB
    46completeprovenancePageRankdatagen-7_9-fbText-C433388860165.5606274.730304413.31MB
    3completeprovenancePageRankdatagen-7_9-fbJSON-C457450553156.3347774.466708436.26MB
    48completeprovenancePageRankdatagen-7_9-fbORC654589137137.3984043.925669624.26MB
    60completeprovenancePageRankdatagen-7_9-fbParquet689544217132.7522733.792922657.60MB
    36completeprovenancePageRankdatagen-7_9-fbAvro701125212142.8844794.082414668.65MB
    69completeprovenancePageRankdatagen-7_9-fbCSV1146723471128.3383213.6668091.07GB
    103completeprovenancePageRankdatagen-7_9-fbText1216101565115.1571193.2902031.13GB
    2completeprovenancePageRankdatagen-7_9-fbJSON1632380079124.2432493.5498071.52GB
    56completeprovenancePageRankdatagen-7_9-fbObject1909994294112.6811673.2194621.78GB
    19completeprovenanceSSSPdatagen-7_5-fbCSV-C6237031660.1772882.00591059.48MB
    107completeprovenanceSSSPdatagen-7_5-fbText-C6370215152.3067891.74356060.75MB
    8completeprovenanceSSSPdatagen-7_5-fbJSON-C6879111259.9693051.99897765.60MB
    70completeprovenanceSSSPdatagen-7_5-fbORC7189709952.2150421.74050168.57MB
    89completeprovenanceSSSPdatagen-7_5-fbParquet7643334750.2675941.67558672.89MB
    84completeprovenanceSSSPdatagen-7_5-fbAvro9213561951.6692061.72230787.87MB
    44completeprovenanceSSSPdatagen-7_5-fbCSV23313424152.0423761.734746222.33MB
    108completeprovenanceSSSPdatagen-7_5-fbText25467092941.1571251.371904242.87MB
    114completeprovenanceSSSPdatagen-7_5-fbJSON38389105746.9251691.564172366.11MB
    117completeprovenanceSSSPdatagen-7_5-fbObject59669231649.2075671.640252569.05MB
    91completeprovenanceSSSPdatagen-7_9-fbCSV-C15501810191.4211262.856910147.84MB
    23completeprovenanceSSSPdatagen-7_9-fbText-C158049578137.1086134.284644150.73MB
    52completeprovenanceSSSPdatagen-7_9-fbORC169444993101.7353723.179230161.60MB
    6completeprovenanceSSSPdatagen-7_9-fbJSON-C170232558111.0116423.469114162.35MB
    71completeprovenanceSSSPdatagen-7_9-fbParquet179527558119.3420973.729441171.21MB
    17completeprovenanceSSSPdatagen-7_9-fbAvro22682260679.6082572.487758216.31MB
    11completeprovenanceSSSPdatagen-7_9-fbCSV55118009478.0728132.439775525.65MB
    109completeprovenanceSSSPdatagen-7_9-fbText60113322692.1441272.879504573.29MB
    26completeprovenanceSSSPdatagen-7_9-fbJSON90085201897.8876443.058989859.12MB
    112completeprovenanceSSSPdatagen-7_9-fbObject138397982479.5878452.4871201.29GB
    90completeprovenanceWCCcit-PatentsORC386872327200.9159414.900389368.95MB
    45completeprovenanceWCCcit-PatentsCSV-C390512385231.8183505.654106372.42MB
    42completeprovenanceWCCcit-PatentsText-C410716445244.6962765.968202391.69MB
    83completeprovenanceWCCcit-PatentsJSON-C450465794218.1286125.320210429.60MB
    32completeprovenanceWCCcit-PatentsParquet565433425191.3013334.665886539.24MB
    76completeprovenanceWCCcit-PatentsAvro592224379190.1878934.638729564.79MB
    7completeprovenanceWCCcit-PatentsCSV941792868200.7979594.897511898.16MB
    31completeprovenanceWCCcit-PatentsText1100333124190.5493384.6475451.02GB
    79completeprovenanceWCCcit-PatentsJSON2051574660191.0912214.6607611.91GB
    25completeprovenanceWCCcit-PatentsObject3730315659197.9244204.8274253.47GB
    39completeprovenanceWCCdatagen-7_5-fbCSV-C2501254546.1183343.54756423.85MB
    74completeprovenanceWCCdatagen-7_5-fbText-C2600663239.8439273.06491724.80MB
    73completeprovenanceWCCdatagen-7_5-fbJSON-C2832643548.5538543.73491227.01MB
    20completeprovenanceWCCdatagen-7_5-fbORC3593252742.8044643.29265134.27MB
    93completeprovenanceWCCdatagen-7_5-fbParquet3893168043.7809853.36776837.13MB
    54completeprovenanceWCCdatagen-7_5-fbAvro4044080844.9663243.45894838.57MB
    113completeprovenanceWCCdatagen-7_5-fbCSV8515813245.8612753.52779081.21MB
    72completeprovenanceWCCdatagen-7_5-fbText9402618039.3828443.02945089.67MB
    53completeprovenanceWCCdatagen-7_5-fbJSON14723446843.2277693.325213140.41MB
    49completeprovenanceWCCdatagen-7_5-fbObject21350702947.0376333.618279203.62MB
    9completeprovenanceWCCdatagen-7_9-fbCSV-C5754928884.3143036.48571654.88MB
    16completeprovenanceWCCdatagen-7_9-fbText-C5973665184.0326226.46404856.97MB
    64completeprovenanceWCCdatagen-7_9-fbJSON-C6516368884.2663316.48202562.14MB
    24completeprovenanceWCCdatagen-7_9-fbORC8204997978.4625706.03558278.25MB
    27completeprovenanceWCCdatagen-7_9-fbParquet8814124684.2540966.48108484.06MB
    101completeprovenanceWCCdatagen-7_9-fbAvro9226135477.4865175.96050187.99MB
    62completeprovenanceWCCdatagen-7_9-fbCSV18874292084.1563746.473567180.00MB
    10completeprovenanceWCCdatagen-7_9-fbText20816913874.1738665.705682198.53MB
    22completeprovenanceWCCdatagen-7_9-fbJSON32472644689.6521586.896320309.68MB
    30completeprovenanceWCCdatagen-7_9-fbObject46973596483.4259146.417378447.98MB
    \n", + "
    " + ], + "text/plain": [ + " config algorithm dataset storage_format total_size \\\n", + "50 completeprovenance BFS cit-Patents ORC 272126547 \n", + "58 completeprovenance BFS cit-Patents CSV-C 385629051 \n", + "57 completeprovenance BFS cit-Patents Text-C 398055303 \n", + "100 completeprovenance BFS cit-Patents JSON-C 411310835 \n", + "97 completeprovenance BFS cit-Patents Parquet 452688486 \n", + "18 completeprovenance BFS cit-Patents Avro 548177668 \n", + "105 completeprovenance BFS cit-Patents CSV 2351958475 \n", + "40 completeprovenance BFS cit-Patents Text 2525597803 \n", + "29 completeprovenance BFS cit-Patents JSON 3567433771 \n", + "116 completeprovenance BFS cit-Patents Object 4470241541 \n", + "115 completeprovenance BFS datagen-7_5-fb CSV-C 48690774 \n", + "38 completeprovenance BFS datagen-7_5-fb Text-C 49265960 \n", + "98 completeprovenance BFS datagen-7_5-fb JSON-C 53194680 \n", + "0 completeprovenance BFS datagen-7_5-fb ORC 58274920 \n", + "104 completeprovenance BFS datagen-7_5-fb Parquet 61961248 \n", + "85 completeprovenance BFS datagen-7_5-fb Avro 72546300 \n", + "61 completeprovenance BFS datagen-7_5-fb CSV 236259401 \n", + "78 completeprovenance BFS datagen-7_5-fb Text 256529225 \n", + "47 completeprovenance BFS datagen-7_5-fb JSON 378148169 \n", + "35 completeprovenance BFS datagen-7_5-fb Object 487601995 \n", + "28 completeprovenance BFS datagen-7_9-fb CSV-C 116209136 \n", + "43 completeprovenance BFS datagen-7_9-fb Text-C 117407400 \n", + "102 completeprovenance BFS datagen-7_9-fb JSON-C 127350354 \n", + "4 completeprovenance BFS datagen-7_9-fb ORC 135877889 \n", + "106 completeprovenance BFS datagen-7_9-fb Parquet 143053677 \n", + "81 completeprovenance BFS datagen-7_9-fb Avro 171065610 \n", + "75 completeprovenance BFS datagen-7_9-fb CSV 534677441 \n", + "41 completeprovenance BFS datagen-7_9-fb Text 581855399 \n", + "5 completeprovenance BFS datagen-7_9-fb JSON 864923147 \n", + "34 completeprovenance BFS datagen-7_9-fb Object 1128077456 \n", + "21 completeprovenance BFS graph500-22 ORC 21625818 \n", + "68 completeprovenance BFS graph500-22 Text-C 31505964 \n", + "96 completeprovenance BFS graph500-22 JSON-C 32247729 \n", + "1 completeprovenance BFS graph500-22 Parquet 36196251 \n", + "63 completeprovenance BFS graph500-22 Avro 44691531 \n", + "88 completeprovenance BFS graph500-22 CSV 199414170 \n", + "82 completeprovenance BFS graph500-22 Text 213794112 \n", + "95 completeprovenance BFS graph500-22 Object 370356939 \n", + "13 completeprovenance PageRank cit-Patents CSV-C 981249822 \n", + "92 completeprovenance PageRank cit-Patents Text-C 997108236 \n", + "110 completeprovenance PageRank cit-Patents JSON-C 1056694971 \n", + "86 completeprovenance PageRank cit-Patents ORC 1137685330 \n", + "37 completeprovenance PageRank cit-Patents Avro 1589606305 \n", + "94 completeprovenance PageRank cit-Patents Parquet 1593606785 \n", + "80 completeprovenance PageRank cit-Patents CSV 2645496912 \n", + "55 completeprovenance PageRank cit-Patents Text 2834235312 \n", + "65 completeprovenance PageRank cit-Patents JSON 3966665712 \n", + "59 completeprovenance PageRank cit-Patents Object 5183266070 \n", + "66 completeprovenance PageRank datagen-7_5-fb CSV-C 192423799 \n", + "15 completeprovenance PageRank datagen-7_5-fb Text-C 194758917 \n", + "87 completeprovenance PageRank datagen-7_5-fb JSON-C 205761319 \n", + "77 completeprovenance PageRank datagen-7_5-fb ORC 297074263 \n", + "12 completeprovenance PageRank datagen-7_5-fb Parquet 314712266 \n", + "67 completeprovenance PageRank datagen-7_5-fb Avro 316673397 \n", + "99 completeprovenance PageRank datagen-7_5-fb CSV 521026924 \n", + "14 completeprovenance PageRank datagen-7_5-fb Text 552752499 \n", + "111 completeprovenance PageRank datagen-7_5-fb JSON 742730834 \n", + "33 completeprovenance PageRank datagen-7_5-fb Object 871933914 \n", + "51 completeprovenance PageRank datagen-7_9-fb CSV-C 428773253 \n", + "46 completeprovenance PageRank datagen-7_9-fb Text-C 433388860 \n", + "3 completeprovenance PageRank datagen-7_9-fb JSON-C 457450553 \n", + "48 completeprovenance PageRank datagen-7_9-fb ORC 654589137 \n", + "60 completeprovenance PageRank datagen-7_9-fb Parquet 689544217 \n", + "36 completeprovenance PageRank datagen-7_9-fb Avro 701125212 \n", + "69 completeprovenance PageRank datagen-7_9-fb CSV 1146723471 \n", + "103 completeprovenance PageRank datagen-7_9-fb Text 1216101565 \n", + "2 completeprovenance PageRank datagen-7_9-fb JSON 1632380079 \n", + "56 completeprovenance PageRank datagen-7_9-fb Object 1909994294 \n", + "19 completeprovenance SSSP datagen-7_5-fb CSV-C 62370316 \n", + "107 completeprovenance SSSP datagen-7_5-fb Text-C 63702151 \n", + "8 completeprovenance SSSP datagen-7_5-fb JSON-C 68791112 \n", + "70 completeprovenance SSSP datagen-7_5-fb ORC 71897099 \n", + "89 completeprovenance SSSP datagen-7_5-fb Parquet 76433347 \n", + "84 completeprovenance SSSP datagen-7_5-fb Avro 92135619 \n", + "44 completeprovenance SSSP datagen-7_5-fb CSV 233134241 \n", + "108 completeprovenance SSSP datagen-7_5-fb Text 254670929 \n", + "114 completeprovenance SSSP datagen-7_5-fb JSON 383891057 \n", + "117 completeprovenance SSSP datagen-7_5-fb Object 596692316 \n", + "91 completeprovenance SSSP datagen-7_9-fb CSV-C 155018101 \n", + "23 completeprovenance SSSP datagen-7_9-fb Text-C 158049578 \n", + "52 completeprovenance SSSP datagen-7_9-fb ORC 169444993 \n", + "6 completeprovenance SSSP datagen-7_9-fb JSON-C 170232558 \n", + "71 completeprovenance SSSP datagen-7_9-fb Parquet 179527558 \n", + "17 completeprovenance SSSP datagen-7_9-fb Avro 226822606 \n", + "11 completeprovenance SSSP datagen-7_9-fb CSV 551180094 \n", + "109 completeprovenance SSSP datagen-7_9-fb Text 601133226 \n", + "26 completeprovenance SSSP datagen-7_9-fb JSON 900852018 \n", + "112 completeprovenance SSSP datagen-7_9-fb Object 1383979824 \n", + "90 completeprovenance WCC cit-Patents ORC 386872327 \n", + "45 completeprovenance WCC cit-Patents CSV-C 390512385 \n", + "42 completeprovenance WCC cit-Patents Text-C 410716445 \n", + "83 completeprovenance WCC cit-Patents JSON-C 450465794 \n", + "32 completeprovenance WCC cit-Patents Parquet 565433425 \n", + "76 completeprovenance WCC cit-Patents Avro 592224379 \n", + "7 completeprovenance WCC cit-Patents CSV 941792868 \n", + "31 completeprovenance WCC cit-Patents Text 1100333124 \n", + "79 completeprovenance WCC cit-Patents JSON 2051574660 \n", + "25 completeprovenance WCC cit-Patents Object 3730315659 \n", + "39 completeprovenance WCC datagen-7_5-fb CSV-C 25012545 \n", + "74 completeprovenance WCC datagen-7_5-fb Text-C 26006632 \n", + "73 completeprovenance WCC datagen-7_5-fb JSON-C 28326435 \n", + "20 completeprovenance WCC datagen-7_5-fb ORC 35932527 \n", + "93 completeprovenance WCC datagen-7_5-fb Parquet 38931680 \n", + "54 completeprovenance WCC datagen-7_5-fb Avro 40440808 \n", + "113 completeprovenance WCC datagen-7_5-fb CSV 85158132 \n", + "72 completeprovenance WCC datagen-7_5-fb Text 94026180 \n", + "53 completeprovenance WCC datagen-7_5-fb JSON 147234468 \n", + "49 completeprovenance WCC datagen-7_5-fb Object 213507029 \n", + "9 completeprovenance WCC datagen-7_9-fb CSV-C 57549288 \n", + "16 completeprovenance WCC datagen-7_9-fb Text-C 59736651 \n", + "64 completeprovenance WCC datagen-7_9-fb JSON-C 65163688 \n", + "24 completeprovenance WCC datagen-7_9-fb ORC 82049979 \n", + "27 completeprovenance WCC datagen-7_9-fb Parquet 88141246 \n", + "101 completeprovenance WCC datagen-7_9-fb Avro 92261354 \n", + "62 completeprovenance WCC datagen-7_9-fb CSV 188742920 \n", + "10 completeprovenance WCC datagen-7_9-fb Text 208169138 \n", + "22 completeprovenance WCC datagen-7_9-fb JSON 324726446 \n", + "30 completeprovenance WCC datagen-7_9-fb Object 469735964 \n", + "\n", + " duration per_iter nice_size \n", + "50 113.815472 2.646871 259.52MB \n", + "58 143.495254 3.337099 367.76MB \n", + "57 154.327360 3.589008 379.62MB \n", + "100 134.970226 3.138842 392.26MB \n", + "97 110.955192 2.580353 431.72MB \n", + "18 110.712451 2.574708 522.78MB \n", + "105 117.176385 2.725032 2.19GB \n", + "40 101.973519 2.371477 2.35GB \n", + "29 107.638374 2.503218 3.32GB \n", + "116 119.315761 2.774785 4.16GB \n", + "115 57.120579 1.969675 46.44MB \n", + "38 57.709867 1.989995 46.98MB \n", + "98 57.547191 1.984386 50.73MB \n", + "0 50.868484 1.754086 55.58MB \n", + "104 48.867018 1.685070 59.09MB \n", + "85 53.117164 1.831626 69.19MB \n", + "61 58.527642 2.018195 225.31MB \n", + "78 41.142354 1.418702 244.65MB \n", + "47 48.643720 1.677370 360.63MB \n", + "35 41.675332 1.437080 465.01MB \n", + "28 128.829199 4.155781 110.83MB \n", + "43 90.139759 2.907734 111.97MB \n", + "102 132.247397 4.266045 121.45MB \n", + "4 104.052758 3.356541 129.58MB \n", + "106 105.884096 3.415616 136.43MB \n", + "81 93.661136 3.021327 163.14MB \n", + "75 71.025003 2.291129 509.91MB \n", + "41 61.450592 1.982277 554.90MB \n", + "5 67.917724 2.190894 824.85MB \n", + "34 106.630419 3.439691 1.05GB \n", + "21 40.428390 13.476130 20.62MB \n", + "68 39.143989 13.047996 30.05MB \n", + "96 39.219499 13.073166 30.75MB \n", + "1 43.212258 14.404086 34.52MB \n", + "63 36.402101 12.134034 42.62MB \n", + "88 41.448111 13.816037 190.18MB \n", + "82 42.711168 14.237056 203.89MB \n", + "95 40.123198 13.374399 353.20MB \n", + "13 245.728175 7.020805 935.79MB \n", + "92 253.336648 7.238190 950.92MB \n", + "110 226.337767 6.466793 1007.74MB \n", + "86 223.422605 6.383503 1.06GB \n", + "37 160.503187 4.585805 1.48GB \n", + "94 173.286136 4.951032 1.48GB \n", + "80 162.602287 4.645780 2.46GB \n", + "55 142.736847 4.078196 2.64GB \n", + "65 156.517652 4.471933 3.69GB \n", + "59 150.139135 4.289690 4.83GB \n", + "66 96.037768 2.743936 183.51MB \n", + "15 89.176345 2.547896 185.74MB \n", + "87 90.446040 2.584173 196.23MB \n", + "77 77.929319 2.226552 283.31MB \n", + "12 70.957423 2.027355 300.13MB \n", + "67 76.722820 2.192081 302.00MB \n", + "99 68.511904 1.957483 496.89MB \n", + "14 61.612538 1.760358 527.15MB \n", + "111 70.591457 2.016899 708.32MB \n", + "33 62.719922 1.791998 831.54MB \n", + "51 164.005972 4.685885 408.91MB \n", + "46 165.560627 4.730304 413.31MB \n", + "3 156.334777 4.466708 436.26MB \n", + "48 137.398404 3.925669 624.26MB \n", + "60 132.752273 3.792922 657.60MB \n", + "36 142.884479 4.082414 668.65MB \n", + "69 128.338321 3.666809 1.07GB \n", + "103 115.157119 3.290203 1.13GB \n", + "2 124.243249 3.549807 1.52GB \n", + "56 112.681167 3.219462 1.78GB \n", + "19 60.177288 2.005910 59.48MB \n", + "107 52.306789 1.743560 60.75MB \n", + "8 59.969305 1.998977 65.60MB \n", + "70 52.215042 1.740501 68.57MB \n", + "89 50.267594 1.675586 72.89MB \n", + "84 51.669206 1.722307 87.87MB \n", + "44 52.042376 1.734746 222.33MB \n", + "108 41.157125 1.371904 242.87MB \n", + "114 46.925169 1.564172 366.11MB \n", + "117 49.207567 1.640252 569.05MB \n", + "91 91.421126 2.856910 147.84MB \n", + "23 137.108613 4.284644 150.73MB \n", + "52 101.735372 3.179230 161.60MB \n", + "6 111.011642 3.469114 162.35MB \n", + "71 119.342097 3.729441 171.21MB \n", + "17 79.608257 2.487758 216.31MB \n", + "11 78.072813 2.439775 525.65MB \n", + "109 92.144127 2.879504 573.29MB \n", + "26 97.887644 3.058989 859.12MB \n", + "112 79.587845 2.487120 1.29GB \n", + "90 200.915941 4.900389 368.95MB \n", + "45 231.818350 5.654106 372.42MB \n", + "42 244.696276 5.968202 391.69MB \n", + "83 218.128612 5.320210 429.60MB \n", + "32 191.301333 4.665886 539.24MB \n", + "76 190.187893 4.638729 564.79MB \n", + "7 200.797959 4.897511 898.16MB \n", + "31 190.549338 4.647545 1.02GB \n", + "79 191.091221 4.660761 1.91GB \n", + "25 197.924420 4.827425 3.47GB \n", + "39 46.118334 3.547564 23.85MB \n", + "74 39.843927 3.064917 24.80MB \n", + "73 48.553854 3.734912 27.01MB \n", + "20 42.804464 3.292651 34.27MB \n", + "93 43.780985 3.367768 37.13MB \n", + "54 44.966324 3.458948 38.57MB \n", + "113 45.861275 3.527790 81.21MB \n", + "72 39.382844 3.029450 89.67MB \n", + "53 43.227769 3.325213 140.41MB \n", + "49 47.037633 3.618279 203.62MB \n", + "9 84.314303 6.485716 54.88MB \n", + "16 84.032622 6.464048 56.97MB \n", + "64 84.266331 6.482025 62.14MB \n", + "24 78.462570 6.035582 78.25MB \n", + "27 84.254096 6.481084 84.06MB \n", + "101 77.486517 5.960501 87.99MB \n", + "62 84.156374 6.473567 180.00MB \n", + "10 74.173866 5.705682 198.53MB \n", + "22 89.652158 6.896320 309.68MB \n", + "30 83.425914 6.417378 447.98MB " + ] + }, + "execution_count": 77, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data_dir = Path(\"das6\") / \"20240521-034221-completeprovenance\"\n", + "storage_formats = parse_experiment_output(root_dir / \"data\" / data_dir)\n", + "storage_formats[\"per_iter\"] = storage_formats[\"duration\"] / storage_formats[\"iterations\"]\n", + "storage_formats[\"nice_size\"] = [f\"{format_filesize(s)[0]:.2f}{format_filesize(s)[1]}\" for s in storage_formats[\"total_size\"]]\n", + "storage_formats.drop([\"nr_vertices\", \"iterations\", \"compressed\", \"nr_executors\", \"run\"], axis=1, inplace=True)\n", + "storage_formats.sort_values(by=[\"algorithm\", \"dataset\", \"total_size\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "id": "b21238d2-4ce8-4f4c-9091-0161ff0c4628", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    configalgorithmdatasetstorage_formattotal_sizeduration
    10completeprovenanceWCCdatagen-7_9-fbText20816913874.173866
    14completeprovenancePageRankdatagen-7_5-fbText55275249961.612538
    31completeprovenanceWCCcit-PatentsText1100333124190.549338
    40completeprovenanceBFScit-PatentsText2525597803101.973519
    41completeprovenanceBFSdatagen-7_9-fbText58185539961.450592
    55completeprovenancePageRankcit-PatentsText2834235312142.736847
    72completeprovenanceWCCdatagen-7_5-fbText9402618039.382844
    78completeprovenanceBFSdatagen-7_5-fbText25652922541.142354
    82completeprovenanceBFSgraph500-22Text21379411242.711168
    103completeprovenancePageRankdatagen-7_9-fbText1216101565115.157119
    108completeprovenanceSSSPdatagen-7_5-fbText25467092941.157125
    109completeprovenanceSSSPdatagen-7_9-fbText60113322692.144127
    \n", + "
    " + ], + "text/plain": [ + " config algorithm dataset storage_format total_size \\\n", + "10 completeprovenance WCC datagen-7_9-fb Text 208169138 \n", + "14 completeprovenance PageRank datagen-7_5-fb Text 552752499 \n", + "31 completeprovenance WCC cit-Patents Text 1100333124 \n", + "40 completeprovenance BFS cit-Patents Text 2525597803 \n", + "41 completeprovenance BFS datagen-7_9-fb Text 581855399 \n", + "55 completeprovenance PageRank cit-Patents Text 2834235312 \n", + "72 completeprovenance WCC datagen-7_5-fb Text 94026180 \n", + "78 completeprovenance BFS datagen-7_5-fb Text 256529225 \n", + "82 completeprovenance BFS graph500-22 Text 213794112 \n", + "103 completeprovenance PageRank datagen-7_9-fb Text 1216101565 \n", + "108 completeprovenance SSSP datagen-7_5-fb Text 254670929 \n", + "109 completeprovenance SSSP datagen-7_9-fb Text 601133226 \n", + "\n", + " duration \n", + "10 74.173866 \n", + "14 61.612538 \n", + "31 190.549338 \n", + "40 101.973519 \n", + "41 61.450592 \n", + "55 142.736847 \n", + "72 39.382844 \n", + "78 41.142354 \n", + "82 42.711168 \n", + "103 115.157119 \n", + "108 41.157125 \n", + "109 92.144127 " + ] + }, + "execution_count": 78, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "storage_baseline = storage_formats.copy(deep=True).drop([\"per_iter\", \"nice_size\"], axis=1)\n", + "storage_baseline = storage_baseline[(storage_baseline[\"storage_format\"] == \"Text\")]\n", + "storage_baseline" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "id": "fb4a7738-bf7f-4cbc-a4f9-9c42d6718321", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    algorithmdatasetstorage_formattotal_size
    10WCCdatagen-7_9-fbText208169138
    14PageRankdatagen-7_5-fbText552752499
    31WCCcit-PatentsText1100333124
    40BFScit-PatentsText2525597803
    41BFSdatagen-7_9-fbText581855399
    55PageRankcit-PatentsText2834235312
    72WCCdatagen-7_5-fbText94026180
    78BFSdatagen-7_5-fbText256529225
    82BFSgraph500-22Text213794112
    103PageRankdatagen-7_9-fbText1216101565
    108SSSPdatagen-7_5-fbText254670929
    109SSSPdatagen-7_9-fbText601133226
    \n", + "
    " + ], + "text/plain": [ + " algorithm dataset storage_format total_size\n", + "10 WCC datagen-7_9-fb Text 208169138\n", + "14 PageRank datagen-7_5-fb Text 552752499\n", + "31 WCC cit-Patents Text 1100333124\n", + "40 BFS cit-Patents Text 2525597803\n", + "41 BFS datagen-7_9-fb Text 581855399\n", + "55 PageRank cit-Patents Text 2834235312\n", + "72 WCC datagen-7_5-fb Text 94026180\n", + "78 BFS datagen-7_5-fb Text 256529225\n", + "82 BFS graph500-22 Text 213794112\n", + "103 PageRank datagen-7_9-fb Text 1216101565\n", + "108 SSSP datagen-7_5-fb Text 254670929\n", + "109 SSSP datagen-7_9-fb Text 601133226" + ] + }, + "execution_count": 82, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "storage_baseline_size = storage_baseline[[\"algorithm\", \"dataset\", \"storage_format\", \"total_size\"]]\n", + "storage_baseline_size" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "id": "5ac92d26-afb2-49f2-97bc-6987da9d05dc", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    algorithmdatasetstorage_formatduration
    40BFScit-PatentsText101.973519
    78BFSdatagen-7_5-fbText41.142354
    41BFSdatagen-7_9-fbText61.450592
    82BFSgraph500-22Text42.711168
    55PageRankcit-PatentsText142.736847
    14PageRankdatagen-7_5-fbText61.612538
    103PageRankdatagen-7_9-fbText115.157119
    108SSSPdatagen-7_5-fbText41.157125
    109SSSPdatagen-7_9-fbText92.144127
    31WCCcit-PatentsText190.549338
    72WCCdatagen-7_5-fbText39.382844
    10WCCdatagen-7_9-fbText74.173866
    \n", + "
    " + ], + "text/plain": [ + " algorithm dataset storage_format duration\n", + "40 BFS cit-Patents Text 101.973519\n", + "78 BFS datagen-7_5-fb Text 41.142354\n", + "41 BFS datagen-7_9-fb Text 61.450592\n", + "82 BFS graph500-22 Text 42.711168\n", + "55 PageRank cit-Patents Text 142.736847\n", + "14 PageRank datagen-7_5-fb Text 61.612538\n", + "103 PageRank datagen-7_9-fb Text 115.157119\n", + "108 SSSP datagen-7_5-fb Text 41.157125\n", + "109 SSSP datagen-7_9-fb Text 92.144127\n", + "31 WCC cit-Patents Text 190.549338\n", + "72 WCC datagen-7_5-fb Text 39.382844\n", + "10 WCC datagen-7_9-fb Text 74.173866" + ] + }, + "execution_count": 96, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "storage_baseline_duration = storage_baseline[[\"algorithm\", \"dataset\", \"storage_format\", \"duration\"]]\n", + "storage_baseline_duration.sort_values(by=[\"algorithm\", \"dataset\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "id": "dadd007a-3c39-46aa-a4c4-71845b850c63", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    algorithmdatasetstorage_formatduration
    12BFScit-PatentsText81.590225
    16BFSdatagen-7_5-fbText41.949647
    9BFSdatagen-7_9-fbText103.909232
    18BFSdatagen-8_4-fbText228.835858
    7BFSdatagen-8_8-zfText194.096829
    8BFSgraph500-22Text33.833869
    4PageRankcit-PatentsText76.718400
    6PageRankdatagen-7_5-fbText44.126948
    5PageRankdatagen-7_9-fbText67.496328
    14PageRankdatagen-8_4-fbText221.688116
    19PageRankdatagen-8_8-zfText232.275335
    3PageRankgraph500-22Text76.242817
    15SSSPdatagen-7_5-fbText43.968590
    2SSSPdatagen-7_9-fbText83.955731
    1SSSPdatagen-8_4-fbText229.654970
    0SSSPdatagen-8_8-zfText192.158678
    10WCCcit-PatentsText160.453424
    20WCCdatagen-7_5-fbText33.387272
    17WCCdatagen-7_9-fbText70.140869
    11WCCdatagen-8_4-fbText232.656136
    13WCCgraph500-22Text74.247498
    \n", + "
    " + ], + "text/plain": [ + " algorithm dataset storage_format duration\n", + "12 BFS cit-Patents Text 81.590225\n", + "16 BFS datagen-7_5-fb Text 41.949647\n", + "9 BFS datagen-7_9-fb Text 103.909232\n", + "18 BFS datagen-8_4-fb Text 228.835858\n", + "7 BFS datagen-8_8-zf Text 194.096829\n", + "8 BFS graph500-22 Text 33.833869\n", + "4 PageRank cit-Patents Text 76.718400\n", + "6 PageRank datagen-7_5-fb Text 44.126948\n", + "5 PageRank datagen-7_9-fb Text 67.496328\n", + "14 PageRank datagen-8_4-fb Text 221.688116\n", + "19 PageRank datagen-8_8-zf Text 232.275335\n", + "3 PageRank graph500-22 Text 76.242817\n", + "15 SSSP datagen-7_5-fb Text 43.968590\n", + "2 SSSP datagen-7_9-fb Text 83.955731\n", + "1 SSSP datagen-8_4-fb Text 229.654970\n", + "0 SSSP datagen-8_8-zf Text 192.158678\n", + "10 WCC cit-Patents Text 160.453424\n", + "20 WCC datagen-7_5-fb Text 33.387272\n", + "17 WCC datagen-7_9-fb Text 70.140869\n", + "11 WCC datagen-8_4-fb Text 232.656136\n", + "13 WCC graph500-22 Text 74.247498" + ] + }, + "execution_count": 97, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "baseline_scaling[[\"algorithm\", \"dataset\", \"storage_format\", \"duration\"]].sort_values(by=[\"algorithm\", \"dataset\"])" + ] + }, + { + "cell_type": "markdown", + "id": "fcefbf7c-b8e7-4b3f-8dd7-ce1791df18b4", + "metadata": {}, + "source": [ + "## Duration" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "id": "55869c78-46c1-4dd5-8330-c38fd68fd5a6", + "metadata": {}, + "outputs": [], + "source": [ + "def duration_plots(df, x=\"per_iter\", y=\"storage_format\", ylabel=\"Storage formats\"):\n", + " for algorithm in df[\"algorithm\"].unique():\n", + " obs = df[df[\"algorithm\"] == algorithm]\n", + " order = obs.groupby(by=[y])[x].median().sort_values(ascending=False).index\n", + " b = sns.boxplot(data=obs, x=x, y=y, hue=\"algorithm\", order=order, palette=algorithm_colors)\n", + " # b.set_xlim(0, 30)\n", + " b.set_xlabel(\"Overhead\")\n", + " b.set_ylabel(ylabel)\n", + " write_dir = (plot_dir / data_dir)\n", + " write_dir.mkdir(exist_ok=True, parents=True)\n", + " plt.savefig(write_dir / f\"duration-{algorithm.lower()}.pdf\", bbox_inches='tight')\n", + " plt.clf()" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "id": "1a9f051e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    algorithmdatasetdurationbaseline_durationoverheadoverhead_desc
    0WCCdatagen-7_9-fb74.17386670.1408691.05749974.173866231 / 70.140868789
    1PageRankdatagen-7_5-fb61.61253844.1269481.39625761.612538263 / 44.126948162
    2WCCcit-Patents190.549338160.4534241.187568190.549338405 / 160.453424225
    3BFScit-Patents101.97351981.5902251.249825101.973519244 / 81.590224633
    4BFSdatagen-7_9-fb61.450592103.9092320.59138761.450591776 / 103.9092324
    5PageRankcit-Patents142.73684776.7184001.860530142.736846616 / 76.718400082
    6WCCdatagen-7_5-fb39.38284433.3872721.17957739.38284403 / 33.387272447
    7BFSdatagen-7_5-fb41.14235441.9496470.98075641.142354269 / 41.949647441
    8BFSgraph500-2242.71116833.8338691.26237942.711168064 / 33.833868949
    9PageRankdatagen-7_9-fb115.15711967.4963281.706124115.157119041 / 67.496327811
    10SSSPdatagen-7_5-fb41.15712543.9685900.93605741.157124516 / 43.968590117
    11SSSPdatagen-7_9-fb92.14412783.9557311.09753292.144126519 / 83.955730661
    \n", + "
    " + ], + "text/plain": [ + " algorithm dataset duration baseline_duration overhead \\\n", + "0 WCC datagen-7_9-fb 74.173866 70.140869 1.057499 \n", + "1 PageRank datagen-7_5-fb 61.612538 44.126948 1.396257 \n", + "2 WCC cit-Patents 190.549338 160.453424 1.187568 \n", + "3 BFS cit-Patents 101.973519 81.590225 1.249825 \n", + "4 BFS datagen-7_9-fb 61.450592 103.909232 0.591387 \n", + "5 PageRank cit-Patents 142.736847 76.718400 1.860530 \n", + "6 WCC datagen-7_5-fb 39.382844 33.387272 1.179577 \n", + "7 BFS datagen-7_5-fb 41.142354 41.949647 0.980756 \n", + "8 BFS graph500-22 42.711168 33.833869 1.262379 \n", + "9 PageRank datagen-7_9-fb 115.157119 67.496328 1.706124 \n", + "10 SSSP datagen-7_5-fb 41.157125 43.968590 0.936057 \n", + "11 SSSP datagen-7_9-fb 92.144127 83.955731 1.097532 \n", + "\n", + " overhead_desc \n", + "0 74.173866231 / 70.140868789 \n", + "1 61.612538263 / 44.126948162 \n", + "2 190.549338405 / 160.453424225 \n", + "3 101.973519244 / 81.590224633 \n", + "4 61.450591776 / 103.9092324 \n", + "5 142.736846616 / 76.718400082 \n", + "6 39.38284403 / 33.387272447 \n", + "7 41.142354269 / 41.949647441 \n", + "8 42.711168064 / 33.833868949 \n", + "9 115.157119041 / 67.496327811 \n", + "10 41.157124516 / 43.968590117 \n", + "11 92.144126519 / 83.955730661 " + ] + }, + "execution_count": 91, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "storage_formats_compare = merge_compare(baseline_scaling, storage_baseline_duration, metric=\"duration\")\n", + "storage_formats_compare" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "id": "91162414-1023-4bd3-b392-63c1c21fbf53", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "storage_formats_compare = merge_compare(baseline_scaling, storage_formats, metric=\"duration\")\n", + "\n", + "duration_plots(storage_formats_compare, x=\"overhead\")" + ] + }, + { + "cell_type": "markdown", + "id": "9332f1ae-a446-4c61-8f08-c2ed0a3dde78", + "metadata": {}, + "source": [ + "## Sizes" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "id": "e952a142-ff85-43e4-b34f-bff6ee9a0903", + "metadata": {}, + "outputs": [], + "source": [ + "def sizes_plot(df, palette=None):\n", + " palette_colors = algorithm_colors if palette is None else palette\n", + " xmin, xmax = df[df[\"overhead\"] > 0][\"overhead\"].min(), df[df[\"overhead\"] > 0][\"overhead\"].max()\n", + " \n", + " for algorithm in df[\"algorithm\"].unique():\n", + " if len(df[df[\"overhead\"] > 0]) > 0:\n", + " print(\"warning: some rows have size equal to 0\")\n", + " obs = df[(df[\"algorithm\"] == algorithm) & (df[\"overhead\"] > 0)].drop_duplicates()\n", + " order = obs.groupby(by=[\"storage_format\"])[\"overhead\"].median().sort_values(ascending=False).index\n", + " b = sns.boxplot(data=obs, x=\"overhead\", y=\"storage_format\", hue=\"algorithm\", order=order, palette=palette_colors)\n", + " # b.set_xscale(\"log\")\n", + " b.set_xlim(xmin, xmax)\n", + " b.set_xlabel(\"Overhead\")\n", + " b.set_ylabel(\"Storage formats\")\n", + " # ticks = np.logspace(np.log10(xmin)-0.1, np.log10(xmax)+0.1, 10)\n", + " ticks = np.linspace(xmin, xmax, 10)\n", + " b.set_xticks(ticks=ticks) #, labels=[f\"{format_filesize(l)[0]:.0f} {format_filesize(l)[1]}\" for l in ticks], rotation=45)\n", + " #sns.move_legend(b, \"lower right\")\n", + " write_dir = (plot_dir / data_dir)\n", + " write_dir.mkdir(exist_ok=True, parents=True)\n", + " plt.savefig(write_dir / f\"size-{algorithm.lower()}.pdf\", bbox_inches='tight')\n", + " plt.clf()" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "id": "3de97bca", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    configalgorithmdatasetrunstorage_formatcompressedtotal_sizenr_executorsnr_verticesiterationsdurationper_iternice_size
    10completeprovenanceWCCdatagen-7_9-fb1TextFalse208169138713875871374.1738665.705682198.53MB
    14completeprovenancePageRankdatagen-7_5-fb1TextFalse55275249976334323561.6125381.760358527.15MB
    31completeprovenanceWCCcit-Patents1TextFalse11003331247377476841190.5493384.6475451.02GB
    40completeprovenanceBFScit-Patents1TextFalse25255978037377476843101.9735192.3714772.35GB
    41completeprovenanceBFSdatagen-7_9-fb1TextFalse581855399713875873161.4505921.982277554.90MB
    55completeprovenancePageRankcit-Patents1TextFalse28342353127377476835142.7368474.0781962.64GB
    72completeprovenanceWCCdatagen-7_5-fb1TextFalse9402618076334321339.3828443.02945089.67MB
    78completeprovenanceBFSdatagen-7_5-fb1TextFalse25652922576334322941.1423541.418702244.65MB
    82completeprovenanceBFSgraph500-221TextFalse21379411272396657342.71116814.237056203.89MB
    103completeprovenancePageRankdatagen-7_9-fb1TextFalse12161015657138758735115.1571193.2902031.13GB
    108completeprovenanceSSSPdatagen-7_5-fb1TextFalse25467092976334323041.1571251.371904242.87MB
    109completeprovenanceSSSPdatagen-7_9-fb1TextFalse601133226713875873292.1441272.879504573.29MB
    \n", + "
    " + ], + "text/plain": [ + " config algorithm dataset run storage_format \\\n", + "10 completeprovenance WCC datagen-7_9-fb 1 Text \n", + "14 completeprovenance PageRank datagen-7_5-fb 1 Text \n", + "31 completeprovenance WCC cit-Patents 1 Text \n", + "40 completeprovenance BFS cit-Patents 1 Text \n", + "41 completeprovenance BFS datagen-7_9-fb 1 Text \n", + "55 completeprovenance PageRank cit-Patents 1 Text \n", + "72 completeprovenance WCC datagen-7_5-fb 1 Text \n", + "78 completeprovenance BFS datagen-7_5-fb 1 Text \n", + "82 completeprovenance BFS graph500-22 1 Text \n", + "103 completeprovenance PageRank datagen-7_9-fb 1 Text \n", + "108 completeprovenance SSSP datagen-7_5-fb 1 Text \n", + "109 completeprovenance SSSP datagen-7_9-fb 1 Text \n", + "\n", + " compressed total_size nr_executors nr_vertices iterations \\\n", + "10 False 208169138 7 1387587 13 \n", + "14 False 552752499 7 633432 35 \n", + "31 False 1100333124 7 3774768 41 \n", + "40 False 2525597803 7 3774768 43 \n", + "41 False 581855399 7 1387587 31 \n", + "55 False 2834235312 7 3774768 35 \n", + "72 False 94026180 7 633432 13 \n", + "78 False 256529225 7 633432 29 \n", + "82 False 213794112 7 2396657 3 \n", + "103 False 1216101565 7 1387587 35 \n", + "108 False 254670929 7 633432 30 \n", + "109 False 601133226 7 1387587 32 \n", + "\n", + " duration per_iter nice_size \n", + "10 74.173866 5.705682 198.53MB \n", + "14 61.612538 1.760358 527.15MB \n", + "31 190.549338 4.647545 1.02GB \n", + "40 101.973519 2.371477 2.35GB \n", + "41 61.450592 1.982277 554.90MB \n", + "55 142.736847 4.078196 2.64GB \n", + "72 39.382844 3.029450 89.67MB \n", + "78 41.142354 1.418702 244.65MB \n", + "82 42.711168 14.237056 203.89MB \n", + "103 115.157119 3.290203 1.13GB \n", + "108 41.157125 1.371904 242.87MB \n", + "109 92.144127 2.879504 573.29MB " + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "storage_formats[storage_formats[\"storage_format\"] == \"Text\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "id": "7cd6ff9a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    configalgorithmdatasetstorage_formatcompressedtotal_sizeduration
    18completeprovenanceBFScit-PatentsAvroFalse2525597803110.712451
    29completeprovenanceBFScit-PatentsJSONFalse2525597803107.638374
    40completeprovenanceBFScit-PatentsTextFalse2525597803101.973519
    50completeprovenanceBFScit-PatentsORCFalse2525597803113.815472
    57completeprovenanceBFScit-PatentsText-CTrue2525597803154.327360
    58completeprovenanceBFScit-PatentsCSV-CTrue2525597803143.495254
    97completeprovenanceBFScit-PatentsParquetFalse2525597803110.955192
    100completeprovenanceBFScit-PatentsJSON-CTrue2525597803134.970226
    105completeprovenanceBFScit-PatentsCSVFalse2525597803117.176385
    116completeprovenanceBFScit-PatentsObjectFalse2525597803119.315761
    0completeprovenanceBFSdatagen-7_5-fbORCFalse25652922550.868484
    35completeprovenanceBFSdatagen-7_5-fbObjectFalse25652922541.675332
    38completeprovenanceBFSdatagen-7_5-fbText-CTrue25652922557.709867
    47completeprovenanceBFSdatagen-7_5-fbJSONFalse25652922548.643720
    61completeprovenanceBFSdatagen-7_5-fbCSVFalse25652922558.527642
    78completeprovenanceBFSdatagen-7_5-fbTextFalse25652922541.142354
    85completeprovenanceBFSdatagen-7_5-fbAvroFalse25652922553.117164
    98completeprovenanceBFSdatagen-7_5-fbJSON-CTrue25652922557.547191
    104completeprovenanceBFSdatagen-7_5-fbParquetFalse25652922548.867018
    115completeprovenanceBFSdatagen-7_5-fbCSV-CTrue25652922557.120579
    4completeprovenanceBFSdatagen-7_9-fbORCFalse581855399104.052758
    5completeprovenanceBFSdatagen-7_9-fbJSONFalse58185539967.917724
    28completeprovenanceBFSdatagen-7_9-fbCSV-CTrue581855399128.829199
    34completeprovenanceBFSdatagen-7_9-fbObjectFalse581855399106.630419
    41completeprovenanceBFSdatagen-7_9-fbTextFalse58185539961.450592
    43completeprovenanceBFSdatagen-7_9-fbText-CTrue58185539990.139759
    75completeprovenanceBFSdatagen-7_9-fbCSVFalse58185539971.025003
    81completeprovenanceBFSdatagen-7_9-fbAvroFalse58185539993.661136
    102completeprovenanceBFSdatagen-7_9-fbJSON-CTrue581855399132.247397
    106completeprovenanceBFSdatagen-7_9-fbParquetFalse581855399105.884096
    1completeprovenanceBFSgraph500-22ParquetFalse21379411243.212258
    21completeprovenanceBFSgraph500-22ORCFalse21379411240.428390
    63completeprovenanceBFSgraph500-22AvroFalse21379411236.402101
    68completeprovenanceBFSgraph500-22Text-CTrue21379411239.143989
    82completeprovenanceBFSgraph500-22TextFalse21379411242.711168
    88completeprovenanceBFSgraph500-22CSVFalse21379411241.448111
    95completeprovenanceBFSgraph500-22ObjectFalse21379411240.123198
    96completeprovenanceBFSgraph500-22JSON-CTrue21379411239.219499
    13completeprovenancePageRankcit-PatentsCSV-CTrue2834235312245.728175
    37completeprovenancePageRankcit-PatentsAvroFalse2834235312160.503187
    55completeprovenancePageRankcit-PatentsTextFalse2834235312142.736847
    59completeprovenancePageRankcit-PatentsObjectFalse2834235312150.139135
    65completeprovenancePageRankcit-PatentsJSONFalse2834235312156.517652
    80completeprovenancePageRankcit-PatentsCSVFalse2834235312162.602287
    86completeprovenancePageRankcit-PatentsORCFalse2834235312223.422605
    92completeprovenancePageRankcit-PatentsText-CTrue2834235312253.336648
    94completeprovenancePageRankcit-PatentsParquetFalse2834235312173.286136
    110completeprovenancePageRankcit-PatentsJSON-CTrue2834235312226.337767
    12completeprovenancePageRankdatagen-7_5-fbParquetFalse55275249970.957423
    14completeprovenancePageRankdatagen-7_5-fbTextFalse55275249961.612538
    15completeprovenancePageRankdatagen-7_5-fbText-CTrue55275249989.176345
    33completeprovenancePageRankdatagen-7_5-fbObjectFalse55275249962.719922
    66completeprovenancePageRankdatagen-7_5-fbCSV-CTrue55275249996.037768
    67completeprovenancePageRankdatagen-7_5-fbAvroFalse55275249976.722820
    77completeprovenancePageRankdatagen-7_5-fbORCFalse55275249977.929319
    87completeprovenancePageRankdatagen-7_5-fbJSON-CTrue55275249990.446040
    99completeprovenancePageRankdatagen-7_5-fbCSVFalse55275249968.511904
    111completeprovenancePageRankdatagen-7_5-fbJSONFalse55275249970.591457
    2completeprovenancePageRankdatagen-7_9-fbJSONFalse1216101565124.243249
    3completeprovenancePageRankdatagen-7_9-fbJSON-CTrue1216101565156.334777
    36completeprovenancePageRankdatagen-7_9-fbAvroFalse1216101565142.884479
    46completeprovenancePageRankdatagen-7_9-fbText-CTrue1216101565165.560627
    48completeprovenancePageRankdatagen-7_9-fbORCFalse1216101565137.398404
    51completeprovenancePageRankdatagen-7_9-fbCSV-CTrue1216101565164.005972
    56completeprovenancePageRankdatagen-7_9-fbObjectFalse1216101565112.681167
    60completeprovenancePageRankdatagen-7_9-fbParquetFalse1216101565132.752273
    69completeprovenancePageRankdatagen-7_9-fbCSVFalse1216101565128.338321
    103completeprovenancePageRankdatagen-7_9-fbTextFalse1216101565115.157119
    8completeprovenanceSSSPdatagen-7_5-fbJSON-CTrue25467092959.969305
    19completeprovenanceSSSPdatagen-7_5-fbCSV-CTrue25467092960.177288
    44completeprovenanceSSSPdatagen-7_5-fbCSVFalse25467092952.042376
    70completeprovenanceSSSPdatagen-7_5-fbORCFalse25467092952.215042
    84completeprovenanceSSSPdatagen-7_5-fbAvroFalse25467092951.669206
    89completeprovenanceSSSPdatagen-7_5-fbParquetFalse25467092950.267594
    107completeprovenanceSSSPdatagen-7_5-fbText-CTrue25467092952.306789
    108completeprovenanceSSSPdatagen-7_5-fbTextFalse25467092941.157125
    114completeprovenanceSSSPdatagen-7_5-fbJSONFalse25467092946.925169
    117completeprovenanceSSSPdatagen-7_5-fbObjectFalse25467092949.207567
    6completeprovenanceSSSPdatagen-7_9-fbJSON-CTrue601133226111.011642
    11completeprovenanceSSSPdatagen-7_9-fbCSVFalse60113322678.072813
    17completeprovenanceSSSPdatagen-7_9-fbAvroFalse60113322679.608257
    23completeprovenanceSSSPdatagen-7_9-fbText-CTrue601133226137.108613
    26completeprovenanceSSSPdatagen-7_9-fbJSONFalse60113322697.887644
    52completeprovenanceSSSPdatagen-7_9-fbORCFalse601133226101.735372
    71completeprovenanceSSSPdatagen-7_9-fbParquetFalse601133226119.342097
    91completeprovenanceSSSPdatagen-7_9-fbCSV-CTrue60113322691.421126
    109completeprovenanceSSSPdatagen-7_9-fbTextFalse60113322692.144127
    112completeprovenanceSSSPdatagen-7_9-fbObjectFalse60113322679.587845
    7completeprovenanceWCCcit-PatentsCSVFalse1100333124200.797959
    25completeprovenanceWCCcit-PatentsObjectFalse1100333124197.924420
    31completeprovenanceWCCcit-PatentsTextFalse1100333124190.549338
    32completeprovenanceWCCcit-PatentsParquetFalse1100333124191.301333
    42completeprovenanceWCCcit-PatentsText-CTrue1100333124244.696276
    45completeprovenanceWCCcit-PatentsCSV-CTrue1100333124231.818350
    76completeprovenanceWCCcit-PatentsAvroFalse1100333124190.187893
    79completeprovenanceWCCcit-PatentsJSONFalse1100333124191.091221
    83completeprovenanceWCCcit-PatentsJSON-CTrue1100333124218.128612
    90completeprovenanceWCCcit-PatentsORCFalse1100333124200.915941
    20completeprovenanceWCCdatagen-7_5-fbORCFalse9402618042.804464
    39completeprovenanceWCCdatagen-7_5-fbCSV-CTrue9402618046.118334
    49completeprovenanceWCCdatagen-7_5-fbObjectFalse9402618047.037633
    53completeprovenanceWCCdatagen-7_5-fbJSONFalse9402618043.227769
    54completeprovenanceWCCdatagen-7_5-fbAvroFalse9402618044.966324
    72completeprovenanceWCCdatagen-7_5-fbTextFalse9402618039.382844
    73completeprovenanceWCCdatagen-7_5-fbJSON-CTrue9402618048.553854
    74completeprovenanceWCCdatagen-7_5-fbText-CTrue9402618039.843927
    93completeprovenanceWCCdatagen-7_5-fbParquetFalse9402618043.780985
    113completeprovenanceWCCdatagen-7_5-fbCSVFalse9402618045.861275
    9completeprovenanceWCCdatagen-7_9-fbCSV-CTrue20816913884.314303
    10completeprovenanceWCCdatagen-7_9-fbTextFalse20816913874.173866
    16completeprovenanceWCCdatagen-7_9-fbText-CTrue20816913884.032622
    22completeprovenanceWCCdatagen-7_9-fbJSONFalse20816913889.652158
    24completeprovenanceWCCdatagen-7_9-fbORCFalse20816913878.462570
    27completeprovenanceWCCdatagen-7_9-fbParquetFalse20816913884.254096
    30completeprovenanceWCCdatagen-7_9-fbObjectFalse20816913883.425914
    62completeprovenanceWCCdatagen-7_9-fbCSVFalse20816913884.156374
    64completeprovenanceWCCdatagen-7_9-fbJSON-CTrue20816913884.266331
    101completeprovenanceWCCdatagen-7_9-fbAvroFalse20816913877.486517
    \n", + "
    " + ], + "text/plain": [ + " config algorithm dataset storage_format compressed \\\n", + "18 completeprovenance BFS cit-Patents Avro False \n", + "29 completeprovenance BFS cit-Patents JSON False \n", + "40 completeprovenance BFS cit-Patents Text False \n", + "50 completeprovenance BFS cit-Patents ORC False \n", + "57 completeprovenance BFS cit-Patents Text-C True \n", + "58 completeprovenance BFS cit-Patents CSV-C True \n", + "97 completeprovenance BFS cit-Patents Parquet False \n", + "100 completeprovenance BFS cit-Patents JSON-C True \n", + "105 completeprovenance BFS cit-Patents CSV False \n", + "116 completeprovenance BFS cit-Patents Object False \n", + "0 completeprovenance BFS datagen-7_5-fb ORC False \n", + "35 completeprovenance BFS datagen-7_5-fb Object False \n", + "38 completeprovenance BFS datagen-7_5-fb Text-C True \n", + "47 completeprovenance BFS datagen-7_5-fb JSON False \n", + "61 completeprovenance BFS datagen-7_5-fb CSV False \n", + "78 completeprovenance BFS datagen-7_5-fb Text False \n", + "85 completeprovenance BFS datagen-7_5-fb Avro False \n", + "98 completeprovenance BFS datagen-7_5-fb JSON-C True \n", + "104 completeprovenance BFS datagen-7_5-fb Parquet False \n", + "115 completeprovenance BFS datagen-7_5-fb CSV-C True \n", + "4 completeprovenance BFS datagen-7_9-fb ORC False \n", + "5 completeprovenance BFS datagen-7_9-fb JSON False \n", + "28 completeprovenance BFS datagen-7_9-fb CSV-C True \n", + "34 completeprovenance BFS datagen-7_9-fb Object False \n", + "41 completeprovenance BFS datagen-7_9-fb Text False \n", + "43 completeprovenance BFS datagen-7_9-fb Text-C True \n", + "75 completeprovenance BFS datagen-7_9-fb CSV False \n", + "81 completeprovenance BFS datagen-7_9-fb Avro False \n", + "102 completeprovenance BFS datagen-7_9-fb JSON-C True \n", + "106 completeprovenance BFS datagen-7_9-fb Parquet False \n", + "1 completeprovenance BFS graph500-22 Parquet False \n", + "21 completeprovenance BFS graph500-22 ORC False \n", + "63 completeprovenance BFS graph500-22 Avro False \n", + "68 completeprovenance BFS graph500-22 Text-C True \n", + "82 completeprovenance BFS graph500-22 Text False \n", + "88 completeprovenance BFS graph500-22 CSV False \n", + "95 completeprovenance BFS graph500-22 Object False \n", + "96 completeprovenance BFS graph500-22 JSON-C True \n", + "13 completeprovenance PageRank cit-Patents CSV-C True \n", + "37 completeprovenance PageRank cit-Patents Avro False \n", + "55 completeprovenance PageRank cit-Patents Text False \n", + "59 completeprovenance PageRank cit-Patents Object False \n", + "65 completeprovenance PageRank cit-Patents JSON False \n", + "80 completeprovenance PageRank cit-Patents CSV False \n", + "86 completeprovenance PageRank cit-Patents ORC False \n", + "92 completeprovenance PageRank cit-Patents Text-C True \n", + "94 completeprovenance PageRank cit-Patents Parquet False \n", + "110 completeprovenance PageRank cit-Patents JSON-C True \n", + "12 completeprovenance PageRank datagen-7_5-fb Parquet False \n", + "14 completeprovenance PageRank datagen-7_5-fb Text False \n", + "15 completeprovenance PageRank datagen-7_5-fb Text-C True \n", + "33 completeprovenance PageRank datagen-7_5-fb Object False \n", + "66 completeprovenance PageRank datagen-7_5-fb CSV-C True \n", + "67 completeprovenance PageRank datagen-7_5-fb Avro False \n", + "77 completeprovenance PageRank datagen-7_5-fb ORC False \n", + "87 completeprovenance PageRank datagen-7_5-fb JSON-C True \n", + "99 completeprovenance PageRank datagen-7_5-fb CSV False \n", + "111 completeprovenance PageRank datagen-7_5-fb JSON False \n", + "2 completeprovenance PageRank datagen-7_9-fb JSON False \n", + "3 completeprovenance PageRank datagen-7_9-fb JSON-C True \n", + "36 completeprovenance PageRank datagen-7_9-fb Avro False \n", + "46 completeprovenance PageRank datagen-7_9-fb Text-C True \n", + "48 completeprovenance PageRank datagen-7_9-fb ORC False \n", + "51 completeprovenance PageRank datagen-7_9-fb CSV-C True \n", + "56 completeprovenance PageRank datagen-7_9-fb Object False \n", + "60 completeprovenance PageRank datagen-7_9-fb Parquet False \n", + "69 completeprovenance PageRank datagen-7_9-fb CSV False \n", + "103 completeprovenance PageRank datagen-7_9-fb Text False \n", + "8 completeprovenance SSSP datagen-7_5-fb JSON-C True \n", + "19 completeprovenance SSSP datagen-7_5-fb CSV-C True \n", + "44 completeprovenance SSSP datagen-7_5-fb CSV False \n", + "70 completeprovenance SSSP datagen-7_5-fb ORC False \n", + "84 completeprovenance SSSP datagen-7_5-fb Avro False \n", + "89 completeprovenance SSSP datagen-7_5-fb Parquet False \n", + "107 completeprovenance SSSP datagen-7_5-fb Text-C True \n", + "108 completeprovenance SSSP datagen-7_5-fb Text False \n", + "114 completeprovenance SSSP datagen-7_5-fb JSON False \n", + "117 completeprovenance SSSP datagen-7_5-fb Object False \n", + "6 completeprovenance SSSP datagen-7_9-fb JSON-C True \n", + "11 completeprovenance SSSP datagen-7_9-fb CSV False \n", + "17 completeprovenance SSSP datagen-7_9-fb Avro False \n", + "23 completeprovenance SSSP datagen-7_9-fb Text-C True \n", + "26 completeprovenance SSSP datagen-7_9-fb JSON False \n", + "52 completeprovenance SSSP datagen-7_9-fb ORC False \n", + "71 completeprovenance SSSP datagen-7_9-fb Parquet False \n", + "91 completeprovenance SSSP datagen-7_9-fb CSV-C True \n", + "109 completeprovenance SSSP datagen-7_9-fb Text False \n", + "112 completeprovenance SSSP datagen-7_9-fb Object False \n", + "7 completeprovenance WCC cit-Patents CSV False \n", + "25 completeprovenance WCC cit-Patents Object False \n", + "31 completeprovenance WCC cit-Patents Text False \n", + "32 completeprovenance WCC cit-Patents Parquet False \n", + "42 completeprovenance WCC cit-Patents Text-C True \n", + "45 completeprovenance WCC cit-Patents CSV-C True \n", + "76 completeprovenance WCC cit-Patents Avro False \n", + "79 completeprovenance WCC cit-Patents JSON False \n", + "83 completeprovenance WCC cit-Patents JSON-C True \n", + "90 completeprovenance WCC cit-Patents ORC False \n", + "20 completeprovenance WCC datagen-7_5-fb ORC False \n", + "39 completeprovenance WCC datagen-7_5-fb CSV-C True \n", + "49 completeprovenance WCC datagen-7_5-fb Object False \n", + "53 completeprovenance WCC datagen-7_5-fb JSON False \n", + "54 completeprovenance WCC datagen-7_5-fb Avro False \n", + "72 completeprovenance WCC datagen-7_5-fb Text False \n", + "73 completeprovenance WCC datagen-7_5-fb JSON-C True \n", + "74 completeprovenance WCC datagen-7_5-fb Text-C True \n", + "93 completeprovenance WCC datagen-7_5-fb Parquet False \n", + "113 completeprovenance WCC datagen-7_5-fb CSV False \n", + "9 completeprovenance WCC datagen-7_9-fb CSV-C True \n", + "10 completeprovenance WCC datagen-7_9-fb Text False \n", + "16 completeprovenance WCC datagen-7_9-fb Text-C True \n", + "22 completeprovenance WCC datagen-7_9-fb JSON False \n", + "24 completeprovenance WCC datagen-7_9-fb ORC False \n", + "27 completeprovenance WCC datagen-7_9-fb Parquet False \n", + "30 completeprovenance WCC datagen-7_9-fb Object False \n", + "62 completeprovenance WCC datagen-7_9-fb CSV False \n", + "64 completeprovenance WCC datagen-7_9-fb JSON-C True \n", + "101 completeprovenance WCC datagen-7_9-fb Avro False \n", + "\n", + " total_size duration \n", + "18 2525597803 110.712451 \n", + "29 2525597803 107.638374 \n", + "40 2525597803 101.973519 \n", + "50 2525597803 113.815472 \n", + "57 2525597803 154.327360 \n", + "58 2525597803 143.495254 \n", + "97 2525597803 110.955192 \n", + "100 2525597803 134.970226 \n", + "105 2525597803 117.176385 \n", + "116 2525597803 119.315761 \n", + "0 256529225 50.868484 \n", + "35 256529225 41.675332 \n", + "38 256529225 57.709867 \n", + "47 256529225 48.643720 \n", + "61 256529225 58.527642 \n", + "78 256529225 41.142354 \n", + "85 256529225 53.117164 \n", + "98 256529225 57.547191 \n", + "104 256529225 48.867018 \n", + "115 256529225 57.120579 \n", + "4 581855399 104.052758 \n", + "5 581855399 67.917724 \n", + "28 581855399 128.829199 \n", + "34 581855399 106.630419 \n", + "41 581855399 61.450592 \n", + "43 581855399 90.139759 \n", + "75 581855399 71.025003 \n", + "81 581855399 93.661136 \n", + "102 581855399 132.247397 \n", + "106 581855399 105.884096 \n", + "1 213794112 43.212258 \n", + "21 213794112 40.428390 \n", + "63 213794112 36.402101 \n", + "68 213794112 39.143989 \n", + "82 213794112 42.711168 \n", + "88 213794112 41.448111 \n", + "95 213794112 40.123198 \n", + "96 213794112 39.219499 \n", + "13 2834235312 245.728175 \n", + "37 2834235312 160.503187 \n", + "55 2834235312 142.736847 \n", + "59 2834235312 150.139135 \n", + "65 2834235312 156.517652 \n", + "80 2834235312 162.602287 \n", + "86 2834235312 223.422605 \n", + "92 2834235312 253.336648 \n", + "94 2834235312 173.286136 \n", + "110 2834235312 226.337767 \n", + "12 552752499 70.957423 \n", + "14 552752499 61.612538 \n", + "15 552752499 89.176345 \n", + "33 552752499 62.719922 \n", + "66 552752499 96.037768 \n", + "67 552752499 76.722820 \n", + "77 552752499 77.929319 \n", + "87 552752499 90.446040 \n", + "99 552752499 68.511904 \n", + "111 552752499 70.591457 \n", + "2 1216101565 124.243249 \n", + "3 1216101565 156.334777 \n", + "36 1216101565 142.884479 \n", + "46 1216101565 165.560627 \n", + "48 1216101565 137.398404 \n", + "51 1216101565 164.005972 \n", + "56 1216101565 112.681167 \n", + "60 1216101565 132.752273 \n", + "69 1216101565 128.338321 \n", + "103 1216101565 115.157119 \n", + "8 254670929 59.969305 \n", + "19 254670929 60.177288 \n", + "44 254670929 52.042376 \n", + "70 254670929 52.215042 \n", + "84 254670929 51.669206 \n", + "89 254670929 50.267594 \n", + "107 254670929 52.306789 \n", + "108 254670929 41.157125 \n", + "114 254670929 46.925169 \n", + "117 254670929 49.207567 \n", + "6 601133226 111.011642 \n", + "11 601133226 78.072813 \n", + "17 601133226 79.608257 \n", + "23 601133226 137.108613 \n", + "26 601133226 97.887644 \n", + "52 601133226 101.735372 \n", + "71 601133226 119.342097 \n", + "91 601133226 91.421126 \n", + "109 601133226 92.144127 \n", + "112 601133226 79.587845 \n", + "7 1100333124 200.797959 \n", + "25 1100333124 197.924420 \n", + "31 1100333124 190.549338 \n", + "32 1100333124 191.301333 \n", + "42 1100333124 244.696276 \n", + "45 1100333124 231.818350 \n", + "76 1100333124 190.187893 \n", + "79 1100333124 191.091221 \n", + "83 1100333124 218.128612 \n", + "90 1100333124 200.915941 \n", + "20 94026180 42.804464 \n", + "39 94026180 46.118334 \n", + "49 94026180 47.037633 \n", + "53 94026180 43.227769 \n", + "54 94026180 44.966324 \n", + "72 94026180 39.382844 \n", + "73 94026180 48.553854 \n", + "74 94026180 39.843927 \n", + "93 94026180 43.780985 \n", + "113 94026180 45.861275 \n", + "9 208169138 84.314303 \n", + "10 208169138 74.173866 \n", + "16 208169138 84.032622 \n", + "22 208169138 89.652158 \n", + "24 208169138 78.462570 \n", + "27 208169138 84.254096 \n", + "30 208169138 83.425914 \n", + "62 208169138 84.156374 \n", + "64 208169138 84.266331 \n", + "101 208169138 77.486517 " + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dddd = storage_formats.copy(deep=True).drop([\"per_iter\", \"nice_size\", \"iterations\", \"nr_vertices\", \"run\", \"nr_executors\"], axis=1)\n", + "for ds in dddd[\"dataset\"].unique():\n", + " for algo in dddd[\"algorithm\"].unique():\n", + " for fmt in dddd[\"storage_format\"].unique():\n", + " if fmt == \"Text\":\n", + " continue\n", + " text_size = dddd[(dddd[\"algorithm\"] == algo) & (dddd[\"dataset\"] == ds) & (dddd[\"storage_format\"] == \"Text\")][\"total_size\"]\n", + " if len(text_size) == 1:\n", + " text_size = text_size.iloc[0]\n", + " else:\n", + " text_size = -1\n", + " # print(text_size)\n", + " # print()\n", + " # print()\n", + " dddd.loc[(dddd[\"algorithm\"] == algo) & (dddd[\"dataset\"] == ds) & (dddd[\"storage_format\"] == fmt), \"total_size\"] = text_size\n", + "dddd.sort_values(by=[\"algorithm\", \"dataset\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "id": "18ca6b29", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    configalgorithmdatasetrunstorage_formatcompressedtotal_sizenr_executorsnr_verticesiterationsdurationper_iternice_sizebaseline_total_sizeoverheadoverhead_desc
    0completeprovenanceBFSdatagen-7_5-fb1ORCFalse5827492076334322950.8684841.75408655.58MB2565292250.22716758274920 / 256529225
    1completeprovenanceBFSgraph500-221ParquetFalse3619625172396657343.21225814.40408634.52MB2137941120.16930436196251 / 213794112
    2completeprovenancePageRankdatagen-7_9-fb1JSONFalse16323800797138758735124.2432493.5498071.52GB12161015651.3423061632380079 / 1216101565
    3completeprovenancePageRankdatagen-7_9-fb1JSON-CTrue4574505537138758735156.3347774.466708436.26MB12161015650.376161457450553 / 1216101565
    4completeprovenanceBFSdatagen-7_9-fb1ORCFalse1358778897138758731104.0527583.356541129.58MB5818553990.233525135877889 / 581855399
    5completeprovenanceBFSdatagen-7_9-fb1JSONFalse864923147713875873167.9177242.190894824.85MB5818553991.486492864923147 / 581855399
    6completeprovenanceSSSPdatagen-7_9-fb1JSON-CTrue1702325587138758732111.0116423.469114162.35MB6011332260.283186170232558 / 601133226
    7completeprovenanceWCCcit-Patents1CSVFalse9417928687377476841200.7979594.897511898.16MB11003331240.855916941792868 / 1100333124
    8completeprovenanceSSSPdatagen-7_5-fb1JSON-CTrue6879111276334323059.9693051.99897765.60MB2546709290.27011868791112 / 254670929
    9completeprovenanceWCCdatagen-7_9-fb1CSV-CTrue57549288713875871384.3143036.48571654.88MB2081691380.27645457549288 / 208169138
    10completeprovenanceWCCdatagen-7_9-fb1TextFalse208169138713875871374.1738665.705682198.53MB2081691381.000000208169138 / 208169138
    11completeprovenanceSSSPdatagen-7_9-fb1CSVFalse551180094713875873278.0728132.439775525.65MB6011332260.916902551180094 / 601133226
    12completeprovenancePageRankdatagen-7_5-fb1ParquetFalse31471226676334323570.9574232.027355300.13MB5527524990.569355314712266 / 552752499
    13completeprovenancePageRankcit-Patents1CSV-CTrue9812498227377476835245.7281757.020805935.79MB28342353120.346213981249822 / 2834235312
    14completeprovenancePageRankdatagen-7_5-fb1TextFalse55275249976334323561.6125381.760358527.15MB5527524991.000000552752499 / 552752499
    15completeprovenancePageRankdatagen-7_5-fb1Text-CTrue19475891776334323589.1763452.547896185.74MB5527524990.352344194758917 / 552752499
    16completeprovenanceWCCdatagen-7_9-fb1Text-CTrue59736651713875871384.0326226.46404856.97MB2081691380.28696259736651 / 208169138
    17completeprovenanceSSSPdatagen-7_9-fb1AvroFalse226822606713875873279.6082572.487758216.31MB6011332260.377325226822606 / 601133226
    18completeprovenanceBFScit-Patents1AvroFalse5481776687377476843110.7124512.574708522.78MB25255978030.217049548177668 / 2525597803
    19completeprovenanceSSSPdatagen-7_5-fb1CSV-CTrue6237031676334323060.1772882.00591059.48MB2546709290.24490662370316 / 254670929
    20completeprovenanceWCCdatagen-7_5-fb1ORCFalse3593252776334321342.8044643.29265134.27MB940261800.38215435932527 / 94026180
    21completeprovenanceBFSgraph500-221ORCFalse2162581872396657340.42839013.47613020.62MB2137941120.10115321625818 / 213794112
    22completeprovenanceWCCdatagen-7_9-fb1JSONFalse324726446713875871389.6521586.896320309.68MB2081691381.559916324726446 / 208169138
    23completeprovenanceSSSPdatagen-7_9-fb1Text-CTrue1580495787138758732137.1086134.284644150.73MB6011332260.262919158049578 / 601133226
    24completeprovenanceWCCdatagen-7_9-fb1ORCFalse82049979713875871378.4625706.03558278.25MB2081691380.39415182049979 / 208169138
    25completeprovenanceWCCcit-Patents1ObjectFalse37303156597377476841197.9244204.8274253.47GB11003331243.3901693730315659 / 1100333124
    26completeprovenanceSSSPdatagen-7_9-fb1JSONFalse900852018713875873297.8876443.058989859.12MB6011332261.498590900852018 / 601133226
    27completeprovenanceWCCdatagen-7_9-fb1ParquetFalse88141246713875871384.2540966.48108484.06MB2081691380.42341288141246 / 208169138
    28completeprovenanceBFSdatagen-7_9-fb1CSV-CTrue1162091367138758731128.8291994.155781110.83MB5818553990.199722116209136 / 581855399
    29completeprovenanceBFScit-Patents1JSONFalse35674337717377476843107.6383742.5032183.32GB25255978031.4125113567433771 / 2525597803
    30completeprovenanceWCCdatagen-7_9-fb1ObjectFalse469735964713875871383.4259146.417378447.98MB2081691382.256511469735964 / 208169138
    31completeprovenanceWCCcit-Patents1TextFalse11003331247377476841190.5493384.6475451.02GB11003331241.0000001100333124 / 1100333124
    32completeprovenanceWCCcit-Patents1ParquetFalse5654334257377476841191.3013334.665886539.24MB11003331240.513875565433425 / 1100333124
    33completeprovenancePageRankdatagen-7_5-fb1ObjectFalse87193391476334323562.7199221.791998831.54MB5527524991.577440871933914 / 552752499
    34completeprovenanceBFSdatagen-7_9-fb1ObjectFalse11280774567138758731106.6304193.4396911.05GB5818553991.9387591128077456 / 581855399
    35completeprovenanceBFSdatagen-7_5-fb1ObjectFalse48760199576334322941.6753321.437080465.01MB2565292251.900766487601995 / 256529225
    36completeprovenancePageRankdatagen-7_9-fb1AvroFalse7011252127138758735142.8844794.082414668.65MB12161015650.576535701125212 / 1216101565
    37completeprovenancePageRankcit-Patents1AvroFalse15896063057377476835160.5031874.5858051.48GB28342353120.5608591589606305 / 2834235312
    38completeprovenanceBFSdatagen-7_5-fb1Text-CTrue4926596076334322957.7098671.98999546.98MB2565292250.19204849265960 / 256529225
    39completeprovenanceWCCdatagen-7_5-fb1CSV-CTrue2501254576334321346.1183343.54756423.85MB940261800.26601725012545 / 94026180
    40completeprovenanceBFScit-Patents1TextFalse25255978037377476843101.9735192.3714772.35GB25255978031.0000002525597803 / 2525597803
    41completeprovenanceBFSdatagen-7_9-fb1TextFalse581855399713875873161.4505921.982277554.90MB5818553991.000000581855399 / 581855399
    42completeprovenanceWCCcit-Patents1Text-CTrue4107164457377476841244.6962765.968202391.69MB11003331240.373266410716445 / 1100333124
    43completeprovenanceBFSdatagen-7_9-fb1Text-CTrue117407400713875873190.1397592.907734111.97MB5818553990.201781117407400 / 581855399
    44completeprovenanceSSSPdatagen-7_5-fb1CSVFalse23313424176334323052.0423761.734746222.33MB2546709290.915433233134241 / 254670929
    45completeprovenanceWCCcit-Patents1CSV-CTrue3905123857377476841231.8183505.654106372.42MB11003331240.354904390512385 / 1100333124
    46completeprovenancePageRankdatagen-7_9-fb1Text-CTrue4333888607138758735165.5606274.730304413.31MB12161015650.356376433388860 / 1216101565
    47completeprovenanceBFSdatagen-7_5-fb1JSONFalse37814816976334322948.6437201.677370360.63MB2565292251.474094378148169 / 256529225
    48completeprovenancePageRankdatagen-7_9-fb1ORCFalse6545891377138758735137.3984043.925669624.26MB12161015650.538268654589137 / 1216101565
    49completeprovenanceWCCdatagen-7_5-fb1ObjectFalse21350702976334321347.0376333.618279203.62MB940261802.270719213507029 / 94026180
    50completeprovenanceBFScit-Patents1ORCFalse2721265477377476843113.8154722.646871259.52MB25255978030.107747272126547 / 2525597803
    51completeprovenancePageRankdatagen-7_9-fb1CSV-CTrue4287732537138758735164.0059724.685885408.91MB12161015650.352580428773253 / 1216101565
    52completeprovenanceSSSPdatagen-7_9-fb1ORCFalse1694449937138758732101.7353723.179230161.60MB6011332260.281876169444993 / 601133226
    53completeprovenanceWCCdatagen-7_5-fb1JSONFalse14723446876334321343.2277693.325213140.41MB940261801.565888147234468 / 94026180
    54completeprovenanceWCCdatagen-7_5-fb1AvroFalse4044080876334321344.9663243.45894838.57MB940261800.43010240440808 / 94026180
    55completeprovenancePageRankcit-Patents1TextFalse28342353127377476835142.7368474.0781962.64GB28342353121.0000002834235312 / 2834235312
    56completeprovenancePageRankdatagen-7_9-fb1ObjectFalse19099942947138758735112.6811673.2194621.78GB12161015651.5705881909994294 / 1216101565
    57completeprovenanceBFScit-Patents1Text-CTrue3980553037377476843154.3273603.589008379.62MB25255978030.157608398055303 / 2525597803
    58completeprovenanceBFScit-Patents1CSV-CTrue3856290517377476843143.4952543.337099367.76MB25255978030.152688385629051 / 2525597803
    59completeprovenancePageRankcit-Patents1ObjectFalse51832660707377476835150.1391354.2896904.83GB28342353121.8288065183266070 / 2834235312
    60completeprovenancePageRankdatagen-7_9-fb1ParquetFalse6895442177138758735132.7522733.792922657.60MB12161015650.567012689544217 / 1216101565
    61completeprovenanceBFSdatagen-7_5-fb1CSVFalse23625940176334322958.5276422.018195225.31MB2565292250.920984236259401 / 256529225
    62completeprovenanceWCCdatagen-7_9-fb1CSVFalse188742920713875871384.1563746.473567180.00MB2081691380.906681188742920 / 208169138
    63completeprovenanceBFSgraph500-221AvroFalse4469153172396657336.40210112.13403442.62MB2137941120.20904044691531 / 213794112
    64completeprovenanceWCCdatagen-7_9-fb1JSON-CTrue65163688713875871384.2663316.48202562.14MB2081691380.31303265163688 / 208169138
    65completeprovenancePageRankcit-Patents1JSONFalse39666657127377476835156.5176524.4719333.69GB28342353121.3995543966665712 / 2834235312
    66completeprovenancePageRankdatagen-7_5-fb1CSV-CTrue19242379976334323596.0377682.743936183.51MB5527524990.348119192423799 / 552752499
    67completeprovenancePageRankdatagen-7_5-fb1AvroFalse31667339776334323576.7228202.192081302.00MB5527524990.572903316673397 / 552752499
    68completeprovenanceBFSgraph500-221Text-CTrue3150596472396657339.14398913.04799630.05MB2137941120.14736631505964 / 213794112
    69completeprovenancePageRankdatagen-7_9-fb1CSVFalse11467234717138758735128.3383213.6668091.07GB12161015650.9429501146723471 / 1216101565
    70completeprovenanceSSSPdatagen-7_5-fb1ORCFalse7189709976334323052.2150421.74050168.57MB2546709290.28231471897099 / 254670929
    71completeprovenanceSSSPdatagen-7_9-fb1ParquetFalse1795275587138758732119.3420973.729441171.21MB6011332260.298649179527558 / 601133226
    72completeprovenanceWCCdatagen-7_5-fb1TextFalse9402618076334321339.3828443.02945089.67MB940261801.00000094026180 / 94026180
    73completeprovenanceWCCdatagen-7_5-fb1JSON-CTrue2832643576334321348.5538543.73491227.01MB940261800.30126128326435 / 94026180
    74completeprovenanceWCCdatagen-7_5-fb1Text-CTrue2600663276334321339.8439273.06491724.80MB940261800.27658926006632 / 94026180
    75completeprovenanceBFSdatagen-7_9-fb1CSVFalse534677441713875873171.0250032.291129509.91MB5818553990.918918534677441 / 581855399
    76completeprovenanceWCCcit-Patents1AvroFalse5922243797377476841190.1878934.638729564.79MB11003331240.538223592224379 / 1100333124
    77completeprovenancePageRankdatagen-7_5-fb1ORCFalse29707426376334323577.9293192.226552283.31MB5527524990.537445297074263 / 552752499
    78completeprovenanceBFSdatagen-7_5-fb1TextFalse25652922576334322941.1423541.418702244.65MB2565292251.000000256529225 / 256529225
    79completeprovenanceWCCcit-Patents1JSONFalse20515746607377476841191.0912214.6607611.91GB11003331241.8645032051574660 / 1100333124
    80completeprovenancePageRankcit-Patents1CSVFalse26454969127377476835162.6022874.6457802.46GB28342353120.9334082645496912 / 2834235312
    81completeprovenanceBFSdatagen-7_9-fb1AvroFalse171065610713875873193.6611363.021327163.14MB5818553990.294000171065610 / 581855399
    82completeprovenanceBFSgraph500-221TextFalse21379411272396657342.71116814.237056203.89MB2137941121.000000213794112 / 213794112
    83completeprovenanceWCCcit-Patents1JSON-CTrue4504657947377476841218.1286125.320210429.60MB11003331240.409390450465794 / 1100333124
    84completeprovenanceSSSPdatagen-7_5-fb1AvroFalse9213561976334323051.6692061.72230787.87MB2546709290.36178392135619 / 254670929
    85completeprovenanceBFSdatagen-7_5-fb1AvroFalse7254630076334322953.1171641.83162669.19MB2565292250.28279972546300 / 256529225
    86completeprovenancePageRankcit-Patents1ORCFalse11376853307377476835223.4226056.3835031.06GB28342353120.4014081137685330 / 2834235312
    87completeprovenancePageRankdatagen-7_5-fb1JSON-CTrue20576131976334323590.4460402.584173196.23MB5527524990.372249205761319 / 552752499
    88completeprovenanceBFSgraph500-221CSVFalse19941417072396657341.44811113.816037190.18MB2137941120.932739199414170 / 213794112
    89completeprovenanceSSSPdatagen-7_5-fb1ParquetFalse7643334776334323050.2675941.67558672.89MB2546709290.30012676433347 / 254670929
    90completeprovenanceWCCcit-Patents1ORCFalse3868723277377476841200.9159414.900389368.95MB11003331240.351596386872327 / 1100333124
    91completeprovenanceSSSPdatagen-7_9-fb1CSV-CTrue155018101713875873291.4211262.856910147.84MB6011332260.257876155018101 / 601133226
    92completeprovenancePageRankcit-Patents1Text-CTrue9971082367377476835253.3366487.238190950.92MB28342353120.351809997108236 / 2834235312
    93completeprovenanceWCCdatagen-7_5-fb1ParquetFalse3893168076334321343.7809853.36776837.13MB940261800.41405138931680 / 94026180
    94completeprovenancePageRankcit-Patents1ParquetFalse15936067857377476835173.2861364.9510321.48GB28342353120.5622701593606785 / 2834235312
    95completeprovenanceBFSgraph500-221ObjectFalse37035693972396657340.12319813.374399353.20MB2137941121.732307370356939 / 213794112
    96completeprovenanceBFSgraph500-221JSON-CTrue3224772972396657339.21949913.07316630.75MB2137941120.15083532247729 / 213794112
    97completeprovenanceBFScit-Patents1ParquetFalse4526884867377476843110.9551922.580353431.72MB25255978030.179240452688486 / 2525597803
    98completeprovenanceBFSdatagen-7_5-fb1JSON-CTrue5319468076334322957.5471911.98438650.73MB2565292250.20736353194680 / 256529225
    99completeprovenancePageRankdatagen-7_5-fb1CSVFalse52102692476334323568.5119041.957483496.89MB5527524990.942604521026924 / 552752499
    100completeprovenanceBFScit-Patents1JSON-CTrue4113108357377476843134.9702263.138842392.26MB25255978030.162857411310835 / 2525597803
    101completeprovenanceWCCdatagen-7_9-fb1AvroFalse92261354713875871377.4865175.96050187.99MB2081691380.44320492261354 / 208169138
    102completeprovenanceBFSdatagen-7_9-fb1JSON-CTrue1273503547138758731132.2473974.266045121.45MB5818553990.218869127350354 / 581855399
    103completeprovenancePageRankdatagen-7_9-fb1TextFalse12161015657138758735115.1571193.2902031.13GB12161015651.0000001216101565 / 1216101565
    104completeprovenanceBFSdatagen-7_5-fb1ParquetFalse6196124876334322948.8670181.68507059.09MB2565292250.24153761961248 / 256529225
    105completeprovenanceBFScit-Patents1CSVFalse23519584757377476843117.1763852.7250322.19GB25255978030.9312482351958475 / 2525597803
    106completeprovenanceBFSdatagen-7_9-fb1ParquetFalse1430536777138758731105.8840963.415616136.43MB5818553990.245858143053677 / 581855399
    107completeprovenanceSSSPdatagen-7_5-fb1Text-CTrue6370215176334323052.3067891.74356060.75MB2546709290.25013563702151 / 254670929
    108completeprovenanceSSSPdatagen-7_5-fb1TextFalse25467092976334323041.1571251.371904242.87MB2546709291.000000254670929 / 254670929
    109completeprovenanceSSSPdatagen-7_9-fb1TextFalse601133226713875873292.1441272.879504573.29MB6011332261.000000601133226 / 601133226
    110completeprovenancePageRankcit-Patents1JSON-CTrue10566949717377476835226.3377676.4667931007.74MB28342353120.3728321056694971 / 2834235312
    111completeprovenancePageRankdatagen-7_5-fb1JSONFalse74273083476334323570.5914572.016899708.32MB5527524991.343695742730834 / 552752499
    112completeprovenanceSSSPdatagen-7_9-fb1ObjectFalse1383979824713875873279.5878452.4871201.29GB6011332262.3022851383979824 / 601133226
    113completeprovenanceWCCdatagen-7_5-fb1CSVFalse8515813276334321345.8612753.52779081.21MB940261800.90568585158132 / 94026180
    114completeprovenanceSSSPdatagen-7_5-fb1JSONFalse38389105776334323046.9251691.564172366.11MB2546709291.507400383891057 / 254670929
    115completeprovenanceBFSdatagen-7_5-fb1CSV-CTrue4869077476334322957.1205791.96967546.44MB2565292250.18980648690774 / 256529225
    116completeprovenanceBFScit-Patents1ObjectFalse44702415417377476843119.3157612.7747854.16GB25255978031.7699744470241541 / 2525597803
    117completeprovenanceSSSPdatagen-7_5-fb1ObjectFalse59669231676334323049.2075671.640252569.05MB2546709292.342993596692316 / 254670929
    \n", + "
    " + ], + "text/plain": [ + " config algorithm dataset run storage_format \\\n", + "0 completeprovenance BFS datagen-7_5-fb 1 ORC \n", + "1 completeprovenance BFS graph500-22 1 Parquet \n", + "2 completeprovenance PageRank datagen-7_9-fb 1 JSON \n", + "3 completeprovenance PageRank datagen-7_9-fb 1 JSON-C \n", + "4 completeprovenance BFS datagen-7_9-fb 1 ORC \n", + "5 completeprovenance BFS datagen-7_9-fb 1 JSON \n", + "6 completeprovenance SSSP datagen-7_9-fb 1 JSON-C \n", + "7 completeprovenance WCC cit-Patents 1 CSV \n", + "8 completeprovenance SSSP datagen-7_5-fb 1 JSON-C \n", + "9 completeprovenance WCC datagen-7_9-fb 1 CSV-C \n", + "10 completeprovenance WCC datagen-7_9-fb 1 Text \n", + "11 completeprovenance SSSP datagen-7_9-fb 1 CSV \n", + "12 completeprovenance PageRank datagen-7_5-fb 1 Parquet \n", + "13 completeprovenance PageRank cit-Patents 1 CSV-C \n", + "14 completeprovenance PageRank datagen-7_5-fb 1 Text \n", + "15 completeprovenance PageRank datagen-7_5-fb 1 Text-C \n", + "16 completeprovenance WCC datagen-7_9-fb 1 Text-C \n", + "17 completeprovenance SSSP datagen-7_9-fb 1 Avro \n", + "18 completeprovenance BFS cit-Patents 1 Avro \n", + "19 completeprovenance SSSP datagen-7_5-fb 1 CSV-C \n", + "20 completeprovenance WCC datagen-7_5-fb 1 ORC \n", + "21 completeprovenance BFS graph500-22 1 ORC \n", + "22 completeprovenance WCC datagen-7_9-fb 1 JSON \n", + "23 completeprovenance SSSP datagen-7_9-fb 1 Text-C \n", + "24 completeprovenance WCC datagen-7_9-fb 1 ORC \n", + "25 completeprovenance WCC cit-Patents 1 Object \n", + "26 completeprovenance SSSP datagen-7_9-fb 1 JSON \n", + "27 completeprovenance WCC datagen-7_9-fb 1 Parquet \n", + "28 completeprovenance BFS datagen-7_9-fb 1 CSV-C \n", + "29 completeprovenance BFS cit-Patents 1 JSON \n", + "30 completeprovenance WCC datagen-7_9-fb 1 Object \n", + "31 completeprovenance WCC cit-Patents 1 Text \n", + "32 completeprovenance WCC cit-Patents 1 Parquet \n", + "33 completeprovenance PageRank datagen-7_5-fb 1 Object \n", + "34 completeprovenance BFS datagen-7_9-fb 1 Object \n", + "35 completeprovenance BFS datagen-7_5-fb 1 Object \n", + "36 completeprovenance PageRank datagen-7_9-fb 1 Avro \n", + "37 completeprovenance PageRank cit-Patents 1 Avro \n", + "38 completeprovenance BFS datagen-7_5-fb 1 Text-C \n", + "39 completeprovenance WCC datagen-7_5-fb 1 CSV-C \n", + "40 completeprovenance BFS cit-Patents 1 Text \n", + "41 completeprovenance BFS datagen-7_9-fb 1 Text \n", + "42 completeprovenance WCC cit-Patents 1 Text-C \n", + "43 completeprovenance BFS datagen-7_9-fb 1 Text-C \n", + "44 completeprovenance SSSP datagen-7_5-fb 1 CSV \n", + "45 completeprovenance WCC cit-Patents 1 CSV-C \n", + "46 completeprovenance PageRank datagen-7_9-fb 1 Text-C \n", + "47 completeprovenance BFS datagen-7_5-fb 1 JSON \n", + "48 completeprovenance PageRank datagen-7_9-fb 1 ORC \n", + "49 completeprovenance WCC datagen-7_5-fb 1 Object \n", + "50 completeprovenance BFS cit-Patents 1 ORC \n", + "51 completeprovenance PageRank datagen-7_9-fb 1 CSV-C \n", + "52 completeprovenance SSSP datagen-7_9-fb 1 ORC \n", + "53 completeprovenance WCC datagen-7_5-fb 1 JSON \n", + "54 completeprovenance WCC datagen-7_5-fb 1 Avro \n", + "55 completeprovenance PageRank cit-Patents 1 Text \n", + "56 completeprovenance PageRank datagen-7_9-fb 1 Object \n", + "57 completeprovenance BFS cit-Patents 1 Text-C \n", + "58 completeprovenance BFS cit-Patents 1 CSV-C \n", + "59 completeprovenance PageRank cit-Patents 1 Object \n", + "60 completeprovenance PageRank datagen-7_9-fb 1 Parquet \n", + "61 completeprovenance BFS datagen-7_5-fb 1 CSV \n", + "62 completeprovenance WCC datagen-7_9-fb 1 CSV \n", + "63 completeprovenance BFS graph500-22 1 Avro \n", + "64 completeprovenance WCC datagen-7_9-fb 1 JSON-C \n", + "65 completeprovenance PageRank cit-Patents 1 JSON \n", + "66 completeprovenance PageRank datagen-7_5-fb 1 CSV-C \n", + "67 completeprovenance PageRank datagen-7_5-fb 1 Avro \n", + "68 completeprovenance BFS graph500-22 1 Text-C \n", + "69 completeprovenance PageRank datagen-7_9-fb 1 CSV \n", + "70 completeprovenance SSSP datagen-7_5-fb 1 ORC \n", + "71 completeprovenance SSSP datagen-7_9-fb 1 Parquet \n", + "72 completeprovenance WCC datagen-7_5-fb 1 Text \n", + "73 completeprovenance WCC datagen-7_5-fb 1 JSON-C \n", + "74 completeprovenance WCC datagen-7_5-fb 1 Text-C \n", + "75 completeprovenance BFS datagen-7_9-fb 1 CSV \n", + "76 completeprovenance WCC cit-Patents 1 Avro \n", + "77 completeprovenance PageRank datagen-7_5-fb 1 ORC \n", + "78 completeprovenance BFS datagen-7_5-fb 1 Text \n", + "79 completeprovenance WCC cit-Patents 1 JSON \n", + "80 completeprovenance PageRank cit-Patents 1 CSV \n", + "81 completeprovenance BFS datagen-7_9-fb 1 Avro \n", + "82 completeprovenance BFS graph500-22 1 Text \n", + "83 completeprovenance WCC cit-Patents 1 JSON-C \n", + "84 completeprovenance SSSP datagen-7_5-fb 1 Avro \n", + "85 completeprovenance BFS datagen-7_5-fb 1 Avro \n", + "86 completeprovenance PageRank cit-Patents 1 ORC \n", + "87 completeprovenance PageRank datagen-7_5-fb 1 JSON-C \n", + "88 completeprovenance BFS graph500-22 1 CSV \n", + "89 completeprovenance SSSP datagen-7_5-fb 1 Parquet \n", + "90 completeprovenance WCC cit-Patents 1 ORC \n", + "91 completeprovenance SSSP datagen-7_9-fb 1 CSV-C \n", + "92 completeprovenance PageRank cit-Patents 1 Text-C \n", + "93 completeprovenance WCC datagen-7_5-fb 1 Parquet \n", + "94 completeprovenance PageRank cit-Patents 1 Parquet \n", + "95 completeprovenance BFS graph500-22 1 Object \n", + "96 completeprovenance BFS graph500-22 1 JSON-C \n", + "97 completeprovenance BFS cit-Patents 1 Parquet \n", + "98 completeprovenance BFS datagen-7_5-fb 1 JSON-C \n", + "99 completeprovenance PageRank datagen-7_5-fb 1 CSV \n", + "100 completeprovenance BFS cit-Patents 1 JSON-C \n", + "101 completeprovenance WCC datagen-7_9-fb 1 Avro \n", + "102 completeprovenance BFS datagen-7_9-fb 1 JSON-C \n", + "103 completeprovenance PageRank datagen-7_9-fb 1 Text \n", + "104 completeprovenance BFS datagen-7_5-fb 1 Parquet \n", + "105 completeprovenance BFS cit-Patents 1 CSV \n", + "106 completeprovenance BFS datagen-7_9-fb 1 Parquet \n", + "107 completeprovenance SSSP datagen-7_5-fb 1 Text-C \n", + "108 completeprovenance SSSP datagen-7_5-fb 1 Text \n", + "109 completeprovenance SSSP datagen-7_9-fb 1 Text \n", + "110 completeprovenance PageRank cit-Patents 1 JSON-C \n", + "111 completeprovenance PageRank datagen-7_5-fb 1 JSON \n", + "112 completeprovenance SSSP datagen-7_9-fb 1 Object \n", + "113 completeprovenance WCC datagen-7_5-fb 1 CSV \n", + "114 completeprovenance SSSP datagen-7_5-fb 1 JSON \n", + "115 completeprovenance BFS datagen-7_5-fb 1 CSV-C \n", + "116 completeprovenance BFS cit-Patents 1 Object \n", + "117 completeprovenance SSSP datagen-7_5-fb 1 Object \n", + "\n", + " compressed total_size nr_executors nr_vertices iterations \\\n", + "0 False 58274920 7 633432 29 \n", + "1 False 36196251 7 2396657 3 \n", + "2 False 1632380079 7 1387587 35 \n", + "3 True 457450553 7 1387587 35 \n", + "4 False 135877889 7 1387587 31 \n", + "5 False 864923147 7 1387587 31 \n", + "6 True 170232558 7 1387587 32 \n", + "7 False 941792868 7 3774768 41 \n", + "8 True 68791112 7 633432 30 \n", + "9 True 57549288 7 1387587 13 \n", + "10 False 208169138 7 1387587 13 \n", + "11 False 551180094 7 1387587 32 \n", + "12 False 314712266 7 633432 35 \n", + "13 True 981249822 7 3774768 35 \n", + "14 False 552752499 7 633432 35 \n", + "15 True 194758917 7 633432 35 \n", + "16 True 59736651 7 1387587 13 \n", + "17 False 226822606 7 1387587 32 \n", + "18 False 548177668 7 3774768 43 \n", + "19 True 62370316 7 633432 30 \n", + "20 False 35932527 7 633432 13 \n", + "21 False 21625818 7 2396657 3 \n", + "22 False 324726446 7 1387587 13 \n", + "23 True 158049578 7 1387587 32 \n", + "24 False 82049979 7 1387587 13 \n", + "25 False 3730315659 7 3774768 41 \n", + "26 False 900852018 7 1387587 32 \n", + "27 False 88141246 7 1387587 13 \n", + "28 True 116209136 7 1387587 31 \n", + "29 False 3567433771 7 3774768 43 \n", + "30 False 469735964 7 1387587 13 \n", + "31 False 1100333124 7 3774768 41 \n", + "32 False 565433425 7 3774768 41 \n", + "33 False 871933914 7 633432 35 \n", + "34 False 1128077456 7 1387587 31 \n", + "35 False 487601995 7 633432 29 \n", + "36 False 701125212 7 1387587 35 \n", + "37 False 1589606305 7 3774768 35 \n", + "38 True 49265960 7 633432 29 \n", + "39 True 25012545 7 633432 13 \n", + "40 False 2525597803 7 3774768 43 \n", + "41 False 581855399 7 1387587 31 \n", + "42 True 410716445 7 3774768 41 \n", + "43 True 117407400 7 1387587 31 \n", + "44 False 233134241 7 633432 30 \n", + "45 True 390512385 7 3774768 41 \n", + "46 True 433388860 7 1387587 35 \n", + "47 False 378148169 7 633432 29 \n", + "48 False 654589137 7 1387587 35 \n", + "49 False 213507029 7 633432 13 \n", + "50 False 272126547 7 3774768 43 \n", + "51 True 428773253 7 1387587 35 \n", + "52 False 169444993 7 1387587 32 \n", + "53 False 147234468 7 633432 13 \n", + "54 False 40440808 7 633432 13 \n", + "55 False 2834235312 7 3774768 35 \n", + "56 False 1909994294 7 1387587 35 \n", + "57 True 398055303 7 3774768 43 \n", + "58 True 385629051 7 3774768 43 \n", + "59 False 5183266070 7 3774768 35 \n", + "60 False 689544217 7 1387587 35 \n", + "61 False 236259401 7 633432 29 \n", + "62 False 188742920 7 1387587 13 \n", + "63 False 44691531 7 2396657 3 \n", + "64 True 65163688 7 1387587 13 \n", + "65 False 3966665712 7 3774768 35 \n", + "66 True 192423799 7 633432 35 \n", + "67 False 316673397 7 633432 35 \n", + "68 True 31505964 7 2396657 3 \n", + "69 False 1146723471 7 1387587 35 \n", + "70 False 71897099 7 633432 30 \n", + "71 False 179527558 7 1387587 32 \n", + "72 False 94026180 7 633432 13 \n", + "73 True 28326435 7 633432 13 \n", + "74 True 26006632 7 633432 13 \n", + "75 False 534677441 7 1387587 31 \n", + "76 False 592224379 7 3774768 41 \n", + "77 False 297074263 7 633432 35 \n", + "78 False 256529225 7 633432 29 \n", + "79 False 2051574660 7 3774768 41 \n", + "80 False 2645496912 7 3774768 35 \n", + "81 False 171065610 7 1387587 31 \n", + "82 False 213794112 7 2396657 3 \n", + "83 True 450465794 7 3774768 41 \n", + "84 False 92135619 7 633432 30 \n", + "85 False 72546300 7 633432 29 \n", + "86 False 1137685330 7 3774768 35 \n", + "87 True 205761319 7 633432 35 \n", + "88 False 199414170 7 2396657 3 \n", + "89 False 76433347 7 633432 30 \n", + "90 False 386872327 7 3774768 41 \n", + "91 True 155018101 7 1387587 32 \n", + "92 True 997108236 7 3774768 35 \n", + "93 False 38931680 7 633432 13 \n", + "94 False 1593606785 7 3774768 35 \n", + "95 False 370356939 7 2396657 3 \n", + "96 True 32247729 7 2396657 3 \n", + "97 False 452688486 7 3774768 43 \n", + "98 True 53194680 7 633432 29 \n", + "99 False 521026924 7 633432 35 \n", + "100 True 411310835 7 3774768 43 \n", + "101 False 92261354 7 1387587 13 \n", + "102 True 127350354 7 1387587 31 \n", + "103 False 1216101565 7 1387587 35 \n", + "104 False 61961248 7 633432 29 \n", + "105 False 2351958475 7 3774768 43 \n", + "106 False 143053677 7 1387587 31 \n", + "107 True 63702151 7 633432 30 \n", + "108 False 254670929 7 633432 30 \n", + "109 False 601133226 7 1387587 32 \n", + "110 True 1056694971 7 3774768 35 \n", + "111 False 742730834 7 633432 35 \n", + "112 False 1383979824 7 1387587 32 \n", + "113 False 85158132 7 633432 13 \n", + "114 False 383891057 7 633432 30 \n", + "115 True 48690774 7 633432 29 \n", + "116 False 4470241541 7 3774768 43 \n", + "117 False 596692316 7 633432 30 \n", + "\n", + " duration per_iter nice_size baseline_total_size overhead \\\n", + "0 50.868484 1.754086 55.58MB 256529225 0.227167 \n", + "1 43.212258 14.404086 34.52MB 213794112 0.169304 \n", + "2 124.243249 3.549807 1.52GB 1216101565 1.342306 \n", + "3 156.334777 4.466708 436.26MB 1216101565 0.376161 \n", + "4 104.052758 3.356541 129.58MB 581855399 0.233525 \n", + "5 67.917724 2.190894 824.85MB 581855399 1.486492 \n", + "6 111.011642 3.469114 162.35MB 601133226 0.283186 \n", + "7 200.797959 4.897511 898.16MB 1100333124 0.855916 \n", + "8 59.969305 1.998977 65.60MB 254670929 0.270118 \n", + "9 84.314303 6.485716 54.88MB 208169138 0.276454 \n", + "10 74.173866 5.705682 198.53MB 208169138 1.000000 \n", + "11 78.072813 2.439775 525.65MB 601133226 0.916902 \n", + "12 70.957423 2.027355 300.13MB 552752499 0.569355 \n", + "13 245.728175 7.020805 935.79MB 2834235312 0.346213 \n", + "14 61.612538 1.760358 527.15MB 552752499 1.000000 \n", + "15 89.176345 2.547896 185.74MB 552752499 0.352344 \n", + "16 84.032622 6.464048 56.97MB 208169138 0.286962 \n", + "17 79.608257 2.487758 216.31MB 601133226 0.377325 \n", + "18 110.712451 2.574708 522.78MB 2525597803 0.217049 \n", + "19 60.177288 2.005910 59.48MB 254670929 0.244906 \n", + "20 42.804464 3.292651 34.27MB 94026180 0.382154 \n", + "21 40.428390 13.476130 20.62MB 213794112 0.101153 \n", + "22 89.652158 6.896320 309.68MB 208169138 1.559916 \n", + "23 137.108613 4.284644 150.73MB 601133226 0.262919 \n", + "24 78.462570 6.035582 78.25MB 208169138 0.394151 \n", + "25 197.924420 4.827425 3.47GB 1100333124 3.390169 \n", + "26 97.887644 3.058989 859.12MB 601133226 1.498590 \n", + "27 84.254096 6.481084 84.06MB 208169138 0.423412 \n", + "28 128.829199 4.155781 110.83MB 581855399 0.199722 \n", + "29 107.638374 2.503218 3.32GB 2525597803 1.412511 \n", + "30 83.425914 6.417378 447.98MB 208169138 2.256511 \n", + "31 190.549338 4.647545 1.02GB 1100333124 1.000000 \n", + "32 191.301333 4.665886 539.24MB 1100333124 0.513875 \n", + "33 62.719922 1.791998 831.54MB 552752499 1.577440 \n", + "34 106.630419 3.439691 1.05GB 581855399 1.938759 \n", + "35 41.675332 1.437080 465.01MB 256529225 1.900766 \n", + "36 142.884479 4.082414 668.65MB 1216101565 0.576535 \n", + "37 160.503187 4.585805 1.48GB 2834235312 0.560859 \n", + "38 57.709867 1.989995 46.98MB 256529225 0.192048 \n", + "39 46.118334 3.547564 23.85MB 94026180 0.266017 \n", + "40 101.973519 2.371477 2.35GB 2525597803 1.000000 \n", + "41 61.450592 1.982277 554.90MB 581855399 1.000000 \n", + "42 244.696276 5.968202 391.69MB 1100333124 0.373266 \n", + "43 90.139759 2.907734 111.97MB 581855399 0.201781 \n", + "44 52.042376 1.734746 222.33MB 254670929 0.915433 \n", + "45 231.818350 5.654106 372.42MB 1100333124 0.354904 \n", + "46 165.560627 4.730304 413.31MB 1216101565 0.356376 \n", + "47 48.643720 1.677370 360.63MB 256529225 1.474094 \n", + "48 137.398404 3.925669 624.26MB 1216101565 0.538268 \n", + "49 47.037633 3.618279 203.62MB 94026180 2.270719 \n", + "50 113.815472 2.646871 259.52MB 2525597803 0.107747 \n", + "51 164.005972 4.685885 408.91MB 1216101565 0.352580 \n", + "52 101.735372 3.179230 161.60MB 601133226 0.281876 \n", + "53 43.227769 3.325213 140.41MB 94026180 1.565888 \n", + "54 44.966324 3.458948 38.57MB 94026180 0.430102 \n", + "55 142.736847 4.078196 2.64GB 2834235312 1.000000 \n", + "56 112.681167 3.219462 1.78GB 1216101565 1.570588 \n", + "57 154.327360 3.589008 379.62MB 2525597803 0.157608 \n", + "58 143.495254 3.337099 367.76MB 2525597803 0.152688 \n", + "59 150.139135 4.289690 4.83GB 2834235312 1.828806 \n", + "60 132.752273 3.792922 657.60MB 1216101565 0.567012 \n", + "61 58.527642 2.018195 225.31MB 256529225 0.920984 \n", + "62 84.156374 6.473567 180.00MB 208169138 0.906681 \n", + "63 36.402101 12.134034 42.62MB 213794112 0.209040 \n", + "64 84.266331 6.482025 62.14MB 208169138 0.313032 \n", + "65 156.517652 4.471933 3.69GB 2834235312 1.399554 \n", + "66 96.037768 2.743936 183.51MB 552752499 0.348119 \n", + "67 76.722820 2.192081 302.00MB 552752499 0.572903 \n", + "68 39.143989 13.047996 30.05MB 213794112 0.147366 \n", + "69 128.338321 3.666809 1.07GB 1216101565 0.942950 \n", + "70 52.215042 1.740501 68.57MB 254670929 0.282314 \n", + "71 119.342097 3.729441 171.21MB 601133226 0.298649 \n", + "72 39.382844 3.029450 89.67MB 94026180 1.000000 \n", + "73 48.553854 3.734912 27.01MB 94026180 0.301261 \n", + "74 39.843927 3.064917 24.80MB 94026180 0.276589 \n", + "75 71.025003 2.291129 509.91MB 581855399 0.918918 \n", + "76 190.187893 4.638729 564.79MB 1100333124 0.538223 \n", + "77 77.929319 2.226552 283.31MB 552752499 0.537445 \n", + "78 41.142354 1.418702 244.65MB 256529225 1.000000 \n", + "79 191.091221 4.660761 1.91GB 1100333124 1.864503 \n", + "80 162.602287 4.645780 2.46GB 2834235312 0.933408 \n", + "81 93.661136 3.021327 163.14MB 581855399 0.294000 \n", + "82 42.711168 14.237056 203.89MB 213794112 1.000000 \n", + "83 218.128612 5.320210 429.60MB 1100333124 0.409390 \n", + "84 51.669206 1.722307 87.87MB 254670929 0.361783 \n", + "85 53.117164 1.831626 69.19MB 256529225 0.282799 \n", + "86 223.422605 6.383503 1.06GB 2834235312 0.401408 \n", + "87 90.446040 2.584173 196.23MB 552752499 0.372249 \n", + "88 41.448111 13.816037 190.18MB 213794112 0.932739 \n", + "89 50.267594 1.675586 72.89MB 254670929 0.300126 \n", + "90 200.915941 4.900389 368.95MB 1100333124 0.351596 \n", + "91 91.421126 2.856910 147.84MB 601133226 0.257876 \n", + "92 253.336648 7.238190 950.92MB 2834235312 0.351809 \n", + "93 43.780985 3.367768 37.13MB 94026180 0.414051 \n", + "94 173.286136 4.951032 1.48GB 2834235312 0.562270 \n", + "95 40.123198 13.374399 353.20MB 213794112 1.732307 \n", + "96 39.219499 13.073166 30.75MB 213794112 0.150835 \n", + "97 110.955192 2.580353 431.72MB 2525597803 0.179240 \n", + "98 57.547191 1.984386 50.73MB 256529225 0.207363 \n", + "99 68.511904 1.957483 496.89MB 552752499 0.942604 \n", + "100 134.970226 3.138842 392.26MB 2525597803 0.162857 \n", + "101 77.486517 5.960501 87.99MB 208169138 0.443204 \n", + "102 132.247397 4.266045 121.45MB 581855399 0.218869 \n", + "103 115.157119 3.290203 1.13GB 1216101565 1.000000 \n", + "104 48.867018 1.685070 59.09MB 256529225 0.241537 \n", + "105 117.176385 2.725032 2.19GB 2525597803 0.931248 \n", + "106 105.884096 3.415616 136.43MB 581855399 0.245858 \n", + "107 52.306789 1.743560 60.75MB 254670929 0.250135 \n", + "108 41.157125 1.371904 242.87MB 254670929 1.000000 \n", + "109 92.144127 2.879504 573.29MB 601133226 1.000000 \n", + "110 226.337767 6.466793 1007.74MB 2834235312 0.372832 \n", + "111 70.591457 2.016899 708.32MB 552752499 1.343695 \n", + "112 79.587845 2.487120 1.29GB 601133226 2.302285 \n", + "113 45.861275 3.527790 81.21MB 94026180 0.905685 \n", + "114 46.925169 1.564172 366.11MB 254670929 1.507400 \n", + "115 57.120579 1.969675 46.44MB 256529225 0.189806 \n", + "116 119.315761 2.774785 4.16GB 2525597803 1.769974 \n", + "117 49.207567 1.640252 569.05MB 254670929 2.342993 \n", + "\n", + " overhead_desc \n", + "0 58274920 / 256529225 \n", + "1 36196251 / 213794112 \n", + "2 1632380079 / 1216101565 \n", + "3 457450553 / 1216101565 \n", + "4 135877889 / 581855399 \n", + "5 864923147 / 581855399 \n", + "6 170232558 / 601133226 \n", + "7 941792868 / 1100333124 \n", + "8 68791112 / 254670929 \n", + "9 57549288 / 208169138 \n", + "10 208169138 / 208169138 \n", + "11 551180094 / 601133226 \n", + "12 314712266 / 552752499 \n", + "13 981249822 / 2834235312 \n", + "14 552752499 / 552752499 \n", + "15 194758917 / 552752499 \n", + "16 59736651 / 208169138 \n", + "17 226822606 / 601133226 \n", + "18 548177668 / 2525597803 \n", + "19 62370316 / 254670929 \n", + "20 35932527 / 94026180 \n", + "21 21625818 / 213794112 \n", + "22 324726446 / 208169138 \n", + "23 158049578 / 601133226 \n", + "24 82049979 / 208169138 \n", + "25 3730315659 / 1100333124 \n", + "26 900852018 / 601133226 \n", + "27 88141246 / 208169138 \n", + "28 116209136 / 581855399 \n", + "29 3567433771 / 2525597803 \n", + "30 469735964 / 208169138 \n", + "31 1100333124 / 1100333124 \n", + "32 565433425 / 1100333124 \n", + "33 871933914 / 552752499 \n", + "34 1128077456 / 581855399 \n", + "35 487601995 / 256529225 \n", + "36 701125212 / 1216101565 \n", + "37 1589606305 / 2834235312 \n", + "38 49265960 / 256529225 \n", + "39 25012545 / 94026180 \n", + "40 2525597803 / 2525597803 \n", + "41 581855399 / 581855399 \n", + "42 410716445 / 1100333124 \n", + "43 117407400 / 581855399 \n", + "44 233134241 / 254670929 \n", + "45 390512385 / 1100333124 \n", + "46 433388860 / 1216101565 \n", + "47 378148169 / 256529225 \n", + "48 654589137 / 1216101565 \n", + "49 213507029 / 94026180 \n", + "50 272126547 / 2525597803 \n", + "51 428773253 / 1216101565 \n", + "52 169444993 / 601133226 \n", + "53 147234468 / 94026180 \n", + "54 40440808 / 94026180 \n", + "55 2834235312 / 2834235312 \n", + "56 1909994294 / 1216101565 \n", + "57 398055303 / 2525597803 \n", + "58 385629051 / 2525597803 \n", + "59 5183266070 / 2834235312 \n", + "60 689544217 / 1216101565 \n", + "61 236259401 / 256529225 \n", + "62 188742920 / 208169138 \n", + "63 44691531 / 213794112 \n", + "64 65163688 / 208169138 \n", + "65 3966665712 / 2834235312 \n", + "66 192423799 / 552752499 \n", + "67 316673397 / 552752499 \n", + "68 31505964 / 213794112 \n", + "69 1146723471 / 1216101565 \n", + "70 71897099 / 254670929 \n", + "71 179527558 / 601133226 \n", + "72 94026180 / 94026180 \n", + "73 28326435 / 94026180 \n", + "74 26006632 / 94026180 \n", + "75 534677441 / 581855399 \n", + "76 592224379 / 1100333124 \n", + "77 297074263 / 552752499 \n", + "78 256529225 / 256529225 \n", + "79 2051574660 / 1100333124 \n", + "80 2645496912 / 2834235312 \n", + "81 171065610 / 581855399 \n", + "82 213794112 / 213794112 \n", + "83 450465794 / 1100333124 \n", + "84 92135619 / 254670929 \n", + "85 72546300 / 256529225 \n", + "86 1137685330 / 2834235312 \n", + "87 205761319 / 552752499 \n", + "88 199414170 / 213794112 \n", + "89 76433347 / 254670929 \n", + "90 386872327 / 1100333124 \n", + "91 155018101 / 601133226 \n", + "92 997108236 / 2834235312 \n", + "93 38931680 / 94026180 \n", + "94 1593606785 / 2834235312 \n", + "95 370356939 / 213794112 \n", + "96 32247729 / 213794112 \n", + "97 452688486 / 2525597803 \n", + "98 53194680 / 256529225 \n", + "99 521026924 / 552752499 \n", + "100 411310835 / 2525597803 \n", + "101 92261354 / 208169138 \n", + "102 127350354 / 581855399 \n", + "103 1216101565 / 1216101565 \n", + "104 61961248 / 256529225 \n", + "105 2351958475 / 2525597803 \n", + "106 143053677 / 581855399 \n", + "107 63702151 / 254670929 \n", + "108 254670929 / 254670929 \n", + "109 601133226 / 601133226 \n", + "110 1056694971 / 2834235312 \n", + "111 742730834 / 552752499 \n", + "112 1383979824 / 601133226 \n", + "113 85158132 / 94026180 \n", + "114 383891057 / 254670929 \n", + "115 48690774 / 256529225 \n", + "116 4470241541 / 2525597803 \n", + "117 596692316 / 254670929 " + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "storage_formats_compare_size = merge_compare(dddd, storage_formats, metric=\"total_size\", on=[\"algorithm\", \"dataset\", \"storage_format\"])\n", + "storage_formats_compare_size" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "id": "a5bbc033-22d4-4576-90f1-df5c8e95b2fd", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "warning: some rows have size equal to 0\n", + "warning: some rows have size equal to 0\n", + "warning: some rows have size equal to 0\n", + "warning: some rows have size equal to 0\n" + ] + }, + { + "data": { + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "gray = (178/255, 190/255, 181/255)\n", + "sizes_plot(\n", + " storage_formats_compare_size,\n", + " #palette={\"PageRank\": gray, \"WCC\": gray, \"SSSP\": gray, \"BFS\": gray},\n", + " #legend=False\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "id": "acb72efb-c664-4f30-85ad-47f9a7e60713", + "metadata": {}, + "outputs": [], + "source": [ + "baseline = parse_experiment_output(root_dir / \"data\" / \"das6\" / \"baseline-scaling\")\n", + "#baseline" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "48a0c84c-39f2-4193-a65c-0152a96fb471", + "metadata": {}, + "outputs": [], + "source": [ + "def merge_compare(baseline, rhs, metric=\"duration\", on=[\"algorithm\", \"dataset\"], name=\"overhead\"):\n", + " df = baseline.groupby(by=on).sum(metric).reset_index()\n", + " df.rename(columns={metric: f\"baseline_{metric}\"}, inplace=True)\n", + " dff = pd.merge(rhs, df[on+[f\"baseline_{metric}\"]], on=on)\n", + " dff[name] = dff[metric] / dff[f\"baseline_{metric}\"]\n", + " dff[f\"{name}_desc\"] = [str(a) + \" / \" + str(b) for (a, b) in list(zip(dff[metric], dff[f\"baseline_{metric}\"]))]\n", + " return dff" + ] + }, + { + "cell_type": "markdown", + "id": "8860482e-1498-4499-9493-b0809548a416", + "metadata": {}, + "source": [ + "# Tracing" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "id": "14621e94-1443-4a54-b416-6980ed42a41c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/Users/gm/vu/thesis/code/provxlib/results/data/das6/20240521-022009-tracing\n" + ] + }, + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    configalgorithmdatasetrunstorage_formatcompressedtotal_sizenr_executorsnr_verticesiterationsduration
    0tracingPageRankdatagen-7_9-fb1TextFalse0713875873594.295958
    1tracingPageRankcit-Patents1TextFalse0737747683593.836881
    2tracingBFSdatagen-8_4-fb1TextFalse07380908435211.522415
    3tracingWCCdatagen-8_4-fb1TextFalse07380908413242.255369
    4tracingBFSgraph500-221TextFalse072396657331.800055
    5tracingPageRankdatagen-8_4-fb1TextFalse07380908435302.963450
    6tracingBFScit-Patents1TextFalse0737747684377.243175
    7tracingBFSdatagen-7_9-fb1TextFalse0713875873153.299679
    8tracingWCCdatagen-7_9-fb1TextFalse0713875871369.753705
    9tracingWCCdatagen-7_5-fb1TextFalse076334321341.842698
    10tracingBFSdatagen-7_5-fb1TextFalse076334322945.629640
    11tracingWCCcit-Patents1TextFalse07377476841160.095690
    12tracingSSSPdatagen-8_4-fb1TextFalse07380908436203.459036
    13tracingPageRankgraph500-221TextFalse0723966573591.280116
    14tracingWCCgraph500-221TextFalse0723966571568.993393
    15tracingSSSPdatagen-8_8-zf1TextFalse0716830889322160.900830
    16tracingPageRankdatagen-8_8-zf1TextFalse0716830889335585.657551
    17tracingSSSPdatagen-7_9-fb1TextFalse0713875873258.442954
    18tracingBFSdatagen-8_8-zf1TextFalse0716830889321211.700481
    19tracingSSSPdatagen-7_5-fb1TextFalse076334323035.181077
    20tracingPageRankdatagen-7_5-fb1TextFalse076334323546.563000
    \n", + "
    " + ], + "text/plain": [ + " config algorithm dataset run storage_format compressed \\\n", + "0 tracing PageRank datagen-7_9-fb 1 Text False \n", + "1 tracing PageRank cit-Patents 1 Text False \n", + "2 tracing BFS datagen-8_4-fb 1 Text False \n", + "3 tracing WCC datagen-8_4-fb 1 Text False \n", + "4 tracing BFS graph500-22 1 Text False \n", + "5 tracing PageRank datagen-8_4-fb 1 Text False \n", + "6 tracing BFS cit-Patents 1 Text False \n", + "7 tracing BFS datagen-7_9-fb 1 Text False \n", + "8 tracing WCC datagen-7_9-fb 1 Text False \n", + "9 tracing WCC datagen-7_5-fb 1 Text False \n", + "10 tracing BFS datagen-7_5-fb 1 Text False \n", + "11 tracing WCC cit-Patents 1 Text False \n", + "12 tracing SSSP datagen-8_4-fb 1 Text False \n", + "13 tracing PageRank graph500-22 1 Text False \n", + "14 tracing WCC graph500-22 1 Text False \n", + "15 tracing SSSP datagen-8_8-zf 1 Text False \n", + "16 tracing PageRank datagen-8_8-zf 1 Text False \n", + "17 tracing SSSP datagen-7_9-fb 1 Text False \n", + "18 tracing BFS datagen-8_8-zf 1 Text False \n", + "19 tracing SSSP datagen-7_5-fb 1 Text False \n", + "20 tracing PageRank datagen-7_5-fb 1 Text False \n", + "\n", + " total_size nr_executors nr_vertices iterations duration \n", + "0 0 7 1387587 35 94.295958 \n", + "1 0 7 3774768 35 93.836881 \n", + "2 0 7 3809084 35 211.522415 \n", + "3 0 7 3809084 13 242.255369 \n", + "4 0 7 2396657 3 31.800055 \n", + "5 0 7 3809084 35 302.963450 \n", + "6 0 7 3774768 43 77.243175 \n", + "7 0 7 1387587 31 53.299679 \n", + "8 0 7 1387587 13 69.753705 \n", + "9 0 7 633432 13 41.842698 \n", + "10 0 7 633432 29 45.629640 \n", + "11 0 7 3774768 41 160.095690 \n", + "12 0 7 3809084 36 203.459036 \n", + "13 0 7 2396657 35 91.280116 \n", + "14 0 7 2396657 15 68.993393 \n", + "15 0 7 168308893 22 160.900830 \n", + "16 0 7 168308893 35 585.657551 \n", + "17 0 7 1387587 32 58.442954 \n", + "18 0 7 168308893 21 211.700481 \n", + "19 0 7 633432 30 35.181077 \n", + "20 0 7 633432 35 46.563000 " + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data_dir = Path(\"das6\") / \"20240521-022009-tracing\"\n", + "write_dir = (plot_dir / data_dir)\n", + "write_dir.mkdir(exist_ok=True, parents=True)\n", + "print(root_dir / \"data\" / data_dir)\n", + "tracing = parse_experiment_output(root_dir / \"data\" / data_dir)\n", + "tracing" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "id": "e122d9f2-9298-4410-8c64-7f2b23394aa8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    configalgorithmdatasetrunstorage_formatcompressedtotal_sizenr_executorsnr_verticesiterationsdurationbaseline_durationoverhead
    2tracingBFSdatagen-8_4-fb1TextFalse07380908435211.522415228.8358580.924341
    4tracingBFSgraph500-221TextFalse072396657331.80005533.8338690.939888
    6tracingBFScit-Patents1TextFalse0737747684377.24317581.5902250.946721
    10tracingBFSdatagen-7_5-fb1TextFalse076334322945.62964041.9496471.087724
    18tracingBFSdatagen-8_8-zf1TextFalse0716830889321211.700481194.0968291.090695
    20tracingPageRankdatagen-7_5-fb1TextFalse076334323546.56300044.1269481.055206
    13tracingPageRankgraph500-221TextFalse0723966573591.28011676.2428171.197229
    1tracingPageRankcit-Patents1TextFalse0737747683593.83688176.7184001.223134
    5tracingPageRankdatagen-8_4-fb1TextFalse07380908435302.963450221.6881161.366620
    0tracingPageRankdatagen-7_9-fb1TextFalse0713875873594.29595867.4963281.397053
    17tracingSSSPdatagen-7_9-fb1TextFalse0713875873258.44295483.9557310.696116
    19tracingSSSPdatagen-7_5-fb1TextFalse076334323035.18107743.9685900.800141
    15tracingSSSPdatagen-8_8-zf1TextFalse0716830889322160.900830192.1586780.837333
    12tracingSSSPdatagen-8_4-fb1TextFalse07380908436203.459036229.6549700.885934
    14tracingWCCgraph500-221TextFalse0723966571568.99339374.2474980.929235
    8tracingWCCdatagen-7_9-fb1TextFalse0713875871369.75370570.1408690.994480
    11tracingWCCcit-Patents1TextFalse07377476841160.095690160.4534240.997770
    3tracingWCCdatagen-8_4-fb1TextFalse07380908413242.255369232.6561361.041259
    9tracingWCCdatagen-7_5-fb1TextFalse076334321341.84269833.3872721.253253
    \n", + "
    " + ], + "text/plain": [ + " config algorithm dataset run storage_format compressed \\\n", + "2 tracing BFS datagen-8_4-fb 1 Text False \n", + "4 tracing BFS graph500-22 1 Text False \n", + "6 tracing BFS cit-Patents 1 Text False \n", + "10 tracing BFS datagen-7_5-fb 1 Text False \n", + "18 tracing BFS datagen-8_8-zf 1 Text False \n", + "20 tracing PageRank datagen-7_5-fb 1 Text False \n", + "13 tracing PageRank graph500-22 1 Text False \n", + "1 tracing PageRank cit-Patents 1 Text False \n", + "5 tracing PageRank datagen-8_4-fb 1 Text False \n", + "0 tracing PageRank datagen-7_9-fb 1 Text False \n", + "17 tracing SSSP datagen-7_9-fb 1 Text False \n", + "19 tracing SSSP datagen-7_5-fb 1 Text False \n", + "15 tracing SSSP datagen-8_8-zf 1 Text False \n", + "12 tracing SSSP datagen-8_4-fb 1 Text False \n", + "14 tracing WCC graph500-22 1 Text False \n", + "8 tracing WCC datagen-7_9-fb 1 Text False \n", + "11 tracing WCC cit-Patents 1 Text False \n", + "3 tracing WCC datagen-8_4-fb 1 Text False \n", + "9 tracing WCC datagen-7_5-fb 1 Text False \n", + "\n", + " total_size nr_executors nr_vertices iterations duration \\\n", + "2 0 7 3809084 35 211.522415 \n", + "4 0 7 2396657 3 31.800055 \n", + "6 0 7 3774768 43 77.243175 \n", + "10 0 7 633432 29 45.629640 \n", + "18 0 7 168308893 21 211.700481 \n", + "20 0 7 633432 35 46.563000 \n", + "13 0 7 2396657 35 91.280116 \n", + "1 0 7 3774768 35 93.836881 \n", + "5 0 7 3809084 35 302.963450 \n", + "0 0 7 1387587 35 94.295958 \n", + "17 0 7 1387587 32 58.442954 \n", + "19 0 7 633432 30 35.181077 \n", + "15 0 7 168308893 22 160.900830 \n", + "12 0 7 3809084 36 203.459036 \n", + "14 0 7 2396657 15 68.993393 \n", + "8 0 7 1387587 13 69.753705 \n", + "11 0 7 3774768 41 160.095690 \n", + "3 0 7 3809084 13 242.255369 \n", + "9 0 7 633432 13 41.842698 \n", + "\n", + " baseline_duration overhead \n", + "2 228.835858 0.924341 \n", + "4 33.833869 0.939888 \n", + "6 81.590225 0.946721 \n", + "10 41.949647 1.087724 \n", + "18 194.096829 1.090695 \n", + "20 44.126948 1.055206 \n", + "13 76.242817 1.197229 \n", + "1 76.718400 1.223134 \n", + "5 221.688116 1.366620 \n", + "0 67.496328 1.397053 \n", + "17 83.955731 0.696116 \n", + "19 43.968590 0.800141 \n", + "15 192.158678 0.837333 \n", + "12 229.654970 0.885934 \n", + "14 74.247498 0.929235 \n", + "8 70.140869 0.994480 \n", + "11 160.453424 0.997770 \n", + "3 232.656136 1.041259 \n", + "9 33.387272 1.253253 " + ] + }, + "execution_count": 74, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tracing_compare = merge_compare(baseline_scaling, tracing, metric=\"duration\")\n", + "tracing_compare = tracing_compare[(tracing_compare[\"overhead\"] < 2.0) & (tracing_compare[\"overhead\"] > 0.6)]\n", + "#len(tracing_compare)\n", + "#tracing_compare = tracing_compare[tracing_compare[\"overhead\"] > 0.95]\n", + "#tracing_compare.groupby([\"algorithm\"])[\"overhead\"].median()\n", + "tracing_compare.sort_values(by=[\"algorithm\", \"overhead\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "id": "a7907d88", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    stdminmedianmax
    algorithm
    PageRank0.141.061.221.40
    WCC0.120.931.001.25
    BFS0.080.920.951.09
    SSSP0.080.700.820.89
    \n", + "
    " + ], + "text/plain": [ + " std min median max\n", + "algorithm \n", + "PageRank 0.14 1.06 1.22 1.40\n", + "WCC 0.12 0.93 1.00 1.25\n", + "BFS 0.08 0.92 0.95 1.09\n", + "SSSP 0.08 0.70 0.82 0.89" + ] + }, + "execution_count": 81, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tracing_desc = tracing_compare.groupby([\"algorithm\"])[\"overhead\"].describe().drop([\"count\", \"mean\", \"25%\", \"75%\"], axis=1).rename(columns={\"50%\": \"median\"}).round(2)\n", + "for column in [\"std\", \"min\", \"median\", \"max\"]:\n", + " tracing_desc[column] = tracing_desc[column].apply(lambda x: f'{x:01.2f}')\n", + "tracing_desc.sort_values(by=[\"median\"], ascending=False, inplace=True)\n", + "tracing_desc.to_csv(write_dir / \"desc.csv\")\n", + "tracing_desc" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "id": "2b797134-ed63-4889-b81e-a79168b92c9f", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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brJfVVXuuusu6uvrefLJJy+61c/NzY2//OUv3HnnnWRmZrJs2TIeffRRwN4ym5OTA8Cjjz7aLFzGx8dTXV0NnP+W96VydbW38Nxzzz18++23pKens2TJEv74xz+2yesL0Rpubm64ubk1GWR3LiaTicLCQoqKiigoKCA/P5/8/Hzy8vLIy8+nobSk2XNsLh7YjPY5MG1GX1Q3P2xuPqDRNj+B6Bq0LpijxtI9OgWIDs1Sj6am2D4HZk0J2ppSlIbqJofodHqiekTSo0cPoqKimsyDqdfrSU9Pd1LxXThgnpl38vvvv2fq1KmOW8NlZWU89dRTjonL6+vrHc+55557eO6553jppZdYvny5Y7L206dP89RTTzXrv+nm5satt97K+++/z29+8xuWLFnieI7VamXJkiXs37/fcRv7UowePZobb7yRNWvW8O9//5t58+YRHR2Nh4cHer0es9nMli1buOaaaxzPOXz4ML///e8dX599bW1Bp9PxyiuvcPPNN7NixQrmzp3LqFGj2vQcQrQXo9FI7969z9ldxWazUVJSQm5uLidOnHCs5nP8+HFKSnKhIvengxUNVjcfbEZ/+4o+7gHYjP7S2imEaDlVdUwvpKkqsn+sq2hySEBAAP36DaVPnz706dOHXr16ER4ejk537ih3ZpYNZ+myAfOee+4hISGBNWvWEBcXR9++famoqCAxMZGGhgb69u1LVlZWk3WFFy1axK5du/juu++46qqrGDNmDK6urhw4cACbzYafnx9lZWVN/jGfeOIJMjIy2L17N1dddRVDhgzBz8+P1NRU8vPzMRgMvP322y1azeepp55i27ZtFBcX88ILL/Dxxx9jMBi44447WL58Ob///e9ZtWoVQUFB5OXlkZKSgpubGxEREZw8ebLZmsltISYmhjvvvJMPPviAZ599lq+++gqDQfrbiM5No9EQFBREUFAQI0c2ncOvqqrKsR55dnY2R44cITs7m9qSLCg5M7WXgs3NB6tHoD1wegRhc/ODDrZ0mxCi41Dqq9BW5qM9XYC2qmmXDKPRyODRoxk0aBADBw5kwIABnW5hky4bMGfNmsWHH37I0qVLyczM5IcffsDHx4fJkydz11134e3tzbXXXsvWrVt59tln0Wg0KIrCkiVLGD16NJ999hkHDhxAr9czfvx4nnjiCR577DHKysrw9PR0nMfFxYX/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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "order = tracing_compare.groupby(by=[\"algorithm\"])[\"overhead\"].median().sort_values(ascending=False).index\n", + "b = sns.violinplot(data=tracing_compare, x=\"overhead\", y=\"algorithm\", hue=\"algorithm\", palette=algorithm_colors, order=order)\n", + "b.set_xlabel(\"Overhead (vs. baseline)\")\n", + "b.set_ylabel(\"Algorithms\")\n", + "b.patch.set_alpha(0.)\n", + "\n", + "plt.savefig(write_dir / \"overhead.pdf\", bbox_inches='tight')" + ] + }, + { + "cell_type": "markdown", + "id": "90d72d81-dbf6-4787-a307-118d34d6acda", + "metadata": {}, + "source": [ + "# Provenance graph pruning (`joinVertices` op only)" + ] + }, + { + "cell_type": "code", + "execution_count": 163, + "id": "454b96e8-d3b4-46eb-9c55-80ef8e385cbe", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    configalgorithmdatasetrunstorage_formatcompressedtotal_sizenr_executorsnr_verticesiterationsduration
    8provenancegraphpruningBFScit-Patents1TextFalse21863872757377476843112.801936
    11provenancegraphpruningBFSdatagen-7_5-fb1TextFalse18992220276334322945.458680
    2provenancegraphpruningBFSdatagen-7_9-fb1TextFalse435702119713875873192.726787
    20provenancegraphpruningBFSdatagen-8_4-fb1TextFalse15270099887380908435270.010840
    5provenancegraphpruningBFSdatagen-8_8-zf1TextFalse15081382026716830889321321.979103
    1provenancegraphpruningBFSgraph500-221TextFalse072396657334.608081
    3provenancegraphpruningPageRankcit-Patents1TextFalse0737747683584.410510
    13provenancegraphpruningPageRankdatagen-7_5-fb1TextFalse076334323542.430770
    7provenancegraphpruningPageRankdatagen-7_9-fb1TextFalse0713875873566.426430
    18provenancegraphpruningPageRankdatagen-8_4-fb1TextFalse07380908435203.860126
    19provenancegraphpruningPageRankdatagen-8_8-zf1TextFalse0716830889335251.991824
    6provenancegraphpruningPageRankgraph500-221TextFalse0723966573577.998257
    12provenancegraphpruningSSSPdatagen-7_5-fb1TextFalse19373252176334323045.962457
    0provenancegraphpruningSSSPdatagen-7_9-fb1TextFalse467315962713875873277.736612
    10provenancegraphpruningSSSPdatagen-8_4-fb1TextFalse14983353027380908436284.902099
    9provenancegraphpruningSSSPdatagen-8_8-zf1TextFalse-1581072810716830889322310.161894
    4provenancegraphpruningWCCcit-Patents1TextFalse9651328607377476841210.021617
    14provenancegraphpruningWCCdatagen-7_5-fb1TextFalse5842503276334321341.804323
    17provenancegraphpruningWCCdatagen-7_9-fb1TextFalse129855334713875871372.653872
    15provenancegraphpruningWCCdatagen-8_4-fb1TextFalse3644435977380908413246.208282
    16provenancegraphpruningWCCgraph500-221TextFalse184374609723966571576.101267
    \n", + "
    " + ], + "text/plain": [ + " config algorithm dataset run storage_format \\\n", + "8 provenancegraphpruning BFS cit-Patents 1 Text \n", + "11 provenancegraphpruning BFS datagen-7_5-fb 1 Text \n", + "2 provenancegraphpruning BFS datagen-7_9-fb 1 Text \n", + "20 provenancegraphpruning BFS datagen-8_4-fb 1 Text \n", + "5 provenancegraphpruning BFS datagen-8_8-zf 1 Text \n", + "1 provenancegraphpruning BFS graph500-22 1 Text \n", + "3 provenancegraphpruning PageRank cit-Patents 1 Text \n", + "13 provenancegraphpruning PageRank datagen-7_5-fb 1 Text \n", + "7 provenancegraphpruning PageRank datagen-7_9-fb 1 Text \n", + "18 provenancegraphpruning PageRank datagen-8_4-fb 1 Text \n", + "19 provenancegraphpruning PageRank datagen-8_8-zf 1 Text \n", + "6 provenancegraphpruning PageRank graph500-22 1 Text \n", + "12 provenancegraphpruning SSSP datagen-7_5-fb 1 Text \n", + "0 provenancegraphpruning SSSP datagen-7_9-fb 1 Text \n", + "10 provenancegraphpruning SSSP datagen-8_4-fb 1 Text \n", + "9 provenancegraphpruning SSSP datagen-8_8-zf 1 Text \n", + "4 provenancegraphpruning WCC cit-Patents 1 Text \n", + "14 provenancegraphpruning WCC datagen-7_5-fb 1 Text \n", + "17 provenancegraphpruning WCC datagen-7_9-fb 1 Text \n", + "15 provenancegraphpruning WCC datagen-8_4-fb 1 Text \n", + "16 provenancegraphpruning WCC graph500-22 1 Text \n", + "\n", + " compressed total_size nr_executors nr_vertices iterations duration \n", + "8 False 2186387275 7 3774768 43 112.801936 \n", + "11 False 189922202 7 633432 29 45.458680 \n", + "2 False 435702119 7 1387587 31 92.726787 \n", + "20 False 1527009988 7 3809084 35 270.010840 \n", + "5 False 15081382026 7 168308893 21 321.979103 \n", + "1 False 0 7 2396657 3 34.608081 \n", + "3 False 0 7 3774768 35 84.410510 \n", + "13 False 0 7 633432 35 42.430770 \n", + "7 False 0 7 1387587 35 66.426430 \n", + "18 False 0 7 3809084 35 203.860126 \n", + "19 False 0 7 168308893 35 251.991824 \n", + "6 False 0 7 2396657 35 77.998257 \n", + "12 False 193732521 7 633432 30 45.962457 \n", + "0 False 467315962 7 1387587 32 77.736612 \n", + "10 False 1498335302 7 3809084 36 284.902099 \n", + "9 False -1581072810 7 168308893 22 310.161894 \n", + "4 False 965132860 7 3774768 41 210.021617 \n", + "14 False 58425032 7 633432 13 41.804323 \n", + "17 False 129855334 7 1387587 13 72.653872 \n", + "15 False 364443597 7 3809084 13 246.208282 \n", + "16 False 184374609 7 2396657 15 76.101267 " + ] + }, + "execution_count": 163, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data_dir = Path(\"das6\") / \"20240521-081524-provenancegraphpruning\"\n", + "joinVertices = parse_experiment_output(root_dir / \"data\" / data_dir)\n", + "joinVertices.sort_values(by=[\"algorithm\", \"dataset\", \"storage_format\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 164, + "id": "62f56cb6-7cd1-4001-809e-9dc96a2c40e2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    configalgorithmdatasetrunstorage_formatcompressedtotal_sizenr_executorsnr_verticesiterationsdurationbaseline_durationoverhead
    6provenancegraphpruningBFScit-Patents1TextFalse21863872757377476843112.801936101.9735191.106189
    7provenancegraphpruningBFSdatagen-7_5-fb1TextFalse18992220276334322945.45868041.1423541.104912
    2provenancegraphpruningBFSdatagen-7_9-fb1TextFalse435702119713875873192.72678761.4505921.508965
    1provenancegraphpruningBFSgraph500-221TextFalse072396657334.60808142.7111680.810282
    3provenancegraphpruningPageRankcit-Patents1TextFalse0737747683584.410510142.7368470.591372
    9provenancegraphpruningPageRankdatagen-7_5-fb1TextFalse076334323542.43077061.6125380.688671
    5provenancegraphpruningPageRankdatagen-7_9-fb1TextFalse0713875873566.426430115.1571190.576833
    8provenancegraphpruningSSSPdatagen-7_5-fb1TextFalse19373252176334323045.96245741.1571251.116756
    0provenancegraphpruningSSSPdatagen-7_9-fb1TextFalse467315962713875873277.73661292.1441270.843642
    4provenancegraphpruningWCCcit-Patents1TextFalse9651328607377476841210.021617190.5493381.102190
    10provenancegraphpruningWCCdatagen-7_5-fb1TextFalse5842503276334321341.80432339.3828441.061486
    11provenancegraphpruningWCCdatagen-7_9-fb1TextFalse129855334713875871372.65387274.1738660.979508
    \n", + "
    " + ], + "text/plain": [ + " config algorithm dataset run storage_format \\\n", + "6 provenancegraphpruning BFS cit-Patents 1 Text \n", + "7 provenancegraphpruning BFS datagen-7_5-fb 1 Text \n", + "2 provenancegraphpruning BFS datagen-7_9-fb 1 Text \n", + "1 provenancegraphpruning BFS graph500-22 1 Text \n", + "3 provenancegraphpruning PageRank cit-Patents 1 Text \n", + "9 provenancegraphpruning PageRank datagen-7_5-fb 1 Text \n", + "5 provenancegraphpruning PageRank datagen-7_9-fb 1 Text \n", + "8 provenancegraphpruning SSSP datagen-7_5-fb 1 Text \n", + "0 provenancegraphpruning SSSP datagen-7_9-fb 1 Text \n", + "4 provenancegraphpruning WCC cit-Patents 1 Text \n", + "10 provenancegraphpruning WCC datagen-7_5-fb 1 Text \n", + "11 provenancegraphpruning WCC datagen-7_9-fb 1 Text \n", + "\n", + " compressed total_size nr_executors nr_vertices iterations duration \\\n", + "6 False 2186387275 7 3774768 43 112.801936 \n", + "7 False 189922202 7 633432 29 45.458680 \n", + "2 False 435702119 7 1387587 31 92.726787 \n", + "1 False 0 7 2396657 3 34.608081 \n", + "3 False 0 7 3774768 35 84.410510 \n", + "9 False 0 7 633432 35 42.430770 \n", + "5 False 0 7 1387587 35 66.426430 \n", + "8 False 193732521 7 633432 30 45.962457 \n", + "0 False 467315962 7 1387587 32 77.736612 \n", + "4 False 965132860 7 3774768 41 210.021617 \n", + "10 False 58425032 7 633432 13 41.804323 \n", + "11 False 129855334 7 1387587 13 72.653872 \n", + "\n", + " baseline_duration overhead \n", + "6 101.973519 1.106189 \n", + "7 41.142354 1.104912 \n", + "2 61.450592 1.508965 \n", + "1 42.711168 0.810282 \n", + "3 142.736847 0.591372 \n", + "9 61.612538 0.688671 \n", + "5 115.157119 0.576833 \n", + "8 41.157125 1.116756 \n", + "0 92.144127 0.843642 \n", + "4 190.549338 1.102190 \n", + "10 39.382844 1.061486 \n", + "11 74.173866 0.979508 " + ] + }, + "execution_count": 164, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "joinVertices_compare_duration = merge_compare(storage_baseline, joinVertices, metric=\"duration\")\n", + "# joinVertices_compare_duration = joinVertices_compare_duration[joinVertices_compare_duration[\"algorithm\"] != \"PageRank\"]\n", + "#joinVertices_compare_duration = joinVertices_compare_duration[joinVertices_compare_duration[\"total_size\"] != 0]\n", + "joinVertices_compare_duration.sort_values(by=[\"algorithm\", \"dataset\", \"storage_format\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 166, + "id": "32868cee-75e3-4498-91db-88bc9314fa05", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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MImIiIhIVAyYRERERCQqBkwiIiIiEhUDJhERERGJigGTiIiIiETFgElEREREomLAJCIiIiJRMWASERERkah0tV0AEREVbdEAAEHLVSjqKDz1aCL644sQFQkMmEREpBFzc3MY6OvDUy7XdikqPLVdQAEZ6OvD3Nxc22UQFQgDJhERacTKygo7d+1CfHy8tksp0lJSUhAcHAw7OzsYGhrC3NwcVlZW2i6LqEAYMImISGNWVlYMQwWUnJyM9PR01KhRA8bGxtouh0gUvMmHiIiIiETFgElEREREomLAJCIiIiJRMWASERERkagYMImIiIhIVAyYRERERCQqBkwiIiIiEhUDJhERERGJigGTiIiIiETFgElEREREomLAJCIiIiJRMWASERERkagYMImIiIhIVAyYRERERCQqXW0XQERERUNUVBTi4+M/e7vm5uawsrL67O0SkeYYMImI6KOioqIweNAgpMrln71tA3197Ny1iyGTqAhhwCQioo+Kj49HqlyO7x3fwtoko8Dbi3irgw0PTfG9YxKsTTJzWU6KDQ/ft8+ASVR0MGASEVGeWZtkwK50wQPmf9vLFHV7RFQ48CYfIiIiIhIVAyYRERERiYoBk4iIiIhExYBJRERERKJiwCQiIiIiUTFgEhEREZGoGDCJiIiISFQMmEREREQkKgZMIiIiIhIVAyYRERERiYoBk4iIiIhExYBJRERERKJiwCQiIiIiUTFgEhEREZGoGDCJiIiISFQMmERExVR8fLy2S/hsStK+EhUFDJhERMVQREQEunfvjoiICG2X8smVpH0lKioYMImIiqHExERkZmYiMTFR26V8ciVpX4mKCgZMIiIiIhIVAyYRERERiYoBk4iIiIhExYBJRERERKJiwCQiIiIiUel+qg0HBAQgMzMTNWrUgK7uJ2uGiIiIiAqZAiW/t2/fYvfu3TA3N0efPn0AAFFRURg9ejQeP34MAKhYsSKWLFmCRo0aFbxaIiIiIir0ND5F/vbtW/Tv3x/Lly/HpUuXlNPnzp0Lf39/CIIAQRAQERGBkSNH4uXLl6IUTERERESFm8YBc9euXQgKCoKFhQVatWoF4H3v5cWLFyGRSLB8+XLcuHED3bt3x7t377B582bRiiYiIiKiwkvjgHn27Fno6Ojgr7/+Up4ev3DhAgRBgKOjI7p06QJzc3PMnj0bRkZGuHLl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99/neIrcx8cHU6ZMUZkml8sRFhYGf39/CIKApk2bYvjw4WIcKiLRhYaGlsi2CyO+FkQlj0RQJEENJCYm4tChQ9i3bx+Cg4MBQBksa9Sogf79++Prr78u8cPYpKam4sqVK7h27Rp8fHwQGBiIzMxM5fy2bdti1apV0NfXz7auIAjw9fXFpUuX4OPjAz8/P6Smpirn29raYtu2bahYsaLatoODg3HhwgXcvHkTvr6+iI+PV84zNjbGunXrVE6z5zYOpoGBAczMzODg4IBOnTqhZ8+ekEql+T0cAID79+8DAJydnTVaXyzJycnw9/dHrVq1OKanFnyK4x8QEIARI0aIsq2CymifAVhoqfE4QHpGWihqKAz++OMPODg4aLsMtfg5pF08/vmT19/fGvVg+vn5Yc+ePfjnn3+QmpqqDJXGxsZITk6GlZUVjh07psmmiyUDAwO0a9cO7dq1AwAkJCTg5s2bOHjwIM6fP49z585h/fr1mDhxYrZ1JRIJ6tevj/r16wN434t47949nDhxAgcPHkRoaCgmT56M3bt3q23bzs4OdnZ2GDZsGARBQGBgIM6ePYudO3ciJiYG48ePx9mzZ2Fubq6yXo8ePXIcpoioKJg1axZsbW210nZoaCgWLFiglbYLI74WRCVPngNmcnIyjh07hn379sHf3x/A+941qVSKZs2a4auvvkL79u3h4uJS4q63VOfx48eIi4tDgwYNsvVMli5dGh06dECHDh2watUqrF+/HkeOHFEGzBcvXiAyMhK2trawtLRUWVdfXx+NGjVCo0aN0KlTJwwbNgy3b99GWFgYbGxsEBsbi9DQUJiamma7MUgikcDBwQEODg7o3bs3evTogdevX+Ps2bPo1avXJz0eRJ+bra1toe2xKmn4WhCVPDp5WWjevHlo2bIl5s2bh0ePHkEQBDg7O2PmzJm4fPky/vjjD3Tr1g1GRkafut4i47vvvoO7uzsePHiQ63KKMSiznrpetmwZBg8erBzPMieurq6wsbFRWf/UqVPo378/Fi9enOu6lpaWaN26dba2iYiIiAoqTwFz7969SE5ORt26dfHDDz/g33//xf79+zF06FCUKVPmU9dYJCme871t27Zcl3v27BkAqHy7b9iwIQBg//79ePv2bY7rJiQk4PXr19DX14ednZ1Kuzdu3MDjx4/z3TYRERFRQeUpYCqEhITA19cX165dQ3R09KeqqVgYM2YMDAwMcPLkSfz4449qj5evr6/yCTxZ78bu1asXbGxsEB4eDnd3dzx69CjbuhEREfjf//6H5ORkDBgwQHkjlUwmQ9euXZGRkYHhw4fjzJkz+PA+rrdv32LRokW4c+cOHB0d0bx5czF3nYiIiEq4PF2D+dtvv+HQoUO4ceMGzp8/jwsXLsDDwwONGzfG119/jQ4dOmR7nGFJV7NmTaxZswZTp06Fl5cXjh49CkdHR1hbWyM9PR1Pnz5FSEgIdHV1MX36dOVjIgHA0NAQW7ZswahRo+Dn54cePXqgatWqqFatGvT09BAREYFHjx4hIyMDXbp0wdSpU1XaXrRoEVJSUnDmzBmMHTsWZcuWRe3atWFqaoqYmBjcv38f7969g0wmK/Bz5omIiIg+lKeA2bVrV3Tt2hWRkZE4ePAgvLy88OLFC1y/fh03btzA/Pnz0bZtW3Tr1u1T11ukuLm54fTp09i3bx+uXLmCkJAQBAQEQFdXFxUqVMDgwYMxYMCAbI96BAAbGxscPXoUXl5euHDhAh49eoQbN24gPT0d5cqVwxdffIEePXqgZcuW2dY1MDDAunXrcPXqVZw4cQJ37tzBvXv38O7dO5ibm6NBgwbKYYZ0dT/pw5yIiIioBMpXuqhYsSLGjRuHcePG4caNG/D09MSZM2fw7t07/P333/j7778BAO/evcOjR49Qu3btT1J0UWJubo5Ro0Zh1KhR+V5XV1cXvXv3Ru/evTVqu3nz5vk+/T1+/HiMHz9eo/aIiIiIgAI8yadp06Zo2rQpkpKScPz4cRw6dAh+fn4A3t980qtXLzg4OKBXr17o1q1btnEWiYiIiKh4ytdNPuqYmpqif//+2L9/P44fPw53d3eUKVMGgiDg8ePHWLRoEVq1aqV2EHEiIiIiKn4KHDCzql69OqZPn46LFy9i7dq1aNOmDaRSKeRyOU6dOiVmU0RERERUSH2SOzx0dXXRvn17tG/fHq9fv8bhw4dx+PDhT9EUERERERUyovZgqlOuXDmMGDFCeQMQERERERVvnzxgEhEREVHJwoBJRERERKJiwCQiIiIiUTFgEhEREZGoGDCJqFgpVaoUdHR0UKpUKW2XQoUA3w9E2sEHURNRsWJtbQ0vLy8+PYwA8P1ApC3swSSiYodhgrLi+4Ho82PAJCIiIiJRMWASERERkagYMImIiIhIVAyYRERERCQqBkwiIiIiEhUDJhERERGJigGTiIiIiETFgElEREREomLAJCIiIiJRMWASERERkagYMImIiIhIVAyYRERERCQqBkwiIiIiEhUDJhERERGJigGTiIiIiESlq+0CiIiKK0mCBAIE7TSe8MHfWiBJkGivcSLSKgZMIiKRmZubQ99AH/Jbcm2XAuktqVbb1zfQh7m5uVZrIKLPjwGTiEhkVlZW2LVzF+Lj47VdykelpKQgODgYdnZ2MDQ0FH375ubmsLKyEn27RFS4MWASEX0CVlZWRSJYJScnIz09HTVq1ICxsbG2yyGiYoI3+RARERGRqBgwiYiIiEhUDJhEREREJCoGTCIiIiISFQMmEREREYmKAZOIiIiIRMWASURERESiYsAkIiIiIlExYBIRERGRqBgwiYiIiEhUDJhEREREJCoGTCIiIiISFQMmEREREYmKAZOIiIiIRKWr7QKIPrWoqCjEx8ernZeSkoKwsDDo6urC0NCwwG2Zm5vDysqqwNshIiIqyhgwqViLiorCoEGDIZenfpb29PUNsGvXToZMIiIq0RgwqViLj4+HXJ6KFPvWAADDpxeQYt8agpG56G1J3sUDTy8gPj6eAZOIiEo0BkwqEbIGSsHIHJkm5URvgxc0ExERvcffiUREREQkKgZMIiIiIhIVAyYRERERiYoBk4iIiIhExYBJRERERKJiwCQiIiIiUTFgEhEREZGoGDCJiIiISFQMmEREREQkKgZMIiIiIhIVAyYRERERiYoBk4iIiIhExYBJRERERKJiwCQiIiIiUTFgEhEREZGoGDCp2ImPj9d2CZ9Ecd0vIiIqfhgwqViJiIhA9+7dERERoe1SRFVc94uIiIonBkwqVhITE5GZmYnExERtlyKq4rpfRERUPDFgEhEREZGoGDCJiIiISFQMmEREREQkKgZMIiIiIhIVAyYRERERiYoBk4iIiIhExYBJRERERKJiwCQiIiIiUelqu4CPuXnzJoYOHap2nlQqhZGREaytrdG0aVMMGzYM1tbWn7nC/BsyZAhu3bqV43wDAwOUK1cOTk5O+Pbbb1GvXr3PV1wWDg4OAABvb2+ULl1aKzUQERFR0VPoA6aCsbEx2rVrpzItMzMTb9++xd27d7F9+3YcOXIEW7duRe3atbVUZf64uLigcuXKKtMEQcCrV6/g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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "order = joinVertices_compare_duration.groupby(by=[\"algorithm\"])[\"overhead\"].median().sort_values(ascending=False).index\n", + "b = sns.boxplot(data=joinVertices_compare_duration, x=\"overhead\", y=\"algorithm\", hue=\"algorithm\", palette=algorithm_colors, order=order)\n", + "b.set_xlabel(\"Overhead (duration with text format)\")\n", + "b.set_ylabel(\"Algorithms\")\n", + "write_dir = (plot_dir / data_dir)\n", + "write_dir.mkdir(exist_ok=True, parents=True)\n", + "plt.savefig(write_dir / \"overhead-duration.pdf\", bbox_inches='tight')" + ] + }, + { + "cell_type": "code", + "execution_count": 167, + "id": "842777a1-586a-4049-a879-d0c9de5b751f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    configalgorithmdatasetrunstorage_formatcompressedtotal_sizenr_executorsnr_verticesiterationsdurationbaseline_total_sizeoverhead
    6provenancegraphpruningBFScit-Patents1TextFalse21863872757377476843112.80193625255978030.865691
    7provenancegraphpruningBFSdatagen-7_5-fb1TextFalse18992220276334322945.4586802565292250.740353
    2provenancegraphpruningBFSdatagen-7_9-fb1TextFalse435702119713875873192.7267875818553990.748815
    1provenancegraphpruningBFSgraph500-221TextFalse072396657334.6080812137941120.000000
    3provenancegraphpruningPageRankcit-Patents1TextFalse0737747683584.41051028342353120.000000
    9provenancegraphpruningPageRankdatagen-7_5-fb1TextFalse076334323542.4307705527524990.000000
    5provenancegraphpruningPageRankdatagen-7_9-fb1TextFalse0713875873566.42643012161015650.000000
    8provenancegraphpruningSSSPdatagen-7_5-fb1TextFalse19373252176334323045.9624572546709290.760717
    0provenancegraphpruningSSSPdatagen-7_9-fb1TextFalse467315962713875873277.7366126011332260.777392
    4provenancegraphpruningWCCcit-Patents1TextFalse9651328607377476841210.02161711003331240.877128
    10provenancegraphpruningWCCdatagen-7_5-fb1TextFalse5842503276334321341.804323940261800.621370
    11provenancegraphpruningWCCdatagen-7_9-fb1TextFalse129855334713875871372.6538722081691380.623797
    \n", + "
    " + ], + "text/plain": [ + " config algorithm dataset run storage_format \\\n", + "6 provenancegraphpruning BFS cit-Patents 1 Text \n", + "7 provenancegraphpruning BFS datagen-7_5-fb 1 Text \n", + "2 provenancegraphpruning BFS datagen-7_9-fb 1 Text \n", + "1 provenancegraphpruning BFS graph500-22 1 Text \n", + "3 provenancegraphpruning PageRank cit-Patents 1 Text \n", + "9 provenancegraphpruning PageRank datagen-7_5-fb 1 Text \n", + "5 provenancegraphpruning PageRank datagen-7_9-fb 1 Text \n", + "8 provenancegraphpruning SSSP datagen-7_5-fb 1 Text \n", + "0 provenancegraphpruning SSSP datagen-7_9-fb 1 Text \n", + "4 provenancegraphpruning WCC cit-Patents 1 Text \n", + "10 provenancegraphpruning WCC datagen-7_5-fb 1 Text \n", + "11 provenancegraphpruning WCC datagen-7_9-fb 1 Text \n", + "\n", + " compressed total_size nr_executors nr_vertices iterations duration \\\n", + "6 False 2186387275 7 3774768 43 112.801936 \n", + "7 False 189922202 7 633432 29 45.458680 \n", + "2 False 435702119 7 1387587 31 92.726787 \n", + "1 False 0 7 2396657 3 34.608081 \n", + "3 False 0 7 3774768 35 84.410510 \n", + "9 False 0 7 633432 35 42.430770 \n", + "5 False 0 7 1387587 35 66.426430 \n", + "8 False 193732521 7 633432 30 45.962457 \n", + "0 False 467315962 7 1387587 32 77.736612 \n", + "4 False 965132860 7 3774768 41 210.021617 \n", + "10 False 58425032 7 633432 13 41.804323 \n", + "11 False 129855334 7 1387587 13 72.653872 \n", + "\n", + " baseline_total_size overhead \n", + "6 2525597803 0.865691 \n", + "7 256529225 0.740353 \n", + "2 581855399 0.748815 \n", + "1 213794112 0.000000 \n", + "3 2834235312 0.000000 \n", + "9 552752499 0.000000 \n", + "5 1216101565 0.000000 \n", + "8 254670929 0.760717 \n", + "0 601133226 0.777392 \n", + "4 1100333124 0.877128 \n", + "10 94026180 0.621370 \n", + "11 208169138 0.623797 " + ] + }, + "execution_count": 167, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "joinVertices_compare_size = merge_compare(storage_baseline, joinVertices, metric=\"total_size\")\n", + "# joinVertices_compare_size = joinVertices_compare_size[joinVertices_compare_size[\"algorithm\"] != \"PageRank\"]\n", + "joinVertices_compare_size.sort_values(by=[\"algorithm\", \"dataset\", \"storage_format\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 168, + "id": "85102c2f-6789-44c3-8a4f-f1aaeb3596f2", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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TUVgYCCCg4OhpaWFmTNnol27duK6enp62LlzJ0aPHg1vb2/06NEDVapUQdWqVaGtrY3w8HD4+voiLS0NXbp0wfTp01X2vWzZMiQnJ+PSpUsYN24cSpcujVq1asHIyAjR0dH477//8P79e8jlcmzevPmzTwsiIiIiyi0GzHzUsmVLXLx4EYcPH8atW7cQHBwMf39/aGlpoXz58hg0aBD69++f6VGPAFCpUiWcOnUKrq6uuHbtGnx9fXHv3j2kpqaiTJky6NSpE3r06IHmzZtnWldXVxcbN27E7du3cfbsWXh4eMDLywvv37+HiYkJ6tWrJw4zpKXFtwARERFJi+kin5mYmGD06NEYPXp0rtfV0tJC79690bt3b7X27eTklOvL3xMmTMCECRPU2h8RERERwD6YRERERCQxBkwiIiIikhQDJhERERFJigGTiIiIiCTFgElEREREkmLAJCIiIiJJMWASERERkaQYMImIiIhIUgyYRERERCQpBkwiIiIq0kqUKAENDQ2UKFEi22UMDAy+uAzlHAMmERERFWkWFhZwdXWFhYVFtsuULVv2i8tQzjFgEhERUZFnYmIiyTKUMwyYRERERCQpBkwiIiIikhQDJhERERFJigGTiIiIiCTFgElEREREkmLAJCIiIiJJMWASERERkaQYMImIiIhIUgyYRERERCQpBkwiIiIikhQDJhERERFJigGTiIiIiCTFgElEREREkmLAJCIiIiJJMWASERERkaQYMImIiKjYkb2TqfyfpMWASURERMWGiYkJdHR1oPH4YwTSeKwBHV0dmJiYFGxhRYxWQRdARERE9LWYmZlh/779iIuLE6eZmJjAzMys4IoqghgwiYiIqFgxMzNjoMxnvERORERERJJiwCQiIiIiSTFgEhEREZGkGDCJiIiISFIMmEREREQkKQZMIiIiIpIUAyYRERERSYoBk4iIiIgkxYBJRERERJJiwCQiIiIiSTFgEhEREZGkGDCJiIiISFIMmEREREQkKQZMIiIiIpKUVkEXQERE9K2LjIxEXFyc5NtNTk5GaGgotLS0oKenJ/n2SZWJiQnMzMwKuowigQGTiIgoDyIjIzFo4EB8UCgKuhTKI10dHezbv58hUwIMmERERHkQFxeHDwoFegMoW9DFFFNRAFyAPJ2DKAAuCgXi4uIYMCXAgElERCSBsgAsICvoMoop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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "order = joinVertices_compare_size.groupby(by=[\"algorithm\"])[\"overhead\"].median().sort_values(ascending=False).index\n", + "b = sns.boxplot(data=joinVertices_compare_size, x=\"overhead\", y=\"algorithm\", hue=\"algorithm\", palette=algorithm_colors, order=order)\n", + "b.set_xlabel(\"Overhead (storage with text format)\")\n", + "b.set_ylabel(\"Algorithms\")\n", + "write_dir = (plot_dir / data_dir)\n", + "write_dir.mkdir(exist_ok=True, parents=True)\n", + "plt.savefig(write_dir / \"overhead-size.pdf\", bbox_inches='tight')" + ] + }, + { + "cell_type": "markdown", + "id": "9ecf4eb0-6dc7-4bef-bb49-2c8b5eba2952", + "metadata": {}, + "source": [ + "# Data graph pruning (delta comparison)" + ] + }, + { + "cell_type": "code", + "execution_count": 169, + "id": "d2c55cb1-15ea-4e95-a117-29127b667239", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    configalgorithmdatasetrunstorage_formatcompressedtotal_sizenr_executorsnr_verticesiterationsduration
    14datagraphpruningBFScit-Patents1TextFalse50535370737747684376.262150
    2datagraphpruningBFSdatagen-7_5-fb1TextFalse9909847876334322939.157005
    15datagraphpruningBFSdatagen-7_9-fb1TextFalse242483171713875873159.394301
    12datagraphpruningBFSdatagen-8_4-fb1TextFalse6274158677380908435239.188734
    17datagraphpruningBFSdatagen-8_8-zf1TextFalse158760716830889321158.303025
    8datagraphpruningBFSgraph500-221TextFalse3372396657335.277343
    3datagraphpruningPageRankcit-Patents1TextFalse27953330387377476835189.454736
    16datagraphpruningPageRankdatagen-7_5-fb1TextFalse55037448576334323578.914126
    13datagraphpruningPageRankdatagen-7_9-fb1TextFalse12107198517138758735128.222824
    1datagraphpruningPageRankdatagen-8_4-fb1TextFalse33139835867380908435412.159718
    6datagraphpruningPageRankdatagen-8_8-zf1TextFalse44197081439716830889335891.574013
    11datagraphpruningPageRankgraph500-221TextFalse17602264767239665735150.237580
    19datagraphpruningSSSPdatagen-7_5-fb1TextFalse13316760076334323040.820508
    18datagraphpruningSSSPdatagen-7_9-fb1TextFalse337239338713875873267.234251
    9datagraphpruningSSSPdatagen-8_4-fb1TextFalse8917721207380908436262.843939
    0datagraphpruningSSSPdatagen-8_8-zf1TextFalse192374716830889322183.635438
    5datagraphpruningWCCcit-Patents1TextFalse11003331247377476841182.512176
    10datagraphpruningWCCdatagen-7_5-fb1TextFalse9402618076334321339.135903
    20datagraphpruningWCCdatagen-7_9-fb1TextFalse208169138713875871372.295015
    7datagraphpruningWCCdatagen-8_4-fb1TextFalse5806097817380908413217.327249
    4datagraphpruningWCCgraph500-221TextFalse268114309723966571572.729728
    \n", + "
    " + ], + "text/plain": [ + " config algorithm dataset run storage_format \\\n", + "14 datagraphpruning BFS cit-Patents 1 Text \n", + "2 datagraphpruning BFS datagen-7_5-fb 1 Text \n", + "15 datagraphpruning BFS datagen-7_9-fb 1 Text \n", + "12 datagraphpruning BFS datagen-8_4-fb 1 Text \n", + "17 datagraphpruning BFS datagen-8_8-zf 1 Text \n", + "8 datagraphpruning BFS graph500-22 1 Text \n", + "3 datagraphpruning PageRank cit-Patents 1 Text \n", + "16 datagraphpruning PageRank datagen-7_5-fb 1 Text \n", + "13 datagraphpruning PageRank datagen-7_9-fb 1 Text \n", + "1 datagraphpruning PageRank datagen-8_4-fb 1 Text \n", + "6 datagraphpruning PageRank datagen-8_8-zf 1 Text \n", + "11 datagraphpruning PageRank graph500-22 1 Text \n", + "19 datagraphpruning SSSP datagen-7_5-fb 1 Text \n", + "18 datagraphpruning SSSP datagen-7_9-fb 1 Text \n", + "9 datagraphpruning SSSP datagen-8_4-fb 1 Text \n", + "0 datagraphpruning SSSP datagen-8_8-zf 1 Text \n", + "5 datagraphpruning WCC cit-Patents 1 Text \n", + "10 datagraphpruning WCC datagen-7_5-fb 1 Text \n", + "20 datagraphpruning WCC datagen-7_9-fb 1 Text \n", + "7 datagraphpruning WCC datagen-8_4-fb 1 Text \n", + "4 datagraphpruning WCC graph500-22 1 Text \n", + "\n", + " compressed total_size nr_executors nr_vertices iterations duration \n", + "14 False 50535370 7 3774768 43 76.262150 \n", + "2 False 99098478 7 633432 29 39.157005 \n", + "15 False 242483171 7 1387587 31 59.394301 \n", + "12 False 627415867 7 3809084 35 239.188734 \n", + "17 False 158760 7 168308893 21 158.303025 \n", + "8 False 33 7 2396657 3 35.277343 \n", + "3 False 2795333038 7 3774768 35 189.454736 \n", + "16 False 550374485 7 633432 35 78.914126 \n", + "13 False 1210719851 7 1387587 35 128.222824 \n", + "1 False 3313983586 7 3809084 35 412.159718 \n", + "6 False 44197081439 7 168308893 35 891.574013 \n", + "11 False 1760226476 7 2396657 35 150.237580 \n", + "19 False 133167600 7 633432 30 40.820508 \n", + "18 False 337239338 7 1387587 32 67.234251 \n", + "9 False 891772120 7 3809084 36 262.843939 \n", + "0 False 192374 7 168308893 22 183.635438 \n", + "5 False 1100333124 7 3774768 41 182.512176 \n", + "10 False 94026180 7 633432 13 39.135903 \n", + "20 False 208169138 7 1387587 13 72.295015 \n", + "7 False 580609781 7 3809084 13 217.327249 \n", + "4 False 268114309 7 2396657 15 72.729728 " + ] + }, + "execution_count": 169, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data_dir = Path(\"das6\") / \"20240521-093950-datagraphpruning\"\n", + "smart_pruning = parse_experiment_output(root_dir / \"data\" / data_dir)\n", + "smart_pruning.sort_values(by=[\"algorithm\", \"dataset\", \"storage_format\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 170, + "id": "82ad839d-deac-41a6-8a88-233590db3f63", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    configalgorithmdatasetrunstorage_formatcompressedtotal_sizenr_executorsnr_verticesiterationsdurationbaseline_durationoverhead
    6datagraphpruningBFScit-Patents1TextFalse50535370737747684376.262150101.9735190.747862
    0datagraphpruningBFSdatagen-7_5-fb1TextFalse9909847876334322939.15700541.1423540.951744
    7datagraphpruningBFSdatagen-7_9-fb1TextFalse242483171713875873159.39430161.4505920.966537
    3datagraphpruningBFSgraph500-221TextFalse3372396657335.27734342.7111680.825951
    1datagraphpruningPageRankcit-Patents1TextFalse27953330387377476835189.454736142.7368471.327301
    8datagraphpruningPageRankdatagen-7_5-fb1TextFalse55037448576334323578.91412661.6125381.280813
    5datagraphpruningPageRankdatagen-7_9-fb1TextFalse12107198517138758735128.222824115.1571191.113460
    10datagraphpruningSSSPdatagen-7_5-fb1TextFalse13316760076334323040.82050841.1571250.991821
    9datagraphpruningSSSPdatagen-7_9-fb1TextFalse337239338713875873267.23425192.1441270.729664
    2datagraphpruningWCCcit-Patents1TextFalse11003331247377476841182.512176190.5493380.957821
    4datagraphpruningWCCdatagen-7_5-fb1TextFalse9402618076334321339.13590339.3828440.993730
    11datagraphpruningWCCdatagen-7_9-fb1TextFalse208169138713875871372.29501574.1738660.974670
    \n", + "
    " + ], + "text/plain": [ + " config algorithm dataset run storage_format \\\n", + "6 datagraphpruning BFS cit-Patents 1 Text \n", + "0 datagraphpruning BFS datagen-7_5-fb 1 Text \n", + "7 datagraphpruning BFS datagen-7_9-fb 1 Text \n", + "3 datagraphpruning BFS graph500-22 1 Text \n", + "1 datagraphpruning PageRank cit-Patents 1 Text \n", + "8 datagraphpruning PageRank datagen-7_5-fb 1 Text \n", + "5 datagraphpruning PageRank datagen-7_9-fb 1 Text \n", + "10 datagraphpruning SSSP datagen-7_5-fb 1 Text \n", + "9 datagraphpruning SSSP datagen-7_9-fb 1 Text \n", + "2 datagraphpruning WCC cit-Patents 1 Text \n", + "4 datagraphpruning WCC datagen-7_5-fb 1 Text \n", + "11 datagraphpruning WCC datagen-7_9-fb 1 Text \n", + "\n", + " compressed total_size nr_executors nr_vertices iterations duration \\\n", + "6 False 50535370 7 3774768 43 76.262150 \n", + "0 False 99098478 7 633432 29 39.157005 \n", + "7 False 242483171 7 1387587 31 59.394301 \n", + "3 False 33 7 2396657 3 35.277343 \n", + "1 False 2795333038 7 3774768 35 189.454736 \n", + "8 False 550374485 7 633432 35 78.914126 \n", + "5 False 1210719851 7 1387587 35 128.222824 \n", + "10 False 133167600 7 633432 30 40.820508 \n", + "9 False 337239338 7 1387587 32 67.234251 \n", + "2 False 1100333124 7 3774768 41 182.512176 \n", + "4 False 94026180 7 633432 13 39.135903 \n", + "11 False 208169138 7 1387587 13 72.295015 \n", + "\n", + " baseline_duration overhead \n", + "6 101.973519 0.747862 \n", + "0 41.142354 0.951744 \n", + "7 61.450592 0.966537 \n", + "3 42.711168 0.825951 \n", + "1 142.736847 1.327301 \n", + "8 61.612538 1.280813 \n", + "5 115.157119 1.113460 \n", + "10 41.157125 0.991821 \n", + "9 92.144127 0.729664 \n", + "2 190.549338 0.957821 \n", + "4 39.382844 0.993730 \n", + "11 74.173866 0.974670 " + ] + }, + "execution_count": 170, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "smart_pruning_compare_duration = merge_compare(storage_baseline, smart_pruning, metric=\"duration\")\n", + "smart_pruning_compare_duration.sort_values(by=[\"algorithm\", \"dataset\", \"storage_format\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 172, + "id": "5418a3e7-505e-40c4-be17-70b5874c0a8e", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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8wPw/iaQXr16wdHREb169UL37t1hbm4uVs1EREREVITl6yYfdUxNTdG/f3/s378fx44dg5ubGywtLSEIAh4/fozFixejVatWmDhxogjlEhEREVFRV+CAmVW1atUwbdo0XLp0CWvWrEHbtm0hlUohl8tx6tQpMXdFREREREVUwe8KUbdRXV106NABHTp0wJs3b3D48GEcPny4MHZFREREREWMqD2Y6pQtWxbff/+98gYgIiIiIirZCj1gEhEREdHnhQGTiIiIiETFgElEREREomLAJCIiIiJRMWASAShVqhR0dHRQqlQpbZdCBICvSSIq3gplmCKi4sba2hoeHh584hQVGXxNElFxxh5Mov/HP+RU1PA1SUTFFQMmEREREYmKAZOIiIiIRMWASURERESiYsAkIiIiIlExYBIRERGRqBgwiYiIiEhUDJhEREREJCoGTCIiIiISFQMmEREREYmKAZOIiIiIRMWASURERESiYsAkIiIiIlExYBIRERGRqBgwiYiIiEhUDJhEREREJCpdbRdARJqLAgAIWq7i04lS+W/xPu6ojy9CRFRsMWASFUPm5uYw0NeHu1yu7VK0wl3bBYjEQF8f5ubm2i6DiEh0DJhExZCVlRV27tqFuLg4bZdS5KSkpCAoKAj29vYwNDTUdjm5Mjc3h5WVlbbLICISHQMmUTFlZWXFcKJGcnIy0tPTUb16dRgbG2u7HCKizxJv8iEiIiIiUTFgEhEREZGoGDCJiIiISFQMmEREREQkKgZMIiIiIhIVAyYRERERiYoBk4iIiIhExYBJRERERKJiwCQiIiIiUTFgEhEREZGoGDCJiIiISFQMmEREREQkKgZMIiIiIhIVAyYRERERiUpX2wUQkXqRkZGIi4tDSkoKQkNDoaurC0NDQ22XVeQVRnuZm5vDyspKlG0REX0OGDCJiqDIyEgMGjwI8lS5tkshAPoG+ti1cxdDJhFRHjFgEhVBcXFxkKfKkdkkE0JpQdvlaCYBkN6WIqNJBlBa28VoTpIggfy2HHFxcQyYRER5xIBJVIQJpQXAQttVFFBpFOtjEFBMAz4RkRbxJh8iIiIiEhUDJhERERGJigGTiIiIiETFgElEREREomLAJCIiIiJRMWASERERkagYMImIiIhIVAyYRERERCQqBkwiIiIiEhUDJhERERGJigGTiIiIiETFgElERERE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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "order = smart_pruning_compare_duration.groupby(by=[\"algorithm\"])[\"overhead\"].median().sort_values(ascending=False).index\n", + "b = sns.boxplot(data=smart_pruning_compare_duration, x=\"overhead\", y=\"algorithm\", hue=\"algorithm\", palette=algorithm_colors, order=order)\n", + "b.set_xlabel(\"Overhead (duration with text format)\")\n", + "b.set_ylabel(\"Algorithms\")\n", + "write_dir = (plot_dir / data_dir)\n", + "write_dir.mkdir(exist_ok=True, parents=True)\n", + "plt.savefig(write_dir / \"overhead-duration.pdf\", bbox_inches='tight')" + ] + }, + { + "cell_type": "code", + "execution_count": 173, + "id": "02ebaf0e-43ec-4f69-b035-b045a8139464", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    configalgorithmdatasetrunstorage_formatcompressedtotal_sizenr_executorsnr_verticesiterationsdurationbaseline_total_sizeoverhead
    6datagraphpruningBFScit-Patents1TextFalse50535370737747684376.26215025255978032.000927e-02
    0datagraphpruningBFSdatagen-7_5-fb1TextFalse9909847876334322939.1570052565292253.863048e-01
    7datagraphpruningBFSdatagen-7_9-fb1TextFalse242483171713875873159.3943015818553994.167413e-01
    3datagraphpruningBFSgraph500-221TextFalse3372396657335.2773432137941121.543541e-07
    1datagraphpruningPageRankcit-Patents1TextFalse27953330387377476835189.45473628342353129.862742e-01
    8datagraphpruningPageRankdatagen-7_5-fb1TextFalse55037448576334323578.9141265527524999.956979e-01
    5datagraphpruningPageRankdatagen-7_9-fb1TextFalse12107198517138758735128.22282412161015659.955746e-01
    10datagraphpruningSSSPdatagen-7_5-fb1TextFalse13316760076334323040.8205082546709295.229007e-01
    9datagraphpruningSSSPdatagen-7_9-fb1TextFalse337239338713875873267.2342516011332265.610060e-01
    2datagraphpruningWCCcit-Patents1TextFalse11003331247377476841182.51217611003331241.000000e+00
    4datagraphpruningWCCdatagen-7_5-fb1TextFalse9402618076334321339.135903940261801.000000e+00
    11datagraphpruningWCCdatagen-7_9-fb1TextFalse208169138713875871372.2950152081691381.000000e+00
    \n", + "
    " + ], + "text/plain": [ + " config algorithm dataset run storage_format \\\n", + "6 datagraphpruning BFS cit-Patents 1 Text \n", + "0 datagraphpruning BFS datagen-7_5-fb 1 Text \n", + "7 datagraphpruning BFS datagen-7_9-fb 1 Text \n", + "3 datagraphpruning BFS graph500-22 1 Text \n", + "1 datagraphpruning PageRank cit-Patents 1 Text \n", + "8 datagraphpruning PageRank datagen-7_5-fb 1 Text \n", + "5 datagraphpruning PageRank datagen-7_9-fb 1 Text \n", + "10 datagraphpruning SSSP datagen-7_5-fb 1 Text \n", + "9 datagraphpruning SSSP datagen-7_9-fb 1 Text \n", + "2 datagraphpruning WCC cit-Patents 1 Text \n", + "4 datagraphpruning WCC datagen-7_5-fb 1 Text \n", + "11 datagraphpruning WCC datagen-7_9-fb 1 Text \n", + "\n", + " compressed total_size nr_executors nr_vertices iterations duration \\\n", + "6 False 50535370 7 3774768 43 76.262150 \n", + "0 False 99098478 7 633432 29 39.157005 \n", + "7 False 242483171 7 1387587 31 59.394301 \n", + "3 False 33 7 2396657 3 35.277343 \n", + "1 False 2795333038 7 3774768 35 189.454736 \n", + "8 False 550374485 7 633432 35 78.914126 \n", + "5 False 1210719851 7 1387587 35 128.222824 \n", + "10 False 133167600 7 633432 30 40.820508 \n", + "9 False 337239338 7 1387587 32 67.234251 \n", + "2 False 1100333124 7 3774768 41 182.512176 \n", + "4 False 94026180 7 633432 13 39.135903 \n", + "11 False 208169138 7 1387587 13 72.295015 \n", + "\n", + " baseline_total_size overhead \n", + "6 2525597803 2.000927e-02 \n", + "0 256529225 3.863048e-01 \n", + "7 581855399 4.167413e-01 \n", + "3 213794112 1.543541e-07 \n", + "1 2834235312 9.862742e-01 \n", + "8 552752499 9.956979e-01 \n", + "5 1216101565 9.955746e-01 \n", + "10 254670929 5.229007e-01 \n", + "9 601133226 5.610060e-01 \n", + "2 1100333124 1.000000e+00 \n", + "4 94026180 1.000000e+00 \n", + "11 208169138 1.000000e+00 " + ] + }, + "execution_count": 173, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "smart_pruning_compare_size = merge_compare(storage_baseline, smart_pruning, metric=\"total_size\")\n", + "smart_pruning_compare_size.sort_values(by=[\"algorithm\", \"dataset\", \"storage_format\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 174, + "id": "5980b461-ead5-484a-b9f2-c36b0049cd70", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "order = smart_pruning_compare_size.groupby(by=[\"algorithm\"])[\"overhead\"].median().sort_values(ascending=False).index\n", + "b = sns.boxplot(data=smart_pruning_compare_size, x=\"overhead\", y=\"algorithm\", hue=\"algorithm\", palette=algorithm_colors, order=order)\n", + "b.set_xlabel(\"Overhead (storage with text format)\")\n", + "b.set_ylabel(\"Algorithms\")\n", + "write_dir = (plot_dir / data_dir)\n", + "write_dir.mkdir(exist_ok=True, parents=True)\n", + "plt.savefig(write_dir / \"overhead-size.pdf\", bbox_inches='tight')" + ] + }, + { + "cell_type": "markdown", + "id": "e9817ffd-8093-4216-8142-91fcab4d4365", + "metadata": {}, + "source": [ + "# Combined pruning" + ] + }, + { + "cell_type": "code", + "execution_count": 175, + "id": "960c36fc-327b-43ac-a1dc-f3e6d6aa69ba", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    configalgorithmdatasetrunstorage_formatcompressedtotal_sizenr_executorsnr_verticesiterationsduration
    6combinedpruningBFScit-Patents1TextFalse50535334737747684397.991459
    2combinedpruningBFSdatagen-7_5-fb1TextFalse9909846076334322940.551124
    1combinedpruningBFSdatagen-7_9-fb1TextFalse2424831537138758731110.392218
    7combinedpruningBFSdatagen-8_4-fb1TextFalse6274158497380908435265.831706
    10combinedpruningBFSdatagen-8_8-zf1TextFalse158742716830889321202.223527
    8combinedpruningBFSgraph500-221TextFalse072396657328.202130
    18combinedpruningPageRankcit-Patents1TextFalse0737747683589.170014
    13combinedpruningPageRankdatagen-7_5-fb1TextFalse076334323535.329524
    3combinedpruningPageRankdatagen-7_9-fb1TextFalse0713875873567.376054
    0combinedpruningPageRankdatagen-8_4-fb1TextFalse07380908435237.889833
    11combinedpruningPageRankdatagen-8_8-zf1TextFalse0716830889335338.839341
    20combinedpruningPageRankgraph500-221TextFalse0723966573586.850061
    4combinedpruningSSSPdatagen-7_5-fb1TextFalse13316756876334323043.168527
    17combinedpruningSSSPdatagen-7_9-fb1TextFalse3372393067138758732102.904335
    14combinedpruningSSSPdatagen-8_4-fb1TextFalse8917720887380908436305.687841
    5combinedpruningSSSPdatagen-8_8-zf1TextFalse192342716830889322223.981237
    9combinedpruningWCCcit-Patents1TextFalse9651328607377476841187.507095
    19combinedpruningWCCdatagen-7_5-fb1TextFalse5842503276334321337.925038
    12combinedpruningWCCdatagen-7_9-fb1TextFalse129855334713875871376.020076
    15combinedpruningWCCdatagen-8_4-fb1TextFalse3644435977380908413257.643940
    16combinedpruningWCCgraph500-221TextFalse184374609723966571575.913845
    \n", + "
    " + ], + "text/plain": [ + " config algorithm dataset run storage_format compressed \\\n", + "6 combinedpruning BFS cit-Patents 1 Text False \n", + "2 combinedpruning BFS datagen-7_5-fb 1 Text False \n", + "1 combinedpruning BFS datagen-7_9-fb 1 Text False \n", + "7 combinedpruning BFS datagen-8_4-fb 1 Text False \n", + "10 combinedpruning BFS datagen-8_8-zf 1 Text False \n", + "8 combinedpruning BFS graph500-22 1 Text False \n", + "18 combinedpruning PageRank cit-Patents 1 Text False \n", + "13 combinedpruning PageRank datagen-7_5-fb 1 Text False \n", + "3 combinedpruning PageRank datagen-7_9-fb 1 Text False \n", + "0 combinedpruning PageRank datagen-8_4-fb 1 Text False \n", + "11 combinedpruning PageRank datagen-8_8-zf 1 Text False \n", + "20 combinedpruning PageRank graph500-22 1 Text False \n", + "4 combinedpruning SSSP datagen-7_5-fb 1 Text False \n", + "17 combinedpruning SSSP datagen-7_9-fb 1 Text False \n", + "14 combinedpruning SSSP datagen-8_4-fb 1 Text False \n", + "5 combinedpruning SSSP datagen-8_8-zf 1 Text False \n", + "9 combinedpruning WCC cit-Patents 1 Text False \n", + "19 combinedpruning WCC datagen-7_5-fb 1 Text False \n", + "12 combinedpruning WCC datagen-7_9-fb 1 Text False \n", + "15 combinedpruning WCC datagen-8_4-fb 1 Text False \n", + "16 combinedpruning WCC graph500-22 1 Text False \n", + "\n", + " total_size nr_executors nr_vertices iterations duration \n", + "6 50535334 7 3774768 43 97.991459 \n", + "2 99098460 7 633432 29 40.551124 \n", + "1 242483153 7 1387587 31 110.392218 \n", + "7 627415849 7 3809084 35 265.831706 \n", + "10 158742 7 168308893 21 202.223527 \n", + "8 0 7 2396657 3 28.202130 \n", + "18 0 7 3774768 35 89.170014 \n", + "13 0 7 633432 35 35.329524 \n", + "3 0 7 1387587 35 67.376054 \n", + "0 0 7 3809084 35 237.889833 \n", + "11 0 7 168308893 35 338.839341 \n", + "20 0 7 2396657 35 86.850061 \n", + "4 133167568 7 633432 30 43.168527 \n", + "17 337239306 7 1387587 32 102.904335 \n", + "14 891772088 7 3809084 36 305.687841 \n", + "5 192342 7 168308893 22 223.981237 \n", + "9 965132860 7 3774768 41 187.507095 \n", + "19 58425032 7 633432 13 37.925038 \n", + "12 129855334 7 1387587 13 76.020076 \n", + "15 364443597 7 3809084 13 257.643940 \n", + "16 184374609 7 2396657 15 75.913845 " + ] + }, + "execution_count": 175, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data_dir = Path(\"das6\") / \"20240521-111351-combinedpruning\"\n", + "combined = parse_experiment_output(root_dir / \"data\" / data_dir)\n", + "combined.sort_values(by=[\"algorithm\", \"dataset\", \"storage_format\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 176, + "id": "a263c18b-ea83-4f99-872c-42f37609a46c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    configalgorithmdatasetrunstorage_formatcompressedtotal_sizenr_executorsnr_verticesiterationsdurationbaseline_durationoverhead
    4combinedpruningBFScit-Patents1TextFalse50535334737747684397.991459101.9735190.960950
    1combinedpruningBFSdatagen-7_5-fb1TextFalse9909846076334322940.55112441.1423540.985630
    0combinedpruningBFSdatagen-7_9-fb1TextFalse2424831537138758731110.39221861.4505921.796439
    5combinedpruningBFSgraph500-221TextFalse072396657328.20213042.7111680.660299
    10combinedpruningPageRankcit-Patents1TextFalse0737747683589.170014142.7368470.624716
    8combinedpruningPageRankdatagen-7_5-fb1TextFalse076334323535.32952461.6125380.573415
    2combinedpruningPageRankdatagen-7_9-fb1TextFalse0713875873567.376054115.1571190.585079
    3combinedpruningSSSPdatagen-7_5-fb1TextFalse13316756876334323043.16852741.1571251.048871
    9combinedpruningSSSPdatagen-7_9-fb1TextFalse3372393067138758732102.90433592.1441271.116776
    6combinedpruningWCCcit-Patents1TextFalse9651328607377476841187.507095190.5493380.984034
    11combinedpruningWCCdatagen-7_5-fb1TextFalse5842503276334321337.92503839.3828440.962984
    7combinedpruningWCCdatagen-7_9-fb1TextFalse129855334713875871376.02007674.1738661.024890
    \n", + "
    " + ], + "text/plain": [ + " config algorithm dataset run storage_format compressed \\\n", + "4 combinedpruning BFS cit-Patents 1 Text False \n", + "1 combinedpruning BFS datagen-7_5-fb 1 Text False \n", + "0 combinedpruning BFS datagen-7_9-fb 1 Text False \n", + "5 combinedpruning BFS graph500-22 1 Text False \n", + "10 combinedpruning PageRank cit-Patents 1 Text False \n", + "8 combinedpruning PageRank datagen-7_5-fb 1 Text False \n", + "2 combinedpruning PageRank datagen-7_9-fb 1 Text False \n", + "3 combinedpruning SSSP datagen-7_5-fb 1 Text False \n", + "9 combinedpruning SSSP datagen-7_9-fb 1 Text False \n", + "6 combinedpruning WCC cit-Patents 1 Text False \n", + "11 combinedpruning WCC datagen-7_5-fb 1 Text False \n", + "7 combinedpruning WCC datagen-7_9-fb 1 Text False \n", + "\n", + " total_size nr_executors nr_vertices iterations duration \\\n", + "4 50535334 7 3774768 43 97.991459 \n", + "1 99098460 7 633432 29 40.551124 \n", + "0 242483153 7 1387587 31 110.392218 \n", + "5 0 7 2396657 3 28.202130 \n", + "10 0 7 3774768 35 89.170014 \n", + "8 0 7 633432 35 35.329524 \n", + "2 0 7 1387587 35 67.376054 \n", + "3 133167568 7 633432 30 43.168527 \n", + "9 337239306 7 1387587 32 102.904335 \n", + "6 965132860 7 3774768 41 187.507095 \n", + "11 58425032 7 633432 13 37.925038 \n", + "7 129855334 7 1387587 13 76.020076 \n", + "\n", + " baseline_duration overhead \n", + "4 101.973519 0.960950 \n", + "1 41.142354 0.985630 \n", + "0 61.450592 1.796439 \n", + "5 42.711168 0.660299 \n", + "10 142.736847 0.624716 \n", + "8 61.612538 0.573415 \n", + "2 115.157119 0.585079 \n", + "3 41.157125 1.048871 \n", + "9 92.144127 1.116776 \n", + "6 190.549338 0.984034 \n", + "11 39.382844 0.962984 \n", + "7 74.173866 1.024890 " + ] + }, + "execution_count": 176, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "combined_compare_duration = merge_compare(storage_baseline, combined, metric=\"duration\")\n", + "combined_compare_duration.sort_values(by=[\"algorithm\", \"dataset\", \"storage_format\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 177, + "id": "e0055ab1-46cd-4f0d-999b-c32e1f46d49c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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rhz69++PI0eOZOsVgGKpUKECDh06hKlTp6JOnTqIjo5W9Wp16NABO3bswHfffae2TqtWreDp6Ym2bduidOnSePbsGSIjIyGTyTBp0iQcPnwYXbp0AZDxeZ4uLi44dOgQ+vTpAysrKwQEBMDExATjxo3T+qYI5XMFL1++rHF+8eLFsXXrVsyYMQPVq1dHeHg4Xr16hQ4dOmD//v0an48JfOwd9fT0RJcuXVCiRAk8e/YMqampGDp0KA4dOqTVY0ukUim2bt2KyZMno3r16nj//j0CAwOhr6+PTp06YefOnVi7di2MjIwgl8vV7kS2s7PDokWLUKlSJcjlckRGRqoea5WZGjVq4NixYxgzZgyqVq2KsLAwhISEwN7eHqNGjcKRI0fUHqSe19LftPNpwDQ0NFT1GleuXFntwf+fo03b5EZW+zMyMsK6deuwbNkyNG/eHMnJyfD390dqaioaN26MxYsXY/ny5aoxt8+fP8fChQsBAN999x2cnZ3V9lWiRAnMnj0bwMdHoP3zzz+qeQsXLoSrqyv09fURHByMkJCQXB9b165dcfjwYfTu3RulSpVCUFAQ3rx5g3r16mH27Nnw9PT87PN480P//v2xZcsWuLq6olixYggKClINrZg9ezb27dunCoefnoc+124JCQnw9fWFvr4+vv766/w6JJ2TCPk1yISIqBBITU1Fx44dERoaimPHjmX6nE0iouzYuXMnPDw80L17dyxatEjX5eQb9mASEaUjlUoxatQoAMjweCQiopzav38/pFIpfvjhB12Xkq8YMImIPvHNN9+gcuXKOHjw4BfzWjciEt+1a9fg7++P7t27Zzp8pqhiwCQi+oS+vj5+/fVXvH//HmvWrNF1OURUCKWlpWHx4sUoU6YMpk6dquty8h0DJhGRBnXq1MH333+PvXv3inKzAxF9WQ4dOoSAgAAsWrRI7V3kXwre5ENEREREomIPJhERERGJigGTiIiIiETFgElEREREomLAJCIiIiJRMWASERERkagYMImIiIhIVAyYRERERCQqBkwiIiIiEhUDJhERERGJ6v8A5rCTUGDFuBIAAAAASUVORK5CYII=", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "order = combined_compare_duration.groupby(by=[\"algorithm\"])[\"overhead\"].median().sort_values(ascending=False).index\n", + "b = sns.boxplot(data=combined_compare_duration, x=\"overhead\", y=\"algorithm\", hue=\"algorithm\", palette=algorithm_colors, order=order)\n", + "b.set_xlabel(\"Overhead (duration with text format)\")\n", + "b.set_ylabel(\"Algorithms\")\n", + "write_dir = (plot_dir / data_dir)\n", + "write_dir.mkdir(exist_ok=True, parents=True)\n", + "plt.savefig(write_dir / \"overhead-duration.pdf\", bbox_inches='tight')" + ] + }, + { + "cell_type": "code", + "execution_count": 178, + "id": "640f02ee-b139-4810-9f74-faf7befd81df", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    configalgorithmdatasetrunstorage_formatcompressedtotal_sizenr_executorsnr_verticesiterationsdurationbaseline_total_sizeoverhead
    3combinedpruningBFScit-Patents1TextFalse50535334737747684397.99145925255978030.020009
    1combinedpruningBFSdatagen-7_5-fb1TextFalse9909846076334322940.5511242565292250.386305
    0combinedpruningBFSdatagen-7_9-fb1TextFalse2424831537138758731110.3922185818553990.416741
    2combinedpruningSSSPdatagen-7_5-fb1TextFalse13316756876334323043.1685272546709290.522901
    6combinedpruningSSSPdatagen-7_9-fb1TextFalse3372393067138758732102.9043356011332260.561006
    4combinedpruningWCCcit-Patents1TextFalse9651328607377476841187.50709511003331240.877128
    7combinedpruningWCCdatagen-7_5-fb1TextFalse5842503276334321337.925038940261800.621370
    5combinedpruningWCCdatagen-7_9-fb1TextFalse129855334713875871376.0200762081691380.623797
    \n", + "
    " + ], + "text/plain": [ + " config algorithm dataset run storage_format compressed \\\n", + "3 combinedpruning BFS cit-Patents 1 Text False \n", + "1 combinedpruning BFS datagen-7_5-fb 1 Text False \n", + "0 combinedpruning BFS datagen-7_9-fb 1 Text False \n", + "2 combinedpruning SSSP datagen-7_5-fb 1 Text False \n", + "6 combinedpruning SSSP datagen-7_9-fb 1 Text False \n", + "4 combinedpruning WCC cit-Patents 1 Text False \n", + "7 combinedpruning WCC datagen-7_5-fb 1 Text False \n", + "5 combinedpruning WCC datagen-7_9-fb 1 Text False \n", + "\n", + " total_size nr_executors nr_vertices iterations duration \\\n", + "3 50535334 7 3774768 43 97.991459 \n", + "1 99098460 7 633432 29 40.551124 \n", + "0 242483153 7 1387587 31 110.392218 \n", + "2 133167568 7 633432 30 43.168527 \n", + "6 337239306 7 1387587 32 102.904335 \n", + "4 965132860 7 3774768 41 187.507095 \n", + "7 58425032 7 633432 13 37.925038 \n", + "5 129855334 7 1387587 13 76.020076 \n", + "\n", + " baseline_total_size overhead \n", + "3 2525597803 0.020009 \n", + "1 256529225 0.386305 \n", + "0 581855399 0.416741 \n", + "2 254670929 0.522901 \n", + "6 601133226 0.561006 \n", + "4 1100333124 0.877128 \n", + "7 94026180 0.621370 \n", + "5 208169138 0.623797 " + ] + }, + "execution_count": 178, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "combined_compare_size = merge_compare(storage_baseline, combined[combined[\"total_size\"] > 0], metric=\"total_size\")\n", + "combined_compare_size.sort_values(by=[\"algorithm\", \"dataset\", \"storage_format\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 179, + "id": "bb8dc560-b63c-4604-b8e2-e49e304a7055", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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Vv1crVixgu3bt9OvXz8CAgLIycnh888/54YbbrC4awaNe93q+tmqOnfnzp2v2Cr0159RS9GUP296vZ4PPvgAgIcffviyndtjYmIA2LRpE99//z29evUiMDCQ4uJi1qxZw7x580hKSqrzuZvDjTfeyJ133omtrW29j9GWvtvqQkZ9isuq7dBygJCQEIqKigBo167dZfepGhFmMBgoLi6+4n5XU1ZWxmOPPUZmZia9evVi8eLFpm1Vv0x69+7N8uXL6dWrl+l8n332Ge+99x5PPfUUAwcOxMPDo87nbqiq0U9X+hKrer7qOjbmsa61f13P35wa87pdSUJCAk899RQAy5Ytq9ZSW9XCcfPNN/P0009jbW0NGH+h/P3vfyc0NJSnnnqKL7/8st7nbwqNed3q+tmqOvfVPuNV3weFhYW1e0PNpCl/3rZt20Z6ejpeXl5MnTr1svtU/bxNnjyZN954wzTKOD8/n2eeeYZt27bxyCOPsHHjxst2C2np2tJ3W11IUBOX5eLictWh5ZfSaDR1+tIwGAx1rqeoqIhHHnmEPXv24OzszH//+99qvwgefPBBFixYgL29fbV5djQaDffeey9Hjx5l586drF27lieeeKLO528oKyurWr1vVVVrdazaqDrfX/t6NPT8zakxr9vlREVFcffdd5OXl8eECRN46KGHqm3fsmULGRkZeHl5VWsdcnNz4+2332b69Ons27eP5ORk+vTpU68amkJjXre6frbk5+3yvv76awDuu+++K7Y0fvXVV5w6dYoePXqY/igAcHR05LXXXiMiIoKkpCT27dvHuHHj6lyDpWtL3211IUFNXFZVE31tVU0CWVJSctntpaWlgPGDVdfWtNOnT3P//fcTGxtL586d+fLLL2v8UtRqtVdtKbvuuuvYuXOn2fqq2dvbk5eXZ7oOf1V13ezs7Gp1LOCax6ra71r71/X8zakxr9tfbd26lSeffJLi4mKmTJnCO++8U+MXhYODwxX7vnTt2hVfX1/CwsKIjo62qKDWmNetrp+ta30XwJ8/i23l5+3kyZNERUXRvn37q04cbGtrW2OAQRUHBwdGjBjBxo0biY6ObpVBrS19t9WF9FETjaKq9e1KfU6q+h507NixTn8FRUVFccMNNxAbG0ufPn1Yu3btFX9xXk1VB/H6TMDYGKr6T1zp+lyrj9/ljnWlPhd/PZaD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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "order = combined_compare_size.groupby(by=[\"algorithm\"])[\"overhead\"].median().sort_values(ascending=False).index\n", + "b = sns.violinplot(data=combined_compare_size, x=\"overhead\", y=\"algorithm\", hue=\"algorithm\", palette=algorithm_colors, order=order)\n", + "b.set_xlabel(\"Overhead (size with text format)\")\n", + "b.set_ylabel(\"Algorithms\")\n", + "write_dir = (plot_dir / data_dir)\n", + "write_dir.mkdir(exist_ok=True, parents=True)\n", + "plt.savefig(write_dir / \"overhead-size.pdf\", bbox_inches='tight')" + ] + }, + { + "cell_type": "code", + "execution_count": 180, + "id": "527f1ccc-4fb7-4101-b9a7-e42bf697d7cf", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    configalgorithmdatasetrunstorage_formatcompressedtotal_sizenr_executorsnr_verticesiterationsdurationbaseline_graph_sizeblowup
    15combinedpruningBFScit-Patents1TextFalse50535334737747684397.991459300252981.683092
    8combinedpruningBFSdatagen-7_5-fb1TextFalse9909846076334322940.551124826685511.987444
    4combinedpruningBFSdatagen-7_9-fb1TextFalse2424831537138758731110.3922181819086413.329942
    1combinedpruningBFSdatagen-8_4-fb1TextFalse6274158497380908435265.8317065023246212.490247
    13combinedpruningBFSdatagen-8_8-zf1TextFalse158742716830889321202.22352722678974860.000070
    18combinedpruningBFSgraph500-221TextFalse072396657328.202130185382680.000000
    17combinedpruningPageRankcit-Patents1TextFalse0737747683589.170014300252980.000000
    10combinedpruningPageRankdatagen-7_5-fb1TextFalse076334323535.32952482668550.000000
    5combinedpruningPageRankdatagen-7_9-fb1TextFalse0713875873567.376054181908640.000000
    0combinedpruningPageRankdatagen-8_4-fb1TextFalse07380908435237.889833502324620.000000
    14combinedpruningPageRankdatagen-8_8-zf1TextFalse0716830889335338.83934122678974860.000000
    20combinedpruningPageRankgraph500-221TextFalse0723966573586.850061185382680.000000
    9combinedpruningSSSPdatagen-7_5-fb1TextFalse13316756876334323043.168527826685516.108613
    7combinedpruningSSSPdatagen-7_9-fb1TextFalse3372393067138758732102.9043351819086418.538938
    2combinedpruningSSSPdatagen-8_4-fb1TextFalse8917720887380908436305.6878415023246217.752904
    12combinedpruningSSSPdatagen-8_8-zf1TextFalse192342716830889322223.98123722678974860.000085
    16combinedpruningWCCcit-Patents1TextFalse9651328607377476841187.5070953002529832.143989
    11combinedpruningWCCdatagen-7_5-fb1TextFalse5842503276334321337.92503882668557.067383
    6combinedpruningWCCdatagen-7_9-fb1TextFalse129855334713875871376.020076181908647.138492
    3combinedpruningWCCdatagen-8_4-fb1TextFalse3644435977380908413257.643940502324627.255141
    19combinedpruningWCCgraph500-221TextFalse184374609723966571575.913845185382689.945622
    \n", + "
    " + ], + "text/plain": [ + " config algorithm dataset run storage_format compressed \\\n", + "15 combinedpruning BFS cit-Patents 1 Text False \n", + "8 combinedpruning BFS datagen-7_5-fb 1 Text False \n", + "4 combinedpruning BFS datagen-7_9-fb 1 Text False \n", + "1 combinedpruning BFS datagen-8_4-fb 1 Text False \n", + "13 combinedpruning BFS datagen-8_8-zf 1 Text False \n", + "18 combinedpruning BFS graph500-22 1 Text False \n", + "17 combinedpruning PageRank cit-Patents 1 Text False \n", + "10 combinedpruning PageRank datagen-7_5-fb 1 Text False \n", + "5 combinedpruning PageRank datagen-7_9-fb 1 Text False \n", + "0 combinedpruning PageRank datagen-8_4-fb 1 Text False \n", + "14 combinedpruning PageRank datagen-8_8-zf 1 Text False \n", + "20 combinedpruning PageRank graph500-22 1 Text False \n", + "9 combinedpruning SSSP datagen-7_5-fb 1 Text False \n", + "7 combinedpruning SSSP datagen-7_9-fb 1 Text False \n", + "2 combinedpruning SSSP datagen-8_4-fb 1 Text False \n", + "12 combinedpruning SSSP datagen-8_8-zf 1 Text False \n", + "16 combinedpruning WCC cit-Patents 1 Text False \n", + "11 combinedpruning WCC datagen-7_5-fb 1 Text False \n", + "6 combinedpruning WCC datagen-7_9-fb 1 Text False \n", + "3 combinedpruning WCC datagen-8_4-fb 1 Text False \n", + "19 combinedpruning WCC graph500-22 1 Text False \n", + "\n", + " total_size nr_executors nr_vertices iterations duration \\\n", + "15 50535334 7 3774768 43 97.991459 \n", + "8 99098460 7 633432 29 40.551124 \n", + "4 242483153 7 1387587 31 110.392218 \n", + "1 627415849 7 3809084 35 265.831706 \n", + "13 158742 7 168308893 21 202.223527 \n", + "18 0 7 2396657 3 28.202130 \n", + "17 0 7 3774768 35 89.170014 \n", + "10 0 7 633432 35 35.329524 \n", + "5 0 7 1387587 35 67.376054 \n", + "0 0 7 3809084 35 237.889833 \n", + "14 0 7 168308893 35 338.839341 \n", + "20 0 7 2396657 35 86.850061 \n", + "9 133167568 7 633432 30 43.168527 \n", + "7 337239306 7 1387587 32 102.904335 \n", + "2 891772088 7 3809084 36 305.687841 \n", + "12 192342 7 168308893 22 223.981237 \n", + "16 965132860 7 3774768 41 187.507095 \n", + "11 58425032 7 633432 13 37.925038 \n", + "6 129855334 7 1387587 13 76.020076 \n", + "3 364443597 7 3809084 13 257.643940 \n", + "19 184374609 7 2396657 15 75.913845 \n", + "\n", + " baseline_graph_size blowup \n", + "15 30025298 1.683092 \n", + "8 8266855 11.987444 \n", + "4 18190864 13.329942 \n", + "1 50232462 12.490247 \n", + "13 2267897486 0.000070 \n", + "18 18538268 0.000000 \n", + "17 30025298 0.000000 \n", + "10 8266855 0.000000 \n", + "5 18190864 0.000000 \n", + "0 50232462 0.000000 \n", + "14 2267897486 0.000000 \n", + "20 18538268 0.000000 \n", + "9 8266855 16.108613 \n", + "7 18190864 18.538938 \n", + "2 50232462 17.752904 \n", + "12 2267897486 0.000085 \n", + "16 30025298 32.143989 \n", + "11 8266855 7.067383 \n", + "6 18190864 7.138492 \n", + "3 50232462 7.255141 \n", + "19 18538268 9.945622 " + ] + }, + "execution_count": 180, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gg_combined = node_sizes.rename(columns={\"total_size\": \"baseline_graph_size\"})\n", + "gg2_combined = pd.merge(combined, gg_combined, on=[\"dataset\"])\n", + "gg2_combined[\"blowup\"] = gg2_combined[\"total_size\"] / gg2_combined[\"baseline_graph_size\"]\n", + "gg2_combined.sort_values(by=[\"algorithm\", \"dataset\", \"storage_format\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 181, + "id": "58051007-0119-47d9-9e16-b47955dda860", + "metadata": {}, + "outputs": [], + "source": [ + "#sns.boxplot(gg2_combined[gg2_combined[\"total_size\"] > 1024**2], x=\"blowup\")" + ] + }, + { + "cell_type": "code", + "execution_count": 182, + "id": "9aea89dc-5cd2-4abf-81dd-6d987ba6b86b", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/4z/sr1jzyjd3sjfsw6tlm7k49180000gn/T/ipykernel_43690/4184565240.py:1: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " storage_baseline[\"scenario\"] = \"Complete provenance\"\n" + ] + }, + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    scenariodatasettotal_sizebaseline_graph_sizeblowup
    0Complete provenancedatagen-7_9-fb2081691381819086411.443609
    1Complete provenancedatagen-7_9-fb5818553991819086431.986133
    2Complete provenancedatagen-7_9-fb12161015651819086466.852326
    3Complete provenancedatagen-7_9-fb6011332261819086433.045886
    4Provenance pruningdatagen-7_9-fb4673159621819086425.689597
    5Provenance pruningdatagen-7_9-fb4357021191819086423.951700
    6Provenance pruningdatagen-7_9-fb129855334181908647.138492
    7Data pruningdatagen-7_9-fb12107198511819086466.556479
    8Data pruningdatagen-7_9-fb2424831711819086413.329942
    9Data pruningdatagen-7_9-fb3372393381819086418.538940
    10Data pruningdatagen-7_9-fb2081691381819086411.443609
    11Combined pruningdatagen-7_9-fb2424831531819086413.329942
    12Combined pruningdatagen-7_9-fb129855334181908647.138492
    13Combined pruningdatagen-7_9-fb3372393061819086418.538938
    14Complete provenancedatagen-7_5-fb552752499826685566.863698
    15Complete provenancedatagen-7_5-fb94026180826685511.373876
    16Complete provenancedatagen-7_5-fb256529225826685531.031054
    17Complete provenancedatagen-7_5-fb254670929826685530.806265
    18Provenance pruningdatagen-7_5-fb189922202826685522.973937
    19Provenance pruningdatagen-7_5-fb193732521826685523.434852
    20Provenance pruningdatagen-7_5-fb5842503282668557.067383
    21Data pruningdatagen-7_5-fb99098478826685511.987446
    22Data pruningdatagen-7_5-fb94026180826685511.373876
    23Data pruningdatagen-7_5-fb550374485826685566.576042
    24Data pruningdatagen-7_5-fb133167600826685516.108617
    25Combined pruningdatagen-7_5-fb99098460826685511.987444
    26Combined pruningdatagen-7_5-fb133167568826685516.108613
    27Combined pruningdatagen-7_5-fb5842503282668557.067383
    28Complete provenancecit-Patents11003331243002529836.646868
    29Complete provenancecit-Patents25255978033002529884.115661
    30Complete provenancecit-Patents28342353123002529894.394910
    31Provenance pruningcit-Patents9651328603002529832.143989
    32Provenance pruningcit-Patents21863872753002529872.818171
    33Data pruningcit-Patents27953330383002529893.099260
    34Data pruningcit-Patents11003331243002529836.646868
    35Data pruningcit-Patents50535370300252981.683093
    36Combined pruningcit-Patents50535334300252981.683092
    37Combined pruningcit-Patents9651328603002529832.143989
    38Complete provenancegraph500-222137941121853826811.532583
    39Combined pruninggraph500-22184374609185382689.945622
    40Combined pruningdatagen-8_4-fb6274158495023246212.490247
    41Combined pruningdatagen-8_4-fb8917720885023246217.752904
    42Combined pruningdatagen-8_4-fb364443597502324627.255141
    \n", + "
    " + ], + "text/plain": [ + " scenario dataset total_size baseline_graph_size \\\n", + "0 Complete provenance datagen-7_9-fb 208169138 18190864 \n", + "1 Complete provenance datagen-7_9-fb 581855399 18190864 \n", + "2 Complete provenance datagen-7_9-fb 1216101565 18190864 \n", + "3 Complete provenance datagen-7_9-fb 601133226 18190864 \n", + "4 Provenance pruning datagen-7_9-fb 467315962 18190864 \n", + "5 Provenance pruning datagen-7_9-fb 435702119 18190864 \n", + "6 Provenance pruning datagen-7_9-fb 129855334 18190864 \n", + "7 Data pruning datagen-7_9-fb 1210719851 18190864 \n", + "8 Data pruning datagen-7_9-fb 242483171 18190864 \n", + "9 Data pruning datagen-7_9-fb 337239338 18190864 \n", + "10 Data pruning datagen-7_9-fb 208169138 18190864 \n", + "11 Combined pruning datagen-7_9-fb 242483153 18190864 \n", + "12 Combined pruning datagen-7_9-fb 129855334 18190864 \n", + "13 Combined pruning datagen-7_9-fb 337239306 18190864 \n", + "14 Complete provenance datagen-7_5-fb 552752499 8266855 \n", + "15 Complete provenance datagen-7_5-fb 94026180 8266855 \n", + "16 Complete provenance datagen-7_5-fb 256529225 8266855 \n", + "17 Complete provenance datagen-7_5-fb 254670929 8266855 \n", + "18 Provenance pruning datagen-7_5-fb 189922202 8266855 \n", + "19 Provenance pruning datagen-7_5-fb 193732521 8266855 \n", + "20 Provenance pruning datagen-7_5-fb 58425032 8266855 \n", + "21 Data pruning datagen-7_5-fb 99098478 8266855 \n", + "22 Data pruning datagen-7_5-fb 94026180 8266855 \n", + "23 Data pruning datagen-7_5-fb 550374485 8266855 \n", + "24 Data pruning datagen-7_5-fb 133167600 8266855 \n", + "25 Combined pruning datagen-7_5-fb 99098460 8266855 \n", + "26 Combined pruning datagen-7_5-fb 133167568 8266855 \n", + "27 Combined pruning datagen-7_5-fb 58425032 8266855 \n", + "28 Complete provenance cit-Patents 1100333124 30025298 \n", + "29 Complete provenance cit-Patents 2525597803 30025298 \n", + "30 Complete provenance cit-Patents 2834235312 30025298 \n", + "31 Provenance pruning cit-Patents 965132860 30025298 \n", + "32 Provenance pruning cit-Patents 2186387275 30025298 \n", + "33 Data pruning cit-Patents 2795333038 30025298 \n", + "34 Data pruning cit-Patents 1100333124 30025298 \n", + "35 Data pruning cit-Patents 50535370 30025298 \n", + "36 Combined pruning cit-Patents 50535334 30025298 \n", + "37 Combined pruning cit-Patents 965132860 30025298 \n", + "38 Complete provenance graph500-22 213794112 18538268 \n", + "39 Combined pruning graph500-22 184374609 18538268 \n", + "40 Combined pruning datagen-8_4-fb 627415849 50232462 \n", + "41 Combined pruning datagen-8_4-fb 891772088 50232462 \n", + "42 Combined pruning datagen-8_4-fb 364443597 50232462 \n", + "\n", + " blowup \n", + "0 11.443609 \n", + "1 31.986133 \n", + "2 66.852326 \n", + "3 33.045886 \n", + "4 25.689597 \n", + "5 23.951700 \n", + "6 7.138492 \n", + "7 66.556479 \n", + "8 13.329942 \n", + "9 18.538940 \n", + "10 11.443609 \n", + "11 13.329942 \n", + "12 7.138492 \n", + "13 18.538938 \n", + "14 66.863698 \n", + "15 11.373876 \n", + "16 31.031054 \n", + "17 30.806265 \n", + "18 22.973937 \n", + "19 23.434852 \n", + "20 7.067383 \n", + "21 11.987446 \n", + "22 11.373876 \n", + "23 66.576042 \n", + "24 16.108617 \n", + "25 11.987444 \n", + "26 16.108613 \n", + "27 7.067383 \n", + "28 36.646868 \n", + "29 84.115661 \n", + "30 94.394910 \n", + "31 32.143989 \n", + "32 72.818171 \n", + "33 93.099260 \n", + "34 36.646868 \n", + "35 1.683093 \n", + "36 1.683092 \n", + "37 32.143989 \n", + "38 11.532583 \n", + "39 9.945622 \n", + "40 12.490247 \n", + "41 17.752904 \n", + "42 7.255141 " + ] + }, + "execution_count": 182, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "storage_baseline[\"scenario\"] = \"Complete provenance\"\n", + "joinVertices_compare_size[\"scenario\"] = \"Provenance pruning\"\n", + "smart_pruning_compare_size[\"scenario\"] = \"Data pruning\"\n", + "combined[\"scenario\"] = \"Combined pruning\"\n", + "together = [\n", + " storage_baseline,\n", + " joinVertices_compare_size,\n", + " smart_pruning_compare_size,\n", + " combined\n", + "]\n", + "all_together = pd.concat(together)\n", + "awww = all_together[[\"scenario\", \"dataset\", \"total_size\"]][all_together[\"total_size\"] > 1024**2]\n", + "gg_combined = node_sizes.rename(columns={\"total_size\": \"baseline_graph_size\"})\n", + "gg2_combined = pd.merge(awww, gg_combined, on=[\"dataset\"])\n", + "gg2_combined[\"blowup\"] = gg2_combined[\"total_size\"] / gg2_combined[\"baseline_graph_size\"]\n", + "gg2_combined" + ] + }, + { + "cell_type": "code", + "execution_count": 183, + "id": "f7283878-bd3f-4841-8f06-5208b73b88ef", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAw4AAAHDCAYAAACNq00OAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACnKklEQVR4nOzdd3xT5f4H8M/JbNJd6KK0UFaRJSAVVJaCchUUJyhcURRQUFRUFLyAyGWoDHEg/hAQcQByURBEgZYhQ5nKlF1ogdKV7uzk/P5Ic0iatOmCFvi8X6/jSU5OznmSYnu+53m+30cQRVEEERERERFROWS13QAiIiIiIqr7GDgQEREREZFPDByIiIiIiMgnBg5EREREROQTAwciIiIiIvKJgQMREREREfnEwIGIiIiIiHxi4EBERERERD4parsBRHRj+OuvvyCKIpRKZW03hYiIiCrIYrFAEAR06NDB577scSCiGiGKIjgR/Y1JFEWYzWb+fMkr/vug8vDfR91Xmb/f7HEgohrh7Glo27ZtLbeEapper8c///yDZs2aQavV1nZzqI7hvw8qD/991H2HDx+u8L7scSAiIiIiIp8YOBARERERkU8MHIiIiIiIyCcGDkRERERE5BMDByIiIiIi8omBAxERERER+cTAgYiIiIiIfGLgQEREREREPjFwICIiIiIinxg4EBERERGRTwwciIiIiIjIJwYORERERETkEwMHIiIiIiLyiYEDERERERH5xMCBiIiIiIh8YuBAREREREQ+MXAgIiIiIiKfGDgQEREREZFPDByIiIiIiMgnBg5EREREROQTAwciIiIiIvKJgQMREREREfnEwIGIiIiIiHxi4EBERERERD4xcCAiIiIiIp8YOBARERERkU8MHIiIiIiIyCcGDkRERERE5BMDByIiIiIi8omBAxERERER+cTAgYiIiIiIfGLgQEREREREPjFwICIiIiIinxg4EBERERGRT4rabgAREdHVIIoiTCYTiouLUVxcDL1eL60NBoO0NplMMBqN0mOTyQSLxQKz2Qyz2QyLxQKLxQKr1QqLxQqbzQqbzQa73S6tAUhrJ0EQpEUul0Mmk0Mul0Eul0OhUECpVEprpVIJlUrltqjVavj5+UlrjUYjrZ2LVquV1lqtFgoF/6wT0dXD3zA3AVEUIQhCbTeDiKjKbDYbioqKkJ+fj4KC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zw+TJk1yu3hSqVT49NNPMXz4cHzzzTfYuHEj2rdvj6KiIuzduxdmsxn33HNPpSY7qwqVSoWMjAzce++96Ny5M4xGI/bs2QOLxYJRo0b5HDITERGBOXPm4NVXX8WUKVOwePFiJCQkoLCwEPv374fNZsM999zjFoBER0dDo9EgPz8fTz75JOLi4jBr1iyo1Wp88sknGD58OObPn49Vq1ahVatWsFqt2Lt3L0wmE2699VYpqKooURTRr18/dOnSBTKZDH/++ScMBgMeeeQRPP744xU+zlNPPYUjR45g1apVeOyxx3DbbbchLCwMx44dk3qH5syZ43Vol3NOh/T0dGi1Wq934avyXVbW7bffjrZt2+Lw4cPo378/EhMTodFocOLECaSmpiImJga5ubnQ6/XIy8srM7HclwYNGmDGjBl46623MGbMGCxcuBANGzbEmTNncPr0afj7+2PWrFlSl+6UKVOQmpqKLVu2oHfv3mjTpg38/f1x8OBB5OTkIDQ0FJ988skNf7eYPMlkMgQFBSEoKEgK/p1K3zG02WxSj4VOp0Nubq60di7O56YiHcq77BNkSkDhB5nb5HPqK0OlnEOo5H6cg+Iqkspg2ixSpRm4PL5Sdca5zXJlm2gtWVf9LrkgCI4LWj811Gr/cmvsl7549lZH3zkevXQSaunHzgt7b4vr64IglPma6+vethPdSK6LwAFwzC/w888/43//+x82b96MU6dO4fjx41AqlYiNjcXjjz+Of//7317vrLVp0wZr1qzBwoULsXXrVmzevBn+/v7o2LEjHn/88XLnT6gparUaK1aswOzZs7Fjxw4IgoBOnTph6NChXsu0etOzZ0+sXr0aixYtwq5du/D7778jKCgI7du3xxNPPIEHH3zQ7e6Bn58fZs2ahVmzZuHYsWNIS0tDbm4uQkND0a5dO/z8889YtGgRtm3bhl27dkGr1aJFixZS7kPpOS18+eqrr7Bw4UIkJSXBZDKhZcuWGDRoEB566KFKHUcQBEyfPh09evTA8uXLceTIERiNRkRHR2PIkCF49tlny7yD6jqnw7/+9a8yu0Ur+11Wllwux5IlS7BgwQJs3LgRe/fuhVwuR2xsLF5++WUMHToUb731FpKTk7Fx48Zq5Zo88MADaNy4Mb788kvs2bMHJ06cQGhoKB5++GG89NJLbheBISEhWL58Ob777jus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N998U9tNqFVyuRwPP/wwHn744dpuClG5BEGQynpWJwAhIqKaUzcy0oiIiIiIqE5j4EBERERERD4xcCAiIiIiIp8YOBARERERkU8MHIiIiIiIyCcGDkRERERE5BMDByIiIiIi8omBAxERERER+cTAgYiIiIiIfGLgQEREREREPjFwICIiIiIinxg4EBERERGRTwwciIiIiIjIJwYORERERETkEwMHIiIiIiLyiYEDERERERH5xMCBiIiIiIh8YuBAREREREQ+MXAgIiIiIiKfGDgQEREREZFPDByIiIiIiMgnBg5EREREROQTAwciIiIiIvKJgQMREREREfnEwIGIiIiIiHxi4EBERERERD4xcCAiIiIiIp8YOBARERERkU8MHIiIiIiIyCcGDkRERERE5BMDByIiIiIi8omBAxERERER+cTAgYiIiIiIfGLgQEREREREPjFwICIiIiIinxg4EBERERGRTwwciIiIiIjIJwYORERERETkEwMHIiIiIiLyiYEDERERERH5xMCBiIiIiIh8UtR2A4iIiLzR6/VIT09Hfn4+ACA4OBgNGjSARqOp5ZYREd2cGDgQEVGdkZOTg82bN2PXrl04c+YMRFF0e10QBDRt2hR33HEH7rnnHtSvX7+WWkpEdPNh4EBERLUuJycH33//PZKTk2Gz2QBBDrkmHDJ1CASFHwBAtBphN+Xh9JkUnD59Gt99/z169uiBwYMHIyIiopY/ARHRjY+BAxER1Rq73Y5ffvkFX3/9NUwmE2TqIKgjEqAMjIMgV3p9j2izwFqYBrPuBDZv3ozt27fjqaeewqOPPgq5XH6NPwER0c2DgQMREdWK/Px8zJo1C3///TcEhRp+0bdDERwPQRDKfZ8gV0IZ0gSK4HhYC87DnHkQS5cuxe7de/DWW2PZ+0BEdJWwqhIREV1zKSkpePW11/D3339DERADbfz9UIY08Rk0uBIEAcrgxtA2uR+KoEY4ceI4Xn31VRw+fPgqtpyI6ObFwIGIiK6pv/76C2+99RZysrOhirgVfg27QlaSx1AVglwFvwZdoI5ORFGxHhMmTsTWrVtrrsFERASAQ5WIiOga2rVrFz788EPY7YBfw65QBjaskeMKggBVSFPIVEEwXtiO2bNno7CwEA8++GCNHJ+IiNjjQERE18jOnTvxwQcfwA4Z/OJ61FjQ4EqhDYemUS/I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IT4+HufOnYNEIoGbmxtee+01jB8/Xu+0rSqVCt9//z12794NuVwOGxsb9O7dGzNmzEC/fv1a+pCoAZg4EBERERGRQRzjQEREREREBjFxICIiIiIig5g4EBERERGRQUwciIiIiIjIICYORERERERkEBMHIiIiIiIyiIkDEREREREZxMSBiIiIiIgMYuJARESPjKtXr0Imk+n96d27N3x9fTFmzBhER0fj8OHDLRZHZWUlrl692mLb11q1ahVkMhleffXVBq33wQcfQCaT4f3332+hyNo+QRCwceNGjB07Ft7e3vD396/zTcctLSsryyj7JWpuZsYOgIiISB+pVAobGxvxb41Gg7KyMuTl5UEul+Pnn3/GM888gxUrVqBDhw7Ntt//+7//Q2xsLGbNmoWQkJBm2y61ro0bN+KLL74AADg5OcHOzg7Ozs6tGkNOTg6WLVuGiooKbNu2rVX3TdQSmDgQEdEjacGCBfD396+1XKlUYu/evfjss8+QmJiIyMhIbNiwARYWFs2y3+XLl+PGjRvNsi0ynp9//hkA8Pzzz+Nvf/ubUWL44YcfkJiYCD8/P6Psn6i5sasSERG1KRYWFggJCcG6detgamqK1NRUfPfdd8YOix4xJSUlAIABAwYYORKixwcTByIiapP69++PV155BQCwfv16KBQKI0dEjxKNRgMAzfYkioiYOBARURumTRxKS0uRlpZWq/zChQv4+OOPERQUBD8/P/Tp0weDBg3CW2+9hf379+vU1Q5Uzs/PB3Cvq5RMJsOqVat06qWmpmLu3LkYNWoUnnrqKfTp0weDBw/GrFmzcOLEiUYfS2FhIT766CMEBgbC29sbQUFBWL58Oe7cudOg7ajVauzcuRNvvPEG+vfvjz59+mDYsGGYO3cuzp07p1N3+fLlkMlkmDJlSq3tKJVK+Pr6QiaTiWMFasrIyIBMJkP//v1RXV2tM7BdLpfrjW3EiBGQyWTYvXu3uCwlJQUymQzjx4+HUqnEihUrMHLkSHh7e2PEiBFYsGBBndvT54033tBpxw8//BAymQwjRozQqdfYdszNzcVnn32GsWPHwsfHB35+fpg0aRJ27NghJivac7F69WoAQHp6ut4YGtJWNbcbGBiIGzduICIiAn379sWAAQMwZ86cep8josZi4kBERG2Wp6enOIA6NTVVp2zr1q0IDg7Gjh07UFxc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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ax = sns.violinplot(gg2_combined, x=\"blowup\", y=\"scenario\")\n", + "ax.set_ylabel(\"Scenario\")\n", + "ax.set_xlabel(\"Data blowup factor\")\n", + "#plt.savefig(\"/Users/gm/Downloads/blowup.svg\", bbox_inches='tight')\n", + "write_dir = (plot_dir / \"das6\" / \"conclusion\")\n", + "write_dir.mkdir(exist_ok=True, parents=True)\n", + "plt.savefig(write_dir / \"factor.pdf\", bbox_inches='tight')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "47a9b94f", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/results/src/plots.ipynb b/results/src/plots.ipynb index c3f0be6..fdcaeb9 100644 --- a/results/src/plots.ipynb +++ b/results/src/plots.ipynb @@ -22,10 +22,8 @@ "import numpy as np\n", "import seaborn as sns\n", "from matplotlib import pyplot as plt\n", - "from utils import format_filesize, format_seconds\n", - "import matplotlib\n", - "import os\n", - "from matplotlib.ticker import FuncFormatter" + "from utils import format_filesize\n", + "import os" ] }, { @@ -71,8 +69,8 @@ "def parse_experiment_output(root_folder, metric=\"duration\"):\n", " input_files = sorted(root_folder.glob(\"experiment-*/provenance/inputs.json\"))\n", " output_files = sorted(root_folder.glob(\"experiment-*/provenance/outputs.json\"))\n", - " success = sorted(root_folder.glob(\"experiment-*/SUCCESS\"))\n", - " failed = sorted(root_folder.glob(\"experiment-*/FAILED\"))\n", + " # success = sorted(root_folder.glob(\"experiment-*/SUCCESS\"))\n", + " # failed = sorted(root_folder.glob(\"experiment-*/FAILED\"))\n", "\n", " successful_experiments = experiment_ids(input_files).intersection(experiment_ids(output_files))\n", "\n", @@ -146,8 +144,7 @@ "metadata": {}, "outputs": [], "source": [ - "palette = sns.color_palette(\"tab10\")\n", - "algorithm_colors = {\"PageRank\": palette[0], \"WCC\": palette[1], \"SSSP\": palette[2], \"BFS\": palette[3]}" + "palette = sns.color_palette(\"tab10\")" ] }, { @@ -177,7 +174,73 @@ { "cell_type": "code", "execution_count": 9, - "id": "c71352a5-f921-4554-acc6-5bfa15a32347", + "id": "0d09d69b", + "metadata": {}, + "outputs": [], + "source": [ + "def plot_location(location: Path, prefix=Path(\"das6\") / \"final\") -> Path:\n", + " parent = Path(location).parent\n", + " wdir = plot_dir / prefix / parent\n", + " wdir.mkdir(exist_ok=True, parents=True)\n", + " return wdir / Path(location).name" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "7ed7d9e1", + "metadata": {}, + "outputs": [], + "source": [ + "def csv_location(location: Path, prefix=Path(\"das6\") / \"final\" / \"csv\") -> Path:\n", + " parent = Path(location).parent\n", + " wdir = plot_dir / prefix / parent\n", + " wdir.mkdir(exist_ok=True, parents=True)\n", + " return wdir / Path(location).name" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "ab64a04a", + "metadata": {}, + "outputs": [], + "source": [ + "def output_table(data, metric, location):\n", + " stats = data[[\"algorithm\", \"dataset\", metric]]\n", + " stats = stats.groupby(['algorithm', 'dataset'])[metric]\n", + " stats = stats.agg([\"mean\", \"std\", \"min\", \"max\"]).reset_index()\n", + " stats = stats[[\"algorithm\", \"dataset\", \"min\", \"mean\", \"max\", \"std\"]]\n", + " stats.sort_values(by=[\"algorithm\", \"mean\"], ascending=True, inplace=True)\n", + " for column in [\"std\", \"min\", \"mean\", \"max\"]:\n", + " stats[column] = stats[column].apply(lambda x: f'{x:01.2f}')\n", + " stats[\"dataset\"] = [d.replace(\"_\", \"\\\\_\") for d in stats[\"dataset\"]]\n", + " stats.to_csv(csv_location(location), index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 142, + "id": "defc3afe", + "metadata": {}, + "outputs": [], + "source": [ + "def size_table(data, location):\n", + " stats = data[[\"algorithm\", \"dataset\", \"size\"]]\n", + " stats = stats.groupby(['algorithm', 'dataset'])[\"size\"]\n", + " stats = stats.agg([\"mean\", \"min\", \"max\"]).reset_index()\n", + " stats = stats[[\"algorithm\", \"dataset\", \"min\", \"mean\", \"max\"]]\n", + " stats.sort_values(by=[\"algorithm\", \"mean\"], ascending=True, inplace=True)\n", + " for column in [\"min\", \"mean\", \"max\"]:\n", + " stats[column] = stats[column].apply(lambda x: f\"{int(format_filesize(x)[0])} {format_filesize(x)[1]}\" if x != np.nan else x)\n", + " stats[\"dataset\"] = [d.replace(\"_\", \"\\\\_\") for d in stats[\"dataset\"]]\n", + " stats.to_csv(csv_location(location), index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "11e01148", "metadata": {}, "outputs": [ { @@ -193,160 +256,142 @@ " vertical-align: top;\n", " }\n", "\n", - " .dataframe thead th {\n", - " text-align: right;\n", + " .dataframe thead tr th {\n", + " text-align: left;\n", " }\n", "\n", "\n", " \n", - " \n", + " \n", " \n", - " \n", " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
    total_sizedatasetalgorithmsizepretty_size
    9412051dota-leaguesumsum
    115714619kgs0cit-Patentsedges264019585251MB
    18266855datagen-7_5-fbedges10551075581006MB
    29844505datagen-7_6-fb
    1218043970wiki-Talk
    518190864datagen-7_9-fb
    1018538268graph500-22
    030025298cit-Patents
    650232462datagen-8_4-fb
    760699993datagen-8_5-fb
    8139876016datagen-8_9-fbedges26410755982GB
    3175245468datagen-7_7-zfdatagen-8_4-fbedges83336062447GB
    4219958278datagen-7_8-zfdatagen-8_8-zfedges1270700835611GB
    132267897486datagen-8_8-zf5graph500-22edges991389885945MB
    \n", "" ], "text/plain": [ - " total_size dataset\n", - "9 412051 dota-league\n", - "11 5714619 kgs\n", - "1 8266855 datagen-7_5-fb\n", - "2 9844505 datagen-7_6-fb\n", - "12 18043970 wiki-Talk\n", - "5 18190864 datagen-7_9-fb\n", - "10 18538268 graph500-22\n", - "0 30025298 cit-Patents\n", - "6 50232462 datagen-8_4-fb\n", - "7 60699993 datagen-8_5-fb\n", - "8 139876016 datagen-8_9-fb\n", - "3 175245468 datagen-7_7-zf\n", - "4 219958278 datagen-7_8-zf\n", - "13 2267897486 datagen-8_8-zf" + " dataset algorithm size pretty_size\n", + " sum sum \n", + "0 cit-Patents edges 264019585 251MB\n", + "1 datagen-7_5-fb edges 1055107558 1006MB\n", + "2 datagen-7_9-fb edges 2641075598 2GB\n", + "3 datagen-8_4-fb edges 8333606244 7GB\n", + "4 datagen-8_8-zf edges 12707008356 11GB\n", + "5 graph500-22 edges 991389885 945MB" ] }, - "execution_count": 9, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "node_sizes = pd.read_csv(f\"{root_dir}/data/node-sizes.csv\")\n", - "node_sizes.sort_values(by=[\"total_size\", \"dataset\"])" + "data = json.loads(open(\"../data/sizes.json\").read())\n", + "rows = []\n", + "for dataset, metrics in data.items():\n", + " for algorithm, size in metrics.items():\n", + " # if algorithm in [\"vertices\", \"edges\"]:\n", + " # continue\n", + " alg = \"PageRank\" if algorithm == \"PR\" else algorithm\n", + " rows.append({\"algorithm\": alg, \"dataset\": dataset, \"size\": size})\n", + "\n", + "dataset_sizes = pd.DataFrame(rows)\n", + "node_sizes = dataset_sizes[dataset_sizes[\"algorithm\"] == \"edges\"].groupby([\"dataset\"]).agg([\"sum\"]).reset_index()\n", + "node_sizes[\"pretty_size\"] = [f\"{int(format_filesize(x)[0])}{format_filesize(x)[1]}\" for x in node_sizes[\"size\"][\"sum\"]]\n", + "node_sizes" ] }, { - "cell_type": "code", - "execution_count": 10, - "id": "84eae130", + "cell_type": "markdown", + "id": "5df688b0", "metadata": {}, - "outputs": [], "source": [ - "algorithm_names_short = {\n", - " \"pagerank\": \"PageRank\",\n", - " \"sssp\": \"SSSP\",\n", - " \"bfs\": \"BFS\",\n", - " \"lcc\": \"LCC\",\n", - " \"wcc\": \"WCC\",\n", - " \"cdlp\": \"CDLP\",\n", - "}" + "# Baseline" ] }, { "cell_type": "code", - "execution_count": 11, - "id": "9fab2e05", + "execution_count": 13, + "id": "2c9e0da2", "metadata": {}, "outputs": [], "source": [ - "bar_colors = matplotlib.colormaps.get_cmap(\"tab20\")" + "data_dir = Path(\"das6\") / \"20240527-020405-baseline-6-runs\"\n", + "\n", + "baseline = parse_experiment_output(root_dir / \"data\" / data_dir)\n", + "baseline.sort_values(by=[\"algorithm\", \"dataset\"])\n", + "baseline = baseline[(baseline[\"algorithm\"] != \"WCC\") | (baseline[\"dataset\"] != \"datagen-8_8-zf\")]" ] }, { - "cell_type": "markdown", - "id": "5df688b0", + "cell_type": "code", + "execution_count": 14, + "id": "acc72037", "metadata": {}, + "outputs": [], "source": [ - "# Baseline" + "output_table(baseline, \"duration\", \"es01-duration.csv\")" ] }, { "cell_type": "code", - "execution_count": 12, - "id": "2c9e0da2", + "execution_count": 15, + "id": "4cd85826", "metadata": {}, "outputs": [ { @@ -370,520 +415,255 @@ " \n", " \n", " \n", - " config\n", " algorithm\n", " dataset\n", - " run\n", - " storage_format\n", - " compressed\n", - " total_size\n", - " nr_executors\n", - " nr_vertices\n", - " iterations\n", - " duration\n", + " mean\n", + " std\n", + " min\n", + " max\n", " \n", " \n", " \n", " \n", - " 12\n", - " baseline\n", + " 0\n", " BFS\n", " cit-Patents\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 3774768\n", - " 0\n", - " 81.590225\n", + " 82.968899\n", + " 4.015975\n", + " 79.365607\n", + " 88.440500\n", " \n", " \n", - " 16\n", - " baseline\n", + " 1\n", " BFS\n", " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 633432\n", - " 0\n", - " 41.949647\n", + " 34.323108\n", + " 1.200316\n", + " 33.200151\n", + " 36.050193\n", " \n", " \n", - " 9\n", - " baseline\n", + " 2\n", " BFS\n", " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 1387587\n", - " 0\n", - " 103.909232\n", + " 69.310011\n", + " 8.003585\n", + " 62.316827\n", + " 80.586730\n", " \n", " \n", - " 18\n", - " baseline\n", + " 3\n", " BFS\n", " datagen-8_4-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 3809084\n", - " 0\n", - " 228.835858\n", + " 241.785784\n", + " 9.339967\n", + " 224.231653\n", + " 251.477808\n", " \n", " \n", - " 7\n", - " baseline\n", + " 4\n", " BFS\n", " datagen-8_8-zf\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 168308893\n", - " 0\n", - " 194.096829\n", + " 218.721579\n", + " 26.496145\n", + " 184.118673\n", + " 247.358507\n", " \n", " \n", - " 8\n", - " baseline\n", + " 5\n", " BFS\n", " graph500-22\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 2396657\n", - " 0\n", - " 33.833869\n", + " 32.865590\n", + " 1.996534\n", + " 30.442835\n", + " 35.109367\n", " \n", " \n", - " 4\n", - " baseline\n", + " 6\n", " PageRank\n", " cit-Patents\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 3774768\n", - " 0\n", - " 76.718400\n", + " 85.102944\n", + " 4.449141\n", + " 76.204864\n", + " 88.406609\n", " \n", " \n", - " 6\n", - " baseline\n", + " 7\n", " PageRank\n", " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 633432\n", - " 0\n", - " 44.126948\n", + " 39.980476\n", + " 2.020681\n", + " 38.597518\n", + " 43.881411\n", " \n", " \n", - " 5\n", - " baseline\n", + " 8\n", " PageRank\n", " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 1387587\n", - " 0\n", - " 67.496328\n", + " 69.879073\n", + " 1.650790\n", + " 67.773184\n", + " 71.442942\n", " \n", " \n", - " 14\n", - " baseline\n", + " 9\n", " PageRank\n", " datagen-8_4-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 3809084\n", - " 0\n", - " 221.688116\n", + " 215.872856\n", + " 7.115529\n", + " 205.036952\n", + " 227.362958\n", " \n", " \n", - " 19\n", - " baseline\n", + " 10\n", " PageRank\n", " datagen-8_8-zf\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 168308893\n", - " 0\n", - " 232.275335\n", + " 245.949348\n", + " 11.807203\n", + " 223.814733\n", + " 258.346148\n", " \n", " \n", - " 3\n", - " baseline\n", + " 11\n", " PageRank\n", " graph500-22\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 2396657\n", - " 0\n", - " 76.242817\n", + " 78.376377\n", + " 2.035555\n", + " 75.868580\n", + " 81.214934\n", " \n", " \n", - " 15\n", - " baseline\n", + " 12\n", " SSSP\n", " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 633432\n", - " 0\n", - " 43.968590\n", + " 38.116547\n", + " 3.770893\n", + " 34.568512\n", + " 45.163016\n", " \n", " \n", - " 2\n", - " baseline\n", + " 13\n", " SSSP\n", " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 1387587\n", - " 0\n", - " 83.955731\n", + " 76.495710\n", + " 14.168039\n", + " 60.923588\n", + " 94.052360\n", " \n", " \n", - " 1\n", - " baseline\n", + " 14\n", " SSSP\n", " datagen-8_4-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 3809084\n", - " 0\n", - " 229.654970\n", + " 255.830169\n", + " 11.531833\n", + " 234.951463\n", + " 264.237090\n", " \n", " \n", - " 0\n", - " baseline\n", + " 15\n", " SSSP\n", " datagen-8_8-zf\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 168308893\n", - " 0\n", - " 192.158678\n", + " 209.249324\n", + " 30.699337\n", + " 162.001372\n", + " 248.767236\n", " \n", " \n", - " 10\n", - " baseline\n", + " 16\n", " WCC\n", " cit-Patents\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 3774768\n", - " 0\n", - " 160.453424\n", + " 157.944986\n", + " 4.647629\n", + " 152.934529\n", + " 165.286964\n", " \n", " \n", - " 20\n", - " baseline\n", + " 17\n", " WCC\n", " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 633432\n", - " 0\n", - " 33.387272\n", + " 36.768406\n", + " 1.936787\n", + " 33.538608\n", + " 38.795027\n", " \n", " \n", - " 17\n", - " baseline\n", + " 18\n", " WCC\n", " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 1387587\n", - " 0\n", - " 70.140869\n", + " 66.344004\n", + " 3.276751\n", + " 62.888207\n", + " 72.108809\n", " \n", " \n", - " 11\n", - " baseline\n", + " 19\n", " WCC\n", " datagen-8_4-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 3809084\n", - " 0\n", - " 232.656136\n", + " 239.018332\n", + " 5.384535\n", + " 230.888696\n", + " 243.928585\n", " \n", " \n", - " 13\n", - " baseline\n", + " 20\n", " WCC\n", " graph500-22\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 2396657\n", - " 0\n", - " 74.247498\n", + " 72.045441\n", + " 7.965528\n", + " 66.376163\n", + " 82.574074\n", " \n", " \n", "\n", "" ], "text/plain": [ - " config algorithm dataset run storage_format compressed \\\n", - "12 baseline BFS cit-Patents 1 Text False \n", - "16 baseline BFS datagen-7_5-fb 1 Text False \n", - "9 baseline BFS datagen-7_9-fb 1 Text False \n", - "18 baseline BFS datagen-8_4-fb 1 Text False \n", - "7 baseline BFS datagen-8_8-zf 1 Text False \n", - "8 baseline BFS graph500-22 1 Text False \n", - "4 baseline PageRank cit-Patents 1 Text False \n", - "6 baseline PageRank datagen-7_5-fb 1 Text False \n", - "5 baseline PageRank datagen-7_9-fb 1 Text False \n", - "14 baseline PageRank datagen-8_4-fb 1 Text False \n", - "19 baseline PageRank datagen-8_8-zf 1 Text False \n", - "3 baseline PageRank graph500-22 1 Text False \n", - "15 baseline SSSP datagen-7_5-fb 1 Text False \n", - "2 baseline SSSP datagen-7_9-fb 1 Text False \n", - "1 baseline SSSP datagen-8_4-fb 1 Text False \n", - "0 baseline SSSP datagen-8_8-zf 1 Text False \n", - "10 baseline WCC cit-Patents 1 Text False \n", - "20 baseline WCC datagen-7_5-fb 1 Text False \n", - "17 baseline WCC datagen-7_9-fb 1 Text False \n", - "11 baseline WCC datagen-8_4-fb 1 Text False \n", - "13 baseline WCC graph500-22 1 Text False \n", - "\n", - " total_size nr_executors nr_vertices iterations duration \n", - "12 0 7 3774768 0 81.590225 \n", - "16 0 7 633432 0 41.949647 \n", - "9 0 7 1387587 0 103.909232 \n", - "18 0 7 3809084 0 228.835858 \n", - "7 0 7 168308893 0 194.096829 \n", - "8 0 7 2396657 0 33.833869 \n", - "4 0 7 3774768 0 76.718400 \n", - "6 0 7 633432 0 44.126948 \n", - "5 0 7 1387587 0 67.496328 \n", - "14 0 7 3809084 0 221.688116 \n", - "19 0 7 168308893 0 232.275335 \n", - "3 0 7 2396657 0 76.242817 \n", - "15 0 7 633432 0 43.968590 \n", - "2 0 7 1387587 0 83.955731 \n", - "1 0 7 3809084 0 229.654970 \n", - "0 0 7 168308893 0 192.158678 \n", - "10 0 7 3774768 0 160.453424 \n", - "20 0 7 633432 0 33.387272 \n", - "17 0 7 1387587 0 70.140869 \n", - "11 0 7 3809084 0 232.656136 \n", - "13 0 7 2396657 0 74.247498 " + " algorithm dataset mean std min max\n", + "0 BFS cit-Patents 82.968899 4.015975 79.365607 88.440500\n", + "1 BFS datagen-7_5-fb 34.323108 1.200316 33.200151 36.050193\n", + "2 BFS datagen-7_9-fb 69.310011 8.003585 62.316827 80.586730\n", + "3 BFS datagen-8_4-fb 241.785784 9.339967 224.231653 251.477808\n", + "4 BFS datagen-8_8-zf 218.721579 26.496145 184.118673 247.358507\n", + "5 BFS graph500-22 32.865590 1.996534 30.442835 35.109367\n", + "6 PageRank cit-Patents 85.102944 4.449141 76.204864 88.406609\n", + "7 PageRank datagen-7_5-fb 39.980476 2.020681 38.597518 43.881411\n", + "8 PageRank datagen-7_9-fb 69.879073 1.650790 67.773184 71.442942\n", + "9 PageRank datagen-8_4-fb 215.872856 7.115529 205.036952 227.362958\n", + "10 PageRank datagen-8_8-zf 245.949348 11.807203 223.814733 258.346148\n", + "11 PageRank graph500-22 78.376377 2.035555 75.868580 81.214934\n", + "12 SSSP datagen-7_5-fb 38.116547 3.770893 34.568512 45.163016\n", + "13 SSSP datagen-7_9-fb 76.495710 14.168039 60.923588 94.052360\n", + "14 SSSP datagen-8_4-fb 255.830169 11.531833 234.951463 264.237090\n", + "15 SSSP datagen-8_8-zf 209.249324 30.699337 162.001372 248.767236\n", + "16 WCC cit-Patents 157.944986 4.647629 152.934529 165.286964\n", + "17 WCC datagen-7_5-fb 36.768406 1.936787 33.538608 38.795027\n", + "18 WCC datagen-7_9-fb 66.344004 3.276751 62.888207 72.108809\n", + "19 WCC datagen-8_4-fb 239.018332 5.384535 230.888696 243.928585\n", + "20 WCC graph500-22 72.045441 7.965528 66.376163 82.574074" ] }, - "execution_count": 12, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "data_dir = Path(\"das6\") / \"20240521-010312-baseline\"\n", - "baseline_scaling = parse_experiment_output(root_dir / \"data\" / data_dir)\n", - "#baseline_scaling = baseline_scaling[baseline_scaling[\"nr_executors\"] == 8]\n", - "baseline_scaling.sort_values(by=[\"algorithm\", \"dataset\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "cbc5955a", - "metadata": {}, - "outputs": [], - "source": [ - "def values_plot(ds, metric=(\"duration\", \"Duration\", \"mm:ss\"), name=\"baseline\", export_legend=False, legend_output_dir=None):\n", - " algorithms = sorted(list(ds[\"algorithm\"].unique()))\n", - " datasets = list(ds[\"dataset\"].unique())\n", - " datasets = sorted([(d, node_sizes[node_sizes[\"dataset\"] == d].iloc[0][\"total_size\"]) for d in datasets], key=lambda v: v[1])\n", - " datasets = [d[0] for d in datasets]\n", - "\n", - " num_algorithms = len(algorithms)\n", - " num_datasets = len(datasets)\n", - "\n", - " #bar_width = 1 / (num_algorithms + 1)\n", - " bar_width = 1 / (num_datasets + 1)\n", - "\n", - " _, ax = plt.subplots()\n", - "\n", - " max_metric_value = ds[metric[0]].max()\n", - "\n", - " for idx, dataset in enumerate(datasets):\n", - " positions = [i + idx * bar_width for i in range(num_algorithms)]\n", - " sizes = []\n", - " for algorithm in algorithms:\n", - " p = ds[(ds[\"algorithm\"] == algorithm) & (ds[\"dataset\"] == dataset)]\n", - " # print(p.shape[0])\n", - " if p.shape[0] == 1:\n", - " sizes.append(p.iloc[0][metric[0]])\n", - " else:\n", - " sizes.append(0)\n", - " # ax.bar(positions, sizes, yerr=errors, width=bar_width, label=dataset, capsize=2, align='center', color=bar_colors(idx))\n", - " ax.bar(positions, sizes, width=bar_width, label=dataset, capsize=2, align='center', color=bar_colors(idx))\n", - "\n", - " ax.set_title(f\"{metric[1]} for {name} scenario\")\n", - " ax.set_ylabel(f\"{metric[1]} ({metric[2]})\")\n", - " ax.set_xlabel(\"Algorithm\")\n", - " #ax.set_xlabel(\"Dataset\")\n", - " #ax.set_xticks([i + bar_width * (num_algorithms - 1) / 2 for i in range(num_datasets)])\n", - " #ax.set_xticklabels(datasets, rotation=45, ha='right')\n", - " func = None\n", - " if metric[0] == \"duration\":\n", - " y_min = 0\n", - " y_max = max_metric_value\n", - "\n", - " num_ticks = 10 # or any desired number of ticks\n", - " y_ticks = np.linspace(y_min, y_max, num_ticks)\n", - " ax.set_yticks(y_ticks)\n", - " func = format_seconds\n", - " elif metric[0] == \"total_size\":\n", - " y_min = 0\n", - " y_max = max_metric_value\n", - " # y_max = 2**29\n", - "\n", - " num_ticks = 10 # or any desired number of ticks\n", - " y_ticks = np.linspace(y_min, y_max, num_ticks)\n", - " ax.set_yticks(y_ticks)\n", - " func = lambda x: f\"{int(format_filesize(x)[0])}{format_filesize(x)[1]}\"\n", - " else:\n", - " raise Exception(\"unknown metric\")\n", - "\n", - " ax.yaxis.set_major_formatter(FuncFormatter(lambda x, _: func(x)))\n", - " ax.set_xticks([i + bar_width * (num_datasets - 1) / 2 for i in range(num_algorithms)])\n", - " # ax.set_xticklabels([algorithm_names_short[a.lower()] for a in algorithms], rotation=45, ha='right')\n", - " ax.set_xticklabels([algorithm_names_short[a.lower()] for a in algorithms])\n", - "\n", - " if export_legend:\n", - " # handles, labels = ax.get_legend_handles_labels()\n", - " # print(handles, labels)\n", - " # order = [0,2,1]\n", - " legend = ax.legend(\n", - " #[handles[idx] for idx in order],\n", - " #[labels[idx] for idx in order],\n", - " loc='center left', bbox_to_anchor=(1.02, 0.5), ncols=6\n", - " )\n", - " legend.get_title().set_multialignment('center')\n", - " fig = legend.figure\n", - " fig.canvas.draw()\n", - " bbox = legend.get_window_extent()\n", - " bbox = bbox.from_extents(*(bbox.extents + np.array([-5,-5,5,5])))\n", - " bbox = bbox.transformed(fig.dpi_scale_trans.inverted())\n", - " fig.savefig(legend_output_dir / \"legend.pdf\", dpi=\"figure\", bbox_inches=bbox)\n", - " legend.remove()" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "cd5ff24f", - "metadata": {}, - "outputs": [], - "source": [ - "write_dir = plot_dir / data_dir\n", - "write_dir.mkdir(exist_ok=True, parents=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "2734cc33", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "values_plot(baseline_scaling)\n", - "plt.savefig(write_dir / \"duration.pdf\", bbox_inches='tight')\n", - "plt.clf()" + "baseline_grouped = baseline.groupby(['algorithm', 'dataset'])[\"duration\"]\n", + "baseline_stats = baseline_grouped.agg([\"mean\", \"std\", \"min\", \"max\"]).reset_index()\n", + "baseline_stats" ] }, { "cell_type": "code", "execution_count": 16, - "id": "3ec894db", - "metadata": {}, - "outputs": [], - "source": [ - "# values_plot(baseline_scaling, metric=(\"total_size\", \"Total size\", \"bytes\"))\n", - "# plt.savefig(write_dir / \"total_size.pdf\", bbox_inches='tight')\n", - "# plt.clf()" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "4d563c49", + "id": "3a149c1c", "metadata": {}, "outputs": [ { "data": { + "image/png": "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1YABA3To0CE9/fTTWr58uVavXq1FixZp06ZNat++va5fv66goCBdvnw5w+8vMTFRy5Yt0+effy5JeuaZZ1SjRg3b/hs3buj9999XfHy8OnbsqM2bN2vp0qVatmyZNm3apNdee02S9Ouvv6Z6W/bff/+tvXv3avz48dq6dasWLVqk9evXq27dupKkr776ynbHRVoWLFigkSNHymw269NPPyVwBAAgizHTEYBNly5d7rm/R48eGjhwYJr7mzZtes/j+/Xrl2JVzMqVK2v+/PkaMWKEdu7cKUmKiorSunXrtG7dOklSoUKF9NJLL6l3795yd3dPxzsBACDzxcbG6uTJk/rll18UEhIiSXrjjTdUuHBhJSQkKDQ0VCaTScOGDVPZsmXtjq1fv75atmyphQsX6ujRo7btJ06c0K+//iqTyaTg4GD5+fnZ9vn6+ur7779Xy5YtFRsba3e+VatWaffu3SpatKh++OEHeXh42Pbly5dPY8eO1fHjx7V3715Nnz5dgwcPTvF+Fi5cqM2bN9tts1qtun37ts6dO6fo6GhJUp06dTRhwgS7djt27FBCQoKKFCmiDz/80O4RKh4eHho6dKjmzp2rhIQEHT161Pac6LsNGDBArVu3tqt78ODBateuna5fv65Tp06lepwkhYSEaPjw4XJyctK///1vtWrVKtV2AADg4SF0BGBToUIFeXp62l5bLBbdvn1bZ86cUXx8vKZPn66YmBi9//77KW5/lqSqVavK1dU1zfN7e3unuv3xxx/X7NmzdejQIa1cuVKbNm3SgQMHlJCQIEmKjIzU5MmTtXz5cv388892t6ABAPAw3O8Xc5L00ksv6a233pJ0Z8bjqlWrFBcXl+rYaLVabcHg3QHiX3/9JUl6+umn7QLHZD4+PmrWrJl+/fVXu+0rV66UJDVr1swucExmMpn04osvau/evVqzZk2qoePFixd18eLFVN9bsWLF1KpVKz333HOqV69eiv1NmzbV7t27FRsbaxc4JouLi1OBAgV0+fJlxcTEpNpH48aNU2zz9fW1fX3z5s1Uj1u2bJmGDRsmi8WiL7/8Us8//3yq7QAAwMNF6AjA5sMPP1Tt2rVTbI+Pj9fixYv18ccfa+bMmUpKStKoUaNStPv6669VsmTJB+6/UqVKqlSpkvr376+YmBjt2rVLGzdu1JIlSxQZGamwsDC99dZb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JNVjxo0bp+eee07+/v6qVauW3nzzTa1bty5F20WLFsnPz0/fffedjh07pgEDBqhOnTry9/dX69atNW3aNCUmJmboGqdmwYIFCg0NlZ+fn/r06ePw+ZLDxKZNm6bY5+zsrFq1aklSqu/5n5KvweLFiyVJn376qfz8/PTaa6+laPvrr7+qbdu28vf317PPPqv33ntPp0+fduCd3Bu3VwMAAAAAAGRzSUlJ6tevn1avXi0PDw/VqVNHCQkJmj9/vrZv356ifVhYmDp37qyIiAj5+PioVq1aslqtOnz4sNavX6/169drwoQJeuGFF+Th4aHWrVsrNDRUly5dUo0aNVSyZEmVLl1a0p0FZjp16qQTJ06oSJEiqlGjhpydnXX8+HFt375d27dv18WLF9WzZ09b/+fOndPrr7+uc+fOqXjx4mrUqJEiIiI0ZcoUbdu2LdUVso8fP64333xT4eHhKl68uOrVq6fbt29r+/bt2rRpk/r06aOBAwemOG7v3r36/vvv5enpqerVqysqKko7duzQuHHjdOrUKY0ZM+aBr/vNmzc1YcIESdKIESPk4uLywOdKlnwbe758+VLd7+x8J647efLkfc+V/BzKPXv26OzZs6pSpYrKly8vX19fu3bz58/X8ePHVb58eTVu3FhHjx5VSEiIVqxYof/85z+qUaOGg+8qlfdh+BkBAAAAAABgqLlz52r16tV6/PHH9eOPP6po0aKSpFOnTqW6KvHnn3+uiIgIdezYUSNHjpTJZJIkJSYmauzYsZo9e7amT5+uF154QQULFtT48ePVt29fXbp0SR06dFC7du1s55o8ebJOnDihxo0b69tvv7UFb1arVVOmTNGECRM0ffp0u9BxxIgROnfunNq3b69Ro0bZVmNet26d+vfvL4vFYldvYmKi+vfvr/DwcPXq1UsDBgywhW/Hjh1Tt27dNGnSJNuMybutXbtW7dq104gRI+Tu7i5J+uuvv9SvXz8tWLBAb731looUKfJA13369Om6evWqGjVqlObzHjPK19dXf//9t7Zv3662bdva7bNarbbnM0ZGRt73XMnPoRw6dKjOnj2rF198MdXvh+PHjysoKEj9+/eXyWSSxWLRhAkTNHXqVA0ePFh//PGH7XobhdurAQAAAAAAsrlZs2ZJkkaNGmULHCWpXLly+uCDD1K0L1asmOrVq6dBgwbZAkfpziy6l19+WZJ0/vz5dPWdL18+NWjQQIMHD7ab6WcymdSpUydJdwKy2NhYSdLhw4e1adMmeXt72wWOktSwYUP16NEjRR9//fWXTp48qaeeekpvv/22XQD2xBNPaOjQoZKkqVOnpjg2b968GjlypC1wlKTmzZurZMmSslqtOn78eLre5z/FxMTYrnu/fv0e6Bypad++vSRp3Lhx2rdvn227xWLRN998o7///lvS/57TaIRKlSrZAkfpzqrw77zzjipUqKCzZ8+m61bujGKmIwAAAAAAQDYWERGhEydOyNPTM9XZdo0bN5aLi4sSEhJs2z788MMU7W7duqVjx45pw4YNkmTX/l6CgoJSbIuOjtaJEye0d+9e27aEhAS5ublp06ZNkqQmTZrYBY7JWrZsqYkTJ9pt27JliySluUhLw4YNZTabtXfvXsXExNgFjJUqVZKbm1uKY4oWLapz584pOjo6He8ypcWLF+v69euqX7++/P39H+gcqenUqZO2bdumFStW6OWXX5a/v78KFy6sI0eOKDw8XK+88ormzp1r6MzDF1980S58lu6Exk2aNNHRo0e1ffv2VJ8x6QhCRwAAAAAAgGwsPDxc0p3Zi/8MjqQ7qx4XL15cZ8+etdt+8uRJzZkzR3v37tWZM2d0/fp1SbKdI7XnKqbl0qVLmjNnjkJDQ3X69Gnbrb9315N8vgsXLkiSSpQokeq5SpUqlWLbxYsXJUnBwcEKDg6+Zy0REREqU6aM7fVjjz2Warvk0C65rh07dmju3Lkp2vn6+qa6QMyvv/4q6X8zE41iNpv19ddfa86cOZo3b54OHTokDw8P1a5dWxMnTtSpU6c0d+5c2/tasWKFVqxYkeI8tWrVss1avZ/Urrn0v9Wuk7/HjEToCAAAAAAAkAPcKyR0cnKyez1jxgx98sknslqt8vHxUe3atVWuXDlVqlRJJUqU0EsvvZTufv/880+98847SkhIUJEiRVStWjWVL19eFStWVEBAgBo2bGjXPnkG5T+f23iv95HctlatWipevPg96/nnYi6pBbGpCQsLS3Wl7YCAgBShY0REhHbv3q18+fKlusq2o8xmszp37qzOnTun2PfXX39JkkqWLCnpzmrXqdV9963y95PajFPpf38WRj/PUSJ0BAAAAAAAyNaSQ7hLly7JYrHIbLZfosNqtery5cu21+fPn9dnn30mJycnffnll2rRooVd+4MHD6a77+joaH3wwQdKSEjQ8OHD1blzZ7uQL3n25N2SZ8+l9czI5JmQd0t+TuWLL76oDh06pLu+jGjXrp3dAjn3sn79elksFjVp0kR58uQxtI6wsDCFhYXJz88v1QVukm81r1atmiSpf//+6t+/v0N9RkREpLr93LlzktKeleoIFpIBAAAAAADIxooUKaIKFSooOjpa69evT7F/69atun37tu313r17lZSUpIoVK6YIHCXZzvHPmYipzRg8duyYbt26JS8vL7366qsp2txdT/L5nn32WUl3VqpO7bmRyTP57hYQECBJWrVqVYp9krR//341b95cvXv3VmJiYqptjJT8rMqnn37a8HMvXLhQ3bp104IFC1LsO3TokHbv3q0CBQrYrqMRUvu+SUxM1MqVKyVJderUMayvZISOAAAAAAAA2Vy3bt0kSR999JFOnTpl237x4kWNGjXKrq2Xl5ck6cSJE3ZtJWn58uWaNGmSpJSrIycvxnLz5s0U57p27Zp27Nhh137Lli0aO3as7XVcXJykOzP0atasqYsXL2r06NF2weOOHTts/d+tZcuW8vb21tq1a/XVV1/ZHRMREaH3339fYWFhKlq0aKbcCvxP+/fvlyRDF5BJ1qxZM5lMJk2fPt3uOZwXL17UO++8I6vVql69esnDw8OwPlesWKF58+bZXicmJmrMmDE6ffq0qlSpkuYCPo7g9moAAAAAAIBsLjAwUDt27ND8+fP14osvqk6dOnJyctLWrVtVpEgRFS5cWFeuXJF0Z9agv7+/9u/frzZt2qhWrVpyd3fXkSNHFBYWJh8fH127dk3R0dG6fv26ChQoIEkqV66cJGnixInauXOn2rRpo2bNmqlFixZasWKFunTpopo1a6pAgQI6deqUjh49Ki8vLxUpUkSXL1/WlStXVKxYMUnSp59+qk6dOmnevHnasGGDqlWrpqtXr2rnzp0qXbq0Tp8+bfdsxjx58uibb75Rjx49NGnSJC1cuFCVK1dWYmKiQkNDFRcXpyeffFJDhgx5KNc7+bbj1G5/dpS/v7+6d++uqVOnqnXr1qpVq5Ykadu2bYqLi1Pbtm31xhtvGNpnjRo1NHz4cM2ZM0elS5fWgQMHdO7cORUvXlwTJkxI93MxM4LQEQAAAAAAZGsl8hfL6hIyJLPqHTNmjGrVqqXZs2drx44dcnV1VdOmTTVkyBC9+uqrtnZOTk6aPn26pkyZohUrVig0NFROTk4qVaqU+vXrp65du2rIkCFatWqVVqxYYXuG4htvvKFTp05p7dq1Wr9+vcqXL69mzZrpiy++0E8//aSlS5dq//79slgsKlGihLp27apu3bppypQpmjFjhlasWKEqVapIkkqXLq2FCxcqODhYa9eu1erVq1W0aFH17dtXzzzzjDp16iRPT0+791etWjUtXbpU06ZN07p167R582Z5eHioQoUKtmc9Js/GzEzx8fG6deuWpLRXxnbUO++8o1KlSmnOnDnaunWr8ubNqyeffFIdO3bU//3f/xkeAvbq1Uvh4eH66aeftGrVKhUsWFCdOnVSUFCQChcubGhfyUzWjKyPns3t379f8fHxqlSpkqFTUB8l0dHROnToENfQAVxDY3AdHcc1dBzX0FiM047je9JxXENjcB0dxzV0HNfw0ZHawik5QU6t2wi3bt3S+fPn5ePjo3z58qXY//vvv2vgwIFq1aqVvvjiiyyoEA/Do/ndDwAAAAAAcoScGtzl1LqNcO3aNbVp00YtWrRQeHi43b7w8HBNnDhRklJd5Aa5B7dXAwAAAAAAwDClS5fWCy+8oN9++03NmjXTU089JS8vL129elW7d+9WfHy8OnTooOeeey6rS31gV69e1SeffJLh4/r06SNfX99MqCj7IXQEAAAAAACAoT7//HM1aNBAixcv1smTJ3Xt2jUVKFBAtWvXVocOHXL8LMfo6GgtW7Ysw8e99NJLhI4AAAAAAADAg3ByclJgYKACAwOzupRMUbJkSR05ciSry8jWHt0HDAAAAAAAAADIFISOAAAAAAAAAAxF6AgAAAAAAADAUISOAAAAAAAAAAxF6AgAAAAAAADAUISOAAAAAAAAAAxF6AgAAAAAAADAUISOAAAAAAAAAAxF6AgAAAAAAADAUISOAAAAAAAAAAxlslqt1qwuwii7du2S1WqVi4uLTCZTVpeTI1mtViUkJHANHcA1NAbX0XFcQ8flpmvo6uoqPz+/LK2Bcdpxuel7MqtwDY3BdXQc19BxuekaZodxGo8Oq9WaI/7OZHWdWd1/buCc1QUYKfmbgW+KB2cymeTq6prVZeRoXENjcB0dxzV0HNfQWIzTjuN70nFcQ2NwHR3HNXQc1/DRYbVYZDLnvBs1s6ruc+fOqWnTpsqXL5927Nhh2379+nV9/fXXql69utq0aZPu87322mvavn17iu0mk0kuLi7Knz+/KlasqDZt2qhVq1YOf9Z70DqNcvHiRY0bN04dO3ZUQEDAQ+8/N8lVoWONGjWyugQAAJAGxmkAAPAgTGaz9kz6XlEXLmZ1KenmWcJb1fv0yuoy7AwfPlwrVqyQv7//Ax1fo0YNlSxZ0m5bfHy8Lly4oA0bNmjDhg3atGmTPvvssyyt01FBQUE6ePCgXnnllSzpPzfJVaEjAAAAAADIfaIuXNTNM2eyuowcoVixYlq+fLmcnJzsticlJTl03g4dOqhdu3ap7lu9erWCgoK0ePFitWjRQk2aNHngfhyt01FZ3X9ukvPmJwMAAAAAACBVLi4u8vX1VdmyZR9an02aNLEFjX/88cdD6xfZG6EjAAAAAABADrF+/Xr17t1b9erVU/Xq1fXCCy9owoQJunHjhqQ7z3T08/NTzZo17V6vWrVKkjRs2DD5+flp0aJFhtZVpkwZSVJkZKTd9qtXr+rLL79Uu3btVLNmTVWpUkV169ZVjx49tH79elu79Na5Zs0adevWTbVr15a/v79atGihf//737p27VqKmpo0aaLKlSsrMTFR//nPf9SqVStVq1ZNtWvX1oABA3T48GFb223btsnPz8+2rUuXLvLz89O2bdsk3VlYZu7cuerYsaPq1q2ratWqqVmzZhoxYoTOnj1rwBXMfQgdAQAAAAAAcoDPP/9cPXr00Lp161S6dGnVr19ft27d0vfff69XXnlF169fT3GMh4eHWrdureLFi0u682zG1q1bq3Tp0obWdvToUUmSj4+PbVtYWJjatGmjyZMn6/r166pVq5bq16+vPHnyaP369erRo4d+++23dNf5ySefqHfv3tq2bZvKlSunxo0bKyEhQf/5z3/Uvn17hYWFpVrbwIEDNW7cOHl4eKhhw4ZycXHRn3/+qY4dO+rkyZOSpMKFC6t169bKnz+/JOmZZ55R69atVbhwYUnSqFGjNHLkSB0+fFhVqlRRw4YNZbVa9csvv6hdu3Y6ffq0odczN+CZjgAAAAAAANncmjVr9MMPP6hAgQKaOnWqqlWrJunOYi5vvfWWVq9era+++krdu3e3O65gwYIaP368+vbtq0uXLt3z2YwPauHChdqwYYMk6cUXX7Rt//zzzxUREaGOHTtq5MiRtpWtExMTNXbsWM2ePVvTp0/XCy+8cN86lyxZop9++kklS5bUpEmTVKFCBUl3nsE4fvx4/ec//9GgQYO0YMECuxW0k5KStH37ds2ePVtPPfWUJCkmJkZdu3bV7t279dNPP+mjjz6Sr6+vxo8frzZt2ujGjRvq3bu3ateuLUm6dOmSfvnlFxUoUEDLli1T0aJFbeceOnSoli5dqh9//FEfffSRodc1pyN0BAAAAAAAyOZmzpwpSXr77bdtgaMkubq6avjw4Tp69GiqMx2NMm/ePG3evNluW3R0tI4cOaJz585Jknr37m27rVu6s6hNvXr1NGjQILsg0NnZWS+//LJmz56t8+fPp6v/KVOmSJJGjx5tCxwlycnJSYMHD9bGjRt14MABbdmyRc8884zdsW+88YYtcJQkd3d3vfLKK9q9e7eOHTt2374jIiJktVqVL18+FShQwK7vQYMGqXr16qpYsWK63sejhNARAAAAAAAgG7Nardq+fbskqXnz5in2lyhRwvYsxOQA0Gi7d+/W7t27ba9NJpPc3d1VuHBhvfDCC2rfvr2effZZu2M+/PDDFOe5deuWjh07ZpsZmZCQcN++L1++rOPHj8vZ2Vm1atVKsd9sNqt+/fo6evSotm7dmiJ0rFGjRopjkmcrxsTE3Lf/ChUqyMvLS2fPnlX79u3VunVr1atXT5UqVVKJEiXUuXPn+57jUUToCAAAAAAAkI1dv35d8fHxypMnjwoWLGjYeXfs2KG5c+em2O7r66s+ffrYbfv0008f6LbskydPas6cOdq7d6/OnDljm42ZPPPRarXe9xwXL16UdOe2bH9//3u2vXDhQoptyc9pvJuTk5MkyWKx3Ld/Nzc3TZw4UW+//baOHj2qL774Ql988YUKFSqkhg0bqn379nYzPHEHoSMAAAAAAEA2lpiYKEl2tygbISwsTMuWLUuxPSAgIEXo+CBmzJihTz75RFarVT4+Pqpdu7bKlStnmyH40ksvpes8ycHgY489poYNG96zbdWqVVNsM+K61axZUytXrtSGDRu0bt06bdu2TadPn9aiRYu0aNEi9e7dW4MGDXK4n9yE0BEAAAAAACAbK1CggFxcXBQbG6tr167Jy8srRZuQkBB5eHioXLly6T5vu3btDF9UJtn58+f12WefycnJSV9++aVatGhht//gwYPpPleRIkUk3ZlxOH78eEPrzAhXV1c1bdpUTZs2lXRngZk5c+Zo8uTJmjJlijp16qRixYplWX3ZjTmrCwAAAAAAAEDaXFxcbIvHrFmzJsX+a9eu6f3339fbb7+d5jmMniV5P3v37lVSUpIqVqyYInCUpPXr10tKeXtzanX6+PjIx8dHERER2r9/f6r9vf3222rXrp2WL1/uUN2p9b9q1So999xzGjlypN324sWLa9CgQfLx8ZHFYlF4eLhDfec2hI4AAAAAAADZXJcuXSRJX3zxhY4ePWrbHhcXp5EjRyopKUmtWrWSu7t7qse7ublJkm7evJn5xUq22ZgnTpzQqVOn7PYtX75ckyZNkiTFx8fb7Uurzm7dukmS3n33XR0+fNhu38yZM/Xbb7/p6NGjql69ukN1p9a/n5+fzpw5o5CQEO3atcuu/bZt23Tx4kXlzZtX5cuXd6jv3IbbqwEAAAAAALK5559/Xq+99pp+/vlntW3bVjVr1pSnp6f27duniIgI+fr6asiQIYqOjk71+OTbridOnKidO3eqTZs2atasWabVGxAQIH9/f+3fv19t2rRRrVq15O7uriNHjigsLEw+Pj66du2aoqOjdf36dRUoUOCedXbq1En79+/X4sWL1b59e1WuXFnFixfXsWPHdOrUKZnNZn322WcqUaKEQ3WXK1dOu3fv1kcffaRly5apa9euqlGjht566y199dVX6tSpk6pXr66iRYsqIiJCe/bskdVq1bBhw+Tp6enoZctVCB0BAAAAAEC25lnCO6tLyJDMqvfDDz9UQECAZs2apYMHDyo2NlYlSpRQr1691LNnT3l6eqYZOr7xxhs6deqU1q5dq/Xr16t8+fKZGjo6OTlp+vTpmjJlilasWKHQ0FA5OTmpVKlS6tevn7p27aohQ4Zo1apVWrFihTp06HDPOk0mkz777DM1atRI8+bN04EDB3T48GEVK1ZMrVq10ptvvqkqVao4XPegQYN05coV7dixQxs2bFDdunVVo0YN9enTRyVLltS8efN05MgR7d+/XwUKFFDz5s31+uuvs3p1KkzW9KxNDgAAAAAAkAWsFotM5pz3dLicWjdgFEJHAAAAAAAAAIYicgcAAAAAAABgKEJHAAAAAAAAAIYidAQAAAAAAABgKEJHAAAAAAAAAIYidAQAAAAAAABgKEJHAAAAAAAAAIYidAQAAAAAAABgKEJHAAAAAAAAAIYidAQAAAAAAABgKOesLgBA5vv00081ffp0lS1bVn/++Wea7bp166aNGzdKkoYPH65XX3011XaHDx9WmzZtJElLly6Vn5+f3f5jx45p4cKF2rZtm86cOaO4uDg99thjqlChglq0aKH27dvLzc3tvnWfP39e8+fP1+bNm3Xq1ClFR0crb968evzxx9WoUSO9/PLLyp8/f3ovAwAA2dbhw4e1YMECbdmyReHh4YqLi1PBggX1xBNPqFGjRvrXv/51z7FzzZo1+vXXX7Vnzx5duXJFZrNZhQoV0pNPPqnnnntOLVq0uGf/8fHxWrRokVauXKkjR47o2rVr8vDwUNGiRVW7dm0FBgbK398/1WObNGmi8+fPp7rP2dlZ7u7u8vb2Vu3atfX666+rVKlS6b8wAAAgxzJZrVZrVhcBIHOtXbtWvXr1kiRt2bJFBQsWTNEmNjZWAQEBiouLkyQ1atRI33//farnmzFjhsaOHasiRYrYQkrpzg8s48aN08yZM2W1WuXk5KTixYsrf/78unDhgq5fvy5J8vHx0VdffaVq1aqlen6LxaIpU6bo22+/VWJiokwmk4oUKaIiRYooPDxcV65ckSR5eXnp3//+txo2bPjA1wYAgKz2zTffaNKkSbJYLPL09FTp0qXl4uKiy5cv68KFC5Ikb29vBQcHq0qVKnbHxsbGasCAAVq3bp0kqUiRIipevLisVqvOnTtnG3uffvppTZo0KdVf1oWFhal79+46c+aMTCaTSpUqJS8vL8XFxen06dOKjY2VyWRSx44dNWLECJlMJrvjk0NHb29veXt72+1LSkrSrVu3FBYWpsTERLm6uurrr79WkyZNjLp8AAAgm2KmI/AIqFWrllxcXJSQkKDdu3eradOmKdps375dcXFxevzxx3X8+HFt375d8fHxcnV1TdF2x44dkqRnn33Wti02Nlavvfaa9u3bp3z58qlnz57q1KmTPD09bW22bt2qcePG6eDBg3r99dc1Z84cVaxY0e7cVqtVQUFBWr16tVxdXdWrVy+98cYbdkHp33//rXHjxmnLli3q06ePpkyZonr16jl8nQAAeNgWLlyo4OBgeXh46NNPP1Xz5s3l5ORk23/ixAm9//772rNnj7p166bly5fbjYkjR47UunXrVL58eY0bN85uNqLVatXGjRs1dOhQ7dy5U0FBQZo5c6Zd//Hx8erRo4fOnDmjpk2bauTIkSpWrJhtf1xcnObPn69PPvlEs2fPlpeXlwYMGJDqe2nfvr369++f6r6zZ8+qX79+Onz4sN577z39+eefqf4SFAAA5B480xF4BOTNm9f2Q8iuXbtSbZM8Y7FNmzYqXbq0oqOjbeHiP6UWOn7yySfat2+f8ufPr+nTp6tnz552gaMk1alTRz///LN8fX0VHR2toUOHymKx2LWZOnWqLXCcOHGi3n777RQ/lFSuXFk//PCDateuraSkJA0bNkzR0dEZuCIAAGQPkydPliQNGTJEzz//vF3gKEm+vr6aNGmSChUqpGvXrmnGjBm2fefPn9fSpUslSRMnTkxx+7PJZFL9+vX15ZdfSpJCQ0O1ZcsWuza///67Tp8+rRIlSuirr76yCxwlKU+ePHr11VfVt29fSdKPP/6oqKioDL/PUqVKafz48ZKkmzdvKiQkJMPnAAA8PNwUCyMQOgKPiGeeeUZS2qHjhg0bJEl169ZV/fr17bbd7cSJE4qMjJTJZLKFjnv27NEvv/wiSRo0aJCqVq2aZh158+bV0KFDJUmHDh2y++Hn0qVL+uabbyRJr7/++j1vm3Z2drbd4hUREaFff/01zbYAAGRHN27cUFhYmCTpySefTLNdwYIF1axZM0nSvn37bNv//vtv2y3Zvr6+aR4fEBCgsmXLSpL27t1rt2///v2SpIoVK6Z6d0Oyl156SZIUHR2to0eP3uNdpe2JJ56w1bFnz54HOgeAR5PFkjMDsIddt5+fn/z8/HTz5s0HPsf169f10Ucf2X6p9ai6evWqxowZo6ZNm6pq1aqqWbOmXnvtNf3xxx+Z2u+AAQPk5+enRYsWZfhYq9WqKVOmqHnz5qpatapq166t6dOna+jQofLz89P06dONL/g+uL0aeETUrVtXEydO1IEDB1LcNn3+/HmdPHlSXl5eqlKlisLDwzVr1ixt2LBB7733nt15QkNDJd0Z0AoVKiRJmjdvnqQ7z1j817/+dd9a6tevrzFjxsjf318VKlSwbV+4cKESEhLk5OSkN998877nefzxxzVu3DiVLVtWlStXvv9FAAAgG3F2/t9H8TVr1txzLOvfv///t3f38TXX/x/Hn+fswjYzl5urIRfN5YiYy0ih75cwikTylZLLKN+UpHz9FJXUtywihYpCWqJyLbmcCVGEGYbNMLTZZhfn/P7wPSezjW3nM2cXj/vt9r19t8/ncz6f13l35n3O87w/77eefPJJe98rSW5ubpKkhIQEhYeHq3nz5tk+fu7cubJarfL19c2w3XaO/fv369KlSypbtmyWj69YsaJCQ0Pl7e2daTRkbpQqVUqSdPXq1TyfA0DxYzab9N3SXbpwPt7ZpeRYBd9S6tm3pbPLyLVJkyZp7dq12S4eVhxER0erX79+iomJkZ+fn9q3b6/Lly9r9+7dCgsL0+DBg+0DaYy0bNmyWy78ejvfffed3n33Xbm6uqpVq1YqWbKk6tatq8OHDxtYZe4QOgLFRJMmTeTl5aXExEQdPHhQzZo1s++zjWhs27atzGazWrVqJTc3Nx09elQxMTGqVKmS/Vhb6HjjrdW20YpBQUH2Dy+3YjKZ7CMmbmQ7T/369XM8z1OPHj1ydBwAAAVNyZIl1axZM/3666/68MMPFRUVpUceeUTNmjXLdJu1bUG1GzVr1szetw8dOlQDBw5U9+7dVadOnUzXqlGjRpY13Hffffr000918eJF9enTR4MHD1aXLl0yXUu63j87wmq12kd23rzgDADczoXz8Tp39rKzyyjy0tPTnV2C002fPl0xMTF6+OGHNW3aNPuAnfDwcA0ZMkSfffaZunbtmu3CqHkRGRmpN99806Fz2O5qfOKJJzRhwgT79u+++86h8zqC26uBYsLNzc0+AuLmW6xt8znaFmPx9va23+Z18y3WtvkcbccmJSXZV9a8eVGY3Dp+/Lgh5wEAoLCYNGmSvLy8ZLVa9e233+qJJ55QUFCQhg4dqrlz52r//v2Z5j+28fHxsX+ouHr1qubMmaNu3bqpffv2GjdunJYsWaITJ07c8vpt2rRR9+7dJV1f7GXKlCm677779PDDD2vy5MlavXq14uLiDHmuK1as0JUrVyRJ999/vyHnBADAaLbPwGPGjMlwh2Dz5s3t052EhYUZdr2UlBSNGzdOZrPZoTv4UlJSJBWsL/YIHYFiJKt5HdPS0uwjDG8cvWj7+cbQMSoqSjExMfLw8LAHmDfOF+LoKpS2DyKsZgkAKC4aNGigZcuW6d5777VvS0hI0M8//6x3331Xffv2Vbt27fTee+8pKSkp0+P79u2r2bNnq2rVqvZt586d06pVqzR58mQ99NBD6tq1q1asWJHtogBvvfWWxo0bp5IlS0q6PiLx6NGjWrJkiV544QW1bdtWAwcO1J49e3L9/FJTUxUVFaX58+dr6tSpkqSmTZvqwQcfzPW5AADXRyJ+8cUXCg4O1j333KN27dppypQp9s9SN4uLi9N7772n3r17q3nz5mrYsKFat26tZ555Rlu2bLEfd/r0adWtW1cbNmyQJE2YMCHT3IIJCQmaO3eu+vXrp6CgIDVs2FBBQUEaOHCgvv/++2yv/9Zbb6lz585q3LixHnjgAb377rtKTExUgwYN9MADD2T5mLffflsPPfSQAgMD1aJFCz311FP6+eefMx27YsUK1a1bVx999JGOHj2q5557Tq1atVJgYKC6d++u+fPnKy0tLVdtbLvbICYmJsvaJKlMmTK5OuetvPfee/r999/12muv5SkwtLXBt99+K0maNm2a6tatq4EDB2Y6dtWqVerVq5cCAwPVtm1bvfTSS7f9gtIR3F4NFCOtW7eWJO3du9e+be/evUpISFDdunXl5+dn396uXTv997//1c6dO2WxWGQ2m+23Vjdv3tz+jY+np6f9Mbn9x/xmnp6eio+Pd/g8AAAUJnXq1NHixYt16NAhrV+/Xtu2bdPBgweVmpoqSbp48aLmzJmjH374QZ9//nmGaU8k6YEHHlCHDh20c+dObdq0STt27NCxY8fs+yMiIjRhwgStXbtWH3zwQaYFY1xcXDR06FANGDBAGzdu1M8//6xdu3YpNjZWkmSxWBQWFqYBAwZo7NixGjZsWJbPY9asWZo1a9Ytn2vTpk31wQcfyGQy5bqdAKC4S09P16hRo7Rx40Z5eXmpVatWSk1N1bJly7IceXfq1CkNGDBAsbGxqlq1qlq0aCGr1arDhw9ry5Yt2rJli2bOnKlu3brJy8tL3bt31+7duxUTE6OmTZvK399f1atXl3R9gZn+/fsrIiJCvr6+atq0qVxdXXXs2DGFhYUpLCxM0dHRGjp0qP36p0+f1qBBg3T69GlVqlRJ999/v2JjYzV37lzt2rUryy/Djh07pqeeekrnzp1TpUqV1K5dO129elVhYWHatm2bhg8frrFjx2Z63P79+/Xxxx/L29tb99xzj32+47fffluRkZH2L75yon379lq1apVeeeUVTZ48Wc2aNVN8fLwWLlyo7du3y9/fX//85z9zfL5b2b59uz777DN169ZNPXv2zNOcjtWrV1f37t21b98+RUVFqWHDhqpVq1amReaWLVumY8eOqVatWurYsaOOHDmi0NBQrV27Vp9++qmaNm1qyHO6EaEjUIzYFn+5ePGiIiMjVbNmTftIRtvt0jaNGjVSmTJldPnyZR0+fFgNGjTIcj5HHx8flShRQteuXdOlS5ccqs/X11fx8fEOnwcAgMKofv36ql+/vkaPHq2kpCT9+uuv2rp1q7777jtdvHhRp06d0pgxY/T1119neqyLi4vatm1r76Pj4uK0a9cubd68WT/88INSUlK0adMmffjhhxo3blyW1y9ZsqS6d+9uv9365MmT2rFjh9auXatt27bJarXqvffeU4MGDdS+fftMj69cuXKmERpubm4qVaqUatWqpTZt2ti/AAUA5N5XX32ljRs3qk6dOvrss8/sg0YiIyP1r3/9K9Px77zzjmJjY/X444/r9ddft3/hk5aWpjfeeEOLFy/WggUL1K1bN5UrV04zZszQiBEjFBMTo759+6p37972c82ZM0cRERHq2LGjPvzwQ/tc/rYVk2fOnKkFCxZkCB1fe+01nT59Wo888ogmT55s/9Lr559/1ujRozNNH5KWlqbRo0fr3LlzevbZZ/Xcc8/ZF107evSohgwZotmzZ9tHTN5o8+bN6t27t1577TX7wJh169Zp1KhRWr58ucaMGZPlfMVZmTRpki5cuKCdO3dqyJAhGfZ169ZNr7zyiv3uAEfExcVp/PjxqlSpkiZPnpzn8zRv3lzNmzfXyy+/rKioKPXo0SPL18OxY8c0cuRIjR49WiaTSRaLRTNnztS8efP04osv6qeffsqwyJ0RuL0aKEZMJpNatWol6e9brG+ez9HGbDbbPxjs2rVL0t/zOd4YOkpSzZo1JV3vCHIqIiIi08qVtvMcOXIkx+eJiorS5cuXc3w8AACFgaenp/22p40bN6pbt26SpH379un333+/7ePLlSunf/7zn3rrrbe0du1aBQQESJIWL16c7W3WN6tRo4b69eunTz/9VJ9//rm8vb3t58jKI488oiVLlmT436JFixQSEqJx48YROAKAg7788ktJ0uTJkzPcpVazZk1NnDgx0/EVK1ZUu3bt9Pzzz2cYYe7q6qrHHntMknTmzJkcXbtUqVJq3769XnzxxQyLh5pMJvXv31/S9ZH5ycnJkqTDhw9r27Ztqly5cobAUZI6dOigZ555JtM11q1bp+PHj6tZs2Z64YUXMgRgd999t33F6Hnz5mV6bMmSJfX6669nuBOvc+fO8vf3l9VqzXAHwO2ULl1avXr1UoUKFVSxYkV17NhRTZo0kaurqzZt2mS/jdlRr7zyii5evKi3335bPj4+hpzzVmxfbNpeC2azWePGjVNAQICioqKyvH3dUYSOQDFje8O/f/9+Xbp0SX/88Yc8PT3tczTeyBYuhoeHKzY2VqdOnZKvr6/q1q2b4TjbvEy7du3K8WpnI0aMUFBQkN57771M5zl06FCORztOnjxZrVq10vjx43N0PAAABcVrr72mLl26aPbs2bc8zsPDQ1OmTLF/yIuMjFR6err69Omjjh072r8czE7lypX10ksvSbo+H9f58+clSb///rt69OihDh066Nq1a7c8R1BQkAYMGGC/PgDgzoqNjVVERIS8vb2z/OzWsWPHDGGgJL366quaP3++Spcubd8WHx+vX3/91X4br20qj9sZOXKk5s2bl+GW3cTERB04cCDD6si2823btk3S9SlAbp7WQ5K6du2aaZttrYHsvqTq0KGDzGaz9u/fn2me4/r168vDwyPTY2zhbGJi4i2f341eeuklvfTSS+rWrZs2bNigOXPmaOnSpVq2bJnKlCmjGTNm2APgvPryyy+1adMmDRkyREFBQQ6dK6d69OiRaXoTk8lkHzVq5OI4NtxeDRQztn/ADxw4oD179shqtapFixZZdgS20Y+HDh2yTx5/8yhH6XqHMXv2bF2+fFlLly7V448/fssatm/fbp+stlGjRvbtDzzwgLy8vJSYmKj58+fr3//+9y3PExkZqe3bt8tqtTq0yhcAAM5w7do1nTx5UuvXr9fw4cNveay3t7dKliypy5cvq1y5cnJxcdGFCxd09uxZbd68WS1btrzl4223lJnNZvvk9z4+Pvrzzz8lXf+gd7sVpW3nYME3ALjzzp07J+n66MWs5sV1c3NTpUqVFBUVlWH78ePHtWTJEu3fv18nT5603yVmO0dOR79L1xdWWbJkiXbv3q0TJ07o4sWLGc514/nOnj0rSapSpUqW56pWrVqmbdHR0ZKkkJAQhYSE3LKW2NhY1ahRw/57diMFbaMlbXWFh4frq6++ynRc7dq1NXz4cG3btk3fffedGjZsqJdffllm899j9Ro0aKA33nhDgwcP1kcffaTHH388w/6cOnr0qN566y01bNhQY8aMydFj1q5d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06ZN05QpU7Rw4UItXLjQvq9s2bL68MMP1aVLlxyfb/jw4VluX716tVatWqVy5cpp9uzZkqRXXnlFp0+f1vr16+Xh4aEZM2Y49FxuhTkdAQAAAAAACrgvv/xSkjR58mR74ChJNWvW1MSJEzMdX7FiRbVr107PP/+8PXCUJFdXVz322GOSZL/N9nZKlSql9u3b68UXX8ywwrHJZFL//v0lSRcvXlRycrIk6fDhw9q2bZsqV66cIXCUpA4dOmQ5im/dunU6fvy4mjVrphdeeCHDLdF33323fcXoefPmZXpsyZIl9frrr9sDR0nq3Lmz/P39ZbVadezYsRw9T0kqXbq0evXqpQoVKqhixYrq2LGjmjRpIldXV23atEnffvttjs91K/fee686duwoV1dXNW3aVB07dpSfn58uXbqkefPmKSrKsYWTfv31V7388styc3PTrFmz5O/vb0jducFIRwAAAAAAgAIsNjZWERER8vb2VvPmzTPt79ixo9zc3JSammrf9uqrr2Y6Lj4+XkePHrUvlnLj8bcycuTITNsSExMVERGh/fv327elpqbKw8ND27ZtkyQ98MADGQJHm65du2rWrFkZtu3YsUOS1Lp16yxr6NChg8xms/bv36+kpKQMAWP9+vXl4eGR6TF+fn46ffq0EhMTc/Asr3vppZf03XffadCgQRlC1j/++EMjR47UjBkz5OXlpQEDBuT4nDc7ePCgnnrqKXl6emrZsmVq0KCBpOvtN3PmTH366acaNGiQVq9eneF55lRUVJRGjhyplJQUvfXWW7r33nvzXKsjCB0BAAAAAAAKsHPnzkm6PnrxxlGLNm5ubqpUqVKm0XHHjx/XkiVLtH//fp08eVKXL1+WJPs5sppXMTsxMTFasmSJdu/erRMnTujixYsZznXj+c6ePStJqlKlSpbnqlatWqZt0dHRkqSQkBCFhITcspbY2FjVqFHD/ruPj0+Wx9lGS9rqCg8P11dffZXpuNq1a2v48OHatm2bvvvuOzVs2FAvv/yyfcEXSWrQoIHeeOMNDR48WB999JEef/zxDPtzY+rUqbpy5YqmTZtmDxyl6/8dx48fr/3792vPnj1asWKFBgwYoLVr12rt2rWZztOiRQv7qFWbv/76S88++6zi4uI0bNgwBQcH56lGIxA6AgAAAAAAFAK3Cgltqy7bLFq0SG+++aasVquqVq2qli1bqmbNmqpfv76qVKmiPn365Pi6a9as0bhx45SamipfX181btxYtWrVUr169RQUFJRpVWnbCMqb52281fOwHduiRQtVqlTplvXceIu3pCyD2KycOnVK33//fabtQUFBGj58uHbu3ClJuu+++7IMFFu1aiUPDw9duHBBMTEx2Yaqt5KcnKx9+/bJxcVF7dq1y7TfZDKpQ4cO2rNnjw4ePCjp+qrTWdV9463y0vV5MZ977jlFRETooYceynLRnTuJ0BEAAAAAAKAAs4VwMTExslgsmQIxq9Wq8+fP238/c+aMpk+fLhcXF7333nuZFiX5/fffc3ztxMRETZw4UampqZo0aZIGDBiQIeSzjZ68UeXKle11ZMU2EvJGtnkqe/Toob59++a4vtzo3bt3hgVybnblyhVJyjCf5I1MJpO97XN6a/rN4uPjZbVaZTKZMgXFNrbttmuMHj1ao0ePvu25J0+erB07dqhhw4Z66623chzG5hcWkgEAAAAAACjAfH19FRAQoMTERG3ZsiXT/p07d+rq1av23/fv36/09HTVq1cvy1WQbee4eSRiViHV0aNHFR8fr7Jly+qJJ57IdMyN9djO17ZtW0nXV6rOKpxbt25dpm1BQUGSpA0bNmTaJ0kHDhxQ586dNWzYMKWlpWV5jKPq1KkjSdq0aVOWozH37NmjxMRE+fj4qGrVqnm6Rvny5VWmTBmlpaXp559/zvIY25yYN956fTvz5s3TsmXL5Ofnp9mzZ+dpLkijEToCAAAAAAAUcEOGDJEk/ec//1FkZKR9e3R0tCZPnpzh2LJly0qSIiIiMhwrST/88INmz54tSUpJScmwz7YYy19//ZXpXJcuXVJ4eHiG43fs2KE33njD/vu1a9ckSY0bN1bz5s0VHR2tKVOmZAgew8PD7de/UdeuXVW5cmVt3rxZ77//fobHxMbG6pVXXtGpU6fk5+eX7UhERz388MPy8fHR77//rrffflvp6en2fREREfZVwp944ok812A2m/X4449LkqZMmaIjR47Y96Wnp2vWrFnavn27fRXtnFi7dq3effddeXl5ac6cOapYsWKeajMat1cDAAAAAAAUcMHBwQoPD9eyZcvUo0cPtWrVSi4uLtq5c6d8fX1VoUIFXbhwQdL1UYOBgYE6cOCAevbsqRYtWsjT01N//vmnTp06papVq+rSpUtK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E7M8Zvv27Zo3b54OHz6s5ORk1apVS/369dOjjz4qk8mU6fi0tDR98803+vrrr3XixAm5uroqMDBQzzzzjFq1apXfT+mOu10bfvDBBwoJCcn28ffff78+/vjjDNuSk5O1aNEiff/994qKipKnp6datGih4cOHq379+oY/B2f47rvvtHz5ch0+fFhJSUkqX768WrduraFDh6pWrVqZjs/t32xxaEMpd+340ksvKTQ0NNtzDRgwQK+99lqGbVeuXNEnn3yidevW6ezZs/Lx8VG7du00cuRIVatWLT+eUqFBP51z9NN5Rz/tOPrpvKGfNgb9NAAUTYU6dPztt980aNAgJSYmqkmTJgoMDNSvv/6qOXPmaOPGjVq8eLFKlSrl7DILjN9//12SFBgYqLvuuivT/hIlSmT4/e2339b8+fPl5eWlli1bKiUlRWFhYXruuec0YsQIjRkz5k6U7XQXLlzQiBEjlJSUlO0xX375paZMmSI3Nze1bNlSbm5u2rlzp1599VWFh4frrbfeynC8xWLR+PHjtXr1apUuXVpt2rTR5cuXtX37dm3btk3/93//pz59+uT3U7tjctKGttdnx44d5e3tnWl/gwYNMvyenJysp59+Wrt375afn5/at2+v6OhorVmzRhs3btTs2bN13333GftE7iCr1ap///vfWrVqldzc3NSoUSOVK1dOhw8f1rfffquffvpJs2fPVuvWre2Pye3fbFFvQylv7Wh7LXbr1k1mc+YbAho3bpzh90uXLmnAgAGKiIhQ9erVdf/99ysyMlLffvut1q1bpy+++KJIfTDMDfrp3KGfzhv6acfRT+ce/bQx6KcBoIizFlIpKSnWjh07WgMCAqwrVqywb09KSrIOGzbMGhAQYH399dedV2AB9Pzzz1sDAgKsW7Zsue2x27ZtswYEBFg7duxoPXPmjH37oUOHrC1btrQGBARY9+3bl5/lFgh//PGHtXPnztaAgABrQECAderUqZmOiYiIsNarV8/avHlz66FDh+zbz5w5Y+3UqZM1ICDAunr16gyPWbp0qTUgIMDaq1cv6+XLl+3bt2/fbg0MDLQGBgZmaPfCLCdtaLVarW3btrXWr1/fmpiYmKPzzpw50xoQEGB9+umnrUlJSfbtoaGh1rp161pbt25tjY+PN+Q5OENoaKg1ICDA2q5dO+uff/5p356WlmZ/7m3atLFevXrVarXm7W+2qLeh1Zr7dkxMTLTWr1/f2rZt2xxfY9y4cdaAgADrxIkTrWlpafbts2fPtgYEBFgffvhha3p6unFPqpCgn849+unco592HP103tBPG4N+GgCKtkI7p+Pq1at15swZtW3bVr169bJv9/Dw0JtvvikvLy8tX75cf/31lxOrLFhs3wo2atTotsfOmTNHkvT888+rSpUq9u316tXT2LFjJUmffvqp8UUWEFeuXNE777yjvn376uTJk/L398/22Hnz5slisWjIkCGqV6+efXuVKlXst3bc3Fa2249effVVlS5d2r69devWGjRokK5du6YvvvjCyKd0x+WmDWNjY3X+/HnVrl1bnp6etz331atX9fnnn8vFxUVTpkyRh4eHfV/Pnj3VtWtXXbx4Ud99950hz8UZli9fLkkaN26cAgIC7NtdXFw0duxY3X333bpw4YK2b98uKfd/s8WhDaXct+Phw4eVnp6eo38nJSkqKso+EmrChAlycXGx7xs2bJjuueceHTlyRL/88ouBz6pwoJ/OPfrpnKOfdhz9tGPop41BPw0ARVuhDR03bdokSerSpUumfWXLllXLli2VmpqqrVu33unSCqSEhASdPHlSVatWVdmyZW97bHh4uNzc3PTAAw9k2t+lSxeZTCZt2bJFFoslv0p2qkWLFumTTz5RuXLlNHv2bAUHB2d77ObNmyVl/Vps06aNfHx8dODAAV24cEGSdOzYMUVFRcnX11fNmjXL9Jh//OMfkv5+jRdWuWnD3HzQlqTw8HBdvXpVgYGBqly5cqb9RaENfXx8VLt2bd17772Z9plMJtWsWVPS9Q+CefmbLQ5tKOWuHaXcvxZtbdquXbss5ye0tePGjRvzVH9hRj+dO/TTuUM/7Tj6acfQTxuDfhoAirZCGzoeOXJEklS3bt0s9999992SpD///POO1VSQHTp0SFarVTVq1NBHH32k7t27q0mTJmrbtq1efPFFRUZG2o+NiIhQenq6qlatmmXnXK5cOVWoUEGJiYk6derUnXwad0ylSpX00ksvac2aNVm+ObS5cOGC4uLiVKJECfubohu5uLjYJ7+2vRZv99qtU6eOTCaTTp48qWvXrjn6VJwmp20o/f0G0sfHR5MmTVLnzp0VGBiozp07a8aMGYqPj89wvK0tb9WGNx5XGIWEhOiHH37IcnLz9PR0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7rnnlJ6ersGDB9vnOitRooT69eun1NRUTZgwwb7iqCStXLlSP/30k8qXL69HH330zj4ZA82ePVtbt26Vl5eXFi1apMaNG9/y+Nz+zRaHNpRy147NmzdXQECAkpKSNGHChAwrWR49elQvv/yyJGnUqFH2ec0qVqyohx56SHFxcXr99deVmppqf8zHH3+sffv2qW7duvbQozihn84d+un8Qz/tGPrprNFPG4N+GgCKNpO1EC8buXv3bj399NNKTk5Ww4YN5e/vr7179yo2NlaNGjXSokWLmBT4f9LS0jRmzBitX79erq6uatq0qcqWLatff/1VFy5cUK1atbRo0aIMcxP95z//0eLFi+3fzqanp2vXrl1KTU3N8zwrhdWHH36oWbNm6cknn8zy9qJPPvlE77zzjlxdXRUUFKQSJUpo165dSkxMVL9+/fSf//wnw/EWi0UjRozQpk2b5O3trZYtWyo+Pl7h4eGyWq1655131L179zv19O6IW7VhbGysBg4cqBMnTqhUqVJq2rSpJCksLEzJycl66KGHNHPmTLm6/j0NbVJSkgYOHKgDBw6ofPnyat68uWJiYrR//36VKFFC8+bNU8uWLe/oczTKlStXdP/99ysxMVF33XWXAgMDsz22Z8+euu+++yTl/m+2KLehlLd2PHbsmJ588kldvHhR5cuXV5MmTZSUlKTw8HClpqZm+fo9f/68Hn/8cUVFRalq1apq1KiRIiMjdeTIEZUpU0ZffvlltpPeF3X00zlHP+0Y+mnH0U/nHP20MeinAaDoK9ShoyQdOXJEs2bNUlhYmBITE+Xv769//vOfGb5txXVWq1XLly/X8uXLdeTIEaWnp6tatWr65z//qaeeeirTCoxWq1UrVqzQkiVLdOzYMZUoUUJ33323Bg8erAcffNBJz8I5bvdhRpI2bNigBQsW6Pfff5fJZFLNmjU1YMAA9ezZM8sJvlNTU/XFF19oxYoVOnnypLy9vdWgQQMNGzZMzZs3z++ndMfdrg0TEhL0ySefaO3atYqKipKbm5vq1q2rPn36qFevXlmumJmYmKh58+bphx9+0NmzZ1W2bFndc889GjFihOrVq3cnnla+WLdunUaNGpWjYydMmGAfbZOXv9mi2oZS3tvx/Pnz+vjjj7V582bFxMTI09NTjRo10hNPPJFtO8bFxemjjz7Sxo0bFRsbKz8/P7Vs2VIjRoxQtWrVjHpKhRL9dM7RT+cd/bTj6Kdzjn7aGPTTAFD0FfrQEQAAAAAAAEDBUmjndAQAAAAAAABQMBE6AgAAAAAAADAUoSMAAAAAAAAAQxE6AgAAAAAAADAUoSMAAAAAAAAAQxE6AgAAAAAAADAUoSMAAAAAAAAAQxE6AgAAAAAAADAUoSMAAAAAAAAAQ7k6uwCgKDt9+rQefPDBLPe5uLioRIkS8vX1VYMGDdSjRw898MADd7hCx1itVh0/fly1a9e2b7vxOa9du1Y1atRwVnk5kpiYqF69eqly5cpasGBBns8zaNAgxcTE6Ntvv5WXl5dxBQIA8g39NP00AADIP4x0BO6QgIAANWvWzP6/wMBAVa5cWdHR0frxxx81fPhwDRkyRPHx8c4uNUd+++039e3bV7Nnz3Z2KQ6ZPn26Tp06pQkTJjh0nokTJyoqKkrTp083qDIAwJ1EP10w0U8DAFB4MdIRuENeffVVtWzZMtP2lJQUfffdd5o2bZq2bt2qESNGaP78+XJ3d3dClTm3ePFi/fbbb5lGSFSsWFE//PCDJKlKlSrOKC3Hfv31Vy1dulS9e/dW3bp1HTpXQECAevfuraVLlyo4OFjNmjUzqEoAwJ1AP13w0E8DAFC4MdIRcDJ3d3f16dNHH3/8sVxcXBQWFqaFCxc6u6w8c3NzU+3atVW7dm25ubk5u5xbmj59ukwmk0aMGGHI+YYNGyaTyaRp06YZcj4AgPPRTzsP/TQAAIUboSNQQLRo0UKPPfaYJOmTTz5RcnKykysq2n7++Wft379f7dq1k7+/vyHn9Pf313333afffvtNP//8syHnBAAUDPTTdxb9NAAAhR+hI1CA2D7MXL58WeHh4fbtu3btUt26dVW3bl2lpaVl+Vjb/l27dtm3rVixQnXr1tXzzz+vPXv2qGfPnmrUqJHatWuXYTL22NhYvffee3r00UcVFBSkhg0bKigoSP369dOnn36a4YOVrZZvv/1WkvT999+rbt26GjhwoKTrE9Tbajl58mSmOiMjI/X666+rc+fOatSoke6991717dtXCxYsyPID3Msvv6y6detqyZIlOn36tCZMmKD27durUaNGat++vSZOnKjTp0/nopWvW7RokSSpZ8+eWe4/d+6cpk6dqoceekiNGjVS06ZN1bVrV02dOvWW1wsODpYkff7557muCQBQsNFP008DAICcI3QECpB69erJ29tbkhQWFmbYeY8fP66nn35aZ86c0d13362//vpLderUkSTt27dP3bp105w5c3TkyBH5+fnp7rvvlsVi0d69e/XWW29pyJAhSk9PlySVKlVKzZo1U/ny5SVJ5cqVU7NmzRQQEHDbOlauXKkePXroq6++UmxsrAICAlShQgXt379f06ZNU58+fRQTE5PlY//44w/17NlToaGh8vT0VI0aNXTu3DktX75cffr0UXR0dI7b4/Lly9q+fbtcXFx03333Zdp/6tQp9erVS59//rliY2NVs2ZN+fv7KyoqSp9//rl69uypP/74I8tzt2nTRmazWdu2bdPly5dzXBMAoOCjn6afBgAAOUfoCBQwVatWlSSdPXvWsHMePnxYAQEB2rRpk7799lv9/PPPatu2rdLT0/Xiiy/qr7/+UqdOnfTLL79o1apVCg0N1Y4dOzRu3DhJUnh4uH755RdJUoMGDbRkyRK1b99ektS2bVstWbJEkyZNumUN+/fv14QJE5SSkqK+fftq27ZtWrFihdasWaPQ0FDdddddOnLkiEaMGJHlKJGlS5eqTp06+uGHH7RmzRqtXr1aX331lUqWLKm4uDh9+umnOW6PXbt2yWKxqHbt2ipdunSm/e+9954uXryohx56SFu3btX333+v77//Xps2bVLTpk2VkJCgd999N8tzlylTRnXq1JHFYtHOnTtzXBMAoHCgn6afBgAAOUPoCBQwJUuWlCTDv30fO3asSpUqJUkqW7asTCaTDh8+rMuXL8vd3V1Tp07N8Mbezc1NQ4cOVbVq1SRJR44ccej6H3zwgdLS0tSuXTv93//9n32kiCTVr19fn3zyiTw8PPT7779r9erVmR7v5uamWbNmqWbNmvZtTZs2Ve/evSVdX+Eyp2y3tmU36uPw4cOSpB49etj/e0hShQoVNHHiRN133332EShZsZ2XDzMAUPTQT9NPAwCAnCF0BAqY1NRUSZLJZDLsnGazWU2bNs20vWHDhtq9e7d2796tsmXLZtqfkpJi/4CTlJSU5+snJibaP0A8+eSTWR5TrVo1derUSZK0YcOGTPsbNWokX1/fTNtr1aolSYqPj89xPba5nqpXr57l/ho1akiSZsyYofXr12eYwyowMFCffPKJJkyYkO35bR+4oqKiclwTAKBwoJ+mnwYAADnj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", "text/plain": [ - "
    " + "
    " ] }, "metadata": {}, @@ -891,22 +671,32 @@ } ], "source": [ - "values_plot(baseline_scaling, export_legend = True, legend_output_dir=write_dir)\n", - "plt.clf()" - ] - }, - { - "cell_type": "markdown", - "id": "094ed146-412f-4ce9-bdf3-9e673fae613c", - "metadata": {}, - "source": [ - "# Complete provenance (storage formats)" + "ax = sns.catplot(\n", + " baseline,\n", + " x=\"duration\",\n", + " col=\"algorithm\",\n", + " hue=\"dataset\",\n", + " kind=\"bar\",\n", + " hue_order=['datagen-7_5-fb', 'graph500-22', 'datagen-7_9-fb', 'cit-Patents', 'datagen-8_4-fb', 'datagen-8_8-zf'],\n", + " col_order=[\"BFS\", \"PageRank\", \"WCC\", \"SSSP\"],\n", + " legend_out=True,\n", + " errorbar=\"sd\",\n", + " capsize=0.2,\n", + " col_wrap=2,\n", + " sharex=True\n", + ")\n", + "sns.move_legend(ax, \"center right\", ncols=1, bbox_to_anchor=(1.05, 0.55), title=None, frameon=False)\n", + "\n", + "ax.set_axis_labels(\"Duration (s)\", \"Dataset\")\n", + "ax.set_titles(\"{col_name}\")\n", + "\n", + "ax.savefig(plot_location(\"es01-duration.pdf\"), dpi=\"figure\")" ] }, { "cell_type": "code", - "execution_count": 77, - "id": "0d090994-22be-4041-a069-d42fbf206436", + "execution_count": 17, + "id": "6499ea2c", "metadata": {}, "outputs": [ { @@ -930,2064 +720,1875 @@ " \n", " \n", " \n", - " config\n", " algorithm\n", " dataset\n", - " storage_format\n", - " total_size\n", - " duration\n", - " per_iter\n", - " nice_size\n", + " size\n", " \n", " \n", " \n", " \n", - " 50\n", - " completeprovenance\n", + " 0\n", " BFS\n", " cit-Patents\n", - " ORC\n", - " 272126547\n", - " 113.815472\n", - " 2.646871\n", - " 259.52MB\n", + " 100187504\n", " \n", " \n", - " 58\n", - " completeprovenance\n", - " BFS\n", + " 1\n", + " CDLP\n", " cit-Patents\n", - " CSV-C\n", - " 385629051\n", - " 143.495254\n", - " 3.337099\n", - " 367.76MB\n", + " 58187727\n", " \n", " \n", - " 57\n", - " completeprovenance\n", - " BFS\n", + " 2\n", + " LCC\n", " cit-Patents\n", - " Text-C\n", - " 398055303\n", - " 154.327360\n", - " 3.589008\n", - " 379.62MB\n", + " 113070194\n", " \n", " \n", - " 100\n", - " completeprovenance\n", - " BFS\n", + " 3\n", + " PageRank\n", " cit-Patents\n", - " JSON-C\n", - " 411310835\n", - " 134.970226\n", - " 3.138842\n", - " 392.26MB\n", + " 113070194\n", " \n", " \n", - " 97\n", - " completeprovenance\n", - " BFS\n", + " 4\n", + " WCC\n", " cit-Patents\n", - " Parquet\n", - " 452688486\n", - " 110.955192\n", - " 2.580353\n", - " 431.72MB\n", + " 37635956\n", " \n", " \n", - " 18\n", - " completeprovenance\n", + " 5\n", " BFS\n", - " cit-Patents\n", - " Avro\n", - " 548177668\n", - " 110.712451\n", - " 2.574708\n", - " 522.78MB\n", + " datagen-7_5-fb\n", + " 9533719\n", " \n", " \n", - " 105\n", - " completeprovenance\n", - " BFS\n", - " cit-Patents\n", - " CSV\n", - " 2351958475\n", - " 117.176385\n", - " 2.725032\n", - " 2.19GB\n", + " 6\n", + " CDLP\n", + " datagen-7_5-fb\n", + " 11496370\n", " \n", " \n", - " 40\n", - " completeprovenance\n", - " BFS\n", - " cit-Patents\n", - " Text\n", - " 2525597803\n", - " 101.973519\n", - " 2.371477\n", - " 2.35GB\n", + " 7\n", + " LCC\n", + " datagen-7_5-fb\n", + " 22202359\n", " \n", " \n", - " 29\n", - " completeprovenance\n", - " BFS\n", - " cit-Patents\n", - " JSON\n", - " 3567433771\n", - " 107.638374\n", - " 2.503218\n", - " 3.32GB\n", + " 8\n", + " PageRank\n", + " datagen-7_5-fb\n", + " 22202359\n", " \n", " \n", - " 116\n", - " completeprovenance\n", - " BFS\n", - " cit-Patents\n", - " Object\n", - " 4470241541\n", - " 119.315761\n", - " 2.774785\n", - " 4.16GB\n", + " 9\n", + " SSSP\n", + " datagen-7_5-fb\n", + " 22202359\n", " \n", " \n", - " 115\n", - " completeprovenance\n", - " BFS\n", + " 10\n", + " WCC\n", " datagen-7_5-fb\n", - " CSV-C\n", - " 48690774\n", - " 57.120579\n", - " 1.969675\n", - " 46.44MB\n", + " 9533719\n", " \n", " \n", - " 38\n", - " completeprovenance\n", + " 11\n", " BFS\n", - " datagen-7_5-fb\n", - " Text-C\n", - " 49265960\n", - " 57.709867\n", - " 1.989995\n", - " 46.98MB\n", + " datagen-7_9-fb\n", + " 20966038\n", " \n", " \n", - " 98\n", - " completeprovenance\n", - " BFS\n", - " datagen-7_5-fb\n", - " JSON-C\n", - " 53194680\n", - " 57.547191\n", - " 1.984386\n", - " 50.73MB\n", + " 12\n", + " CDLP\n", + " datagen-7_9-fb\n", + " 25839329\n", " \n", " \n", - " 0\n", - " completeprovenance\n", - " BFS\n", - " datagen-7_5-fb\n", - " ORC\n", - " 58274920\n", - " 50.868484\n", - " 1.754086\n", - " 55.58MB\n", + " 13\n", + " LCC\n", + " datagen-7_9-fb\n", + " 48717778\n", " \n", " \n", - " 104\n", - " completeprovenance\n", - " BFS\n", - " datagen-7_5-fb\n", - " Parquet\n", - " 61961248\n", - " 48.867018\n", - " 1.685070\n", - " 59.09MB\n", + " 14\n", + " PageRank\n", + " datagen-7_9-fb\n", + " 48717778\n", " \n", " \n", - " 85\n", - " completeprovenance\n", - " BFS\n", - " datagen-7_5-fb\n", - " Avro\n", - " 72546300\n", - " 53.117164\n", - " 1.831626\n", - " 69.19MB\n", + " 15\n", + " SSSP\n", + " datagen-7_9-fb\n", + " 48717778\n", " \n", " \n", - " 61\n", - " completeprovenance\n", - " BFS\n", - " datagen-7_5-fb\n", - " CSV\n", - " 236259401\n", - " 58.527642\n", - " 2.018195\n", - " 225.31MB\n", + " 16\n", + " WCC\n", + " datagen-7_9-fb\n", + " 20966038\n", " \n", " \n", - " 78\n", - " completeprovenance\n", + " 17\n", " BFS\n", - " datagen-7_5-fb\n", - " Text\n", - " 256529225\n", - " 41.142354\n", - " 1.418702\n", - " 244.65MB\n", + " datagen-8_4-fb\n", + " 57850630\n", " \n", " \n", - " 47\n", - " completeprovenance\n", - " BFS\n", - " datagen-7_5-fb\n", - " JSON\n", - " 378148169\n", - " 48.643720\n", - " 1.677370\n", - " 360.63MB\n", + " 18\n", + " CDLP\n", + " datagen-8_4-fb\n", + " 80900211\n", " \n", " \n", - " 35\n", - " completeprovenance\n", - " BFS\n", - " datagen-7_5-fb\n", - " Object\n", - " 487601995\n", - " 41.675332\n", - " 1.437080\n", - " 465.01MB\n", + " 19\n", + " LCC\n", + " datagen-8_4-fb\n", + " 134032310\n", " \n", " \n", - " 28\n", - " completeprovenance\n", - " BFS\n", - " datagen-7_9-fb\n", - " CSV-C\n", - " 116209136\n", - " 128.829199\n", - " 4.155781\n", - " 110.83MB\n", + " 20\n", + " PageRank\n", + " datagen-8_4-fb\n", + " 134032310\n", " \n", " \n", - " 43\n", - " completeprovenance\n", - " BFS\n", - " datagen-7_9-fb\n", - " Text-C\n", - " 117407400\n", - " 90.139759\n", - " 2.907734\n", - " 111.97MB\n", + " 21\n", + " SSSP\n", + " datagen-8_4-fb\n", + " 134032310\n", " \n", " \n", - " 102\n", - " completeprovenance\n", - " BFS\n", - " datagen-7_9-fb\n", - " JSON-C\n", - " 127350354\n", - " 132.247397\n", - " 4.266045\n", - " 121.45MB\n", + " 22\n", + " WCC\n", + " datagen-8_4-fb\n", + " 57850630\n", " \n", " \n", - " 4\n", - " completeprovenance\n", + " 23\n", " BFS\n", - " datagen-7_9-fb\n", - " ORC\n", - " 135877889\n", - " 104.052758\n", - " 3.356541\n", - " 129.58MB\n", + " datagen-8_8-zf\n", + " 2703435298\n", " \n", " \n", - " 106\n", - " completeprovenance\n", - " BFS\n", - " datagen-7_9-fb\n", - " Parquet\n", - " 143053677\n", - " 105.884096\n", - " 3.415616\n", - " 136.43MB\n", + " 24\n", + " CDLP\n", + " datagen-8_8-zf\n", + " 4424901220\n", " \n", " \n", - " 81\n", - " completeprovenance\n", - " BFS\n", - " datagen-7_9-fb\n", - " Avro\n", - " 171065610\n", - " 93.661136\n", - " 3.021327\n", - " 163.14MB\n", + " 25\n", + " LCC\n", + " datagen-8_8-zf\n", + " 5970693132\n", " \n", " \n", - " 75\n", - " completeprovenance\n", - " BFS\n", - " datagen-7_9-fb\n", - " CSV\n", - " 534677441\n", - " 71.025003\n", - " 2.291129\n", - " 509.91MB\n", + " 26\n", + " PageRank\n", + " datagen-8_8-zf\n", + " 5970693132\n", " \n", " \n", - " 41\n", - " completeprovenance\n", - " BFS\n", - " datagen-7_9-fb\n", - " Text\n", - " 581855399\n", - " 61.450592\n", - " 1.982277\n", - " 554.90MB\n", + " 27\n", + " SSSP\n", + " datagen-8_8-zf\n", + " 5899340019\n", " \n", " \n", - " 5\n", - " completeprovenance\n", - " BFS\n", - " datagen-7_9-fb\n", - " JSON\n", - " 864923147\n", - " 67.917724\n", - " 2.190894\n", - " 824.85MB\n", + " 28\n", + " WCC\n", + " datagen-8_8-zf\n", + " 2667413693\n", " \n", " \n", - " 34\n", - " completeprovenance\n", + " 29\n", " BFS\n", - " datagen-7_9-fb\n", - " Object\n", - " 1128077456\n", - " 106.630419\n", - " 3.439691\n", - " 1.05GB\n", + " graph500-22\n", + " 23357988\n", " \n", " \n", - " 21\n", - " completeprovenance\n", - " BFS\n", + " 30\n", + " CDLP\n", " graph500-22\n", - " ORC\n", - " 21625818\n", - " 40.428390\n", - " 13.476130\n", - " 20.62MB\n", + " 25735230\n", " \n", " \n", - " 68\n", - " completeprovenance\n", - " BFS\n", + " 31\n", + " LCC\n", " graph500-22\n", - " Text-C\n", - " 31505964\n", - " 39.143989\n", - " 13.047996\n", - " 30.05MB\n", + " 71264722\n", " \n", " \n", - " 96\n", - " completeprovenance\n", - " BFS\n", + " 32\n", + " PageRank\n", " graph500-22\n", - " JSON-C\n", - " 32247729\n", - " 39.219499\n", - " 13.073166\n", - " 30.75MB\n", + " 71264722\n", + " \n", + " \n", + " 33\n", + " WCC\n", + " graph500-22\n", + " 23339653\n", + " \n", + " \n", + "\n", + "" + ], + "text/plain": [ + " algorithm dataset size\n", + "0 BFS cit-Patents 100187504\n", + "1 CDLP cit-Patents 58187727\n", + "2 LCC cit-Patents 113070194\n", + "3 PageRank cit-Patents 113070194\n", + "4 WCC cit-Patents 37635956\n", + "5 BFS datagen-7_5-fb 9533719\n", + "6 CDLP datagen-7_5-fb 11496370\n", + "7 LCC datagen-7_5-fb 22202359\n", + "8 PageRank datagen-7_5-fb 22202359\n", + "9 SSSP datagen-7_5-fb 22202359\n", + "10 WCC datagen-7_5-fb 9533719\n", + "11 BFS datagen-7_9-fb 20966038\n", + "12 CDLP datagen-7_9-fb 25839329\n", + "13 LCC datagen-7_9-fb 48717778\n", + "14 PageRank datagen-7_9-fb 48717778\n", + "15 SSSP datagen-7_9-fb 48717778\n", + "16 WCC datagen-7_9-fb 20966038\n", + "17 BFS datagen-8_4-fb 57850630\n", + "18 CDLP datagen-8_4-fb 80900211\n", + "19 LCC datagen-8_4-fb 134032310\n", + "20 PageRank datagen-8_4-fb 134032310\n", + "21 SSSP datagen-8_4-fb 134032310\n", + "22 WCC datagen-8_4-fb 57850630\n", + "23 BFS datagen-8_8-zf 2703435298\n", + "24 CDLP datagen-8_8-zf 4424901220\n", + "25 LCC datagen-8_8-zf 5970693132\n", + "26 PageRank datagen-8_8-zf 5970693132\n", + "27 SSSP datagen-8_8-zf 5899340019\n", + "28 WCC datagen-8_8-zf 2667413693\n", + "29 BFS graph500-22 23357988\n", + "30 CDLP graph500-22 25735230\n", + "31 LCC graph500-22 71264722\n", + "32 PageRank graph500-22 71264722\n", + "33 WCC graph500-22 23339653" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data = json.loads(open(\"../data/sizes.json\").read())\n", + "rows = []\n", + "for dataset, metrics in data.items():\n", + " for algorithm, size in metrics.items():\n", + " if algorithm in [\"vertices\", \"edges\"]:\n", + " continue\n", + " alg = \"PageRank\" if algorithm == \"PR\" else algorithm\n", + " rows.append({\"algorithm\": alg, \"dataset\": dataset, \"size\": size})\n", + "\n", + "dataset_sizes = pd.DataFrame(rows)\n", + "dataset_sizes" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "270e5a39", + "metadata": {}, + "outputs": [], + "source": [ + "ds_size = dataset_sizes.sort_values(by=[\"dataset\", \"size\"])\n", + "ds_size[\"pretty_size\"] = [f\"{int(format_filesize(x)[0])} {format_filesize(x)[1]}\" for x in ds_size[\"size\"]]\n", + "ds_size.drop(columns=[\"size\"], inplace=True)\n", + "ds_size.rename(columns={\"pretty_size\": \"size\"}, inplace=True)\n", + "ds_size[\"dataset\"] = [d.replace(\"_\", \"\\\\_\") for d in ds_size[\"dataset\"]]\n", + "ds_size.to_csv(csv_location(\"es01-size.csv\"), index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "14f1d0b4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + "
    algorithmdatasetdurationsize
    0BFScit-Patents82.968899100187504
    1completeprovenanceBFSgraph500-22Parquet3619625143.21225814.40408634.52MBdatagen-7_5-fb34.3231089533719
    63completeprovenance2BFSgraph500-22Avro4469153136.40210112.13403442.62MBdatagen-7_9-fb69.31001120966038
    88completeprovenance3BFSgraph500-22CSV19941417041.44811113.816037190.18MBdatagen-8_4-fb241.78578457850630
    82completeprovenance4BFSgraph500-22Text21379411242.71116814.237056203.89MBdatagen-8_8-zf218.7215792703435298
    95completeprovenance5BFSgraph500-22Object37035693940.12319813.374399353.20MB32.86559023357988
    13completeprovenance6PageRankcit-PatentsCSV-C981249822245.7281757.020805935.79MB85.102944113070194
    92completeprovenance7PageRankcit-PatentsText-C997108236253.3366487.238190950.92MBdatagen-7_5-fb39.98047622202359
    110completeprovenance8PageRankcit-PatentsJSON-C1056694971226.3377676.4667931007.74MBdatagen-7_9-fb69.87907348717778
    86completeprovenance9PageRankcit-PatentsORC1137685330223.4226056.3835031.06GBdatagen-8_4-fb215.872856134032310
    37completeprovenance10PageRankcit-PatentsAvro1589606305160.5031874.5858051.48GBdatagen-8_8-zf245.9493485970693132
    94completeprovenance11PageRankcit-PatentsParquet1593606785173.2861364.9510321.48GBgraph500-2278.37637771264722
    80completeprovenancePageRankcit-PatentsCSV2645496912162.6022874.6457802.46GB12SSSPdatagen-7_5-fb38.11654722202359
    55completeprovenancePageRankcit-PatentsText2834235312142.7368474.0781962.64GB
    65completeprovenancePageRankcit-PatentsJSON3966665712156.5176524.4719333.69GB
    59completeprovenancePageRankcit-PatentsObject5183266070150.1391354.2896904.83GB13SSSPdatagen-7_9-fb76.49571048717778
    66completeprovenancePageRankdatagen-7_5-fbCSV-C19242379996.0377682.743936183.51MB14SSSPdatagen-8_4-fb255.830169134032310
    15completeprovenancePageRankdatagen-7_5-fbText-C19475891789.1763452.547896185.74MBSSSPdatagen-8_8-zf209.2493245899340019
    87completeprovenancePageRankdatagen-7_5-fbJSON-C20576131990.4460402.584173196.23MB16WCCcit-Patents157.94498637635956
    77completeprovenancePageRank17WCCdatagen-7_5-fbORC29707426377.9293192.226552283.31MB36.7684069533719
    12completeprovenancePageRankdatagen-7_5-fbParquet31471226670.9574232.027355300.13MB18WCCdatagen-7_9-fb66.34400420966038
    67completeprovenancePageRankdatagen-7_5-fbAvro31667339776.7228202.192081302.00MB19WCCdatagen-8_4-fb239.01833257850630
    99completeprovenancePageRankdatagen-7_5-fbCSV52102692468.5119041.957483496.89MB20WCCgraph500-2272.04544123339653
    14completeprovenancePageRankdatagen-7_5-fbText55275249961.6125381.760358527.15MB
    \n", + "
    " + ], + "text/plain": [ + " algorithm dataset duration size\n", + "0 BFS cit-Patents 82.968899 100187504\n", + "1 BFS datagen-7_5-fb 34.323108 9533719\n", + "2 BFS datagen-7_9-fb 69.310011 20966038\n", + "3 BFS datagen-8_4-fb 241.785784 57850630\n", + "4 BFS datagen-8_8-zf 218.721579 2703435298\n", + "5 BFS graph500-22 32.865590 23357988\n", + "6 PageRank cit-Patents 85.102944 113070194\n", + "7 PageRank datagen-7_5-fb 39.980476 22202359\n", + "8 PageRank datagen-7_9-fb 69.879073 48717778\n", + "9 PageRank datagen-8_4-fb 215.872856 134032310\n", + "10 PageRank datagen-8_8-zf 245.949348 5970693132\n", + "11 PageRank graph500-22 78.376377 71264722\n", + "12 SSSP datagen-7_5-fb 38.116547 22202359\n", + "13 SSSP datagen-7_9-fb 76.495710 48717778\n", + "14 SSSP datagen-8_4-fb 255.830169 134032310\n", + "15 SSSP datagen-8_8-zf 209.249324 5899340019\n", + "16 WCC cit-Patents 157.944986 37635956\n", + "17 WCC datagen-7_5-fb 36.768406 9533719\n", + "18 WCC datagen-7_9-fb 66.344004 20966038\n", + "19 WCC datagen-8_4-fb 239.018332 57850630\n", + "20 WCC graph500-22 72.045441 23339653" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "baseline_stats_copy = baseline_stats.copy(deep=True)\n", + "baseline_stats_copy = baseline_stats_copy[[\"algorithm\", \"dataset\", \"mean\"]].rename(columns={\"mean\": \"duration\"})\n", + "baseline_stats_copy = pd.merge(baseline_stats_copy, dataset_sizes, on=[\"algorithm\", \"dataset\"])\n", + "baseline_stats_copy" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "4c9a0e6b", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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9pwvv/xSL774oqpVq6a6devqnXfe0Y4dO5Icu3r1anl5eem7776Tn5+fhg4dqvr166tatWpq27atFixYoPj4+DT1cXJWrlypQ4cOycvLS++++266r2cJ1V544YUk+xwcHFS3bl1JSvY1P8zSB2vWrJEkffbZZ/Ly8tJbb72V5NgNGzaoQ4cOqlatmho1aqQPP/xQAQEB6Xglj8djpwAAAAAAIFtISEjQ4MGDtXXrVrm4uKh+/fqKi4vTihUrdPDgwSTHBwYGqnv37goNDVXx4sVVt25dmc1m+fr6aufOndq5c6emTZuml19+WS4uLmrbtq0OHTqk69evq2bNmipRooRKlSol6f5CDN26ddOFCxfk7u6umjVrysHBQf7+/jp48KAOHjyo4OBg9evXz9r+lStX1LNnT125ckVFixZVs2bNFBoaqnnz5unAgQPJrqjq7++vd955RyEhISpatKgaN26se/fu6eDBg9qzZ4/effddDR8+PMl5x48f1/fffy9XV1fVqFFDERER8vHx0ZdffqlLly5p8uTJT9zvd+7c0bRp0yRJ48ePl6Oj4xNfy8LyeG/evHmT3e/gcD+yunjx4mOvZZmn7tixYwoKClLVqlVVrlw5eXp62hy3YsUK+fv7q1y5cmrevLnOnz+vtWvXatOmTfrf//6nmjVrpvNVJY/wDQAAAAAAZAvLly/X1q1bVb58ef34448qXLiwJOnSpUvJrmL51VdfKTQ0VG+88YYmTJggk8kkSYqPj9eUKVO0dOlSLVy4UC+//LIKFiyor7/+WgMHDtT169fVpUsXdezY0XqtuXPn6sKFC2revLlmzpxpDaDMZrPmzZunadOmaeHChTbh2/jx43XlyhV16tRJEydOtK7euWPHDg0ZMkSJiYk29cbHx2vIkCEKCQlR//79NXToUGsI5efnp969e2vOnDnWEXQP2r59uzp27Kjx48fL2dlZkvT3339r8ODBWrlypYYNGyZ3d/cn6veFCxcqPDxczZo1S3E+uLTy9PTUmTNndPDgQXXo0MFmn9lsts7fFhYW9thrWeapGz16tIKCgtSuXbtkfx78/f01aNAgDRkyRCaTSYmJiZo2bZrmz5+vUaNG6c8//7T2d0bisVMAAAAAAJAtLFmyRJI0ceJEa/AmSWXLltVHH32U5PgiRYqocePGGjFihDV4k+6Pquratask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nack5cmTR23btlWBAgVUqFAhNWzYUFWrVpWHh4fWrFnjfLwztYYMGaILFy5ozJgxyp07d5rs804qVKjgLLxJkpubm9544w2VK1dOp06dSvGx3rTAnW8AAAAAACDDi4iI0JEjR5QzZ04FBAQkW9+wYUN5enoqLi7Ouey9995Ltt2VK1d06NAh56QCt25/J3379k22LDo6WkeOHNHOnTudy+Li4pQ9e3Zt2LBBktSoUaMkhbdETz31lCZOnJhk2aZNmyRJtWvXTjGGBg0ayM3NTTt37lRMTEySQluFChWUPXv2ZO/x9fVVaGiooqOj7+Isb3r77be1ZMkSdenSJUmxcd++ferbt6/Gjh0rHx8fderU6a73+U/z5s3TmjVr1KNHDwUFBd33fu7F008/naQIK90snjZq1EgHDx7Uli1b1Lhx4zQ/LsU3AAAAAACQ4YWHh0u6eTfbPwsokuTp6anChQvr1KlTSZYfPXpUCxYs0M6dO3XixAldvHhRkpz7SGnctdsJCwvTggULFBISouPHj+vChQtJ9nXr/s6cOSNJKlq0aIr7KlGiRLJlZ8+elSRNmjRJkyZNumMsERERKlWqlPP17e4cS7x7LjGurVu36uuvv062XdmyZdW7d29t2LBBS5YskZ+fnwYPHiw3t78fmqxYsaJGjBihbt266b///a86dOiQZP3dOnTokD7++GP5+fnp1Vdfvav3BAcHKzg4ONnywMBA512M/yalNpf+nh018RpLaxTfAAAAAABApnGnYlniLJ2J5syZo5EjR8oYo2LFiqlmzZoqXbq0KlSooKJFi+rZZ5+96+P++uuveuONNxQXF6eCBQuqSpUqKlOmjMqXL6+goCA1aNAgyfaJd9T9c1y3O51H4raBgYEqXLjwHeO59dFXSSkWJFNy8uTJFGdmDQoKUu/evbV582ZJUr169VIsrNWqVUvZs2fX+fPnFRYWdtvi4p2MHTtWN27cUPbs2fXOO+8kWbd3715J0sKFC7Vx40Znce3AgQMpxn3rI8T/JqU7EKW//19YMd6bRPENAAAAAABkAonFqLCwMDkcjmSFIWOMzp0753x9+vRpjR49Wu7u7vr000/VrFmzJNsnFnnuRnR0tN59913FxcVp6NCh6tSpU5JiV+LddLdKvJvqdmPKJd4Zd6vEceyefvpptW/f/q7juxft2rVLMpHEP126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UEGdOnXSE088kWbHWbFihebMmaN9+/bpxo0bKly4sBo0aKDevXurQIECaXaclBw5ckSjRo3Sjh07FBsbq4IFC2r58uXy9PRM0+NQfAMAAAAAIBOIjDiriDOnXB1Gljd06FAFBwercuXKrg7FZc6ePavnn39eYWFh8vX1Vf369XXx4kWFhIRoy5Yt6tatmwYPHpzq43z++eeaNGmSbDabqlevrrx582rXrl2aO3euli9frvnz56tUqVJpcEbJGWPUq1cvnTp1SiVKlJCfn59y5syZ5oU3ieIbAAAAAACAU0JCgqtDcLnRo0crLCxMLVu21KhRo+Tl5SVJ2rp1q7p3766ZM2fqqaeeUpUqVe77GIcOHdJ///tf+fj4aPr06apevbok6caNG3rrrbf066+/asSIEZo6dWqanNM/nT9/XqdOnZKbm5sWL16sPHnyWHIciTHfAAAAAAAAcIv169dLkl599VVn4U2SAgIC1KRJE0nSli1bUnWM33//XcYYNWnSxFl4k6Rs2bLp9ddfT5Nj3MmNGzckSTly5LC08CZx5xsAAAAAAMhEEhIStGDBAn377bc6fvy4cubMqWbNmunVV19NcfvIyEjNnj1b69ev18mTJxUTE6PcuXOrUqVKeuGFF1S/fn1JUmhoqBo3bux83zvvvKN33nlHo0aNUrt27SRJV69e1fz587V69WodPXpU165dU44cOWS329W+fXu1atUqxeNPmzZNK1euVHh4uAoUKKAWLVqod+/eCggIUOHChbV69epk7/nqq6+0atUqnTlzRtmzZ1flypXVpUsXNWjQIMm23333nd555x29+uqratq0qb744gtt2bJF165d08MPP6w2bdqoS5cu8vC4+xKQu7u7JCksLEwlS5ZMFpsk5c2b9673lxI3NzfnMf7pfo7xwgsv3FWx7sCBA2rUqJFOnz4tSbpy5YpzrMA5c+aoZs2ad33Mu0XxDQAAAAAAZAoJCQnq16+fVq9eLR8fH9WqVUtxcXFatGhRioWXkydPqlOnToqIiFCxYsUUGBgoY4z279+vdevWad26dRo/frxatGghHx8ftWrVSiEhIQoLC5O/v7+KFy/uLD5dvHhRHTt21JEjR1SwYEH5+/vLw8NDhw8f1pYtW7RlyxadPXtWPXv2dB4/NDRUXbp0UWhoqAoXLqzHH39cERERmjp1qv74448UZ1Q9fPiwXnrpJYWHh6tw4cJ67LHHdO3aNW3ZskUbNmxQ79699dprryV7386dO/Xll18qZ86cqlatmq5evaqtW7dqzJgxOnbsmIYPH37X7Vy/fn399NNPGjJkiIYNG6bq1avrypUrmj17tjZu3KjixYvrySefvOv9peSxxx6Tm5ubtmzZopEjR6pr167Kly+fduzYoWHDhkmSevTocdf7q1OnjgoVKpTiug0bNigyMlLlypWTJDVp0kSnT5/WypUr5enp6ZxAwqoJHii+AQAAAACATOHrr7/W6tWr9cgjj2jmzJny9fWVJB07dkxdu3ZNtv0nn3yiiIgIdejQQR988IFsNpskKT4+XiNGjND8+fM1a9YstWjRQvnz59fYsWPVp08fhYWFqX379s473iRpypQpOnLkiBo2bKgvvvjCOTC/MUZTp07V+PHjNWvWrCTFt/fff1+hoaF65plnNGzYMOcjnL/99pv69+8vh8ORJN74+Hj1799f4eHh6tWrlwYMGOC8Y+3QoUPq3r27Jk+erCpVqqhRo0ZJ3rt27Vq1a9dO77//vry9vSXdnEm0X79++vbbb/Xqq6+qYMGCd9XOQ4cO1fnz57V582Z17550xtoWLVpoyJAhypEjx13t63bKli2rUaNG6aOPPtLs2bM1e/Zs57p8+fLpiy++ULNmze56f717905x+bJly/TTTz8pf/78mjx5siRpyJAhCg0N1cqVK5U9e3aNHTs2VefybxjzDQAAAAAAZArz5s2TJA0bNsxZeJOk0qVL69133022faFChfTYY4/p9ddfdxbeJMnDw0PPPfecJDkfP/w3uXLlUv369fXWW28lmRHTZrOpY8eOkqQLFy7o+vXrkqT9+/drw4YNKlKkSJLCmyQ1aNAgxbu6VqxYoaNHj6p69eoaOHBgkkdFH330UecMo9OmTUv23hw5cuiDDz5wFt4kqWnTpipevLiMMTp8+PBdnack5cmTR23btlWBAgVUqFAhNWzYUFWrVpWHh4fWrFmj77///q73dSc1atRQw4YN5eHhIX9/fzVs2FC+vr6KiorStGnTdOpU6mb3/fPPPzV48GB5enpq4sSJKl68eJrEfa+48w0AAAAAAGR4EREROnLkiHLmzKmAgIBk6xs2bChPT0/FxcU5l7333nvJtrty5YoOHTrknFTg1u3vpG/fvsmWRUdH68iR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m5ubateuLV9fX7m7u7viFDKMSZMm6cSJE0naoVChQoqLi9M333yjS5cuJdk+sa3Lli0rY4zc3NzkcDgkSUeOHFFMTIzq1q2rRx99NP1OIgXk6fRFnk5f5GnrkKfTBnk67WTVPA0g48lwWcoYo3z58ql9+/Zq3769cuTIoY0bN6pEiRIaMmSI3nvvPeXLl09ffvml+vXrp0GDBun48ePy8PDQ888/L4fDod9++02SFB8fL0l64okntHr1apUvX96Vp5YhJSbiyZMnq3HjxoqLi9Py5cv13HPPaerUqWrcuLH++OMPjR49Wp06ddLixYt16tQp5c+fX71799auXbu0dOlS5/4KFSqkbt26afHixSpdurSrTivDiomJ0d69e5UtWzZ5enrqkUcekSQtW7ZM7du314cffui8fj08PCTd7GA+8cQTWrFihZYvXy5J8vLy0rPPPqthw4ZJkmbPnq3IyMj0P6EMplChQnr55Zf1wgsv6OLFizp48KAqV66s7777TvXq1dNff/2loUOHqlOnTlq6dKmOHDkiSfrPf/6jo0ePatasWZIkh8OhHDlyaPDgwVqyZIkefvhh151UOnM4HPL29laePHl0+PBh7dq1K0mHNLGD2aVLF/n7+8vhcMjNzc35pef333+Xw+GQ3W53SfwZyccff6wvvvhCM2fOVHx8vLPD3rp1axUoUEAHDhzQ/v37k7zn1ra22WxyOBzOZd988428vLzUokULSTfzpSuQp9MXeTp9kaetRZ5OPfJ02smqeRpABuW6m+7+dutz9Lf+98WLF81XX31lateubYKCgsyECRNMQkKCOX78uJkzZ45p0KCB8zGXt956yxw+fNgMGTLEBAYGmhMnThhj/r6F+HYzsCGpxNl4atWq5ZyyfOvWreall14ygYGBxm63m6ZNm5qffvrJrFmzxrRq1cp07NiRgZrvwYULF8ybb75p/Pz8TMOGDc33339vRo4caZ577jnnoxgffPCB+e2335yPpvz555+mYsWKZtCgQSYhIcH5aEVsbOwDPUbH7f6uIyIizPDhw43dbjfVq1d3jruxY8cOM2DAAFO+fHlToUIF07JlSzNv3jxz6tQpU69ePdO9e3cTExNjjDEmLi4u3c4jI3r//feN3W43gwYNMufPn7/jtonXY0JCgmnTpo1p3LixOXnypDHmwf3sHTlypLHb7WbAgAHJHj25cOGC6dq1q/NRq9DQ0BT3cesjMF999ZWx2+2mT58+LhnbiDydcZCnrUeeTjvkaeuQp1Mnq+VpABlfhii+RUVFmUOHDpkdO3YkG9w2MjLSfPXVV6Zu3brG39/ffPrpp+bixYvGmJvjHUydOtU8//zzxm63mwoVKpjmzZub8uXLm/fee4+Bm29j3759Zu3atWbWrFlmzZo1yRJEYsc+KCjIbNu2zRhz8//R9u3bzZtvvunsEHXt2tU8/vjjJjAw8I5jIuDvTk9iRzEyMtK88cYbxm63m9atW5vg4GBz5MgRs3jxYuesVFWqVDE9e/Y0e/bsMfHx8WbSpEmmUqVKZteuXa48lQwlcYa+sLCwZLP/RUREODtWNWrUMMuWLXOuW7FihRkxYoTzS9TLL79snnrqKWO3283333+fzmfhOkuXLjV79uxJsizxWl21apWpWbOmqVu3rlm6dKnzy84/3drxHD9+vLHb7Wbo0KHm2rVr1gWewSVeW/369UvyhTtxAHFjjDl48KAJCAgwdrvddO/e3ezbt895Df9zPKjp06eboKAgU69ePWfBKr2Rp9MXeTr9kaetQZ5OHfK0NbJingaQ8dmMce39sP/73/+0fPly7dmzR3FxcXJ3d1ft2rXVtm1b1alTR3ny5FFkZKS+//57zZw5U9evX1enTp3UqVMn+fr6Ki4uTsYYzZkzR+vWrVNISIiMMQoMDNSXX34pHx8fV55ehjNt2jTNnz9f586dc45VUqZMGU2cODHJLfsDBgxQcHCwcufOrSlTpqh69erOdb/99ps2bNig//3vf8qePbtiYmIUGBioOXPmSJJzjA7cWVRUlEaOHKkff/xRpUqV0htvvKFmzZrp1KlT2rFjh7766isdOHBAuXPnVlBQkIoVK6aff/5ZgYGB+uijj5QzZ05Xn4JLLViwQCtWrNDGjRuVM2dOFS1aVP/3f/+nqlWrOrc5d+6cvvrqK82ePVu5c+fWkCFD1KZNG+f67du3a8mSJVq7dq3CwsIkSY899pgmTZqkbNmypfcppauQkBC98MILatGihXr06OF83M8YI5vNppiYGL377rv6+eefVapUKb322muqW7eucufOLXPzhxs5HA7nY1fz5s3ThAkTVKBAAU2fPl1FixZ15em5zMcff6yZM2eqWbNmGjBggPORtVvFx8fLw8NDf/zxh/r06aNr167Jz89P9erV0zPPPKN8+fIpPj5ep06d0owZM7RixQoVKVJEkydPTnF/ViNPpy/ydMZBnk4d8nTqkKetkRXzNIDMwaXFt/Hjx2vq1KkqWrSoGjduLB8fH61fv1779u1TgQIF9MQTT6hXr14qWLBgko79jRs31LFjR7344ot66KGHnPsLDw/Xtm3bNGvWLA0fPlzlypVz1allSJ988ommT58uX19ftWzZUjExMdq3b5927typokWL6uuvv5avr69z+1dffVW//vqrcufOrS+//FL+/v5J9rd9+3YtXbpUu3fv1vDhwxmrJwW7du1yjsdRtGhRFS5cWK1atXJ+8YmMjNTIkSP1008/qXjx4ho0aJAef/xxeXl5KTo6Wt9//73Wrl2r9evXO/dZuHBhzZo164Ea3+SfxowZoxkzZihPnjwqV66cLl++rAMHDqhgwYKaP3++SpQo4dz2nx37d999V61bt3auj4mJ0aVLlzRu3DgdP35co0ePVtmyZV1xWunq5MmTatasmXLlyqXHH39c3bt3d/4NJ3Y6L1++rJdeekl79uxR0aJF1bp1azVv3ty5ncPhUExMjMaNG6clS5bI29tbs2bNemA7nokd+rp162ro0KFJ/kY3bdqko0ePas+ePfL09FTjxo1VuXJlXbp0Sb1799bx48clSXny5FHu3LkVFxensLAweXl5qX79+nr77beTXNfphTydvsjT6Y88bQ3ydOqRp9NeVszTADIRV9xuZ4wx3333nbHb7aZjx45JHmEJCwszY8eONf7+/sbf39+89tprJiwszBhz8/n7xEdbAgICzPjx482FCxeS7fvGjRvpdh6ZxcKFC53jFuzdu9e5/Nq1a6Zz587Gbrebjz/+2DgcjiTtN2DAAGO3201gYKD5888/jTFJp9S+du3aA33b+p1MnDjR1KxZ0/nIROI/nTp1MuvWrXM+lnXhwgXnoy1NmzY1v/76q7ly5Yox5u9HCxYuXGh69erl3MeZM2dcdl6u9r///c/5CMqtnx19+/Y1drvdTJo0yRiTdAyTsLAw56MtgYGBZunSpc51iY8YxcfHO9v9QXDhwgUTFBRk7Ha7qVy5shk4cGCS9kx8pOLixYvmpZdeMna73ZQvX974+/ubt956y7z33numS5cuzjG9OnToYI4dO+ais3G9GzdumA8//NA5FtStpk+fbipV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TeQG2At7uX5nzpzBz88PQIW8iIiUKeX0jVNOi4iI3Dh1volIhaCCXkREpOJSTouIiFw/db6JiIiIiIiIiIg4iIavREREREREREREHESdbyIiIiIiIiIiIg6izjcREREREREREREHUeebiIiIiIiIiIiIg6jzTURERERERERExEHU+SYiIiIiIiIiIuIg6nwTERERERERERFxEHW+iYiIiIiIiIiIOIg630TKwd69e/nXv/7F/fffT5s2bbj11lvp3LkzTz/9NPPmzSM3N7fEz40ePZrw8HBGjRpVzi2+NjabjUcffZR7772X/Px8ALZs2UJ4eDjh4eEUFBSUSzv2799fLscpyZIlS2jWrBkbN250WhtEROT6KKeV0yIiIo6kzjcRB5syZQp9+/blk08+IT09naCgICIiInBxcWHjxo28+eabxMbGsnv3bmc39bp9+OGHbNu2jdGjR+Pm5lbux8/IyOCll17i6aefLvdj2/Xu3ZsWLVrwyiuvkJ2d7bR2iIjItVFOO55yWkREqjp1vok40Oeff867776Lp6cnCQkJbN26lcWLF5OUlMS6detITk6mVatWHD9+nKeeeorTp08X+/yLL75IcnIycXFxTjqD0h09epTp06fTvn17Onfu7JQ2pKamsnz5cgzDcMrxASwWC3FxcZw8eZL4+HintUNERK6ecrp8KKdFRKSqU+ebiAPNmDEDgLi4OGJjY3F1dS22vkmTJrz33nsEBARw5swZ5s6dW2x97dq1adKkCbVr1y63Nl+rSZMmkZuby4gRI5zdFKdr06YN7du3Z+HChU59tEZERK6OcrpqUU6LiIizqPNNxEGys7M5cuQIAC1btrzsdv7+/nTt2hWAH374oVzaVlb279/PypUrCQ0NpU2bNs5uToXw8MMPU1hYyLvvvuvspoiIyBUop6sm5bSIiDhDNWc3QORmVa3an/+81q1bR/PmzS+77YgRIxg4cCABAQHFlo8ePZrFixfTs2dPJk6cWGzZ1UhLSyv2+6NHjzJr1iw2bdpEeno6Hh4ehIWF0bdvX/r163fJiH9pPvnkEwzDoFevXlfczmq1MmPGDL744guOHz+On58fMTExDB06lODgYHO7BQsW8Nprr+Hr60tqamqJ89IcP36cLl26YLFYWLduHXfeeae57sSJE4SHh5d47mvWrCEpKYldu3bxxx9/4Ofn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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ax = sns.catplot(\n", + " dataset_sizes,\n", + " x=\"size\",\n", + " col=\"algorithm\",\n", + " hue=\"dataset\",\n", + " kind=\"bar\",\n", + " hue_order=['datagen-7_5-fb', 'graph500-22', 'datagen-7_9-fb', 'cit-Patents', 'datagen-8_4-fb', 'datagen-8_8-zf'],\n", + " col_order=[\"BFS\", \"PageRank\", \"WCC\", \"SSSP\"],\n", + " legend_out=True,\n", + " errorbar=\"sd\",\n", + " capsize=0.2,\n", + " col_wrap=2,\n", + " sharex=True\n", + ")\n", + "\n", + "ax.set(xscale=\"log\")\n", + "# sns.move_legend(ax, \"center right\", ncols=1, bbox_to_anchor=(1.05, 0.55), title=None, frameon=False)\n", + "\n", + "num_xticks = 6 # Specify the number of xticks you want\n", + "xtick_min = np.log2(dataset_sizes['size'].min())\n", + "xtick_max = np.log2(dataset_sizes['size'].max())\n", + "xticks = np.logspace(xtick_min, xtick_max, num=num_xticks, base=2.0)\n", + "ax.set(xticks=xticks)\n", + "\n", + "xtick_labels = [f\"{int(format_filesize(x)[0])}{format_filesize(x)[1]}\" for x in xticks]\n", + "ax.set_xticklabels(xtick_labels)\n", + "\n", + "for axx in ax.axes.flat:\n", + " axx.set_xticklabels(xtick_labels, rotation=45)\n", + "\n", + "ax.set_axis_labels(\"Size (bytes)\", \"Dataset\")\n", + "ax.set_titles(\"{col_name}\")\n", + "\n", + "ax.savefig(plot_location(\"es01-size.pdf\"), dpi=\"figure\")" + ] + }, + { + "cell_type": "markdown", + "id": "8860482e-1498-4499-9493-b0809548a416", + "metadata": {}, + "source": [ + "# Tracing" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "3b47bed4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    algorithmdatasetdurationsize
    111completeprovenancePageRankdatagen-7_5-fbJSON74273083470.5914572.016899708.32MB0BFScit-Patents82.968899100187504
    33completeprovenancePageRank1BFSdatagen-7_5-fbObject87193391462.7199221.791998831.54MB34.3231089533719
    51completeprovenancePageRank2BFSdatagen-7_9-fbCSV-C428773253164.0059724.685885408.91MB69.31001120966038
    46completeprovenancePageRankdatagen-7_9-fbText-C433388860165.5606274.730304413.31MB3BFSdatagen-8_4-fb241.78578457850630
    3completeprovenancePageRankdatagen-7_9-fbJSON-C457450553156.3347774.466708436.26MB4BFSdatagen-8_8-zf218.7215792703435298
    48completeprovenancePageRankdatagen-7_9-fbORC654589137137.3984043.925669624.26MB5BFSgraph500-2232.86559023357988
    60completeprovenance6PageRankdatagen-7_9-fbParquet689544217132.7522733.792922657.60MBcit-Patents85.102944113070194
    36completeprovenance7PageRankdatagen-7_9-fbAvro701125212142.8844794.082414668.65MBdatagen-7_5-fb39.98047622202359
    69completeprovenance8PageRankdatagen-7_9-fbCSV1146723471128.3383213.6668091.07GB69.87907348717778
    103completeprovenance9PageRankdatagen-7_9-fbText1216101565115.1571193.2902031.13GBdatagen-8_4-fb215.872856134032310
    2completeprovenance10PageRankdatagen-7_9-fbJSON1632380079124.2432493.5498071.52GBdatagen-8_8-zf245.9493485970693132
    56completeprovenance11PageRankdatagen-7_9-fbObject1909994294112.6811673.2194621.78GBgraph500-2278.37637771264722
    19completeprovenance12SSSPdatagen-7_5-fbCSV-C6237031660.1772882.00591059.48MB38.11654722202359
    107completeprovenance13SSSPdatagen-7_5-fbText-C6370215152.3067891.74356060.75MBdatagen-7_9-fb76.49571048717778
    8completeprovenance14SSSPdatagen-7_5-fbJSON-C6879111259.9693051.99897765.60MBdatagen-8_4-fb255.830169134032310
    70completeprovenance15SSSPdatagen-7_5-fbORC7189709952.2150421.74050168.57MBdatagen-8_8-zf209.2493245899340019
    89completeprovenanceSSSPdatagen-7_5-fbParquet7643334750.2675941.67558672.89MB16WCCcit-Patents157.94498637635956
    84completeprovenanceSSSP17WCCdatagen-7_5-fbAvro9213561951.6692061.72230787.87MB36.7684069533719
    44completeprovenanceSSSPdatagen-7_5-fbCSV23313424152.0423761.734746222.33MB18WCCdatagen-7_9-fb66.34400420966038
    108completeprovenanceSSSPdatagen-7_5-fbText25467092941.1571251.371904242.87MB19WCCdatagen-8_4-fb239.01833257850630
    114completeprovenance20WCCgraph500-2272.04544123339653
    \n", + "
    " + ], + "text/plain": [ + " algorithm dataset duration size\n", + "0 BFS cit-Patents 82.968899 100187504\n", + "1 BFS datagen-7_5-fb 34.323108 9533719\n", + "2 BFS datagen-7_9-fb 69.310011 20966038\n", + "3 BFS datagen-8_4-fb 241.785784 57850630\n", + "4 BFS datagen-8_8-zf 218.721579 2703435298\n", + "5 BFS graph500-22 32.865590 23357988\n", + "6 PageRank cit-Patents 85.102944 113070194\n", + "7 PageRank datagen-7_5-fb 39.980476 22202359\n", + "8 PageRank datagen-7_9-fb 69.879073 48717778\n", + "9 PageRank datagen-8_4-fb 215.872856 134032310\n", + "10 PageRank datagen-8_8-zf 245.949348 5970693132\n", + "11 PageRank graph500-22 78.376377 71264722\n", + "12 SSSP datagen-7_5-fb 38.116547 22202359\n", + "13 SSSP datagen-7_9-fb 76.495710 48717778\n", + "14 SSSP datagen-8_4-fb 255.830169 134032310\n", + "15 SSSP datagen-8_8-zf 209.249324 5899340019\n", + "16 WCC cit-Patents 157.944986 37635956\n", + "17 WCC datagen-7_5-fb 36.768406 9533719\n", + "18 WCC datagen-7_9-fb 66.344004 20966038\n", + "19 WCC datagen-8_4-fb 239.018332 57850630\n", + "20 WCC graph500-22 72.045441 23339653" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "baseline_stats_copy" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "14621e94-1443-4a54-b416-6980ed42a41c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - "
    algorithmdatasetdurationsize
    0SSSPdatagen-7_5-fbJSON38389105746.9251691.564172366.11MBdatagen-8_4-fb140.479249134032310
    117completeprovenance1SSSPdatagen-7_5-fbObject59669231649.2075671.640252569.05MBdatagen-8_4-fb132.204479134032310
    91completeprovenance2SSSPdatagen-7_9-fbCSV-C15501810191.4211262.856910147.84MBdatagen-8_4-fb132.022222134032310
    23completeprovenance3SSSPdatagen-7_9-fbText-C158049578137.1086134.284644150.73MBdatagen-8_4-fb178.487897134032310
    52completeprovenance4SSSPdatagen-7_9-fbORC169444993101.7353723.179230161.60MBdatagen-8_4-fb201.796498134032310
    6completeprovenance5SSSPdatagen-7_9-fbJSON-C170232558111.0116423.469114162.35MBdatagen-8_4-fb266.424223134032310
    71completeprovenance6SSSPdatagen-7_9-fbParquet179527558119.3420973.729441171.21MBdatagen-7_5-fb33.83051922202359
    17completeprovenance7SSSPdatagen-7_9-fbAvro22682260679.6082572.487758216.31MBdatagen-7_5-fb42.00461122202359
    11completeprovenance8SSSPdatagen-7_9-fbCSV55118009478.0728132.439775525.65MBdatagen-7_5-fb40.61258422202359
    109completeprovenance9SSSPdatagen-7_9-fbText60113322692.1441272.879504573.29MBdatagen-7_5-fb73.23096222202359
    26completeprovenance10SSSPdatagen-7_9-fbJSON90085201897.8876443.058989859.12MBdatagen-7_5-fb42.32720822202359
    112completeprovenance11SSSPdatagen-7_9-fbObject138397982479.5878452.4871201.29GBdatagen-7_5-fb40.98341722202359
    90completeprovenance12WCCcit-PatentsORC386872327200.9159414.900389368.95MBgraph500-2285.56828223339653
    45completeprovenance13WCCcit-PatentsCSV-C390512385231.8183505.654106372.42MBgraph500-2273.48528323339653
    42completeprovenance14WCCcit-PatentsText-C410716445244.6962765.968202391.69MBgraph500-2273.30915623339653
    83completeprovenance15WCCcit-PatentsJSON-C450465794218.1286125.320210429.60MBgraph500-2272.53303523339653
    32completeprovenance16WCCcit-PatentsParquet565433425191.3013334.665886539.24MBgraph500-2270.95616423339653
    76completeprovenance17WCCcit-PatentsAvro592224379190.1878934.638729564.79MBgraph500-2257.96179823339653
    7completeprovenanceWCCcit-PatentsCSV941792868200.7979594.897511898.16MB18SSSPdatagen-7_9-fb53.02466348717778
    31completeprovenanceWCCcit-PatentsText1100333124190.5493384.6475451.02GB19SSSPdatagen-7_9-fb55.81978548717778
    79completeprovenanceWCCcit-PatentsJSON2051574660191.0912214.6607611.91GB20SSSPdatagen-7_9-fb91.34694348717778
    21SSSPdatagen-7_9-fb93.14583348717778
    22SSSPdatagen-7_9-fb86.92852648717778
    23SSSPdatagen-7_9-fb105.83402648717778
    24PageRankgraph500-2283.69354671264722
    25completeprovenanceWCCcit-PatentsObject3730315659197.9244204.8274253.47GBPageRankgraph500-2287.67309971264722
    39completeprovenanceWCCdatagen-7_5-fbCSV-C2501254546.1183343.54756423.85MB26PageRankgraph500-2281.17267671264722
    74completeprovenanceWCCdatagen-7_5-fbText-C2600663239.8439273.06491724.80MB27PageRankgraph500-2279.79186471264722
    73completeprovenanceWCCdatagen-7_5-fbJSON-C2832643548.5538543.73491227.01MB28PageRankgraph500-2292.39062471264722
    20completeprovenance29PageRankgraph500-2284.08416071264722
    30PageRankdatagen-7_9-fb93.59194348717778
    31PageRankdatagen-7_9-fb84.39942448717778
    32PageRankdatagen-7_9-fb94.55300048717778
    33PageRankdatagen-7_9-fb88.54116248717778
    34PageRankdatagen-7_9-fb88.86229248717778
    35PageRankdatagen-7_9-fb86.03026248717778
    36WCCdatagen-7_5-fbORC3593252742.8044643.29265134.27MB39.6742119533719
    93completeprovenance37WCCdatagen-7_5-fbParquet3893168043.7809853.36776837.13MB39.5947389533719
    54completeprovenance38WCCdatagen-7_5-fbAvro4044080844.9663243.45894838.57MB42.1863059533719
    113completeprovenance39WCCdatagen-7_5-fbCSV8515813245.8612753.52779081.21MB37.7535659533719
    72completeprovenance40WCCdatagen-7_5-fbText9402618039.3828443.02945089.67MB43.5280959533719
    53completeprovenance41WCCdatagen-7_5-fbJSON14723446843.2277693.325213140.41MB41.0386739533719
    42BFScit-Patents93.084850100187504
    43BFScit-Patents67.314091100187504
    44BFScit-Patents71.610397100187504
    45BFScit-Patents67.837661100187504
    46BFScit-Patents68.945276100187504
    47BFScit-Patents67.387534100187504
    48BFSdatagen-7_9-fb92.52208220966038
    49completeprovenanceWCCdatagen-7_5-fbObject21350702947.0376333.618279203.62MBBFSdatagen-7_9-fb92.84169620966038
    9completeprovenanceWCC50BFSdatagen-7_9-fbCSV-C5754928884.3143036.48571654.88MB49.54209520966038
    16completeprovenanceWCC51BFSdatagen-7_9-fbText-C5973665184.0326226.46404856.97MB49.26065320966038
    64completeprovenanceWCC52BFSdatagen-7_9-fbJSON-C6516368884.2663316.48202562.14MB106.83599820966038
    24completeprovenanceWCC53BFSdatagen-7_9-fbORC8204997978.4625706.03558278.25MB49.91810520966038
    27completeprovenance54PageRankcit-Patents93.403024113070194
    55PageRankcit-Patents88.882940113070194
    56PageRankcit-Patents95.720769113070194
    57PageRankcit-Patents88.476289113070194
    58PageRankcit-Patents85.079759113070194
    59PageRankcit-Patents94.110266113070194
    60WCCdatagen-7_9-fbParquet8814124684.2540966.48108484.06MB78.12261920966038
    101completeprovenance61WCCdatagen-7_9-fbAvro9226135477.4865175.96050187.99MB80.36800920966038
    62completeprovenanceWCCdatagen-7_9-fbCSV18874292084.1563746.473567180.00MB79.97404020966038
    10completeprovenance63WCCdatagen-7_9-fbText20816913874.1738665.705682198.53MB80.17666220966038
    22completeprovenance64WCCdatagen-7_9-fbJSON32472644689.6521586.896320309.68MB71.36221020966038
    30completeprovenance65WCCdatagen-7_9-fbObject46973596483.4259146.417378447.98MB74.58337620966038
    \n", - "
    " - ], - "text/plain": [ - " config algorithm dataset storage_format total_size \\\n", - "50 completeprovenance BFS cit-Patents ORC 272126547 \n", - "58 completeprovenance BFS cit-Patents CSV-C 385629051 \n", - "57 completeprovenance BFS cit-Patents Text-C 398055303 \n", - "100 completeprovenance BFS cit-Patents JSON-C 411310835 \n", - "97 completeprovenance BFS cit-Patents Parquet 452688486 \n", - "18 completeprovenance BFS cit-Patents Avro 548177668 \n", - "105 completeprovenance BFS cit-Patents CSV 2351958475 \n", - "40 completeprovenance BFS cit-Patents Text 2525597803 \n", - "29 completeprovenance BFS cit-Patents JSON 3567433771 \n", - "116 completeprovenance BFS cit-Patents Object 4470241541 \n", - "115 completeprovenance BFS datagen-7_5-fb CSV-C 48690774 \n", - "38 completeprovenance BFS datagen-7_5-fb Text-C 49265960 \n", - "98 completeprovenance BFS datagen-7_5-fb JSON-C 53194680 \n", - "0 completeprovenance BFS datagen-7_5-fb ORC 58274920 \n", - "104 completeprovenance BFS datagen-7_5-fb Parquet 61961248 \n", - "85 completeprovenance BFS datagen-7_5-fb Avro 72546300 \n", - "61 completeprovenance BFS datagen-7_5-fb CSV 236259401 \n", - "78 completeprovenance BFS datagen-7_5-fb Text 256529225 \n", - "47 completeprovenance BFS datagen-7_5-fb JSON 378148169 \n", - "35 completeprovenance BFS datagen-7_5-fb Object 487601995 \n", - "28 completeprovenance BFS datagen-7_9-fb CSV-C 116209136 \n", - "43 completeprovenance BFS datagen-7_9-fb Text-C 117407400 \n", - "102 completeprovenance BFS datagen-7_9-fb JSON-C 127350354 \n", - "4 completeprovenance BFS datagen-7_9-fb ORC 135877889 \n", - "106 completeprovenance BFS datagen-7_9-fb Parquet 143053677 \n", - "81 completeprovenance BFS datagen-7_9-fb Avro 171065610 \n", - "75 completeprovenance BFS datagen-7_9-fb CSV 534677441 \n", - "41 completeprovenance BFS datagen-7_9-fb Text 581855399 \n", - "5 completeprovenance BFS datagen-7_9-fb JSON 864923147 \n", - "34 completeprovenance BFS datagen-7_9-fb Object 1128077456 \n", - "21 completeprovenance BFS graph500-22 ORC 21625818 \n", - "68 completeprovenance BFS graph500-22 Text-C 31505964 \n", - "96 completeprovenance BFS graph500-22 JSON-C 32247729 \n", - "1 completeprovenance BFS graph500-22 Parquet 36196251 \n", - "63 completeprovenance BFS graph500-22 Avro 44691531 \n", - "88 completeprovenance BFS graph500-22 CSV 199414170 \n", - "82 completeprovenance BFS graph500-22 Text 213794112 \n", - "95 completeprovenance BFS graph500-22 Object 370356939 \n", - "13 completeprovenance PageRank cit-Patents CSV-C 981249822 \n", - "92 completeprovenance PageRank cit-Patents Text-C 997108236 \n", - "110 completeprovenance PageRank cit-Patents JSON-C 1056694971 \n", - "86 completeprovenance PageRank cit-Patents ORC 1137685330 \n", - "37 completeprovenance PageRank cit-Patents Avro 1589606305 \n", - "94 completeprovenance PageRank cit-Patents Parquet 1593606785 \n", - "80 completeprovenance PageRank cit-Patents CSV 2645496912 \n", - "55 completeprovenance PageRank cit-Patents Text 2834235312 \n", - "65 completeprovenance PageRank cit-Patents JSON 3966665712 \n", - "59 completeprovenance PageRank cit-Patents Object 5183266070 \n", - "66 completeprovenance PageRank datagen-7_5-fb CSV-C 192423799 \n", - "15 completeprovenance PageRank datagen-7_5-fb Text-C 194758917 \n", - "87 completeprovenance PageRank datagen-7_5-fb JSON-C 205761319 \n", - "77 completeprovenance PageRank datagen-7_5-fb ORC 297074263 \n", - "12 completeprovenance PageRank datagen-7_5-fb Parquet 314712266 \n", - "67 completeprovenance PageRank datagen-7_5-fb Avro 316673397 \n", - "99 completeprovenance PageRank datagen-7_5-fb CSV 521026924 \n", - "14 completeprovenance PageRank datagen-7_5-fb Text 552752499 \n", - "111 completeprovenance PageRank datagen-7_5-fb JSON 742730834 \n", - "33 completeprovenance PageRank datagen-7_5-fb Object 871933914 \n", - "51 completeprovenance PageRank datagen-7_9-fb CSV-C 428773253 \n", - "46 completeprovenance PageRank datagen-7_9-fb Text-C 433388860 \n", - "3 completeprovenance PageRank datagen-7_9-fb JSON-C 457450553 \n", - "48 completeprovenance PageRank datagen-7_9-fb ORC 654589137 \n", - "60 completeprovenance PageRank datagen-7_9-fb Parquet 689544217 \n", - "36 completeprovenance PageRank datagen-7_9-fb Avro 701125212 \n", - "69 completeprovenance PageRank datagen-7_9-fb CSV 1146723471 \n", - "103 completeprovenance PageRank datagen-7_9-fb Text 1216101565 \n", - "2 completeprovenance PageRank datagen-7_9-fb JSON 1632380079 \n", - "56 completeprovenance PageRank datagen-7_9-fb Object 1909994294 \n", - "19 completeprovenance SSSP datagen-7_5-fb CSV-C 62370316 \n", - "107 completeprovenance SSSP datagen-7_5-fb Text-C 63702151 \n", - "8 completeprovenance SSSP datagen-7_5-fb JSON-C 68791112 \n", - "70 completeprovenance SSSP datagen-7_5-fb ORC 71897099 \n", - "89 completeprovenance SSSP datagen-7_5-fb Parquet 76433347 \n", - "84 completeprovenance SSSP datagen-7_5-fb Avro 92135619 \n", - "44 completeprovenance SSSP datagen-7_5-fb CSV 233134241 \n", - "108 completeprovenance SSSP datagen-7_5-fb Text 254670929 \n", - "114 completeprovenance SSSP datagen-7_5-fb JSON 383891057 \n", - "117 completeprovenance SSSP datagen-7_5-fb Object 596692316 \n", - "91 completeprovenance SSSP datagen-7_9-fb CSV-C 155018101 \n", - "23 completeprovenance SSSP datagen-7_9-fb Text-C 158049578 \n", - "52 completeprovenance SSSP datagen-7_9-fb ORC 169444993 \n", - "6 completeprovenance SSSP datagen-7_9-fb JSON-C 170232558 \n", - "71 completeprovenance SSSP datagen-7_9-fb Parquet 179527558 \n", - "17 completeprovenance SSSP datagen-7_9-fb Avro 226822606 \n", - "11 completeprovenance SSSP datagen-7_9-fb CSV 551180094 \n", - "109 completeprovenance SSSP datagen-7_9-fb Text 601133226 \n", - "26 completeprovenance SSSP datagen-7_9-fb JSON 900852018 \n", - "112 completeprovenance SSSP datagen-7_9-fb Object 1383979824 \n", - "90 completeprovenance WCC cit-Patents ORC 386872327 \n", - "45 completeprovenance WCC cit-Patents CSV-C 390512385 \n", - "42 completeprovenance WCC cit-Patents Text-C 410716445 \n", - "83 completeprovenance WCC cit-Patents JSON-C 450465794 \n", - "32 completeprovenance WCC cit-Patents Parquet 565433425 \n", - "76 completeprovenance WCC cit-Patents Avro 592224379 \n", - "7 completeprovenance WCC cit-Patents CSV 941792868 \n", - "31 completeprovenance WCC cit-Patents Text 1100333124 \n", - "79 completeprovenance WCC cit-Patents JSON 2051574660 \n", - "25 completeprovenance WCC cit-Patents Object 3730315659 \n", - "39 completeprovenance WCC datagen-7_5-fb CSV-C 25012545 \n", - "74 completeprovenance WCC datagen-7_5-fb Text-C 26006632 \n", - "73 completeprovenance WCC datagen-7_5-fb JSON-C 28326435 \n", - "20 completeprovenance WCC datagen-7_5-fb ORC 35932527 \n", - "93 completeprovenance WCC datagen-7_5-fb Parquet 38931680 \n", - "54 completeprovenance WCC datagen-7_5-fb Avro 40440808 \n", - "113 completeprovenance WCC datagen-7_5-fb CSV 85158132 \n", - "72 completeprovenance WCC datagen-7_5-fb Text 94026180 \n", - "53 completeprovenance WCC datagen-7_5-fb JSON 147234468 \n", - "49 completeprovenance WCC datagen-7_5-fb Object 213507029 \n", - "9 completeprovenance WCC datagen-7_9-fb CSV-C 57549288 \n", - "16 completeprovenance WCC datagen-7_9-fb Text-C 59736651 \n", - "64 completeprovenance WCC datagen-7_9-fb JSON-C 65163688 \n", - "24 completeprovenance WCC datagen-7_9-fb ORC 82049979 \n", - "27 completeprovenance WCC datagen-7_9-fb Parquet 88141246 \n", - "101 completeprovenance WCC datagen-7_9-fb Avro 92261354 \n", - "62 completeprovenance WCC datagen-7_9-fb CSV 188742920 \n", - "10 completeprovenance WCC datagen-7_9-fb Text 208169138 \n", - "22 completeprovenance WCC datagen-7_9-fb JSON 324726446 \n", - "30 completeprovenance WCC datagen-7_9-fb Object 469735964 \n", - "\n", - " duration per_iter nice_size \n", - "50 113.815472 2.646871 259.52MB \n", - "58 143.495254 3.337099 367.76MB \n", - "57 154.327360 3.589008 379.62MB \n", - "100 134.970226 3.138842 392.26MB \n", - "97 110.955192 2.580353 431.72MB \n", - "18 110.712451 2.574708 522.78MB \n", - "105 117.176385 2.725032 2.19GB \n", - "40 101.973519 2.371477 2.35GB \n", - "29 107.638374 2.503218 3.32GB \n", - "116 119.315761 2.774785 4.16GB \n", - "115 57.120579 1.969675 46.44MB \n", - "38 57.709867 1.989995 46.98MB \n", - "98 57.547191 1.984386 50.73MB \n", - "0 50.868484 1.754086 55.58MB \n", - "104 48.867018 1.685070 59.09MB \n", - "85 53.117164 1.831626 69.19MB \n", - "61 58.527642 2.018195 225.31MB \n", - "78 41.142354 1.418702 244.65MB \n", - "47 48.643720 1.677370 360.63MB \n", - "35 41.675332 1.437080 465.01MB \n", - "28 128.829199 4.155781 110.83MB \n", - "43 90.139759 2.907734 111.97MB \n", - "102 132.247397 4.266045 121.45MB \n", - "4 104.052758 3.356541 129.58MB \n", - "106 105.884096 3.415616 136.43MB \n", - "81 93.661136 3.021327 163.14MB \n", - "75 71.025003 2.291129 509.91MB \n", - "41 61.450592 1.982277 554.90MB \n", - "5 67.917724 2.190894 824.85MB \n", - "34 106.630419 3.439691 1.05GB \n", - "21 40.428390 13.476130 20.62MB \n", - "68 39.143989 13.047996 30.05MB \n", - "96 39.219499 13.073166 30.75MB \n", - "1 43.212258 14.404086 34.52MB \n", - "63 36.402101 12.134034 42.62MB \n", - "88 41.448111 13.816037 190.18MB \n", - "82 42.711168 14.237056 203.89MB \n", - "95 40.123198 13.374399 353.20MB \n", - "13 245.728175 7.020805 935.79MB \n", - "92 253.336648 7.238190 950.92MB \n", - "110 226.337767 6.466793 1007.74MB \n", - "86 223.422605 6.383503 1.06GB \n", - "37 160.503187 4.585805 1.48GB \n", - "94 173.286136 4.951032 1.48GB \n", - "80 162.602287 4.645780 2.46GB \n", - "55 142.736847 4.078196 2.64GB \n", - "65 156.517652 4.471933 3.69GB \n", - "59 150.139135 4.289690 4.83GB \n", - "66 96.037768 2.743936 183.51MB \n", - "15 89.176345 2.547896 185.74MB \n", - "87 90.446040 2.584173 196.23MB \n", - "77 77.929319 2.226552 283.31MB \n", - "12 70.957423 2.027355 300.13MB \n", - "67 76.722820 2.192081 302.00MB \n", - "99 68.511904 1.957483 496.89MB \n", - "14 61.612538 1.760358 527.15MB \n", - "111 70.591457 2.016899 708.32MB \n", - "33 62.719922 1.791998 831.54MB \n", - "51 164.005972 4.685885 408.91MB \n", - "46 165.560627 4.730304 413.31MB \n", - "3 156.334777 4.466708 436.26MB \n", - "48 137.398404 3.925669 624.26MB \n", - "60 132.752273 3.792922 657.60MB \n", - "36 142.884479 4.082414 668.65MB \n", - "69 128.338321 3.666809 1.07GB \n", - "103 115.157119 3.290203 1.13GB \n", - "2 124.243249 3.549807 1.52GB \n", - "56 112.681167 3.219462 1.78GB \n", - "19 60.177288 2.005910 59.48MB \n", - "107 52.306789 1.743560 60.75MB \n", - "8 59.969305 1.998977 65.60MB \n", - "70 52.215042 1.740501 68.57MB \n", - "89 50.267594 1.675586 72.89MB \n", - "84 51.669206 1.722307 87.87MB \n", - "44 52.042376 1.734746 222.33MB \n", - "108 41.157125 1.371904 242.87MB \n", - "114 46.925169 1.564172 366.11MB \n", - "117 49.207567 1.640252 569.05MB \n", - "91 91.421126 2.856910 147.84MB \n", - "23 137.108613 4.284644 150.73MB \n", - "52 101.735372 3.179230 161.60MB \n", - "6 111.011642 3.469114 162.35MB \n", - "71 119.342097 3.729441 171.21MB \n", - "17 79.608257 2.487758 216.31MB \n", - "11 78.072813 2.439775 525.65MB \n", - "109 92.144127 2.879504 573.29MB \n", - "26 97.887644 3.058989 859.12MB \n", - "112 79.587845 2.487120 1.29GB \n", - "90 200.915941 4.900389 368.95MB \n", - "45 231.818350 5.654106 372.42MB \n", - "42 244.696276 5.968202 391.69MB \n", - "83 218.128612 5.320210 429.60MB \n", - "32 191.301333 4.665886 539.24MB \n", - "76 190.187893 4.638729 564.79MB \n", - "7 200.797959 4.897511 898.16MB \n", - "31 190.549338 4.647545 1.02GB \n", - "79 191.091221 4.660761 1.91GB \n", - "25 197.924420 4.827425 3.47GB \n", - "39 46.118334 3.547564 23.85MB \n", - "74 39.843927 3.064917 24.80MB \n", - "73 48.553854 3.734912 27.01MB \n", - "20 42.804464 3.292651 34.27MB \n", - "93 43.780985 3.367768 37.13MB \n", - "54 44.966324 3.458948 38.57MB \n", - "113 45.861275 3.527790 81.21MB \n", - "72 39.382844 3.029450 89.67MB \n", - "53 43.227769 3.325213 140.41MB \n", - "49 47.037633 3.618279 203.62MB \n", - "9 84.314303 6.485716 54.88MB \n", - "16 84.032622 6.464048 56.97MB \n", - "64 84.266331 6.482025 62.14MB \n", - "24 78.462570 6.035582 78.25MB \n", - "27 84.254096 6.481084 84.06MB \n", - "101 77.486517 5.960501 87.99MB \n", - "62 84.156374 6.473567 180.00MB \n", - "10 74.173866 5.705682 198.53MB \n", - "22 89.652158 6.896320 309.68MB \n", - "30 83.425914 6.417378 447.98MB " - ] - }, - "execution_count": 77, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data_dir = Path(\"das6\") / \"20240521-034221-completeprovenance\"\n", - "storage_formats = parse_experiment_output(root_dir / \"data\" / data_dir)\n", - "storage_formats[\"per_iter\"] = storage_formats[\"duration\"] / storage_formats[\"iterations\"]\n", - "storage_formats[\"nice_size\"] = [f\"{format_filesize(s)[0]:.2f}{format_filesize(s)[1]}\" for s in storage_formats[\"total_size\"]]\n", - "storage_formats.drop([\"nr_vertices\", \"iterations\", \"compressed\", \"nr_executors\", \"run\"], axis=1, inplace=True)\n", - "storage_formats.sort_values(by=[\"algorithm\", \"dataset\", \"total_size\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 78, - "id": "b21238d2-4ce8-4f4c-9091-0161ff0c4628", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
    configalgorithmdatasetstorage_formattotal_sizeduration
    10completeprovenanceWCCdatagen-7_9-fbText20816913874.17386666SSSPdatagen-8_8-zf156.0404555899340019
    14completeprovenancePageRankdatagen-7_5-fbText55275249961.61253867SSSPdatagen-8_8-zf167.1173595899340019
    31completeprovenanceWCCcit-PatentsText1100333124190.54933868SSSPdatagen-8_8-zf261.9016485899340019
    40completeprovenanceBFScit-PatentsText2525597803101.97351969SSSPdatagen-8_8-zf154.4593375899340019
    41completeprovenanceBFSdatagen-7_9-fbText58185539961.45059270SSSPdatagen-8_8-zf166.4244465899340019
    55completeprovenancePageRankcit-PatentsText2834235312142.73684771SSSPdatagen-8_8-zf110.6581695899340019
    72completeprovenanceWCCdatagen-7_5-fbText9402618039.382844BFSgraph500-2232.89180123357988
    78completeprovenance73BFSdatagen-7_5-fbText25652922541.142354graph500-2227.68589723357988
    82completeprovenance74BFSgraph500-22Text21379411242.71116831.69813423357988
    103completeprovenancePageRankdatagen-7_9-fbText1216101565115.15711975BFSgraph500-2231.12563423357988
    108completeprovenanceSSSPdatagen-7_5-fbText25467092941.15712576BFSgraph500-2229.79598623357988
    109completeprovenanceSSSPdatagen-7_9-fbText60113322692.144127
    \n", - "
    " - ], - "text/plain": [ - " config algorithm dataset storage_format total_size \\\n", - "10 completeprovenance WCC datagen-7_9-fb Text 208169138 \n", - "14 completeprovenance PageRank datagen-7_5-fb Text 552752499 \n", - "31 completeprovenance WCC cit-Patents Text 1100333124 \n", - "40 completeprovenance BFS cit-Patents Text 2525597803 \n", - "41 completeprovenance BFS datagen-7_9-fb Text 581855399 \n", - "55 completeprovenance PageRank cit-Patents Text 2834235312 \n", - "72 completeprovenance WCC datagen-7_5-fb Text 94026180 \n", - "78 completeprovenance BFS datagen-7_5-fb Text 256529225 \n", - "82 completeprovenance BFS graph500-22 Text 213794112 \n", - "103 completeprovenance PageRank datagen-7_9-fb Text 1216101565 \n", - "108 completeprovenance SSSP datagen-7_5-fb Text 254670929 \n", - "109 completeprovenance SSSP datagen-7_9-fb Text 601133226 \n", - "\n", - " duration \n", - "10 74.173866 \n", - "14 61.612538 \n", - "31 190.549338 \n", - "40 101.973519 \n", - "41 61.450592 \n", - "55 142.736847 \n", - "72 39.382844 \n", - "78 41.142354 \n", - "82 42.711168 \n", - "103 115.157119 \n", - "108 41.157125 \n", - "109 92.144127 " - ] - }, - "execution_count": 78, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "storage_baseline = storage_formats.copy(deep=True).drop([\"per_iter\", \"nice_size\"], axis=1)\n", - "storage_baseline = storage_baseline[(storage_baseline[\"storage_format\"] == \"Text\")]\n", - "storage_baseline" - ] - }, - { - "cell_type": "code", - "execution_count": 82, - "id": "fb4a7738-bf7f-4cbc-a4f9-9c42d6718321", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - "
    algorithmdatasetstorage_formattotal_size77BFSgraph500-2233.59130823357988
    10WCCdatagen-7_9-fbText20816913878PageRankdatagen-8_4-fb349.992612134032310
    1479PageRankdatagen-7_5-fbText552752499datagen-8_4-fb303.765090134032310
    31WCCcit-PatentsText110033312480PageRankdatagen-8_4-fb298.210876134032310
    40BFScit-PatentsText252559780381PageRankdatagen-8_4-fb326.330437134032310
    41BFSdatagen-7_9-fbText58185539982PageRankdatagen-8_4-fb295.668522134032310
    5583PageRankcit-PatentsText2834235312datagen-8_4-fb305.253723134032310
    72WCC84PageRankdatagen-7_5-fbText9402618043.49928322202359
    78BFS85PageRankdatagen-7_5-fbText25652922544.94253822202359
    82BFSgraph500-22Text21379411286PageRankdatagen-7_5-fb43.63624622202359
    10387PageRankdatagen-7_9-fbText1216101565datagen-7_5-fb43.05395722202359
    108SSSP88PageRankdatagen-7_5-fbText25467092944.16838722202359
    109SSSPdatagen-7_9-fbText60113322689PageRankdatagen-7_5-fb46.67020422202359
    \n", - "
    " - ], - "text/plain": [ - " algorithm dataset storage_format total_size\n", - "10 WCC datagen-7_9-fb Text 208169138\n", - "14 PageRank datagen-7_5-fb Text 552752499\n", - "31 WCC cit-Patents Text 1100333124\n", - "40 BFS cit-Patents Text 2525597803\n", - "41 BFS datagen-7_9-fb Text 581855399\n", - "55 PageRank cit-Patents Text 2834235312\n", - "72 WCC datagen-7_5-fb Text 94026180\n", - "78 BFS datagen-7_5-fb Text 256529225\n", - "82 BFS graph500-22 Text 213794112\n", - "103 PageRank datagen-7_9-fb Text 1216101565\n", - "108 SSSP datagen-7_5-fb Text 254670929\n", - "109 SSSP datagen-7_9-fb Text 601133226" - ] - }, - "execution_count": 82, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "storage_baseline_size = storage_baseline[[\"algorithm\", \"dataset\", \"storage_format\", \"total_size\"]]\n", - "storage_baseline_size" - ] - }, - { - "cell_type": "code", - "execution_count": 96, - "id": "5ac92d26-afb2-49f2-97bc-6987da9d05dc", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
    algorithmdatasetstorage_formatduration
    90PageRankdatagen-8_8-zf344.4986395970693132
    40BFS91PageRankdatagen-8_8-zf342.5910575970693132
    92PageRankdatagen-8_8-zf377.9981375970693132
    93PageRankdatagen-8_8-zf383.4677515970693132
    94PageRankdatagen-8_8-zf399.7900715970693132
    95PageRankdatagen-8_8-zf329.0323545970693132
    96WCCcit-PatentsText101.973519156.39360637635956
    7897WCCcit-Patents157.79917437635956
    98WCCcit-Patents167.99072137635956
    99WCCcit-Patents157.30913337635956
    100WCCcit-Patents164.75267437635956
    101WCCcit-Patents159.56446537635956
    102BFSdatagen-7_5-fbText41.14235443.9801799533719
    41103BFSdatagen-7_9-fbText61.450592datagen-7_5-fb36.2844049533719
    82104BFSgraph500-22Text42.711168datagen-7_5-fb64.8810969533719
    55PageRankcit-PatentsText142.736847105BFSdatagen-7_5-fb54.2945959533719
    14PageRank106BFSdatagen-7_5-fbText61.61253844.9747159533719
    103PageRankdatagen-7_9-fbText115.157119107BFSdatagen-7_5-fb38.0591789533719
    108SSSPdatagen-7_5-fbText41.157125BFSdatagen-8_4-fb122.32869357850630
    109SSSPdatagen-7_9-fbText92.144127BFSdatagen-8_4-fb135.82825657850630
    31110BFSdatagen-8_4-fb166.66317457850630
    111BFSdatagen-8_4-fb294.73566857850630
    112BFSdatagen-8_4-fb256.27080957850630
    113BFSdatagen-8_4-fb159.07924357850630
    114BFSdatagen-8_8-zf251.4993552703435298
    115BFSdatagen-8_8-zf184.1064042703435298
    116BFSdatagen-8_8-zf113.8631632703435298
    117BFSdatagen-8_8-zf162.4228082703435298
    118BFSdatagen-8_8-zf163.8279602703435298
    119BFSdatagen-8_8-zf176.1955552703435298
    120WCCcit-PatentsText190.549338datagen-8_4-fb266.39483657850630
    72121WCCdatagen-7_5-fbText39.382844datagen-8_4-fb204.06328957850630
    10122WCCdatagen-7_9-fbText74.173866datagen-8_4-fb184.61384857850630
    123WCCdatagen-8_4-fb190.39641557850630
    124WCCdatagen-8_4-fb193.19630357850630
    125WCCdatagen-8_4-fb233.30374457850630
    \n", "
    " ], "text/plain": [ - " algorithm dataset storage_format duration\n", - "40 BFS cit-Patents Text 101.973519\n", - "78 BFS datagen-7_5-fb Text 41.142354\n", - "41 BFS datagen-7_9-fb Text 61.450592\n", - "82 BFS graph500-22 Text 42.711168\n", - "55 PageRank cit-Patents Text 142.736847\n", - "14 PageRank datagen-7_5-fb Text 61.612538\n", - "103 PageRank datagen-7_9-fb Text 115.157119\n", - "108 SSSP datagen-7_5-fb Text 41.157125\n", - "109 SSSP datagen-7_9-fb Text 92.144127\n", - "31 WCC cit-Patents Text 190.549338\n", - "72 WCC datagen-7_5-fb Text 39.382844\n", - "10 WCC datagen-7_9-fb Text 74.173866" + " algorithm dataset duration size\n", + "0 SSSP datagen-8_4-fb 140.479249 134032310\n", + "1 SSSP datagen-8_4-fb 132.204479 134032310\n", + "2 SSSP datagen-8_4-fb 132.022222 134032310\n", + "3 SSSP datagen-8_4-fb 178.487897 134032310\n", + "4 SSSP datagen-8_4-fb 201.796498 134032310\n", + "5 SSSP datagen-8_4-fb 266.424223 134032310\n", + "6 SSSP datagen-7_5-fb 33.830519 22202359\n", + "7 SSSP datagen-7_5-fb 42.004611 22202359\n", + "8 SSSP datagen-7_5-fb 40.612584 22202359\n", + "9 SSSP datagen-7_5-fb 73.230962 22202359\n", + "10 SSSP datagen-7_5-fb 42.327208 22202359\n", + "11 SSSP datagen-7_5-fb 40.983417 22202359\n", + "12 WCC graph500-22 85.568282 23339653\n", + "13 WCC graph500-22 73.485283 23339653\n", + "14 WCC graph500-22 73.309156 23339653\n", + "15 WCC graph500-22 72.533035 23339653\n", + "16 WCC graph500-22 70.956164 23339653\n", + "17 WCC graph500-22 57.961798 23339653\n", + "18 SSSP datagen-7_9-fb 53.024663 48717778\n", + "19 SSSP datagen-7_9-fb 55.819785 48717778\n", + "20 SSSP datagen-7_9-fb 91.346943 48717778\n", + "21 SSSP datagen-7_9-fb 93.145833 48717778\n", + "22 SSSP datagen-7_9-fb 86.928526 48717778\n", + "23 SSSP datagen-7_9-fb 105.834026 48717778\n", + "24 PageRank graph500-22 83.693546 71264722\n", + "25 PageRank graph500-22 87.673099 71264722\n", + "26 PageRank graph500-22 81.172676 71264722\n", + "27 PageRank graph500-22 79.791864 71264722\n", + "28 PageRank graph500-22 92.390624 71264722\n", + "29 PageRank graph500-22 84.084160 71264722\n", + "30 PageRank datagen-7_9-fb 93.591943 48717778\n", + "31 PageRank datagen-7_9-fb 84.399424 48717778\n", + "32 PageRank datagen-7_9-fb 94.553000 48717778\n", + "33 PageRank datagen-7_9-fb 88.541162 48717778\n", + "34 PageRank datagen-7_9-fb 88.862292 48717778\n", + "35 PageRank datagen-7_9-fb 86.030262 48717778\n", + "36 WCC datagen-7_5-fb 39.674211 9533719\n", + "37 WCC datagen-7_5-fb 39.594738 9533719\n", + "38 WCC datagen-7_5-fb 42.186305 9533719\n", + "39 WCC datagen-7_5-fb 37.753565 9533719\n", + "40 WCC datagen-7_5-fb 43.528095 9533719\n", + "41 WCC datagen-7_5-fb 41.038673 9533719\n", + "42 BFS cit-Patents 93.084850 100187504\n", + "43 BFS cit-Patents 67.314091 100187504\n", + "44 BFS cit-Patents 71.610397 100187504\n", + "45 BFS cit-Patents 67.837661 100187504\n", + "46 BFS cit-Patents 68.945276 100187504\n", + "47 BFS cit-Patents 67.387534 100187504\n", + "48 BFS datagen-7_9-fb 92.522082 20966038\n", + "49 BFS datagen-7_9-fb 92.841696 20966038\n", + "50 BFS datagen-7_9-fb 49.542095 20966038\n", + "51 BFS datagen-7_9-fb 49.260653 20966038\n", + "52 BFS datagen-7_9-fb 106.835998 20966038\n", + "53 BFS datagen-7_9-fb 49.918105 20966038\n", + "54 PageRank cit-Patents 93.403024 113070194\n", + "55 PageRank cit-Patents 88.882940 113070194\n", + "56 PageRank cit-Patents 95.720769 113070194\n", + "57 PageRank cit-Patents 88.476289 113070194\n", + "58 PageRank cit-Patents 85.079759 113070194\n", + "59 PageRank cit-Patents 94.110266 113070194\n", + "60 WCC datagen-7_9-fb 78.122619 20966038\n", + "61 WCC datagen-7_9-fb 80.368009 20966038\n", + "62 WCC datagen-7_9-fb 79.974040 20966038\n", + "63 WCC datagen-7_9-fb 80.176662 20966038\n", + "64 WCC datagen-7_9-fb 71.362210 20966038\n", + "65 WCC datagen-7_9-fb 74.583376 20966038\n", + "66 SSSP datagen-8_8-zf 156.040455 5899340019\n", + "67 SSSP datagen-8_8-zf 167.117359 5899340019\n", + "68 SSSP datagen-8_8-zf 261.901648 5899340019\n", + "69 SSSP datagen-8_8-zf 154.459337 5899340019\n", + "70 SSSP datagen-8_8-zf 166.424446 5899340019\n", + "71 SSSP datagen-8_8-zf 110.658169 5899340019\n", + "72 BFS graph500-22 32.891801 23357988\n", + "73 BFS graph500-22 27.685897 23357988\n", + "74 BFS graph500-22 31.698134 23357988\n", + "75 BFS graph500-22 31.125634 23357988\n", + "76 BFS graph500-22 29.795986 23357988\n", + "77 BFS graph500-22 33.591308 23357988\n", + "78 PageRank datagen-8_4-fb 349.992612 134032310\n", + "79 PageRank datagen-8_4-fb 303.765090 134032310\n", + "80 PageRank datagen-8_4-fb 298.210876 134032310\n", + "81 PageRank datagen-8_4-fb 326.330437 134032310\n", + "82 PageRank datagen-8_4-fb 295.668522 134032310\n", + "83 PageRank datagen-8_4-fb 305.253723 134032310\n", + "84 PageRank datagen-7_5-fb 43.499283 22202359\n", + "85 PageRank datagen-7_5-fb 44.942538 22202359\n", + "86 PageRank datagen-7_5-fb 43.636246 22202359\n", + "87 PageRank datagen-7_5-fb 43.053957 22202359\n", + "88 PageRank datagen-7_5-fb 44.168387 22202359\n", + "89 PageRank datagen-7_5-fb 46.670204 22202359\n", + "90 PageRank datagen-8_8-zf 344.498639 5970693132\n", + "91 PageRank datagen-8_8-zf 342.591057 5970693132\n", + "92 PageRank datagen-8_8-zf 377.998137 5970693132\n", + "93 PageRank datagen-8_8-zf 383.467751 5970693132\n", + "94 PageRank datagen-8_8-zf 399.790071 5970693132\n", + "95 PageRank datagen-8_8-zf 329.032354 5970693132\n", + "96 WCC cit-Patents 156.393606 37635956\n", + "97 WCC cit-Patents 157.799174 37635956\n", + "98 WCC cit-Patents 167.990721 37635956\n", + "99 WCC cit-Patents 157.309133 37635956\n", + "100 WCC cit-Patents 164.752674 37635956\n", + "101 WCC cit-Patents 159.564465 37635956\n", + "102 BFS datagen-7_5-fb 43.980179 9533719\n", + "103 BFS datagen-7_5-fb 36.284404 9533719\n", + "104 BFS datagen-7_5-fb 64.881096 9533719\n", + "105 BFS datagen-7_5-fb 54.294595 9533719\n", + "106 BFS datagen-7_5-fb 44.974715 9533719\n", + "107 BFS datagen-7_5-fb 38.059178 9533719\n", + "108 BFS datagen-8_4-fb 122.328693 57850630\n", + "109 BFS datagen-8_4-fb 135.828256 57850630\n", + "110 BFS datagen-8_4-fb 166.663174 57850630\n", + "111 BFS datagen-8_4-fb 294.735668 57850630\n", + "112 BFS datagen-8_4-fb 256.270809 57850630\n", + "113 BFS datagen-8_4-fb 159.079243 57850630\n", + "114 BFS datagen-8_8-zf 251.499355 2703435298\n", + "115 BFS datagen-8_8-zf 184.106404 2703435298\n", + "116 BFS datagen-8_8-zf 113.863163 2703435298\n", + "117 BFS datagen-8_8-zf 162.422808 2703435298\n", + "118 BFS datagen-8_8-zf 163.827960 2703435298\n", + "119 BFS datagen-8_8-zf 176.195555 2703435298\n", + "120 WCC datagen-8_4-fb 266.394836 57850630\n", + "121 WCC datagen-8_4-fb 204.063289 57850630\n", + "122 WCC datagen-8_4-fb 184.613848 57850630\n", + "123 WCC datagen-8_4-fb 190.396415 57850630\n", + "124 WCC datagen-8_4-fb 193.196303 57850630\n", + "125 WCC datagen-8_4-fb 233.303744 57850630" ] }, - "execution_count": 96, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "storage_baseline_duration = storage_baseline[[\"algorithm\", \"dataset\", \"storage_format\", \"duration\"]]\n", - "storage_baseline_duration.sort_values(by=[\"algorithm\", \"dataset\"])" + "data_dir = Path(\"das6\") / \"20240527-020517-tracing-6-runs\"\n", + "\n", + "tracing = parse_experiment_output(root_dir / \"data\" / data_dir)\n", + "tracing.sort_values(by=[\"algorithm\", \"dataset\", \"run\"])\n", + "tracing = tracing[(tracing[\"algorithm\"] != \"WCC\") | (tracing[\"dataset\"] != \"datagen-8_8-zf\")]\n", + "tracing = tracing[[\"algorithm\", \"dataset\", \"duration\"]]\n", + "tracing = pd.merge(tracing, baseline_stats_copy[[\"algorithm\", \"dataset\", \"size\"]], on=[\"algorithm\", \"dataset\"])\n", + "tracing" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "6e8b267a", + "metadata": {}, + "outputs": [], + "source": [ + "output_table(tracing, \"duration\", \"es02-duration.csv\")" ] }, { "cell_type": "code", - "execution_count": 97, - "id": "dadd007a-3c39-46aa-a4c4-71845b850c63", + "execution_count": 24, + "id": "8539aa9f", "metadata": {}, "outputs": [ { @@ -3013,229 +2614,178 @@ " \n", " algorithm\n", " dataset\n", - " storage_format\n", " duration\n", " \n", " \n", " \n", " \n", - " 12\n", + " 0\n", " BFS\n", " cit-Patents\n", - " Text\n", - " 81.590225\n", + " 6\n", " \n", " \n", - " 16\n", + " 1\n", " BFS\n", " datagen-7_5-fb\n", - " Text\n", - " 41.949647\n", + " 6\n", " \n", " \n", - " 9\n", + " 2\n", " BFS\n", " datagen-7_9-fb\n", - " Text\n", - " 103.909232\n", + " 6\n", " \n", " \n", - " 18\n", + " 3\n", " BFS\n", " datagen-8_4-fb\n", - " Text\n", - " 228.835858\n", + " 6\n", " \n", " \n", - " 7\n", + " 4\n", " BFS\n", " datagen-8_8-zf\n", - " Text\n", - " 194.096829\n", + " 6\n", " \n", " \n", - " 8\n", + " 5\n", " BFS\n", " graph500-22\n", - " Text\n", - " 33.833869\n", + " 6\n", " \n", " \n", - " 4\n", + " 6\n", " PageRank\n", " cit-Patents\n", - " Text\n", - " 76.718400\n", + " 6\n", " \n", " \n", - " 6\n", + " 7\n", " PageRank\n", " datagen-7_5-fb\n", - " Text\n", - " 44.126948\n", + " 6\n", " \n", " \n", - " 5\n", + " 8\n", " PageRank\n", " datagen-7_9-fb\n", - " Text\n", - " 67.496328\n", + " 6\n", " \n", " \n", - " 14\n", + " 9\n", " PageRank\n", " datagen-8_4-fb\n", - " Text\n", - " 221.688116\n", + " 6\n", " \n", " \n", - " 19\n", + " 10\n", " PageRank\n", " datagen-8_8-zf\n", - " Text\n", - " 232.275335\n", + " 6\n", " \n", " \n", - " 3\n", + " 11\n", " PageRank\n", " graph500-22\n", - " Text\n", - " 76.242817\n", + " 6\n", " \n", " \n", - " 15\n", + " 12\n", " SSSP\n", " datagen-7_5-fb\n", - " Text\n", - " 43.968590\n", + " 6\n", " \n", " \n", - " 2\n", + " 13\n", " SSSP\n", " datagen-7_9-fb\n", - " Text\n", - " 83.955731\n", + " 6\n", " \n", " \n", - " 1\n", + " 14\n", " SSSP\n", " datagen-8_4-fb\n", - " Text\n", - " 229.654970\n", + " 6\n", " \n", " \n", - " 0\n", + " 15\n", " SSSP\n", " datagen-8_8-zf\n", - " Text\n", - " 192.158678\n", + " 6\n", " \n", " \n", - " 10\n", + " 16\n", " WCC\n", " cit-Patents\n", - " Text\n", - " 160.453424\n", + " 6\n", " \n", " \n", - " 20\n", + " 17\n", " WCC\n", " datagen-7_5-fb\n", - " Text\n", - " 33.387272\n", + " 6\n", " \n", " \n", - " 17\n", + " 18\n", " WCC\n", " datagen-7_9-fb\n", - " Text\n", - " 70.140869\n", + " 6\n", " \n", " \n", - " 11\n", + " 19\n", " WCC\n", " datagen-8_4-fb\n", - " Text\n", - " 232.656136\n", + " 6\n", " \n", " \n", - " 13\n", + " 20\n", " WCC\n", " graph500-22\n", - " Text\n", - " 74.247498\n", + " 6\n", " \n", " \n", "\n", "" ], "text/plain": [ - " algorithm dataset storage_format duration\n", - "12 BFS cit-Patents Text 81.590225\n", - "16 BFS datagen-7_5-fb Text 41.949647\n", - "9 BFS datagen-7_9-fb Text 103.909232\n", - "18 BFS datagen-8_4-fb Text 228.835858\n", - "7 BFS datagen-8_8-zf Text 194.096829\n", - "8 BFS graph500-22 Text 33.833869\n", - "4 PageRank cit-Patents Text 76.718400\n", - "6 PageRank datagen-7_5-fb Text 44.126948\n", - "5 PageRank datagen-7_9-fb Text 67.496328\n", - "14 PageRank datagen-8_4-fb Text 221.688116\n", - "19 PageRank datagen-8_8-zf Text 232.275335\n", - "3 PageRank graph500-22 Text 76.242817\n", - "15 SSSP datagen-7_5-fb Text 43.968590\n", - "2 SSSP datagen-7_9-fb Text 83.955731\n", - "1 SSSP datagen-8_4-fb Text 229.654970\n", - "0 SSSP datagen-8_8-zf Text 192.158678\n", - "10 WCC cit-Patents Text 160.453424\n", - "20 WCC datagen-7_5-fb Text 33.387272\n", - "17 WCC datagen-7_9-fb Text 70.140869\n", - "11 WCC datagen-8_4-fb Text 232.656136\n", - "13 WCC graph500-22 Text 74.247498" + " algorithm dataset duration\n", + "0 BFS cit-Patents 6\n", + "1 BFS datagen-7_5-fb 6\n", + "2 BFS datagen-7_9-fb 6\n", + "3 BFS datagen-8_4-fb 6\n", + "4 BFS datagen-8_8-zf 6\n", + "5 BFS graph500-22 6\n", + "6 PageRank cit-Patents 6\n", + "7 PageRank datagen-7_5-fb 6\n", + "8 PageRank datagen-7_9-fb 6\n", + "9 PageRank datagen-8_4-fb 6\n", + "10 PageRank datagen-8_8-zf 6\n", + "11 PageRank graph500-22 6\n", + "12 SSSP datagen-7_5-fb 6\n", + "13 SSSP datagen-7_9-fb 6\n", + "14 SSSP datagen-8_4-fb 6\n", + "15 SSSP datagen-8_8-zf 6\n", + "16 WCC cit-Patents 6\n", + "17 WCC datagen-7_5-fb 6\n", + "18 WCC datagen-7_9-fb 6\n", + "19 WCC datagen-8_4-fb 6\n", + "20 WCC graph500-22 6" ] }, - "execution_count": 97, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "baseline_scaling[[\"algorithm\", \"dataset\", \"storage_format\", \"duration\"]].sort_values(by=[\"algorithm\", \"dataset\"])" - ] - }, - { - "cell_type": "markdown", - "id": "fcefbf7c-b8e7-4b3f-8dd7-ce1791df18b4", - "metadata": {}, - "source": [ - "## Duration" - ] - }, - { - "cell_type": "code", - "execution_count": 93, - "id": "55869c78-46c1-4dd5-8330-c38fd68fd5a6", - "metadata": {}, - "outputs": [], - "source": [ - "def duration_plots(df, x=\"per_iter\", y=\"storage_format\", ylabel=\"Storage formats\"):\n", - " for algorithm in df[\"algorithm\"].unique():\n", - " obs = df[df[\"algorithm\"] == algorithm]\n", - " order = obs.groupby(by=[y])[x].median().sort_values(ascending=False).index\n", - " b = sns.boxplot(data=obs, x=x, y=y, hue=\"algorithm\", order=order, palette=algorithm_colors)\n", - " # b.set_xlim(0, 30)\n", - " b.set_xlabel(\"Overhead\")\n", - " b.set_ylabel(ylabel)\n", - " write_dir = (plot_dir / data_dir)\n", - " write_dir.mkdir(exist_ok=True, parents=True)\n", - " plt.savefig(write_dir / f\"duration-{algorithm.lower()}.pdf\", bbox_inches='tight')\n", - " plt.clf()" + "tracing.groupby(by=[\"algorithm\", \"dataset\"])[\"duration\"].nunique().reset_index()" ] }, { "cell_type": "code", - "execution_count": 91, - "id": "1a9f051e", + "execution_count": 25, + "id": "72da40c6", "metadata": {}, "outputs": [ { @@ -3262,2008 +2812,913 @@ " algorithm\n", " dataset\n", " duration\n", - " baseline_duration\n", - " overhead\n", - " overhead_desc\n", " \n", " \n", " \n", " \n", - " 0\n", - " WCC\n", - " datagen-7_9-fb\n", - " 74.173866\n", - " 70.140869\n", - " 1.057499\n", - " 74.173866231 / 70.140868789\n", + " 42\n", + " BFS\n", + " cit-Patents\n", + " 93.084850\n", " \n", " \n", - " 1\n", - " PageRank\n", - " datagen-7_5-fb\n", - " 61.612538\n", - " 44.126948\n", - " 1.396257\n", - " 61.612538263 / 44.126948162\n", + " 43\n", + " BFS\n", + " cit-Patents\n", + " 67.314091\n", " \n", " \n", - " 2\n", - " WCC\n", + " 44\n", + " BFS\n", " cit-Patents\n", - " 190.549338\n", - " 160.453424\n", - " 1.187568\n", - " 190.549338405 / 160.453424225\n", + " 71.610397\n", " \n", " \n", - " 3\n", + " 45\n", " BFS\n", " cit-Patents\n", - " 101.973519\n", - " 81.590225\n", - " 1.249825\n", - " 101.973519244 / 81.590224633\n", + " 67.837661\n", " \n", " \n", - " 4\n", + " 46\n", " BFS\n", - " datagen-7_9-fb\n", - " 61.450592\n", - " 103.909232\n", - " 0.591387\n", - " 61.450591776 / 103.9092324\n", + " cit-Patents\n", + " 68.945276\n", " \n", " \n", - " 5\n", - " PageRank\n", + " 47\n", + " BFS\n", " cit-Patents\n", - " 142.736847\n", - " 76.718400\n", - " 1.860530\n", - " 142.736846616 / 76.718400082\n", + " 67.387534\n", " \n", " \n", - " 6\n", - " WCC\n", + " 102\n", + " BFS\n", " datagen-7_5-fb\n", - " 39.382844\n", - " 33.387272\n", - " 1.179577\n", - " 39.38284403 / 33.387272447\n", + " 43.980179\n", " \n", " \n", - " 7\n", + " 103\n", " BFS\n", " datagen-7_5-fb\n", - " 41.142354\n", - " 41.949647\n", - " 0.980756\n", - " 41.142354269 / 41.949647441\n", + " 36.284404\n", " \n", " \n", - " 8\n", + " 104\n", " BFS\n", - " graph500-22\n", - " 42.711168\n", - " 33.833869\n", - " 1.262379\n", - " 42.711168064 / 33.833868949\n", + " datagen-7_5-fb\n", + " 64.881096\n", " \n", " \n", - " 9\n", - " PageRank\n", - " datagen-7_9-fb\n", - " 115.157119\n", - " 67.496328\n", - " 1.706124\n", - " 115.157119041 / 67.496327811\n", + " 105\n", + " BFS\n", + " datagen-7_5-fb\n", + " 54.294595\n", " \n", " \n", - " 10\n", - " SSSP\n", + " 106\n", + " BFS\n", " datagen-7_5-fb\n", - " 41.157125\n", - " 43.968590\n", - " 0.936057\n", - " 41.157124516 / 43.968590117\n", + " 44.974715\n", " \n", " \n", - " 11\n", - " SSSP\n", - " datagen-7_9-fb\n", - " 92.144127\n", - " 83.955731\n", - " 1.097532\n", - " 92.144126519 / 83.955730661\n", + " 107\n", + " BFS\n", + " datagen-7_5-fb\n", + " 38.059178\n", " \n", - " \n", - "\n", - "" - ], - "text/plain": [ - " algorithm dataset duration baseline_duration overhead \\\n", - "0 WCC datagen-7_9-fb 74.173866 70.140869 1.057499 \n", - "1 PageRank datagen-7_5-fb 61.612538 44.126948 1.396257 \n", - "2 WCC cit-Patents 190.549338 160.453424 1.187568 \n", - "3 BFS cit-Patents 101.973519 81.590225 1.249825 \n", - "4 BFS datagen-7_9-fb 61.450592 103.909232 0.591387 \n", - "5 PageRank cit-Patents 142.736847 76.718400 1.860530 \n", - "6 WCC datagen-7_5-fb 39.382844 33.387272 1.179577 \n", - "7 BFS datagen-7_5-fb 41.142354 41.949647 0.980756 \n", - "8 BFS graph500-22 42.711168 33.833869 1.262379 \n", - "9 PageRank datagen-7_9-fb 115.157119 67.496328 1.706124 \n", - "10 SSSP datagen-7_5-fb 41.157125 43.968590 0.936057 \n", - "11 SSSP datagen-7_9-fb 92.144127 83.955731 1.097532 \n", - "\n", - " overhead_desc \n", - "0 74.173866231 / 70.140868789 \n", - "1 61.612538263 / 44.126948162 \n", - "2 190.549338405 / 160.453424225 \n", - "3 101.973519244 / 81.590224633 \n", - "4 61.450591776 / 103.9092324 \n", - "5 142.736846616 / 76.718400082 \n", - "6 39.38284403 / 33.387272447 \n", - "7 41.142354269 / 41.949647441 \n", - "8 42.711168064 / 33.833868949 \n", - "9 115.157119041 / 67.496327811 \n", - "10 41.157124516 / 43.968590117 \n", - "11 92.144126519 / 83.955730661 " - ] - }, - "execution_count": 91, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "storage_formats_compare = merge_compare(baseline_scaling, storage_baseline_duration, metric=\"duration\")\n", - "storage_formats_compare" - ] - }, - { - "cell_type": "code", - "execution_count": 109, - "id": "91162414-1023-4bd3-b392-63c1c21fbf53", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "storage_formats_compare = merge_compare(baseline_scaling, storage_formats, metric=\"duration\")\n", - "\n", - "duration_plots(storage_formats_compare, x=\"overhead\")" - ] - }, - { - "cell_type": "markdown", - "id": "9332f1ae-a446-4c61-8f08-c2ed0a3dde78", - "metadata": {}, - "source": [ - "## Sizes" - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "id": "e952a142-ff85-43e4-b34f-bff6ee9a0903", - "metadata": {}, - "outputs": [], - "source": [ - "def sizes_plot(df, palette=None):\n", - " palette_colors = algorithm_colors if palette is None else palette\n", - " xmin, xmax = df[df[\"overhead\"] > 0][\"overhead\"].min(), df[df[\"overhead\"] > 0][\"overhead\"].max()\n", - " \n", - " for algorithm in df[\"algorithm\"].unique():\n", - " if len(df[df[\"overhead\"] > 0]) > 0:\n", - " print(\"warning: some rows have size equal to 0\")\n", - " obs = df[(df[\"algorithm\"] == algorithm) & (df[\"overhead\"] > 0)].drop_duplicates()\n", - " order = obs.groupby(by=[\"storage_format\"])[\"overhead\"].median().sort_values(ascending=False).index\n", - " b = sns.boxplot(data=obs, x=\"overhead\", y=\"storage_format\", hue=\"algorithm\", order=order, palette=palette_colors)\n", - " # b.set_xscale(\"log\")\n", - " b.set_xlim(xmin, xmax)\n", - " b.set_xlabel(\"Overhead\")\n", - " b.set_ylabel(\"Storage formats\")\n", - " # ticks = np.logspace(np.log10(xmin)-0.1, np.log10(xmax)+0.1, 10)\n", - " ticks = np.linspace(xmin, xmax, 10)\n", - " b.set_xticks(ticks=ticks) #, labels=[f\"{format_filesize(l)[0]:.0f} {format_filesize(l)[1]}\" for l in ticks], rotation=45)\n", - " #sns.move_legend(b, \"lower right\")\n", - " write_dir = (plot_dir / data_dir)\n", - " write_dir.mkdir(exist_ok=True, parents=True)\n", - " plt.savefig(write_dir / f\"size-{algorithm.lower()}.pdf\", bbox_inches='tight')\n", - " plt.clf()" - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "id": "3de97bca", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
    configalgorithmdatasetrunstorage_formatcompressedtotal_sizenr_executorsnr_verticesiterationsdurationper_iternice_size
    48BFSdatagen-7_9-fb92.522082
    10completeprovenanceWCC49BFSdatagen-7_9-fb1TextFalse208169138713875871374.1738665.705682198.53MB92.841696
    14completeprovenancePageRankdatagen-7_5-fb1TextFalse55275249976334323561.6125381.760358527.15MB50BFSdatagen-7_9-fb49.542095
    31completeprovenanceWCCcit-Patents1TextFalse11003331247377476841190.5493384.6475451.02GB51BFSdatagen-7_9-fb49.260653
    40completeprovenance52BFScit-Patents1TextFalse25255978037377476843101.9735192.3714772.35GBdatagen-7_9-fb106.835998
    41completeprovenance53BFSdatagen-7_9-fb1TextFalse581855399713875873161.4505921.982277554.90MB49.918105
    55completeprovenancePageRankcit-Patents1TextFalse28342353127377476835142.7368474.0781962.64GB
    72completeprovenanceWCCdatagen-7_5-fb1TextFalse9402618076334321339.3828443.02945089.67MB
    78completeprovenance108BFSdatagen-7_5-fb1TextFalse25652922576334322941.1423541.418702244.65MBdatagen-8_4-fb122.328693
    82completeprovenance109BFSgraph500-221TextFalse21379411272396657342.71116814.237056203.89MBdatagen-8_4-fb135.828256
    103completeprovenancePageRankdatagen-7_9-fb1TextFalse12161015657138758735115.1571193.2902031.13GB110BFSdatagen-8_4-fb166.663174
    108completeprovenanceSSSPdatagen-7_5-fb1TextFalse25467092976334323041.1571251.371904242.87MB111BFSdatagen-8_4-fb294.735668
    109completeprovenanceSSSPdatagen-7_9-fb1TextFalse601133226713875873292.1441272.879504573.29MB
    \n", - "
    " - ], - "text/plain": [ - " config algorithm dataset run storage_format \\\n", - "10 completeprovenance WCC datagen-7_9-fb 1 Text \n", - "14 completeprovenance PageRank datagen-7_5-fb 1 Text \n", - "31 completeprovenance WCC cit-Patents 1 Text \n", - "40 completeprovenance BFS cit-Patents 1 Text \n", - "41 completeprovenance BFS datagen-7_9-fb 1 Text \n", - "55 completeprovenance PageRank cit-Patents 1 Text \n", - "72 completeprovenance WCC datagen-7_5-fb 1 Text \n", - "78 completeprovenance BFS datagen-7_5-fb 1 Text \n", - "82 completeprovenance BFS graph500-22 1 Text \n", - "103 completeprovenance PageRank datagen-7_9-fb 1 Text \n", - "108 completeprovenance SSSP datagen-7_5-fb 1 Text \n", - "109 completeprovenance SSSP datagen-7_9-fb 1 Text \n", - "\n", - " compressed total_size nr_executors nr_vertices iterations \\\n", - "10 False 208169138 7 1387587 13 \n", - "14 False 552752499 7 633432 35 \n", - "31 False 1100333124 7 3774768 41 \n", - "40 False 2525597803 7 3774768 43 \n", - "41 False 581855399 7 1387587 31 \n", - "55 False 2834235312 7 3774768 35 \n", - "72 False 94026180 7 633432 13 \n", - "78 False 256529225 7 633432 29 \n", - "82 False 213794112 7 2396657 3 \n", - "103 False 1216101565 7 1387587 35 \n", - "108 False 254670929 7 633432 30 \n", - "109 False 601133226 7 1387587 32 \n", - "\n", - " duration per_iter nice_size \n", - "10 74.173866 5.705682 198.53MB \n", - "14 61.612538 1.760358 527.15MB \n", - "31 190.549338 4.647545 1.02GB \n", - "40 101.973519 2.371477 2.35GB \n", - "41 61.450592 1.982277 554.90MB \n", - "55 142.736847 4.078196 2.64GB \n", - "72 39.382844 3.029450 89.67MB \n", - "78 41.142354 1.418702 244.65MB \n", - "82 42.711168 14.237056 203.89MB \n", - "103 115.157119 3.290203 1.13GB \n", - "108 41.157125 1.371904 242.87MB \n", - "109 92.144127 2.879504 573.29MB " - ] - }, - "execution_count": 61, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "storage_formats[storage_formats[\"storage_format\"] == \"Text\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 62, - "id": "7cd6ff9a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "
    configalgorithmdatasetstorage_formatcompressedtotal_sizeduration112BFSdatagen-8_4-fb256.270809
    18completeprovenance113BFScit-PatentsAvroFalse2525597803110.712451datagen-8_4-fb159.079243
    29completeprovenance114BFScit-PatentsJSONFalse2525597803107.638374datagen-8_8-zf251.499355
    40completeprovenance115BFScit-PatentsTextFalse2525597803101.973519datagen-8_8-zf184.106404
    50completeprovenance116BFScit-PatentsORCFalse2525597803113.815472datagen-8_8-zf113.863163
    57completeprovenance117BFScit-PatentsText-CTrue2525597803154.327360datagen-8_8-zf162.422808
    58completeprovenance118BFScit-PatentsCSV-CTrue2525597803143.495254datagen-8_8-zf163.827960
    97completeprovenance119BFScit-PatentsParquetFalse2525597803110.955192datagen-8_8-zf176.195555
    100completeprovenance72BFScit-PatentsJSON-CTrue2525597803134.970226graph500-2232.891801
    105completeprovenance73BFScit-PatentsCSVFalse2525597803117.176385graph500-2227.685897
    116completeprovenance74BFScit-PatentsObjectFalse2525597803119.315761graph500-2231.698134
    0completeprovenance75BFSdatagen-7_5-fbORCFalse25652922550.868484graph500-2231.125634
    35completeprovenance76BFSdatagen-7_5-fbObjectFalse25652922541.675332graph500-2229.795986
    38completeprovenance77BFSdatagen-7_5-fbText-CTrue25652922557.709867graph500-2233.591308
    47completeprovenanceBFSdatagen-7_5-fbJSONFalse25652922548.64372054PageRankcit-Patents93.403024
    61completeprovenanceBFSdatagen-7_5-fbCSVFalse25652922558.52764255PageRankcit-Patents88.882940
    78completeprovenanceBFSdatagen-7_5-fbTextFalse25652922541.14235456PageRankcit-Patents95.720769
    85completeprovenanceBFSdatagen-7_5-fbAvroFalse25652922553.11716457PageRankcit-Patents88.476289
    98completeprovenanceBFSdatagen-7_5-fbJSON-CTrue25652922557.54719158PageRankcit-Patents85.079759
    104completeprovenanceBFS59PageRankcit-Patents94.110266
    84PageRankdatagen-7_5-fbParquetFalse25652922548.86701843.499283
    115completeprovenanceBFS85PageRankdatagen-7_5-fbCSV-CTrue25652922557.12057944.942538
    4completeprovenanceBFSdatagen-7_9-fbORCFalse581855399104.05275886PageRankdatagen-7_5-fb43.636246
    5completeprovenanceBFSdatagen-7_9-fbJSONFalse58185539967.91772487PageRankdatagen-7_5-fb43.053957
    28completeprovenanceBFSdatagen-7_9-fbCSV-CTrue581855399128.82919988PageRankdatagen-7_5-fb44.168387
    34completeprovenanceBFSdatagen-7_9-fbObjectFalse581855399106.63041989PageRankdatagen-7_5-fb46.670204
    41completeprovenanceBFS30PageRankdatagen-7_9-fbTextFalse58185539961.45059293.591943
    43completeprovenanceBFS31PageRankdatagen-7_9-fbText-CTrue58185539990.13975984.399424
    75completeprovenanceBFS32PageRankdatagen-7_9-fbCSVFalse58185539971.02500394.553000
    81completeprovenanceBFS33PageRankdatagen-7_9-fbAvroFalse58185539993.66113688.541162
    102completeprovenanceBFS34PageRankdatagen-7_9-fbJSON-CTrue581855399132.24739788.862292
    106completeprovenanceBFS35PageRankdatagen-7_9-fbParquetFalse581855399105.88409686.030262
    1completeprovenanceBFSgraph500-22ParquetFalse21379411243.21225878PageRankdatagen-8_4-fb349.992612
    21completeprovenanceBFSgraph500-22ORCFalse21379411240.42839079PageRankdatagen-8_4-fb303.765090
    63completeprovenanceBFSgraph500-22AvroFalse21379411236.40210180PageRankdatagen-8_4-fb298.210876
    68completeprovenanceBFSgraph500-22Text-CTrue21379411239.14398981PageRankdatagen-8_4-fb326.330437
    82completeprovenanceBFSgraph500-22TextFalse21379411242.711168PageRankdatagen-8_4-fb295.668522
    88completeprovenanceBFSgraph500-22CSVFalse21379411241.44811183PageRankdatagen-8_4-fb305.253723
    95completeprovenanceBFSgraph500-22ObjectFalse21379411240.12319890PageRankdatagen-8_8-zf344.498639
    96completeprovenanceBFSgraph500-22JSON-CTrue21379411239.21949991PageRankdatagen-8_8-zf342.591057
    13completeprovenance92PageRankcit-PatentsCSV-CTrue2834235312245.728175datagen-8_8-zf377.998137
    37completeprovenance93PageRankcit-PatentsAvroFalse2834235312160.503187datagen-8_8-zf383.467751
    55completeprovenance94PageRankcit-PatentsTextFalse2834235312142.736847datagen-8_8-zf399.790071
    59completeprovenance95PageRankcit-PatentsObjectFalse2834235312150.139135datagen-8_8-zf329.032354
    65completeprovenance24PageRankcit-PatentsJSONFalse2834235312156.517652graph500-2283.693546
    80completeprovenance25PageRankcit-PatentsCSVFalse2834235312162.602287graph500-2287.673099
    86completeprovenance26PageRankcit-PatentsORCFalse2834235312223.422605graph500-2281.172676
    92completeprovenance27PageRankcit-PatentsText-CTrue2834235312253.336648
    94completeprovenancePageRankcit-PatentsParquetFalse2834235312173.286136
    110completeprovenancePageRankcit-PatentsJSON-CTrue2834235312226.337767
    12completeprovenancePageRankdatagen-7_5-fbParquetFalse55275249970.957423
    14completeprovenancePageRankdatagen-7_5-fbTextFalse55275249961.612538graph500-2279.791864
    15completeprovenance28PageRankdatagen-7_5-fbText-CTrue55275249989.176345graph500-2292.390624
    33completeprovenance29PageRankdatagen-7_5-fbObjectFalse55275249962.719922graph500-2284.084160
    66completeprovenancePageRank6SSSPdatagen-7_5-fbCSV-CTrue55275249996.03776833.830519
    67completeprovenancePageRank7SSSPdatagen-7_5-fbAvroFalse55275249976.72282042.004611
    77completeprovenancePageRank8SSSPdatagen-7_5-fbORCFalse55275249977.92931940.612584
    87completeprovenancePageRank9SSSPdatagen-7_5-fbJSON-CTrue55275249990.44604073.230962
    99completeprovenancePageRank10SSSPdatagen-7_5-fbCSVFalse55275249968.51190442.327208
    111completeprovenancePageRank11SSSPdatagen-7_5-fbJSONFalse55275249970.591457
    2completeprovenancePageRankdatagen-7_9-fbJSONFalse1216101565124.243249
    3completeprovenancePageRankdatagen-7_9-fbJSON-CTrue1216101565156.33477740.983417
    36completeprovenancePageRank18SSSPdatagen-7_9-fbAvroFalse1216101565142.88447953.024663
    46completeprovenancePageRank19SSSPdatagen-7_9-fbText-CTrue1216101565165.56062755.819785
    48completeprovenancePageRank20SSSPdatagen-7_9-fbORCFalse1216101565137.39840491.346943
    51completeprovenancePageRank21SSSPdatagen-7_9-fbCSV-CTrue1216101565164.00597293.145833
    56completeprovenancePageRank22SSSPdatagen-7_9-fbObjectFalse1216101565112.68116786.928526
    60completeprovenancePageRank23SSSPdatagen-7_9-fbParquetFalse1216101565132.752273105.834026
    69completeprovenancePageRankdatagen-7_9-fbCSVFalse1216101565128.3383210SSSPdatagen-8_4-fb140.479249
    103completeprovenancePageRankdatagen-7_9-fbTextFalse1216101565115.1571191SSSPdatagen-8_4-fb132.204479
    8completeprovenance2SSSPdatagen-7_5-fbJSON-CTrue25467092959.969305datagen-8_4-fb132.022222
    19completeprovenance3SSSPdatagen-7_5-fbCSV-CTrue25467092960.177288datagen-8_4-fb178.487897
    44completeprovenance4SSSPdatagen-7_5-fbCSVFalse25467092952.042376datagen-8_4-fb201.796498
    70completeprovenance5SSSPdatagen-7_5-fbORCFalse25467092952.215042datagen-8_4-fb266.424223
    84completeprovenance66SSSPdatagen-7_5-fbAvroFalse25467092951.669206datagen-8_8-zf156.040455
    89completeprovenance67SSSPdatagen-7_5-fbParquetFalse25467092950.267594datagen-8_8-zf167.117359
    107completeprovenance68SSSPdatagen-7_5-fbText-CTrue25467092952.306789datagen-8_8-zf261.901648
    108completeprovenance69SSSPdatagen-7_5-fbTextFalse25467092941.157125datagen-8_8-zf154.459337
    114completeprovenance70SSSPdatagen-7_5-fbJSONFalse25467092946.925169datagen-8_8-zf166.424446
    117completeprovenance71SSSPdatagen-7_5-fbObjectFalse25467092949.207567datagen-8_8-zf110.658169
    6completeprovenanceSSSPdatagen-7_9-fbJSON-CTrue601133226111.01164296WCCcit-Patents156.393606
    11completeprovenanceSSSPdatagen-7_9-fbCSVFalse60113322678.07281397WCCcit-Patents157.799174
    17completeprovenanceSSSPdatagen-7_9-fbAvroFalse60113322679.608257
    23completeprovenanceSSSPdatagen-7_9-fbText-CTrue601133226137.108613
    26completeprovenanceSSSPdatagen-7_9-fbJSONFalse60113322697.887644
    52completeprovenanceSSSPdatagen-7_9-fbORCFalse601133226101.735372
    71completeprovenanceSSSPdatagen-7_9-fbParquetFalse601133226119.342097
    91completeprovenanceSSSPdatagen-7_9-fbCSV-CTrue60113322691.421126
    109completeprovenanceSSSPdatagen-7_9-fbTextFalse60113322692.144127
    112completeprovenanceSSSPdatagen-7_9-fbObjectFalse60113322679.58784598WCCcit-Patents167.990721
    7completeprovenance99WCCcit-PatentsCSVFalse1100333124200.797959157.309133
    25completeprovenance100WCCcit-PatentsObjectFalse1100333124197.924420164.752674
    31completeprovenance101WCCcit-PatentsTextFalse1100333124190.549338159.564465
    32completeprovenance36WCCcit-PatentsParquetFalse1100333124191.301333datagen-7_5-fb39.674211
    42completeprovenance37WCCcit-PatentsText-CTrue1100333124244.696276datagen-7_5-fb39.594738
    45completeprovenance38WCCcit-PatentsCSV-CTrue1100333124231.818350datagen-7_5-fb42.186305
    76completeprovenance39WCCcit-PatentsAvroFalse1100333124190.187893datagen-7_5-fb37.753565
    79completeprovenance40WCCcit-PatentsJSONFalse1100333124191.091221datagen-7_5-fb43.528095
    83completeprovenance41WCCcit-PatentsJSON-CTrue1100333124218.128612datagen-7_5-fb41.038673
    90completeprovenance60WCCcit-PatentsORCFalse1100333124200.915941datagen-7_9-fb78.122619
    20completeprovenance61WCCdatagen-7_5-fbORCFalse9402618042.804464datagen-7_9-fb80.368009
    39completeprovenance62WCCdatagen-7_5-fbCSV-CTrue9402618046.118334datagen-7_9-fb79.974040
    49completeprovenance63WCCdatagen-7_5-fbObjectFalse9402618047.037633datagen-7_9-fb80.176662
    53completeprovenance64WCCdatagen-7_5-fbJSONFalse9402618043.227769datagen-7_9-fb71.362210
    54completeprovenance65WCCdatagen-7_5-fbAvroFalse9402618044.966324datagen-7_9-fb74.583376
    72completeprovenance120WCCdatagen-7_5-fbTextFalse9402618039.382844datagen-8_4-fb266.394836
    73completeprovenance121WCCdatagen-7_5-fbJSON-CTrue9402618048.553854datagen-8_4-fb204.063289
    74completeprovenance122WCCdatagen-7_5-fbText-CTrue9402618039.843927datagen-8_4-fb184.613848
    93completeprovenance123WCCdatagen-7_5-fbParquetFalse9402618043.780985datagen-8_4-fb190.396415
    113completeprovenance124WCCdatagen-7_5-fbCSVFalse9402618045.861275datagen-8_4-fb193.196303
    9completeprovenance125WCCdatagen-7_9-fbCSV-CTrue20816913884.314303datagen-8_4-fb233.303744
    10completeprovenance12WCCdatagen-7_9-fbTextFalse20816913874.173866graph500-2285.568282
    16completeprovenance13WCCdatagen-7_9-fbText-CTrue20816913884.032622graph500-2273.485283
    22completeprovenance14WCCdatagen-7_9-fbJSONFalse20816913889.652158graph500-2273.309156
    24completeprovenance15WCCdatagen-7_9-fbORCFalse20816913878.462570graph500-2272.533035
    27completeprovenance16WCCdatagen-7_9-fbParquetFalse20816913884.254096graph500-2270.956164
    30completeprovenance17WCCdatagen-7_9-fbObjectFalse20816913883.425914
    62completeprovenanceWCCdatagen-7_9-fbCSVFalse20816913884.156374
    64completeprovenanceWCCdatagen-7_9-fbJSON-CTrue20816913884.266331
    101completeprovenanceWCCdatagen-7_9-fbAvroFalse20816913877.486517graph500-2257.961798
    \n", "
    " ], "text/plain": [ - " config algorithm dataset storage_format compressed \\\n", - "18 completeprovenance BFS cit-Patents Avro False \n", - "29 completeprovenance BFS cit-Patents JSON False \n", - "40 completeprovenance BFS cit-Patents Text False \n", - "50 completeprovenance BFS cit-Patents ORC False \n", - "57 completeprovenance BFS cit-Patents Text-C True \n", - "58 completeprovenance BFS cit-Patents CSV-C True \n", - "97 completeprovenance BFS cit-Patents Parquet False \n", - "100 completeprovenance BFS cit-Patents JSON-C True \n", - "105 completeprovenance BFS cit-Patents CSV False \n", - "116 completeprovenance BFS cit-Patents Object False \n", - "0 completeprovenance BFS datagen-7_5-fb ORC False \n", - "35 completeprovenance BFS datagen-7_5-fb Object False \n", - "38 completeprovenance BFS datagen-7_5-fb Text-C True \n", - "47 completeprovenance BFS datagen-7_5-fb JSON False \n", - "61 completeprovenance BFS datagen-7_5-fb CSV False \n", - "78 completeprovenance BFS datagen-7_5-fb Text False \n", - "85 completeprovenance BFS datagen-7_5-fb Avro False \n", - "98 completeprovenance BFS datagen-7_5-fb JSON-C True \n", - "104 completeprovenance BFS datagen-7_5-fb Parquet False \n", - "115 completeprovenance BFS datagen-7_5-fb CSV-C True \n", - "4 completeprovenance BFS datagen-7_9-fb ORC False \n", - "5 completeprovenance BFS datagen-7_9-fb JSON False \n", - "28 completeprovenance BFS datagen-7_9-fb CSV-C True \n", - "34 completeprovenance BFS datagen-7_9-fb Object False \n", - "41 completeprovenance BFS datagen-7_9-fb Text False \n", - "43 completeprovenance BFS datagen-7_9-fb Text-C True \n", - "75 completeprovenance BFS datagen-7_9-fb CSV False \n", - "81 completeprovenance BFS datagen-7_9-fb Avro False \n", - "102 completeprovenance BFS datagen-7_9-fb JSON-C True \n", - "106 completeprovenance BFS datagen-7_9-fb Parquet False \n", - "1 completeprovenance BFS graph500-22 Parquet False \n", - "21 completeprovenance BFS graph500-22 ORC False \n", - "63 completeprovenance BFS graph500-22 Avro False \n", - "68 completeprovenance BFS graph500-22 Text-C True \n", - "82 completeprovenance BFS graph500-22 Text False \n", - "88 completeprovenance BFS graph500-22 CSV False \n", - "95 completeprovenance BFS graph500-22 Object False \n", - "96 completeprovenance BFS graph500-22 JSON-C True \n", - "13 completeprovenance PageRank cit-Patents CSV-C True \n", - "37 completeprovenance PageRank cit-Patents Avro False \n", - "55 completeprovenance PageRank cit-Patents Text False \n", - "59 completeprovenance PageRank cit-Patents Object False \n", - "65 completeprovenance PageRank cit-Patents JSON False \n", - "80 completeprovenance PageRank cit-Patents CSV False \n", - "86 completeprovenance PageRank cit-Patents ORC False \n", - "92 completeprovenance PageRank cit-Patents Text-C True \n", - "94 completeprovenance PageRank cit-Patents Parquet False \n", - "110 completeprovenance PageRank cit-Patents JSON-C True \n", - "12 completeprovenance PageRank datagen-7_5-fb Parquet False \n", - "14 completeprovenance PageRank datagen-7_5-fb Text False \n", - "15 completeprovenance PageRank datagen-7_5-fb Text-C True \n", - "33 completeprovenance PageRank datagen-7_5-fb Object False \n", - "66 completeprovenance PageRank datagen-7_5-fb CSV-C True \n", - "67 completeprovenance PageRank datagen-7_5-fb Avro False \n", - "77 completeprovenance PageRank datagen-7_5-fb ORC False \n", - "87 completeprovenance PageRank datagen-7_5-fb JSON-C True \n", - "99 completeprovenance PageRank datagen-7_5-fb CSV False \n", - "111 completeprovenance PageRank datagen-7_5-fb JSON False \n", - "2 completeprovenance PageRank datagen-7_9-fb JSON False \n", - "3 completeprovenance PageRank datagen-7_9-fb JSON-C True \n", - "36 completeprovenance PageRank datagen-7_9-fb Avro False \n", - "46 completeprovenance PageRank datagen-7_9-fb Text-C True \n", - "48 completeprovenance PageRank datagen-7_9-fb ORC False \n", - "51 completeprovenance PageRank datagen-7_9-fb CSV-C True \n", - "56 completeprovenance PageRank datagen-7_9-fb Object False \n", - "60 completeprovenance PageRank datagen-7_9-fb Parquet False \n", - "69 completeprovenance PageRank datagen-7_9-fb CSV False \n", - "103 completeprovenance PageRank datagen-7_9-fb Text False \n", - "8 completeprovenance SSSP datagen-7_5-fb JSON-C True \n", - "19 completeprovenance SSSP datagen-7_5-fb CSV-C True \n", - "44 completeprovenance SSSP datagen-7_5-fb CSV False \n", - "70 completeprovenance SSSP datagen-7_5-fb ORC False \n", - "84 completeprovenance SSSP datagen-7_5-fb Avro False \n", - "89 completeprovenance SSSP datagen-7_5-fb Parquet False \n", - "107 completeprovenance SSSP datagen-7_5-fb Text-C True \n", - "108 completeprovenance SSSP datagen-7_5-fb Text False \n", - "114 completeprovenance SSSP datagen-7_5-fb JSON False \n", - "117 completeprovenance SSSP datagen-7_5-fb Object False \n", - "6 completeprovenance SSSP datagen-7_9-fb JSON-C True \n", - "11 completeprovenance SSSP datagen-7_9-fb CSV False \n", - "17 completeprovenance SSSP datagen-7_9-fb Avro False \n", - "23 completeprovenance SSSP datagen-7_9-fb Text-C True \n", - "26 completeprovenance SSSP datagen-7_9-fb JSON False \n", - "52 completeprovenance SSSP datagen-7_9-fb ORC False \n", - "71 completeprovenance SSSP datagen-7_9-fb Parquet False \n", - "91 completeprovenance SSSP datagen-7_9-fb CSV-C True \n", - "109 completeprovenance SSSP datagen-7_9-fb Text False \n", - "112 completeprovenance SSSP datagen-7_9-fb Object False \n", - "7 completeprovenance WCC cit-Patents CSV False \n", - "25 completeprovenance WCC cit-Patents Object False \n", - "31 completeprovenance WCC cit-Patents Text False \n", - "32 completeprovenance WCC cit-Patents Parquet False \n", - "42 completeprovenance WCC cit-Patents Text-C True \n", - "45 completeprovenance WCC cit-Patents CSV-C True \n", - "76 completeprovenance WCC cit-Patents Avro False \n", - "79 completeprovenance WCC cit-Patents JSON False \n", - "83 completeprovenance WCC cit-Patents JSON-C True \n", - "90 completeprovenance WCC cit-Patents ORC False \n", - "20 completeprovenance WCC datagen-7_5-fb ORC False \n", - "39 completeprovenance WCC datagen-7_5-fb CSV-C True \n", - "49 completeprovenance WCC datagen-7_5-fb Object False \n", - "53 completeprovenance WCC datagen-7_5-fb JSON False \n", - "54 completeprovenance WCC datagen-7_5-fb Avro False \n", - "72 completeprovenance WCC datagen-7_5-fb Text False \n", - "73 completeprovenance WCC datagen-7_5-fb JSON-C True \n", - "74 completeprovenance WCC datagen-7_5-fb Text-C True \n", - "93 completeprovenance WCC datagen-7_5-fb Parquet False \n", - "113 completeprovenance WCC datagen-7_5-fb CSV False \n", - "9 completeprovenance WCC datagen-7_9-fb CSV-C True \n", - "10 completeprovenance WCC datagen-7_9-fb Text False \n", - "16 completeprovenance WCC datagen-7_9-fb Text-C True \n", - "22 completeprovenance WCC datagen-7_9-fb JSON False \n", - "24 completeprovenance WCC datagen-7_9-fb ORC False \n", - "27 completeprovenance WCC datagen-7_9-fb Parquet False \n", - "30 completeprovenance WCC datagen-7_9-fb Object False \n", - "62 completeprovenance WCC datagen-7_9-fb CSV False \n", - "64 completeprovenance WCC datagen-7_9-fb JSON-C True \n", - "101 completeprovenance WCC datagen-7_9-fb Avro False \n", - "\n", - " total_size duration \n", - "18 2525597803 110.712451 \n", - "29 2525597803 107.638374 \n", - "40 2525597803 101.973519 \n", - "50 2525597803 113.815472 \n", - "57 2525597803 154.327360 \n", - "58 2525597803 143.495254 \n", - "97 2525597803 110.955192 \n", - "100 2525597803 134.970226 \n", - "105 2525597803 117.176385 \n", - "116 2525597803 119.315761 \n", - "0 256529225 50.868484 \n", - "35 256529225 41.675332 \n", - "38 256529225 57.709867 \n", - "47 256529225 48.643720 \n", - "61 256529225 58.527642 \n", - "78 256529225 41.142354 \n", - "85 256529225 53.117164 \n", - "98 256529225 57.547191 \n", - "104 256529225 48.867018 \n", - "115 256529225 57.120579 \n", - "4 581855399 104.052758 \n", - "5 581855399 67.917724 \n", - "28 581855399 128.829199 \n", - "34 581855399 106.630419 \n", - "41 581855399 61.450592 \n", - "43 581855399 90.139759 \n", - "75 581855399 71.025003 \n", - "81 581855399 93.661136 \n", - "102 581855399 132.247397 \n", - "106 581855399 105.884096 \n", - "1 213794112 43.212258 \n", - "21 213794112 40.428390 \n", - "63 213794112 36.402101 \n", - "68 213794112 39.143989 \n", - "82 213794112 42.711168 \n", - "88 213794112 41.448111 \n", - "95 213794112 40.123198 \n", - "96 213794112 39.219499 \n", - "13 2834235312 245.728175 \n", - "37 2834235312 160.503187 \n", - "55 2834235312 142.736847 \n", - "59 2834235312 150.139135 \n", - "65 2834235312 156.517652 \n", - "80 2834235312 162.602287 \n", - "86 2834235312 223.422605 \n", - "92 2834235312 253.336648 \n", - "94 2834235312 173.286136 \n", - "110 2834235312 226.337767 \n", - "12 552752499 70.957423 \n", - "14 552752499 61.612538 \n", - "15 552752499 89.176345 \n", - "33 552752499 62.719922 \n", - "66 552752499 96.037768 \n", - "67 552752499 76.722820 \n", - "77 552752499 77.929319 \n", - "87 552752499 90.446040 \n", - "99 552752499 68.511904 \n", - "111 552752499 70.591457 \n", - "2 1216101565 124.243249 \n", - "3 1216101565 156.334777 \n", - "36 1216101565 142.884479 \n", - "46 1216101565 165.560627 \n", - "48 1216101565 137.398404 \n", - "51 1216101565 164.005972 \n", - "56 1216101565 112.681167 \n", - "60 1216101565 132.752273 \n", - "69 1216101565 128.338321 \n", - "103 1216101565 115.157119 \n", - "8 254670929 59.969305 \n", - "19 254670929 60.177288 \n", - "44 254670929 52.042376 \n", - "70 254670929 52.215042 \n", - "84 254670929 51.669206 \n", - "89 254670929 50.267594 \n", - "107 254670929 52.306789 \n", - "108 254670929 41.157125 \n", - "114 254670929 46.925169 \n", - "117 254670929 49.207567 \n", - "6 601133226 111.011642 \n", - "11 601133226 78.072813 \n", - "17 601133226 79.608257 \n", - "23 601133226 137.108613 \n", - "26 601133226 97.887644 \n", - "52 601133226 101.735372 \n", - "71 601133226 119.342097 \n", - "91 601133226 91.421126 \n", - "109 601133226 92.144127 \n", - "112 601133226 79.587845 \n", - "7 1100333124 200.797959 \n", - "25 1100333124 197.924420 \n", - "31 1100333124 190.549338 \n", - "32 1100333124 191.301333 \n", - "42 1100333124 244.696276 \n", - "45 1100333124 231.818350 \n", - "76 1100333124 190.187893 \n", - "79 1100333124 191.091221 \n", - "83 1100333124 218.128612 \n", - "90 1100333124 200.915941 \n", - "20 94026180 42.804464 \n", - "39 94026180 46.118334 \n", - "49 94026180 47.037633 \n", - "53 94026180 43.227769 \n", - "54 94026180 44.966324 \n", - "72 94026180 39.382844 \n", - "73 94026180 48.553854 \n", - "74 94026180 39.843927 \n", - "93 94026180 43.780985 \n", - "113 94026180 45.861275 \n", - "9 208169138 84.314303 \n", - "10 208169138 74.173866 \n", - "16 208169138 84.032622 \n", - "22 208169138 89.652158 \n", - "24 208169138 78.462570 \n", - "27 208169138 84.254096 \n", - "30 208169138 83.425914 \n", - "62 208169138 84.156374 \n", - "64 208169138 84.266331 \n", - "101 208169138 77.486517 " + " algorithm dataset duration\n", + "42 BFS cit-Patents 93.084850\n", + "43 BFS cit-Patents 67.314091\n", + "44 BFS cit-Patents 71.610397\n", + "45 BFS cit-Patents 67.837661\n", + "46 BFS cit-Patents 68.945276\n", + "47 BFS cit-Patents 67.387534\n", + "102 BFS datagen-7_5-fb 43.980179\n", + "103 BFS datagen-7_5-fb 36.284404\n", + "104 BFS datagen-7_5-fb 64.881096\n", + "105 BFS datagen-7_5-fb 54.294595\n", + "106 BFS datagen-7_5-fb 44.974715\n", + "107 BFS datagen-7_5-fb 38.059178\n", + "48 BFS datagen-7_9-fb 92.522082\n", + "49 BFS datagen-7_9-fb 92.841696\n", + "50 BFS datagen-7_9-fb 49.542095\n", + "51 BFS datagen-7_9-fb 49.260653\n", + "52 BFS datagen-7_9-fb 106.835998\n", + "53 BFS datagen-7_9-fb 49.918105\n", + "108 BFS datagen-8_4-fb 122.328693\n", + "109 BFS datagen-8_4-fb 135.828256\n", + "110 BFS datagen-8_4-fb 166.663174\n", + "111 BFS datagen-8_4-fb 294.735668\n", + "112 BFS datagen-8_4-fb 256.270809\n", + "113 BFS datagen-8_4-fb 159.079243\n", + "114 BFS datagen-8_8-zf 251.499355\n", + "115 BFS datagen-8_8-zf 184.106404\n", + "116 BFS datagen-8_8-zf 113.863163\n", + "117 BFS datagen-8_8-zf 162.422808\n", + "118 BFS datagen-8_8-zf 163.827960\n", + "119 BFS datagen-8_8-zf 176.195555\n", + "72 BFS graph500-22 32.891801\n", + "73 BFS graph500-22 27.685897\n", + "74 BFS graph500-22 31.698134\n", + "75 BFS graph500-22 31.125634\n", + "76 BFS graph500-22 29.795986\n", + "77 BFS graph500-22 33.591308\n", + "54 PageRank cit-Patents 93.403024\n", + "55 PageRank cit-Patents 88.882940\n", + "56 PageRank cit-Patents 95.720769\n", + "57 PageRank cit-Patents 88.476289\n", + "58 PageRank cit-Patents 85.079759\n", + "59 PageRank cit-Patents 94.110266\n", + "84 PageRank datagen-7_5-fb 43.499283\n", + "85 PageRank datagen-7_5-fb 44.942538\n", + "86 PageRank datagen-7_5-fb 43.636246\n", + "87 PageRank datagen-7_5-fb 43.053957\n", + "88 PageRank datagen-7_5-fb 44.168387\n", + "89 PageRank datagen-7_5-fb 46.670204\n", + "30 PageRank datagen-7_9-fb 93.591943\n", + "31 PageRank datagen-7_9-fb 84.399424\n", + "32 PageRank datagen-7_9-fb 94.553000\n", + "33 PageRank datagen-7_9-fb 88.541162\n", + "34 PageRank datagen-7_9-fb 88.862292\n", + "35 PageRank datagen-7_9-fb 86.030262\n", + "78 PageRank datagen-8_4-fb 349.992612\n", + "79 PageRank datagen-8_4-fb 303.765090\n", + "80 PageRank datagen-8_4-fb 298.210876\n", + "81 PageRank datagen-8_4-fb 326.330437\n", + "82 PageRank datagen-8_4-fb 295.668522\n", + "83 PageRank datagen-8_4-fb 305.253723\n", + "90 PageRank datagen-8_8-zf 344.498639\n", + "91 PageRank datagen-8_8-zf 342.591057\n", + "92 PageRank datagen-8_8-zf 377.998137\n", + "93 PageRank datagen-8_8-zf 383.467751\n", + "94 PageRank datagen-8_8-zf 399.790071\n", + "95 PageRank datagen-8_8-zf 329.032354\n", + "24 PageRank graph500-22 83.693546\n", + "25 PageRank graph500-22 87.673099\n", + "26 PageRank graph500-22 81.172676\n", + "27 PageRank graph500-22 79.791864\n", + "28 PageRank graph500-22 92.390624\n", + "29 PageRank graph500-22 84.084160\n", + "6 SSSP datagen-7_5-fb 33.830519\n", + "7 SSSP datagen-7_5-fb 42.004611\n", + "8 SSSP datagen-7_5-fb 40.612584\n", + "9 SSSP datagen-7_5-fb 73.230962\n", + "10 SSSP datagen-7_5-fb 42.327208\n", + "11 SSSP datagen-7_5-fb 40.983417\n", + "18 SSSP datagen-7_9-fb 53.024663\n", + "19 SSSP datagen-7_9-fb 55.819785\n", + "20 SSSP datagen-7_9-fb 91.346943\n", + "21 SSSP datagen-7_9-fb 93.145833\n", + "22 SSSP datagen-7_9-fb 86.928526\n", + "23 SSSP datagen-7_9-fb 105.834026\n", + "0 SSSP datagen-8_4-fb 140.479249\n", + "1 SSSP datagen-8_4-fb 132.204479\n", + "2 SSSP datagen-8_4-fb 132.022222\n", + "3 SSSP datagen-8_4-fb 178.487897\n", + "4 SSSP datagen-8_4-fb 201.796498\n", + "5 SSSP datagen-8_4-fb 266.424223\n", + "66 SSSP datagen-8_8-zf 156.040455\n", + "67 SSSP datagen-8_8-zf 167.117359\n", + "68 SSSP datagen-8_8-zf 261.901648\n", + "69 SSSP datagen-8_8-zf 154.459337\n", + "70 SSSP datagen-8_8-zf 166.424446\n", + "71 SSSP datagen-8_8-zf 110.658169\n", + "96 WCC cit-Patents 156.393606\n", + "97 WCC cit-Patents 157.799174\n", + "98 WCC cit-Patents 167.990721\n", + "99 WCC cit-Patents 157.309133\n", + "100 WCC cit-Patents 164.752674\n", + "101 WCC cit-Patents 159.564465\n", + "36 WCC datagen-7_5-fb 39.674211\n", + "37 WCC datagen-7_5-fb 39.594738\n", + "38 WCC datagen-7_5-fb 42.186305\n", + "39 WCC datagen-7_5-fb 37.753565\n", + "40 WCC datagen-7_5-fb 43.528095\n", + "41 WCC datagen-7_5-fb 41.038673\n", + "60 WCC datagen-7_9-fb 78.122619\n", + "61 WCC datagen-7_9-fb 80.368009\n", + "62 WCC datagen-7_9-fb 79.974040\n", + "63 WCC datagen-7_9-fb 80.176662\n", + "64 WCC datagen-7_9-fb 71.362210\n", + "65 WCC datagen-7_9-fb 74.583376\n", + "120 WCC datagen-8_4-fb 266.394836\n", + "121 WCC datagen-8_4-fb 204.063289\n", + "122 WCC datagen-8_4-fb 184.613848\n", + "123 WCC datagen-8_4-fb 190.396415\n", + "124 WCC datagen-8_4-fb 193.196303\n", + "125 WCC datagen-8_4-fb 233.303744\n", + "12 WCC graph500-22 85.568282\n", + "13 WCC graph500-22 73.485283\n", + "14 WCC graph500-22 73.309156\n", + "15 WCC graph500-22 72.533035\n", + "16 WCC graph500-22 70.956164\n", + "17 WCC graph500-22 57.961798" ] }, - "execution_count": 62, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "dddd = storage_formats.copy(deep=True).drop([\"per_iter\", \"nice_size\", \"iterations\", \"nr_vertices\", \"run\", \"nr_executors\"], axis=1)\n", - "for ds in dddd[\"dataset\"].unique():\n", - " for algo in dddd[\"algorithm\"].unique():\n", - " for fmt in dddd[\"storage_format\"].unique():\n", - " if fmt == \"Text\":\n", - " continue\n", - " text_size = dddd[(dddd[\"algorithm\"] == algo) & (dddd[\"dataset\"] == ds) & (dddd[\"storage_format\"] == \"Text\")][\"total_size\"]\n", - " if len(text_size) == 1:\n", - " text_size = text_size.iloc[0]\n", - " else:\n", - " text_size = -1\n", - " # print(text_size)\n", - " # print()\n", - " # print()\n", - " dddd.loc[(dddd[\"algorithm\"] == algo) & (dddd[\"dataset\"] == ds) & (dddd[\"storage_format\"] == fmt), \"total_size\"] = text_size\n", - "dddd.sort_values(by=[\"algorithm\", \"dataset\"])" + "tracing_durations = tracing[[\"algorithm\", \"dataset\", \"duration\"]].sort_values(by=[\"algorithm\", \"dataset\"])\n", + "tracing_durations" ] }, { "cell_type": "code", - "execution_count": 63, - "id": "18ca6b29", + "execution_count": 26, + "id": "3cca2861", "metadata": {}, "outputs": [ { @@ -5287,2846 +3742,1496 @@ " \n", " \n", " \n", - " config\n", " algorithm\n", " dataset\n", - " run\n", - " storage_format\n", - " compressed\n", - " total_size\n", - " nr_executors\n", - " nr_vertices\n", - " iterations\n", - " duration\n", - " per_iter\n", - " nice_size\n", - " baseline_total_size\n", + " duration_tracing\n", + " duration_baseline\n", + " size\n", " overhead\n", - " overhead_desc\n", " \n", " \n", " \n", " \n", " 0\n", - " completeprovenance\n", " BFS\n", - " datagen-7_5-fb\n", - " 1\n", - " ORC\n", - " False\n", - " 58274920\n", - " 7\n", - " 633432\n", - " 29\n", - " 50.868484\n", - " 1.754086\n", - " 55.58MB\n", - " 256529225\n", - " 0.227167\n", - " 58274920 / 256529225\n", + " cit-Patents\n", + " 93.084850\n", + " 82.968899\n", + " 100187504\n", + " 1.121925\n", " \n", " \n", " 1\n", - " completeprovenance\n", " BFS\n", - " graph500-22\n", - " 1\n", - " Parquet\n", - " False\n", - " 36196251\n", - " 7\n", - " 2396657\n", - " 3\n", - " 43.212258\n", - " 14.404086\n", - " 34.52MB\n", - " 213794112\n", - " 0.169304\n", - " 36196251 / 213794112\n", + " cit-Patents\n", + " 67.314091\n", + " 82.968899\n", + " 100187504\n", + " 0.811317\n", " \n", " \n", " 2\n", - " completeprovenance\n", - " PageRank\n", - " datagen-7_9-fb\n", - " 1\n", - " JSON\n", - " False\n", - " 1632380079\n", - " 7\n", - " 1387587\n", - " 35\n", - " 124.243249\n", - " 3.549807\n", - " 1.52GB\n", - " 1216101565\n", - " 1.342306\n", - " 1632380079 / 1216101565\n", + " BFS\n", + " cit-Patents\n", + " 71.610397\n", + " 82.968899\n", + " 100187504\n", + " 0.863099\n", " \n", " \n", " 3\n", - " completeprovenance\n", - " PageRank\n", - " datagen-7_9-fb\n", - " 1\n", - " JSON-C\n", - " True\n", - " 457450553\n", - " 7\n", - " 1387587\n", - " 35\n", - " 156.334777\n", - " 4.466708\n", - " 436.26MB\n", - " 1216101565\n", - " 0.376161\n", - " 457450553 / 1216101565\n", + " BFS\n", + " cit-Patents\n", + " 67.837661\n", + " 82.968899\n", + " 100187504\n", + " 0.817628\n", " \n", " \n", " 4\n", - " completeprovenance\n", " BFS\n", - " datagen-7_9-fb\n", - " 1\n", - " ORC\n", - " False\n", - " 135877889\n", - " 7\n", - " 1387587\n", - " 31\n", - " 104.052758\n", - " 3.356541\n", - " 129.58MB\n", - " 581855399\n", - " 0.233525\n", - " 135877889 / 581855399\n", + " cit-Patents\n", + " 68.945276\n", + " 82.968899\n", + " 100187504\n", + " 0.830977\n", " \n", " \n", " 5\n", - " completeprovenance\n", " BFS\n", - " datagen-7_9-fb\n", - " 1\n", - " JSON\n", - " False\n", - " 864923147\n", - " 7\n", - " 1387587\n", - " 31\n", - " 67.917724\n", - " 2.190894\n", - " 824.85MB\n", - " 581855399\n", - " 1.486492\n", - " 864923147 / 581855399\n", + " cit-Patents\n", + " 67.387534\n", + " 82.968899\n", + " 100187504\n", + " 0.812202\n", " \n", " \n", " 6\n", - " completeprovenance\n", - " SSSP\n", - " datagen-7_9-fb\n", - " 1\n", - " JSON-C\n", - " True\n", - " 170232558\n", - " 7\n", - " 1387587\n", - " 32\n", - " 111.011642\n", - " 3.469114\n", - " 162.35MB\n", - " 601133226\n", - " 0.283186\n", - " 170232558 / 601133226\n", + " BFS\n", + " datagen-7_5-fb\n", + " 43.980179\n", + " 34.323108\n", + " 9533719\n", + " 1.281358\n", " \n", " \n", " 7\n", - " completeprovenance\n", - " WCC\n", - " cit-Patents\n", - " 1\n", - " CSV\n", - " False\n", - " 941792868\n", - " 7\n", - " 3774768\n", - " 41\n", - " 200.797959\n", - " 4.897511\n", - " 898.16MB\n", - " 1100333124\n", - " 0.855916\n", - " 941792868 / 1100333124\n", + " BFS\n", + " datagen-7_5-fb\n", + " 36.284404\n", + " 34.323108\n", + " 9533719\n", + " 1.057142\n", " \n", " \n", " 8\n", - " completeprovenance\n", - " SSSP\n", + " BFS\n", " datagen-7_5-fb\n", - " 1\n", - " JSON-C\n", - " True\n", - " 68791112\n", - " 7\n", - " 633432\n", - " 30\n", - " 59.969305\n", - " 1.998977\n", - " 65.60MB\n", - " 254670929\n", - " 0.270118\n", - " 68791112 / 254670929\n", + " 64.881096\n", + " 34.323108\n", + " 9533719\n", + " 1.890304\n", " \n", " \n", " 9\n", - " completeprovenance\n", - " WCC\n", - " datagen-7_9-fb\n", - " 1\n", - " CSV-C\n", - " True\n", - " 57549288\n", - " 7\n", - " 1387587\n", - " 13\n", - " 84.314303\n", - " 6.485716\n", - " 54.88MB\n", - " 208169138\n", - " 0.276454\n", - " 57549288 / 208169138\n", + " BFS\n", + " datagen-7_5-fb\n", + " 54.294595\n", + " 34.323108\n", + " 9533719\n", + " 1.581867\n", " \n", " \n", " 10\n", - " completeprovenance\n", - " WCC\n", - " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 208169138\n", - " 7\n", - " 1387587\n", - " 13\n", - " 74.173866\n", - " 5.705682\n", - " 198.53MB\n", - " 208169138\n", - " 1.000000\n", - " 208169138 / 208169138\n", + " BFS\n", + " datagen-7_5-fb\n", + " 44.974715\n", + " 34.323108\n", + " 9533719\n", + " 1.310333\n", " \n", " \n", " 11\n", - " completeprovenance\n", - " SSSP\n", - " datagen-7_9-fb\n", - " 1\n", - " CSV\n", - " False\n", - " 551180094\n", - " 7\n", - " 1387587\n", - " 32\n", - " 78.072813\n", - " 2.439775\n", - " 525.65MB\n", - " 601133226\n", - " 0.916902\n", - " 551180094 / 601133226\n", + " BFS\n", + " datagen-7_5-fb\n", + " 38.059178\n", + " 34.323108\n", + " 9533719\n", + " 1.108850\n", " \n", " \n", " 12\n", - " completeprovenance\n", - " PageRank\n", - " datagen-7_5-fb\n", - " 1\n", - " Parquet\n", - " False\n", - " 314712266\n", - " 7\n", - " 633432\n", - " 35\n", - " 70.957423\n", - " 2.027355\n", - " 300.13MB\n", - " 552752499\n", - " 0.569355\n", - " 314712266 / 552752499\n", + " BFS\n", + " datagen-7_9-fb\n", + " 92.522082\n", + " 69.310011\n", + " 20966038\n", + " 1.334902\n", " \n", " \n", " 13\n", - " completeprovenance\n", - " PageRank\n", - " cit-Patents\n", - " 1\n", - " CSV-C\n", - " True\n", - " 981249822\n", - " 7\n", - " 3774768\n", - " 35\n", - " 245.728175\n", - " 7.020805\n", - " 935.79MB\n", - " 2834235312\n", - " 0.346213\n", - " 981249822 / 2834235312\n", + " BFS\n", + " datagen-7_9-fb\n", + " 92.841696\n", + " 69.310011\n", + " 20966038\n", + " 1.339513\n", " \n", " \n", " 14\n", - " completeprovenance\n", - " PageRank\n", - " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 552752499\n", - " 7\n", - " 633432\n", - " 35\n", - " 61.612538\n", - " 1.760358\n", - " 527.15MB\n", - " 552752499\n", - " 1.000000\n", - " 552752499 / 552752499\n", + " BFS\n", + " datagen-7_9-fb\n", + " 49.542095\n", + " 69.310011\n", + " 20966038\n", + " 0.714790\n", " \n", " \n", " 15\n", - " completeprovenance\n", - " PageRank\n", - " datagen-7_5-fb\n", - " 1\n", - " Text-C\n", - " True\n", - " 194758917\n", - " 7\n", - " 633432\n", - " 35\n", - " 89.176345\n", - " 2.547896\n", - " 185.74MB\n", - " 552752499\n", - " 0.352344\n", - " 194758917 / 552752499\n", + " BFS\n", + " datagen-7_9-fb\n", + " 49.260653\n", + " 69.310011\n", + " 20966038\n", + " 0.710729\n", " \n", " \n", " 16\n", - " completeprovenance\n", - " WCC\n", + " BFS\n", " datagen-7_9-fb\n", - " 1\n", - " Text-C\n", - " True\n", - " 59736651\n", - " 7\n", - " 1387587\n", - " 13\n", - " 84.032622\n", - " 6.464048\n", - " 56.97MB\n", - " 208169138\n", - " 0.286962\n", - " 59736651 / 208169138\n", + " 106.835998\n", + " 69.310011\n", + " 20966038\n", + " 1.541422\n", " \n", " \n", " 17\n", - " completeprovenance\n", - " SSSP\n", + " BFS\n", " datagen-7_9-fb\n", - " 1\n", - " Avro\n", - " False\n", - " 226822606\n", - " 7\n", - " 1387587\n", - " 32\n", - " 79.608257\n", - " 2.487758\n", - " 216.31MB\n", - " 601133226\n", - " 0.377325\n", - " 226822606 / 601133226\n", + " 49.918105\n", + " 69.310011\n", + " 20966038\n", + " 0.720215\n", " \n", " \n", " 18\n", - " completeprovenance\n", " BFS\n", - " cit-Patents\n", - " 1\n", - " Avro\n", - " False\n", - " 548177668\n", - " 7\n", - " 3774768\n", - " 43\n", - " 110.712451\n", - " 2.574708\n", - " 522.78MB\n", - " 2525597803\n", - " 0.217049\n", - " 548177668 / 2525597803\n", + " datagen-8_4-fb\n", + " 122.328693\n", + " 241.785784\n", + " 57850630\n", + " 0.505938\n", " \n", " \n", " 19\n", - " completeprovenance\n", - " SSSP\n", - " datagen-7_5-fb\n", - " 1\n", - " CSV-C\n", - " True\n", - " 62370316\n", - " 7\n", - " 633432\n", - " 30\n", - " 60.177288\n", - " 2.005910\n", - " 59.48MB\n", - " 254670929\n", - " 0.244906\n", - " 62370316 / 254670929\n", + " BFS\n", + " datagen-8_4-fb\n", + " 135.828256\n", + " 241.785784\n", + " 57850630\n", + " 0.561771\n", " \n", " \n", " 20\n", - " completeprovenance\n", - " WCC\n", - " datagen-7_5-fb\n", - " 1\n", - " ORC\n", - " False\n", - " 35932527\n", - " 7\n", - " 633432\n", - " 13\n", - " 42.804464\n", - " 3.292651\n", - " 34.27MB\n", - " 94026180\n", - " 0.382154\n", - " 35932527 / 94026180\n", + " BFS\n", + " datagen-8_4-fb\n", + " 166.663174\n", + " 241.785784\n", + " 57850630\n", + " 0.689301\n", " \n", " \n", " 21\n", - " completeprovenance\n", " BFS\n", - " graph500-22\n", - " 1\n", - " ORC\n", - " False\n", - " 21625818\n", - " 7\n", - " 2396657\n", - " 3\n", - " 40.428390\n", - " 13.476130\n", - " 20.62MB\n", - " 213794112\n", - " 0.101153\n", - " 21625818 / 213794112\n", + " datagen-8_4-fb\n", + " 294.735668\n", + " 241.785784\n", + " 57850630\n", + " 1.218995\n", " \n", " \n", " 22\n", - " completeprovenance\n", - " WCC\n", - " datagen-7_9-fb\n", - " 1\n", - " JSON\n", - " False\n", - " 324726446\n", - " 7\n", - " 1387587\n", - " 13\n", - " 89.652158\n", - " 6.896320\n", - " 309.68MB\n", - " 208169138\n", - " 1.559916\n", - " 324726446 / 208169138\n", + " BFS\n", + " datagen-8_4-fb\n", + " 256.270809\n", + " 241.785784\n", + " 57850630\n", + " 1.059909\n", " \n", " \n", " 23\n", - " completeprovenance\n", - " SSSP\n", - " datagen-7_9-fb\n", - " 1\n", - " Text-C\n", - " True\n", - " 158049578\n", - " 7\n", - " 1387587\n", - " 32\n", - " 137.108613\n", - " 4.284644\n", - " 150.73MB\n", - " 601133226\n", - " 0.262919\n", - " 158049578 / 601133226\n", + " BFS\n", + " datagen-8_4-fb\n", + " 159.079243\n", + " 241.785784\n", + " 57850630\n", + " 0.657935\n", " \n", " \n", " 24\n", - " completeprovenance\n", - " WCC\n", - " datagen-7_9-fb\n", - " 1\n", - " ORC\n", - " False\n", - " 82049979\n", - " 7\n", - " 1387587\n", - " 13\n", - " 78.462570\n", - " 6.035582\n", - " 78.25MB\n", - " 208169138\n", - " 0.394151\n", - " 82049979 / 208169138\n", + " BFS\n", + " datagen-8_8-zf\n", + " 251.499355\n", + " 218.721579\n", + " 2703435298\n", + " 1.149861\n", " \n", " \n", " 25\n", - " completeprovenance\n", - " WCC\n", - " cit-Patents\n", - " 1\n", - " Object\n", - " False\n", - " 3730315659\n", - " 7\n", - " 3774768\n", - " 41\n", - " 197.924420\n", - " 4.827425\n", - " 3.47GB\n", - " 1100333124\n", - " 3.390169\n", - " 3730315659 / 1100333124\n", + " BFS\n", + " datagen-8_8-zf\n", + " 184.106404\n", + " 218.721579\n", + " 2703435298\n", + " 0.841739\n", " \n", " \n", " 26\n", - " completeprovenance\n", - " SSSP\n", - " datagen-7_9-fb\n", - " 1\n", - " JSON\n", - " False\n", - " 900852018\n", - " 7\n", - " 1387587\n", - " 32\n", - " 97.887644\n", - " 3.058989\n", - " 859.12MB\n", - " 601133226\n", - " 1.498590\n", - " 900852018 / 601133226\n", + " BFS\n", + " datagen-8_8-zf\n", + " 113.863163\n", + " 218.721579\n", + " 2703435298\n", + " 0.520585\n", " \n", " \n", " 27\n", - " completeprovenance\n", - " WCC\n", - " datagen-7_9-fb\n", - " 1\n", - " Parquet\n", - " False\n", - " 88141246\n", - " 7\n", - " 1387587\n", - " 13\n", - " 84.254096\n", - " 6.481084\n", - " 84.06MB\n", - " 208169138\n", - " 0.423412\n", - " 88141246 / 208169138\n", + " BFS\n", + " datagen-8_8-zf\n", + " 162.422808\n", + " 218.721579\n", + " 2703435298\n", + " 0.742601\n", " \n", " \n", " 28\n", - " completeprovenance\n", " BFS\n", - " datagen-7_9-fb\n", - " 1\n", - " CSV-C\n", - " True\n", - " 116209136\n", - " 7\n", - " 1387587\n", - " 31\n", - " 128.829199\n", - " 4.155781\n", - " 110.83MB\n", - " 581855399\n", - " 0.199722\n", - " 116209136 / 581855399\n", + " datagen-8_8-zf\n", + " 163.827960\n", + " 218.721579\n", + " 2703435298\n", + " 0.749025\n", " \n", " \n", " 29\n", - " completeprovenance\n", " BFS\n", - " cit-Patents\n", - " 1\n", - " JSON\n", - " False\n", - " 3567433771\n", - " 7\n", - " 3774768\n", - " 43\n", - " 107.638374\n", - " 2.503218\n", - " 3.32GB\n", - " 2525597803\n", - " 1.412511\n", - " 3567433771 / 2525597803\n", + " datagen-8_8-zf\n", + " 176.195555\n", + " 218.721579\n", + " 2703435298\n", + " 0.805570\n", " \n", " \n", " 30\n", - " completeprovenance\n", - " WCC\n", - " datagen-7_9-fb\n", - " 1\n", - " Object\n", - " False\n", - " 469735964\n", - " 7\n", - " 1387587\n", - " 13\n", - " 83.425914\n", - " 6.417378\n", - " 447.98MB\n", - " 208169138\n", - " 2.256511\n", - " 469735964 / 208169138\n", + " BFS\n", + " graph500-22\n", + " 32.891801\n", + " 32.865590\n", + " 23357988\n", + " 1.000798\n", " \n", " \n", " 31\n", - " completeprovenance\n", - " WCC\n", - " cit-Patents\n", - " 1\n", - " Text\n", - " False\n", - " 1100333124\n", - " 7\n", - " 3774768\n", - " 41\n", - " 190.549338\n", - " 4.647545\n", - " 1.02GB\n", - " 1100333124\n", - " 1.000000\n", - " 1100333124 / 1100333124\n", + " BFS\n", + " graph500-22\n", + " 27.685897\n", + " 32.865590\n", + " 23357988\n", + " 0.842398\n", " \n", " \n", " 32\n", - " completeprovenance\n", - " WCC\n", - " cit-Patents\n", - " 1\n", - " Parquet\n", - " False\n", - " 565433425\n", - " 7\n", - " 3774768\n", - " 41\n", - " 191.301333\n", - " 4.665886\n", - " 539.24MB\n", - " 1100333124\n", - " 0.513875\n", - " 565433425 / 1100333124\n", + " BFS\n", + " graph500-22\n", + " 31.698134\n", + " 32.865590\n", + " 23357988\n", + " 0.964478\n", " \n", " \n", " 33\n", - " completeprovenance\n", - " PageRank\n", - " datagen-7_5-fb\n", - " 1\n", - " Object\n", - " False\n", - " 871933914\n", - " 7\n", - " 633432\n", - " 35\n", - " 62.719922\n", - " 1.791998\n", - " 831.54MB\n", - " 552752499\n", - " 1.577440\n", - " 871933914 / 552752499\n", + " BFS\n", + " graph500-22\n", + " 31.125634\n", + " 32.865590\n", + " 23357988\n", + " 0.947058\n", " \n", " \n", " 34\n", - " completeprovenance\n", " BFS\n", - " datagen-7_9-fb\n", - " 1\n", - " Object\n", - " False\n", - " 1128077456\n", - " 7\n", - " 1387587\n", - " 31\n", - " 106.630419\n", - " 3.439691\n", - " 1.05GB\n", - " 581855399\n", - " 1.938759\n", - " 1128077456 / 581855399\n", + " graph500-22\n", + " 29.795986\n", + " 32.865590\n", + " 23357988\n", + " 0.906601\n", " \n", " \n", " 35\n", - " completeprovenance\n", " BFS\n", - " datagen-7_5-fb\n", - " 1\n", - " Object\n", - " False\n", - " 487601995\n", - " 7\n", - " 633432\n", - " 29\n", - " 41.675332\n", - " 1.437080\n", - " 465.01MB\n", - " 256529225\n", - " 1.900766\n", - " 487601995 / 256529225\n", + " graph500-22\n", + " 33.591308\n", + " 32.865590\n", + " 23357988\n", + " 1.022081\n", " \n", " \n", " 36\n", - " completeprovenance\n", " PageRank\n", - " datagen-7_9-fb\n", - " 1\n", - " Avro\n", - " False\n", - " 701125212\n", - " 7\n", - " 1387587\n", - " 35\n", - " 142.884479\n", - " 4.082414\n", - " 668.65MB\n", - " 1216101565\n", - " 0.576535\n", - " 701125212 / 1216101565\n", + " cit-Patents\n", + " 93.403024\n", + " 85.102944\n", + " 113070194\n", + " 1.097530\n", " \n", " \n", " 37\n", - " completeprovenance\n", " PageRank\n", " cit-Patents\n", - " 1\n", - " Avro\n", - " False\n", - " 1589606305\n", - " 7\n", - " 3774768\n", - " 35\n", - " 160.503187\n", - " 4.585805\n", - " 1.48GB\n", - " 2834235312\n", - " 0.560859\n", - " 1589606305 / 2834235312\n", + " 88.882940\n", + " 85.102944\n", + " 113070194\n", + " 1.044417\n", " \n", " \n", " 38\n", - " completeprovenance\n", - " BFS\n", - " datagen-7_5-fb\n", - " 1\n", - " Text-C\n", - " True\n", - " 49265960\n", - " 7\n", - " 633432\n", - " 29\n", - " 57.709867\n", - " 1.989995\n", - " 46.98MB\n", - " 256529225\n", - " 0.192048\n", - " 49265960 / 256529225\n", + " PageRank\n", + " cit-Patents\n", + " 95.720769\n", + " 85.102944\n", + " 113070194\n", + " 1.124764\n", " \n", " \n", " 39\n", - " completeprovenance\n", - " WCC\n", - " datagen-7_5-fb\n", - " 1\n", - " CSV-C\n", - " True\n", - " 25012545\n", - " 7\n", - " 633432\n", - " 13\n", - " 46.118334\n", - " 3.547564\n", - " 23.85MB\n", - " 94026180\n", - " 0.266017\n", - " 25012545 / 94026180\n", + " PageRank\n", + " cit-Patents\n", + " 88.476289\n", + " 85.102944\n", + " 113070194\n", + " 1.039638\n", " \n", " \n", " 40\n", - " completeprovenance\n", - " BFS\n", + " PageRank\n", " cit-Patents\n", - " 1\n", - " Text\n", - " False\n", - " 2525597803\n", - " 7\n", - " 3774768\n", - " 43\n", - " 101.973519\n", - " 2.371477\n", - " 2.35GB\n", - " 2525597803\n", - " 1.000000\n", - " 2525597803 / 2525597803\n", + " 85.079759\n", + " 85.102944\n", + " 113070194\n", + " 0.999728\n", " \n", " \n", " 41\n", - " completeprovenance\n", - " BFS\n", - " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 581855399\n", - " 7\n", - " 1387587\n", - " 31\n", - " 61.450592\n", - " 1.982277\n", - " 554.90MB\n", - " 581855399\n", - " 1.000000\n", - " 581855399 / 581855399\n", + " PageRank\n", + " cit-Patents\n", + " 94.110266\n", + " 85.102944\n", + " 113070194\n", + " 1.105840\n", " \n", " \n", " 42\n", - " completeprovenance\n", - " WCC\n", - " cit-Patents\n", - " 1\n", - " Text-C\n", - " True\n", - " 410716445\n", - " 7\n", - " 3774768\n", - " 41\n", - " 244.696276\n", - " 5.968202\n", - " 391.69MB\n", - " 1100333124\n", - " 0.373266\n", - " 410716445 / 1100333124\n", + " PageRank\n", + " datagen-7_5-fb\n", + " 43.499283\n", + " 39.980476\n", + " 22202359\n", + " 1.088013\n", " \n", " \n", " 43\n", - " completeprovenance\n", - " BFS\n", - " datagen-7_9-fb\n", - " 1\n", - " Text-C\n", - " True\n", - " 117407400\n", - " 7\n", - " 1387587\n", - " 31\n", - " 90.139759\n", - " 2.907734\n", - " 111.97MB\n", - " 581855399\n", - " 0.201781\n", - " 117407400 / 581855399\n", + " PageRank\n", + " datagen-7_5-fb\n", + " 44.942538\n", + " 39.980476\n", + " 22202359\n", + " 1.124112\n", " \n", " \n", " 44\n", - " completeprovenance\n", - " SSSP\n", + " PageRank\n", " datagen-7_5-fb\n", - " 1\n", - " CSV\n", - " False\n", - " 233134241\n", - " 7\n", - " 633432\n", - " 30\n", - " 52.042376\n", - " 1.734746\n", - " 222.33MB\n", - " 254670929\n", - " 0.915433\n", - " 233134241 / 254670929\n", + " 43.636246\n", + " 39.980476\n", + " 22202359\n", + " 1.091439\n", " \n", " \n", " 45\n", - " completeprovenance\n", - " WCC\n", - " cit-Patents\n", - " 1\n", - " CSV-C\n", - " True\n", - " 390512385\n", - " 7\n", - " 3774768\n", - " 41\n", - " 231.818350\n", - " 5.654106\n", - " 372.42MB\n", - " 1100333124\n", - " 0.354904\n", - " 390512385 / 1100333124\n", + " PageRank\n", + " datagen-7_5-fb\n", + " 43.053957\n", + " 39.980476\n", + " 22202359\n", + " 1.076875\n", " \n", " \n", " 46\n", - " completeprovenance\n", " PageRank\n", - " datagen-7_9-fb\n", - " 1\n", - " Text-C\n", - " True\n", - " 433388860\n", - " 7\n", - " 1387587\n", - " 35\n", - " 165.560627\n", - " 4.730304\n", - " 413.31MB\n", - " 1216101565\n", - " 0.356376\n", - " 433388860 / 1216101565\n", + " datagen-7_5-fb\n", + " 44.168387\n", + " 39.980476\n", + " 22202359\n", + " 1.104749\n", " \n", " \n", " 47\n", - " completeprovenance\n", - " BFS\n", + " PageRank\n", " datagen-7_5-fb\n", - " 1\n", - " JSON\n", - " False\n", - " 378148169\n", - " 7\n", - " 633432\n", - " 29\n", - " 48.643720\n", - " 1.677370\n", - " 360.63MB\n", - " 256529225\n", - " 1.474094\n", - " 378148169 / 256529225\n", + " 46.670204\n", + " 39.980476\n", + " 22202359\n", + " 1.167325\n", " \n", " \n", " 48\n", - " completeprovenance\n", " PageRank\n", " datagen-7_9-fb\n", - " 1\n", - " ORC\n", - " False\n", - " 654589137\n", - " 7\n", - " 1387587\n", - " 35\n", - " 137.398404\n", - " 3.925669\n", - " 624.26MB\n", - " 1216101565\n", - " 0.538268\n", - " 654589137 / 1216101565\n", + " 93.591943\n", + " 69.879073\n", + " 48717778\n", + " 1.339342\n", " \n", " \n", " 49\n", - " completeprovenance\n", - " WCC\n", - " datagen-7_5-fb\n", - " 1\n", - " Object\n", - " False\n", - " 213507029\n", - " 7\n", - " 633432\n", - " 13\n", - " 47.037633\n", - " 3.618279\n", - " 203.62MB\n", - " 94026180\n", - " 2.270719\n", - " 213507029 / 94026180\n", + " PageRank\n", + " datagen-7_9-fb\n", + " 84.399424\n", + " 69.879073\n", + " 48717778\n", + " 1.207793\n", " \n", " \n", " 50\n", - " completeprovenance\n", - " BFS\n", - " cit-Patents\n", - " 1\n", - " ORC\n", - " False\n", - " 272126547\n", - " 7\n", - " 3774768\n", - " 43\n", - " 113.815472\n", - " 2.646871\n", - " 259.52MB\n", - " 2525597803\n", - " 0.107747\n", - " 272126547 / 2525597803\n", + " PageRank\n", + " datagen-7_9-fb\n", + " 94.553000\n", + " 69.879073\n", + " 48717778\n", + " 1.353095\n", " \n", " \n", " 51\n", - " completeprovenance\n", " PageRank\n", " datagen-7_9-fb\n", - " 1\n", - " CSV-C\n", - " True\n", - " 428773253\n", - " 7\n", - " 1387587\n", - " 35\n", - " 164.005972\n", - " 4.685885\n", - " 408.91MB\n", - " 1216101565\n", - " 0.352580\n", - " 428773253 / 1216101565\n", + " 88.541162\n", + " 69.879073\n", + " 48717778\n", + " 1.267063\n", " \n", " \n", " 52\n", - " completeprovenance\n", - " SSSP\n", + " PageRank\n", " datagen-7_9-fb\n", - " 1\n", - " ORC\n", - " False\n", - " 169444993\n", - " 7\n", - " 1387587\n", - " 32\n", - " 101.735372\n", - " 3.179230\n", - " 161.60MB\n", - " 601133226\n", - " 0.281876\n", - " 169444993 / 601133226\n", + " 88.862292\n", + " 69.879073\n", + " 48717778\n", + " 1.271658\n", " \n", " \n", " 53\n", - " completeprovenance\n", - " WCC\n", - " datagen-7_5-fb\n", - " 1\n", - " JSON\n", - " False\n", - " 147234468\n", - " 7\n", - " 633432\n", - " 13\n", - " 43.227769\n", - " 3.325213\n", - " 140.41MB\n", - " 94026180\n", - " 1.565888\n", - " 147234468 / 94026180\n", + " PageRank\n", + " datagen-7_9-fb\n", + " 86.030262\n", + " 69.879073\n", + " 48717778\n", + " 1.231131\n", " \n", " \n", " 54\n", - " completeprovenance\n", - " WCC\n", - " datagen-7_5-fb\n", - " 1\n", - " Avro\n", - " False\n", - " 40440808\n", - " 7\n", - " 633432\n", - " 13\n", - " 44.966324\n", - " 3.458948\n", - " 38.57MB\n", - " 94026180\n", - " 0.430102\n", - " 40440808 / 94026180\n", + " PageRank\n", + " datagen-8_4-fb\n", + " 349.992612\n", + " 215.872856\n", + " 134032310\n", + " 1.621291\n", " \n", " \n", " 55\n", - " completeprovenance\n", " PageRank\n", - " cit-Patents\n", - " 1\n", - " Text\n", - " False\n", - " 2834235312\n", - " 7\n", - " 3774768\n", - " 35\n", - " 142.736847\n", - " 4.078196\n", - " 2.64GB\n", - " 2834235312\n", - " 1.000000\n", - " 2834235312 / 2834235312\n", + " datagen-8_4-fb\n", + " 303.765090\n", + " 215.872856\n", + " 134032310\n", + " 1.407148\n", " \n", " \n", " 56\n", - " completeprovenance\n", " PageRank\n", - " datagen-7_9-fb\n", - " 1\n", - " Object\n", - " False\n", - " 1909994294\n", - " 7\n", - " 1387587\n", - " 35\n", - " 112.681167\n", - " 3.219462\n", - " 1.78GB\n", - " 1216101565\n", - " 1.570588\n", - " 1909994294 / 1216101565\n", + " datagen-8_4-fb\n", + " 298.210876\n", + " 215.872856\n", + " 134032310\n", + " 1.381419\n", " \n", " \n", " 57\n", - " completeprovenance\n", - " BFS\n", - " cit-Patents\n", - " 1\n", - " Text-C\n", - " True\n", - " 398055303\n", - " 7\n", - " 3774768\n", - " 43\n", - " 154.327360\n", - " 3.589008\n", - " 379.62MB\n", - " 2525597803\n", - " 0.157608\n", - " 398055303 / 2525597803\n", + " PageRank\n", + " datagen-8_4-fb\n", + " 326.330437\n", + " 215.872856\n", + " 134032310\n", + " 1.511679\n", " \n", " \n", " 58\n", - " completeprovenance\n", - " BFS\n", - " cit-Patents\n", - " 1\n", - " CSV-C\n", - " True\n", - " 385629051\n", - " 7\n", - " 3774768\n", - " 43\n", - " 143.495254\n", - " 3.337099\n", - " 367.76MB\n", - " 2525597803\n", - " 0.152688\n", - " 385629051 / 2525597803\n", - " \n", + " PageRank\n", + " datagen-8_4-fb\n", + " 295.668522\n", + " 215.872856\n", + " 134032310\n", + " 1.369642\n", + " \n", " \n", " 59\n", - " completeprovenance\n", " PageRank\n", - " cit-Patents\n", - " 1\n", - " Object\n", - " False\n", - " 5183266070\n", - " 7\n", - " 3774768\n", - " 35\n", - " 150.139135\n", - " 4.289690\n", - " 4.83GB\n", - " 2834235312\n", - " 1.828806\n", - " 5183266070 / 2834235312\n", + " datagen-8_4-fb\n", + " 305.253723\n", + " 215.872856\n", + " 134032310\n", + " 1.414044\n", " \n", " \n", " 60\n", - " completeprovenance\n", " PageRank\n", - " datagen-7_9-fb\n", - " 1\n", - " Parquet\n", - " False\n", - " 689544217\n", - " 7\n", - " 1387587\n", - " 35\n", - " 132.752273\n", - " 3.792922\n", - " 657.60MB\n", - " 1216101565\n", - " 0.567012\n", - " 689544217 / 1216101565\n", + " datagen-8_8-zf\n", + " 344.498639\n", + " 245.949348\n", + " 5970693132\n", + " 1.400689\n", " \n", " \n", " 61\n", - " completeprovenance\n", - " BFS\n", - " datagen-7_5-fb\n", - " 1\n", - " CSV\n", - " False\n", - " 236259401\n", - " 7\n", - " 633432\n", - " 29\n", - " 58.527642\n", - " 2.018195\n", - " 225.31MB\n", - " 256529225\n", - " 0.920984\n", - " 236259401 / 256529225\n", + " PageRank\n", + " datagen-8_8-zf\n", + " 342.591057\n", + " 245.949348\n", + " 5970693132\n", + " 1.392933\n", " \n", " \n", " 62\n", - " completeprovenance\n", - " WCC\n", - " datagen-7_9-fb\n", - " 1\n", - " CSV\n", - " False\n", - " 188742920\n", - " 7\n", - " 1387587\n", - " 13\n", - " 84.156374\n", - " 6.473567\n", - " 180.00MB\n", - " 208169138\n", - " 0.906681\n", - " 188742920 / 208169138\n", + " PageRank\n", + " datagen-8_8-zf\n", + " 377.998137\n", + " 245.949348\n", + " 5970693132\n", + " 1.536894\n", " \n", " \n", " 63\n", - " completeprovenance\n", - " BFS\n", - " graph500-22\n", - " 1\n", - " Avro\n", - " False\n", - " 44691531\n", - " 7\n", - " 2396657\n", - " 3\n", - " 36.402101\n", - " 12.134034\n", - " 42.62MB\n", - " 213794112\n", - " 0.209040\n", - " 44691531 / 213794112\n", + " PageRank\n", + " datagen-8_8-zf\n", + " 383.467751\n", + " 245.949348\n", + " 5970693132\n", + " 1.559133\n", " \n", " \n", " 64\n", - " completeprovenance\n", - " WCC\n", - " datagen-7_9-fb\n", - " 1\n", - " JSON-C\n", - " True\n", - " 65163688\n", - " 7\n", - " 1387587\n", - " 13\n", - " 84.266331\n", - " 6.482025\n", - " 62.14MB\n", - " 208169138\n", - " 0.313032\n", - " 65163688 / 208169138\n", + " PageRank\n", + " datagen-8_8-zf\n", + " 399.790071\n", + " 245.949348\n", + " 5970693132\n", + " 1.625498\n", " \n", " \n", " 65\n", - " completeprovenance\n", " PageRank\n", - " cit-Patents\n", - " 1\n", - " JSON\n", - " False\n", - " 3966665712\n", - " 7\n", - " 3774768\n", - " 35\n", - " 156.517652\n", - " 4.471933\n", - " 3.69GB\n", - " 2834235312\n", - " 1.399554\n", - " 3966665712 / 2834235312\n", + " datagen-8_8-zf\n", + " 329.032354\n", + " 245.949348\n", + " 5970693132\n", + " 1.337805\n", " \n", " \n", " 66\n", - " completeprovenance\n", " PageRank\n", - " datagen-7_5-fb\n", - " 1\n", - " CSV-C\n", - " True\n", - " 192423799\n", - " 7\n", - " 633432\n", - " 35\n", - " 96.037768\n", - " 2.743936\n", - " 183.51MB\n", - " 552752499\n", - " 0.348119\n", - " 192423799 / 552752499\n", + " graph500-22\n", + " 83.693546\n", + " 78.376377\n", + " 71264722\n", + " 1.067841\n", " \n", " \n", " 67\n", - " completeprovenance\n", " PageRank\n", - " datagen-7_5-fb\n", - " 1\n", - " Avro\n", - " False\n", - " 316673397\n", - " 7\n", - " 633432\n", - " 35\n", - " 76.722820\n", - " 2.192081\n", - " 302.00MB\n", - " 552752499\n", - " 0.572903\n", - " 316673397 / 552752499\n", + " graph500-22\n", + " 87.673099\n", + " 78.376377\n", + " 71264722\n", + " 1.118616\n", " \n", " \n", " 68\n", - " completeprovenance\n", - " BFS\n", + " PageRank\n", " graph500-22\n", - " 1\n", - " Text-C\n", - " True\n", - " 31505964\n", - " 7\n", - " 2396657\n", - " 3\n", - " 39.143989\n", - " 13.047996\n", - " 30.05MB\n", - " 213794112\n", - " 0.147366\n", - " 31505964 / 213794112\n", + " 81.172676\n", + " 78.376377\n", + " 71264722\n", + " 1.035678\n", " \n", " \n", " 69\n", - " completeprovenance\n", " PageRank\n", - " datagen-7_9-fb\n", - " 1\n", - " CSV\n", - " False\n", - " 1146723471\n", - " 7\n", - " 1387587\n", - " 35\n", - " 128.338321\n", - " 3.666809\n", - " 1.07GB\n", - " 1216101565\n", - " 0.942950\n", - " 1146723471 / 1216101565\n", + " graph500-22\n", + " 79.791864\n", + " 78.376377\n", + " 71264722\n", + " 1.018060\n", " \n", " \n", " 70\n", - " completeprovenance\n", - " SSSP\n", - " datagen-7_5-fb\n", - " 1\n", - " ORC\n", - " False\n", - " 71897099\n", - " 7\n", - " 633432\n", - " 30\n", - " 52.215042\n", - " 1.740501\n", - " 68.57MB\n", - " 254670929\n", - " 0.282314\n", - " 71897099 / 254670929\n", + " PageRank\n", + " graph500-22\n", + " 92.390624\n", + " 78.376377\n", + " 71264722\n", + " 1.178807\n", " \n", " \n", " 71\n", - " completeprovenance\n", - " SSSP\n", - " datagen-7_9-fb\n", - " 1\n", - " Parquet\n", - " False\n", - " 179527558\n", - " 7\n", - " 1387587\n", - " 32\n", - " 119.342097\n", - " 3.729441\n", - " 171.21MB\n", - " 601133226\n", - " 0.298649\n", - " 179527558 / 601133226\n", + " PageRank\n", + " graph500-22\n", + " 84.084160\n", + " 78.376377\n", + " 71264722\n", + " 1.072825\n", " \n", " \n", " 72\n", - " completeprovenance\n", - " WCC\n", + " SSSP\n", " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 94026180\n", - " 7\n", - " 633432\n", - " 13\n", - " 39.382844\n", - " 3.029450\n", - " 89.67MB\n", - " 94026180\n", - " 1.000000\n", - " 94026180 / 94026180\n", + " 33.830519\n", + " 38.116547\n", + " 22202359\n", + " 0.887555\n", " \n", " \n", " 73\n", - " completeprovenance\n", - " WCC\n", + " SSSP\n", " datagen-7_5-fb\n", - " 1\n", - " JSON-C\n", - " True\n", - " 28326435\n", - " 7\n", - " 633432\n", - " 13\n", - " 48.553854\n", - " 3.734912\n", - " 27.01MB\n", - " 94026180\n", - " 0.301261\n", - " 28326435 / 94026180\n", + " 42.004611\n", + " 38.116547\n", + " 22202359\n", + " 1.102005\n", " \n", " \n", " 74\n", - " completeprovenance\n", - " WCC\n", + " SSSP\n", " datagen-7_5-fb\n", - " 1\n", - " Text-C\n", - " True\n", - " 26006632\n", - " 7\n", - " 633432\n", - " 13\n", - " 39.843927\n", - " 3.064917\n", - " 24.80MB\n", - " 94026180\n", - " 0.276589\n", - " 26006632 / 94026180\n", + " 40.612584\n", + " 38.116547\n", + " 22202359\n", + " 1.065484\n", " \n", " \n", " 75\n", - " completeprovenance\n", - " BFS\n", - " datagen-7_9-fb\n", - " 1\n", - " CSV\n", - " False\n", - " 534677441\n", - " 7\n", - " 1387587\n", - " 31\n", - " 71.025003\n", - " 2.291129\n", - " 509.91MB\n", - " 581855399\n", - " 0.918918\n", - " 534677441 / 581855399\n", + " SSSP\n", + " datagen-7_5-fb\n", + " 73.230962\n", + " 38.116547\n", + " 22202359\n", + " 1.921238\n", " \n", " \n", " 76\n", - " completeprovenance\n", - " WCC\n", - " cit-Patents\n", - " 1\n", - " Avro\n", - " False\n", - " 592224379\n", - " 7\n", - " 3774768\n", - " 41\n", - " 190.187893\n", - " 4.638729\n", - " 564.79MB\n", - " 1100333124\n", - " 0.538223\n", - " 592224379 / 1100333124\n", + " SSSP\n", + " datagen-7_5-fb\n", + " 42.327208\n", + " 38.116547\n", + " 22202359\n", + " 1.110468\n", " \n", " \n", " 77\n", - " completeprovenance\n", - " PageRank\n", + " SSSP\n", " datagen-7_5-fb\n", - " 1\n", - " ORC\n", - " False\n", - " 297074263\n", - " 7\n", - " 633432\n", - " 35\n", - " 77.929319\n", - " 2.226552\n", - " 283.31MB\n", - " 552752499\n", - " 0.537445\n", - " 297074263 / 552752499\n", + " 40.983417\n", + " 38.116547\n", + " 22202359\n", + " 1.075213\n", " \n", " \n", " 78\n", - " completeprovenance\n", - " BFS\n", - " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 256529225\n", - " 7\n", - " 633432\n", - " 29\n", - " 41.142354\n", - " 1.418702\n", - " 244.65MB\n", - " 256529225\n", - " 1.000000\n", - " 256529225 / 256529225\n", + " SSSP\n", + " datagen-7_9-fb\n", + " 53.024663\n", + " 76.495710\n", + " 48717778\n", + " 0.693172\n", " \n", " \n", " 79\n", - " completeprovenance\n", - " WCC\n", - " cit-Patents\n", - " 1\n", - " JSON\n", - " False\n", - " 2051574660\n", - " 7\n", - " 3774768\n", - " 41\n", - " 191.091221\n", - " 4.660761\n", - " 1.91GB\n", - " 1100333124\n", - " 1.864503\n", - " 2051574660 / 1100333124\n", + " SSSP\n", + " datagen-7_9-fb\n", + " 55.819785\n", + " 76.495710\n", + " 48717778\n", + " 0.729711\n", " \n", " \n", " 80\n", - " completeprovenance\n", - " PageRank\n", - " cit-Patents\n", - " 1\n", - " CSV\n", - " False\n", - " 2645496912\n", - " 7\n", - " 3774768\n", - " 35\n", - " 162.602287\n", - " 4.645780\n", - " 2.46GB\n", - " 2834235312\n", - " 0.933408\n", - " 2645496912 / 2834235312\n", + " SSSP\n", + " datagen-7_9-fb\n", + " 91.346943\n", + " 76.495710\n", + " 48717778\n", + " 1.194145\n", " \n", " \n", " 81\n", - " completeprovenance\n", - " BFS\n", + " SSSP\n", " datagen-7_9-fb\n", - " 1\n", - " Avro\n", - " False\n", - " 171065610\n", - " 7\n", - " 1387587\n", - " 31\n", - " 93.661136\n", - " 3.021327\n", - " 163.14MB\n", - " 581855399\n", - " 0.294000\n", - " 171065610 / 581855399\n", + " 93.145833\n", + " 76.495710\n", + " 48717778\n", + " 1.217661\n", " \n", " \n", " 82\n", - " completeprovenance\n", - " BFS\n", - " graph500-22\n", - " 1\n", - " Text\n", - " False\n", - " 213794112\n", - " 7\n", - " 2396657\n", - " 3\n", - " 42.711168\n", - " 14.237056\n", - " 203.89MB\n", - " 213794112\n", - " 1.000000\n", - " 213794112 / 213794112\n", + " SSSP\n", + " datagen-7_9-fb\n", + " 86.928526\n", + " 76.495710\n", + " 48717778\n", + " 1.136384\n", " \n", " \n", " 83\n", - " completeprovenance\n", - " WCC\n", - " cit-Patents\n", - " 1\n", - " JSON-C\n", - " True\n", - " 450465794\n", - " 7\n", - " 3774768\n", - " 41\n", - " 218.128612\n", - " 5.320210\n", - " 429.60MB\n", - " 1100333124\n", - " 0.409390\n", - " 450465794 / 1100333124\n", + " SSSP\n", + " datagen-7_9-fb\n", + " 105.834026\n", + " 76.495710\n", + " 48717778\n", + " 1.383529\n", " \n", " \n", " 84\n", - " completeprovenance\n", " SSSP\n", - " datagen-7_5-fb\n", - " 1\n", - " Avro\n", - " False\n", - " 92135619\n", - " 7\n", - " 633432\n", - " 30\n", - " 51.669206\n", - " 1.722307\n", - " 87.87MB\n", - " 254670929\n", - " 0.361783\n", - " 92135619 / 254670929\n", + " datagen-8_4-fb\n", + " 140.479249\n", + " 255.830169\n", + " 134032310\n", + " 0.549111\n", " \n", " \n", " 85\n", - " completeprovenance\n", - " BFS\n", - " datagen-7_5-fb\n", - " 1\n", - " Avro\n", - " False\n", - " 72546300\n", - " 7\n", - " 633432\n", - " 29\n", - " 53.117164\n", - " 1.831626\n", - " 69.19MB\n", - " 256529225\n", - " 0.282799\n", - " 72546300 / 256529225\n", + " SSSP\n", + " datagen-8_4-fb\n", + " 132.204479\n", + " 255.830169\n", + " 134032310\n", + " 0.516767\n", " \n", " \n", " 86\n", - " completeprovenance\n", - " PageRank\n", - " cit-Patents\n", - " 1\n", - " ORC\n", - " False\n", - " 1137685330\n", - " 7\n", - " 3774768\n", - " 35\n", - " 223.422605\n", - " 6.383503\n", - " 1.06GB\n", - " 2834235312\n", - " 0.401408\n", - " 1137685330 / 2834235312\n", + " SSSP\n", + " datagen-8_4-fb\n", + " 132.022222\n", + " 255.830169\n", + " 134032310\n", + " 0.516054\n", " \n", " \n", " 87\n", - " completeprovenance\n", - " PageRank\n", - " datagen-7_5-fb\n", - " 1\n", - " JSON-C\n", - " True\n", - " 205761319\n", - " 7\n", - " 633432\n", - " 35\n", - " 90.446040\n", - " 2.584173\n", - " 196.23MB\n", - " 552752499\n", - " 0.372249\n", - " 205761319 / 552752499\n", + " SSSP\n", + " datagen-8_4-fb\n", + " 178.487897\n", + " 255.830169\n", + " 134032310\n", + " 0.697681\n", " \n", " \n", " 88\n", - " completeprovenance\n", - " BFS\n", - " graph500-22\n", - " 1\n", - " CSV\n", - " False\n", - " 199414170\n", - " 7\n", - " 2396657\n", - " 3\n", - " 41.448111\n", - " 13.816037\n", - " 190.18MB\n", - " 213794112\n", - " 0.932739\n", - " 199414170 / 213794112\n", + " SSSP\n", + " datagen-8_4-fb\n", + " 201.796498\n", + " 255.830169\n", + " 134032310\n", + " 0.788791\n", " \n", " \n", " 89\n", - " completeprovenance\n", " SSSP\n", - " datagen-7_5-fb\n", - " 1\n", - " Parquet\n", - " False\n", - " 76433347\n", - " 7\n", - " 633432\n", - " 30\n", - " 50.267594\n", - " 1.675586\n", - " 72.89MB\n", - " 254670929\n", - " 0.300126\n", - " 76433347 / 254670929\n", + " datagen-8_4-fb\n", + " 266.424223\n", + " 255.830169\n", + " 134032310\n", + " 1.041410\n", " \n", " \n", " 90\n", - " completeprovenance\n", - " WCC\n", - " cit-Patents\n", - " 1\n", - " ORC\n", - " False\n", - " 386872327\n", - " 7\n", - " 3774768\n", - " 41\n", - " 200.915941\n", - " 4.900389\n", - " 368.95MB\n", - " 1100333124\n", - " 0.351596\n", - " 386872327 / 1100333124\n", + " SSSP\n", + " datagen-8_8-zf\n", + " 156.040455\n", + " 209.249324\n", + " 5899340019\n", + " 0.745715\n", " \n", " \n", " 91\n", - " completeprovenance\n", " SSSP\n", - " datagen-7_9-fb\n", - " 1\n", - " CSV-C\n", - " True\n", - " 155018101\n", - " 7\n", - " 1387587\n", - " 32\n", - " 91.421126\n", - " 2.856910\n", - " 147.84MB\n", - " 601133226\n", - " 0.257876\n", - " 155018101 / 601133226\n", + " datagen-8_8-zf\n", + " 167.117359\n", + " 209.249324\n", + " 5899340019\n", + " 0.798652\n", " \n", " \n", " 92\n", - " completeprovenance\n", - " PageRank\n", - " cit-Patents\n", - " 1\n", - " Text-C\n", - " True\n", - " 997108236\n", - " 7\n", - " 3774768\n", - " 35\n", - " 253.336648\n", - " 7.238190\n", - " 950.92MB\n", - " 2834235312\n", - " 0.351809\n", - " 997108236 / 2834235312\n", + " SSSP\n", + " datagen-8_8-zf\n", + " 261.901648\n", + " 209.249324\n", + " 5899340019\n", + " 1.251625\n", " \n", " \n", " 93\n", - " completeprovenance\n", - " WCC\n", - " datagen-7_5-fb\n", - " 1\n", - " Parquet\n", - " False\n", - " 38931680\n", - " 7\n", - " 633432\n", - " 13\n", - " 43.780985\n", - " 3.367768\n", - " 37.13MB\n", - " 94026180\n", - " 0.414051\n", - " 38931680 / 94026180\n", + " SSSP\n", + " datagen-8_8-zf\n", + " 154.459337\n", + " 209.249324\n", + " 5899340019\n", + " 0.738159\n", " \n", " \n", " 94\n", - " completeprovenance\n", - " PageRank\n", - " cit-Patents\n", - " 1\n", - " Parquet\n", - " False\n", - " 1593606785\n", - " 7\n", - " 3774768\n", - " 35\n", - " 173.286136\n", - " 4.951032\n", - " 1.48GB\n", - " 2834235312\n", - " 0.562270\n", - " 1593606785 / 2834235312\n", + " SSSP\n", + " datagen-8_8-zf\n", + " 166.424446\n", + " 209.249324\n", + " 5899340019\n", + " 0.795340\n", " \n", " \n", " 95\n", - " completeprovenance\n", - " BFS\n", - " graph500-22\n", - " 1\n", - " Object\n", - " False\n", - " 370356939\n", - " 7\n", - " 2396657\n", - " 3\n", - " 40.123198\n", - " 13.374399\n", - " 353.20MB\n", - " 213794112\n", - " 1.732307\n", - " 370356939 / 213794112\n", + " SSSP\n", + " datagen-8_8-zf\n", + " 110.658169\n", + " 209.249324\n", + " 5899340019\n", + " 0.528834\n", " \n", " \n", " 96\n", - " completeprovenance\n", - " BFS\n", - " graph500-22\n", - " 1\n", - " JSON-C\n", - " True\n", - " 32247729\n", - " 7\n", - " 2396657\n", - " 3\n", - " 39.219499\n", - " 13.073166\n", - " 30.75MB\n", - " 213794112\n", - " 0.150835\n", - " 32247729 / 213794112\n", + " WCC\n", + " cit-Patents\n", + " 156.393606\n", + " 157.944986\n", + " 37635956\n", + " 0.990178\n", " \n", " \n", " 97\n", - " completeprovenance\n", - " BFS\n", + " WCC\n", " cit-Patents\n", - " 1\n", - " Parquet\n", - " False\n", - " 452688486\n", - " 7\n", - " 3774768\n", - " 43\n", - " 110.955192\n", - " 2.580353\n", - " 431.72MB\n", - " 2525597803\n", - " 0.179240\n", - " 452688486 / 2525597803\n", + " 157.799174\n", + " 157.944986\n", + " 37635956\n", + " 0.999077\n", " \n", " \n", " 98\n", - " completeprovenance\n", - " BFS\n", - " datagen-7_5-fb\n", - " 1\n", - " JSON-C\n", - " True\n", - " 53194680\n", - " 7\n", - " 633432\n", - " 29\n", - " 57.547191\n", - " 1.984386\n", - " 50.73MB\n", - " 256529225\n", - " 0.207363\n", - " 53194680 / 256529225\n", + " WCC\n", + " cit-Patents\n", + " 167.990721\n", + " 157.944986\n", + " 37635956\n", + " 1.063603\n", " \n", " \n", " 99\n", - " completeprovenance\n", - " PageRank\n", - " datagen-7_5-fb\n", - " 1\n", - " CSV\n", - " False\n", - " 521026924\n", - " 7\n", - " 633432\n", - " 35\n", - " 68.511904\n", - " 1.957483\n", - " 496.89MB\n", - " 552752499\n", - " 0.942604\n", - " 521026924 / 552752499\n", + " WCC\n", + " cit-Patents\n", + " 157.309133\n", + " 157.944986\n", + " 37635956\n", + " 0.995974\n", " \n", " \n", " 100\n", - " completeprovenance\n", - " BFS\n", + " WCC\n", " cit-Patents\n", - " 1\n", - " JSON-C\n", - " True\n", - " 411310835\n", - " 7\n", - " 3774768\n", - " 43\n", - " 134.970226\n", - " 3.138842\n", - " 392.26MB\n", - " 2525597803\n", - " 0.162857\n", - " 411310835 / 2525597803\n", + " 164.752674\n", + " 157.944986\n", + " 37635956\n", + " 1.043102\n", " \n", " \n", " 101\n", - " completeprovenance\n", " WCC\n", - " datagen-7_9-fb\n", - " 1\n", - " Avro\n", - " False\n", - " 92261354\n", - " 7\n", - " 1387587\n", - " 13\n", - " 77.486517\n", - " 5.960501\n", - " 87.99MB\n", - " 208169138\n", - " 0.443204\n", - " 92261354 / 208169138\n", + " cit-Patents\n", + " 159.564465\n", + " 157.944986\n", + " 37635956\n", + " 1.010253\n", " \n", " \n", " 102\n", - " completeprovenance\n", - " BFS\n", - " datagen-7_9-fb\n", - " 1\n", - " JSON-C\n", - " True\n", - " 127350354\n", - " 7\n", - " 1387587\n", - " 31\n", - " 132.247397\n", - " 4.266045\n", - " 121.45MB\n", - " 581855399\n", - " 0.218869\n", - " 127350354 / 581855399\n", + " WCC\n", + " datagen-7_5-fb\n", + " 39.674211\n", + " 36.768406\n", + " 9533719\n", + " 1.079030\n", " \n", " \n", " 103\n", - " completeprovenance\n", - " PageRank\n", - " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 1216101565\n", - " 7\n", - " 1387587\n", - " 35\n", - " 115.157119\n", - " 3.290203\n", - " 1.13GB\n", - " 1216101565\n", - " 1.000000\n", - " 1216101565 / 1216101565\n", + " WCC\n", + " datagen-7_5-fb\n", + " 39.594738\n", + " 36.768406\n", + " 9533719\n", + " 1.076868\n", " \n", " \n", " 104\n", - " completeprovenance\n", - " BFS\n", + " WCC\n", " datagen-7_5-fb\n", - " 1\n", - " Parquet\n", - " False\n", - " 61961248\n", - " 7\n", - " 633432\n", - " 29\n", - " 48.867018\n", - " 1.685070\n", - " 59.09MB\n", - " 256529225\n", - " 0.241537\n", - " 61961248 / 256529225\n", + " 42.186305\n", + " 36.768406\n", + " 9533719\n", + " 1.147352\n", " \n", " \n", " 105\n", - " completeprovenance\n", - " BFS\n", - " cit-Patents\n", - " 1\n", - " CSV\n", - " False\n", - " 2351958475\n", - " 7\n", - " 3774768\n", - " 43\n", - " 117.176385\n", - " 2.725032\n", - " 2.19GB\n", - " 2525597803\n", - " 0.931248\n", - " 2351958475 / 2525597803\n", + " WCC\n", + " datagen-7_5-fb\n", + " 37.753565\n", + " 36.768406\n", + " 9533719\n", + " 1.026794\n", " \n", " \n", " 106\n", - " completeprovenance\n", - " BFS\n", - " datagen-7_9-fb\n", - " 1\n", - " Parquet\n", - " False\n", - " 143053677\n", - " 7\n", - " 1387587\n", - " 31\n", - " 105.884096\n", - " 3.415616\n", - " 136.43MB\n", - " 581855399\n", - " 0.245858\n", - " 143053677 / 581855399\n", + " WCC\n", + " datagen-7_5-fb\n", + " 43.528095\n", + " 36.768406\n", + " 9533719\n", + " 1.183845\n", " \n", " \n", " 107\n", - " completeprovenance\n", - " SSSP\n", + " WCC\n", " datagen-7_5-fb\n", - " 1\n", - " Text-C\n", - " True\n", - " 63702151\n", - " 7\n", - " 633432\n", - " 30\n", - " 52.306789\n", - " 1.743560\n", - " 60.75MB\n", - " 254670929\n", - " 0.250135\n", - " 63702151 / 254670929\n", + " 41.038673\n", + " 36.768406\n", + " 9533719\n", + " 1.116140\n", " \n", " \n", " 108\n", - " completeprovenance\n", - " SSSP\n", - " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 254670929\n", - " 7\n", - " 633432\n", - " 30\n", - " 41.157125\n", - " 1.371904\n", - " 242.87MB\n", - " 254670929\n", - " 1.000000\n", - " 254670929 / 254670929\n", + " WCC\n", + " datagen-7_9-fb\n", + " 78.122619\n", + " 66.344004\n", + " 20966038\n", + " 1.177538\n", " \n", " \n", " 109\n", - " completeprovenance\n", - " SSSP\n", + " WCC\n", " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 601133226\n", - " 7\n", - " 1387587\n", - " 32\n", - " 92.144127\n", - " 2.879504\n", - " 573.29MB\n", - " 601133226\n", - " 1.000000\n", - " 601133226 / 601133226\n", + " 80.368009\n", + " 66.344004\n", + " 20966038\n", + " 1.211383\n", " \n", " \n", " 110\n", - " completeprovenance\n", - " PageRank\n", - " cit-Patents\n", - " 1\n", - " JSON-C\n", - " True\n", - " 1056694971\n", - " 7\n", - " 3774768\n", - " 35\n", - " 226.337767\n", - " 6.466793\n", - " 1007.74MB\n", - " 2834235312\n", - " 0.372832\n", - " 1056694971 / 2834235312\n", + " WCC\n", + " datagen-7_9-fb\n", + " 79.974040\n", + " 66.344004\n", + " 20966038\n", + " 1.205445\n", " \n", " \n", " 111\n", - " completeprovenance\n", - " PageRank\n", - " datagen-7_5-fb\n", - " 1\n", - " JSON\n", - " False\n", - " 742730834\n", - " 7\n", - " 633432\n", - " 35\n", - " 70.591457\n", - " 2.016899\n", - " 708.32MB\n", - " 552752499\n", - " 1.343695\n", - " 742730834 / 552752499\n", + " WCC\n", + " datagen-7_9-fb\n", + " 80.176662\n", + " 66.344004\n", + " 20966038\n", + " 1.208499\n", " \n", " \n", " 112\n", - " completeprovenance\n", - " SSSP\n", + " WCC\n", " datagen-7_9-fb\n", - " 1\n", - " Object\n", - " False\n", - " 1383979824\n", - " 7\n", - " 1387587\n", - " 32\n", - " 79.587845\n", - " 2.487120\n", - " 1.29GB\n", - " 601133226\n", - " 2.302285\n", - " 1383979824 / 601133226\n", + " 71.362210\n", + " 66.344004\n", + " 20966038\n", + " 1.075639\n", " \n", " \n", " 113\n", - " completeprovenance\n", " WCC\n", - " datagen-7_5-fb\n", - " 1\n", - " CSV\n", - " False\n", - " 85158132\n", - " 7\n", - " 633432\n", - " 13\n", - " 45.861275\n", - " 3.527790\n", - " 81.21MB\n", - " 94026180\n", - " 0.905685\n", - " 85158132 / 94026180\n", + " datagen-7_9-fb\n", + " 74.583376\n", + " 66.344004\n", + " 20966038\n", + " 1.124192\n", " \n", " \n", " 114\n", - " completeprovenance\n", - " SSSP\n", - " datagen-7_5-fb\n", - " 1\n", - " JSON\n", - " False\n", - " 383891057\n", - " 7\n", - " 633432\n", - " 30\n", - " 46.925169\n", - " 1.564172\n", - " 366.11MB\n", - " 254670929\n", - " 1.507400\n", - " 383891057 / 254670929\n", + " WCC\n", + " datagen-8_4-fb\n", + " 266.394836\n", + " 239.018332\n", + " 57850630\n", + " 1.114537\n", " \n", " \n", " 115\n", - " completeprovenance\n", - " BFS\n", - " datagen-7_5-fb\n", - " 1\n", - " CSV-C\n", - " True\n", - " 48690774\n", - " 7\n", - " 633432\n", - " 29\n", - " 57.120579\n", - " 1.969675\n", - " 46.44MB\n", - " 256529225\n", - " 0.189806\n", - " 48690774 / 256529225\n", + " WCC\n", + " datagen-8_4-fb\n", + " 204.063289\n", + " 239.018332\n", + " 57850630\n", + " 0.853756\n", " \n", " \n", " 116\n", - " completeprovenance\n", - " BFS\n", - " cit-Patents\n", - " 1\n", - " Object\n", - " False\n", - " 4470241541\n", - " 7\n", - " 3774768\n", - " 43\n", - " 119.315761\n", - " 2.774785\n", - " 4.16GB\n", - " 2525597803\n", - " 1.769974\n", - " 4470241541 / 2525597803\n", + " WCC\n", + " datagen-8_4-fb\n", + " 184.613848\n", + " 239.018332\n", + " 57850630\n", + " 0.772384\n", " \n", " \n", " 117\n", - " completeprovenance\n", - " SSSP\n", - " datagen-7_5-fb\n", - " 1\n", - " Object\n", - " False\n", - " 596692316\n", - " 7\n", - " 633432\n", - " 30\n", - " 49.207567\n", - " 1.640252\n", - " 569.05MB\n", - " 254670929\n", - " 2.342993\n", - " 596692316 / 254670929\n", + " WCC\n", + " datagen-8_4-fb\n", + " 190.396415\n", + " 239.018332\n", + " 57850630\n", + " 0.796577\n", " \n", - " \n", - "\n", - "" - ], - "text/plain": [ - " config algorithm dataset run storage_format \\\n", - "0 completeprovenance BFS datagen-7_5-fb 1 ORC \n", - "1 completeprovenance BFS graph500-22 1 Parquet \n", - "2 completeprovenance PageRank datagen-7_9-fb 1 JSON \n", - "3 completeprovenance PageRank datagen-7_9-fb 1 JSON-C \n", - "4 completeprovenance BFS datagen-7_9-fb 1 ORC \n", - "5 completeprovenance BFS datagen-7_9-fb 1 JSON \n", - "6 completeprovenance SSSP datagen-7_9-fb 1 JSON-C \n", - "7 completeprovenance WCC cit-Patents 1 CSV \n", - "8 completeprovenance SSSP datagen-7_5-fb 1 JSON-C \n", - "9 completeprovenance WCC datagen-7_9-fb 1 CSV-C \n", - "10 completeprovenance WCC datagen-7_9-fb 1 Text \n", - "11 completeprovenance SSSP datagen-7_9-fb 1 CSV \n", - "12 completeprovenance PageRank datagen-7_5-fb 1 Parquet \n", - "13 completeprovenance PageRank cit-Patents 1 CSV-C \n", - "14 completeprovenance PageRank datagen-7_5-fb 1 Text \n", - "15 completeprovenance PageRank datagen-7_5-fb 1 Text-C \n", - "16 completeprovenance WCC datagen-7_9-fb 1 Text-C \n", - "17 completeprovenance SSSP datagen-7_9-fb 1 Avro \n", - "18 completeprovenance BFS cit-Patents 1 Avro \n", - "19 completeprovenance SSSP datagen-7_5-fb 1 CSV-C \n", - "20 completeprovenance WCC datagen-7_5-fb 1 ORC \n", - "21 completeprovenance BFS graph500-22 1 ORC \n", - "22 completeprovenance WCC datagen-7_9-fb 1 JSON \n", - "23 completeprovenance SSSP datagen-7_9-fb 1 Text-C \n", - "24 completeprovenance WCC datagen-7_9-fb 1 ORC \n", - "25 completeprovenance WCC cit-Patents 1 Object \n", - "26 completeprovenance SSSP datagen-7_9-fb 1 JSON \n", - "27 completeprovenance WCC datagen-7_9-fb 1 Parquet \n", - "28 completeprovenance BFS datagen-7_9-fb 1 CSV-C \n", - "29 completeprovenance BFS cit-Patents 1 JSON \n", - "30 completeprovenance WCC datagen-7_9-fb 1 Object \n", - "31 completeprovenance WCC cit-Patents 1 Text \n", - "32 completeprovenance WCC cit-Patents 1 Parquet \n", - "33 completeprovenance PageRank datagen-7_5-fb 1 Object \n", - "34 completeprovenance BFS datagen-7_9-fb 1 Object \n", - "35 completeprovenance BFS datagen-7_5-fb 1 Object \n", - "36 completeprovenance PageRank datagen-7_9-fb 1 Avro \n", - "37 completeprovenance PageRank cit-Patents 1 Avro \n", - "38 completeprovenance BFS datagen-7_5-fb 1 Text-C \n", - "39 completeprovenance WCC datagen-7_5-fb 1 CSV-C \n", - "40 completeprovenance BFS cit-Patents 1 Text \n", - "41 completeprovenance BFS datagen-7_9-fb 1 Text \n", - "42 completeprovenance WCC cit-Patents 1 Text-C \n", - "43 completeprovenance BFS datagen-7_9-fb 1 Text-C \n", - "44 completeprovenance SSSP datagen-7_5-fb 1 CSV \n", - "45 completeprovenance WCC cit-Patents 1 CSV-C \n", - "46 completeprovenance PageRank datagen-7_9-fb 1 Text-C \n", - "47 completeprovenance BFS datagen-7_5-fb 1 JSON \n", - "48 completeprovenance PageRank datagen-7_9-fb 1 ORC \n", - "49 completeprovenance WCC datagen-7_5-fb 1 Object \n", - "50 completeprovenance BFS cit-Patents 1 ORC \n", - "51 completeprovenance PageRank datagen-7_9-fb 1 CSV-C \n", - "52 completeprovenance SSSP datagen-7_9-fb 1 ORC \n", - "53 completeprovenance WCC datagen-7_5-fb 1 JSON \n", - "54 completeprovenance WCC datagen-7_5-fb 1 Avro \n", - "55 completeprovenance PageRank cit-Patents 1 Text \n", - "56 completeprovenance PageRank datagen-7_9-fb 1 Object \n", - "57 completeprovenance BFS cit-Patents 1 Text-C \n", - "58 completeprovenance BFS cit-Patents 1 CSV-C \n", - "59 completeprovenance PageRank cit-Patents 1 Object \n", - "60 completeprovenance PageRank datagen-7_9-fb 1 Parquet \n", - "61 completeprovenance BFS datagen-7_5-fb 1 CSV \n", - "62 completeprovenance WCC datagen-7_9-fb 1 CSV \n", - "63 completeprovenance BFS graph500-22 1 Avro \n", - "64 completeprovenance WCC datagen-7_9-fb 1 JSON-C \n", - "65 completeprovenance PageRank cit-Patents 1 JSON \n", - "66 completeprovenance PageRank datagen-7_5-fb 1 CSV-C \n", - "67 completeprovenance PageRank datagen-7_5-fb 1 Avro \n", - "68 completeprovenance BFS graph500-22 1 Text-C \n", - "69 completeprovenance PageRank datagen-7_9-fb 1 CSV \n", - "70 completeprovenance SSSP datagen-7_5-fb 1 ORC \n", - "71 completeprovenance SSSP datagen-7_9-fb 1 Parquet \n", - "72 completeprovenance WCC datagen-7_5-fb 1 Text \n", - "73 completeprovenance WCC datagen-7_5-fb 1 JSON-C \n", - "74 completeprovenance WCC datagen-7_5-fb 1 Text-C \n", - "75 completeprovenance BFS datagen-7_9-fb 1 CSV \n", - "76 completeprovenance WCC cit-Patents 1 Avro \n", - "77 completeprovenance PageRank datagen-7_5-fb 1 ORC \n", - "78 completeprovenance BFS datagen-7_5-fb 1 Text \n", - "79 completeprovenance WCC cit-Patents 1 JSON \n", - "80 completeprovenance PageRank cit-Patents 1 CSV \n", - "81 completeprovenance BFS datagen-7_9-fb 1 Avro \n", - "82 completeprovenance BFS graph500-22 1 Text \n", - "83 completeprovenance WCC cit-Patents 1 JSON-C \n", - "84 completeprovenance SSSP datagen-7_5-fb 1 Avro \n", - "85 completeprovenance BFS datagen-7_5-fb 1 Avro \n", - "86 completeprovenance PageRank cit-Patents 1 ORC \n", - "87 completeprovenance PageRank datagen-7_5-fb 1 JSON-C \n", - "88 completeprovenance BFS graph500-22 1 CSV \n", - "89 completeprovenance SSSP datagen-7_5-fb 1 Parquet \n", - "90 completeprovenance WCC cit-Patents 1 ORC \n", - "91 completeprovenance SSSP datagen-7_9-fb 1 CSV-C \n", - "92 completeprovenance PageRank cit-Patents 1 Text-C \n", - "93 completeprovenance WCC datagen-7_5-fb 1 Parquet \n", - "94 completeprovenance PageRank cit-Patents 1 Parquet \n", - "95 completeprovenance BFS graph500-22 1 Object \n", - "96 completeprovenance BFS graph500-22 1 JSON-C \n", - "97 completeprovenance BFS cit-Patents 1 Parquet \n", - "98 completeprovenance BFS datagen-7_5-fb 1 JSON-C \n", - "99 completeprovenance PageRank datagen-7_5-fb 1 CSV \n", - "100 completeprovenance BFS cit-Patents 1 JSON-C \n", - "101 completeprovenance WCC datagen-7_9-fb 1 Avro \n", - "102 completeprovenance BFS datagen-7_9-fb 1 JSON-C \n", - "103 completeprovenance PageRank datagen-7_9-fb 1 Text \n", - "104 completeprovenance BFS datagen-7_5-fb 1 Parquet \n", - "105 completeprovenance BFS cit-Patents 1 CSV \n", - "106 completeprovenance BFS datagen-7_9-fb 1 Parquet \n", - "107 completeprovenance SSSP datagen-7_5-fb 1 Text-C \n", - "108 completeprovenance SSSP datagen-7_5-fb 1 Text \n", - "109 completeprovenance SSSP datagen-7_9-fb 1 Text \n", - "110 completeprovenance PageRank cit-Patents 1 JSON-C \n", - "111 completeprovenance PageRank datagen-7_5-fb 1 JSON \n", - "112 completeprovenance SSSP datagen-7_9-fb 1 Object \n", - "113 completeprovenance WCC datagen-7_5-fb 1 CSV \n", - "114 completeprovenance SSSP datagen-7_5-fb 1 JSON \n", - "115 completeprovenance BFS datagen-7_5-fb 1 CSV-C \n", - "116 completeprovenance BFS cit-Patents 1 Object \n", - "117 completeprovenance SSSP datagen-7_5-fb 1 Object \n", - "\n", - " compressed total_size nr_executors nr_vertices iterations \\\n", - "0 False 58274920 7 633432 29 \n", - "1 False 36196251 7 2396657 3 \n", - "2 False 1632380079 7 1387587 35 \n", - "3 True 457450553 7 1387587 35 \n", - "4 False 135877889 7 1387587 31 \n", - "5 False 864923147 7 1387587 31 \n", - "6 True 170232558 7 1387587 32 \n", - "7 False 941792868 7 3774768 41 \n", - "8 True 68791112 7 633432 30 \n", - "9 True 57549288 7 1387587 13 \n", - "10 False 208169138 7 1387587 13 \n", - "11 False 551180094 7 1387587 32 \n", - "12 False 314712266 7 633432 35 \n", - "13 True 981249822 7 3774768 35 \n", - "14 False 552752499 7 633432 35 \n", - "15 True 194758917 7 633432 35 \n", - "16 True 59736651 7 1387587 13 \n", - "17 False 226822606 7 1387587 32 \n", - "18 False 548177668 7 3774768 43 \n", - "19 True 62370316 7 633432 30 \n", - "20 False 35932527 7 633432 13 \n", - "21 False 21625818 7 2396657 3 \n", - "22 False 324726446 7 1387587 13 \n", - "23 True 158049578 7 1387587 32 \n", - "24 False 82049979 7 1387587 13 \n", - "25 False 3730315659 7 3774768 41 \n", - "26 False 900852018 7 1387587 32 \n", - "27 False 88141246 7 1387587 13 \n", - "28 True 116209136 7 1387587 31 \n", - "29 False 3567433771 7 3774768 43 \n", - "30 False 469735964 7 1387587 13 \n", - "31 False 1100333124 7 3774768 41 \n", - "32 False 565433425 7 3774768 41 \n", - "33 False 871933914 7 633432 35 \n", - "34 False 1128077456 7 1387587 31 \n", - "35 False 487601995 7 633432 29 \n", - "36 False 701125212 7 1387587 35 \n", - "37 False 1589606305 7 3774768 35 \n", - "38 True 49265960 7 633432 29 \n", - "39 True 25012545 7 633432 13 \n", - "40 False 2525597803 7 3774768 43 \n", - "41 False 581855399 7 1387587 31 \n", - "42 True 410716445 7 3774768 41 \n", - "43 True 117407400 7 1387587 31 \n", - "44 False 233134241 7 633432 30 \n", - "45 True 390512385 7 3774768 41 \n", - "46 True 433388860 7 1387587 35 \n", - "47 False 378148169 7 633432 29 \n", - "48 False 654589137 7 1387587 35 \n", - "49 False 213507029 7 633432 13 \n", - "50 False 272126547 7 3774768 43 \n", - "51 True 428773253 7 1387587 35 \n", - "52 False 169444993 7 1387587 32 \n", - "53 False 147234468 7 633432 13 \n", - "54 False 40440808 7 633432 13 \n", - "55 False 2834235312 7 3774768 35 \n", - "56 False 1909994294 7 1387587 35 \n", - "57 True 398055303 7 3774768 43 \n", - "58 True 385629051 7 3774768 43 \n", - "59 False 5183266070 7 3774768 35 \n", - "60 False 689544217 7 1387587 35 \n", - "61 False 236259401 7 633432 29 \n", - "62 False 188742920 7 1387587 13 \n", - "63 False 44691531 7 2396657 3 \n", - "64 True 65163688 7 1387587 13 \n", - "65 False 3966665712 7 3774768 35 \n", - "66 True 192423799 7 633432 35 \n", - "67 False 316673397 7 633432 35 \n", - "68 True 31505964 7 2396657 3 \n", - "69 False 1146723471 7 1387587 35 \n", - "70 False 71897099 7 633432 30 \n", - "71 False 179527558 7 1387587 32 \n", - "72 False 94026180 7 633432 13 \n", - "73 True 28326435 7 633432 13 \n", - "74 True 26006632 7 633432 13 \n", - "75 False 534677441 7 1387587 31 \n", - "76 False 592224379 7 3774768 41 \n", - "77 False 297074263 7 633432 35 \n", - "78 False 256529225 7 633432 29 \n", - "79 False 2051574660 7 3774768 41 \n", - "80 False 2645496912 7 3774768 35 \n", - "81 False 171065610 7 1387587 31 \n", - "82 False 213794112 7 2396657 3 \n", - "83 True 450465794 7 3774768 41 \n", - "84 False 92135619 7 633432 30 \n", - "85 False 72546300 7 633432 29 \n", - "86 False 1137685330 7 3774768 35 \n", - "87 True 205761319 7 633432 35 \n", - "88 False 199414170 7 2396657 3 \n", - "89 False 76433347 7 633432 30 \n", - "90 False 386872327 7 3774768 41 \n", - "91 True 155018101 7 1387587 32 \n", - "92 True 997108236 7 3774768 35 \n", - "93 False 38931680 7 633432 13 \n", - "94 False 1593606785 7 3774768 35 \n", - "95 False 370356939 7 2396657 3 \n", - "96 True 32247729 7 2396657 3 \n", - "97 False 452688486 7 3774768 43 \n", - "98 True 53194680 7 633432 29 \n", - "99 False 521026924 7 633432 35 \n", - "100 True 411310835 7 3774768 43 \n", - "101 False 92261354 7 1387587 13 \n", - "102 True 127350354 7 1387587 31 \n", - "103 False 1216101565 7 1387587 35 \n", - "104 False 61961248 7 633432 29 \n", - "105 False 2351958475 7 3774768 43 \n", - "106 False 143053677 7 1387587 31 \n", - "107 True 63702151 7 633432 30 \n", - "108 False 254670929 7 633432 30 \n", - "109 False 601133226 7 1387587 32 \n", - "110 True 1056694971 7 3774768 35 \n", - "111 False 742730834 7 633432 35 \n", - "112 False 1383979824 7 1387587 32 \n", - "113 False 85158132 7 633432 13 \n", - "114 False 383891057 7 633432 30 \n", - "115 True 48690774 7 633432 29 \n", - "116 False 4470241541 7 3774768 43 \n", - "117 False 596692316 7 633432 30 \n", - "\n", - " duration per_iter nice_size baseline_total_size overhead \\\n", - "0 50.868484 1.754086 55.58MB 256529225 0.227167 \n", - "1 43.212258 14.404086 34.52MB 213794112 0.169304 \n", - "2 124.243249 3.549807 1.52GB 1216101565 1.342306 \n", - "3 156.334777 4.466708 436.26MB 1216101565 0.376161 \n", - "4 104.052758 3.356541 129.58MB 581855399 0.233525 \n", - "5 67.917724 2.190894 824.85MB 581855399 1.486492 \n", - "6 111.011642 3.469114 162.35MB 601133226 0.283186 \n", - "7 200.797959 4.897511 898.16MB 1100333124 0.855916 \n", - "8 59.969305 1.998977 65.60MB 254670929 0.270118 \n", - "9 84.314303 6.485716 54.88MB 208169138 0.276454 \n", - "10 74.173866 5.705682 198.53MB 208169138 1.000000 \n", - "11 78.072813 2.439775 525.65MB 601133226 0.916902 \n", - "12 70.957423 2.027355 300.13MB 552752499 0.569355 \n", - "13 245.728175 7.020805 935.79MB 2834235312 0.346213 \n", - "14 61.612538 1.760358 527.15MB 552752499 1.000000 \n", - "15 89.176345 2.547896 185.74MB 552752499 0.352344 \n", - "16 84.032622 6.464048 56.97MB 208169138 0.286962 \n", - "17 79.608257 2.487758 216.31MB 601133226 0.377325 \n", - "18 110.712451 2.574708 522.78MB 2525597803 0.217049 \n", - "19 60.177288 2.005910 59.48MB 254670929 0.244906 \n", - "20 42.804464 3.292651 34.27MB 94026180 0.382154 \n", - "21 40.428390 13.476130 20.62MB 213794112 0.101153 \n", - "22 89.652158 6.896320 309.68MB 208169138 1.559916 \n", - "23 137.108613 4.284644 150.73MB 601133226 0.262919 \n", - "24 78.462570 6.035582 78.25MB 208169138 0.394151 \n", - "25 197.924420 4.827425 3.47GB 1100333124 3.390169 \n", - "26 97.887644 3.058989 859.12MB 601133226 1.498590 \n", - "27 84.254096 6.481084 84.06MB 208169138 0.423412 \n", - "28 128.829199 4.155781 110.83MB 581855399 0.199722 \n", - "29 107.638374 2.503218 3.32GB 2525597803 1.412511 \n", - "30 83.425914 6.417378 447.98MB 208169138 2.256511 \n", - "31 190.549338 4.647545 1.02GB 1100333124 1.000000 \n", - "32 191.301333 4.665886 539.24MB 1100333124 0.513875 \n", - "33 62.719922 1.791998 831.54MB 552752499 1.577440 \n", - "34 106.630419 3.439691 1.05GB 581855399 1.938759 \n", - "35 41.675332 1.437080 465.01MB 256529225 1.900766 \n", - "36 142.884479 4.082414 668.65MB 1216101565 0.576535 \n", - "37 160.503187 4.585805 1.48GB 2834235312 0.560859 \n", - "38 57.709867 1.989995 46.98MB 256529225 0.192048 \n", - "39 46.118334 3.547564 23.85MB 94026180 0.266017 \n", - "40 101.973519 2.371477 2.35GB 2525597803 1.000000 \n", - "41 61.450592 1.982277 554.90MB 581855399 1.000000 \n", - "42 244.696276 5.968202 391.69MB 1100333124 0.373266 \n", - "43 90.139759 2.907734 111.97MB 581855399 0.201781 \n", - "44 52.042376 1.734746 222.33MB 254670929 0.915433 \n", - "45 231.818350 5.654106 372.42MB 1100333124 0.354904 \n", - "46 165.560627 4.730304 413.31MB 1216101565 0.356376 \n", - "47 48.643720 1.677370 360.63MB 256529225 1.474094 \n", - "48 137.398404 3.925669 624.26MB 1216101565 0.538268 \n", - "49 47.037633 3.618279 203.62MB 94026180 2.270719 \n", - "50 113.815472 2.646871 259.52MB 2525597803 0.107747 \n", - "51 164.005972 4.685885 408.91MB 1216101565 0.352580 \n", - "52 101.735372 3.179230 161.60MB 601133226 0.281876 \n", - "53 43.227769 3.325213 140.41MB 94026180 1.565888 \n", - "54 44.966324 3.458948 38.57MB 94026180 0.430102 \n", - "55 142.736847 4.078196 2.64GB 2834235312 1.000000 \n", - "56 112.681167 3.219462 1.78GB 1216101565 1.570588 \n", - "57 154.327360 3.589008 379.62MB 2525597803 0.157608 \n", - "58 143.495254 3.337099 367.76MB 2525597803 0.152688 \n", - "59 150.139135 4.289690 4.83GB 2834235312 1.828806 \n", - "60 132.752273 3.792922 657.60MB 1216101565 0.567012 \n", - "61 58.527642 2.018195 225.31MB 256529225 0.920984 \n", - "62 84.156374 6.473567 180.00MB 208169138 0.906681 \n", - "63 36.402101 12.134034 42.62MB 213794112 0.209040 \n", - "64 84.266331 6.482025 62.14MB 208169138 0.313032 \n", - "65 156.517652 4.471933 3.69GB 2834235312 1.399554 \n", - "66 96.037768 2.743936 183.51MB 552752499 0.348119 \n", - "67 76.722820 2.192081 302.00MB 552752499 0.572903 \n", - "68 39.143989 13.047996 30.05MB 213794112 0.147366 \n", - "69 128.338321 3.666809 1.07GB 1216101565 0.942950 \n", - "70 52.215042 1.740501 68.57MB 254670929 0.282314 \n", - "71 119.342097 3.729441 171.21MB 601133226 0.298649 \n", - "72 39.382844 3.029450 89.67MB 94026180 1.000000 \n", - "73 48.553854 3.734912 27.01MB 94026180 0.301261 \n", - "74 39.843927 3.064917 24.80MB 94026180 0.276589 \n", - "75 71.025003 2.291129 509.91MB 581855399 0.918918 \n", - "76 190.187893 4.638729 564.79MB 1100333124 0.538223 \n", - "77 77.929319 2.226552 283.31MB 552752499 0.537445 \n", - "78 41.142354 1.418702 244.65MB 256529225 1.000000 \n", - "79 191.091221 4.660761 1.91GB 1100333124 1.864503 \n", - "80 162.602287 4.645780 2.46GB 2834235312 0.933408 \n", - "81 93.661136 3.021327 163.14MB 581855399 0.294000 \n", - "82 42.711168 14.237056 203.89MB 213794112 1.000000 \n", - "83 218.128612 5.320210 429.60MB 1100333124 0.409390 \n", - "84 51.669206 1.722307 87.87MB 254670929 0.361783 \n", - "85 53.117164 1.831626 69.19MB 256529225 0.282799 \n", - "86 223.422605 6.383503 1.06GB 2834235312 0.401408 \n", - "87 90.446040 2.584173 196.23MB 552752499 0.372249 \n", - "88 41.448111 13.816037 190.18MB 213794112 0.932739 \n", - "89 50.267594 1.675586 72.89MB 254670929 0.300126 \n", - "90 200.915941 4.900389 368.95MB 1100333124 0.351596 \n", - "91 91.421126 2.856910 147.84MB 601133226 0.257876 \n", - "92 253.336648 7.238190 950.92MB 2834235312 0.351809 \n", - "93 43.780985 3.367768 37.13MB 94026180 0.414051 \n", - "94 173.286136 4.951032 1.48GB 2834235312 0.562270 \n", - "95 40.123198 13.374399 353.20MB 213794112 1.732307 \n", - "96 39.219499 13.073166 30.75MB 213794112 0.150835 \n", - "97 110.955192 2.580353 431.72MB 2525597803 0.179240 \n", - "98 57.547191 1.984386 50.73MB 256529225 0.207363 \n", - "99 68.511904 1.957483 496.89MB 552752499 0.942604 \n", - "100 134.970226 3.138842 392.26MB 2525597803 0.162857 \n", - "101 77.486517 5.960501 87.99MB 208169138 0.443204 \n", - "102 132.247397 4.266045 121.45MB 581855399 0.218869 \n", - "103 115.157119 3.290203 1.13GB 1216101565 1.000000 \n", - "104 48.867018 1.685070 59.09MB 256529225 0.241537 \n", - "105 117.176385 2.725032 2.19GB 2525597803 0.931248 \n", - "106 105.884096 3.415616 136.43MB 581855399 0.245858 \n", - "107 52.306789 1.743560 60.75MB 254670929 0.250135 \n", - "108 41.157125 1.371904 242.87MB 254670929 1.000000 \n", - "109 92.144127 2.879504 573.29MB 601133226 1.000000 \n", - "110 226.337767 6.466793 1007.74MB 2834235312 0.372832 \n", - "111 70.591457 2.016899 708.32MB 552752499 1.343695 \n", - "112 79.587845 2.487120 1.29GB 601133226 2.302285 \n", - "113 45.861275 3.527790 81.21MB 94026180 0.905685 \n", - "114 46.925169 1.564172 366.11MB 254670929 1.507400 \n", - "115 57.120579 1.969675 46.44MB 256529225 0.189806 \n", - "116 119.315761 2.774785 4.16GB 2525597803 1.769974 \n", - "117 49.207567 1.640252 569.05MB 254670929 2.342993 \n", - "\n", - " overhead_desc \n", - "0 58274920 / 256529225 \n", - "1 36196251 / 213794112 \n", - "2 1632380079 / 1216101565 \n", - "3 457450553 / 1216101565 \n", - "4 135877889 / 581855399 \n", - "5 864923147 / 581855399 \n", - "6 170232558 / 601133226 \n", - "7 941792868 / 1100333124 \n", - "8 68791112 / 254670929 \n", - "9 57549288 / 208169138 \n", - "10 208169138 / 208169138 \n", - "11 551180094 / 601133226 \n", - "12 314712266 / 552752499 \n", - "13 981249822 / 2834235312 \n", - "14 552752499 / 552752499 \n", - "15 194758917 / 552752499 \n", - "16 59736651 / 208169138 \n", - "17 226822606 / 601133226 \n", - "18 548177668 / 2525597803 \n", - "19 62370316 / 254670929 \n", - "20 35932527 / 94026180 \n", - "21 21625818 / 213794112 \n", - "22 324726446 / 208169138 \n", - "23 158049578 / 601133226 \n", - "24 82049979 / 208169138 \n", - "25 3730315659 / 1100333124 \n", - "26 900852018 / 601133226 \n", - "27 88141246 / 208169138 \n", - "28 116209136 / 581855399 \n", - "29 3567433771 / 2525597803 \n", - "30 469735964 / 208169138 \n", - "31 1100333124 / 1100333124 \n", - "32 565433425 / 1100333124 \n", - "33 871933914 / 552752499 \n", - "34 1128077456 / 581855399 \n", - "35 487601995 / 256529225 \n", - "36 701125212 / 1216101565 \n", - "37 1589606305 / 2834235312 \n", - "38 49265960 / 256529225 \n", - "39 25012545 / 94026180 \n", - "40 2525597803 / 2525597803 \n", - "41 581855399 / 581855399 \n", - "42 410716445 / 1100333124 \n", - "43 117407400 / 581855399 \n", - "44 233134241 / 254670929 \n", - "45 390512385 / 1100333124 \n", - "46 433388860 / 1216101565 \n", - "47 378148169 / 256529225 \n", - "48 654589137 / 1216101565 \n", - "49 213507029 / 94026180 \n", - "50 272126547 / 2525597803 \n", - "51 428773253 / 1216101565 \n", - "52 169444993 / 601133226 \n", - "53 147234468 / 94026180 \n", - "54 40440808 / 94026180 \n", - "55 2834235312 / 2834235312 \n", - "56 1909994294 / 1216101565 \n", - "57 398055303 / 2525597803 \n", - "58 385629051 / 2525597803 \n", - "59 5183266070 / 2834235312 \n", - "60 689544217 / 1216101565 \n", - "61 236259401 / 256529225 \n", - "62 188742920 / 208169138 \n", - "63 44691531 / 213794112 \n", - "64 65163688 / 208169138 \n", - "65 3966665712 / 2834235312 \n", - "66 192423799 / 552752499 \n", - "67 316673397 / 552752499 \n", - "68 31505964 / 213794112 \n", - "69 1146723471 / 1216101565 \n", - "70 71897099 / 254670929 \n", - "71 179527558 / 601133226 \n", - "72 94026180 / 94026180 \n", - "73 28326435 / 94026180 \n", - "74 26006632 / 94026180 \n", - "75 534677441 / 581855399 \n", - "76 592224379 / 1100333124 \n", - "77 297074263 / 552752499 \n", - "78 256529225 / 256529225 \n", - "79 2051574660 / 1100333124 \n", - "80 2645496912 / 2834235312 \n", - "81 171065610 / 581855399 \n", - "82 213794112 / 213794112 \n", - "83 450465794 / 1100333124 \n", - "84 92135619 / 254670929 \n", - "85 72546300 / 256529225 \n", - "86 1137685330 / 2834235312 \n", - "87 205761319 / 552752499 \n", - "88 199414170 / 213794112 \n", - "89 76433347 / 254670929 \n", - "90 386872327 / 1100333124 \n", - "91 155018101 / 601133226 \n", - "92 997108236 / 2834235312 \n", - "93 38931680 / 94026180 \n", - "94 1593606785 / 2834235312 \n", - "95 370356939 / 213794112 \n", - "96 32247729 / 213794112 \n", - "97 452688486 / 2525597803 \n", - "98 53194680 / 256529225 \n", - "99 521026924 / 552752499 \n", - "100 411310835 / 2525597803 \n", - "101 92261354 / 208169138 \n", - "102 127350354 / 581855399 \n", - "103 1216101565 / 1216101565 \n", - "104 61961248 / 256529225 \n", - "105 2351958475 / 2525597803 \n", - "106 143053677 / 581855399 \n", - "107 63702151 / 254670929 \n", - "108 254670929 / 254670929 \n", - "109 601133226 / 601133226 \n", - "110 1056694971 / 2834235312 \n", - "111 742730834 / 552752499 \n", - "112 1383979824 / 601133226 \n", - "113 85158132 / 94026180 \n", - "114 383891057 / 254670929 \n", - "115 48690774 / 256529225 \n", - "116 4470241541 / 2525597803 \n", - "117 596692316 / 254670929 " - ] - }, - "execution_count": 63, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "storage_formats_compare_size = merge_compare(dddd, storage_formats, metric=\"total_size\", on=[\"algorithm\", \"dataset\", \"storage_format\"])\n", - "storage_formats_compare_size" - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "id": "a5bbc033-22d4-4576-90f1-df5c8e95b2fd", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "warning: some rows have size equal to 0\n", - "warning: some rows have size equal to 0\n", - "warning: some rows have size equal to 0\n", - "warning: some rows have size equal to 0\n" - ] - }, - { - "data": { + " \n", + " 118\n", + " WCC\n", + " datagen-8_4-fb\n", + " 193.196303\n", + " 239.018332\n", + " 57850630\n", + " 0.808291\n", + " \n", + " \n", + " 119\n", + " WCC\n", + " datagen-8_4-fb\n", + " 233.303744\n", + " 239.018332\n", + " 57850630\n", + " 0.976091\n", + " \n", + " \n", + " 120\n", + " WCC\n", + " graph500-22\n", + " 85.568282\n", + " 72.045441\n", + " 23339653\n", + " 1.187699\n", + " \n", + " \n", + " 121\n", + " WCC\n", + " graph500-22\n", + " 73.485283\n", + " 72.045441\n", + " 23339653\n", + " 1.019985\n", + " \n", + " \n", + " 122\n", + " WCC\n", + " graph500-22\n", + " 73.309156\n", + " 72.045441\n", + " 23339653\n", + " 1.017541\n", + " \n", + " \n", + " 123\n", + " WCC\n", + " graph500-22\n", + " 72.533035\n", + " 72.045441\n", + " 23339653\n", + " 1.006768\n", + " \n", + " \n", + " 124\n", + " WCC\n", + " graph500-22\n", + " 70.956164\n", + " 72.045441\n", + " 23339653\n", + " 0.984881\n", + " \n", + " \n", + " 125\n", + " WCC\n", + " graph500-22\n", + " 57.961798\n", + " 72.045441\n", + " 23339653\n", + " 0.804517\n", + " \n", + " \n", + "\n", + "" + ], "text/plain": [ - "
    " + " algorithm dataset duration_tracing duration_baseline \\\n", + "0 BFS cit-Patents 93.084850 82.968899 \n", + "1 BFS cit-Patents 67.314091 82.968899 \n", + "2 BFS cit-Patents 71.610397 82.968899 \n", + "3 BFS cit-Patents 67.837661 82.968899 \n", + "4 BFS cit-Patents 68.945276 82.968899 \n", + "5 BFS cit-Patents 67.387534 82.968899 \n", + "6 BFS datagen-7_5-fb 43.980179 34.323108 \n", + "7 BFS datagen-7_5-fb 36.284404 34.323108 \n", + "8 BFS datagen-7_5-fb 64.881096 34.323108 \n", + "9 BFS datagen-7_5-fb 54.294595 34.323108 \n", + "10 BFS datagen-7_5-fb 44.974715 34.323108 \n", + "11 BFS datagen-7_5-fb 38.059178 34.323108 \n", + "12 BFS datagen-7_9-fb 92.522082 69.310011 \n", + "13 BFS datagen-7_9-fb 92.841696 69.310011 \n", + "14 BFS datagen-7_9-fb 49.542095 69.310011 \n", + "15 BFS datagen-7_9-fb 49.260653 69.310011 \n", + "16 BFS datagen-7_9-fb 106.835998 69.310011 \n", + "17 BFS datagen-7_9-fb 49.918105 69.310011 \n", + "18 BFS datagen-8_4-fb 122.328693 241.785784 \n", + "19 BFS datagen-8_4-fb 135.828256 241.785784 \n", + "20 BFS datagen-8_4-fb 166.663174 241.785784 \n", + "21 BFS datagen-8_4-fb 294.735668 241.785784 \n", + "22 BFS datagen-8_4-fb 256.270809 241.785784 \n", + "23 BFS datagen-8_4-fb 159.079243 241.785784 \n", + "24 BFS datagen-8_8-zf 251.499355 218.721579 \n", + "25 BFS datagen-8_8-zf 184.106404 218.721579 \n", + "26 BFS datagen-8_8-zf 113.863163 218.721579 \n", + "27 BFS datagen-8_8-zf 162.422808 218.721579 \n", + "28 BFS datagen-8_8-zf 163.827960 218.721579 \n", + "29 BFS datagen-8_8-zf 176.195555 218.721579 \n", + "30 BFS graph500-22 32.891801 32.865590 \n", + "31 BFS graph500-22 27.685897 32.865590 \n", + "32 BFS graph500-22 31.698134 32.865590 \n", + "33 BFS graph500-22 31.125634 32.865590 \n", + "34 BFS graph500-22 29.795986 32.865590 \n", + "35 BFS graph500-22 33.591308 32.865590 \n", + "36 PageRank cit-Patents 93.403024 85.102944 \n", + "37 PageRank cit-Patents 88.882940 85.102944 \n", + "38 PageRank cit-Patents 95.720769 85.102944 \n", + "39 PageRank cit-Patents 88.476289 85.102944 \n", + "40 PageRank cit-Patents 85.079759 85.102944 \n", + "41 PageRank cit-Patents 94.110266 85.102944 \n", + "42 PageRank datagen-7_5-fb 43.499283 39.980476 \n", + "43 PageRank datagen-7_5-fb 44.942538 39.980476 \n", + "44 PageRank datagen-7_5-fb 43.636246 39.980476 \n", + "45 PageRank datagen-7_5-fb 43.053957 39.980476 \n", + "46 PageRank datagen-7_5-fb 44.168387 39.980476 \n", + "47 PageRank datagen-7_5-fb 46.670204 39.980476 \n", + "48 PageRank datagen-7_9-fb 93.591943 69.879073 \n", + "49 PageRank datagen-7_9-fb 84.399424 69.879073 \n", + "50 PageRank datagen-7_9-fb 94.553000 69.879073 \n", + "51 PageRank datagen-7_9-fb 88.541162 69.879073 \n", + "52 PageRank datagen-7_9-fb 88.862292 69.879073 \n", + "53 PageRank datagen-7_9-fb 86.030262 69.879073 \n", + "54 PageRank datagen-8_4-fb 349.992612 215.872856 \n", + "55 PageRank datagen-8_4-fb 303.765090 215.872856 \n", + "56 PageRank datagen-8_4-fb 298.210876 215.872856 \n", + "57 PageRank datagen-8_4-fb 326.330437 215.872856 \n", + "58 PageRank datagen-8_4-fb 295.668522 215.872856 \n", + "59 PageRank datagen-8_4-fb 305.253723 215.872856 \n", + "60 PageRank datagen-8_8-zf 344.498639 245.949348 \n", + "61 PageRank datagen-8_8-zf 342.591057 245.949348 \n", + "62 PageRank datagen-8_8-zf 377.998137 245.949348 \n", + "63 PageRank datagen-8_8-zf 383.467751 245.949348 \n", + "64 PageRank datagen-8_8-zf 399.790071 245.949348 \n", + "65 PageRank datagen-8_8-zf 329.032354 245.949348 \n", + "66 PageRank graph500-22 83.693546 78.376377 \n", + "67 PageRank graph500-22 87.673099 78.376377 \n", + "68 PageRank graph500-22 81.172676 78.376377 \n", + "69 PageRank graph500-22 79.791864 78.376377 \n", + "70 PageRank graph500-22 92.390624 78.376377 \n", + "71 PageRank graph500-22 84.084160 78.376377 \n", + "72 SSSP datagen-7_5-fb 33.830519 38.116547 \n", + "73 SSSP datagen-7_5-fb 42.004611 38.116547 \n", + "74 SSSP datagen-7_5-fb 40.612584 38.116547 \n", + "75 SSSP datagen-7_5-fb 73.230962 38.116547 \n", + "76 SSSP datagen-7_5-fb 42.327208 38.116547 \n", + "77 SSSP datagen-7_5-fb 40.983417 38.116547 \n", + "78 SSSP datagen-7_9-fb 53.024663 76.495710 \n", + "79 SSSP datagen-7_9-fb 55.819785 76.495710 \n", + "80 SSSP datagen-7_9-fb 91.346943 76.495710 \n", + "81 SSSP datagen-7_9-fb 93.145833 76.495710 \n", + "82 SSSP datagen-7_9-fb 86.928526 76.495710 \n", + "83 SSSP datagen-7_9-fb 105.834026 76.495710 \n", + "84 SSSP datagen-8_4-fb 140.479249 255.830169 \n", + "85 SSSP datagen-8_4-fb 132.204479 255.830169 \n", + "86 SSSP datagen-8_4-fb 132.022222 255.830169 \n", + "87 SSSP datagen-8_4-fb 178.487897 255.830169 \n", + "88 SSSP datagen-8_4-fb 201.796498 255.830169 \n", + "89 SSSP datagen-8_4-fb 266.424223 255.830169 \n", + "90 SSSP datagen-8_8-zf 156.040455 209.249324 \n", + "91 SSSP datagen-8_8-zf 167.117359 209.249324 \n", + "92 SSSP datagen-8_8-zf 261.901648 209.249324 \n", + "93 SSSP datagen-8_8-zf 154.459337 209.249324 \n", + "94 SSSP datagen-8_8-zf 166.424446 209.249324 \n", + "95 SSSP datagen-8_8-zf 110.658169 209.249324 \n", + "96 WCC cit-Patents 156.393606 157.944986 \n", + "97 WCC cit-Patents 157.799174 157.944986 \n", + "98 WCC cit-Patents 167.990721 157.944986 \n", + "99 WCC cit-Patents 157.309133 157.944986 \n", + "100 WCC cit-Patents 164.752674 157.944986 \n", + "101 WCC cit-Patents 159.564465 157.944986 \n", + "102 WCC datagen-7_5-fb 39.674211 36.768406 \n", + "103 WCC datagen-7_5-fb 39.594738 36.768406 \n", + "104 WCC datagen-7_5-fb 42.186305 36.768406 \n", + "105 WCC datagen-7_5-fb 37.753565 36.768406 \n", + "106 WCC datagen-7_5-fb 43.528095 36.768406 \n", + "107 WCC datagen-7_5-fb 41.038673 36.768406 \n", + "108 WCC datagen-7_9-fb 78.122619 66.344004 \n", + "109 WCC datagen-7_9-fb 80.368009 66.344004 \n", + "110 WCC datagen-7_9-fb 79.974040 66.344004 \n", + "111 WCC datagen-7_9-fb 80.176662 66.344004 \n", + "112 WCC datagen-7_9-fb 71.362210 66.344004 \n", + "113 WCC datagen-7_9-fb 74.583376 66.344004 \n", + "114 WCC datagen-8_4-fb 266.394836 239.018332 \n", + "115 WCC datagen-8_4-fb 204.063289 239.018332 \n", + "116 WCC datagen-8_4-fb 184.613848 239.018332 \n", + "117 WCC datagen-8_4-fb 190.396415 239.018332 \n", + "118 WCC datagen-8_4-fb 193.196303 239.018332 \n", + "119 WCC datagen-8_4-fb 233.303744 239.018332 \n", + "120 WCC graph500-22 85.568282 72.045441 \n", + "121 WCC graph500-22 73.485283 72.045441 \n", + "122 WCC graph500-22 73.309156 72.045441 \n", + "123 WCC graph500-22 72.533035 72.045441 \n", + "124 WCC graph500-22 70.956164 72.045441 \n", + "125 WCC graph500-22 57.961798 72.045441 \n", + "\n", + " size overhead \n", + "0 100187504 1.121925 \n", + "1 100187504 0.811317 \n", + "2 100187504 0.863099 \n", + "3 100187504 0.817628 \n", + "4 100187504 0.830977 \n", + "5 100187504 0.812202 \n", + "6 9533719 1.281358 \n", + "7 9533719 1.057142 \n", + "8 9533719 1.890304 \n", + "9 9533719 1.581867 \n", + "10 9533719 1.310333 \n", + "11 9533719 1.108850 \n", + "12 20966038 1.334902 \n", + "13 20966038 1.339513 \n", + "14 20966038 0.714790 \n", + "15 20966038 0.710729 \n", + "16 20966038 1.541422 \n", + "17 20966038 0.720215 \n", + "18 57850630 0.505938 \n", + "19 57850630 0.561771 \n", + "20 57850630 0.689301 \n", + "21 57850630 1.218995 \n", + "22 57850630 1.059909 \n", + "23 57850630 0.657935 \n", + "24 2703435298 1.149861 \n", + "25 2703435298 0.841739 \n", + "26 2703435298 0.520585 \n", + "27 2703435298 0.742601 \n", + "28 2703435298 0.749025 \n", + "29 2703435298 0.805570 \n", + "30 23357988 1.000798 \n", + "31 23357988 0.842398 \n", + "32 23357988 0.964478 \n", + "33 23357988 0.947058 \n", + "34 23357988 0.906601 \n", + "35 23357988 1.022081 \n", + "36 113070194 1.097530 \n", + "37 113070194 1.044417 \n", + "38 113070194 1.124764 \n", + "39 113070194 1.039638 \n", + "40 113070194 0.999728 \n", + "41 113070194 1.105840 \n", + "42 22202359 1.088013 \n", + "43 22202359 1.124112 \n", + "44 22202359 1.091439 \n", + "45 22202359 1.076875 \n", + "46 22202359 1.104749 \n", + "47 22202359 1.167325 \n", + "48 48717778 1.339342 \n", + "49 48717778 1.207793 \n", + "50 48717778 1.353095 \n", + "51 48717778 1.267063 \n", + "52 48717778 1.271658 \n", + "53 48717778 1.231131 \n", + "54 134032310 1.621291 \n", + "55 134032310 1.407148 \n", + "56 134032310 1.381419 \n", + "57 134032310 1.511679 \n", + "58 134032310 1.369642 \n", + "59 134032310 1.414044 \n", + "60 5970693132 1.400689 \n", + "61 5970693132 1.392933 \n", + "62 5970693132 1.536894 \n", + "63 5970693132 1.559133 \n", + "64 5970693132 1.625498 \n", + "65 5970693132 1.337805 \n", + "66 71264722 1.067841 \n", + "67 71264722 1.118616 \n", + "68 71264722 1.035678 \n", + "69 71264722 1.018060 \n", + "70 71264722 1.178807 \n", + "71 71264722 1.072825 \n", + "72 22202359 0.887555 \n", + "73 22202359 1.102005 \n", + "74 22202359 1.065484 \n", + "75 22202359 1.921238 \n", + "76 22202359 1.110468 \n", + "77 22202359 1.075213 \n", + "78 48717778 0.693172 \n", + "79 48717778 0.729711 \n", + "80 48717778 1.194145 \n", + "81 48717778 1.217661 \n", + "82 48717778 1.136384 \n", + "83 48717778 1.383529 \n", + "84 134032310 0.549111 \n", + "85 134032310 0.516767 \n", + "86 134032310 0.516054 \n", + "87 134032310 0.697681 \n", + "88 134032310 0.788791 \n", + "89 134032310 1.041410 \n", + "90 5899340019 0.745715 \n", + "91 5899340019 0.798652 \n", + "92 5899340019 1.251625 \n", + "93 5899340019 0.738159 \n", + "94 5899340019 0.795340 \n", + "95 5899340019 0.528834 \n", + "96 37635956 0.990178 \n", + "97 37635956 0.999077 \n", + "98 37635956 1.063603 \n", + "99 37635956 0.995974 \n", + "100 37635956 1.043102 \n", + "101 37635956 1.010253 \n", + "102 9533719 1.079030 \n", + "103 9533719 1.076868 \n", + "104 9533719 1.147352 \n", + "105 9533719 1.026794 \n", + "106 9533719 1.183845 \n", + "107 9533719 1.116140 \n", + "108 20966038 1.177538 \n", + "109 20966038 1.211383 \n", + "110 20966038 1.205445 \n", + "111 20966038 1.208499 \n", + "112 20966038 1.075639 \n", + "113 20966038 1.124192 \n", + "114 57850630 1.114537 \n", + "115 57850630 0.853756 \n", + "116 57850630 0.772384 \n", + "117 57850630 0.796577 \n", + "118 57850630 0.808291 \n", + "119 57850630 0.976091 \n", + "120 23339653 1.187699 \n", + "121 23339653 1.019985 \n", + "122 23339653 1.017541 \n", + "123 23339653 1.006768 \n", + "124 23339653 0.984881 \n", + "125 23339653 0.804517 " ] }, + "execution_count": 26, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], "source": [ - "gray = (178/255, 190/255, 181/255)\n", - "sizes_plot(\n", - " storage_formats_compare_size,\n", - " #palette={\"PageRank\": gray, \"WCC\": gray, \"SSSP\": gray, \"BFS\": gray},\n", - " #legend=False\n", - ")" + "tracing_comb = pd.merge(tracing_durations, baseline_stats_copy, on=[\"algorithm\", \"dataset\"], suffixes=('_tracing', '_baseline'))\n", + "tracing_comb[\"overhead\"] = tracing_comb[\"duration_tracing\"] / tracing_comb[\"duration_baseline\"]\n", + "tracing_comb#.groupby([\"algorithm\", \"dataset\"]).agg([\"mean\",\"std\"])" ] }, { "cell_type": "code", - "execution_count": 65, - "id": "acb72efb-c664-4f30-85ad-47f9a7e60713", + "execution_count": 27, + "id": "7af67472", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "1.0585902665988494" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "baseline = parse_experiment_output(root_dir / \"data\" / \"das6\" / \"baseline-scaling\")\n", - "#baseline" + "tracing_comb[\"overhead\"].mean()" ] }, { "cell_type": "code", - "execution_count": 22, - "id": "48a0c84c-39f2-4193-a65c-0152a96fb471", + "execution_count": 28, + "id": "5c9e41a3", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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8OHDdfToUT3++ONas2aNNmzYoOXLl2vbtm3q1q2bbt68qcDAQF29ejXL7y85OVmrV6/Wp59+Kklq2rSp6tevb9l/69Ytvf3220pMTFSPHj20fft2rVq1SqtXr9a2bdv00ksvSZJ+/vnndKdB//nnnzpw4ICmTJminTt3avny5QoJCVGTJk0kSV988YVlJkRGli5dqgkTJshoNOqjjz4iQAQAIBcxEhEooHr37m1zf//+/TVixIgM97dr187m+UOHDk2z+mOtWrW0ZMkSjR8/Xnv27JEkxcTEaPPmzdq8ebMkqWTJknruuec0aNAgubu7Z+KdAACQc+Lj43X69Gn99NNPCg4OliS98sorKlWqlJKSkhQaGiqDwaCxY8eqSpUqVue2aNFCTz31lJYtW6bw8HDL9lOnTunnn3+WwWBQUFCQfH19Lft8fHz07bff6qmnnlJ8fLzV9davX699+/apTJky+u677+Th4WHZV6RIEU2ePFknT57UgQMHNGfOHI0aNSrN+1m2bJm2b99utc1sNuvu3bu6cOGCYmNjJUmNGzfW1KlTrY4LCwtTUlKSSpcurXfffdfqUSUeHh4aM2aMFi1apKSkJIWHh1uer/xXw4cPV6dOnazqHjVqlLp27aqbN2/qzJkz6Z4nScHBwRo3bpycnJz073//W88880y6xwEAgJxBiAgUUNWrV5enp6fltclk0t27d3Xu3DklJiZqzpw5iouL09tvv51murEk1alTR66urhle38vLK93tDz/8sBYsWKCjR49q3bp12rZtmw4fPqykpCRJUnR0tGbMmKE1a9boxx9/tJr6BQBATvqnf2CTpOeee06vvfaapHsjEtevX6+EhIR074lms9kS9P01EPzjjz8kSY8//rhVgJjK29tb7du3188//2y1fd26dZKk9u3bWwWIqQwGg5599lkdOHBAGzduTDdEvHz5si5fvpzueytbtqyeeeYZPfHEE2revHma/e3atdO+ffsUHx9vFSCmSkhIULFixXT16lXFxcWl20abNm3SbPPx8bH8fPv27XTPW716tcaOHSuTyaTPP/9cTz75ZLrHAQCAnEOICBRQ7777rho1apRme2JiolasWKEPPvhA8+bNU0pKit577700x3355ZeqUKHCfbdfs2ZN1axZU8OGDVNcXJz27t2rrVu3auXKlYqOjlZERIRee+01/fTTT/fdBgAAWfH3f2AzGAwqVKiQihUrJl9fX7Vv314PP/xwmvMKFSqka9eu6cCBAzp79qwuXLig06dP6+jRo7p165YkWT2uI3Wqb40aNTKspU6dOmlCxNTRjBs3btSxY8fSPS81hDt79qzMZrPVIimS9UwBs9msq1evav78+Zo1a5auX7+uEiVKqFmzZhnWJUlubm46duyYjh07pvPnzysiIkInT57UiRMnLP8omN6CLJLSXWDGzc3N8nNKSkqa/devX9dbb71l+Qyjo6Nt1gcAAHIGISIAK66urnr++ed19epVff3111q8eLEGDhyY4chCe3B3d1ezZs3UrFkzvfbaa3r77bf1yy+/aP/+/Tpy5Ihq166dY20DAJAqo39gs+Xq1at67733tGHDBqug0N3dXX5+fkpJSbE8wiPVjRs3JCnd0YSp/hpmpoqJiZFkezRhqpSUFN29ezfd66QyGAwqU6aMRo4cqcqVK2vs2LGaMWOG7ty5o/Hjx6d7zubNmzV58mSrRWYkqUyZMnryyScVEhJiCU7T4+LiYrPu9MLHpKQkubi4qG3btvrjjz80ZcoUtWzZUhUrVrR5LQAAYF+EiADS1a5dO3399ddKSUnRn3/+me0Qcfz48dq5c6e6dOmiwYMHZ3icm5ubJk6cqLVr1yopKUlnzpwhRAQAPJASEhL08ssv69SpUypWrJh69OihOnXqyMfHR5UqVZKTk5M+//zzNCFi6jN/U0PB9Ny9ezfNttTzxo0bpxdffNGO70Tq2rWr9u7dqyVLlmj+/PmqXbu2unXrZnXMzp07NWjQIJlMJtWrV0+dOnVS9erV5ePjo5IlS0q69xxIe3NxcVFQUJCaNWumbt266dixY3rnnXf0ww8/pBlpCQAAcg6rMwNI11875RlNScqKhIQEnTt3zvI8J1s8PT1VuHBhSVKJEiWy3TYAADlh3bp1OnXqlJydnfXTTz9pxIgRat++vapWrWp5nvCVK1fSnFe9enVJ0vHjxzO8dnrTlatWrSpJ6a58nOry5cvav3+/IiMjs/ReJGns2LHy9vaWdG/16IsXL1rtnzVrlkwmkxo3bqwFCxboxRdflL+/vyVATExMtIyytKcSJUqoVatWcnZ21uTJk+Xk5KRdu3ZpwYIFdm8LAABkjBARQLpSV0s2GAyqU6dOtq/37LPPSpIOHz6s5cuX2zx269atunnzpooVK6ZHH300220DAJATLly4IEkqXLhwmpWZJenatWvatGmTJOtn/XXo0EGStG/fPp06dSrNedHR0ZbFV/4qdVGSNWvWZPhcwLffflvPP/+83njjjSy9F+ne+5g0aZIkKTY2VhMmTLDan/p+a9Soke6ia8HBwZZnIiYnJ2e5/cyoU6eOXnnlFUnSlClTdP78+RxpBwAApEWICMCK2WzW2rVrNWPGDEnSE088YZcVkps1a6YnnnhC0r1nTk2ePNnyl5FUCQkJWrZsmUaMGCFJGjFihGVEIgAAD5pq1apJkm7duqUffvjBauT+/v371adPH928eVOSrFYrrlWrltq3by+TyaShQ4fq5MmTln2XLl3SkCFD0p3q/NRTT6l69eq6ffu2+vbtazUiMSYmRu+99562b98ug8GgAQMG3Nd7atq0qTp37ixJ2rJli1auXJnm/f7yyy9W4WdCQoLmzZtnCSAl69Wo7W348OGqVKmSYmNj9c4779hlxgQAAPhnPBMRKKAmTZqU5mHrycnJunjxomV0Q+3atdNdmfl+TZkyRR4eHgoODtbcuXM1d+5clS9fXiVLllRCQoLOnj2rxMREubi46I033lCPHj3s1jYAAPbWtm1b1a9fX/v27dOHH36oWbNmqWzZsrp69aoiIyNlMBjUtGlTbd++XVFRUVarJX/wwQc6d+6cTpw4oWeeeUYPP/ywnJycdOLECTk7O8vX11fHjx+3GvHn4uKib775Rv369dPRo0f1zDPPqGrVqnJ3d9fZs2cVGxsr6d605JYtW973+xozZoxCQkJ048YNffTRR2rRooVKlCihwMBAbd++XVevXlWnTp1UpUoVubq66ty5c4qNjVWJEiVUtWpVHTt2LN1p3Pbi5uamDz74QC+//LJlWnOvXr1yrD0AAHAPIxGBAio8PFx79+61+t/x48fl6uqqNm3a6KOPPtLixYtVvHhxu7Xp6uqqjz/+WEuWLNGrr76q2rVrKzEx0fKXjapVq6pv375atWrVfY+gAAAgtzg5OemHH37Qm2++qZo1ayouLk7h4eFydnbWU089pfnz5+ubb75RoUKFdPPmTe3du9dybokSJbR48WIFBgaqWrVqioiI0KVLl9SmTRstXrxY9erVk/S/xVRSVaxYUStWrNDo0aP16KOP6urVqwoPD1fhwoX1xBNPaN68eXr5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XVdXV23dulXr1q1L970mJiZqzZo1kqSWLVvard30/ruJiYnR1q1bJSlTK0FnFSEiAAAAAABALuvbt68k6f3339eZM2cs2y9fvqz33nvP6tjixYtLkk6dOmV1rCStWbNG06dPl3QvsPqr1MVJbt++neZaN27cUFhYmNXxO3bs0OTJky2vExISJEl169ZVgwYNdPnyZU2cONEqSAwLC7O0/1dPPfWUvLy8tGnTJn3xxRdW50RFRentt99WRESEypQpkyNTb/8u9XmE9lxQJVXqitafffaZ1arI8fHxevvtt3Xu3Dn5+/tnuMjM/Zg3b542b95seR0XF6fRo0frzp07at++vapUqWK3tlIxnRkAAAAAACCXBQQEKCwsTEuWLNGzzz6rxo0by8nJSTt37lTp0qVVqlQpXbt2TdK9UX1+fn46dOiQOnfurIYNG8rd3V3Hjx9XRESEvL29dePGDcXGxurmzZsqVqyYJFkW+5g2bZr27Nmjzp07q3379urYsaPWrl2r3r17q0GDBipWrJjOnDmj8PBwFS9eXKVLl9bVq1d17do1lS1bVpL00UcfqWfPnlq8eLG2bNmiunXr6vr169qzZ48qVaqks2fPWj3bsFChQvrqq6/Uv39/TZ8+XcuWLVOtWrWUnJys0NBQJSQk6NFHH9Xo0aNz5fNOneb719WT7eWVV17Rvn37tG7dOnXr1k3169dX8eLFtXfvXl27dk3VqlXT1KlT7dpmnTp1NHDgQNWrV09lypTR3r17dfXqVT3yyCP64IMP7NpWKkJEAAAAAACQq7zLFHV0CVmSU/VOmjRJDRs21IIFCxQWFiZXV1e1a9dOo0eP1osvvmg5zsnJSXPmzNHMmTO1du1ahYaGysnJSRUrVtTQoUPVp08fjR49WuvXr9fatWstzyB85ZVXdObMGW3atEkhISGqVq2a2rdvr88++0w//PCDVq1apUOHDslkMql8+fLq06eP+vbtq5kzZ2ru3Llau3atateuLUmqVKmSli1bpqCgIG3atEkbNmxQmTJlNGTIEDVt2lQ9e/aUp6en1furW7euVq1apdmzZ2vz5s3avn27PDw8VL16dcuzElNHS+akxMRE3blzR1LGKz9nh7Ozs6ZNm6alS5dq6dKlOnLkiFJSUlSxYkX16NFDr776qjw8POza5oQJE7R582YtWbJEhw8fVtmyZTVw4EANGDAgzfdgLwZzVtb/fsClDk09sGmloi6d/4ejgYKpTPmKenHYu44uI9tiY2N19OhR1axZ0+6/jPFg4jvP27hHA0Del1E/kns0sspkMstozNzquw+SvFq3Pdy5c0cXL16Ut7e3ihQpkmb/r7/+qhEjRuiZZ57RZ5995oAKkRt4JiIAAAAAAMg1eTWIy6t128ONGzfUuXNndezYUZGRkVb7IiMjNW3aNElKd9EX5B9MZwYAAAAAAECGKlWqpKefflq//PKL2rdvr8cee0zFixfX9evXtW/fPiUmJqp79+564oknHF3qfbt+/bo+/PDDLJ83ePBg+fj45EBFDx5CRAAAAAAAANj06aefqmXLllqxYoVOnz6tGzduqFixYmrUqJG6d++e50chxsbGavXq1Vk+77nnniNEBHDPkXNXdS7yliqXLarale2/ihPu36pVqzRmzBgFBAQoMDDQ0eUAAADkmoLSRw0KClJwcDD9PeAB4OTkpICAAAUEBDi6lBxRoUIFHT9+3NFlPNB4JiJgQ0qKSWcjb8ks6VzkLaWkmBxdEv4rPj5e27Ztk8lkUnBwsOLj4x1dEgAAQK4oKH3U+Ph4BQcH098DgAcEISJgg+kvi5eb//YajpWcnKzUxeVNJpOSk5MdXBEAAEDuKCh91OTkZJlM9wJS+nsA4HiEiAAAAAAAAABsIkQEAAAAAAAAYBMhIgAAAAAAAACbWJ0ZyIKkfPDQ6oTEJMXExDi6jGy7e/euo0sAAAB4IORWHzWjfmRsbKzi4uIUExNjeYahPeSHPisA5CeEiEAWbDxwztEl2MEZLViz1dFFAAAAwE5yr49KPxIACjKmMwMAAAAAAACwiRARAAAAAAAAgE1MZwayoM2jleXilLez91LlvPX8wFGOLiPbrl69qn79+jm6DAAAAIfLrT5qRv3I2NhYhYeHq3r16vLw8LBbezExMerVq5fdrgcAyB5CRCALXJyMcnF2cnQZ2VLI1UWenp6OLiPbYmNjHV0CAADAAyG3+qgZ9SONRqPc3d3l6elp1xARAPBgIUQEAAAAAAC5xmwyyWDMezO88mrd9vT1119r2rRp6t27t955551Mn/fVV18pKCgow/2tW7fWt99+a7UtPj5ec+fO1erVq3X+/Hm5u7urYcOGGjx4sGrWrJnudSIjI/XNN99o+/btunLlikqVKqW2bdsqMDBQJUqUyHS9qS5evKhZs2Zp69atunLlilxdXfXwww+rS5cuev7552VM57+HTZs2ad68eTp8+LBiYmJUtGhRPf744+rXr5/q1q2b5RoeJISIAAAAAAAg1xiMRp35eZbioi87upRMcy/pparP9Hd0GXnWkSNHJElt2rRJd0RzrVq1rF7Hx8erX79+Cg0NVZkyZdSyZUtdvnxZv//+uzZs2KDp06erRYsWVudERESoZ8+eunr1qqpXr642bdrozz//1Lx58/THH3/op59+kpeXV6ZrPnjwoPr06aOYmBh5eXmpRYsWunPnjvbv368DBw5o8+bNmjZtmpyd/xetTZ06Vd9++60MBoNq166tcuXK6fTp0/r999+1fv16TZ48WQEBAVn45B4shIiADUaDwfKz4W+v4VjOzs4yGAwym80yGo1Wv7gBAADys4LSR3V2dpbRaJTJZKK/lw/FRV9WXGSEo8tALjly5IicnJz0+eefy93d/R+Pnz59ukJDQ9WyZUt9/fXXcnNzkyStXLlSb731lt566y2tXbvWKpB86623dPXqVQ0bNkxDhw6VJKWkpGjixIlatGiRxo8fr1mzZmWqXpPJpFGjRikmJkZ9+vTRm2++afkddPr0afXr108bN27U3Llz9eqrr0qSwsLC9O2338rDw0OzZs1SgwYNLNdbtGiRJkyYoPHjx6tx48YqV65c5j64B0zBHocL/AMnJ6OqlC0qg6TKZYvKKY8vqpKfuLm5qVmzZjIajQoICLDcVAAAAPK7gtJHdXNzU0BAAP09II+LiorS1atX5ePjk6kA8e7du/rxxx/l5OSkiRMnWv3Z79y5s5566ilFR0dr5cqVlu2hoaHau3evqlWrpiFDhli2Ozk56d1331X58uUVEhKikydPZqrm0NBQnT17VlWqVNGoUaOs/hGjWrVqGjXq3iJTq1atsmxfunSpJKlfv35WAaIkvfDCC2rVqpUSEhL0+++/Z6qGB1H+vNsAdlS7cmk95f+walcu7ehS8DfPPvusVq5cqcDAQEeXAgAAkKsKSh81MDBQf/zxB/095GvBwcHq3r27Hn/8ccsz/44dO6Z33nlHvr6+2rVrlyTppZdekq+vr/78808NGjRIdevWVaNGjayeJXjixAm9++67euKJJ1SvXj35+fmpTZs2euutt3Tq1Cmrdnft2iVfX1+9+eabioiI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fvpppq+5d+9eSdKLL75oNZpy5cqV911nduW98cMAAAAAAADAfTKbzXrjjTcUHR2tQYMGqUmTJtm63sKFCyVJgwYNsgSIkuTi4qIxY8bIx8dHq1at0vHjxzN9zcTEREmSl5dXtmqzJ0JEAAAAAAAAB0hJSdG8efMUEBCgevXqqXnz5po4caJu3bqV7vHXr1/X559/rq5du6pBgwaqXbu2mjRpov79+yskJMRy3IULF+Tr66v169dLksaOHStfX18tX77cckxMTIxmzpypF154Qf7+/qpdu7b8/f310ksvafXq1Rm2/+9//1sdOnRQ3bp11bZtW3322WeKjY1VrVq11LZt23TP+eSTT/TEE0/Iz89PDRs21KuvvqrNmzenOXb58uXy9fXVN998oxMnTmj48OFq3Lix/Pz81KlTJ82ePVvJyclZ+ozTs3TpUoWGhsrX11eDBw/O9vVSw8F27dql2efs7KyGDRtKUrrv+e9SP4MVK1ZIkj766CP5+vrqpZdeSnPszz//rC5dusjPz0/NmjXTW2+9pbNnz2bjndjGdGYAAAAAAIBclpKSoqFDh2rDhg3y8PBQ48aNlZSUpCVLlmj37t1pjo+IiFCvXr0UFRUlb29vNWzYUGazWceOHVNISIhCQkI0depUPf300/Lw8FCnTp0UGhqqK1euqH79+qpQoYIqVaok6d6CKz179tSpU6dUunRp1a9fX87Ozjp58qR2796t3bt36/LlyxowYICl/QsXLujll1/WhQsXVK5cObVu3VpRUVGaOXOmdu3ale4K0CdPntSrr76qyMhIlStXTs2bN9fdu3e1e/dubdu2TYMHD9aIESPSnHfgwAF9++238vT0VL169RQTE6OwsDB98sknOnPmjCZNmnTfn/vt27c1depUSdL48ePl4uJy39dKlTptvEiRIunud3a+F7+dPn36H6+V+hzH/fv36/z586pdu7aqVasmHx8fq+OWLFmikydPqlq1amrTpo3Cw8MVHBystWvX6j//+Y/q16+fzXeVzvuw+xUBAAAAAABg06JFi7RhwwY9/PDD+v7771WmTBlJ0pkzZ9JddffTTz9VVFSUevTooQkTJshgMEiSkpOTNXnyZC1YsEBz5szR008/rRIlSmjKlCkaMmSIrly5ou7du6tr166Wa82YMUOnTp1SmzZt9PXXX1uCNLPZrJkzZ2rq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smRJHThwQNLVD3M3mzHZvg8mPgOA/BUbGyvpau/CrMaQ9fLyUoUKFXTixIkMy48cOaKFCxdq165dOnbsmONOLfs+stsTXbo60cjChQu1bds2HT16VOfOncuwr2v3d/r0aUlSpUqVstxXlSpVMi2Ljo6WJIWHhys8PNy0lri4OFWrVs3x84168tl7M9rr2r59u7788stM69WqVUsjR47Uhg0b9O2336pBgwZ68cUXZbX+ry9d/fr1NWXKFA0bNkwffPCB7r///gyPZ9ehQ4f05ptvqkGDBhozZky2tomIiFBERESm5S1atHD0Kr2ZrF5z6X+zOdt/x/ISISJQiAUFBalKlSo6dOiQ45uj629ltqtYsaJq1aqlyMhIx9iJ9hmer1W7dm0NHDhQX375paZPn66mTZuqbt26We7z/Pnz+te//iVJqlu3boZZGsuUKaORI0fq3Xff1bx589SuXbsbfkOVnJys8ePHy2azKSAgQAMHDsz+iwAAgBv16dNHy5Yt0549e7RkyZIM41Fd77ffftPFixdVunRpNWnSxLH97Nmz9eWXXyo0NDTTHQLX+v777yVdbb/tXxhWqVJFTZs21c6dO/Xuu++qefPmjluWr2ez2fTjjz9K0k3DRgBA3jAL/eyzCtvNnz9fr7/+ugzDUOXKldWqVSvVqFFD9erVU6VKlXTfffdl+7g///yzxo4dq9TUVAUEBKhx48aqWbOm6tatq5YtW6pjx44Z1rf3SLx+3EOz52Fft0WLFpkmDLve9b0uszs51/Hjx7OcSbply5YaOXKkNm/eLEm68847swwIW7duLR8fH509e1YxMTE3DEnNvPPOO7py5Yp8fHw0fvz4DI/ZhydZtGiRNm7c6AgJDxw4kGXd196afjNZdQ6S/ncu8no8RIkQESj02rZtq6+++srRJf1GIaJ0tedhZGSkfvzxR1kslix7IkrS2LFjtX37dh0+fFhDhgzR008/rXvvvdfxocQwDP3666+aPHmyjh07puLFi+udd97J9Ed72LBh+vXXX7V161Y9/vjjjlkjb7vtNsc6O3fu1OTJk7Vnzx55eXnp7bfflp+fn7MvCwAALtGuXTt1795dP//8s1555RXt27dPDz/8sIKCghzrXLlyRStWrNDUqVMlSc8884xjgPdhw4bpp59+0tGjR/Xggw9q9OjR6tOnT4Zb2c6fP69PPvlEH374oXx8fPTcc89lqGH8+PF6+OGHdfDgQd13330aO3asOnTokOHDR2RkpN5++23t2LFD1atXd9zWDADIH/ZQLSYmRjabLdNnJcMwHENTSFfHOnzjjTfk4eGhadOmqVu3bhnWz85YunaJiYl6+eWXlZqaqgkTJmjo0KEZQrusxqG392670ZiL9p6K17LfetynT5986wjSv39/0y/oLl26JOnGgZrFYnG89tm9Ffx69lurd+zY4bir73o7d+7Uzp07HSHh6NGjNXr06Fwdzy4uLi7L5SdPnpR0416jziBEBAq51q1b66uvvtLff/+tSpUqZZoW/lrt27fX/PnzlZiYqLp166pcuXJZrleyZEktXLhQo0aN0pYtWzR16lS98847qly5skqUKJFhApSqVatq+vTpqlOnTqb9eHl5ae7cuXrxxRf1/fffKzw8XLNnz1bFihVVtmxZRUdHOxrOcuXK6c0332TAdgDALeedd96Rn5+fli1bpvnz52v+/PmqVKmSbrvtNl25ckVHjx5VSkqKvLy8NHbs2AxDhZQuXVqffPKJnn32Wf3xxx+aPHmy3njjDQUFBalkyZK6fPmyjh07JsMwdNttt+mNN95QgwYNMhy/SZMmmjVrll588UUdOXJEYWFh8vPzU+XKleXj46O4uDjHLU/16tXTjBkzbthbEQCQNwICAhQcHKyDBw9q/fr1mXqAb968OcPklLt27VJ6eroaNmyYKUCUpPXr10vK3FMwqx59hw4dUnx8vMqUKaMHHnjghvu6dn/t2rXT9OnTtW7dOqWmpmbqOfjLL79k2k/Lli21ZMkSrVq1KssQcffu3XruuedUq1YtzZw5M196ztWuXVuStGbNGo0aNSrT67Fjxw4lJiaqZMmSqly5cq6O8dlnn93wsaeeekqrVq3S1KlTTcPO3Fi/fn2m3qdpaWlauXKlJDkmWs1LTKwCFHJt2rRx/KG8Uc9Cu5YtWzp6Jdxs3ZIlS2revHn64IMP1KtXL1WqVEmxsbHat2+fPDw81K5dO02aNEkrVqzI9GHmWt7e3nrvvfc0f/58DRgwQNWrV9f58+e1d+9epaamqkWLFnrhhRf0008/mfaiBACgoPL29tYbb7yhxYsX69FHH1WDBg2UkpKi/fv3KyYmRjVq1NDw4cO1fPlyjRgxItP2lSpV0pdffqnw8HD1799fVatW1cWLF/XXX38pPj5eTZs21T//+U/9+OOP6tChQ5Y1tGnTRj/99JP+9a9/qUuXLo4v6/bv3y+LxaJOnTrpzTff1DfffHPDMZYAAHlr+PDhkqR//etfGSa0io6O1sSJEzOsW6ZMGUlXe45fP/nVDz/84JjAKyUlJcNj9slJLl++nGlfFy5c0Pbt2zOsv2nTJk2ZMsXxs31SrsaNG6t58+aKjo7WpEmTMvTa2759e5YTiPXo0UMVK1bU2rVrNX369AzbxMXF6aWXXtLx48cVGBiYLwGiJPXq1UslS5bU3r179dZbb2WYHDQyMtIxC/YDDzyQbzXkl4iICC1atMjxc1pamiZPnqyjR4+qQYMG+dIB59Z6hQDkWJkyZbR///5srevr66vdu3dne98Wi0V33313hrEOc6tVq1Y3HTAeAIBbWaNGjdSoUaNcbWuxWNSlSxd16dIl18f39fXV4MGDNXjw4Bxvu3r16lwfFwCQtdDQUG3fvl2LFy9Wnz591Lp1a3l4eGjz5s0KCAhQuXLldPbsWUlXO3w0atRIu3fvVt++fdWiRQv5+vrqwIEDOn78uCpXrqwLFy4oMTHRMb6uJNWoUUOSNHPmTO3YsUN9+/ZVly5d1K1bN0VEROihhx5S8+bNVbp0aUVFRengwYMqU6aMAgICdObMGZ09e1bly5eXJE2dOlVDhgzRokWL9Ouvv6px48Y6f/68duzYoapVq+ro0aMZeigWK1ZM77//vh5//HHNmjVL33zzjerXr6+0tDRt27ZNV65cUZMmTTRu3Lh8e43Lli2r6dOna9SoUfr444+1YsUKNWnSROfPn9fu3buVkpKiTp06KSwsLN9qyC9NmzbVhAkTtHDhQlWtWlV79uzRyZMnVaFCBb333nvZHlcyJwgRAQAAAACAS5ULKOHuEnIkv+qdPHmyWrRooQULFmj79u3y9vbW3XffrXHjxmW41djDw0Offvqp5syZo4iICG3btk0eHh6qUqWKRo0apWHDhmncuHFatWqVIiIiHLcPP/LII4qKitLatWu1fv161axZU126dHFMcLl8+XLt3r1bNptNlSpV0rBhwzR8+HDNmTNH8+fPV0REhOPOsqpVq+qbb75ReHi41q5dq9WrVyswMFBPPfWU2rZtqyFDhmQaDqNx48Zavny55s6dq3Xr1mnjxo3y8/NTcHCwY6xEe2/J/NKuXTt9++23+uijj/Tbb79p7dq1KlasmBo1auQYUzE3szK72xNPPKHY2FjNmzdPq1atUtmyZTVkyBCFhYXdcGgyZ1mMnMz/DQAAAAAA4ASbzZDVmve9pPLbrVp3XoiPj9epU6cc4+Bf78cff9QzzzyjXr166d1333VDhXCFWy9qBQAAAAAAt6xbNYi7VevOCxcuXFDfvn3VrVs3x2RcdrGxsZo5c6YkZTnpCwoPbmcGAAAAAADADVWtWlU9e/bU999/ry5duqhZs2YqU6aMzp8/r507dyolJUUDBw5U9+7d3V1qrp0/f16vv/56jrcbOXKkatWqlQ8VFTzczgwAAAAAAABT6enp+u6777R06VIdOXJEFy5cUOnSpVW3bl0NHDjwlu+FePLkyVxNGjp//vwiM0koISIAAAAAAAAAU4VqTMQDBw7owIED7i4DAABchzYaAAAAuLUVqhAxJSVFCQkJunLlirtLgQtduXJFO3bs4LwXMZz3oodzfmujjS56uGaLJs570cR5B4CioVCFiHbp6enuLgEuZD/fnPeihfNe9HDOCwfOX9HBNVs0cd6LJs47ABQNhTJEBAAAAAAAAJB3CBEBAAAAAAAAmCJEBAAAAAAAAGCKEBEAAAAAAACAKUJEAAAAAAAAAKYIEQEAAAAAAACYIkQEAAAAAAAAYIoQEQAAAAAAoBAzDMPdJaAQ8HR3AQAAAAAAoOiw2WyyWm+9Pk2urjskJESStG3bNpUsWTJX+7h48aL+/e9/6/bbb1ffvn3zsrxbyvnz5/XBBx9ozZo1io2NlY+Pj+rVq6ehQ4fqH//4R54d55dfftH8+fP1119/6cqVK6pQoYI6duyokSNHqly5cnl2nKxERkZq6tSp+uOPP5SSkqKAgAD99NNP8vLyyrNjECICAAAAAACXsVqt+uGruTofF+3uUrKtbGBF9Rg03N1l5NiECRMUERGhRo0aubsUt4mOjtbgwYMVExOjwMBAdejQQRcvXtS2bdu0detWDRs2TC+++KLTx3n//fcVHh4ui8WiZs2aqXTp0vrzzz/1+eef66efftKCBQtUrVq1PHhGmRmGoSeeeEInTpxQlSpV1KBBA/n7++dpgCgRIgIAAAAAABc7HxetuNMn3F1GoZeenu7uEtzujTfeUExMjHr16qWpU6fK29tbkrR9+3YNHz5cn3zyiXr06KHGjRvn+hiHDh3SBx98ID8/P82dO1fNmjWTJF25ckXPP/+8fv75Z02ZMkVz5szJk+d0vbNnz+rEiROyWq365ptvVKpUqXw5zq3XfxgAAAAAAADIhl9//VWSNGbMGEeAKEnNmzdXly5dJElbt2516hi//fabDMNQly5dHAGiJBUrVkzPPvtsnhzDzJUrVyRJxYsXz7cAUaInIgAAAAAAgFukp6dr4cKF+vrrr3X06FH5+/urW7duGjNmTJbrnz9/XvPmzdOvv/6q48ePKykpSSVLllTDhg314IMPqkOHDpKkkydP6u6773ZsN378eI0fP15Tp05V//79JUkJCQlasGCBVq9erSNHjujvv/9W8eLFFRISooEDB6p3795ZHv/DDz/UypUrFRsbq3Llyqlnz54aOXKkmjdvrgoVKmj16tWZtvnoo4+0atUqnT59Wj4+PmrUqJEefvhhdezYMcO6S5Ys0fjx4zVmzBh17dpVM2bM0NatW/X333+revXqCg0N1cMPPyxPz+zHWR4eHpKkmJgYVa1aNVNtklS6dOls7y8r9rEyY2JiMj2Wm2M8+OCD2QodDxw4oM6dO+vUqVOSpPj4eMdYmvPnz1erVq2yfczsIEQEAAAAAABwsfT0dI0aNUqrV6+Wn5+fWrdurdTUVC1evDjLAOn48eMaOnSo4uLiVLlyZbVo0UKGYWj//v1av3691q9fr/fee089e/aUn5+fevfurW3btikmJkZNmzZVUFCQI0S7ePGihgwZosjISAUEBKhp06by9PTU4cOHtXXrVm3dulXR0dEaMWKE4/gnT57Uww8/rJMnT6pChQq66667FBcXpzlz5mjLli1ZzgB9+PBhPfroo4qNjVWFChXUvn17/f3339q6das2bNigkSNH6plnnsm03a5du/Sf//xH/v7+uv3225WQkKDt27frrbfeUlRUlCZPnpzt17lDhw5asWKFXnrpJU2cOFHNmjVTfHy85s2bp40bNyooKEj33HNPtveXlfbt28tqtWrr1q16/fXX9cgjj6hMmTL6448/NHHiREnS448/nu39tW3bVuXLl8/ysQ0bNuj8+fMKDg6WJHXp0kWnTp3SypUr5eXl5ZgoJj8mciFEBAAAAAAAcLEvv/xSq1evVu3atfXJJ58oMDBQkhQVFaVHHnkk0/pvv/224uLidP/99+u1116TxWKRJKWlpWnK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VikoKMjxWGRkpIYOHaoLFy6oZs2aqlOnjvbt26fjx48rKChICxcuZAyWAiIvz/v//d//6fPPP5fFYlGTJk1Uvnx57dmzR6dOnVJAQIDmzZunWrVqufw54uZmzJihmTNn6qGHHtLLL7+c4TGu9cIrt+eda931aKOLJtpoSLTRRRVtNABAKqA9ESWpRYsWWrx4sbp3767Tp09r7dq1KlGihEaNGqV58+blaPa2WrVq6ZtvvlH//v0VHx+vNWvWyGKx6KGHHtKiRYt4w1KA5OV5nzBhgt5//321bNlSkZGRWr16tTw8PDRs2DAtX76cNyyFENd60cS17nq00UUTbTScwbVeNHGtA0DhUmB7IgIAAAAAAAAoGApsT0QAAAAAAAAABQMhIgAAAAAAAABThIgAAAAAAAAATBEiAgAAAAAAADBFiAgAAAAAAADAFCEiAAAAAAAAAFOEiAAAAAAAAABMESICAAAAAAAAMEWICAAAAAAAAMAUISLyTEpKihYtWqQnn3xSd911lxo3bqzbb79dPXr00IQJE/T777+7u8RsOXnypEJCQhQSEqJjx465u5xcy4vn8e6776pRo0a3xOtQWM5bVuzPa+PGjY5lS5YsUUhIiDp06OC2ulJTU/WPf/xDQ4YMkc1mc1sdAG6ONrpgoY0uPGijAQBFCSEi8sRvv/2mbt26acKECVqzZo2Sk5NVu3ZtBQYG6vjx41q0aJHuv/9+Pf3000pISHB3uciG7du366OPPtKDDz6oatWqubscFEBeXl4aP368duzYoQ8//NDd5QC4Adrowoc2GjdDGw0AyA+e7i4At75ly5bppZdeUnp6upo3b65nn31Wd9xxhywWiyQpISFBixcvVnh4uH7++WcdPnxY8+bNU0BAgJsrx42kpaVp4sSJKlmypJ588kl3l4MsdO3aVU2aNJGXl5db6+jYsaPatm2rDz74QD169FCVKlXcWg+AjGijCx/a6IKPNhoAUFjRExFO2bt3ryZMmKD09HQNHjxYn332mZo3b+74cCJJ/v7+GjZsmBYuXKjAwEBFRkbqpZdecmPVuJnFixfr0KFDeuihh1SyZEl3l4MslChRQrVq1VLVqlXdXYrCwsKUnJysd999192lALgGbXThRBtd8NFGAwAKK0JEOOWtt95SSkqKGjVqpFdffVVW641/perUqaNJkyZJktavX69l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o99d+/lKS0vL89rsvzdmg8IDcA3aaNpo2mja6GvRRgMA8gIhInKtbt26+uGHH3T8+HElJSXJ19c3W9vt27fP8W/7rRWSVKFCBbVt21a//fabvvvuOz3++ONKT0/XihUrJGX8Nv/aAaftHwzMXPuNrl1W3wDnZp3ra4qOjr7pIOTp6en6+++/HbdcLV26VO+++26mAeaDgoJ07733atGiRRmWX/uhMKseFZLk7e0tX19fJSYmZvs52Pdrdi6bNm2qGjVqKCoqSqtXr1aPHj106dIlrV27VhaLRaGhoRnW79Chg77++mt9+OGHWrt2rf7++2+tW7dO69at09SpU3XHHXdo0qRJWd6alRteXl4Zbsm61rW3NCUlJTk+oOT09ZekevXqafny5frPf/6jX375RRcvXtSWLVu0ZcsWvffeewoODtZrr72m5s2bS/rf72BCQkKG25RuxP5hNrdy0vsor2qz/97kNLQAkPdoozOijaaNpo2mjQYAOI8QEbl211136b333lNqaqrWrl3rmOnvZuy3FDVo0EDlypXL8NiAAQMyfEDZuHGjzpw5oypVqqhFixaO9a59A/3dd99l+KDjLvaaJkyYkOWtOjeydOlSvfjii5KkO++8U127dlWdOnVUq1YtlSpVSqmpqZneIF87xtX1M/jZGYahlJSUHD0H+weym7057t+/v959911999136tGjh3788UfH2E9Z3X5Wr149x+/Krl27tGXLFm3cuFG///67duzYoUceeUQRERE3/LCVE6mpqUpJScnyQ8q1H1Sv/XCS09ffrkqVKpo8ebImTZqkPXv2aOvWrdq0aZO2bNmigwcP6rHHHtOPP/6oihUrOn4/unfvrvfff9/p55mX8qo2++/NtbeXAXAP2uiMaKNpo2mjaaMBAM5jTETkWkhIiGNcndmzZ2frzfC2bdscAzpn9Sa+S5cuKlWqlA4cOKCjR486xvQJDQ3NcPtNyZIlHR9uDh8+fMPjHThwQPv27XPJt672sWbst51kJTo6Wn/88YdiY2Mdy/7zn/9IuvocP/roIw0aNEjNmjVTqVKlJF29feV6xYoVcwx0fm2vkWsdOXIkw+0w2WF/Ta+9nS0roaGh8vDw0G+//aaEhATHeRowYECG9dLT03Xs2DFt27ZN0tVv3ps3b66wsDB98cUX+uKLL2SxWHTmzBlt3LgxR7Wa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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "def merge_compare(baseline, rhs, metric=\"duration\", on=[\"algorithm\", \"dataset\"], name=\"overhead\"):\n", - " df = baseline.groupby(by=on).sum(metric).reset_index()\n", - " df.rename(columns={metric: f\"baseline_{metric}\"}, inplace=True)\n", - " dff = pd.merge(rhs, df[on+[f\"baseline_{metric}\"]], on=on)\n", - " dff[name] = dff[metric] / dff[f\"baseline_{metric}\"]\n", - " dff[f\"{name}_desc\"] = [str(a) + \" / \" + str(b) for (a, b) in list(zip(dff[metric], dff[f\"baseline_{metric}\"]))]\n", - " return dff" + "ax = sns.catplot(\n", + " tracing_comb,\n", + " x=\"overhead\",\n", + " col=\"algorithm\",\n", + " hue=\"dataset\",\n", + " kind=\"bar\",\n", + " hue_order=['datagen-7_5-fb', 'graph500-22', 'datagen-7_9-fb', 'cit-Patents', 'datagen-8_4-fb', 'datagen-8_8-zf'],\n", + " col_order=[\"BFS\", \"PageRank\", \"WCC\", \"SSSP\"],\n", + " legend_out=True,\n", + " errorbar=\"sd\",\n", + " capsize=0.2,\n", + " col_wrap=2,\n", + ")\n", + "sns.move_legend(ax, \"center right\", ncols=1, bbox_to_anchor=(1.05, 0.55), title=None, frameon=False)\n", + "\n", + "ax.set_axis_labels(\"Overhead (vs. baseline)\", \"Dataset\")\n", + "ax.set_titles(\"{col_name}\")\n", + "\n", + "ax.savefig(plot_location(\"es02-overhead-duration.pdf\"), dpi=\"figure\")" ] }, { "cell_type": "markdown", - "id": "8860482e-1498-4499-9493-b0809548a416", + "id": "094ed146-412f-4ce9-bdf3-9e673fae613c", "metadata": {}, "source": [ - "# Tracing" + "# Complete provenance (storage formats)" ] }, { "cell_type": "code", - "execution_count": 60, - "id": "14621e94-1443-4a54-b416-6980ed42a41c", + "execution_count": 30, + "id": "ae6693c1", "metadata": {}, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "/Users/gm/vu/thesis/code/provxlib/results/data/das6/20240521-022009-tracing\n" - ] - }, { "data": { "text/html": [ @@ -8148,384 +5253,206 @@ " \n", " \n", " \n", - " config\n", " algorithm\n", " dataset\n", - " run\n", - " storage_format\n", - " compressed\n", " total_size\n", - " nr_executors\n", - " nr_vertices\n", - " iterations\n", " duration\n", " \n", " \n", " \n", " \n", " 0\n", - " tracing\n", - " PageRank\n", - " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 1387587\n", - " 35\n", - " 94.295958\n", + " BFS\n", + " graph500-22\n", + " 213794112\n", + " 37.135303\n", " \n", " \n", " 1\n", - " tracing\n", - " PageRank\n", - " cit-Patents\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 3774768\n", - " 35\n", - " 93.836881\n", + " SSSP\n", + " datagen-7_9-fb\n", + " 601133226\n", + " 98.981582\n", " \n", " \n", " 2\n", - " tracing\n", - " BFS\n", + " PageRank\n", " datagen-8_4-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 3809084\n", - " 35\n", - " 211.522415\n", + " 3331385809\n", + " 362.998825\n", " \n", " \n", " 3\n", - " tracing\n", - " WCC\n", - " datagen-8_4-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 3809084\n", - " 13\n", - " 242.255369\n", + " BFS\n", + " datagen-7_5-fb\n", + " 256529225\n", + " 43.167773\n", " \n", " \n", " 4\n", - " tracing\n", - " BFS\n", + " WCC\n", " graph500-22\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 2396657\n", - " 3\n", - " 31.800055\n", + " 268114309\n", + " 72.910509\n", " \n", " \n", " 5\n", - " tracing\n", " PageRank\n", - " datagen-8_4-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 3809084\n", - " 35\n", - " 302.963450\n", + " datagen-8_8-zf\n", + " 40426605492\n", + " 889.399285\n", " \n", " \n", " 6\n", - " tracing\n", " BFS\n", " cit-Patents\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 3774768\n", - " 43\n", - " 77.243175\n", + " 2525597803\n", + " 111.367214\n", " \n", " \n", " 7\n", - " tracing\n", " BFS\n", " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 1387587\n", - " 31\n", - " 53.299679\n", + " 581855399\n", + " 90.477825\n", " \n", " \n", " 8\n", - " tracing\n", " WCC\n", - " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 1387587\n", - " 13\n", - " 69.753705\n", + " datagen-7_5-fb\n", + " 94026180\n", + " 43.913258\n", " \n", " \n", " 9\n", - " tracing\n", - " WCC\n", - " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 633432\n", - " 13\n", - " 41.842698\n", + " BFS\n", + " datagen-8_4-fb\n", + " 1929106864\n", + " 229.720098\n", " \n", " \n", " 10\n", - " tracing\n", - " BFS\n", - " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 633432\n", - " 29\n", - " 45.629640\n", + " WCC\n", + " datagen-7_9-fb\n", + " 208169138\n", + " 72.529882\n", " \n", " \n", " 11\n", - " tracing\n", - " WCC\n", - " cit-Patents\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 3774768\n", - " 41\n", - " 160.095690\n", + " PageRank\n", + " graph500-22\n", + " 1783054481\n", + " 133.397851\n", " \n", " \n", " 12\n", - " tracing\n", - " SSSP\n", - " datagen-8_4-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 3809084\n", - " 36\n", - " 203.459036\n", + " PageRank\n", + " datagen-7_9-fb\n", + " 1216103451\n", + " 115.509841\n", " \n", " \n", " 13\n", - " tracing\n", - " PageRank\n", - " graph500-22\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 2396657\n", - " 35\n", - " 91.280116\n", + " WCC\n", + " cit-Patents\n", + " 1100333124\n", + " 181.907051\n", " \n", " \n", " 14\n", - " tracing\n", - " WCC\n", - " graph500-22\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 2396657\n", - " 15\n", - " 68.993393\n", + " SSSP\n", + " datagen-8_8-zf\n", + " -2283760778\n", + " 281.935523\n", " \n", " \n", " 15\n", - " tracing\n", - " SSSP\n", - " datagen-8_8-zf\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 168308893\n", - " 22\n", - " 160.900830\n", + " WCC\n", + " datagen-8_4-fb\n", + " 580609781\n", + " 240.274523\n", " \n", " \n", " 16\n", - " tracing\n", - " PageRank\n", + " BFS\n", " datagen-8_8-zf\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 168308893\n", - " 35\n", - " 585.657551\n", + " 20108559480\n", + " 338.590623\n", " \n", " \n", " 17\n", - " tracing\n", - " SSSP\n", - " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 1387587\n", - " 32\n", - " 58.442954\n", + " PageRank\n", + " datagen-7_5-fb\n", + " 552803075\n", + " 56.884473\n", " \n", " \n", " 18\n", - " tracing\n", - " BFS\n", - " datagen-8_8-zf\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 168308893\n", - " 21\n", - " 211.700481\n", + " SSSP\n", + " datagen-7_5-fb\n", + " 254670929\n", + " 44.073837\n", " \n", " \n", " 19\n", - " tracing\n", - " SSSP\n", - " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 633432\n", - " 30\n", - " 35.181077\n", + " PageRank\n", + " cit-Patents\n", + " 2834235312\n", + " 151.982478\n", " \n", " \n", " 20\n", - " tracing\n", - " PageRank\n", - " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 633432\n", - " 35\n", - " 46.563000\n", + " SSSP\n", + " datagen-8_4-fb\n", + " 1866864826\n", + " 245.580066\n", " \n", " \n", "\n", "" ], "text/plain": [ - " config algorithm dataset run storage_format compressed \\\n", - "0 tracing PageRank datagen-7_9-fb 1 Text False \n", - "1 tracing PageRank cit-Patents 1 Text False \n", - "2 tracing BFS datagen-8_4-fb 1 Text False \n", - "3 tracing WCC datagen-8_4-fb 1 Text False \n", - "4 tracing BFS graph500-22 1 Text False \n", - "5 tracing PageRank datagen-8_4-fb 1 Text False \n", - "6 tracing BFS cit-Patents 1 Text False \n", - "7 tracing BFS datagen-7_9-fb 1 Text False \n", - "8 tracing WCC datagen-7_9-fb 1 Text False \n", - "9 tracing WCC datagen-7_5-fb 1 Text False \n", - "10 tracing BFS datagen-7_5-fb 1 Text False \n", - "11 tracing WCC cit-Patents 1 Text False \n", - "12 tracing SSSP datagen-8_4-fb 1 Text False \n", - "13 tracing PageRank graph500-22 1 Text False \n", - "14 tracing WCC graph500-22 1 Text False \n", - "15 tracing SSSP datagen-8_8-zf 1 Text False \n", - "16 tracing PageRank datagen-8_8-zf 1 Text False \n", - "17 tracing SSSP datagen-7_9-fb 1 Text False \n", - "18 tracing BFS datagen-8_8-zf 1 Text False \n", - "19 tracing SSSP datagen-7_5-fb 1 Text False \n", - "20 tracing PageRank datagen-7_5-fb 1 Text False \n", - "\n", - " total_size nr_executors nr_vertices iterations duration \n", - "0 0 7 1387587 35 94.295958 \n", - "1 0 7 3774768 35 93.836881 \n", - "2 0 7 3809084 35 211.522415 \n", - "3 0 7 3809084 13 242.255369 \n", - "4 0 7 2396657 3 31.800055 \n", - "5 0 7 3809084 35 302.963450 \n", - "6 0 7 3774768 43 77.243175 \n", - "7 0 7 1387587 31 53.299679 \n", - "8 0 7 1387587 13 69.753705 \n", - "9 0 7 633432 13 41.842698 \n", - "10 0 7 633432 29 45.629640 \n", - "11 0 7 3774768 41 160.095690 \n", - "12 0 7 3809084 36 203.459036 \n", - "13 0 7 2396657 35 91.280116 \n", - "14 0 7 2396657 15 68.993393 \n", - "15 0 7 168308893 22 160.900830 \n", - "16 0 7 168308893 35 585.657551 \n", - "17 0 7 1387587 32 58.442954 \n", - "18 0 7 168308893 21 211.700481 \n", - "19 0 7 633432 30 35.181077 \n", - "20 0 7 633432 35 46.563000 " + " algorithm dataset total_size duration\n", + "0 BFS graph500-22 213794112 37.135303\n", + "1 SSSP datagen-7_9-fb 601133226 98.981582\n", + "2 PageRank datagen-8_4-fb 3331385809 362.998825\n", + "3 BFS datagen-7_5-fb 256529225 43.167773\n", + "4 WCC graph500-22 268114309 72.910509\n", + "5 PageRank datagen-8_8-zf 40426605492 889.399285\n", + "6 BFS cit-Patents 2525597803 111.367214\n", + "7 BFS datagen-7_9-fb 581855399 90.477825\n", + "8 WCC datagen-7_5-fb 94026180 43.913258\n", + "9 BFS datagen-8_4-fb 1929106864 229.720098\n", + "10 WCC datagen-7_9-fb 208169138 72.529882\n", + "11 PageRank graph500-22 1783054481 133.397851\n", + "12 PageRank datagen-7_9-fb 1216103451 115.509841\n", + "13 WCC cit-Patents 1100333124 181.907051\n", + "14 SSSP datagen-8_8-zf -2283760778 281.935523\n", + "15 WCC datagen-8_4-fb 580609781 240.274523\n", + "16 BFS datagen-8_8-zf 20108559480 338.590623\n", + "17 PageRank datagen-7_5-fb 552803075 56.884473\n", + "18 SSSP datagen-7_5-fb 254670929 44.073837\n", + "19 PageRank cit-Patents 2834235312 151.982478\n", + "20 SSSP datagen-8_4-fb 1866864826 245.580066" ] }, - "execution_count": 60, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "data_dir = Path(\"das6\") / \"20240521-022009-tracing\"\n", - "write_dir = (plot_dir / data_dir)\n", - "write_dir.mkdir(exist_ok=True, parents=True)\n", - "print(root_dir / \"data\" / data_dir)\n", - "tracing = parse_experiment_output(root_dir / \"data\" / data_dir)\n", - "tracing" + "data_dir = Path(\"das6\") / \"20240527-182846-complete-provenance-textonly\"\n", + "\n", + "storage_formats_text = parse_experiment_output(root_dir / \"data\" / data_dir)\n", + "storage_formats_text = storage_formats_text[[\"algorithm\", \"dataset\", \"total_size\", \"duration\"]]\n", + "storage_formats_text" ] }, { "cell_type": "code", - "execution_count": 74, - "id": "e122d9f2-9298-4410-8c64-7f2b23394aa8", + "execution_count": 31, + "id": "228cf7ec", "metadata": {}, "outputs": [ { @@ -8549,250 +5476,4148 @@ " \n", " \n", " \n", - " config\n", " algorithm\n", " dataset\n", - " run\n", " storage_format\n", - " compressed\n", " total_size\n", - " nr_executors\n", - " nr_vertices\n", - " iterations\n", " duration\n", - " baseline_duration\n", - " overhead\n", " \n", " \n", " \n", " \n", - " 2\n", - " tracing\n", + " 0\n", " BFS\n", - " datagen-8_4-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 3809084\n", - " 35\n", - " 211.522415\n", - " 228.835858\n", - " 0.924341\n", + " datagen-7_5-fb\n", + " ORC\n", + " 58274920\n", + " 50.868484\n", " \n", " \n", - " 4\n", - " tracing\n", + " 1\n", " BFS\n", " graph500-22\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 2396657\n", - " 3\n", - " 31.800055\n", - " 33.833869\n", - " 0.939888\n", + " Parquet\n", + " 36196251\n", + " 43.212258\n", " \n", " \n", - " 6\n", - " tracing\n", - " BFS\n", - " cit-Patents\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 3774768\n", - " 43\n", - " 77.243175\n", - " 81.590225\n", - " 0.946721\n", + " 2\n", + " PageRank\n", + " datagen-7_9-fb\n", + " JSON\n", + " 1632380079\n", + " 124.243249\n", " \n", " \n", - " 10\n", - " tracing\n", - " BFS\n", - " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 633432\n", - " 29\n", - " 45.629640\n", - " 41.949647\n", - " 1.087724\n", + " 3\n", + " PageRank\n", + " datagen-7_9-fb\n", + " JSON-C\n", + " 457450553\n", + " 156.334777\n", " \n", " \n", - " 18\n", - " tracing\n", + " 4\n", " BFS\n", - " datagen-8_8-zf\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 168308893\n", - " 21\n", - " 211.700481\n", - " 194.096829\n", - " 1.090695\n", + " datagen-7_9-fb\n", + " ORC\n", + " 135877889\n", + " 104.052758\n", " \n", " \n", - " 20\n", - " tracing\n", - " PageRank\n", - " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 633432\n", - " 35\n", - " 46.563000\n", - " 44.126948\n", - " 1.055206\n", + " 5\n", + " BFS\n", + " datagen-7_9-fb\n", + " JSON\n", + " 864923147\n", + " 67.917724\n", " \n", " \n", - " 13\n", - " tracing\n", - " PageRank\n", - " graph500-22\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 2396657\n", - " 35\n", - " 91.280116\n", - " 76.242817\n", - " 1.197229\n", + " 6\n", + " SSSP\n", + " datagen-7_9-fb\n", + " JSON-C\n", + " 170232558\n", + " 111.011642\n", " \n", " \n", - " 1\n", - " tracing\n", - " PageRank\n", + " 7\n", + " WCC\n", " cit-Patents\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 3774768\n", - " 35\n", - " 93.836881\n", - " 76.718400\n", - " 1.223134\n", + " CSV\n", + " 941792868\n", + " 200.797959\n", " \n", " \n", - " 5\n", - " tracing\n", - " PageRank\n", - " datagen-8_4-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 3809084\n", - " 35\n", - " 302.963450\n", - " 221.688116\n", - " 1.366620\n", + " 8\n", + " SSSP\n", + " datagen-7_5-fb\n", + " JSON-C\n", + " 68791112\n", + " 59.969305\n", " \n", " \n", - " 0\n", - " tracing\n", - " PageRank\n", + " 9\n", + " WCC\n", " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 1387587\n", - " 35\n", - " 94.295958\n", - " 67.496328\n", - " 1.397053\n", + " CSV-C\n", + " 57549288\n", + " 84.314303\n", " \n", " \n", - " 17\n", - " tracing\n", + " 10\n", " SSSP\n", " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 1387587\n", - " 32\n", - " 58.442954\n", - " 83.955731\n", - " 0.696116\n", + " CSV\n", + " 551180094\n", + " 78.072813\n", " \n", " \n", - " 19\n", - " tracing\n", - " SSSP\n", + " 11\n", + " PageRank\n", " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 633432\n", - " 30\n", - " 35.181077\n", - " 43.968590\n", - " 0.800141\n", + " Parquet\n", + " 314712266\n", + " 70.957423\n", " \n", " \n", - " 15\n", - " tracing\n", - " SSSP\n", - " datagen-8_8-zf\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 168308893\n", - " 22\n", - " 160.900830\n", - " 192.158678\n", - " 0.837333\n", + " 12\n", + " PageRank\n", + " cit-Patents\n", + " CSV-C\n", + " 981249822\n", + " 245.728175\n", " \n", " \n", - " 12\n", - " tracing\n", + " 13\n", + " PageRank\n", + " datagen-7_5-fb\n", + " Text-C\n", + " 194758917\n", + " 89.176345\n", + " \n", + " \n", + " 14\n", + " WCC\n", + " datagen-7_9-fb\n", + " Text-C\n", + " 59736651\n", + " 84.032622\n", + " \n", + " \n", + " 15\n", + " SSSP\n", + " datagen-7_9-fb\n", + " Avro\n", + " 226822606\n", + " 79.608257\n", + " \n", + " \n", + " 16\n", + " BFS\n", + " cit-Patents\n", + " Avro\n", + " 548177668\n", + " 110.712451\n", + " \n", + " \n", + " 17\n", + " SSSP\n", + " datagen-7_5-fb\n", + " CSV-C\n", + " 62370316\n", + " 60.177288\n", + " \n", + " \n", + " 18\n", + " WCC\n", + " datagen-7_5-fb\n", + " ORC\n", + " 35932527\n", + " 42.804464\n", + " \n", + " \n", + " 19\n", + " BFS\n", + " graph500-22\n", + " ORC\n", + " 21625818\n", + " 40.428390\n", + " \n", + " \n", + " 20\n", + " WCC\n", + " datagen-7_9-fb\n", + " JSON\n", + " 324726446\n", + " 89.652158\n", + " \n", + " \n", + " 21\n", + " SSSP\n", + " datagen-7_9-fb\n", + " Text-C\n", + " 158049578\n", + " 137.108613\n", + " \n", + " \n", + " 22\n", + " WCC\n", + " datagen-7_9-fb\n", + " ORC\n", + " 82049979\n", + " 78.462570\n", + " \n", + " \n", + " 23\n", + " WCC\n", + " cit-Patents\n", + " Object\n", + " 3730315659\n", + " 197.924420\n", + " \n", + " \n", + " 24\n", + " SSSP\n", + " datagen-7_9-fb\n", + " JSON\n", + " 900852018\n", + " 97.887644\n", + " \n", + " \n", + " 25\n", + " WCC\n", + " datagen-7_9-fb\n", + " Parquet\n", + " 88141246\n", + " 84.254096\n", + " \n", + " \n", + " 26\n", + " BFS\n", + " datagen-7_9-fb\n", + " CSV-C\n", + " 116209136\n", + " 128.829199\n", + " \n", + " \n", + " 27\n", + " BFS\n", + " cit-Patents\n", + " JSON\n", + " 3567433771\n", + " 107.638374\n", + " \n", + " \n", + " 28\n", + " WCC\n", + " datagen-7_9-fb\n", + " Object\n", + " 469735964\n", + " 83.425914\n", + " \n", + " \n", + " 29\n", + " WCC\n", + " cit-Patents\n", + " Parquet\n", + " 565433425\n", + " 191.301333\n", + " \n", + " \n", + " 30\n", + " PageRank\n", + " datagen-7_5-fb\n", + " Object\n", + " 871933914\n", + " 62.719922\n", + " \n", + " \n", + " 31\n", + " BFS\n", + " datagen-7_9-fb\n", + " Object\n", + " 1128077456\n", + " 106.630419\n", + " \n", + " \n", + " 32\n", + " BFS\n", + " datagen-7_5-fb\n", + " Object\n", + " 487601995\n", + " 41.675332\n", + " \n", + " \n", + " 33\n", + " PageRank\n", + " datagen-7_9-fb\n", + " Avro\n", + " 701125212\n", + " 142.884479\n", + " \n", + " \n", + " 34\n", + " PageRank\n", + " cit-Patents\n", + " Avro\n", + " 1589606305\n", + " 160.503187\n", + " \n", + " \n", + " 35\n", + " BFS\n", + " datagen-7_5-fb\n", + " Text-C\n", + " 49265960\n", + " 57.709867\n", + " \n", + " \n", + " 36\n", + " WCC\n", + " datagen-7_5-fb\n", + " CSV-C\n", + " 25012545\n", + " 46.118334\n", + " \n", + " \n", + " 37\n", + " WCC\n", + " cit-Patents\n", + " Text-C\n", + " 410716445\n", + " 244.696276\n", + " \n", + " \n", + " 38\n", + " BFS\n", + " datagen-7_9-fb\n", + " Text-C\n", + " 117407400\n", + " 90.139759\n", + " \n", + " \n", + " 39\n", + " SSSP\n", + " datagen-7_5-fb\n", + " CSV\n", + " 233134241\n", + " 52.042376\n", + " \n", + " \n", + " 40\n", + " WCC\n", + " cit-Patents\n", + " CSV-C\n", + " 390512385\n", + " 231.818350\n", + " \n", + " \n", + " 41\n", + " PageRank\n", + " datagen-7_9-fb\n", + " Text-C\n", + " 433388860\n", + " 165.560627\n", + " \n", + " \n", + " 42\n", + " BFS\n", + " datagen-7_5-fb\n", + " JSON\n", + " 378148169\n", + " 48.643720\n", + " \n", + " \n", + " 43\n", + " PageRank\n", + " datagen-7_9-fb\n", + " ORC\n", + " 654589137\n", + " 137.398404\n", + " \n", + " \n", + " 44\n", + " WCC\n", + " datagen-7_5-fb\n", + " Object\n", + " 213507029\n", + " 47.037633\n", + " \n", + " \n", + " 45\n", + " BFS\n", + " cit-Patents\n", + " ORC\n", + " 272126547\n", + " 113.815472\n", + " \n", + " \n", + " 46\n", + " PageRank\n", + " datagen-7_9-fb\n", + " CSV-C\n", + " 428773253\n", + " 164.005972\n", + " \n", + " \n", + " 47\n", + " SSSP\n", + " datagen-7_9-fb\n", + " ORC\n", + " 169444993\n", + " 101.735372\n", + " \n", + " \n", + " 48\n", + " WCC\n", + " datagen-7_5-fb\n", + " JSON\n", + " 147234468\n", + " 43.227769\n", + " \n", + " \n", + " 49\n", + " WCC\n", + " datagen-7_5-fb\n", + " Avro\n", + " 40440808\n", + " 44.966324\n", + " \n", + " \n", + " 50\n", + " PageRank\n", + " datagen-7_9-fb\n", + " Object\n", + " 1909994294\n", + " 112.681167\n", + " \n", + " \n", + " 51\n", + " BFS\n", + " cit-Patents\n", + " Text-C\n", + " 398055303\n", + " 154.327360\n", + " \n", + " \n", + " 52\n", + " BFS\n", + " cit-Patents\n", + " CSV-C\n", + " 385629051\n", + " 143.495254\n", + " \n", + " \n", + " 53\n", + " PageRank\n", + " cit-Patents\n", + " Object\n", + " 5183266070\n", + " 150.139135\n", + " \n", + " \n", + " 54\n", + " PageRank\n", + " datagen-7_9-fb\n", + " Parquet\n", + " 689544217\n", + " 132.752273\n", + " \n", + " \n", + " 55\n", + " BFS\n", + " datagen-7_5-fb\n", + " CSV\n", + " 236259401\n", + " 58.527642\n", + " \n", + " \n", + " 56\n", + " WCC\n", + " datagen-7_9-fb\n", + " CSV\n", + " 188742920\n", + " 84.156374\n", + " \n", + " \n", + " 57\n", + " BFS\n", + " graph500-22\n", + " Avro\n", + " 44691531\n", + " 36.402101\n", + " \n", + " \n", + " 58\n", + " WCC\n", + " datagen-7_9-fb\n", + " JSON-C\n", + " 65163688\n", + " 84.266331\n", + " \n", + " \n", + " 59\n", + " PageRank\n", + " cit-Patents\n", + " JSON\n", + " 3966665712\n", + " 156.517652\n", + " \n", + " \n", + " 60\n", + " PageRank\n", + " datagen-7_5-fb\n", + " CSV-C\n", + " 192423799\n", + " 96.037768\n", + " \n", + " \n", + " 61\n", + " PageRank\n", + " datagen-7_5-fb\n", + " Avro\n", + " 316673397\n", + " 76.722820\n", + " \n", + " \n", + " 62\n", + " BFS\n", + " graph500-22\n", + " Text-C\n", + " 31505964\n", + " 39.143989\n", + " \n", + " \n", + " 63\n", + " PageRank\n", + " datagen-7_9-fb\n", + " CSV\n", + " 1146723471\n", + " 128.338321\n", + " \n", + " \n", + " 64\n", + " SSSP\n", + " datagen-7_5-fb\n", + " ORC\n", + " 71897099\n", + " 52.215042\n", + " \n", + " \n", + " 65\n", + " SSSP\n", + " datagen-7_9-fb\n", + " Parquet\n", + " 179527558\n", + " 119.342097\n", + " \n", + " \n", + " 66\n", + " WCC\n", + " datagen-7_5-fb\n", + " JSON-C\n", + " 28326435\n", + " 48.553854\n", + " \n", + " \n", + " 67\n", + " WCC\n", + " datagen-7_5-fb\n", + " Text-C\n", + " 26006632\n", + " 39.843927\n", + " \n", + " \n", + " 68\n", + " BFS\n", + " datagen-7_9-fb\n", + " CSV\n", + " 534677441\n", + " 71.025003\n", + " \n", + " \n", + " 69\n", + " WCC\n", + " cit-Patents\n", + " Avro\n", + " 592224379\n", + " 190.187893\n", + " \n", + " \n", + " 70\n", + " PageRank\n", + " datagen-7_5-fb\n", + " ORC\n", + " 297074263\n", + " 77.929319\n", + " \n", + " \n", + " 71\n", + " WCC\n", + " cit-Patents\n", + " JSON\n", + " 2051574660\n", + " 191.091221\n", + " \n", + " \n", + " 72\n", + " PageRank\n", + " cit-Patents\n", + " CSV\n", + " 2645496912\n", + " 162.602287\n", + " \n", + " \n", + " 73\n", + " BFS\n", + " datagen-7_9-fb\n", + " Avro\n", + " 171065610\n", + " 93.661136\n", + " \n", + " \n", + " 74\n", + " WCC\n", + " cit-Patents\n", + " JSON-C\n", + " 450465794\n", + " 218.128612\n", + " \n", + " \n", + " 75\n", + " SSSP\n", + " datagen-7_5-fb\n", + " Avro\n", + " 92135619\n", + " 51.669206\n", + " \n", + " \n", + " 76\n", + " BFS\n", + " datagen-7_5-fb\n", + " Avro\n", + " 72546300\n", + " 53.117164\n", + " \n", + " \n", + " 77\n", + " PageRank\n", + " cit-Patents\n", + " ORC\n", + " 1137685330\n", + " 223.422605\n", + " \n", + " \n", + " 78\n", + " PageRank\n", + " datagen-7_5-fb\n", + " JSON-C\n", + " 205761319\n", + " 90.446040\n", + " \n", + " \n", + " 79\n", + " BFS\n", + " graph500-22\n", + " CSV\n", + " 199414170\n", + " 41.448111\n", + " \n", + " \n", + " 80\n", + " SSSP\n", + " datagen-7_5-fb\n", + " Parquet\n", + " 76433347\n", + " 50.267594\n", + " \n", + " \n", + " 81\n", + " WCC\n", + " cit-Patents\n", + " ORC\n", + " 386872327\n", + " 200.915941\n", + " \n", + " \n", + " 82\n", + " SSSP\n", + " datagen-7_9-fb\n", + " CSV-C\n", + " 155018101\n", + " 91.421126\n", + " \n", + " \n", + " 83\n", + " PageRank\n", + " cit-Patents\n", + " Text-C\n", + " 997108236\n", + " 253.336648\n", + " \n", + " \n", + " 84\n", + " WCC\n", + " datagen-7_5-fb\n", + " Parquet\n", + " 38931680\n", + " 43.780985\n", + " \n", + " \n", + " 85\n", + " PageRank\n", + " cit-Patents\n", + " Parquet\n", + " 1593606785\n", + " 173.286136\n", + " \n", + " \n", + " 86\n", + " BFS\n", + " graph500-22\n", + " Object\n", + " 370356939\n", + " 40.123198\n", + " \n", + " \n", + " 87\n", + " BFS\n", + " graph500-22\n", + " JSON-C\n", + " 32247729\n", + " 39.219499\n", + " \n", + " \n", + " 88\n", + " BFS\n", + " cit-Patents\n", + " Parquet\n", + " 452688486\n", + " 110.955192\n", + " \n", + " \n", + " 89\n", + " BFS\n", + " datagen-7_5-fb\n", + " JSON-C\n", + " 53194680\n", + " 57.547191\n", + " \n", + " \n", + " 90\n", + " PageRank\n", + " datagen-7_5-fb\n", + " CSV\n", + " 521026924\n", + " 68.511904\n", + " \n", + " \n", + " 91\n", + " BFS\n", + " cit-Patents\n", + " JSON-C\n", + " 411310835\n", + " 134.970226\n", + " \n", + " \n", + " 92\n", + " WCC\n", + " datagen-7_9-fb\n", + " Avro\n", + " 92261354\n", + " 77.486517\n", + " \n", + " \n", + " 93\n", + " BFS\n", + " datagen-7_9-fb\n", + " JSON-C\n", + " 127350354\n", + " 132.247397\n", + " \n", + " \n", + " 94\n", + " BFS\n", + " datagen-7_5-fb\n", + " Parquet\n", + " 61961248\n", + " 48.867018\n", + " \n", + " \n", + " 95\n", + " BFS\n", + " cit-Patents\n", + " CSV\n", + " 2351958475\n", + " 117.176385\n", + " \n", + " \n", + " 96\n", + " BFS\n", + " datagen-7_9-fb\n", + " Parquet\n", + " 143053677\n", + " 105.884096\n", + " \n", + " \n", + " 97\n", + " SSSP\n", + " datagen-7_5-fb\n", + " Text-C\n", + " 63702151\n", + " 52.306789\n", + " \n", + " \n", + " 98\n", + " PageRank\n", + " cit-Patents\n", + " JSON-C\n", + " 1056694971\n", + " 226.337767\n", + " \n", + " \n", + " 99\n", + " PageRank\n", + " datagen-7_5-fb\n", + " JSON\n", + " 742730834\n", + " 70.591457\n", + " \n", + " \n", + " 100\n", + " SSSP\n", + " datagen-7_9-fb\n", + " Object\n", + " 1383979824\n", + " 79.587845\n", + " \n", + " \n", + " 101\n", + " WCC\n", + " datagen-7_5-fb\n", + " CSV\n", + " 85158132\n", + " 45.861275\n", + " \n", + " \n", + " 102\n", + " SSSP\n", + " datagen-7_5-fb\n", + " JSON\n", + " 383891057\n", + " 46.925169\n", + " \n", + " \n", + " 103\n", + " BFS\n", + " datagen-7_5-fb\n", + " CSV-C\n", + " 48690774\n", + " 57.120579\n", + " \n", + " \n", + " 104\n", + " BFS\n", + " cit-Patents\n", + " Object\n", + " 4470241541\n", + " 119.315761\n", + " \n", + " \n", + " 105\n", + " SSSP\n", + " datagen-7_5-fb\n", + " Object\n", + " 596692316\n", + " 49.207567\n", + " \n", + " \n", + " 106\n", + " BFS\n", + " graph500-22\n", + " Text\n", + " 213794112\n", + " 37.135303\n", + " \n", + " \n", + " 107\n", + " SSSP\n", + " datagen-7_9-fb\n", + " Text\n", + " 601133226\n", + " 98.981582\n", + " \n", + " \n", + " 108\n", + " PageRank\n", + " datagen-8_4-fb\n", + " Text\n", + " 3331385809\n", + " 362.998825\n", + " \n", + " \n", + " 109\n", + " BFS\n", + " datagen-7_5-fb\n", + " Text\n", + " 256529225\n", + " 43.167773\n", + " \n", + " \n", + " 110\n", + " WCC\n", + " graph500-22\n", + " Text\n", + " 268114309\n", + " 72.910509\n", + " \n", + " \n", + " 111\n", + " PageRank\n", + " datagen-8_8-zf\n", + " Text\n", + " 40426605492\n", + " 889.399285\n", + " \n", + " \n", + " 112\n", + " BFS\n", + " cit-Patents\n", + " Text\n", + " 2525597803\n", + " 111.367214\n", + " \n", + " \n", + " 113\n", + " BFS\n", + " datagen-7_9-fb\n", + " Text\n", + " 581855399\n", + " 90.477825\n", + " \n", + " \n", + " 114\n", + " WCC\n", + " datagen-7_5-fb\n", + " Text\n", + " 94026180\n", + " 43.913258\n", + " \n", + " \n", + " 115\n", + " BFS\n", + " datagen-8_4-fb\n", + " Text\n", + " 1929106864\n", + " 229.720098\n", + " \n", + " \n", + " 116\n", + " WCC\n", + " datagen-7_9-fb\n", + " Text\n", + " 208169138\n", + " 72.529882\n", + " \n", + " \n", + " 117\n", + " PageRank\n", + " graph500-22\n", + " Text\n", + " 1783054481\n", + " 133.397851\n", + " \n", + " \n", + " 118\n", + " PageRank\n", + " datagen-7_9-fb\n", + " Text\n", + " 1216103451\n", + " 115.509841\n", + " \n", + " \n", + " 119\n", + " WCC\n", + " cit-Patents\n", + " Text\n", + " 1100333124\n", + " 181.907051\n", + " \n", + " \n", + " 120\n", + " SSSP\n", + " datagen-8_8-zf\n", + " Text\n", + " -2283760778\n", + " 281.935523\n", + " \n", + " \n", + " 121\n", + " WCC\n", + " datagen-8_4-fb\n", + " Text\n", + " 580609781\n", + " 240.274523\n", + " \n", + " \n", + " 122\n", + " BFS\n", + " datagen-8_8-zf\n", + " Text\n", + " 20108559480\n", + " 338.590623\n", + " \n", + " \n", + " 123\n", + " PageRank\n", + " datagen-7_5-fb\n", + " Text\n", + " 552803075\n", + " 56.884473\n", + " \n", + " \n", + " 124\n", + " SSSP\n", + " datagen-7_5-fb\n", + " Text\n", + " 254670929\n", + " 44.073837\n", + " \n", + " \n", + " 125\n", + " PageRank\n", + " cit-Patents\n", + " Text\n", + " 2834235312\n", + " 151.982478\n", + " \n", + " \n", + " 126\n", + " SSSP\n", + " datagen-8_4-fb\n", + " Text\n", + " 1866864826\n", + " 245.580066\n", + " \n", + " \n", + "\n", + "" + ], + "text/plain": [ + " algorithm dataset storage_format total_size duration\n", + "0 BFS datagen-7_5-fb ORC 58274920 50.868484\n", + "1 BFS graph500-22 Parquet 36196251 43.212258\n", + "2 PageRank datagen-7_9-fb JSON 1632380079 124.243249\n", + "3 PageRank datagen-7_9-fb JSON-C 457450553 156.334777\n", + "4 BFS datagen-7_9-fb ORC 135877889 104.052758\n", + "5 BFS datagen-7_9-fb JSON 864923147 67.917724\n", + "6 SSSP datagen-7_9-fb JSON-C 170232558 111.011642\n", + "7 WCC cit-Patents CSV 941792868 200.797959\n", + "8 SSSP datagen-7_5-fb JSON-C 68791112 59.969305\n", + "9 WCC datagen-7_9-fb CSV-C 57549288 84.314303\n", + "10 SSSP datagen-7_9-fb CSV 551180094 78.072813\n", + "11 PageRank datagen-7_5-fb Parquet 314712266 70.957423\n", + "12 PageRank cit-Patents CSV-C 981249822 245.728175\n", + "13 PageRank datagen-7_5-fb Text-C 194758917 89.176345\n", + "14 WCC datagen-7_9-fb Text-C 59736651 84.032622\n", + "15 SSSP datagen-7_9-fb Avro 226822606 79.608257\n", + "16 BFS cit-Patents Avro 548177668 110.712451\n", + "17 SSSP datagen-7_5-fb CSV-C 62370316 60.177288\n", + "18 WCC datagen-7_5-fb ORC 35932527 42.804464\n", + "19 BFS graph500-22 ORC 21625818 40.428390\n", + "20 WCC datagen-7_9-fb JSON 324726446 89.652158\n", + "21 SSSP datagen-7_9-fb Text-C 158049578 137.108613\n", + "22 WCC datagen-7_9-fb ORC 82049979 78.462570\n", + "23 WCC cit-Patents Object 3730315659 197.924420\n", + "24 SSSP datagen-7_9-fb JSON 900852018 97.887644\n", + "25 WCC datagen-7_9-fb Parquet 88141246 84.254096\n", + "26 BFS datagen-7_9-fb CSV-C 116209136 128.829199\n", + "27 BFS cit-Patents JSON 3567433771 107.638374\n", + "28 WCC datagen-7_9-fb Object 469735964 83.425914\n", + "29 WCC cit-Patents Parquet 565433425 191.301333\n", + "30 PageRank datagen-7_5-fb Object 871933914 62.719922\n", + "31 BFS datagen-7_9-fb Object 1128077456 106.630419\n", + "32 BFS datagen-7_5-fb Object 487601995 41.675332\n", + "33 PageRank datagen-7_9-fb Avro 701125212 142.884479\n", + "34 PageRank cit-Patents Avro 1589606305 160.503187\n", + "35 BFS datagen-7_5-fb Text-C 49265960 57.709867\n", + "36 WCC datagen-7_5-fb CSV-C 25012545 46.118334\n", + "37 WCC cit-Patents Text-C 410716445 244.696276\n", + "38 BFS datagen-7_9-fb Text-C 117407400 90.139759\n", + "39 SSSP datagen-7_5-fb CSV 233134241 52.042376\n", + "40 WCC cit-Patents CSV-C 390512385 231.818350\n", + "41 PageRank datagen-7_9-fb Text-C 433388860 165.560627\n", + "42 BFS datagen-7_5-fb JSON 378148169 48.643720\n", + "43 PageRank datagen-7_9-fb ORC 654589137 137.398404\n", + "44 WCC datagen-7_5-fb Object 213507029 47.037633\n", + "45 BFS cit-Patents ORC 272126547 113.815472\n", + "46 PageRank datagen-7_9-fb CSV-C 428773253 164.005972\n", + "47 SSSP datagen-7_9-fb ORC 169444993 101.735372\n", + "48 WCC datagen-7_5-fb JSON 147234468 43.227769\n", + "49 WCC datagen-7_5-fb Avro 40440808 44.966324\n", + "50 PageRank datagen-7_9-fb Object 1909994294 112.681167\n", + "51 BFS cit-Patents Text-C 398055303 154.327360\n", + "52 BFS cit-Patents CSV-C 385629051 143.495254\n", + "53 PageRank cit-Patents Object 5183266070 150.139135\n", + "54 PageRank datagen-7_9-fb Parquet 689544217 132.752273\n", + "55 BFS datagen-7_5-fb CSV 236259401 58.527642\n", + "56 WCC datagen-7_9-fb CSV 188742920 84.156374\n", + "57 BFS graph500-22 Avro 44691531 36.402101\n", + "58 WCC datagen-7_9-fb JSON-C 65163688 84.266331\n", + "59 PageRank cit-Patents JSON 3966665712 156.517652\n", + "60 PageRank datagen-7_5-fb CSV-C 192423799 96.037768\n", + "61 PageRank datagen-7_5-fb Avro 316673397 76.722820\n", + "62 BFS graph500-22 Text-C 31505964 39.143989\n", + "63 PageRank datagen-7_9-fb CSV 1146723471 128.338321\n", + "64 SSSP datagen-7_5-fb ORC 71897099 52.215042\n", + "65 SSSP datagen-7_9-fb Parquet 179527558 119.342097\n", + "66 WCC datagen-7_5-fb JSON-C 28326435 48.553854\n", + "67 WCC datagen-7_5-fb Text-C 26006632 39.843927\n", + "68 BFS datagen-7_9-fb CSV 534677441 71.025003\n", + "69 WCC cit-Patents Avro 592224379 190.187893\n", + "70 PageRank datagen-7_5-fb ORC 297074263 77.929319\n", + "71 WCC cit-Patents JSON 2051574660 191.091221\n", + "72 PageRank cit-Patents CSV 2645496912 162.602287\n", + "73 BFS datagen-7_9-fb Avro 171065610 93.661136\n", + "74 WCC cit-Patents JSON-C 450465794 218.128612\n", + "75 SSSP datagen-7_5-fb Avro 92135619 51.669206\n", + "76 BFS datagen-7_5-fb Avro 72546300 53.117164\n", + "77 PageRank cit-Patents ORC 1137685330 223.422605\n", + "78 PageRank datagen-7_5-fb JSON-C 205761319 90.446040\n", + "79 BFS graph500-22 CSV 199414170 41.448111\n", + "80 SSSP datagen-7_5-fb Parquet 76433347 50.267594\n", + "81 WCC cit-Patents ORC 386872327 200.915941\n", + "82 SSSP datagen-7_9-fb CSV-C 155018101 91.421126\n", + "83 PageRank cit-Patents Text-C 997108236 253.336648\n", + "84 WCC datagen-7_5-fb Parquet 38931680 43.780985\n", + "85 PageRank cit-Patents Parquet 1593606785 173.286136\n", + "86 BFS graph500-22 Object 370356939 40.123198\n", + "87 BFS graph500-22 JSON-C 32247729 39.219499\n", + "88 BFS cit-Patents Parquet 452688486 110.955192\n", + "89 BFS datagen-7_5-fb JSON-C 53194680 57.547191\n", + "90 PageRank datagen-7_5-fb CSV 521026924 68.511904\n", + "91 BFS cit-Patents JSON-C 411310835 134.970226\n", + "92 WCC datagen-7_9-fb Avro 92261354 77.486517\n", + "93 BFS datagen-7_9-fb JSON-C 127350354 132.247397\n", + "94 BFS datagen-7_5-fb Parquet 61961248 48.867018\n", + "95 BFS cit-Patents CSV 2351958475 117.176385\n", + "96 BFS datagen-7_9-fb Parquet 143053677 105.884096\n", + "97 SSSP datagen-7_5-fb Text-C 63702151 52.306789\n", + "98 PageRank cit-Patents JSON-C 1056694971 226.337767\n", + "99 PageRank datagen-7_5-fb JSON 742730834 70.591457\n", + "100 SSSP datagen-7_9-fb Object 1383979824 79.587845\n", + "101 WCC datagen-7_5-fb CSV 85158132 45.861275\n", + "102 SSSP datagen-7_5-fb JSON 383891057 46.925169\n", + "103 BFS datagen-7_5-fb CSV-C 48690774 57.120579\n", + "104 BFS cit-Patents Object 4470241541 119.315761\n", + "105 SSSP datagen-7_5-fb Object 596692316 49.207567\n", + "106 BFS graph500-22 Text 213794112 37.135303\n", + "107 SSSP datagen-7_9-fb Text 601133226 98.981582\n", + "108 PageRank datagen-8_4-fb Text 3331385809 362.998825\n", + "109 BFS datagen-7_5-fb Text 256529225 43.167773\n", + "110 WCC graph500-22 Text 268114309 72.910509\n", + "111 PageRank datagen-8_8-zf Text 40426605492 889.399285\n", + "112 BFS cit-Patents Text 2525597803 111.367214\n", + "113 BFS datagen-7_9-fb Text 581855399 90.477825\n", + "114 WCC datagen-7_5-fb Text 94026180 43.913258\n", + "115 BFS datagen-8_4-fb Text 1929106864 229.720098\n", + "116 WCC datagen-7_9-fb Text 208169138 72.529882\n", + "117 PageRank graph500-22 Text 1783054481 133.397851\n", + "118 PageRank datagen-7_9-fb Text 1216103451 115.509841\n", + "119 WCC cit-Patents Text 1100333124 181.907051\n", + "120 SSSP datagen-8_8-zf Text -2283760778 281.935523\n", + "121 WCC datagen-8_4-fb Text 580609781 240.274523\n", + "122 BFS datagen-8_8-zf Text 20108559480 338.590623\n", + "123 PageRank datagen-7_5-fb Text 552803075 56.884473\n", + "124 SSSP datagen-7_5-fb Text 254670929 44.073837\n", + "125 PageRank cit-Patents Text 2834235312 151.982478\n", + "126 SSSP datagen-8_4-fb Text 1866864826 245.580066" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data_dir = Path(\"das6\") / \"20240521-034221-completeprovenance\"\n", + "storage_formats = parse_experiment_output(root_dir / \"data\" / data_dir)\n", + "storage_formats = storage_formats[[\"algorithm\", \"dataset\", \"storage_format\", \"total_size\", \"duration\"]]\n", + "storage_formats_text_replacement = storage_formats_text.copy(deep=True)\n", + "storage_formats_text_replacement[\"storage_format\"] = \"Text\"\n", + "\n", + "\n", + "storage_formats = storage_formats[storage_formats[\"storage_format\"] != \"Text\"]\n", + "storage_formats = pd.concat([storage_formats, storage_formats_text_replacement], ignore_index=True)\n", + "storage_formats" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "768bdb7a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    algorithmdatasetstorage_formattotal_sizeduration
    106BFSgraph500-22Text21379411237.135303
    107SSSPdatagen-7_9-fbText60113322698.981582
    108PageRankdatagen-8_4-fbText3331385809362.998825
    109BFSdatagen-7_5-fbText25652922543.167773
    110WCCgraph500-22Text26811430972.910509
    111PageRankdatagen-8_8-zfText40426605492889.399285
    112BFScit-PatentsText2525597803111.367214
    113BFSdatagen-7_9-fbText58185539990.477825
    114WCCdatagen-7_5-fbText9402618043.913258
    115BFSdatagen-8_4-fbText1929106864229.720098
    116WCCdatagen-7_9-fbText20816913872.529882
    117PageRankgraph500-22Text1783054481133.397851
    118PageRankdatagen-7_9-fbText1216103451115.509841
    119WCCcit-PatentsText1100333124181.907051
    120SSSPdatagen-8_8-zfText-2283760778281.935523
    121WCCdatagen-8_4-fbText580609781240.274523
    122BFSdatagen-8_8-zfText20108559480338.590623
    123PageRankdatagen-7_5-fbText55280307556.884473
    124SSSPdatagen-7_5-fbText25467092944.073837
    125PageRankcit-PatentsText2834235312151.982478
    126SSSPdatagen-8_4-fbText1866864826245.580066
    \n", + "
    " + ], + "text/plain": [ + " algorithm dataset storage_format total_size duration\n", + "106 BFS graph500-22 Text 213794112 37.135303\n", + "107 SSSP datagen-7_9-fb Text 601133226 98.981582\n", + "108 PageRank datagen-8_4-fb Text 3331385809 362.998825\n", + "109 BFS datagen-7_5-fb Text 256529225 43.167773\n", + "110 WCC graph500-22 Text 268114309 72.910509\n", + "111 PageRank datagen-8_8-zf Text 40426605492 889.399285\n", + "112 BFS cit-Patents Text 2525597803 111.367214\n", + "113 BFS datagen-7_9-fb Text 581855399 90.477825\n", + "114 WCC datagen-7_5-fb Text 94026180 43.913258\n", + "115 BFS datagen-8_4-fb Text 1929106864 229.720098\n", + "116 WCC datagen-7_9-fb Text 208169138 72.529882\n", + "117 PageRank graph500-22 Text 1783054481 133.397851\n", + "118 PageRank datagen-7_9-fb Text 1216103451 115.509841\n", + "119 WCC cit-Patents Text 1100333124 181.907051\n", + "120 SSSP datagen-8_8-zf Text -2283760778 281.935523\n", + "121 WCC datagen-8_4-fb Text 580609781 240.274523\n", + "122 BFS datagen-8_8-zf Text 20108559480 338.590623\n", + "123 PageRank datagen-7_5-fb Text 552803075 56.884473\n", + "124 SSSP datagen-7_5-fb Text 254670929 44.073837\n", + "125 PageRank cit-Patents Text 2834235312 151.982478\n", + "126 SSSP datagen-8_4-fb Text 1866864826 245.580066" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "storage_formats[storage_formats[\"storage_format\"] == \"Text\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "68451bea", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    algorithmdatasettotal_sizeduration
    0BFSgraph500-2221379411237.135303
    1SSSPdatagen-7_9-fb60113322698.981582
    2PageRankdatagen-8_4-fb3331385809362.998825
    3BFSdatagen-7_5-fb25652922543.167773
    4WCCgraph500-2226811430972.910509
    5PageRankdatagen-8_8-zf40426605492889.399285
    6BFScit-Patents2525597803111.367214
    7BFSdatagen-7_9-fb58185539990.477825
    8WCCdatagen-7_5-fb9402618043.913258
    9BFSdatagen-8_4-fb1929106864229.720098
    10WCCdatagen-7_9-fb20816913872.529882
    11PageRankgraph500-221783054481133.397851
    12PageRankdatagen-7_9-fb1216103451115.509841
    13WCCcit-Patents1100333124181.907051
    14SSSPdatagen-8_8-zf-2283760778281.935523
    15WCCdatagen-8_4-fb580609781240.274523
    16BFSdatagen-8_8-zf20108559480338.590623
    17PageRankdatagen-7_5-fb55280307556.884473
    18SSSPdatagen-7_5-fb25467092944.073837
    19PageRankcit-Patents2834235312151.982478
    20SSSPdatagen-8_4-fb1866864826245.580066
    \n", + "
    " + ], + "text/plain": [ + " algorithm dataset total_size duration\n", + "0 BFS graph500-22 213794112 37.135303\n", + "1 SSSP datagen-7_9-fb 601133226 98.981582\n", + "2 PageRank datagen-8_4-fb 3331385809 362.998825\n", + "3 BFS datagen-7_5-fb 256529225 43.167773\n", + "4 WCC graph500-22 268114309 72.910509\n", + "5 PageRank datagen-8_8-zf 40426605492 889.399285\n", + "6 BFS cit-Patents 2525597803 111.367214\n", + "7 BFS datagen-7_9-fb 581855399 90.477825\n", + "8 WCC datagen-7_5-fb 94026180 43.913258\n", + "9 BFS datagen-8_4-fb 1929106864 229.720098\n", + "10 WCC datagen-7_9-fb 208169138 72.529882\n", + "11 PageRank graph500-22 1783054481 133.397851\n", + "12 PageRank datagen-7_9-fb 1216103451 115.509841\n", + "13 WCC cit-Patents 1100333124 181.907051\n", + "14 SSSP datagen-8_8-zf -2283760778 281.935523\n", + "15 WCC datagen-8_4-fb 580609781 240.274523\n", + "16 BFS datagen-8_8-zf 20108559480 338.590623\n", + "17 PageRank datagen-7_5-fb 552803075 56.884473\n", + "18 SSSP datagen-7_5-fb 254670929 44.073837\n", + "19 PageRank cit-Patents 2834235312 151.982478\n", + "20 SSSP datagen-8_4-fb 1866864826 245.580066" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# storage_baseline = storage_formats[storage_formats[\"storage_format\"] == \"Text\"].copy(deep=True)\n", + "# storage_baseline.drop([\"storage_format\"], axis=1, inplace=True)\n", + "# storage_baseline.rename(columns={\"total_size\": \"size\"}, inplace=True)\n", + "# storage_baseline.sort_values(by=[\"algorithm\", \"dataset\"])\n", + "# pd.merge(storage_baseline, dataset_sizes, on=[\"algorithm\", \"dataset\"], suffixes=(\"_storageformats\", \"_baseline\"))\n", + "\n", + "storage_baseline = storage_formats_text\n", + "storage_baseline\n" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "0d090994-22be-4041-a069-d42fbf206436", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    algorithmdatasetstorage_formattotal_size_storageformatsduration_storageformatstotal_size_baselineduration_baselineoverhead_durationoverhead_size
    0BFSdatagen-7_5-fbORC5827492050.86848425652922543.1677731.1783900.227167
    1BFSdatagen-7_5-fbObject48760199541.67533225652922543.1677730.9654271.900766
    2BFSdatagen-7_5-fbText-C4926596057.70986725652922543.1677731.3368740.192048
    3BFSdatagen-7_5-fbJSON37814816948.64372025652922543.1677731.1268531.474094
    4BFSdatagen-7_5-fbCSV23625940158.52764225652922543.1677731.3558180.920984
    5BFSdatagen-7_5-fbAvro7254630053.11716425652922543.1677731.2304820.282799
    6BFSdatagen-7_5-fbJSON-C5319468057.54719125652922543.1677731.3331050.207363
    7BFSdatagen-7_5-fbParquet6196124848.86701825652922543.1677731.1320250.241537
    8BFSdatagen-7_5-fbCSV-C4869077457.12057925652922543.1677731.3232230.189806
    9BFSdatagen-7_5-fbText25652922543.16777325652922543.1677731.0000001.000000
    10BFSgraph500-22Parquet3619625143.21225821379411237.1353031.1636440.169304
    11BFSgraph500-22ORC2162581840.42839021379411237.1353031.0886780.101153
    12BFSgraph500-22Avro4469153136.40210121379411237.1353030.9802560.209040
    13BFSgraph500-22Text-C3150596439.14398921379411237.1353031.0540910.147366
    14BFSgraph500-22CSV19941417041.44811121379411237.1353031.1161380.932739
    15BFSgraph500-22Object37035693940.12319821379411237.1353031.0804601.732307
    16BFSgraph500-22JSON-C3224772939.21949921379411237.1353031.0561240.150835
    17BFSgraph500-22Text21379411237.13530321379411237.1353031.0000001.000000
    18PageRankdatagen-7_9-fbJSON1632380079124.2432491216103451115.5098411.0756071.342304
    19PageRankdatagen-7_9-fbJSON-C457450553156.3347771216103451115.5098411.3534330.376161
    20PageRankdatagen-7_9-fbAvro701125212142.8844791216103451115.5098411.2369900.576534
    21PageRankdatagen-7_9-fbText-C433388860165.5606271216103451115.5098411.4333030.356375
    22PageRankdatagen-7_9-fbORC654589137137.3984041216103451115.5098411.1894950.538268
    23PageRankdatagen-7_9-fbCSV-C428773253164.0059721216103451115.5098411.4198440.352580
    24PageRankdatagen-7_9-fbObject1909994294112.6811671216103451115.5098410.9755111.570585
    25PageRankdatagen-7_9-fbParquet689544217132.7522731216103451115.5098411.1492720.567011
    26PageRankdatagen-7_9-fbCSV1146723471128.3383211216103451115.5098411.1110600.942949
    27PageRankdatagen-7_9-fbText1216103451115.5098411216103451115.5098411.0000001.000000
    28BFSdatagen-7_9-fbORC135877889104.05275858185539990.4778251.1500360.233525
    29BFSdatagen-7_9-fbJSON86492314767.91772458185539990.4778250.7506561.486492
    30BFSdatagen-7_9-fbCSV-C116209136128.82919958185539990.4778251.4238760.199722
    31BFSdatagen-7_9-fbObject1128077456106.63041958185539990.4778251.1785251.938759
    32BFSdatagen-7_9-fbText-C11740740090.13975958185539990.4778250.9962640.201781
    33BFSdatagen-7_9-fbCSV53467744171.02500358185539990.4778250.7849990.918918
    34BFSdatagen-7_9-fbAvro17106561093.66113658185539990.4778251.0351830.294000
    35BFSdatagen-7_9-fbJSON-C127350354132.24739758185539990.4778251.4616550.218869
    36BFSdatagen-7_9-fbParquet143053677105.88409658185539990.4778251.1702770.245858
    37BFSdatagen-7_9-fbText58185539990.47782558185539990.4778251.0000001.000000
    38SSSPdatagen-7_9-fbJSON-C170232558111.01164260113322698.9815821.1215380.283186
    39SSSPdatagen-7_9-fbCSV55118009478.07281360113322698.9815820.7887610.916902
    40SSSPdatagen-7_9-fbAvro22682260679.60825760113322698.9815820.8042730.377325
    41SSSPdatagen-7_9-fbText-C158049578137.10861360113322698.9815821.3851930.262919
    42SSSPdatagen-7_9-fbJSON90085201897.88764460113322698.9815820.9889481.498590
    43SSSPdatagen-7_9-fbORC169444993101.73537260113322698.9815821.0278210.281876
    44SSSPdatagen-7_9-fbParquet179527558119.34209760113322698.9815821.2057000.298649
    45SSSPdatagen-7_9-fbCSV-C15501810191.42112660113322698.9815820.9236180.257876
    46SSSPdatagen-7_9-fbObject138397982479.58784560113322698.9815820.8040672.302285
    47SSSPdatagen-7_9-fbText60113322698.98158260113322698.9815821.0000001.000000
    48WCCcit-PatentsCSV941792868200.7979591100333124181.9070511.1038490.855916
    49WCCcit-PatentsObject3730315659197.9244201100333124181.9070511.0880523.390169
    50WCCcit-PatentsParquet565433425191.3013331100333124181.9070511.0516430.513875
    51WCCcit-PatentsText-C410716445244.6962761100333124181.9070511.3451720.373266
    52WCCcit-PatentsCSV-C390512385231.8183501100333124181.9070511.2743780.354904
    53WCCcit-PatentsAvro592224379190.1878931100333124181.9070511.0455220.538223
    54WCCcit-PatentsJSON2051574660191.0912211100333124181.9070511.0504881.864503
    55WCCcit-PatentsJSON-C450465794218.1286121100333124181.9070511.1991210.409390
    56WCCcit-PatentsORC386872327200.9159411100333124181.9070511.1044980.351596
    57WCCcit-PatentsText1100333124181.9070511100333124181.9070511.0000001.000000
    58SSSPdatagen-7_5-fbJSON-C6879111259.96930525467092944.0738371.3606550.270118
    59SSSPdatagen-7_5-fbCSV-C6237031660.17728825467092944.0738371.3653740.244906
    60SSSPdatagen-7_5-fbCSV23313424152.04237625467092944.0738371.1808000.915433
    61SSSPdatagen-7_5-fbORC7189709952.21504225467092944.0738371.1847170.282314
    62SSSPdatagen-7_5-fbAvro9213561951.66920625467092944.0738371.1723330.361783
    63SSSPdatagen-7_5-fbParquet7643334750.26759425467092944.0738371.1405310.300126
    64SSSPdatagen-7_5-fbText-C6370215152.30678925467092944.0738371.1867990.250135
    65SSSPdatagen-7_5-fbJSON38389105746.92516925467092944.0738371.0646941.507400
    66SSSPdatagen-7_5-fbObject59669231649.20756725467092944.0738371.1164802.342993
    67SSSPdatagen-7_5-fbText25467092944.07383725467092944.0738371.0000001.000000
    68WCCdatagen-7_9-fbCSV-C5754928884.31430320816913872.5298821.1624770.276454
    69WCCdatagen-7_9-fbText-C5973665184.03262220816913872.5298821.1585930.286962
    70WCCdatagen-7_9-fbJSON32472644689.65215820816913872.5298821.2360721.559916
    71WCCdatagen-7_9-fbORC8204997978.46257020816913872.5298821.0817960.394151
    72WCCdatagen-7_9-fbParquet8814124684.25409620816913872.5298821.1616470.423412
    73WCCdatagen-7_9-fbObject46973596483.42591420816913872.5298821.1502282.256511
    74WCCdatagen-7_9-fbCSV18874292084.15637420816913872.5298821.1602990.906681
    75WCCdatagen-7_9-fbJSON-C6516368884.26633120816913872.5298821.1618150.313032
    76WCCdatagen-7_9-fbAvro9226135477.48651720816913872.5298821.0683390.443204
    77WCCdatagen-7_9-fbText20816913872.52988220816913872.5298821.0000001.000000
    78PageRankdatagen-7_5-fbParquet31471226670.95742355280307556.8844731.2473950.569303
    79PageRankdatagen-7_5-fbText-C19475891789.17634555280307556.8844731.5676750.352312
    80PageRankdatagen-7_5-fbObject87193391462.71992255280307556.8844731.1025841.577296
    81PageRankdatagen-7_5-fbCSV-C19242379996.03776855280307556.8844731.6882950.348087
    82PageRankdatagen-7_5-fbAvro31667339776.72282055280307556.8844731.3487480.572850
    83PageRankdatagen-7_5-fbORC29707426377.92931955280307556.8844731.3699580.537396
    84PageRankdatagen-7_5-fbJSON-C20576131990.44604055280307556.8844731.5899950.372214
    85PageRankdatagen-7_5-fbCSV52102692468.51190455280307556.8844731.2044040.942518
    86PageRankdatagen-7_5-fbJSON74273083470.59145755280307556.8844731.2409621.343572
    87PageRankdatagen-7_5-fbText55280307556.88447355280307556.8844731.0000001.000000
    88PageRankcit-PatentsCSV-C981249822245.7281752834235312151.9824781.6168190.346213
    89PageRankcit-PatentsAvro1589606305160.5031872834235312151.9824781.0560640.560859
    90PageRankcit-PatentsObject5183266070150.1391352834235312151.9824780.9878711.828806
    91PageRankcit-PatentsJSON3966665712156.5176522834235312151.9824781.0298401.399554
    92PageRankcit-PatentsCSV2645496912162.6022872834235312151.9824781.0698750.933408
    93PageRankcit-PatentsORC1137685330223.4226052834235312151.9824781.4700550.401408
    94PageRankcit-PatentsText-C997108236253.3366482834235312151.9824781.6668810.351809
    95PageRankcit-PatentsParquet1593606785173.2861362834235312151.9824781.1401720.562270
    96PageRankcit-PatentsJSON-C1056694971226.3377672834235312151.9824781.4892360.372832
    97PageRankcit-PatentsText2834235312151.9824782834235312151.9824781.0000001.000000
    98BFScit-PatentsAvro548177668110.7124512525597803111.3672140.9941210.217049
    99BFScit-PatentsJSON3567433771107.6383742525597803111.3672140.9665181.412511
    100BFScit-PatentsORC272126547113.8154722525597803111.3672141.0219840.107747
    101BFScit-PatentsText-C398055303154.3273602525597803111.3672141.3857520.157608
    102BFScit-PatentsCSV-C385629051143.4952542525597803111.3672141.2884870.152688
    103BFScit-PatentsParquet452688486110.9551922525597803111.3672140.9963000.179240
    104BFScit-PatentsJSON-C411310835134.9702262525597803111.3672141.2119390.162857
    105BFScit-PatentsCSV2351958475117.1763852525597803111.3672141.0521620.931248
    106BFScit-PatentsObject4470241541119.3157612525597803111.3672141.0713721.769974
    107BFScit-PatentsText2525597803111.3672142525597803111.3672141.0000001.000000
    108WCCdatagen-7_5-fbORC3593252742.8044649402618043.9132580.9747500.382154
    109WCCdatagen-7_5-fbCSV-C2501254546.1183349402618043.9132581.0502140.266017
    110WCCdatagen-7_5-fbObject21350702947.0376339402618043.9132581.0711492.270719
    111WCCdatagen-7_5-fbJSON14723446843.2277699402618043.9132580.9843901.565888
    112WCCdatagen-7_5-fbAvro4044080844.9663249402618043.9132581.0239810.430102
    113WCCdatagen-7_5-fbJSON-C2832643548.5538549402618043.9132581.1056760.301261
    114WCCdatagen-7_5-fbText-C2600663239.8439279402618043.9132580.9073330.276589
    115WCCdatagen-7_5-fbParquet3893168043.7809859402618043.9132580.9969880.414051
    116WCCdatagen-7_5-fbCSV8515813245.8612759402618043.9132581.0443610.905685
    117WCCdatagen-7_5-fbText9402618043.9132589402618043.9132581.0000001.000000
    118PageRankdatagen-8_4-fbText3331385809362.9988253331385809362.9988251.0000001.000000
    119WCCgraph500-22Text26811430972.91050926811430972.9105091.0000001.000000
    120PageRankdatagen-8_8-zfText40426605492889.39928540426605492889.3992851.0000001.000000
    121BFSdatagen-8_4-fbText1929106864229.7200981929106864229.7200981.0000001.000000
    122PageRankgraph500-22Text1783054481133.3978511783054481133.3978511.0000001.000000
    123SSSPdatagen-8_8-zfText-2283760778281.935523-2283760778281.9355231.0000001.000000
    124WCCdatagen-8_4-fbText580609781240.274523580609781240.2745231.0000001.000000
    125BFSdatagen-8_8-zfText20108559480338.59062320108559480338.5906231.0000001.000000
    126SSSPdatagen-8_4-fbText1866864826245.5800661866864826245.5800661.0000001.000000
    \n", + "
    " + ], + "text/plain": [ + " algorithm dataset storage_format total_size_storageformats \\\n", + "0 BFS datagen-7_5-fb ORC 58274920 \n", + "1 BFS datagen-7_5-fb Object 487601995 \n", + "2 BFS datagen-7_5-fb Text-C 49265960 \n", + "3 BFS datagen-7_5-fb JSON 378148169 \n", + "4 BFS datagen-7_5-fb CSV 236259401 \n", + "5 BFS datagen-7_5-fb Avro 72546300 \n", + "6 BFS datagen-7_5-fb JSON-C 53194680 \n", + "7 BFS datagen-7_5-fb Parquet 61961248 \n", + "8 BFS datagen-7_5-fb CSV-C 48690774 \n", + "9 BFS datagen-7_5-fb Text 256529225 \n", + "10 BFS graph500-22 Parquet 36196251 \n", + "11 BFS graph500-22 ORC 21625818 \n", + "12 BFS graph500-22 Avro 44691531 \n", + "13 BFS graph500-22 Text-C 31505964 \n", + "14 BFS graph500-22 CSV 199414170 \n", + "15 BFS graph500-22 Object 370356939 \n", + "16 BFS graph500-22 JSON-C 32247729 \n", + "17 BFS graph500-22 Text 213794112 \n", + "18 PageRank datagen-7_9-fb JSON 1632380079 \n", + "19 PageRank datagen-7_9-fb JSON-C 457450553 \n", + "20 PageRank datagen-7_9-fb Avro 701125212 \n", + "21 PageRank datagen-7_9-fb Text-C 433388860 \n", + "22 PageRank datagen-7_9-fb ORC 654589137 \n", + "23 PageRank datagen-7_9-fb CSV-C 428773253 \n", + "24 PageRank datagen-7_9-fb Object 1909994294 \n", + "25 PageRank datagen-7_9-fb Parquet 689544217 \n", + "26 PageRank datagen-7_9-fb CSV 1146723471 \n", + "27 PageRank datagen-7_9-fb Text 1216103451 \n", + "28 BFS datagen-7_9-fb ORC 135877889 \n", + "29 BFS datagen-7_9-fb JSON 864923147 \n", + "30 BFS datagen-7_9-fb CSV-C 116209136 \n", + "31 BFS datagen-7_9-fb Object 1128077456 \n", + "32 BFS datagen-7_9-fb Text-C 117407400 \n", + "33 BFS datagen-7_9-fb CSV 534677441 \n", + "34 BFS datagen-7_9-fb Avro 171065610 \n", + "35 BFS datagen-7_9-fb JSON-C 127350354 \n", + "36 BFS datagen-7_9-fb Parquet 143053677 \n", + "37 BFS datagen-7_9-fb Text 581855399 \n", + "38 SSSP datagen-7_9-fb JSON-C 170232558 \n", + "39 SSSP datagen-7_9-fb CSV 551180094 \n", + "40 SSSP datagen-7_9-fb Avro 226822606 \n", + "41 SSSP datagen-7_9-fb Text-C 158049578 \n", + "42 SSSP datagen-7_9-fb JSON 900852018 \n", + "43 SSSP datagen-7_9-fb ORC 169444993 \n", + "44 SSSP datagen-7_9-fb Parquet 179527558 \n", + "45 SSSP datagen-7_9-fb CSV-C 155018101 \n", + "46 SSSP datagen-7_9-fb Object 1383979824 \n", + "47 SSSP datagen-7_9-fb Text 601133226 \n", + "48 WCC cit-Patents CSV 941792868 \n", + "49 WCC cit-Patents Object 3730315659 \n", + "50 WCC cit-Patents Parquet 565433425 \n", + "51 WCC cit-Patents Text-C 410716445 \n", + "52 WCC cit-Patents CSV-C 390512385 \n", + "53 WCC cit-Patents Avro 592224379 \n", + "54 WCC cit-Patents JSON 2051574660 \n", + "55 WCC cit-Patents JSON-C 450465794 \n", + "56 WCC cit-Patents ORC 386872327 \n", + "57 WCC cit-Patents Text 1100333124 \n", + "58 SSSP datagen-7_5-fb JSON-C 68791112 \n", + "59 SSSP datagen-7_5-fb CSV-C 62370316 \n", + "60 SSSP datagen-7_5-fb CSV 233134241 \n", + "61 SSSP datagen-7_5-fb ORC 71897099 \n", + "62 SSSP datagen-7_5-fb Avro 92135619 \n", + "63 SSSP datagen-7_5-fb Parquet 76433347 \n", + "64 SSSP datagen-7_5-fb Text-C 63702151 \n", + "65 SSSP datagen-7_5-fb JSON 383891057 \n", + "66 SSSP datagen-7_5-fb Object 596692316 \n", + "67 SSSP datagen-7_5-fb Text 254670929 \n", + "68 WCC datagen-7_9-fb CSV-C 57549288 \n", + "69 WCC datagen-7_9-fb Text-C 59736651 \n", + "70 WCC datagen-7_9-fb JSON 324726446 \n", + "71 WCC datagen-7_9-fb ORC 82049979 \n", + "72 WCC datagen-7_9-fb Parquet 88141246 \n", + "73 WCC datagen-7_9-fb Object 469735964 \n", + "74 WCC datagen-7_9-fb CSV 188742920 \n", + "75 WCC datagen-7_9-fb JSON-C 65163688 \n", + "76 WCC datagen-7_9-fb Avro 92261354 \n", + "77 WCC datagen-7_9-fb Text 208169138 \n", + "78 PageRank datagen-7_5-fb Parquet 314712266 \n", + "79 PageRank datagen-7_5-fb Text-C 194758917 \n", + "80 PageRank datagen-7_5-fb Object 871933914 \n", + "81 PageRank datagen-7_5-fb CSV-C 192423799 \n", + "82 PageRank datagen-7_5-fb Avro 316673397 \n", + "83 PageRank datagen-7_5-fb ORC 297074263 \n", + "84 PageRank datagen-7_5-fb JSON-C 205761319 \n", + "85 PageRank datagen-7_5-fb CSV 521026924 \n", + "86 PageRank datagen-7_5-fb JSON 742730834 \n", + "87 PageRank datagen-7_5-fb Text 552803075 \n", + "88 PageRank cit-Patents CSV-C 981249822 \n", + "89 PageRank cit-Patents Avro 1589606305 \n", + "90 PageRank cit-Patents Object 5183266070 \n", + "91 PageRank cit-Patents JSON 3966665712 \n", + "92 PageRank cit-Patents CSV 2645496912 \n", + "93 PageRank cit-Patents ORC 1137685330 \n", + "94 PageRank cit-Patents Text-C 997108236 \n", + "95 PageRank cit-Patents Parquet 1593606785 \n", + "96 PageRank cit-Patents JSON-C 1056694971 \n", + "97 PageRank cit-Patents Text 2834235312 \n", + "98 BFS cit-Patents Avro 548177668 \n", + "99 BFS cit-Patents JSON 3567433771 \n", + "100 BFS cit-Patents ORC 272126547 \n", + "101 BFS cit-Patents Text-C 398055303 \n", + "102 BFS cit-Patents CSV-C 385629051 \n", + "103 BFS cit-Patents Parquet 452688486 \n", + "104 BFS cit-Patents JSON-C 411310835 \n", + "105 BFS cit-Patents CSV 2351958475 \n", + "106 BFS cit-Patents Object 4470241541 \n", + "107 BFS cit-Patents Text 2525597803 \n", + "108 WCC datagen-7_5-fb ORC 35932527 \n", + "109 WCC datagen-7_5-fb CSV-C 25012545 \n", + "110 WCC datagen-7_5-fb Object 213507029 \n", + "111 WCC datagen-7_5-fb JSON 147234468 \n", + "112 WCC datagen-7_5-fb Avro 40440808 \n", + "113 WCC datagen-7_5-fb JSON-C 28326435 \n", + "114 WCC datagen-7_5-fb Text-C 26006632 \n", + "115 WCC datagen-7_5-fb Parquet 38931680 \n", + "116 WCC datagen-7_5-fb CSV 85158132 \n", + "117 WCC datagen-7_5-fb Text 94026180 \n", + "118 PageRank datagen-8_4-fb Text 3331385809 \n", + "119 WCC graph500-22 Text 268114309 \n", + "120 PageRank datagen-8_8-zf Text 40426605492 \n", + "121 BFS datagen-8_4-fb Text 1929106864 \n", + "122 PageRank graph500-22 Text 1783054481 \n", + "123 SSSP datagen-8_8-zf Text -2283760778 \n", + "124 WCC datagen-8_4-fb Text 580609781 \n", + "125 BFS datagen-8_8-zf Text 20108559480 \n", + "126 SSSP datagen-8_4-fb Text 1866864826 \n", + "\n", + " duration_storageformats total_size_baseline duration_baseline \\\n", + "0 50.868484 256529225 43.167773 \n", + "1 41.675332 256529225 43.167773 \n", + "2 57.709867 256529225 43.167773 \n", + "3 48.643720 256529225 43.167773 \n", + "4 58.527642 256529225 43.167773 \n", + "5 53.117164 256529225 43.167773 \n", + "6 57.547191 256529225 43.167773 \n", + "7 48.867018 256529225 43.167773 \n", + "8 57.120579 256529225 43.167773 \n", + "9 43.167773 256529225 43.167773 \n", + "10 43.212258 213794112 37.135303 \n", + "11 40.428390 213794112 37.135303 \n", + "12 36.402101 213794112 37.135303 \n", + "13 39.143989 213794112 37.135303 \n", + "14 41.448111 213794112 37.135303 \n", + "15 40.123198 213794112 37.135303 \n", + "16 39.219499 213794112 37.135303 \n", + "17 37.135303 213794112 37.135303 \n", + "18 124.243249 1216103451 115.509841 \n", + "19 156.334777 1216103451 115.509841 \n", + "20 142.884479 1216103451 115.509841 \n", + "21 165.560627 1216103451 115.509841 \n", + "22 137.398404 1216103451 115.509841 \n", + "23 164.005972 1216103451 115.509841 \n", + "24 112.681167 1216103451 115.509841 \n", + "25 132.752273 1216103451 115.509841 \n", + "26 128.338321 1216103451 115.509841 \n", + "27 115.509841 1216103451 115.509841 \n", + "28 104.052758 581855399 90.477825 \n", + "29 67.917724 581855399 90.477825 \n", + "30 128.829199 581855399 90.477825 \n", + "31 106.630419 581855399 90.477825 \n", + "32 90.139759 581855399 90.477825 \n", + "33 71.025003 581855399 90.477825 \n", + "34 93.661136 581855399 90.477825 \n", + "35 132.247397 581855399 90.477825 \n", + "36 105.884096 581855399 90.477825 \n", + "37 90.477825 581855399 90.477825 \n", + "38 111.011642 601133226 98.981582 \n", + "39 78.072813 601133226 98.981582 \n", + "40 79.608257 601133226 98.981582 \n", + "41 137.108613 601133226 98.981582 \n", + "42 97.887644 601133226 98.981582 \n", + "43 101.735372 601133226 98.981582 \n", + "44 119.342097 601133226 98.981582 \n", + "45 91.421126 601133226 98.981582 \n", + "46 79.587845 601133226 98.981582 \n", + "47 98.981582 601133226 98.981582 \n", + "48 200.797959 1100333124 181.907051 \n", + "49 197.924420 1100333124 181.907051 \n", + "50 191.301333 1100333124 181.907051 \n", + "51 244.696276 1100333124 181.907051 \n", + "52 231.818350 1100333124 181.907051 \n", + "53 190.187893 1100333124 181.907051 \n", + "54 191.091221 1100333124 181.907051 \n", + "55 218.128612 1100333124 181.907051 \n", + "56 200.915941 1100333124 181.907051 \n", + "57 181.907051 1100333124 181.907051 \n", + "58 59.969305 254670929 44.073837 \n", + "59 60.177288 254670929 44.073837 \n", + "60 52.042376 254670929 44.073837 \n", + "61 52.215042 254670929 44.073837 \n", + "62 51.669206 254670929 44.073837 \n", + "63 50.267594 254670929 44.073837 \n", + "64 52.306789 254670929 44.073837 \n", + "65 46.925169 254670929 44.073837 \n", + "66 49.207567 254670929 44.073837 \n", + "67 44.073837 254670929 44.073837 \n", + "68 84.314303 208169138 72.529882 \n", + "69 84.032622 208169138 72.529882 \n", + "70 89.652158 208169138 72.529882 \n", + "71 78.462570 208169138 72.529882 \n", + "72 84.254096 208169138 72.529882 \n", + "73 83.425914 208169138 72.529882 \n", + "74 84.156374 208169138 72.529882 \n", + "75 84.266331 208169138 72.529882 \n", + "76 77.486517 208169138 72.529882 \n", + "77 72.529882 208169138 72.529882 \n", + "78 70.957423 552803075 56.884473 \n", + "79 89.176345 552803075 56.884473 \n", + "80 62.719922 552803075 56.884473 \n", + "81 96.037768 552803075 56.884473 \n", + "82 76.722820 552803075 56.884473 \n", + "83 77.929319 552803075 56.884473 \n", + "84 90.446040 552803075 56.884473 \n", + "85 68.511904 552803075 56.884473 \n", + "86 70.591457 552803075 56.884473 \n", + "87 56.884473 552803075 56.884473 \n", + "88 245.728175 2834235312 151.982478 \n", + "89 160.503187 2834235312 151.982478 \n", + "90 150.139135 2834235312 151.982478 \n", + "91 156.517652 2834235312 151.982478 \n", + "92 162.602287 2834235312 151.982478 \n", + "93 223.422605 2834235312 151.982478 \n", + "94 253.336648 2834235312 151.982478 \n", + "95 173.286136 2834235312 151.982478 \n", + "96 226.337767 2834235312 151.982478 \n", + "97 151.982478 2834235312 151.982478 \n", + "98 110.712451 2525597803 111.367214 \n", + "99 107.638374 2525597803 111.367214 \n", + "100 113.815472 2525597803 111.367214 \n", + "101 154.327360 2525597803 111.367214 \n", + "102 143.495254 2525597803 111.367214 \n", + "103 110.955192 2525597803 111.367214 \n", + "104 134.970226 2525597803 111.367214 \n", + "105 117.176385 2525597803 111.367214 \n", + "106 119.315761 2525597803 111.367214 \n", + "107 111.367214 2525597803 111.367214 \n", + "108 42.804464 94026180 43.913258 \n", + "109 46.118334 94026180 43.913258 \n", + "110 47.037633 94026180 43.913258 \n", + "111 43.227769 94026180 43.913258 \n", + "112 44.966324 94026180 43.913258 \n", + "113 48.553854 94026180 43.913258 \n", + "114 39.843927 94026180 43.913258 \n", + "115 43.780985 94026180 43.913258 \n", + "116 45.861275 94026180 43.913258 \n", + "117 43.913258 94026180 43.913258 \n", + "118 362.998825 3331385809 362.998825 \n", + "119 72.910509 268114309 72.910509 \n", + "120 889.399285 40426605492 889.399285 \n", + "121 229.720098 1929106864 229.720098 \n", + "122 133.397851 1783054481 133.397851 \n", + "123 281.935523 -2283760778 281.935523 \n", + "124 240.274523 580609781 240.274523 \n", + "125 338.590623 20108559480 338.590623 \n", + "126 245.580066 1866864826 245.580066 \n", + "\n", + " overhead_duration overhead_size \n", + "0 1.178390 0.227167 \n", + "1 0.965427 1.900766 \n", + "2 1.336874 0.192048 \n", + "3 1.126853 1.474094 \n", + "4 1.355818 0.920984 \n", + "5 1.230482 0.282799 \n", + "6 1.333105 0.207363 \n", + "7 1.132025 0.241537 \n", + "8 1.323223 0.189806 \n", + "9 1.000000 1.000000 \n", + "10 1.163644 0.169304 \n", + "11 1.088678 0.101153 \n", + "12 0.980256 0.209040 \n", + "13 1.054091 0.147366 \n", + "14 1.116138 0.932739 \n", + "15 1.080460 1.732307 \n", + "16 1.056124 0.150835 \n", + "17 1.000000 1.000000 \n", + "18 1.075607 1.342304 \n", + "19 1.353433 0.376161 \n", + "20 1.236990 0.576534 \n", + "21 1.433303 0.356375 \n", + "22 1.189495 0.538268 \n", + "23 1.419844 0.352580 \n", + "24 0.975511 1.570585 \n", + "25 1.149272 0.567011 \n", + "26 1.111060 0.942949 \n", + "27 1.000000 1.000000 \n", + "28 1.150036 0.233525 \n", + "29 0.750656 1.486492 \n", + "30 1.423876 0.199722 \n", + "31 1.178525 1.938759 \n", + "32 0.996264 0.201781 \n", + "33 0.784999 0.918918 \n", + "34 1.035183 0.294000 \n", + "35 1.461655 0.218869 \n", + "36 1.170277 0.245858 \n", + "37 1.000000 1.000000 \n", + "38 1.121538 0.283186 \n", + "39 0.788761 0.916902 \n", + "40 0.804273 0.377325 \n", + "41 1.385193 0.262919 \n", + "42 0.988948 1.498590 \n", + "43 1.027821 0.281876 \n", + "44 1.205700 0.298649 \n", + "45 0.923618 0.257876 \n", + "46 0.804067 2.302285 \n", + "47 1.000000 1.000000 \n", + "48 1.103849 0.855916 \n", + "49 1.088052 3.390169 \n", + "50 1.051643 0.513875 \n", + "51 1.345172 0.373266 \n", + "52 1.274378 0.354904 \n", + "53 1.045522 0.538223 \n", + "54 1.050488 1.864503 \n", + "55 1.199121 0.409390 \n", + "56 1.104498 0.351596 \n", + "57 1.000000 1.000000 \n", + "58 1.360655 0.270118 \n", + "59 1.365374 0.244906 \n", + "60 1.180800 0.915433 \n", + "61 1.184717 0.282314 \n", + "62 1.172333 0.361783 \n", + "63 1.140531 0.300126 \n", + "64 1.186799 0.250135 \n", + "65 1.064694 1.507400 \n", + "66 1.116480 2.342993 \n", + "67 1.000000 1.000000 \n", + "68 1.162477 0.276454 \n", + "69 1.158593 0.286962 \n", + "70 1.236072 1.559916 \n", + "71 1.081796 0.394151 \n", + "72 1.161647 0.423412 \n", + "73 1.150228 2.256511 \n", + "74 1.160299 0.906681 \n", + "75 1.161815 0.313032 \n", + "76 1.068339 0.443204 \n", + "77 1.000000 1.000000 \n", + "78 1.247395 0.569303 \n", + "79 1.567675 0.352312 \n", + "80 1.102584 1.577296 \n", + "81 1.688295 0.348087 \n", + "82 1.348748 0.572850 \n", + "83 1.369958 0.537396 \n", + "84 1.589995 0.372214 \n", + "85 1.204404 0.942518 \n", + "86 1.240962 1.343572 \n", + "87 1.000000 1.000000 \n", + "88 1.616819 0.346213 \n", + "89 1.056064 0.560859 \n", + "90 0.987871 1.828806 \n", + "91 1.029840 1.399554 \n", + "92 1.069875 0.933408 \n", + "93 1.470055 0.401408 \n", + "94 1.666881 0.351809 \n", + "95 1.140172 0.562270 \n", + "96 1.489236 0.372832 \n", + "97 1.000000 1.000000 \n", + "98 0.994121 0.217049 \n", + "99 0.966518 1.412511 \n", + "100 1.021984 0.107747 \n", + "101 1.385752 0.157608 \n", + "102 1.288487 0.152688 \n", + "103 0.996300 0.179240 \n", + "104 1.211939 0.162857 \n", + "105 1.052162 0.931248 \n", + "106 1.071372 1.769974 \n", + "107 1.000000 1.000000 \n", + "108 0.974750 0.382154 \n", + "109 1.050214 0.266017 \n", + "110 1.071149 2.270719 \n", + "111 0.984390 1.565888 \n", + "112 1.023981 0.430102 \n", + "113 1.105676 0.301261 \n", + "114 0.907333 0.276589 \n", + "115 0.996988 0.414051 \n", + "116 1.044361 0.905685 \n", + "117 1.000000 1.000000 \n", + "118 1.000000 1.000000 \n", + "119 1.000000 1.000000 \n", + "120 1.000000 1.000000 \n", + "121 1.000000 1.000000 \n", + "122 1.000000 1.000000 \n", + "123 1.000000 1.000000 \n", + "124 1.000000 1.000000 \n", + "125 1.000000 1.000000 \n", + "126 1.000000 1.000000 " + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "storage_comp = pd.merge(storage_formats, storage_baseline, on=[\"algorithm\", \"dataset\"], suffixes=('_storageformats', '_baseline'))\n", + "storage_comp[\"overhead_duration\"] = storage_comp[\"duration_storageformats\"] / storage_comp[\"duration_baseline\"]\n", + "storage_comp[\"overhead_size\"] = storage_comp[\"total_size_storageformats\"] / storage_comp[\"total_size_baseline\"]\n", + "storage_comp" + ] + }, + { + "cell_type": "code", + "execution_count": 145, + "id": "4ab513f1", + "metadata": {}, + "outputs": [], + "source": [ + "s = storage_comp[[\"algorithm\", \"dataset\", \"total_size_storageformats\"]].rename(columns={\"total_size_storageformats\": \"size\"})\n", + "s[\"size\"] = s[\"size\"].abs()\n", + "size_table(s, \"es03-size.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 132, + "id": "e9cfefe7", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "output_table(storage_comp[[\"algorithm\", \"dataset\", \"duration_storageformats\"]], \"duration_storageformats\", \"es03-duration.csv\")" + ] + }, + { + "cell_type": "markdown", + "id": "fcefbf7c-b8e7-4b3f-8dd7-ce1791df18b4", + "metadata": {}, + "source": [ + "## Duration" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "bee0ff47", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['JSON',\n", + " 'Text',\n", + " 'Avro',\n", + " 'Object',\n", + " 'CSV',\n", + " 'ORC',\n", + " 'Parquet',\n", + " 'Text-C',\n", + " 'JSON-C',\n", + " 'CSV-C']" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "st_order = storage_comp[(storage_comp[\"algorithm\"] == \"BFS\")].groupby(by=[\"storage_format\"])[\"overhead_duration\"].mean().reset_index()\n", + "st_order = list(st_order.sort_values(by=[\"overhead_duration\"])[\"storage_format\"])\n", + "st_order" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "40724bc5", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/4z/sr1jzyjd3sjfsw6tlm7k49180000gn/T/ipykernel_95864/450963490.py:1: UserWarning: \n", + "The palette list has fewer values (8) than needed (10) and will cycle, which may produce an uninterpretable plot.\n", + " ax = sns.catplot(\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABN0AAAPGCAYAAADX5OxdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAD610lEQVR4nOzdZ3RUVf/28WsmvVCS0HuTEIr0ohSRqtKCgIiAjaoIdpog3gii2AUUFRWpIi0IYgFBBKX33muQ0AIY0jPnecGT+RuTQDI5yWSS72ete63ktP07mdvszZV9zrYYhmEIAAAAAAAAgGmszi4AAAAAAAAAyGsI3QAAAAAAAACTEboBAAAAAAAAJiN0AwAAAAAAAExG6AYAAAAAAACYjNANAAAAAAAAMBmhGwAAAAAAAGAyQjcAAAAAAADAZIRuAAAAAAAAgMncnV0AgJx17tw5tW7dOs19FotFhQoVUsmSJdWiRQs9+eSTCgwMTHHM5s2b9fjjj2e4vWrVqmnZsmWpth86dEiLFi3Sxo0bFRERobi4OAUGBuquu+5Sy5Yt1b17d3l7e2fu5gAAcNDt+kdJ8vDwkL+/vypUqKCWLVuqT58+8vf3z8EKzdGqVSuFh4enu9/NzU2+vr4qVaqUGjVqpAEDBqh48eI5WGFqS5Ys0ahRo1S8eHH98ccfTq0FAIDMIHQD8rGqVaum+AdDUlKSrl+/rqNHj+rgwYP6/vvv9e233yo4ODjN82vWrClPT8/btlGhQoVU2z755BN99tlnstls8vf3V7ly5eTh4aFLly5p/fr1Wr9+vWbMmKFp06apRo0aWbpHAAAy67/9oyQlJCTo6tWr2rlzp3bu3KkFCxZo5syZKl++vJOqzJqSJUuqZMmSqbYnJibq/PnzOnz4sA4fPqylS5dqzpw5CgkJcUKVAAC4NkI3IB8bM2aMGjdunGp7ZGSkRo4cqd9//13Dhg3TTz/9JKs19dPoH3/8scqUKZOpNhcvXqxp06bJ19dXkyZNUtu2beXm5mbff/z4cY0ePVq7du1Sv379tHLlylSz7QAAyE7p9Y/SrRnfzz77rM6fP68RI0bou+++y+HqzNGtWzcNHTo03f3r1q3TK6+8ohs3buiFF15IdywAAADSR88JIJWAgAC9/fbb8vT01KlTp7RhwwbTrj19+nRJ0vDhw/XAAw+kCNwkqXLlyvrss88UFBSkyMhIzZo1y7S2AQDIqsaNG+ull16SJO3cuVP79u1zckXZ47777tOIESMkSadOndLGjRudXBEAAK6H0A1AmgICAnTXXXdJko4ePWrKNa9fv64zZ85IkmrXrp3ucYGBgWrTpo0kac+ePaa0DQCAWdq2bWv/evfu3U6sJHu1atXK/rVZYwEAAPITHi8FkK7ExERJkp+fnynXc3f/v185a9euVfXq1dM9dujQoXr88ccVFBRkStsAAJilQIEC9q9v3rxp/zo2NlaLFy/W6tWrdfjwYd24cUOenp4qVaqUmjVrpqeeeirNRQliYmL03XffadmyZTp9+rQ8PDxUr149Pfvsszp27JhGjRqlrl276u23305xXnx8vObPn6+VK1fq2LFjSkhIUMmSJdWyZUv169dPxYoVy9J9WiwW+9eGYaTaf/r0ac2ZM0ebN2/W+fPnFRMTI39/fwUHB6tjx47q1q1bihntyYsx1a5dW3PnztXs2bMVFhZmv+fq1avr8ccft//hLSPmzp2r8ePHy2KxaOzYserdu3eW7hkAADMRugFI05kzZ3T06FFZrVY1b97clGv6+fmpXr162rFjh6ZMmaKzZ8+qW7duqlevXqrHTIsWLaqiRYua0i4AAGY6ffq0/esSJUpIkq5evaonnnhCR44ckcViUbly5VSyZElFRETo6NGjOnr0qH744QctWbLEfo506z2qAwcO1J49e2SxWFS5cmVZrVb9/vvvWr9+vVq0aJFmDRcvXtTAgQN18OBBWSwWlSpVSoULF9axY8c0c+ZMhYWF6dNPP1X9+vUdvs+VK1fav65Tp06KfatXr9aLL76o+Ph4+fr6qmzZsjIMQ+fOndPmzZvt/3v//fdTXTchIUEDBgzQxo0bFRAQoMqVK+vkyZP2c9544w316tXrjvUtWLBAb775pqxWq8aPH68ePXo4fK8AAGQHHi8FYJeUlKTIyEitWbNGAwYMkM1m08CBA1W6dGnT2hg7dqx8fX1lGIaWLl2qPn36qFGjRho4cKC++OIL7d69WzabzbT2AAAw2zfffCNJ8vDw0L333itJmjx5so4cOaLy5cvr559/1q+//qrFixdrw4YNmjFjhnx8fHTlyhV9++23Ka41YcIE7dmzR2XLllVYWJh+/PFHLV++XD/++KMqVqyoNWvWpGrfMAwNGzZMBw8eVP369bVy5UqtWbNGS5Ys0Z9//qlu3brp2rVrGjJkiC5dupTp+0tMTNTy5cv17rvvSpLuvfde1a1b177/+vXrGj16tOLj49WrVy/99ddf+uGHH7R8+XL9+eef6tu3ryRpxYoVaT6WeuDAAe3evVvvvfeeNm3apCVLluiPP/7QPffcI0n66KOP7LPt07No0SKNGzdOVqtVkyZNInADAORKzHQD8rHHH3/8tvsHDBigF154Id39rVu3vu35zz33XKqV0apXr66FCxfq9ddf1/bt2yVJUVFRWrdundatWydJCgoKUo8ePTR48GD5+Phk4E4AAMhesbGxOnHihBYsWKCwsDBJ0pNPPqkiRYooISFBW7dulcVi0ahRo1ShQoUU5zZv3lwPPfSQFi9erCNHjti3Hz9+XCtWrJDFYtG0adMUHBxs31e5cmV9/vnneuihhxQbG5vier/99pt27typYsWKacaMGfL19bXvK1CggCZOnKhjx45p9+7dmjlzpl599dVU97N48WL99ddfKbYZhqGbN2/q3Llzio6OliQ1adJEH3zwQYrjtm3bpoSEBBUtWlRjxoxJ8foIX19fjRw5Ut99950SEhJ05MgR+zti/23YsGHq1KlTirpfffVVPfzww7p27ZpOnjyZ5nmSFBYWprFjx8rNzU3vvPOOOnbsmOZxAAA4G6EbkI9VrVpV/v7+9u9tNptu3ryp06dPKz4+XjNnzlRMTIxGjx6d6vFPSapZs6Y8PT3TvX7JkiXT3F6lShXNmzdPBw8e1OrVq/Xnn39q3759SkhIkCRduXJF06dP18qVKzV79uwUj+EAAJDd7vRHKUnq0aOHnn/+eUm3Zrz99ttviouLS7NfNAzDHoz9O0BbtWqVJKl+/fopArdkpUuXVps2bbRixYoU21evXi1JatOmTYrALZnFYlHnzp21e/durV27Ns3Q7e+//9bff/+d5r0VL15cHTt2VPv27dWsWbNU+1u3bq2dO3cqNjY2ReCWLC4uToULF9alS5cUExOTZhv3339/qm2VK1e2f33jxo00z1u+fLlGjRolm82mDz/8UA888ECaxwEAkBsQugH52JgxY9S4ceNU2+Pj47V06VK9+eabmjNnjpKSkvTGG2+kOu7jjz9WmTJlHG4/JCREISEhGjp0qGJiYrRjxw5t2LBBy5Yt05UrV3TmzBk9//zzWrBggcNtAACQ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adJEJUqUMP9mncyU0G3Hjh1avXq1Tp48qZs3b8rPz08VKlRQixYtdM8995jRBABkSnRsfJavkWiNU1RUlAnVyLTrAACAtGW273e0n6dPB+DqlixZIkkaN25cqsc/LRaLOnfurEOHDumrr77SvHnzUoRuERERGj58uGw2myZOnKju3bunur6/v7+eeeYZVaxYUc8//7wmTZqk+vXrp/m4asmSJfX3339r1KhR+vrrr2WxWEy+W+fKUugWFRWlESNGaM2aNZJk/0uTdOuDmjlzplq0aKHJkyerUKFCWasUADLhtY/DTLrSdJOuAwAAspNjfT/9PID858qVK5J024Crc+fOunjxou66664U27/66itFR0erWbNmaQZu//bAAw/owQcf1E8//aTPP/9c77//fqpjxowZo+HDh+uvv/7SvHnz1Lt3bwfuKPdy+K19NptNzz77rNasWSPDMFSnTh316dNHgwcP1mOPPaZatWrJMAz98ccfGjZsmJk1AwAAAAAAwAEhISGSpFGjRmn37t1pHlOtWjW99957GjRoUIrtv/zyiyTp4YcfzlBbPXr0kHRr0YabN2+m2l+6dGmNGjVKkvTuu+/q9OnTGbsJF+HwTLelS5dqy5YtKlKkiKZOnao6deqkOmbHjh0aNmyYtmzZoh9++EGdO3fOSq0AAAAAAADIgpdffllPPfWUDhw4oEceeUSlSpVS48aNVb9+fTVo0EAVK1ZM87yIiAhduHBBknT33XdnqK2GDRvKYrEoJiZGx48fT/O8Hj16aNWqVVq3bp1GjBihuXPnys3NzfEbzEUcDt3CwsJksVj0wQcfpBm4SVK9evX0/vvv64knnlBYWBihG4AcM/H5UPl6Z+11yp5+gSpT+0FT6omKispzU6UBAMhNMtv3O9rP06cDcHUNGjTQ3Llz9cYbb2j//v06f/68li5dqqVLl0qSSpUqpY4dO2rAgAEpFki4dOmS/eugoKAMteXp6alChQrp2rVrioiISPe4CRMmqFOnTtq5c6e++uorDRw40MG7y10cDt2OHDmi0qVLq1GjRrc9rnHjxipdurSOHDniaFMAkGm+3p7y9cla6Obl4yV/f3+TKgIAANkps30//TyA/Ozuu+/WkiVLdPDgQa1bt05bt27Vzp07dfPmTZ0/f15ffPGFFi9erK+//lrVqlWTJPvKzZLk4eGR4bbc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e1yCPKMc/6tgVBbOBQAAuUNWxhJZldWxiFkY08CVHTx4UKtWrZK7u7smTZokDw+PdI8NDAzU66+/roEDB+qbb75R//79U8xUMwxDc+bM0bx583T27FkFBQWpVatWGjx4sIoVK5biWum90y0+Pl4LFizQsmXLdPz4cRmGoUqVKqlr16569NFH06zv/Pnzmjlzpn7//XdduHBBgYGBqlGjhgYNGqS7775bktSqVSuFh4dLkpYuXaqlS5eqa9euevvttx3/4WUzQjcAcHHDftqXhbN3S9/8ZFotAADA9WRtLJFVjEWArPrll18kSU2aNFHJkiXveHyLFi1UvHhxRURE6Oeff1b37t3t+z766CMdO3ZMNWrU0P333689e/Zo7ty5+vXXXzV37lyVL1/+tteOjo5W//79tX37dhUoUEB169aVp6entm3bpgkTJui3337TF198IU9PT/s527dv17PPPqtr166pTJkyatmypS5cuKDVq1dr7dq1mjp1qlq1aqU2bdpo27Zt2r9/v8qWLas6deqobt26Dv7UcgZzAAEAAAAAAFzU7t27Jck+I+xOLBaLGjZsKEnav39/in3Hjh3ThAkTtGTJEn3yySf69ddf1blzZ126dEmjR4++47UnTpyo7du3q3nz5lq1apW+/vprTZ8+Xb/99psaN26sjRs36oMPPrAfHx0drVdffVXXrl3Tc889p1WrVumTTz7R999/r/fee082m00jRoxQfHy8Ro8erc6dO0uSGjRooPfee089e/bM0D07C6EbAAAAAACAi7p8+bIkqUiRIhk+p2jRopKkCxcupNjeqlUr9ejRw/69p6en3nzzTQUEBGjbtm06dOhQute8ePGiwsLC5Ofnp3fffVcBAQH2fYUKFdLkyZPl4eGh+fPn2x/pXrt2rcLDw1W3bl0NHTo0xfvhOnXqpLZt26pChQo6fvx4hu8tN+HxUgBwcZ88WFO+Hm4OneseVEoBoYMdbjsqKkq9e/d2+HwAAOB8WRlLZFVWxyJmYUwDV5a8ouft3uX2X+mtWhoaGppqm7e3t5o2baoVK1Zoy5YtqlatWprnbt26VYmJiapbt26KwC1ZiRIlVK1aNe3du1e7du1Ss2bNtHnzZklSmzZt0rzmlClTMnhHuROhGwC4OF8PN/l5Ovbr3N3LI0eX+AYAALlPVsYSWcVYBMi6kiVL6vjx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//77aT5+WqtWLUnSgQMHFB8ff8dr/vXXX5oxY0aG3innygjdAAAAAAAAXFSXLl0kSevXr1d4ePgdj9+4caNOnTolb29vPfjggxlqIzQ0VB07dpQkjR8/XqdPn06xv2HDhipcuLCio6P1+++/3/F6X3zxhd5991199dVXGWrfVRG6AQAAAAAAuKhKlSqpa9euSkxM1IgRI2470+zatWsaN26cJKl3794qUKBAhtsZM2aMgoKCFB0drddffz3FPnd3d/Xr10+S9O677yoqKird66xevVqbNm2SJPXt2zfD7bsiQjcAAAAAAAAXNmbMGFWuXFlbt25V3759dejQoVTHbNmyRT179tTp06dVu3Ztvfjii5lqIyAgQKNGjZIkbdq0SYsXL06x/6mnnlKNGjV05swZ9ezZM9XjroZhaOXKlXr11VdlGIYee+wx1a1bN3M36mJYSAEAAAAAAMCF+fv76/vvv9eIESO0evVqdenSRXfddZcqVqyopKQkHTlyRGfPnpV0axXSsWPHZmq102SdOnXSsmXLtH79ek2ePFktW7ZUUFCQpFurp86cOVPDhg3Txo0b1bNnT1WoUEGVKlWS1WrV/v379ffff0u6NcvutddeM+8HkEsRugEAAAAAAJfl7lPW2SVkSnbV6+/vr2nTpmnDhg1aunSpdu7cqbVr18rb21ulSpVSnz599PDDD6tGjRpZaueNN95Qp06ddO3aNb311lt6//337fsKFiyor7/+Wj///LNWrlyp/fv3a/369ZKk4sWLKzQ0VI8++mien+GWzGIYhuHsIgAAAAAAADLLMGyyWFzvzVmuWjcyh9ANAAAAAAAAMBmxKgAAAAAAAGAyQjcAAAAAAADAZIRuAAAAAAAAgMkI3QAAAAAAAACTEboBAAAAAAAAJiN0AwAAAAAAAExG6AYAAAAAAACYjNANAAAAAAAAMBmhGwAAAAAAAGAyd2cXAMB8kyZN0syZM1WhQgX98ssv6R7Xr18/bdiwQZI0duxY9enTJ83jDh06pC5dukiSfvjhBwUHB6fYf/ToUS1evFibN2/W6dOnFRcXp4IFC6pq1apq166dunXrJm9v7zvWHR4eroULF+qvv/7SyZMnFR0dLT8/P1WpUkUtW7ZUz549VahQoYz+GAAAyJUOHTqkRYsWaePGjYqIiFBcXJwCAwN11113qWXLlurevftt+821a9dqxYoV2rVrly5fviyr1aqgoCDVrl1b7du3V7t27W7bfnx8vJYsWaLVq1fr8OHDioyMlK+vr4oVK6bGjRsrNDRUtWrVSvPcVq1aKTw8PM197u7u8vHxUcmSJdW4cWM98cQTKlu2bMZ/MAAA5DEWwzAMZxcBwFy///67Bg0aJEnauHGjAgMDUx0TGxurRo0aKS4uTpLUsmVLff7552leb9asWZo4caKKFi1qD+mkW4P2yZMna86cOTIMQ25ubipRooQKFSqk8+fP69q1a5Kk0qVL66OPPtLdd9+d5vVtNpu++OILTZkyRYmJibJYLCpatKiKFi2qiIgIXb58WZIUEBCgd955R/fdd5/DPxsAAJzpk08+0WeffSabzSZ/f3+VK1dOHh4eunTpks6fPy9JKlmypKZNm6YaNWqkODc2NlbDhg3TunXrJElFixZViRIlZBiGzp07Z+9369evr88++yzNP1SdOXNG/fv31+nTp2WxWFS2bFkFBAQoLi5Op06dUmxsrCwWi3r16qXXX39dFoslxfnJoVvJkiVVsmTJFPuSkpL0zz//6MyZM0pMTJSnp6c+/vhjtWrVyqwfHwAALoWZbkAe1LBhQ3l4eCghIUE7d+5U69atUx2zZcsWxcXFqUqVKjp27Ji2bNmi+Ph4eXp6pjp227ZtkqSmTZvat8XGxqpv377as2ePChQooIEDB+qxxx6Tv7+//ZhNmzZp8uTJ2r9/v5544gnNnz9f1apVS3FtwzA0ZMgQrVmzRp6enho0aJCefPLJFEHhgQMHNHnyZG3cuFHPPPOMvvjiCzVr1izLPycAAHLS4sWLNW3aNPn6+mrSpElq27at3Nzc7PuPHz+u0aNHa9euXerXr59WrlyZoj8cN26c1q1bp0qVKmny5MkpZqMZhqENGzZo5MiR2r59u4YMGaI5c+akaD8+Pl4DBgzQ6dOn1bp1a40bN07Fixe374+Li9PChQv11ltvad68eQoICNCwYcPSvJdu3bpp6NChae47e/asnnvuOR06dEgjRozQL7/8kuYfAAEAyOt4pxuQB/n5+dkH4jt27EjzmOQZa126dFG5cuUUHR1tD9f+K63Q7a233tKePXtUqFAhzZw5UwMHDkwRuElSkyZNNHv2bFWuXFnR0dEaOXKkbDZbimO+/PJLe+A2depUvfTSS6kG5tWrV9eMGTPUuHFjJSUladSoUYqOjs7ETwQAAOebPn26JGn48OF64IEHUgRuklS5cmV99tlnCgoKUmRkpGbNmmXfFx4erh9++EGSNHXq1FSPf1osFjVv3lwffvihJGnr1q3auHFjimN++uknnTp1SqVKldJHH32UInCTJC8vL/Xp00fPPvusJOmbb75RVFRUpu+zbNmyeu+99yRJN27cUFhYWKavAQBAdsnJBz4J3YA86t5775WUfui2fv16SdI999yj5s2bp9j2b8ePH9eVK1dksVjsoduuXbu0YMECSdKLL76omjVrpluHn5+fRo4cKUk6ePBgin8AXLhwQZ988okk6YknnrjtY6Pu7u72x1wuXryoFStWpHssAAC5zfXr13XmzBlJUu3atdM9LjAwUG3atJEk7dmzx779wIED9kdSK1eunO75jRo1UoUKFSRJu3fvTrFv7969kqRq1aqlObM9WY8ePSRJ0dHROnLkyG3uKn133XWXvY5du3Y5dA0AyAjDsN35oFzI7Lo3b96s4ODgNP9XvXp11a9fX506ddLEiRPtrzPIj9atW6f+/fvnWHs8XgrkUffcc4+mTp2qffv2pXpsNDw8XCdOnFBAQIBq1KihiIgIzZ07V+vXr9eIESNSXGfr1q2SpODgYAUFBUmSvv/+e0m33rHWvXv3O9bSvHlzTZgwQbVq1VLVqlXt2xcvXqyEhAS5ubnp6aefvuN1qlSposmTJ6tChQqqXr36nX8IAADkEu7u/zfsXrt27W37saFDh+rxxx+397uS5OHhIUmKiorStm3b1KBBg3TP/+KLL2QYhooWLZpie/I1du/ercjISAUEBKR5fvHixRUWFiZ/f/9Us+Eyo0CBApKkmzdvOnwNALgTi8WqC4fWKSH6urNLyTAP30IqUS173lPt6+ub6vVCNptNN2/e1K5duzRr1iwtW7ZMM2fOzHf/pjp8+LAGDhyo0qVL51ibhG5AHlW7dm35+voqOjpa+/btU7169ez7kme0NW3aVFarVU2aNJGHh4eOHj2qCxcuqESJEvZjk0O3fz9amjxbrVGjRvYB/O1YLBb7X83/Lfk6ISEhGX7XS+fOnTN0HAAAuYmfn5/q1aunHTt2aMqUKTp79qy6deumevXqpXrMNHkxoX+rV6+evV8fOHCg+vbtq06dOqlKlSqp2ipfvnyaNTRv3lxff/21rly5oh49euipp55Su3btUrUl3eqbs8IwDPvMvv8uuAAAZkuIvq64m1ecXUauEBAQYH/E/7+io6M1aNAgbdmyRWPGjNGSJUtyuDrn+u+rjnICj5cCeZSHh4f9r+D/fcQ0+X1uyYsR+Pv72x91+e8jpsnvc0s+NiYmxj4d+b+LImTWiRMnTLkOAACuYOzYsfL19ZVhGFq6dKn69OmjRo0aaeDAgfriiy+0e/fudP9BULBgQY0aNUrSrZlj06dPV4cOHdSiRQu9/PLLmj9/vk6dOnXb9u+991516tRJ0q3FDsaPH6/mzZurY8eOeuONN/Tjjz/q6tWrptzrkiVLdP36rVknLVu2NOWaAICs8fX11WuvvSZJ2r9/v86ePevkivI+QjcgD0vrvW6JiYn2GWb/nr2W/PW/Q7ezZ8/qwoUL8vb2tgd4N27csO/P6kpkyYNxVjQDAOQH1atX18KFC1W/fn37tqioKK1bt07vv/++HnnkETVr1kwffvihYmJiUp3/yCOP6LPPPkvxWExERIRWrFihN954Q+3bt9dDDz2kJUuWpPuS6HfeeUcvv/yy/Pz8JN2akXb06FHNnz9fL730kpo2baq+fftq+/btmb6/hIQEnT17Vl999ZUmTJggSapbt26aq6gDAJzj37OhL1++bP963bp1eu6559SiRQvVrFlTdevWVYcOHfTuu+/a/92WbMqUKQoODtbSpUv1zjvvqEGDBqpbt66eeeYZ+zGRkZF699131bZtW919991q3769vvzyS0VFRSk4OFhdunRJcc3k98/9+9+byWbOnKng4GD7u8L/LTw8XOPGjVOrVq1Us2ZNNWnSRM8++6x27tyZ4riRI0cqNDTUfk5wcLBatWqV8R+cg3i8FMjD7rnnHklK8Qtn586d9l90xYoVs29v1qyZPv74Y/0/9u47PIqq7eP4bze9EHoTkJ4QekBApShIERWe0FUEC0UU0UdRaVYEsWADsYKFKmIJIiodFVF6ld57D4SQnp33j7zZJyF9M8lms9/PdXFdycyZOffusLln7zlz5p9//pHNZpPVarXfWnrTTTfZ54Tz8/Ozb5OUlJSv+Pz8/HT16tV87wcAAFdRp04dzZ07V7t379by5cv1119/aefOnUpMTJQkXbx4UZ988ol++eUXzZo1K92UD5LUoUMH3Xbbbfrnn3+0atUq/f333zpw4IB9/cGDBzVmzBgtXbpUU6ZMyfDABA8PDw0dOlT9+/fXypUr9fvvv2vdunU6d+6cpJRbb9avX6/+/fvrv//9r4YNG5bp6/jwww/14YcfZvtaw8LCNGXKFFksljy/TwCAgpH2ATk33HCDJGny5Mn6/PPP5enpqWbNmiksLEznz5/X1q1bdeDAAf3555/6/vvvM0wt9Omnn+rEiRNq3bq1rly5opo1a0qSTp8+rYEDB+rYsWMqX768br/9dp06dUqTJ0+2P9THDBs2bNBjjz2mq1evqnr16rr99tt14cIFrVy5UqtWrdIrr7yifv36SUrJSZcuXdLvv/9un/euMAZ/UHQDirHUhx9cvHhRhw8fVs2aNe0j2VJvF03VsGFDlSpVSpcvX9aePXtUv379TOdzCwoKko+Pj+Lj4xUZGZmv+MqXL6+rV6/mez8AALia0NBQhYaGasSIEYqNjdXmzZu1Zs0aLVy4UBcvXtSxY8f01FNP2Z8WnpaHh4dat25tz8+XLl3SunXrtHr1av3yyy9KSEjQqlWrNHXqVI0cOTLT/gMCAtStWzf77aZHjx7V33//raVLl+qvv/6SYRh67733VL9+fbVr1y7D9pUrV84wV5uXl5dKlCihWrVq6dZbb7Vf/AMAFA2XLl3S+PHjJaUM0KhYsaL27Nmj6dOnKygoSN988026J2QfPHhQffv21d69e7V27Vrddlv6hz8cPnxY06dPV9u2bSX9b860V199VceOHVPnzp01efJk+fj4SJJ++umnDA/uc9SVK1f05JNP6urVq3rppZd0//332y/ybNiwQcOGDdP48ePVqFEj1a9fX/369VPjxo31+++/ZzvvndkougHFmMVi0c0336zFixdr8+bNqlmzZob53FJZrVbdcsst+vXXX7Vu3TrVr1/fPp9b2qKbJNWsWVN79uzR/v37cx3LwYMHValSJfvtLKn7OXToULqrLTk5fvy4SpQooVKlSuV6GwAAijI/Pz97Ee2pp57S2LFjtXjxYm3dulX//vuvGjRokO32ZcqUUdeuXdW1a1f997//1dChQ7Vv3z7NnTtXzzzzTK5GmlWvXl3Vq1fXvffeq/Xr1+uxxx5TdHS05s6dm2nRrVevXhoxYoTDrxkAUDAiIyP17LPPpluWnJys8+fPa9u2bUpISFClSpXs0wBcvnxZXbp0UVhYWLqCmyTVrl1bN998s5YvX66TJ09m6Kt27dr2gpuU8p3y9OnTWrVqlfz9/TVp0iR7wU1KeSjexo0bM72glFcLFizQpUuXdM8996h///7p1rVo0ULDhg3T5MmT9cUXXxRagS0zzOkGFHOpV5m3bdumyMhI7dq1S35+fvY52tJKLa5t3LhR586dsw8HDgkJSdcudW6WdevWKTk5OVdxPP7442rZsqXee++9DPvZvXt3rke7vfLKK7r55pv1/PPP56o9AABFwUsvvaTOnTvr448/zradr6+vxo8fb7+F5/Dhw0pOTlafPn3Uvn17rVu3LtvtK1eubB9FEB0drfPnz0tKmTC7e/fuuu222xQfH5/tPlq2bGn/AnP48OFcvT4AQNEQExOjRYsWpfu3dOlS7d+/Xw0aNNCTTz6phQsXqmrVqpKkm2++WR988IEeeugh+z6Sk5N17Ngx/fbbbzpx4oQk2adBSCuzJ12n5qmWLVsqMDAww/ru3bub8TLt85SnzmN+vfbt20uS/vnnH1P6cxQj3YBiLrXotmPHDm3atEmGYahFixYZ5niR/jf6bffu3fYJlK8f5SZJd911lz7++GNdvnxZ3377re67775sY1i7dq39iWoNGza0L+/QoYP8/f0VExOjGTNmZLgic73Dhw9r7dq1MgxD9evXz7YtAABFSXx8vI4eParly5enm2g6M4GBgQoICNDly5dVpkwZeXh46MKFCzp16pRWr16tVq1aZbt9+fLlJaWMOEgdGR4UFKS9e/dKSvmiktMTRVP3wcOOAMC1VKlSRStXrszTNgkJCVq8eLGWLFmigwcP6tSpU/Z5t1NHS2f2gJ7SpUtnWJZ6sef6KQhSpc77ll+nT5+WJI0dO1Zjx47Nst358+eVmJiYYT66wsJIN6CYq1q1qqpVq6b9+/frr7/+kpTx1tJUlStXVu3atXXy5En73G+ZXTmoU6eO+vbtK0l6//33tWfPniz7v3Tpkl599VVJUr169dI9wax06dL2Lx5ff/21/WpFZuLi4jRmzBjZbDaVL1/e3j8AAK4g9cr+zp079cMPP2Tbds2aNbp8+bJKlSqlJk2apNv+m2++sRfPsrJ48WJJKTk89SJbtWrVFBYWJkl65513FB0dneX2NptNv/76qyTlWJwDALi2ixcvKjw8XKNHj9batWtVvnx59erVS2PHjtWCBQuyHZmW3fQFWT1F29Mz72O/UueKy2xZu3bt7HOUZvXPmQ/uY6Qb4AZuvfVWzZ8/XwsXLpSUddFNShnZdvDgQf3666+yWCyZjnSTpJEjR2rjxo06cOCA7r//fj355JPq3bu3fQixYRj6888/NWHCBB09elQBAQGaPHmyrNb0tf6HH35Yf/75p9avX68hQ4bYn6hWtmxZe5stW7ZowoQJ2rlzp7y8vPT222/L398/v28LAACFpnXr1urSpYuWLFmiF154Qbt379aDDz5ov71HShkN9/PPP2vSpEmSpP/+97/2uVAffvhh/fbbbzpy5IgGDBigESNGqHv37ipZsqR9+0uXLunLL7/U559/Ll9fXz3zzDPpYhgzZowefPBB7du3T3369NHIkSPVrl27dKPfDx48qLffflubNm1SjRo1MsyTAwAoXt59910dPHhQt9xyiz744IN0eUWSoqKi8rS/KlWqSJL9ttTrnT17NtPlFotFhmFkWiC7cuVKhmXly5fX4cOH9dBDD2X5nbUooOgGuIGbb75Z8+fP17Vr13TDDTdkmCAzrTZt2mjmzJmKiYlRvXr1VK5cuUzbBQUFad68eXriiSe0bt06TZo0SZMnT1aVKlVUokQJHT9+XJcvX5Yk3XjjjXr//fdVt27dDPvx8vLSjBkzNHr0aC1evFjTpk3TJ598osqVK6tMmTI6ffq0fYhyuXLl9Oabb/I0NACAS5o8ebL8/f0VERGhmTNnaubMmbrhhhtUtmxZxcfH68iRI0pISJCXl5dGjhyZbvqGUqVK6csvv9TTTz+trVu3asKECXrjjTdUtWpVBQUFKSoqSkePHpVhGCpbtqzeeOONDA9gaNKkiT7++GONHj1ahw4d0vDhw+Xv768qVarI19dX586ds38ZCg0N1dSpUzOdjwcAUHxs3rxZkvTQQw9lKLhFR0dry5YtkrIeuXa9Fi1ayNPTUxs2bNDFixfTDaaQlOWtr/7+/rp27ZrOnz+fYWqD1BjTatWqldavX68VK1ZkWnRbunSp3n33XYWFhdkvZuXmwUJm4/ZSwA3ccsst9j8wOV0FaNmypf2Kd05tg4KC9PXXX+ujjz7SPffcoxtuuEFnz57V7t275eHhodatW2v8+PH6+eefs33ymre3t959913NnDlTvXr1Uo0aNXTp0iX9+++/SkxMVIsWLTRq1Cj99ttv2Y7SAwCgKPP29tYbb7yhBQsW6JFHHlGDBg2UkJCgPXv26MyZM6pZs6YGDRqkn376SUOHDs2w/Q033KBvvvlG06ZNU8+ePXXjjTfq8uXL2rVrl65evaqwsDA9++yz+vXXXzN94qiUck7w22+/6dVXX1XHjh3tF7j27Nkji8Wi9u3b680339T333+vatWqFfRbAgBwstR52VasWJGusHbp0iU99dRT9oEUOT2EJ1X58uXVs2dPxcfHa+TIkbp69ap93caNG/Xpp59mul29evUkSV999VW6OObMmaP169dnaN+3b18FBATom2++0Zw5c9Jtc/DgQU2YMEGHDx9WjRo17MtTn6QaHR2d6S2rBcFi5LZcCQAAAAAAUMQc3/yT4q9ddHYYueYTUFbVmpnzFM9U69at08CBA/P8IIXly5friSeekGEYqlWrlurWravLly9ry5YtSkhIUN26dbV//34NGDBAL7zwgiRp6tSp+vDDDzVw4ECNGzcuwz6vXbumQYMGacuWLSpVqpRatGihqKgobdiwQZUrV9bJkydVr149+/RHkrRq1So9/vjjstlsql27turUqaP9+/fr0KFD6tmzp3744Qf16NFDb7zxhn2b1atX66mnnlJcXJyqVq2qkJAQXb16VZs2bVJycrI6dOigKVOm2B+iEBcXp5tvvlmxsbFq0qSJbrzxRk2ePNnRtzxXuL0UAAAAAAC4LC//kjk3KkKKUrwdO3bU119/rY8//lj79u3TypUrVapUKbVt21YDBw5UyZIlFR4eruXLl2vs2LEZ5ujOTEBAgGbOnKmvvvpKP/74o1avXq3y5ctr2LBhatasmQYPHpxhm/bt22vGjBn69NNPtX37dp0+fVoNGjTQmDFjFBQUlOlDiG6//XZFRERoxowZWrt2rf744w8FBQWpadOm6tOnj7p165buwQ2+vr6aPHmyJk+erF27dun48eOKjIzM9CmsZmGkGwAAAAAAcEmGYZPF4nozZ7lq3PmVOiLv+pFuxZX7HWEAAAAAAFAsuGrhylXjRt5wlAEAAAAAAACTUXQDAAAAAAAATMacbgAAAAAAAIDJitVIt71792rv3r3ODgMAAGSCPA0AAAB3UqyKbgkJCYqOjlZ8fLyzQ0EhiI+P16ZNmzjeboLj7V443sUTedq98Dl2Lxxv98MxB4CcFauiW6rk5GRnh4BCkHqcOd7ugePtXjjexRvH1T3wOXYvHG/3wzEHgJwVy6IbAAAAAAAA4EwU3QAAAAAAAACTUXQDAAAAAAAATEbRDQAAAAAAADAZRTcAAAAAAADAZBTdAAAAAAAAAJNRdAMAAAAAAABMRtENAAAAAAAApjIMw9khOJ2nswMAAAAAAABwhGEYslgszg4jz8yMe+rUqfrwww/ztM0TTzyhESNGmNL/9ZKSkjR79mydPHlS48aNc2gf0dHR+u233/Trr7/q8OHDOnfunHx9fVWrVi117NhR999/vwIDA02O3HwU3QAAAAAAgEuyWCzasmWLrl696uxQcq1EiRIKCwszbX8hISHq1q1bumWxsbFavny5JGVYl7pNQZk3b54mTZqkHj16OLT933//reeff17nzp2Tv7+/goOD1bBhQ124cEG7du3Stm3bNHPmTH355ZeqW7euydGbi6IbAAAAAABwWVevXlVUVJSzw3Cazp07q3PnzumWnThxwl50mzx5cqHGk5yc7PC2v//+u4YNGybDMDRs2DA98sgjKlmypH39pUuXNHHiRP38888aOHCgvv32W1WrVs2MsAsEc7oBAAAAAADAqS5evKhRo0bJZrNp7Nixevrpp9MV3CSpTJkyeuutt9SyZUtdunRJ06ZNc1K0uUPRDQAAAAAAwI1cu3ZNH330kbp166YmTZqoWbNmuv/++xUREZHuAQgxMTHq1KmTQkJC9Nprr2XYz1tvvaWQkBCFh4crISFBHTp00KRJkyRJP/74o0JCQjR69OhcxfT9998rMjJSISEhGjBgQJbtPDw89OSTT6pBgwYKCgqSzWbL46svPBTdAAAAAAAA3MS5c+fUt29fffDBB7pw4YJatWqlsLAw/fvvvxo1apRGjRplL7z5+/vrrbfekoeHh+bOnavNmzfb97Nu3Tp9+eWX8vPz0zvvvCNvb2917NhRDRo0kCRVq1ZN3bp1y/X8dT///LMk6Z577snxIRMtWrTQDz/8oLFjx8pqLbqlraIbGQAAAAAAAEz1/PPP68CBA+rRo4dWrFihzz77TDNmzNCSJUsUHByshQsXavbs2fb2YWFhGjJkiGw2m8aNG6eEhARFRUXZbwUdN26cateuLUkaO3asunfvLkm66aabNHnyZPXr1y/HmAzD0KFDhyRJTZs2Nf9FOwlFNwAAAAAAADewfft2/f3336patarGjx8vf39/+7pKlSpp4sSJ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lSqZ+jrfffddezFt/Pjxuueee+Tl5WVff+DAAY0cOVKbNm3SoEGDNGfOHHl6mlsmc70xmAAAAAAAAHDIDz/8IEl6+eWXM9z+abFY1L17dz344IOSpLlz56Zbf/bsWT3//POy2WyaMGGCnn/++XQFN0kKDAzUY489pnfffVeSNGnSJO3bty/TWCpXrqyrV69qzJgxMgzDlNcnSX///bc+//xzeXl56auvvlKPHj3SFdwkqU6dOvriiy9UqlQpbd26VT/99JNp/aei6AYAAAAAAOAmLl68KCn7J8p3795d3bp1U5MmTdItnzFjhmJiYtSmTRv17t07237uvPNOde3aVfHx8fr0008zbfPCCy8oICBAa9euzVDgy48ZM2bIMAz169dPjRo1yrJd2bJlNXjwYLVq1UqJiYmm9Z+KohsAAAAAAICbCA0NlSSNGTNG27Zty7RNvXr1NHnyZD366KPpli9ZskSS1LNnz1z11adPH0kpD224du1ahvVVqlTRmDFjJElvv/22jh49mrsXkY1Lly5p7dq1kqRu3brl2H7IkCGaOXOm+vXrl+++r0fRDQAAAAAAwE2MHDlS3t7e2rVrl/r27av27dtr9OjRWrBggQ4fPpzldmfPntWZM2ckSY0bN85VXy1atJDFYlFsbKwOHjyYaZs+ffrotttuU2xsrEaNGqXk5OS8v6g0jhw5ouTkZHl6eqphw4b52ld+UXQDAAAAAABwEzfddJPmzJmjBg0aSJJOnTqlH3/8US+88ILuvPNOtW/fXu+8846ioqLSbXf+/Hn7z2XLls1VX97e3ipZsqSklKJdViZMmKBSpUppy5YtmjFjRl5fUjqp/ZQuXdr0ByPkFUU3AAAAAAAAN9K4cWP98MMPioiI0NNPP602bdooICBAUkoR7rPPPtOdd96pPXv22Lex2Wz2n69/KEF2clP4qlChgl5++WVJ0pQpU9L1m1epsRXEHG155dySHwAAAAAAAJwiNDRUoaGhGjZsmJKTk/Xvv/9q6dKlmjt3ri5evKjhw4frt99+k5eXlypVqmTf7tKlS6pYsWKO+09ISNDly5clKcf2d911l5YvX67Fixfr+eef13fffZdpu40bN+qbb77JsLx27dp67LHHVL58eUnSlStXlJSU5NTRbox0A+BUJ1au19Z3ZurEyvXODsVppk2bpk6dOmnatGnODgUA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qlWrFBcXpzp16qhChQo6duyYvv32W91333168sknFR0d7exwkQsbN27U9OnTNWDAAFWvXt3Z4eTK9u3b1bdvX3388cdOiyE6Olrjx49X9+7dlZycnOvtbDabBg8erEWLFunKlSuqU6eOgoKCVKVKlQKMtujI7n175plnlJiYqDFjxjgpOsD1kaeLH/K0Y8jTjiFPA0Dh8HR2ACh6IiIiNHbsWCUnJ+umm27S008/rebNm8tisUhKSdILFizQtGnTtGTJEh04cEBff/21ypcv7+TIkZWkpCS98sorCgoK0rBhw5wdTq7NnTtX27dvd+qXj3///Vdz5szJ83aHDx/Wnj17JEmffPKJ2rZta3ZoRVp271u5cuU0ZMgQvf/++/r55591zz33FHJ0gGsjTxc/5GnHkacdQ54GgMLBSDek8++//+rFF19UcnKy7r33Xs2aNUs33XST/URekgIDA/Xwww9r3rx5qlChgg4ePKixY8c6MWrkZMGCBdq/f78GDhyooKAgZ4fjFiIjI+0/t2rVyomRFE0DBgxQiRIlNHnyZCUkJDg7HMBlkKeLJ/J04SNPZ488DQDmoOiGdN566y0lJCSoUaNGeumll2S1Zv1fpG7duho/frwk6Y8//lBEREQhRYm8SExM1McffywPDw/17t3b2eG4jbS3anh7ezsxkqIpMDBQ3bp10+nTp/Xdd985OxzAZZCnix/ytHOQp7NHngYAc1B0g93+/fv1zz//SJIGDRokDw+PHLdp3769wsLCJEmzZ8+WJMXExCgsLEwhISFatmxZlts+/PDDCgkJ0fvvv59u+YULF/TWW2/prrvuUpMmTRQWFqZevXrpiy++UHx8fIb9TJ06VSEhIZo8ebKWL1+uLl26qGHDhurQoYMWL16crq1hGPrxxx917733KiwsTM2aNVOvXr00b968LCffTUhI0Ndff61+/fqpefPmaty4sbp06aJJkyZlO8Hs7t279eKLL6pr165q1qyZGjZsqFtvvVVDhgzRb7/9luV2//77r5555hnddtttaty4sbp166Y5c+bkeXLgVEuXLtXZs2d1yy23qGLFivblx48fV7169RQSEqJdu3ZluX2XLl0UEhKiBQsW2JcdPHhQY8aMUYcOHdSwYUM1b95c4eHheu+993Tx4kWH4kxr3bp1CgkJ0Y8//ihJWrRokUJCQjRgwIB0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K6n/N9N+kQaQOfI0eZo8TZ6WyNMA4EoousGuXr16+uWXX3Ts2DHFxsbar4zlZPfu3faf006gW6lSJd16661as2aNFi1apCFDhig5OVk///yzpPRXitNescvN8PerV69mWJbdpLl5aXN9TKdPn7afaGclOTlZ165ds5+c/fjjj3rnnXd0/vz5dO2qVq2q3r1769tvv023PO0XqMyuCEspJ2J+fn6KiYnJ9WtI3W92xzIsLEw1a9bU4cOHtXLlSt111126cuWKVq9eLYvFYn9yVap27drpu+++0+eff67Vq1fr2rVr+v333/X7779r0qRJat68ucaPH5/pbTJmyc+xSXXHHXfYn8hXtmxZlStXrkBivV5q7Nl9wZJkj/fatWsZ1qUdhZGZnD67aW+TyUl0dLQmTpyoRYsWpRst4eXlpQYNGig0NFR//vlnrvd3vdT/76lfvgBkjTydHnmaPF0QyNPpkacBIH8ousHu9ttv17vvvqvExEStXr3a/hSsnKTeQtCgQYMMJ0S9evVKdzK/du1anT9/XtWqVVOLFi3s7dKefCxatCjdlwJnSY3pxRdf1AMPPJDr7X788UeNHj1aktS2bVt16tRJdevWVe3atVWyZEklJiZmOJlPOz9P2i82aRmGYX+MfG6lfnnJ6USpZ8+eeuedd7Ro0SLddddd+vXXX+3z1mR2K1BoaKj9/8q2bdu0bt06rV27Vps3b9amTZv00EMPaenSpVl+MckvR49NqoSEBPucPVarVUePHtWbb76pV155xcwwM5U6WiOzL6RppR6z1PbO8vjjj2vdunXy9fXVAw88oCZNmqhu3bqqXr26vLy89O233+brZD71C2devmgD7oo8nR55mjxdEMjT6ZGnASB/mNMNdiEhIfY5QT755JNcnThu2LDBPrFqZidVHTt2VMmSJbV37177I8slKTw8PN1tBEFBQfYvAgcOHMiyv71792r37t15vrXGEalzWOzfvz/LNqdPn9bWrVt19uxZ+7JPP/1UUsprnD59uvr166dmzZqpZMmSkqQzZ85k2I+Pj499UuO0IxLSOnTokJKSkvL0GlLf07S3FmUmPDxcHh4eWrNmjaKjo+3HqVevXunaJScn6+jRo9qwYYOklKuoN910k4YPH645c+Zozpw5slgsOn/+vNauXZunWPPC0WOTasqUKdq1a5cqVKigTz75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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ax = sns.catplot(\n", + " storage_comp,\n", + " x=\"overhead_duration\",\n", + " col=\"algorithm\",\n", + " hue=\"storage_format\",\n", + " kind=\"bar\",\n", + " hue_order=st_order,\n", + " #hue_order=['datagen-7_5-fb', 'graph500-22', 'datagen-7_9-fb', 'cit-Patents', 'datagen-8_4-fb', 'datagen-8_8-zf'],\n", + " col_order=[\"BFS\", \"PageRank\", \"WCC\", \"SSSP\"],\n", + " legend_out=True,\n", + " errorbar=\"sd\",\n", + " capsize=0.2,\n", + " col_wrap=2,\n", + " palette=sns.color_palette(\"Set2\")\n", + ")\n", + "sns.move_legend(ax, \"center right\", ncols=1, bbox_to_anchor=(1.05, 0.55), title=None, frameon=False)\n", + "\n", + "ax.set_axis_labels(\"Overhead (vs. text format)\", \"Storage format\")\n", + "ax.set_titles(\"{col_name}\")\n", + "\n", + "ax.savefig(plot_location(\"es03-overhead-duration.pdf\"), dpi=\"figure\")" + ] + }, + { + "cell_type": "markdown", + "id": "9332f1ae-a446-4c61-8f08-c2ed0a3dde78", + "metadata": {}, + "source": [ + "## Sizes" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "c75371c5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['ORC',\n", + " 'Text-C',\n", + " 'CSV-C',\n", + " 'JSON-C',\n", + " 'Parquet',\n", + " 'Avro',\n", + " 'CSV',\n", + " 'Text',\n", + " 'JSON',\n", + " 'Object']" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "st_order = storage_comp[(storage_comp[\"algorithm\"] == \"BFS\")].groupby(by=[\"storage_format\"])[\"overhead_size\"].mean().reset_index()\n", + "st_order = list(st_order.sort_values(by=[\"overhead_size\"])[\"storage_format\"])\n", + "st_order" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "fc665615", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.28651002069881726" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "storage_comp[storage_comp[\"storage_format\"] == \"JSON-C\"][\"overhead_size\"].mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "0614db13", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/4z/sr1jzyjd3sjfsw6tlm7k49180000gn/T/ipykernel_95864/4214662472.py:1: UserWarning: \n", + "The palette list has fewer values (8) than needed (10) and will cycle, which may produce an uninterpretable plot.\n", + " ax = sns.catplot(\n" + ] + }, + { + "data": { + "image/png": "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ZpbjAwIC1KFDB3Xo0EEvv/yy+vfvr0OHDmnevHl65ZVXZDKZbhtDhQoVVKFCBfXq1UubN2/WCy+8oJiYGM2bNy/DolW3bt00ePBgm58zAOSGIkWKaPLkyRkei42N1YABA7R582aNGTNGS5YsyePo7CuzPRMdBXtaAQVQ6m84U29tvW/fPnl5eWV4m+zU4tTWrVt17tw5nTx5UsWLF1dQUFCafqm/udi0aVOGdzzKyIsvvqiGDRvqo48+Snee/fv3Z3u11ZtvvqnGjRtr+PDh2eoPAICjeOONN9S2bVt99tlnWfbz9PTUuHHjrHfoPXbsmFJSUtSjRw899NBD2rRpU5bjS5cubb3sPiYmxnp3wL1796pz58564IEHlJCQkOU5GjZsqN69e1vnBwBn4O3trddee03Sjc/EyMhIO0eEm1G0Agqg1KLVP//8o23btskwDDVo0CDD/S1SV1/t37/fuvnqrausJOnhhx+W2WzW5cuX9d133902hg0bNuj48eNKTk5WrVq1rO0tW7aUt7e3LBZLtq6pPnbsmDZs2CDDMArcUl4AQP6XkJCgEydOaPXq1bft6+vra12dHBAQIBcXF124cEH//vuvfvvtt9uOL168uKQbK6lTVyf7+fnp4MGDOnv2rHWvy+ycgxumAHAmFSpUsP584cIF68+///67Bg0apBYtWqhWrVoKDg5Wx44d9f7771tvIJVqypQpCgoK0tKlS/Xee++pfv36Cg4O1gsvvGDtEx0drffff19t2rTRfffdp3bt2umrr75STEyMgoKC9Oijj6Y5Z1BQkIKCgtLc+CrVzJkzFRQUpJEjR6Y7dvr0aY0dO1YtW7ZUrVq11LhxY7344ovasWNHmn4jR45UaGiodUxQUJBatmyZ/RcuD1C0AgqgcuXKqXz58jp8+LD++usvSekvDUxVunRpValSRadPn7bufZV6B8KbVa1aVT179pQkffzxxzpw4ECm81+6dElvvfWWJKlatWppri8vUqSI9YP922+/zfILdHx8vEaNGiWLxaLixYtb5wcAIL/o3LmzJGnPnj23vSRl/fr1unz5sgoXLqw6deqkGb9gwQIdPHgwy/ErVqyQdCOPp/6iqnz58goODpYkffDBB4qJicl0vMVi0c8//yxJevDBB2/zzAAg/7h5a5LUzdgnT56s/v37a926dapQoYJatWql6tWr69ixY5o+fbr69OmT7mYZkvTFF19o9uzZqlevnoKCglSpUiVJ0pkzZ9SzZ09Nnz5dcXFxevDBB1WoUCFNnjxZo0ePzrHnsmXLFj366KNasGCBXF1d9eCDD6pixYpau3atnnjiiTR7IgYHB+uBBx6QdGPFWadOndS6desciyUnULQCCqj7779fSUlJWrZsmaTMi1bS/1ZW/fzzzzKZTBmutJKkYcOGqWrVqrp8+bKeeOIJzZw5M82XX8Mw9Mcff6hXr146fvy4fHx8NHnyZJnNaT+Knn32WTVs2FCJiYl6/vnn9cknn+jixYtp+uzYsUO9e/fWjh075Obmpvfff1/e3t42vRYAANhL06ZN1a5dO0nSmDFj9M477+jUqVNp+iQkJOj777/Xyy+/LEl6+eWXrSuunn32WVWsWFGxsbHq06ePZs+ene63/5cuXdIHH3ygL7/8Up6ennrllVfSHB81apS8vLx06NAh9ejRQ6tXr1ZiYmKaPhEREXrxxRe1bds2VaxY0XqZIADkd5cuXdK4ceMk3bgipWTJkjpw4ICmT58uPz8//fDDD5o9e7b++9//at68eVq+fLl8fX118OBBbdiwId35jh07ps8++0xffPGFFixYoFdffVWS9NZbb+nkyZNq27at1qxZo08++USLFy/W+++/r1WrVuXIc7ly5YpeeuklXbt2TW+88YZWrlypqVOnasGCBZo9e7a8vb01btw47du3T5L02GOPaejQoZL+t+9XThbQcgIbsQMFVOPGjbVw4UJdv35dZcqUUZUqVTLt26xZM82aNUuxsbGqVq2aihUrlmE/Pz8/zZ8/X4MGDdKmTZs0ceJETZ48WWXLllWhQoUUGRmpy5cvS7pxy+6PP/5Y9957b7rzuLm5acaMGRo5cqRWrFihadOm6fPPP1fp0qUVEBCgM2fOWPfiKFasmN577z3uRAQAyLcmT54sb29vhYeHa9asWZo1a5bKlCmjokWLKiEhQcePH1diYqLc3Nw0bNgwPf7449axhQsX1jfffKOhQ4dq586dGj9+vN59912VK1dOfn5+unr1qk6cOCHDMFS0aFG9++676TZwr1Onjj777DONHDlSR48eVVhYmLy9vVW2bFl5enrq3LlzioqKknTj7oZTpkyRr69vnr5GAHA3oqOjrcWjVCkpKTp//rx27dqlxMRElSpVSuPHj5ck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FovGjx+v4cOHpylYSZKvr69eeOEFffjhh5KkiRMn6tChQxnGUrp0aV27dk2jRo2SYRg58vzyK4pWAAAAAACgQLt48aKkGwWqzHTu3FmdOnVSnTp10rTPmDFDsbGxatasmbp3757lPO3bt1eHDh2UkJCgL774IsM+Y8aMkY+PjzZs2JCuQFbQULQCAAAAAAAFWvXq1SVJo0aN0q5duzLsU61aNU2ePFkDBgxI075y5UpJUteuXbM1V48ePSTd2PT9+vX0d1MuW7asRo0aJUl6//33deLEiew9CSdE0QoAAAAAABRow4YNk7u7u/bt26eePXvqoYce0siRI7Vo0SIdO3Ys03FRUVE6e/asJOm+++7L1lwNGjSQyWRSXFycIiIiMuzTo0cPPfDAA4qLi9OIESOUkpJy50/KCVC0AgAAAAAABVr9+vU1d+5c1axZU5L077//aunSpRozZozat2+vhx56SB988IGuXr2aZtz58+etPxctWjRbc7m7u8vf31/SjaJXZsaPH6/ChQtrx44dmjFjxp0+JadA0SqH7dr0s5bMfEu7Nv2c7THTpk1TmzZtNG3atFyMDAAA7Nr0s778cLhatWpF7gUAAGncd999WrJkicLDwzV06FA1a9ZMPj4+km4Usb788ku1b99eBw4csI6xWCzWn93c3LI9l6ur6237lChRQmPHjpUkffLJJ2nmLSgoWuWg5OREHdm/SYZhUcT+zUpOTrztmPj4eIWHh8tisSg8PFzx8fF5ECkAAAXPzXlaErkXAABkqHr16ho4cKBmzJihLVu2aNGiRXr++efl4+OjixcvKiwsTElJSZKkUqVKWcddunQpW+dPTEzU5cuXJUklS5bMsu/DDz+sjh07KikpScOHD1di4u3rDM6EolUOsqSkSP9/O0rDsNx4fBvJycnWyqzFYlFycnKuxggAQEF1c562tpF7AQAosFLvFBgVFaVt27YpMjIyXR8XFxfdd999evXVV7Vw4UJ5eHjo1KlT2rZtmySpePHi1sLTzp07szXvnj17lJycLA8PD1WuXPm2/d944w0VL15cBw8e1NSpU7P57JxDnhStrly5on379uXFVA4lKTFeiQlxSkyIU0J8nGJiYjL8AwAAAAAAcs7u3bv10ksv6d133013LPUXVqmX/s2ePVtPPPGEvvzyyyzPee+99yokJESSrCulTCaT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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ax = sns.catplot(\n", + " storage_comp,\n", + " x=\"overhead_size\",\n", + " col=\"algorithm\",\n", + " hue=\"storage_format\",\n", + " kind=\"bar\",\n", + " hue_order=st_order,\n", + " col_order=[\"BFS\", \"PageRank\", \"WCC\", \"SSSP\"],\n", + " legend_out=True,\n", + " errorbar=\"sd\",\n", + " capsize=0.2,\n", + " col_wrap=2,\n", + " sharex=True,\n", + " palette=sns.color_palette(\"Set2\")\n", + ")\n", + "\n", + "# ax.set(xscale=\"log\")\n", + "# # sns.move_legend(ax, \"center right\", ncols=1, bbox_to_anchor=(1.05, 0.55), title=None, frameon=False)\n", + "\n", + "# num_xticks = 6 # Specify the number of xticks you want\n", + "# xtick_min = np.log2(dataset_sizes['size'].min())\n", + "# xtick_max = np.log2(dataset_sizes['size'].max())\n", + "# xticks = np.logspace(xtick_min, xtick_max, num=num_xticks, base=2.0)\n", + "# ax.set(xticks=xticks)\n", + "\n", + "# xtick_labels = [f\"{int(format_filesize(x)[0])}{format_filesize(x)[1]}\" for x in xticks]\n", + "# ax.set_xticklabels(xtick_labels)\n", + "\n", + "# for axx in ax.axes.flat:\n", + "# axx.set_xticklabels(xtick_labels, rotation=45)\n", + "\n", + "ax.set_axis_labels(\"Overhead (vs. text format)\", \"Storage format\")\n", + "ax.set_titles(\"{col_name}\")\n", + "\n", + "ax.savefig(plot_location(\"es03-overhead-size.pdf\"), dpi=\"figure\")" + ] + }, + { + "cell_type": "markdown", + "id": "90d72d81-dbf6-4787-a307-118d34d6acda", + "metadata": {}, + "source": [ + "# Provenance graph pruning (`joinVertices` op only)" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "454b96e8-d3b4-46eb-9c55-80ef8e385cbe", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -8800,691 +9625,975 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
    configalgorithmdatasetrunstorage_formatcompressedsizenr_executorsnr_verticesiterationsduration
    23provenancegraphpruningBFScit-Patents3TextFalse21863872757377476843126.970801
    45provenancegraphpruningBFScit-Patents2TextFalse21863872757377476843117.826207
    47provenancegraphpruningBFScit-Patents1TextFalse21863872757377476843111.474789
    51provenancegraphpruningBFSdatagen-7_5-fb1TextFalse18992220276334322937.921101
    52provenancegraphpruningBFSdatagen-7_5-fb3TextFalse18992220276334322942.658744
    60provenancegraphpruningBFSdatagen-7_5-fb2TextFalse18992220276334322939.946944
    26provenancegraphpruningBFSdatagen-7_9-fb3TextFalse435702119713875873181.300645
    32provenancegraphpruningBFSdatagen-7_9-fb2TextFalse435702119713875873187.885366
    58provenancegraphpruningBFSdatagen-7_9-fb1TextFalse435702119713875873177.674501
    18provenancegraphpruningBFSdatagen-8_4-fb1TextFalse15270099887380908435268.192761
    25provenancegraphpruningBFSdatagen-8_4-fb2TextFalse15270099887380908435265.026712
    40provenancegraphpruningBFSdatagen-8_4-fb3TextFalse15270099887380908435265.784834
    15provenancegraphpruningBFSdatagen-8_8-zf1TextFalse15081382026716830889321278.153758
    16provenancegraphpruningBFSdatagen-8_8-zf2TextFalse15081382026716830889321287.407069
    42provenancegraphpruningBFSdatagen-8_8-zf3TextFalse15081382026716830889321322.993791
    2provenancegraphpruningBFSgraph500-222TextFalse07380908436203.459036229.6549700.8859342396657329.857793
    14tracingWCC4provenancegraphpruningBFSgraph500-223TextFalse072396657334.684981
    37provenancegraphpruningBFSgraph500-221Text0723966571568.99339374.2474980.929235334.606574
    8tracingWCC20provenancegraphpruningPageRankcit-Patents3TextFalse12368875587377476835123.093114
    39provenancegraphpruningPageRankcit-Patents2TextFalse12368875587377476835115.425008
    49provenancegraphpruningPageRankcit-Patents1TextFalse12368875587377476835120.194633
    48provenancegraphpruningPageRankdatagen-7_5-fb1TextFalse24141037276334323554.848166
    50provenancegraphpruningPageRankdatagen-7_5-fb2TextFalse24138457376334323556.195809
    59provenancegraphpruningPageRankdatagen-7_5-fb3TextFalse24138425276334323553.629496
    19provenancegraphpruningPageRankdatagen-7_9-fb1TextFalse0532505361713875871369.75370570.1408690.99448035101.645207
    11tracingWCCcit-Patents31provenancegraphpruningPageRankdatagen-7_9-fb3TextFalse5325489387138758735107.758038
    53provenancegraphpruningPageRankdatagen-7_9-fb2TextFalse5325476177138758735102.616182
    12provenancegraphpruningPageRankdatagen-8_4-fb1TextFalse14582565577380908435299.080433
    13provenancegraphpruningPageRankdatagen-8_4-fb2TextFalse14582567887380908435333.710628
    46provenancegraphpruningPageRankdatagen-8_4-fb3TextFalse14583553787380908435299.655220
    21provenancegraphpruningPageRankdatagen-8_8-zf1TextFalse17261623731716830889335730.639954
    44provenancegraphpruningPageRankdatagen-8_8-zf3TextFalse17261598605716830889335706.973289
    57provenancegraphpruningPageRankdatagen-8_8-zf2TextFalse17273247719716830889335700.931898
    3provenancegraphpruningPageRankgraph500-221TextFalse7802883877239665735103.089542
    9provenancegraphpruningPageRankgraph500-222TextFalse780296671723966573598.871584
    33provenancegraphpruningPageRankgraph500-223TextFalse7800985447239665735114.259111
    7provenancegraphpruningSSSPdatagen-7_5-fb1TextFalse01937325217377476841160.095690160.4534240.9977706334323044.622851
    3tracingWCCdatagen-8_4-fb124provenancegraphpruningSSSPdatagen-7_5-fb2TextFalse01937325217380908413242.255369232.6561361.0412596334323039.648864
    9tracingWCC43provenancegraphpruningSSSPdatagen-7_5-fb13TextFalse019373252176334321341.84269833.3872721.253253
    \n", - "
    " - ], - "text/plain": [ - " config algorithm dataset run storage_format compressed \\\n", - "2 tracing BFS datagen-8_4-fb 1 Text False \n", - "4 tracing BFS graph500-22 1 Text False \n", - "6 tracing BFS cit-Patents 1 Text False \n", - "10 tracing BFS datagen-7_5-fb 1 Text False \n", - "18 tracing BFS datagen-8_8-zf 1 Text False \n", - "20 tracing PageRank datagen-7_5-fb 1 Text False \n", - "13 tracing PageRank graph500-22 1 Text False \n", - "1 tracing PageRank cit-Patents 1 Text False \n", - "5 tracing PageRank datagen-8_4-fb 1 Text False \n", - "0 tracing PageRank datagen-7_9-fb 1 Text False \n", - "17 tracing SSSP datagen-7_9-fb 1 Text False \n", - "19 tracing SSSP datagen-7_5-fb 1 Text False \n", - "15 tracing SSSP datagen-8_8-zf 1 Text False \n", - "12 tracing SSSP datagen-8_4-fb 1 Text False \n", - "14 tracing WCC graph500-22 1 Text False \n", - "8 tracing WCC datagen-7_9-fb 1 Text False \n", - "11 tracing WCC cit-Patents 1 Text False \n", - "3 tracing WCC datagen-8_4-fb 1 Text False \n", - "9 tracing WCC datagen-7_5-fb 1 Text False \n", - "\n", - " total_size nr_executors nr_vertices iterations duration \\\n", - "2 0 7 3809084 35 211.522415 \n", - "4 0 7 2396657 3 31.800055 \n", - "6 0 7 3774768 43 77.243175 \n", - "10 0 7 633432 29 45.629640 \n", - "18 0 7 168308893 21 211.700481 \n", - "20 0 7 633432 35 46.563000 \n", - "13 0 7 2396657 35 91.280116 \n", - "1 0 7 3774768 35 93.836881 \n", - "5 0 7 3809084 35 302.963450 \n", - "0 0 7 1387587 35 94.295958 \n", - "17 0 7 1387587 32 58.442954 \n", - "19 0 7 633432 30 35.181077 \n", - "15 0 7 168308893 22 160.900830 \n", - "12 0 7 3809084 36 203.459036 \n", - "14 0 7 2396657 15 68.993393 \n", - "8 0 7 1387587 13 69.753705 \n", - "11 0 7 3774768 41 160.095690 \n", - "3 0 7 3809084 13 242.255369 \n", - "9 0 7 633432 13 41.842698 \n", - "\n", - " baseline_duration overhead \n", - "2 228.835858 0.924341 \n", - "4 33.833869 0.939888 \n", - "6 81.590225 0.946721 \n", - "10 41.949647 1.087724 \n", - "18 194.096829 1.090695 \n", - "20 44.126948 1.055206 \n", - "13 76.242817 1.197229 \n", - "1 76.718400 1.223134 \n", - "5 221.688116 1.366620 \n", - "0 67.496328 1.397053 \n", - "17 83.955731 0.696116 \n", - "19 43.968590 0.800141 \n", - "15 192.158678 0.837333 \n", - "12 229.654970 0.885934 \n", - "14 74.247498 0.929235 \n", - "8 70.140869 0.994480 \n", - "11 160.453424 0.997770 \n", - "3 232.656136 1.041259 \n", - "9 33.387272 1.253253 " - ] - }, - "execution_count": 74, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "tracing_compare = merge_compare(baseline_scaling, tracing, metric=\"duration\")\n", - "tracing_compare = tracing_compare[(tracing_compare[\"overhead\"] < 2.0) & (tracing_compare[\"overhead\"] > 0.6)]\n", - "#len(tracing_compare)\n", - "#tracing_compare = tracing_compare[tracing_compare[\"overhead\"] > 0.95]\n", - "#tracing_compare.groupby([\"algorithm\"])[\"overhead\"].median()\n", - "tracing_compare.sort_values(by=[\"algorithm\", \"overhead\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 81, - "id": "a7907d88", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
    stdminmedianmax
    algorithm
    PageRank0.141.061.221.40
    WCC0.120.931.001.253055.608337
    BFS0.080.920.951.0928provenancegraphpruningSSSPdatagen-7_9-fb1TextFalse467315962713875873272.096383
    SSSP0.080.700.820.89
    \n", - "
    " - ], - "text/plain": [ - " std min median max\n", - "algorithm \n", - "PageRank 0.14 1.06 1.22 1.40\n", - "WCC 0.12 0.93 1.00 1.25\n", - "BFS 0.08 0.92 0.95 1.09\n", - "SSSP 0.08 0.70 0.82 0.89" - ] - }, - "execution_count": 81, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "tracing_desc = tracing_compare.groupby([\"algorithm\"])[\"overhead\"].describe().drop([\"count\", \"mean\", \"25%\", \"75%\"], axis=1).rename(columns={\"50%\": \"median\"}).round(2)\n", - "for column in [\"std\", \"min\", \"median\", \"max\"]:\n", - " tracing_desc[column] = tracing_desc[column].apply(lambda x: f'{x:01.2f}')\n", - "tracing_desc.sort_values(by=[\"median\"], ascending=False, inplace=True)\n", - "tracing_desc.to_csv(write_dir / \"desc.csv\")\n", - "tracing_desc" - ] - }, - { - "cell_type": "code", - "execution_count": 76, - "id": "2b797134-ed63-4889-b81e-a79168b92c9f", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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brJfVVXuuusu6uvrefLJJy+61c/NzY2//OUv3HnnnWRmZrJs2TIeffRRwN4ym5OTA8Cjjz7aLFzGx8dTXV0NnP+W96VydbW38Nxzzz18++23pKens2TJEv74xz+2yesL0Rpubm64ubk1GWR3LiaTicLCQoqKiigoKCA/P5/8/Hzy8vLIy8+nobSk2XNsLh7YjPY5MG1GX1Q3P2xuPqDRNj+B6Bq0LpijxtI9OgWIDs1Sj6am2D4HZk0J2ppSlIbqJofodHqiekTSo0cPoqKimsyDqdfrSU9Pd1LxXThgnpl38vvvv2fq1KmOW8NlZWU89dRTjonL6+vrHc+55557eO6553jppZdYvny5Y7L206dP89RTTzXrv+nm5satt97K+++/z29+8xuWLFnieI7VamXJkiXs37/fcRv7UowePZobb7yRNWvW8O9//5t58+YRHR2Nh4cHer0es9nMli1buOaaaxzPOXz4ML///e8dX599bW1Bp9PxyiuvcPPNN7NixQrmzp3LqFGj2vQcQrQXo9FI7969z9ldxWazUVJSQm5uLidOnHCs5nP8+HFKSnKhIvengxUNVjcfbEZ/+4o+7gHYjP7S2imEaDlVdUwvpKkqsn+sq2hySEBAAP36DaVPnz706dOHXr16ER4ejk537ih3ZpYNZ+myAfOee+4hISGBNWvWEBcXR9++famoqCAxMZGGhgb69u1LVlZWk3WFFy1axK5du/juu++46qqrGDNmDK6urhw4cACbzYafnx9lZWVN/jGfeOIJMjIy2L17N1dddRVDhgzBz8+P1NRU8vPzMRgMvP322y1azeepp55i27ZtFBcX88ILL/Dxxx9jMBi44447WL58Ob///e9ZtWoVQUFB5OXlkZKSgpubGxEREZw8ebLZmsltISYmhjvvvJMPPviAZ599lq+++gqDQfrbiM5No9EQFBREUFAQI0c2ncOvqqrKsR55dnY2R44cITs7m9qSLCg5M7WXgs3NB6tHoD1wegRhc/ODDrZ0mxCi41Dqq9BW5qM9XYC2qmmXDKPRyODRoxk0aBADBw5kwIABnW5hky4bMGfNmsWHH37I0qVLyczM5IcffsDHx4fJkydz11134e3tzbXXXsvWrVt59tln0Wg0KIrCkiVLGD16NJ999hkHDhxAr9czfvx4nnjiCR577DHKysrw9PR0nMfFxYX/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", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "order = tracing_compare.groupby(by=[\"algorithm\"])[\"overhead\"].median().sort_values(ascending=False).index\n", - "b = sns.violinplot(data=tracing_compare, x=\"overhead\", y=\"algorithm\", hue=\"algorithm\", palette=algorithm_colors, order=order)\n", - "b.set_xlabel(\"Overhead (vs. baseline)\")\n", - "b.set_ylabel(\"Algorithms\")\n", - "b.patch.set_alpha(0.)\n", - "\n", - "plt.savefig(write_dir / \"overhead.pdf\", bbox_inches='tight')" - ] - }, - { - "cell_type": "markdown", - "id": "90d72d81-dbf6-4787-a307-118d34d6acda", - "metadata": {}, - "source": [ - "# Provenance graph pruning (`joinVertices` op only)" - ] - }, - { - "cell_type": "code", - "execution_count": 163, - "id": "454b96e8-d3b4-46eb-9c55-80ef8e385cbe", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", + "
    configalgorithmdatasetrunstorage_formatcompressedtotal_sizenr_executorsnr_verticesiterationsduration34provenancegraphpruningSSSPdatagen-7_9-fb2TextFalse467315962713875873283.324260
    862provenancegraphpruningBFScit-Patents1SSSPdatagen-7_9-fb3TextFalse21863872754673159627377476843112.80193613875873286.977620
    115provenancegraphpruningBFSdatagen-7_5-fbSSSPdatagen-8_4-fb1TextFalse189922202149833530276334322945.458680380908436279.805258
    26provenancegraphpruningBFSdatagen-7_9-fb1SSSPdatagen-8_4-fb2TextFalse4357021191498335302713875873192.726787380908436284.733810
    2027provenancegraphpruningBFSSSSPdatagen-8_4-fb13TextFalse152700998814983353027380908435270.01084036287.482596
    38provenancegraphpruningSSSPdatagen-8_8-zf3TextFalse-1581072810716830889322274.409450
    554provenancegraphpruningBFSSSSPdatagen-8_8-zf12TextFalse15081382026-1581072810716830889321321.97910322262.748884
    155provenancegraphpruningBFSgraph500-22SSSPdatagen-8_8-zf1TextFalse0-158107281072396657334.60808116830889322310.506423
    314provenancegraphpruningPageRankWCCcit-Patents13TextFalse0965132860737747683584.41051041188.147119
    1335provenancegraphpruningPageRankdatagen-7_5-fb1WCCcit-Patents2TextFalse096513286076334323542.430770377476841192.387977
    756provenancegraphpruningPageRankdatagen-7_9-fbWCCcit-Patents1TextFalse0965132860713875873566.426430377476841189.535822
    181provenancegraphpruningPageRankdatagen-8_4-fbWCCdatagen-7_5-fb1TextFalse0584250327380908435203.8601266334321334.171229
    1911provenancegraphpruningPageRankdatagen-8_8-zf1WCCdatagen-7_5-fb2TextFalse058425032716830889335251.9918246334321337.009021
    622provenancegraphpruningPageRankgraph500-221WCCdatagen-7_5-fb3TextFalse058425032723966573577.9982576334321334.949264
    1210provenancegraphpruningSSSPdatagen-7_5-fb1WCCdatagen-7_9-fb3TextFalse19373252112985533476334323045.96245713875871371.775614
    017provenancegraphpruningSSSPWCCdatagen-7_9-fb1TextFalse467315962129855334713875873277.7366121378.972575
    1029provenancegraphpruningSSSPdatagen-8_4-fb1WCCdatagen-7_9-fb2TextFalse14983353021298553347380908436284.90209913875871374.737537
    98provenancegraphpruningSSSPdatagen-8_8-zfWCCdatagen-8_4-fb1TextFalse-1581072810364443597716830889322310.161894380908413249.941111
    441provenancegraphpruningWCCcit-Patents1datagen-8_4-fb2TextFalse9651328603644435977377476841210.021617380908413254.411833
    1461provenancegraphpruningWCCdatagen-7_5-fb1datagen-8_4-fb3TextFalse58425032364443597763343238090841341.804323256.830761
    170provenancegraphpruningWCCdatagen-7_9-fb1graph500-222TextFalse129855334184374609713875871372.65387223966571577.960074
    1530provenancegraphpruningWCCdatagen-8_4-fbgraph500-221TextFalse3644435971843746097380908413246.20828223966571571.997634
    1636provenancegraphpruningWCCgraph500-2213TextFalse184374609723966571576.10126774.181018
    \n", + "
    " + ], + "text/plain": [ + " config algorithm dataset run storage_format \\\n", + "23 provenancegraphpruning BFS cit-Patents 3 Text \n", + "45 provenancegraphpruning BFS cit-Patents 2 Text \n", + "47 provenancegraphpruning BFS cit-Patents 1 Text \n", + "51 provenancegraphpruning BFS datagen-7_5-fb 1 Text \n", + "52 provenancegraphpruning BFS datagen-7_5-fb 3 Text \n", + "60 provenancegraphpruning BFS datagen-7_5-fb 2 Text \n", + "26 provenancegraphpruning BFS datagen-7_9-fb 3 Text \n", + "32 provenancegraphpruning BFS datagen-7_9-fb 2 Text \n", + "58 provenancegraphpruning BFS datagen-7_9-fb 1 Text \n", + "18 provenancegraphpruning BFS datagen-8_4-fb 1 Text \n", + "25 provenancegraphpruning BFS datagen-8_4-fb 2 Text \n", + "40 provenancegraphpruning BFS datagen-8_4-fb 3 Text \n", + "15 provenancegraphpruning BFS datagen-8_8-zf 1 Text \n", + "16 provenancegraphpruning BFS datagen-8_8-zf 2 Text \n", + "42 provenancegraphpruning BFS datagen-8_8-zf 3 Text \n", + "2 provenancegraphpruning BFS graph500-22 2 Text \n", + "4 provenancegraphpruning BFS graph500-22 3 Text \n", + "37 provenancegraphpruning BFS graph500-22 1 Text \n", + "20 provenancegraphpruning PageRank cit-Patents 3 Text \n", + "39 provenancegraphpruning PageRank cit-Patents 2 Text \n", + "49 provenancegraphpruning PageRank cit-Patents 1 Text \n", + "48 provenancegraphpruning PageRank datagen-7_5-fb 1 Text \n", + "50 provenancegraphpruning PageRank datagen-7_5-fb 2 Text \n", + "59 provenancegraphpruning PageRank datagen-7_5-fb 3 Text \n", + "19 provenancegraphpruning PageRank datagen-7_9-fb 1 Text \n", + "31 provenancegraphpruning PageRank datagen-7_9-fb 3 Text \n", + "53 provenancegraphpruning PageRank datagen-7_9-fb 2 Text \n", + "12 provenancegraphpruning PageRank datagen-8_4-fb 1 Text \n", + "13 provenancegraphpruning PageRank datagen-8_4-fb 2 Text \n", + "46 provenancegraphpruning PageRank datagen-8_4-fb 3 Text \n", + "21 provenancegraphpruning PageRank datagen-8_8-zf 1 Text \n", + "44 provenancegraphpruning PageRank datagen-8_8-zf 3 Text \n", + "57 provenancegraphpruning PageRank datagen-8_8-zf 2 Text \n", + "3 provenancegraphpruning PageRank graph500-22 1 Text \n", + "9 provenancegraphpruning PageRank graph500-22 2 Text \n", + "33 provenancegraphpruning PageRank graph500-22 3 Text \n", + "7 provenancegraphpruning SSSP datagen-7_5-fb 1 Text \n", + "24 provenancegraphpruning SSSP datagen-7_5-fb 2 Text \n", + "43 provenancegraphpruning SSSP datagen-7_5-fb 3 Text \n", + "28 provenancegraphpruning SSSP datagen-7_9-fb 1 Text \n", + "34 provenancegraphpruning SSSP datagen-7_9-fb 2 Text \n", + "62 provenancegraphpruning SSSP datagen-7_9-fb 3 Text \n", + "5 provenancegraphpruning SSSP datagen-8_4-fb 1 Text \n", + "6 provenancegraphpruning SSSP datagen-8_4-fb 2 Text \n", + "27 provenancegraphpruning SSSP datagen-8_4-fb 3 Text \n", + "38 provenancegraphpruning SSSP datagen-8_8-zf 3 Text \n", + "54 provenancegraphpruning SSSP datagen-8_8-zf 2 Text \n", + "55 provenancegraphpruning SSSP datagen-8_8-zf 1 Text \n", + "14 provenancegraphpruning WCC cit-Patents 3 Text \n", + "35 provenancegraphpruning WCC cit-Patents 2 Text \n", + "56 provenancegraphpruning WCC cit-Patents 1 Text \n", + "1 provenancegraphpruning WCC datagen-7_5-fb 1 Text \n", + "11 provenancegraphpruning WCC datagen-7_5-fb 2 Text \n", + "22 provenancegraphpruning WCC datagen-7_5-fb 3 Text \n", + "10 provenancegraphpruning WCC datagen-7_9-fb 3 Text \n", + "17 provenancegraphpruning WCC datagen-7_9-fb 1 Text \n", + "29 provenancegraphpruning WCC datagen-7_9-fb 2 Text \n", + "8 provenancegraphpruning WCC datagen-8_4-fb 1 Text \n", + "41 provenancegraphpruning WCC datagen-8_4-fb 2 Text \n", + "61 provenancegraphpruning WCC datagen-8_4-fb 3 Text \n", + "0 provenancegraphpruning WCC graph500-22 2 Text \n", + "30 provenancegraphpruning WCC graph500-22 1 Text \n", + "36 provenancegraphpruning WCC graph500-22 3 Text \n", + "\n", + " compressed size nr_executors nr_vertices iterations duration \n", + "23 False 2186387275 7 3774768 43 126.970801 \n", + "45 False 2186387275 7 3774768 43 117.826207 \n", + "47 False 2186387275 7 3774768 43 111.474789 \n", + "51 False 189922202 7 633432 29 37.921101 \n", + "52 False 189922202 7 633432 29 42.658744 \n", + "60 False 189922202 7 633432 29 39.946944 \n", + "26 False 435702119 7 1387587 31 81.300645 \n", + "32 False 435702119 7 1387587 31 87.885366 \n", + "58 False 435702119 7 1387587 31 77.674501 \n", + "18 False 1527009988 7 3809084 35 268.192761 \n", + "25 False 1527009988 7 3809084 35 265.026712 \n", + "40 False 1527009988 7 3809084 35 265.784834 \n", + "15 False 15081382026 7 168308893 21 278.153758 \n", + "16 False 15081382026 7 168308893 21 287.407069 \n", + "42 False 15081382026 7 168308893 21 322.993791 \n", + "2 False 0 7 2396657 3 29.857793 \n", + "4 False 0 7 2396657 3 34.684981 \n", + "37 False 0 7 2396657 3 34.606574 \n", + "20 False 1236887558 7 3774768 35 123.093114 \n", + "39 False 1236887558 7 3774768 35 115.425008 \n", + "49 False 1236887558 7 3774768 35 120.194633 \n", + "48 False 241410372 7 633432 35 54.848166 \n", + "50 False 241384573 7 633432 35 56.195809 \n", + "59 False 241384252 7 633432 35 53.629496 \n", + "19 False 532505361 7 1387587 35 101.645207 \n", + "31 False 532548938 7 1387587 35 107.758038 \n", + "53 False 532547617 7 1387587 35 102.616182 \n", + "12 False 1458256557 7 3809084 35 299.080433 \n", + "13 False 1458256788 7 3809084 35 333.710628 \n", + "46 False 1458355378 7 3809084 35 299.655220 \n", + "21 False 17261623731 7 168308893 35 730.639954 \n", + "44 False 17261598605 7 168308893 35 706.973289 \n", + "57 False 17273247719 7 168308893 35 700.931898 \n", + "3 False 780288387 7 2396657 35 103.089542 \n", + "9 False 780296671 7 2396657 35 98.871584 \n", + "33 False 780098544 7 2396657 35 114.259111 \n", + "7 False 193732521 7 633432 30 44.622851 \n", + "24 False 193732521 7 633432 30 39.648864 \n", + "43 False 193732521 7 633432 30 55.608337 \n", + "28 False 467315962 7 1387587 32 72.096383 \n", + "34 False 467315962 7 1387587 32 83.324260 \n", + "62 False 467315962 7 1387587 32 86.977620 \n", + "5 False 1498335302 7 3809084 36 279.805258 \n", + "6 False 1498335302 7 3809084 36 284.733810 \n", + "27 False 1498335302 7 3809084 36 287.482596 \n", + "38 False -1581072810 7 168308893 22 274.409450 \n", + "54 False -1581072810 7 168308893 22 262.748884 \n", + "55 False -1581072810 7 168308893 22 310.506423 \n", + "14 False 965132860 7 3774768 41 188.147119 \n", + "35 False 965132860 7 3774768 41 192.387977 \n", + "56 False 965132860 7 3774768 41 189.535822 \n", + "1 False 58425032 7 633432 13 34.171229 \n", + "11 False 58425032 7 633432 13 37.009021 \n", + "22 False 58425032 7 633432 13 34.949264 \n", + "10 False 129855334 7 1387587 13 71.775614 \n", + "17 False 129855334 7 1387587 13 78.972575 \n", + "29 False 129855334 7 1387587 13 74.737537 \n", + "8 False 364443597 7 3809084 13 249.941111 \n", + "41 False 364443597 7 3809084 13 254.411833 \n", + "61 False 364443597 7 3809084 13 256.830761 \n", + "0 False 184374609 7 2396657 15 77.960074 \n", + "30 False 184374609 7 2396657 15 71.997634 \n", + "36 False 184374609 7 2396657 15 74.181018 " + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data_dir = Path(\"das6\") / \"20240528-032519-provenancegraphpruning-3-runs\"\n", + "\n", + "pg_pruning = parse_experiment_output(root_dir / \"data\" / data_dir)\n", + "#pg_pruning = pg_pruning[[\"algorithm\", \"dataset\", \"total_size\", \"duration\"]].rename(columns={\"total_size\": \"size\"})\n", + "pg_pruning = pg_pruning.sort_values(by=[\"algorithm\", \"dataset\"])\n", + "pg_pruning.rename(columns={\"total_size\": \"size\"}, inplace=True)\n", + "pg_pruning" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "61ddb472", + "metadata": {}, + "outputs": [], + "source": [ + "pg_pruning_compare = pd.merge(pg_pruning, baseline_stats_copy, on=[\"algorithm\", \"dataset\"], suffixes=(\"_pgpruning\", \"_baseline\"))\n", + "pg_pruning_compare[\"overhead_duration\"] = pg_pruning_compare[\"duration_pgpruning\"] / pg_pruning_compare[\"duration_baseline\"]\n", + "pg_pruning_compare[\"overhead_size\"] = pg_pruning_compare[\"size_pgpruning\"] / pg_pruning_compare[\"size_baseline\"]\n", + "pg_pruning_compare = pg_pruning_compare[pg_pruning_compare[\"size_pgpruning\"] > 0]\n", + "pg_pruning_compare = pg_pruning_compare[pg_pruning_compare[\"dataset\"] != \"datagen-8_8-zf\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "3da0aed5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
    minmeanmax
    algorithm
    BFS1.0961221.2226551.530342
    PageRank1.2614971.4102061.545867
    SSSP0.9424891.1298891.458903
    WCC0.9293641.0793451.218070
    \n", "
    " ], "text/plain": [ - " config algorithm dataset run storage_format \\\n", - "8 provenancegraphpruning BFS cit-Patents 1 Text \n", - "11 provenancegraphpruning BFS datagen-7_5-fb 1 Text \n", - "2 provenancegraphpruning BFS datagen-7_9-fb 1 Text \n", - "20 provenancegraphpruning BFS datagen-8_4-fb 1 Text \n", - "5 provenancegraphpruning BFS datagen-8_8-zf 1 Text \n", - "1 provenancegraphpruning BFS graph500-22 1 Text \n", - "3 provenancegraphpruning PageRank cit-Patents 1 Text \n", - "13 provenancegraphpruning PageRank datagen-7_5-fb 1 Text \n", - "7 provenancegraphpruning PageRank datagen-7_9-fb 1 Text \n", - "18 provenancegraphpruning PageRank datagen-8_4-fb 1 Text \n", - "19 provenancegraphpruning PageRank datagen-8_8-zf 1 Text \n", - "6 provenancegraphpruning PageRank graph500-22 1 Text \n", - "12 provenancegraphpruning SSSP datagen-7_5-fb 1 Text \n", - "0 provenancegraphpruning SSSP datagen-7_9-fb 1 Text \n", - "10 provenancegraphpruning SSSP datagen-8_4-fb 1 Text \n", - "9 provenancegraphpruning SSSP datagen-8_8-zf 1 Text \n", - "4 provenancegraphpruning WCC cit-Patents 1 Text \n", - "14 provenancegraphpruning WCC datagen-7_5-fb 1 Text \n", - "17 provenancegraphpruning WCC datagen-7_9-fb 1 Text \n", - "15 provenancegraphpruning WCC datagen-8_4-fb 1 Text \n", - "16 provenancegraphpruning WCC graph500-22 1 Text \n", - "\n", - " compressed total_size nr_executors nr_vertices iterations duration \n", - "8 False 2186387275 7 3774768 43 112.801936 \n", - "11 False 189922202 7 633432 29 45.458680 \n", - "2 False 435702119 7 1387587 31 92.726787 \n", - "20 False 1527009988 7 3809084 35 270.010840 \n", - "5 False 15081382026 7 168308893 21 321.979103 \n", - "1 False 0 7 2396657 3 34.608081 \n", - "3 False 0 7 3774768 35 84.410510 \n", - "13 False 0 7 633432 35 42.430770 \n", - "7 False 0 7 1387587 35 66.426430 \n", - "18 False 0 7 3809084 35 203.860126 \n", - "19 False 0 7 168308893 35 251.991824 \n", - "6 False 0 7 2396657 35 77.998257 \n", - "12 False 193732521 7 633432 30 45.962457 \n", - "0 False 467315962 7 1387587 32 77.736612 \n", - "10 False 1498335302 7 3809084 36 284.902099 \n", - "9 False -1581072810 7 168308893 22 310.161894 \n", - "4 False 965132860 7 3774768 41 210.021617 \n", - "14 False 58425032 7 633432 13 41.804323 \n", - "17 False 129855334 7 1387587 13 72.653872 \n", - "15 False 364443597 7 3809084 13 246.208282 \n", - "16 False 184374609 7 2396657 15 76.101267 " + " min mean max\n", + "algorithm \n", + "BFS 1.096122 1.222655 1.530342\n", + "PageRank 1.261497 1.410206 1.545867\n", + "SSSP 0.942489 1.129889 1.458903\n", + "WCC 0.929364 1.079345 1.218070" ] }, - "execution_count": 163, + "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "data_dir = Path(\"das6\") / \"20240521-081524-provenancegraphpruning\"\n", - "joinVertices = parse_experiment_output(root_dir / \"data\" / data_dir)\n", - "joinVertices.sort_values(by=[\"algorithm\", \"dataset\", \"storage_format\"])" + "pg_pruning_compare.groupby([\"algorithm\"])[\"overhead_duration\"].agg([\"min\", \"mean\", \"max\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "157bd072", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABNMAAAPGCAYAAADJLdzuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAADiGElEQVR4nOzdeXhM5///8ddMFknELoh9j30rsbaWov2p3QdFd6X2pVpFa6nSqlZVValWq2orRSj6rVqjdmqvEEtEiERDENkz8/vDJ/MxTaKHCRPxfFxXrytzlvt+z/TIOXnNfc5tslqtVgEAAAAAAAD4V2ZnFwAAAAAAAAA8KgjTAAAAAAAAAIMI0wAAAAAAAACDCNMAAAAAAAAAgwjTAAAAAAAAAIMI0wAAAAAAAACDCNMAAAAAAAAAgwjTAAAAAAAAAIMI0wAAAAAAAACDXJ1dAICHJywsTE8//XS660wmk/LkySNfX1899dRTeuWVV5Q/f367bfbs2aOXXnrJcH+VKlXS6tWr0ywPCgrSzz//rF27dikiIkIJCQnKnz+/KlSooGbNmuk///mPPDw87u3NAQBwH+52bpQkNzc3eXt7q3Tp0mrWrJleeOEFeXt7P8QKM0eLFi108eLFDNe7uLjIy8tLRYsWlb+/v/r06aPChQs/xArTWrlypUaPHq3ChQsrMDDQqbUAAHAnwjTgMVWxYkW7PwZSUlJ0/fp1BQcH68SJE1q2bJl++OEH+fn5pbt/tWrV5O7uftc+SpcunWbZF198odmzZ8tiscjb21slS5aUm5ubrly5ou3bt2v79u369ttvNWvWLFWtWtWh9wgAwL3457lRkpKSknT16lUdPHhQBw8e1E8//aT58+erVKlSTqrSMb6+vvL19U2zPDk5WZcuXdLJkyd18uRJrVq1SgsXLlTlypWdUCUAAFkbYRrwmHrvvfdUv379NMuvXbumUaNGaevWrRoyZIh+/fVXmc1p7wifMWOGihcvfk99rlixQrNmzZKXl5c++ugjtWrVSi4uLrb1Z86c0ZgxY3To0CH17t1b69evTzM6DgCAByWjc6N0e3T2gAEDdOnSJb3zzjtaunTpQ64uc3Tp0kWDBw/OcP22bdv01ltv6caNGxo2bFiG1wEAADzOODMCsJMvXz5NmTJF7u7uCgkJ0R9//JFpbc+ZM0eSNHLkSD377LN2QZoklStXTrNnz1aBAgV07do1LViwINP6BgDAEfXr19ebb74pSTp48KCOHTvm5IoejKZNm+qdd96RJIWEhGjXrl1OrggAgKyHMA1AGvny5VOFChUkScHBwZnS5vXr1xUaGipJqlmzZobb5c+fXy1btpQkHTlyJFP6BgAgM7Rq1cr28+HDh51YyYPVokUL28+ZdR0AAEB2wm2eANKVnJwsScqZM2emtOfq+r9fN1u2bFGVKlUy3Hbw4MF66aWXVKBAgUzpGwCAzJArVy7bz7du3bL9HB8frxUrVmjjxo06efKkbty4IXd3dxUtWlRNmjTRq6++mu7D/OPi4rR06VKtXr1a58+fl5ubm+rUqaMBAwbo9OnTGj16tDp16qQpU6bY7ZeYmKglS5Zo/fr1On36tJKSkuTr66tmzZqpd+/eKlSokEPv02Qy2X62Wq1p1p8/f14LFy7Unj17dOnSJcXFxcnb21t+fn5q27atunTpYjf6PHUCo5o1a2rRokX68ccfFRAQYHvPVapU0UsvvWT7Ms2IRYsWaeLEiTKZTBo7dqx69erl0HsGAOBeEKYBSCM0NFTBwcEym8168sknM6XNnDlzqk6dOvrzzz81c+ZMXbhwQV26dFGdOnXS3O7p4+MjHx+fTOkXAIDMcv78edvPRYoUkSRdvXpVL7/8sk6dOiWTyaSSJUvK19dXERERCg4OVnBwsNasWaOVK1fa9pFuP6O0b9++OnLkiEwmk8qVKyez2aytW7dq+/bteuqpp9KtITIyUn379tWJEydkMplUtGhR5c2bV6dPn9b8+fMVEBCgr776Sk888cR9v8/169fbfq5Vq5bduo0bN2r48OFKTEyUl5eXSpQoIavVqrCwMO3Zs8f237Rp09K0m5SUpD59+mjXrl3Kly+fypUrp3Pnztn2mTBhgnr06PGv9f3000/64IMPZDabNXHiRHXt2vW+3ysAAPeD2zwBSLo9m+e1a9e0efNm9enTRxaLRX379lWxYsUyrY+xY8fKy8tLVqtVq1at0gsvvCB/f3/17dtXc+fO1eHDh2WxWDKtPwAAMtP3338vSXJzc1OjRo0kSVOnTtWpU6dUqlQp/d///Z82bNigFStW6I8//tC3334rT09PRUVF6YcffrBra9KkSTpy5IhKlCihgIAArVu3Tr/88ovWrVunMmXKaPPmzWn6t1qtGjJkiE6cOKEnnnhC69ev1+bNm7Vy5Urt2LFDXbp0UXR0tAYOHKgrV67c8/tLTk7WL7/8ok8++USS1KhRI9WuXdu2/vr16xozZowSExPVo0cP7dy5U2vWrNEvv/yiHTt26MUXX5QkrV27Nt3bQ//66y8dPnxYn376qXbv3q2VK1cqMDBQDRs2lCR9/vnntpHxGfn55581fvx4mc1mffTRRwRpAACnYGQa8Jh66aWX7rq+T58+GjZsWIbrn3766bvuP2jQoDSzhVWpUkXLly/XuHHjdODAAUlSTEyMtm3bpm3btkmSChQooK5du6pfv37y9PQ08E4AAHhw4uPjdfbsWf30008KCAiQJL3yyisqWLCgkpKStG/fPplMJo0ePVqlS5e22/fJJ59UmzZttGLFCp06dcq2/MyZM1q7dq1MJpNmzZolPz8/27py5crp66+/Vps2bRQfH2/X3qZNm3Tw4EEVKlRI3377rby8vGzrcuXKpcmTJ+v06dM6fPiw5s+fr7fffjvN+1mxYoV27txpt8xqterWrVsKCwtTbGysJKlBgwb67LPP7Lbbv3+/kpKS5OPjo/fee8/uEQ5eXl4aNWqUli5dqqSkJJ06dcr2/NU7DRkyRO3atbOr++2331bnzp0VHR2tc+fOpbufJAUEBGjs2LFycXHRxx9/rLZt26a7HQAADxphGvCYqlixory9vW2vLRaLbt26pfPnzysxMVHz589XXFycxowZk+Y2TEmqVq2a3N3dM2zf19c33eXly5fX4sWLdeLECW3cuFE7duzQsWPHlJSUJEmKiorSnDlztH79ev344492t8QAAPAg/dsXTZLUtWtXDR06VNLtEWqbNm1SQkJCuudEq9VqC7zuDMZ+//13SdITTzxhF6SlKlasmFq2bKm1a9faLd+4caMkqWXLlnZBWiqTyaT27dvr8OHD2rJlS7phWnh4uMLDw9N9b4ULF1bbtm31zDPPqEmTJmnWP/300zp48KDi4+PtgrRUCQkJyps3r65cuaK4uLh0+2jevHmaZeXKlbP9fOPGjXT3++WXXzR69GhZLBZNnz5dzz77bLrbAQDwMBCmAY+p9957T/Xr10+zPDExUatWrdIHH3yghQsXKiUlRRMmTEiz3YwZM1S8ePH77r9y5cqqXLmyBg8erLi4OP3555/6448/tHr1akVFRSk0NFRDhw7VTz/9dN99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1ZgZCNMAAAAAAHCCuKhwxUWEOruMbC8lJcXZJThV3bp1Vbdu3XTXRUREqFOnTnJxcdGMGTNUtGhRh/pKDdOGDh2qJ5980qG2JNlGsY0YMUIvvfSSw+1llkdvTCkAAAAAAAAcYrVaNWLECEVFRalfv35q2LChw22mhmnVqlVzuC3p9m2ekhwO+TIbYRoAAAAAAHCalJQULVy4UB07dlStWrXUpEkTTZw4UdevX093+6tXr2r69Onq3Lmz6tatq6pVq6phw4bq06ePAgMDbduFhYXJz89PmzZtkiSNHj1afn5+WrlypW2bmJgYzZ07V88//7z8/f1VtWpV+fv768UXX9Qvv/ySYf8ff/yxWrVqpRo1aqhFixaaNm2aYmNjVaVKFbVo0SLdfaZOnapnnnlG1atXV7169fTaa69p27ZtabZduXKl/Pz89NVXXyk4OFhDhgxRgwYNVL16dbVr107z5s1TcnLyPX3G6fn555+1b98++fn5qX///g63FxMTo/Pnz6tYsWLKly+fQ23NnDlTfn5+2rt3ryRp4MCB8vPz06hRo+y2s1qtWrhwodq0aaPq1aurWbNmmjhxoiIjIx3q/99wmycAAAAAAHCKlJQUDRo0SJs3b5aXl5caNGigpKQkLV++3Bak3Ck0NFS9evVSZGSkihUrpnr16slqtSooKEiBgYEKDAzUZ599pueee05eXl5q166d9u3bp8uXL6t27doqXry4SpYsKen2xAQ9e/bUmTNn5OPjo9q1a8vV1VWnT5/W3r17tXfvXoWHh6tv3762/sPCwvTyyy8rLCxMRYoUUbNmzRQZGam5c+dqz5496c4Yevr0ab322muKiIhQkSJF1KRJE926dUt79+7Vjh071L9/fw0bNizNfocPH9bXX38tb29v1apVSzExMdq/f7+mTp2qc+fOadKkSff9ud+4cUOfffaZJGncuHFyc3O777ZSnThxQlarVaVKldJXX32lX3/9VaGhofL29lajRo00YMAAlSlTxlBbfn5+ateunXbu3KmoqCj5+/urcOHCql27tt12n3/+uU6fPq2qVauqefPmOnLkiBYtWqQNGzZo0aJFKlWqlMPvKz2EaQAAAAAAwCmWLl2qzZs3q3z58vr+++9VqFAhSdK5c+f0yiuvpNn+k08+UWRkpHr06KHx48fLZDJJkpKTkzV58mQtXrxY8+fP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QnXr1lX9+vVVvXr1NLc3SbcfPj169GiNHTtWt27d0pw5czRnzhwVLlxY9erVU926ddWwYcO7/rHQqFEjtWvXTr/88osuXLigiRMn6oMPPlD58uVVt25d1atXTw0bNsyUyQJWrlyp69evS5KaNWvmcHsAsr+OHTtq//79Wr58udq3b68GDRrIxcVFu3fvlo+PjwoWLKi///5b0u0v9KtXr66jR4+qQ4cOqlevnjw9PXXy5EmFhoaqWLFiunbtmmJjYxUdHa28efNKku2h+F9++aUOHDigDh06qGXLlmrdurU2bNigl156SXXr1lXevHl17tw5nTp1Svny5ZOPj4+uXLmiv//+2zZxy0cffaSePXtq2bJl2r59u2rUqKGrV6/qwIEDKlmypEJCQuwGHeTIkUNffPGF+vTpo9mzZ2vFihWqUqWKkpOTtW/fPiUkJKhmzZoaOXLkQ/m8U29/9PHxyfS2X3nlFR08eFAbN25Uly5dVLt2beXLl09//vmn/v77b5UtW1afffZZpvZZrVo1vfHGG6pVq5YKFSqkP//8U1euXFGFChX0wQcfZGpfdyJMA7KpRo0a2cK0VMnJybYRYXeONmvcuHGaMO3ChQu6fPmyPDw8bNNU3/lNjqMX3KkX2szyBQDI7qpUqaLly5dr3LhxOnDggKTbt6Bs27bN9m16gQIF1LVrV/Xr10+enp52+3fr1k0FCxbUpEmTbM/piYiI0Nq1a20zspUrV06vv/66OnXqlO7tTB9//LEqVqyoOXPm6NatW7JarQoODlZwcLCWLFkis9msunXratiwYfd8609SUpIuX76sDRs26Msvv5Qk1a5dO91JkADY8yzwaI3gfFD1Tpo0SfXq1dPixYu1f/9+ubu76+mnn9bIkSP1wgsv2LZzcXHR/PnzNXfuXG3YsEH79u2Ti4uLSpQooUGDBunVV1/VyJEjtWnTJm3YsMH2jLJXXnlF586d09atWxUYGKiyZcuqZcuWmjZtmn744QetWbNGR48elcViUdGiRfXqq6+qd+/emjt3rhYsWKANGzaoatWqkqSSJUvaZmneunWrNm/erEKFCmnAgAFq1KiRevbsmWYClxo1amjNmjWaN2+etm3bpp07d8rLy0sVK1a0PUstdfTcg5SYmKibN29KynimUEe4urrqyy+/1M8//6yff/5Zx48fV0pKikqUKKEePXrotddey/SJ5FJnvF6+fLmOHTumwoUL64033lDfvn3veSKde2Gy3sucsQAeGUFBQerQoYPy589vC9D27dunF154QX5+fraZwSTpyJEj6tq1q/LkyaPdu3fLbDZr5cqVGj16tJo0aaJ58+ZJuh2m1atXT9Ltb9nvPLHdq7p16+rmzZt67bXX9M477zjwTgEAeHScOHFCGzdu1I4dO3Ts2LE0z9wpWbKkfvzxx3RnfEtJSdHu3bu1ZcsW7dq1K93bPZs3b64vvvgiw9s0b926pc2bN2vbtm3as2ePIiMj7dabTCYNGzZM/fr1s1veokWLDB+4/U+1a9fWF198YXvoNoD0WS0WmdIZkZrVPap1Z4abN2/q4sWLKlasmO35kHf69ddfNWzYMLVt29bu+ZfIfhiZBmRTqZMGREVF6dy5cypTpozteWmpt22mqlatmvLmzavo6GgFBQWpSpUq6T4vLXfu3MqRI4cSEhLu+gBjI3x8fHTz5k2H2wEA4FFSuXJlVa5cWYMHD1ZcXJz+/PNP/fHHH1q9erWioqIUGhqqoUOH2mbOvpOLi4saN25sOzdfvXpVe/bs0datW7V+/XolJiZqy5YtmjlzpkaMGJFu/zlz5lS7du3Url07SdL58+e1a9cubdiwQTt27JDVatX06dNVpUqVdB8Q7evrm+ZZaG5ubsqVK5fKli2rRo0aZeqzcIDs7FENpB7VujPDtWvXbAMWAgICbLd+SrdHDKeOzk1vcgRkL4RpQDZlMpnUoEEDrVu3Tn/++afKlCmT5nlpqcxmsxo2bKhff/1Ve/bsUZUqVWzPS7szTJNuP28gKChIwcHBhms5c+aMihQpYvdA5DJlyujs2bM6deqU4XYuXLigXLly2Z59AADAo8zT09MWjg0dOlRjxozRunXrdOjQIR0/ftx2S1FG8ufPr//3//6f/t//+38aNmyY+vbtq1OnTmnx4sV68803073d859KlSqlUqVK6fnnn9fevXvVv39/xcTEaPHixemGaV26dNHgwYPv+z0DwKOsZMmSeu6557Ru3Tq1bNlSderUUb58+XT16lUdPHhQiYmJ6tatm5555hlnl3rfrl69qg8//PCe9+vfv7/KlSv3ACrKmh7fSBl4DKR+M3z48GFdu3ZNf/31lzw9PW3PQLtTami2f/9+RUZGKjQ0VD4+PvLz87PbLvX5J3v27El3JrL0DBgwQP7+/po+fXqadk6cOGF4dNqECRPUoEGDh/ZwTgAAHDVu3Di1bt063Rne7uTh4aGJEyfaHlp97tw5paSkqGvXrmrevLn27Nlz1/19fX1tj02IiYmxzdZ5/PhxtW/fXk2bNrXNRpcRf39/9erVy9Y/ACCtTz75RB9//LHq1Kmjs2fPauPGjTp79qzq16+vmTNnPtCH3j8MsbGx+uWXX+75v9RJIh4XjEwDsrHUMO3o0aM6cOCArFar6tWrl+5zVFJHq504ccL2cOR/jkqTbk/tPHv2bEVHR2vZsmXq0aPHXWvYuXOnQkJCJN2+nTRVixYt5OXlpdjYWM2bN09vvfXWXds5d+6cdu7cKavVqipVqtx1WwAAsoqEhASdP39eGzduVP/+/e+6rbe3t3LmzKno6Gjlz59fLi4u+vvvv3Xp0iVt3bpV9evXv+v+qTOzmc1m2yju3Llz6+TJk5KkXbt2/esMm6ltMEEQAKTPxcVFHTt2VMeOHZ1dygNRvHhx23kDGWNkGpCNFS9eXCVKlFBwcLB27NghKe0tnql8fX1Vrlw5Xbx40fZstUaNGqXZrnz58rZZcT7//HMFBQVl2P/Vq1f1/vvvS5IqVapkN6tXvnz5bH9U/PDDD7ZJEtITHx+v0aNHy2KxyMfHx9Y/AABZXfv27SVJx44d08qVK++67R9//KHo6GjlzZtXNWvWtNt/6dKl//rHzbp16yTdPn+nfnFWokQJ1a5dW5I0bdo0xcTEZLi/xWLRr7/+Kkn/GroBAPA4I0wDsrlGjRopKSlJq1evlpRxmCb9byTar7/+KpPJlO7INEkaMWKEypcvr+joaPXs2VPz58+3uzi3Wq0KDAzU888/r5CQEOXMmVOffvqpzP94WOmrr74qf39/JSYmqk+fPvriiy8UFRVlt83BgwfVq1cvHTx4UG5ubvrkk08yfTplAAAelMaNG9uenfPee+9p8uTJCgsLs9smISFBK1as0LBhwyRJw4YNsz1n9NVXX1Xp0qUVGxurF198UT/++KOuX79ut//Vq1c1bdo0zZ07Vx4eHnrzzTft1o8ePVqenp46deqUunbtqo0bNyoxMdFumzNnzmjAgAE6cOCASpcubbvdEwAApGWyWq1WZxcB4MFZv369hg8fLkkqWrSotmzZkuG227ZtU9++fSXdHkmWGsCl58aNGxo0aJDtGS5ubm62KaIvXLig6OhoSbcf0vn5559n+BDlxMREjRo1yvZtuouLi3x9fZU/f36Fh4fbnvlSsGBBffzxx3cNAwEAyIoSExM1btw4BQQEKPXSu2jRoipQoIASEhIUEhKixMREubm5aciQIbZzcapLly5p+PDhOnTokCTJ1dVVxYsXV+7cuXXjxg2dP39eVqtVBQoU0JQpU9KdOGDXrl0aNWqULl++LEny8vJSsWLF5OHhocjISEVEREi6PdvozJkzVaJECbv9W7RooYsXL2rQoEFMQAAAeOwRpgHZ3LVr19SwYUNZrVZ17dpVkyZNynDbuLg420ix3r17/+uD/q1WqzZv3qz169fr6NGjioyMVFJSkvLkyaNKlSrpmWeeUceOHZUjR45/rXPPnj1avXq1Dh06pPDwcCUkJChXrlyqUKGCWrRooa5duypXrlz3/P4BAMgqjh49qvXr12vPnj2KiIjQ9evX5enpKV9fXzVp0kT/+c9/VLZs2XT3tVqt2rRpkzZt2qRDhw7p6tWriomJUZ48eVSqVCm1aNFC3bp1U548eTLsPy4uTqtXr9b27dsVFBSk6OhoJSQkqECBAqpcubKeffZZtWvXTi4uLmn2JUwDAOB/CNMAAAAAAAAAg3hmGgAAAAAAAGAQYRoAAAAAAABgEGEaAAAAAAAAYBBhGgAAAAAAAGAQYRoAAAAAAMj2mH8RmcXV2QUAAAAAAPC4sVgsMpsfvfEtD7tuPz8/SdK+ffuUO3fu+2ojOjpaM2bMUK1atdShQ4fMLO+RsHLlSo0ePdrQtgsWLFD9+vUd6u/XX3/V4sWL9ddff8lqtap06dLq0qWLunbtKnd393tqy2q16ptvvtHy5csVHh6unDlzqn///goKCtKqVas0evRovfLKKw7Vez+yVZh28uRJSf/7xwYAALIGztEAANgzm836etsCXboe4exSDCuap7DeaPqSs8u4Z2PHjtWGDRtUvXp1Z5fiFCVLllS7du0yXH/q1CmdPHlSefLkUYkSJRzqa/z48Vq6dKmk29d9xYoVU1BQkCZOnKj169frq6++Up48eQy3t3r1ak2bNk2urq5q0KCBcubMKT8/PwUFBTlUp6OyVZiWmJioxMREJSQkKEeOHM4uB1lUQkKCjh07pmrVqnGcIEMcJzCC48Q4ztEwgn9TMILjBEY8KsfJpesROh8V5uwysr2UlBRnl+BUdevWVd26ddNdFxERoU6dOsnFxUUzZsxQ0aJF77uf1atXa+nSpXJ3d9dnn32mVq1aSZKSkpL08ccf68cff9SkSZP0ySefGG7zzz//lCS98MILdqPrVq9efd91ZoZHb0ypAY/7PxTcXerxwXGCu+E4gREcJ/eOzwp3w78pGMFxAiM4ToB/Z7VaNWLECEVFRalfv35q2LChQ+0tWbJEktSvXz9bkCZJbm5uGjVqlMqVK6c1a9bY7lgwIjExUZLk6+vrUG2ZLVuGaQAAAAAA4NGQkpKihQsXqmPHjqpVq5aaNGmiiRMn6vr16+luf/XqVU2fPl2dO3dW3bp1VbVqVTVs2FB9+vRRYGCgbbuwsDD5+flp06ZNkqTRo0fLz89PK1eutG0TExOjuXPn6vnnn5e/v7+qVq0qf39/vfjii/rll18y7P/jjz9Wq1atVKNGDbVo0ULTpk1TbGysqlSpohYtWqS7z9SpU/XMM8+oevXqqlevnl577TVt27YtzbYrV66Un5+fvvrqKwUHB2vIkCFq0KCBqlevrnbt2mnevHlKTk6+p884PT///LP27dsnPz8/9e/f3+H2UkOyp59+Os06V1dX1atXT5LSfc//lPoZrFq1SpL00Ucfyc/PTy+++GKabdeuXatOnTqpevXqaty4sd555x2FhIQ48E7+Xba6zRMAAAAAADw6UlJSNGjQIG3evFleXl5q0KCBkpKStHz5cu3duzfN9qGhoerVq5ciIyNVrFgx1atXT1arVUFBQQoMDFRgYKA+++wzPffcc/Ly8lK7du20b98+Xb58WbVr11bx4sVVsmRJSbcnJujZs6fOnDkjHx8f1a5dW66urjp9+rT27t2rvXv3Kjw8XH379rX1HxYWppdffllhYWEqUqSImjVrpsjISM2dO1d79uxJd8bQ06dP67XXXlNERISKFCmiJk2a6NatW9q7d6927Nih/v37a9iwYWn2O3z4sL7++mt5e3urVq1aiomJ0f79+zV16lSdO3dOkyZNuu/P/caNG/rss88kSePGjZObm9t9t5UqdSRorly50l3v6no7gjp79uy/tpX6nLdDhw7pwoULqlq1qsqWLaty5crZbbd8+XKdPn1aZcuWVfPmzXXq1CkFBARow4YN+u6771S7dm0H31X6CNMAAAAAAIBTLF26VJs3b1b58uX1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V3qRHooISIcQWhKqEJKQsvP+wdk1SxKYkA2bhO/nurwkU59dhnk29878xmLRzJkznca5O3/+vN544w0ZhqEXX3xRfn5+LtvnypUrNX/+fMfPiYmJGjNmjMLCwlStWrU0H/yQUdzmCQAAAAAA3CI4OFg7d+7UggUL1LFjRzVq1Eienp7atm2bihYtqiJFiujixYuSbl3lVaNGDe3bt0+dOnVS/fr15evrq8OHDys8PFylS5fWlStXFBMTo6tXr6pAgQKSpAoVKkiSJk+erF27dqlTp05q1aqV2rRpo5UrV6pXr16qV6+eChQooJMnT+rIkSMqWLCgihYtqgsXLujixYsqXry4JGncuHHq0aOH5s+fr99++001a9bU5cuXtWvXLgUEBCgsLMxp7LPcuXPr888/V79+/fTll19q0aJFqlq1qhITExUaGqqbN2+qVq1aGjZs2H15v+23P6Z2G2ZG1ahRQ3379tX06dPVoUMH1a9fX5K0fft23bx5U507d9Y///lPl+6zTp06GjVqlObNm6eAgADt379fZ86cUYkSJTRhwgTT486lF2EaAAAAAABuUCp/cXeXkC6ZVe+YMWNUv359zZ07Vzt37pS3t7datmypYcOG6bnnnnMs5+npqZkzZ+rrr7/WypUrFRoaKk9PT5UtW1aDBw9W7969NWzYMK1Zs0YrV650jFH2z3/+UydPntT69eu1ceNGVaxYUa1atdL48eM1a9YsLVu2TPv27ZPNZlOpUqXUu3dv9enTR19//bVmz56tlStXqlq1apKkgIAALVq0SFOmTNH69eu1du1aFStWTAMHDlSTJk3Uo0cP+fv7O72+mjVratmyZZoxY4Y2bNigLVu2yM/PT1ar1TGWmv3qucwUHx+v69evS0r7SaEZ9cYbb6hs2bKaN2+etm3bpjx58qhWrVrq3r27nnjiCZeHWy+++KIiIyM1a9YsrVmzRoUKFVKPHj00aNAgFSlSxKX7Ss5ipOeZsVncvn37FB8frypVqrj0skHkLDExMTp48CDHCe6I4wRmcJyYR4+GGfybghkcJzAjOxwnqQ24nx1k17pd4fr16zp79qxKly6tvHnzppj/f//3f3rttdfUvn17jR8/3g0V4n55MP8FAAAAAADgRtk1kMqudbvClStX1KlTJ7Vp00aRkZFO8yIjIzV58mRJSvXhCMhZuM0TAAAA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66uvvnKaFhcXp9mzZ2v58uU6ffq0fH19Vb9+fb300kuqUqVKqtuJjIzU1KlTtWXLFkVERKhIkSJq0aKFBg0apEKFCpmu1+7s2bOaPn26Nm3apIiICHl7e+uhhx5S586d9eyzz8rDI+V1WuvXr9f333+v/fv3Kzo6Wvnz59fDDz+svn37qmbNmumuIashTAMAAAAA4D7z8LBo6fztunjhurtLMa1I0bzq1LWhu8vItg4cOCBJat68ufz9/VPMr1q1qtPPcXFx6tu3r0JDQ1WsWDE1bdpU58+f14oVK7R27Vp9+eWXeuyxx5zWCQ8PV48ePXThwgVZrVY1b95cf/75p77//nutWrVKP/74o0qWLGm65j/++EO9e/dWdHS0SpYsqccee0zXr1/X77//rr1792rDhg2aPHmyvLz+jpcmTJigr776ShaLRdWqVVOJEiV04sQJrVixQmvWrNHYsWMVHBycjncu6yFMA4AHxPXT2xQTdVB+xapIpZ9wmjdlyhSFhIQoODhYgwYNclOFAAAAD5aLF64r8txVd5eB++TAgQPy9PTUxIkT5evre9flv/zyS4WGhqpp06b64osv5OPjI0launSphg8fruHDh2vlypVOwdzw4cN14cIFvfzyyxo8eLAkKSkpSe+//75++OEHvfvuu5o+fbqpem02m4YOHaro6Gj17t1bb775piM0O3HihPr27at169Zp9uzZ+te//iVJ2rlzp7766iv5+flp+vTpqlevnmN7P/zwg9577z29++67atSokUqUKGHujcuCGDMNAB4Ahi1RMVEHJRmKiTqopMQEx7y4uDiFhITIZrMpJCREcXFx7isUAAAAyIGioqJ04cIFBQYGmgrSbty4of/+97/y9PTU+++/7wjSJKlTp05q166dLl26pKVLlzqmh4aGavfu3apYsaIGDhzomO7p6al33nlHpUqV0saNG3Xs2DFTNYeGhiosLEzly5fX0KFDna4+q1ixooYOHSpJWrZsmWP6woULJUl9+/Z1CtIkqVu3bmrWrJlu3rypFStWmKohqyJMA4AHgGFLkmTYf5JhJDnmJSYmymazSbr17VNiYuL9LxAAAAAPtJCQEHXt2lUPP/ywY0ywQ4cO6e2331ZQUJC2b98uSXr++ecVFBSkP//8UwMGDFDNmjXVsGFDp7HGjh49qnfeeUdt27ZV7dq1VaNGDTVv3lzDhw/X8ePHnfa7fft2BQUF6c0331R4eLgGDhyoevXqqV69eurRo8ddQ5+dO3c6gqPatWvrqaee0pIlS1IsZ7/Fs3r16qbej507d+rGjRuqUaNGqrdl/uMf/5AkrVu3zjHN/udWrVqlGMcsV65catmypSRp7dq1pmqIjo5WzZo11axZM3l6eqaYX7FiRUm3gkI7Hx8fWa1WNWyY+u3Aqa2THXGbJwAAAAAAcJuRI0dq8eLF8vb2VoMGDZQrVy5t375d3bp1U7ly5VJd5/XXX9eVK1fUtGlTHTt2TEFBQZKkNWvW6NVXX1VCQoKqVq2qpk2b6vr169q3b59CQkK0cuVKhYSEpNju2bNn1bVrV928eVONGjXSjRs3tHPnTu3atUsDBgzQkCFDUtTw22+/ac6cOSpWrJgaNWqkc+fOaf/+/RoxYoQuXryofv36OZa1h2n58uXTqFGjtG3bNkVERKhEiRJq27atXnzxReXNm9ex/OHDhyXJ8bpu99BDDzktJ0lHjhxJ9zp30rJlS0cAl5o//vhDkpxu1xw9evQdt7l3715JSte4bVkRYRoAAAAAAHCLZcuWafHixSpdurS+++47R8h16dIlvfjii9q3b1+q6125ckXLli1T8eLFZRi37sBISEjQu+++q4SEBE2YMEFPPvmkY/lr166pT58++uOPPzR//nzHLYp2u3fvltVq1TfffKPixYtLknbt2qW+fftq2rRpatq0qR5++GGndU6ePKnevXtr6NChjiu3vvrqK02YMEHffvut+vbtK4vl1pNP7WHazJkzVahQIdWpU0clSpTQ/v37NX36dK1atUr//e9/VaxYMUl/X7ll//l29ukXL150TIuMjJQkR/23K1q0qCTpwoULqc5Pj5iYGE2dOlWS9MQTT9xl6VvWrl2r3bt3K1euXGrVqlWGa3AnbvMEAAAAAABu8d1330m6dUVT8qvFChcurAkTJqS4XdHuiSeecIRGFotFFotFly5d0iOPPKIuXbo4BWnSrSvC2rdvL+nWVWip+eyzz5yCqIcfflgvvfSSJGnu3Lkpli9btqyGDRvmdAtk79695enpqcuXLzvCLUn6888/JUndu3fXhg0bNHXqVP33v//Vr7/+qnr16iksLEwjR450LB8TEyNJaY6vljt3bkm3hmmJjY2VJMf/k4+vlpx9un3b9yo+Pl5DhgzRuXPnVL58eT333HN3Xefw4cOO19e3b99s/fABiTANAAAAAAC4weXLl/Xnn38qT548evTRR1PMDwgIUI0aNVJdt2rVqimmlShRQp988onGjRvnND0qKkqbNm3Srl27JN26gu12Vqs11dsj27RpI0nasmVLinl16tRJEfZ5e3urSJEikm5dDWf3888/a9myZXrvvffk7e3tmF68eHF99tln8vX11aZNmxxjuqU2Rlla7OMfm13Hvvy9iImJ0aBBg7R+/XoVKFBAU6dOvesDFf744w+98MILunr1qpo3b66XX375nvefVXCbJwA8gJISbio6OlqSHP8HAAAA7qdz585JujV+VlpXoJUpU8YxzlZyBQoUSHO7W7du1eLFi3Xo0CGdPn3accWW/ZZL+22hyVWoUCHVbZUqVUrSreAvPj7eKQjLnz9/quvYn3qZlPT3Q7/8/f3THMusZMmSqlq1qnbt2qV9+/YpMDBQefLkkSTFxcWlus7NmzclSR4eHo4wy76Ofd7t7NuyL7dz50798MMPKZYLDAx0XJGXXEREhAYOHKgDBw6oaNGimjFjhgIDA1Pdl92vv/6qESNGKDY2Vm3atNH48ePTFRRmVYRpAPAA+n31N+q0+ht3lwEAAIAHmP0p8slDp9ulFnxJSjV8s9lsGjJkiH799VdZLBYFBQWpTZs2qlixoqpXr67w8HD9+9//Nr295Pv38PBIEQLZwzlXsA/Ib78F0367aVrjm9lvIS1cuLCj9mLFiunAgQNpPinz9nHYwsPDtXz58hTLNWjQIEWY9scff2jgwIG6cOGCAgMD9fXXX6tMmTJ3fE1TpkzRF198IcMw9Nxzz+ntt99O833ObgjTAAAAAADAfWcPkCIjI2Wz2VINWs6fP296e8uXL9evv/6qkiVLavr06apUqZLTfPv4bKmJiIhIdfqZM2ck3Qq37vWKqmPHjmnGjBny8PDQ2LFjU13G/jrt74n9KrZjx46luc3ky9n/vG7dOtPrdOnSRV26dLlr/evWrdNrr72muLg4NWnSRP/5z3+UL1++NJe32Wx66623tGTJEnl6emrEiBHq1avXXfeTneSMSBAAAAAAAGQrxYsXV2BgoGJiYrR58+YU8yMiItJ8mmdqdu/eLenWwwluD9IkaePGjZJSHzNs//79Tk/GtPv1118lSU2bNjVdx+18fHy0ePFiLVy4UGFhYSnmh4WF6ffff5efn5/q168v6dbDD/z9/fX77787Pcjg9rqaN2/umPb4449LklatWpXiir6EhAStWbPGaTkztm7dqpdffllxcXF66qmnNH369DsGaZL0zjvvaMmSJfL19dWUKVNyXJAmEaYBwAOpdqu+Wrp0qZYuXao5c+a4uxwAAAA8oP71r39Jkv7973/r9OnTjunXrl3T0KFDHbeCmrmlsmDBgpKkzZs3O8ZJk249ffKzzz5zPEQgPj4+xboJCQkaMWKEbty44Zi2bds2TZ8+Xbly5cpQIFSmTBk1a9ZMkjRixAhdvnzZMS8iIkKvvPKKkpKS1Lt3b/n7+0u69bTObt26KSEhQSNHjnSqa9myZfr1119VuHBhPf30047pderUUc2aNXXkyBFNmjTJEaglJSVp7NixOn/+vJo3by6r1Wqq7suXL+v1119XQkKCunTpog8//NAxHlxaQkJCtGjRInl6eurLL790CvtyEm7zBIAHkGeu3I5GDQAAALjLU089pU2bNun//u//9OSTT6pBgwbKnTu3QkNDZbPZVKhQIV2+fPmuIY4kde3aVXPmzNHhw4fVsmVL1a5dW4mJidq7d6+uXr0qq9WqI0eOpDoOWYECBbRr1y61atVK9evX1+XLl7Vz5055eHho9OjReuihhzL0OseMGaPnn39ee/bsUZs2bVSnTh1J0o4dOxQXF6e2bdtq4MCBTusMHjxY27dv1+bNm9W6dWvVq1dPERER2rt3r3Lnzq2JEyfKx8fHaZ2PPvpIPXv21LRp07Ry5UpVqlRJBw8eVHh4uMqUKaP333/fdM2zZs1yBH83btzQm2++mepyfn5+ev/995WUlKRJkyZJkooUKaJFixZp0aJFqa7z2GOPqVOnTqZryWoI0wAAAAAAcIMiRfO6u4R0yYx6LRaLxo8fr/r162vBggUKDQ1Vrly51LhxYw0ZMkSvvvqqLl++rLx5777vUqVKadGiRfrPf/6j3bt3a+PGjfLz81OlSpUUHByszp0765FHHtGRI0cUFham8uXLO9YtUaKEPv74Y3322Wf67bff5O3trebNm6t///6O4CsjihUrpkWLFumbb77RypUrtW3bNuXKlUtVq1bVM888o86dO6e4+s7X11ezZ8/W9OnT9csvv2jdunUqWLCgI3irXLlyiv0EBgZq0aJFmjx5sn77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AO7GXb3xfqEHA0DOlOmdysPDgyANACTJZkjG//5s/O/n+yAxMVE2m+1WCTabEhMT78t+AQC4Kzf1xvuFHgwAOZNLrkyzu3TpkmJjY2UYzk0wMTFRcXFxioiI0Lp16/T++++7crcAAAAAAADAfeGSMG3BggX6z3/+o0uXLplanjANAAAAAAAA2VGGw7StW7dq1KhRppYtWLCgmjVrltFdAgAAAAAAAG6R4THT5s2bJ0lq0KCBvv/+ey1cuFCSFBwcrBUrVmjWrFl68sknJUklS5bU2LFjM7pLAAAAAAAAwC0yfGXa77//Li8vL3366acqXry4JKlcuXLat2+fypUrp3Llyqlhw4bKmzevfvzxRy1YsEDdunXLcOEAkN3Z4pPStXzizQRFR0enez/3sg4AAO6Q3t54L+61n94LejAA5EwZDtOuXLmi0qVLO4I0SQoKCtLq1asVGxsrX19fSdIrr7yihQsX6qeffiJMAwBJ50OOpGv5szqoTtPWZFI1AAC4X3p7472gnwIAMirDt3l6eXkpb968TtMCAgJkGIZOnDjhmFaoUCGVK1dOx48fz+guAQAAAAAAALfIcJhWpEgRnT9/3mla2bJlJUlHjx51mu7t7a3r169ndJcAAAAAAACAW2T4Ns/atWvrp59+UkhIiIKDgyVJgYGBMgxDv/32m2PaX3/9pbCwMBUuXDijuwSAHKFksFUe3p6mly9bqJRGPvFKuvcTHR2tnj17pns9AADut/T2xntxr/30XtCDASBnynCY1rVrVy1fvlxvv/221q9fr08++US1atVSvnz59Msvv6hChQqqVq2aZs6cqbi4ONWtW9cVdQNAtufh7ZmuXxi8cueSv79/JlYEAIB7pbc33gv6KQAgozJ8m2f9+vXVr18/JSUlae3atfL29lauXLnUv39/GYahKVOmaODAgdq+fbskqX///hkuGgAAAAAAAHCHDF+ZJklvvPGGHn30UW3atMkxrW/fvoqLi9O3336rmJgY5c+fX6+99poaNmzoil0CAAAAAAAA951LwjRJatiwYYqgbPDgwRowYICuXLmiQoUKydMzcy/ZBgAAAAAAADJThm/znDx5shYvXpzmfC8vLxUtWlSenp6aNm2ahg4dmtFdAgAAAAAAAG7hkjBt0aJFppZdsWKFVq9endFdAkD25GGRLP/7s+V/P98HXl5e8vC4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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ax = sns.catplot(\n", + " pg_pruning_compare,\n", + " x=\"overhead_duration\",\n", + " col=\"algorithm\",\n", + " hue=\"dataset\",\n", + " kind=\"bar\",\n", + " col_order=[\"BFS\", \"PageRank\", \"WCC\", \"SSSP\"],\n", + " legend_out=True,\n", + " errorbar=\"sd\",\n", + " capsize=0.2,\n", + " col_wrap=2,\n", + ")\n", + "\n", + "ax.set_axis_labels(\"Overhead duration (vs. baseline)\", \"Dataset\")\n", + "ax.set_titles(\"{col_name}\")\n", + "\n", + "ax.savefig(plot_location(\"es04-overhead-duration.pdf\"), dpi=\"figure\")" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "a117d458", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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q2rTpk1pruvYsaNKliypX375Rbt379aNGzfk5+cnPz8/mUwmNWzYUJ999pklhEvdfCE8PNwq0EtPcnKy7ty5k+5uqfh3Eb4BAAAAAIAs5/610P6+I2gqs9mshIQEq2MzZszQtGnTJEktWrTQiy++qLJly6pMmTLKkSOHgoODHzl8GzVqlFauXClHR0d16tRJtWvXVrly5VSqVCllz55du3btSjd8kyRfX1/5+vrq7t27OnjwoA4cOKCdO3fq1KlT2r59u95//32tXr1aJpPJ8vjqyJEj9eabbz5Sjcg8hG8AAAAAACDLyZYtm4oWLapLly7p9OnTqlq1apo2Fy5cUFJSkuXrxMREzZkzR5LUt29fDRgwIM01V65ceaQ6IiIitGrVKknS559/rvbt22fongkJCbp48aJu376tatWqKXv27GrQoIEaNGigwYMHa8OGDfrggw8UEBCgM2fOqEKFCipdurQCAgIUGBj4wHrCw8MVEREhT09PFSpU6JFeC4zBhgsAAAAAACBLat68uSRp6dKlSk5OTnN++fLlVl9HR0dbHkGtXLlyuve8/5r7gztJlvXT7l9D7vLly5av07tnSkqKVq5cafk6tU5/f3+1aNFCPXv2TDM7T5Lq1auX5prGjRtLkjZu3PjAnVhHjBihTp06aciQIenWjn8f4RsAAAAAAMiSunfvrjx58ujUqVMaPny45fFTs9msRYsWaf78+Vbt3d3dLY+rzp07VzExMZZz169f15gxY7R+/XrLsb/vdpq6ttzly5ctx0qWLClHR0dJ0o8//qi4uDjLucuXL2vgwIE6ePCg5Vjq+RdffFH58uVTTEyMPv74Y6tabt++ra+++kqS5OnpadlQokWLFipfvrxu3ryp7t27W82Au337tsaMGaPdu3fLZDKpZ8+e6dZ+6dKldMcSxuGxUwAAAAAAkCV5eHho6tSp6tevn9asWaM//vhDXl5eunLliq5evaomTZpox44dlpljTk5OGjhwoD777DPt379fjRo1UqlSpZSQkKCQkBAlJSWpUqVKCg8PV3R0tK5cuWI1m61SpUo6cOCAxo4dq8WLF6tLly76z3/+o27duumnn37S+vXrtX37dpUsWVJ37txRSEiIzGazfH19dejQISUlJenKlSvKmzevXFxcNHXqVHXv3l0bN27Uli1bVKJECTk4OOjixYuKjY2Vq6urJkyYIBcXF0mSs7Ozvv/+e7333ns6ffq0WrZsqdKlS8vV1VXBwcGWWX3Dhw/Xiy++aDVWlSpV0rZt27Ru3TqdOXNGtWrV0ujRo/+l/1PPNma+AQAAAACALKtu3bpatWqVOnXqpHz58unMmTNydXVV//799d1336Vp36VLF82dO1f169dXrly5FBgYqKioKFWrVk2jRo3SsmXL1LBhQ0nStm3brK794osvVL9+fTk5OSkoKEjBwcGSpI8++khTp07V888/LxcXF505c0a3bt1S3bp19fXXX2vevHmqUaNGmnv6+vpq+fLlatOmjTw8PBQcHKzQ0FAVKlRIb731ljZu3Kg6depY1VC8eHGtWrVKQ4cOVbVq1XT16lWdPXtWOXLk0Msvv6wFCxbo7bffTvO6e/TooQ4dOihv3rwKDg7WmTNnbBp3ZJzJfP+DylnciRMnlJCQoIoVKz5wm2H8s9jYWJ0+fZpxtBHjaD+MpX0wjvbBOD4+3qftg+9B+2Ac7YextA/G0T4YRwBPIma+AQAAAAAAAAYhfAMAAAAAAAAMQvgGAAAAAAAAGITwDQAAAAAAADAI4RsAAAAAAABgEMI3AAAAAAAAwCCEbwAAAAAAAIBBCN8AAAAAAAAAgxC+AQAAAAAAAAYhfAMAAAAAAAAMQvgGAAAAAAAAGITwDQAAAAAAADAI4RsAAAAAAABgEMI3AAAAAAAAwCCEbwAAAAAA4JliNpszu4QMyew6M7v/p4VTZhcAAAAAAAAeLiXFLAcHU2aX8cgyq+6wsDC99NJLypUrlw4ePGg5HhMTo6lTp6p69epq06ZNhu/31ltvaf/+/WmOm0wmOTs7K0+ePKpQoYLatGmjli1bymSy7TU/bp32Eh4erokTJ6pz587y8fH51/t/2hC+AQAAAADwhHNwMGnG4l26FHkjs0vJsKIF86hv5/qZXYaVkSNHys/PT1WqVHms62vUqKFixYpZHUtISNDly5e1c+dO7dy5U7t27dKECRMytU5b9e3bV6dOndLrr7+eKf0/bQjfAAAAAADIAi5F3lDwpejMLiNLKFSokDZu3ChHR0er48nJyTbdt2PHjmrXrl2657Zu3aq+fftq1apVat68uZo0afLY/dhap60yu/+nDWu+AQAAAACAp4qzs7O8vLxUqlSpf63PJk2aWAK3//73v/9av3jyEb4BAAAAAIAsxd/fX7169VKDBg1UvXp1vfrqq5o8ebJu3Lj3WG5YWJi8vb1Vq1Ytq6+3bNkiSRo+fLi8vb21cuVKu9ZVsmRJSVJUVJTV8evXr2vKlClq166datWqpcqVK6tu3brq0aOH/P39Le0yWue2bdvUvXt3+fr6qkqVKmrevLm++uorRUennRnZpEkTVapUSUlJSfr555/VsmVLVa1aVb6+vhowYIACAgIsbfft2ydvb2/Lsa5du8rb21v79u2TdG8DhiVLlqhz586qW7euqlatqqZNm2rUqFG6ePGiHUbw6UT4BgAAAAAAsoyvv/5aPXr00I4dO1SiRAm98MILunXrln744Qe9/vrriomJSXONm5ubWrVqpcKFC0u6t3Zbq1atVKJECbvWdvbsWUlS0aJFLcdCQ0PVpk0bzZo1SzExMapdu7ZeeOEFZcuWTf7+/urRo4c2bNiQ4Tq/+OIL9erVS/v27VPp0qXVuHFjJSYm6ueff1b79u0VGhqabm2DBg3SxIkT5ebmpoYNG8rZ2VmbNm1S586ddeHCBUlSgQIF1KpVK+XJk0eSVK9ePbVq1UoFChSQJI0ZM0ajR49WQECAKleurIYNG8psNmvp0qVq166dgoOD7TqeTwvWfAMAAAAAAFnCtm3b9NNPPylv3rz68ccfVbVqVUn3Nj0YOHCgtm7dqm+//Vbvvfee1XXu7u765ptv1KdPH125cuWha7c9rhUrVmjnzp2SpNatW1uOf/3114qMjFTnzp01evRoy06oSUlJGj9+vBYtWqS5c+fq1Vdf/cc616xZo3nz5qlYsWKaOXOmypcvL+neGm3ffPONfv75Zw0ePFi//fab1Y6rycnJ2r9/vxYtWqSaNWtKkuLi4tStWzcdOXJE8+bN02effSYvLy998803atOmjW7cuKFevXrJ19dXknTlyhUtXbpUefPm1bp161SwYEHLvYcNG6a1a9fql19+0WeffWbXcX0aEL4BAAAAAIAsYcGCBZKkDz74wBK8SZKLi4tGjhyps2fPpjvzzV6WLVum3bt3Wx2LjY3VmTNnFBYWJknq1auX5XFX6d7mDw0aNNDgwYOtAjEnJyd16tRJixYt0qVLlzLU/+zZsyVJY8eOtQRvkuTo6KiPPvpIf/75p06ePKk9e/aoXr16Vte+8847luBNklxdXfX666/ryJEjCgwM/Me+IyMjZTablStXLuXNm9eq78GDB6t69eqqUKFChl7Hs4bwDQAAAAAAPPHMZrP2798vSWrWrFma80WKFLGslZYahNnbkSNHdOTIEcvXJpNJrq6uKlCggF599VW1b99e9evXt7rm008/TXOfW7duKTAw0DJTLjEx8R/7vnr1qs6dOycnJyfVrl07zXkHBwe98MILOnv2rPbu3ZsmfKtRo0aaa1Jnr8XFxf1j/+XLl1e+fPl08eJFtW/fXq1atVKDBg1UsWJFFSlSRG+88cY/3uNZRfgGAAAAAACeeDExMUpISFC2bNnk7u5ut/sePHhQS5YsSXPcy8tLvXv3tjr25ZdfPtbjqhcuXNDixYt17NgxhYSEWGbnpc6EM5vN/3iP8PBwSfceV61SpcpD216+fDnNsdR13O7n6OgoSUpJSfnH/rNnz67p06frgw8+0NmzZzVp0iRNmjRJ+fPnV8OGDdW+fXurGX/4H8I3AAAAAADwxEtKSpIkq0c37SE0NFTr1q1Lc9zHxydN+PY45s+fry+++EJms1lFixaVr6+vSpcubZkx1qFDhwzdJzUgy507txo2bPjQts8991yaY/YYt1q1amnz5s3auXOnduzYoX379ik4OFgrV67UypUr1atXLw0ePNjmfp42T1X4ljpN89y5c3b/y/gsSU3cGUfbMI72w1jaB+NoH1l1HF1cXOTt7Z2pNfA+bR9Z9XvwScM42g9jaR+Mo31k1XF8Et6ns4K8efPK2dlZd+/eVXR0tPLly5emzerVq+Xm5qbSpUtn+L7t2rWz++YLqS5duqQJEybI0dFRU6ZMUfPmza3Onzp1KsP38vDwkHRvBto333xj1zofhYuLi1566SW99NJLku5txLB48WLNmjVLs2fPVpcuXVSoUKFMq+9J5JDZBdiTyWSy/IfHZzKZ5OLiwjjaiHG0H8bSPhhH+2AcHx/v0/bB96B9MI72w1jaB+NoH4zj083Z2dmyycK2bdvSnI+OjtaIESP0wQcfPPAe//b3xrFjx5ScnKwKFSqkCd4kyd/fX1Laxz7Tq7No0aIqWrSoIiMjdeLEiXT7++CDD9SuXTtt3LjRprrT63/Lli16+eWXNXr0aKvjhQsX1uDBg1W0aFGlpKQoIiLCpr6fRk/VzLf0Fg8EAABPBt6nAQCArbp27apDhw5p0qRJeu655yw7fsbHx2v06NFKTk5W69at5erqmu712bNnlyTdvHnzX6k3dXbe+fPnFRQUZDUjb+PGjZo5c6YkKSEhIUN1du/eXWPHjtWHH36oqVOnWu0uumDBAm3YsEHOzs6qXr26TXWn17+3t7dCQkJ05coVtWnTxmrn1H379ik8PFw5cuRQmTJlbOr7afRUhW8AAAAAAODp9corr+itt97Sr7/+qrZt26pWrVrKmTOnjh8/rsjISHl5eWno0KGKjY1N9/rU8Gv69Ok6dOiQ2rRpo6ZNmxpWr4+Pj6pUqaITJ06oTZs2ql27tlxdXXXmzBmFhoaqaNGiio6OVmxsrGJiYpQ3b96H1tmlSxedOHFCq1atUvv27VWpUiUVLlxYgYGBCgoKkoODgyZMmKAiRYrYVHfp0qV15MgRffbZZ1q3bp26deumGjVqaODAgfr222/VpUsXVa9eXQULFlRkZKSOHj0qs9ms4cOHK2fOnLYO21OH8A0AAAAAgCygaMG0u1U+yYyq99NPP5WPj48WLlyoU6dO6e7duypSpIjef/999ezZUzlz5nxg+PbOO+8oKChI27dvl7+/v8qUKWNo+Obo6Ki5c+dq9uzZ8vPz04EDB+To6KjixYurX79+6tatm4YOHaotW7bIz89PHTt2fGidJpNJEyZMUKNGjbRs2TKdPHlSAQEBKlSokFq2bKl3331XlStXtrnuwYMH69q1azp48KB27typunXrqkaNGurdu7eKFSumZcuW6cyZMzpx4oTy5s2rZs2a6e2332a30wcwmTOyny0AAAAAAMg0KSlmOThkvbXssmrdgD0RvgEAAAAAAAAGeap2OwUAAAAAAACeJIRvAAAAAAAAgEEI3wAAAAAAAACDEL4BAAAAAAAABiF8AwAAAAAAAAxC+AYAAAAAAAAYhPANAAAAAAAAMAjhGwAAAAAAAGAQwjcAAAAAAADAIIRvAAAAAAAAgEEI3wAAAAAAAACDEL4BAAAAAAAABiF8AwAAAAAAAAxC+AYAAAAAAPA3ZrM5s0vAU8IpswsAAAAAAAAPZ05Jkckh682f+bfr9vb2liQdOHBAuXPnfqx7xMTEaOrUqapevbratGljz/KyhJUrV2r48OEZajt//nz5+vo+dl979+7V22+//cDzbm5uOnLkSIbvl5CQoG+//VYbNmxQVFSUcuXKpdGjR2vhwoXav3+/ZsyYoaZNmz52vY+L8A0AAAAAgCecycFBQet/VFxUeGaXkmGu+T1VumWPzC7jkY0cOVJ+fn6qUqVKZpeSKUqUKKFWrVo98PzZs2d15swZ5cmTR8WLF7epr1OnTkmSqlSpolKlSqU5ny1btke63+zZszVnzhxlz55dDRo0kKOjo8qUKWNTjfZA+AYAAAAAQBYQFxWuuIjQzC7jqZecnJzZJWSqWrVqqVatWumei4iIUNu2beXo6KipU6eqSJEiNvWVGr4NHDhQL7zwgk33kmSZJTdkyBB17drV5vvZS9abswoAAAAAAIB/ldls1pAhQxQVFaVevXqpbt26Nt8zNXx77rnnbL6XdO+xU0k2h4L2RvgGAAAAAACyjOTkZC1YsECvvfaaqlevrgYNGmjs2LG6ceNGuu2vX7+uKVOmqF27dqpVq5YqV66sunXrqkePHvL397e0CwsLk7e3t7Zs2SJJGj58uLy9vbVy5UpLm9u3b2v27Nl6/fXX5ePjo8qVK8vHx0dvvfWW1q1b98D+v/rqKzVr1kxVq1ZVkyZNNGnSJMXGxqpSpUpq0qRJutdMnDhRL7/8sqpUqaLatWvr3Xff1Y4dO9K0Xblypby9vfX9998rMDBQAwYMUJ06dVSlShW1atVKc+bMUVJS0iONcXp+++03HThwQN7e3urdu7fN97t9+7ZCQkJUtGhR5cuXz6Z7TZs2Td7e3tq/f78kqW/fvvL29tawYcOs2pnNZi1YsEAtWrRQlSpV1KhRI40dO1aRkZE29f9PeOwUAAAAAABkCcnJyerXr5+2bt0qNzc31alTR4mJiVq+fLkleLlfaGio3njjDUVGRqpo0aKqXbu2zGazAgIC5O/vL39/f02ePFmvvvqq3Nzc1KpVKx04cEBXrlxRjRo1VKxYMZUoUULSvY0YunTpovPnz8vDw0M1atSQk5OTzp07p/3792v//v0KDw9Xz549Lf2HhYXp7bffVlhYmAoXLqxGjRopMjJSs2fP1r59+9LdUfXcuXN69913FRERocKFC6tBgwa6c+eO9u/fr127dql3794aNGhQmuuOHTumH374QTlz5lT16tV1+/ZtHTx4UBMnTlRQUJDGjRv32ON+8+ZNTZ48WZI0atQoOTs7P/a9Up0+fVpms1klS5bU999/r99//12hoaHKmTOn6tWrpz59+qh06dIZupe3t7datWql3bt3KyoqSj4+PipUqJBq1Khh1e7bb7/VuXPnVLlyZTVu3FjHjx/XwoUL5efnp4ULF6pkyZI2v670EL4BAAAAAIAsYcmSJdq6davKli2rX375RQULFpQkBQUF6Z133knT/uuvv1ZkZKQ6d+6s0aNHy2QySZKSkpI0fvx4LVq0SHPnztWrr74qd3d3ffPNN+rTp4+uXLmijh07ql27dpZ7zZo1S+fPn1fjxo01bdo0SwBlNps1e/ZsTZ48WXPnzrUK30aNGqWwsDC1b99eY8aMkYuLiyRpx44d6t+/v1JSUqzqTUpKUv/+/RUREaH3339fAwYMkJPTvegmMDBQ3bt318yZMy0z6O63fft2tWvXTqNGjZKrq6sk6Y8//lC/fv3022+/aeDAgfLw8HiscZ87d66uX7+uRo0aPXA9uEeV+sjp7t27dejQIdWuXVuenp46deqU1q5dq82bN2vWrFkZ2k21efPmat68ud566y1FRUXp7bffTndX03PnzmncuHHq0KGDpHuPqX7yySdau3atRowYoYULF9rltf0d4RvwDPjyyy81d+5clSpVSps2bXpgu+7du+vPP/+UdG+HnzfffDPddgEBAZYtt9euXWvZzjtVYGCgVqxYoX379ikkJETx8fHKnTu3ypcvr+bNm6t9+/bKnj37P9Z96dIlLV++XLt371ZQUJBiY2OVI0cOlS1bVo0aNVKnTp2UJ0+ejA4DAABPrICAAP3222/as2ePIiIiFB8fL3d3d5UrV06NGjXSf/7zn4e+d27btk3r16/X0aNHde3aNTk4OCh//vyqVq2aXn75ZTVv3vyh/SckJGjlypXavHmzzpw5o+joaLm5ualgwYLy9fXVa6+99sBd/5o0aaJLly6le87JyUmurq7y9PSUr6+v3n77bZt3xgPwbEsNR8aMGWMJ3iSpdOnS+uSTT9S/f3+r9oUKFVKDBg00ePBgS/Am3fv51KlTJy1atOiBP8P+LleuXHrxxRf10UcfWc38MplM6tKliyZPnqyoqCjdvXtX2bNnV0BAgHbt2iVPT0+r4E2SGjZsqB49emj69OlWffzxxx+6cOGCatasqQ8++MDqXLly5TRs2DANHjxYP/74Y5rwLUeOHBo9erTV+0WzZs1UrFgxhYWF6dy5c48VvsXFxVnGvV+/fo98/YOkhm81a9bUd999Z6ktISFBEyZM0MKFCzVo0CD98ccfypkzp136bNKkiSV4kyQXFxd9/vnn2rlzpw4ePKiAgABVqFDBLn3dj/ANeAbUrVtXc+fOVXBwsK5fvy53d/c0be7evasDBw5Yvt65c+cDw7fU6dweHh5WwVtCQoImTpyoBQsWyGw2y9HRUYULF1aePHl0+fJl7d27V3v37tWcOXP07bffqmrVqunePyUlRbNnz9a0adOUlJQkk8kkDw8PFS9eXBERETp06JAOHTqkn3/+WV999ZUaNmxoy/AAAJCpvvvuO82cOVMpKSnKmTOnSpQoIWdnZ129elU7d+7Uzp079dNPP2nGjBmqXLmy1bV3797VgAEDLGsAeXh4qFy5cjKbzQoLC9P69eu1fv16Pf/885o5c2a6H1qFhobqvffeU0hIiEwmk4oXL65KlSopPj5ewcHBCgwM1MKFC9W5c2eNGjXK6pfX+3l6esrT09PqWHJysm7duqULFy7o7NmzWrp0qaZOnZru+kYA8E8iIyN1/vx55cyZM93ZV40bN5azs7MSExMtxz799NM07W7duqXAwEDt3LlTkqzaP0zfvn3THIuNjdX58+d17Ngxy7HExERlz55du3btknQv8Lk/eEvVokWLNOHbnj17JOmBmxk0bNhQDg4OOnbsmOLi4iwz3CSpYsWK6X5QU7BgQYWFhSk2NjYDrzKtVatWKSYmRi+88MIDP4h5HOPHj1efPn3k4eFhFa65uLjok08+0eHDh3X69GmtXbtWXbp0sUufr732Wppj2bNnV/369bV+/Xrt37+f8A3A46ldu7blTejIkSN66aWX0rTZv3+/4uPjVbZsWcuaBQkJCem+SRw8eFCSVL9+fcuxu3fv6q233tLx48eVK1cu9ezZU126dLH6Ibp3715NnDhRp06d0ttvv63Fixen+cFmNpvVt29fbd26VS4uLnr//ff1zjvvWAWGf/31lyZOnKg9e/aod+/emj17tho0aGDzOAEA8G9bsWKFZsyYITc3N3355Zdq1qyZHB0dLefPnz+vESNG6OjRo+revbs2btxo9Z44evRo7dixQ2XKlNHEiROtfikym836888/NWzYMB06dEh9+/bVggULrPpPSEhQjx49FBISopdeekmjR49WoUKFLOfj4+O1fPlyffHFF1q0aJHy5cunAQMGpPta2rdvn2bGSaqLFy+qX79+CggI0Mcff6xNmzal+2EgADxM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jh2rjRs36vvvv1eePHkyfL81a9Zo0qRJcnJyUp06dZQjRw55e3srICDApjpt9VSFbwkJCUpISFB8fLyyZcuW2eVkWfHx8Tp58qSee+45xtEGjKP9MJb2wTjaB+P4+Hiftg++B+2DcbQfxtI+GEf7eNrH8fKNCIVEhWV2GU+95OTkzC4hU9WqVUu1atVK91xERITatm0rR0dHTZ06VUWKFHnsftasWaMlS5bIxcVFkydPVrNmzSRJiYmJ+uqrr/Trr79q3Lhx+vrrrzN8z8OHD0uS3nzzTavZe2vWrHnsOu0h681ZzYBn/S+KrVLHj3G0DeNoP4ylfTCO9sE42o6xsw3fg/bBONoPY2kfjKN9MI6Accxms4YMGaKoqCj16tVLdevWtel+ixcvliT16tXLErxJkrOzs4YNGyYvLy+tXbvW8vRERiQkJEiSPD09barN3p7K8A0AAAAAADydkpOTtWDBAr322muqXr26GjRooLFjx+rGjRvptr9+/bqmTJmidu3aqVatWqpcubLq1q2rHj16yN/f39IuLCxM3t7e2rJliyRp+PDh8vb21sqVKy1tbt++rdmzZ+v111+Xj4+PKleuLB8fH7311ltat27dA/v/6quv1KxZM1WtWlVNmjTRpEmTFBsbq0qVKqlJkybpXjNx4kS9/PLLqlKlimrXrq13331XO3bsSNN25cqV8vb21vfff6/AwEANGDBAderUUZUqVdSqVSvNmTNHSUlJjzTG6fntt9904MABeXt7q3fv3jbfLzVUe+mll9Kcc3JyUu3atSUp3df8d6ljsGrVKknSl19+KW9vb7311ltp2q5fv15t27ZVlSpVVL9+fX388ccKDg624ZX8s6fqsVMAAAAAAPD0Sk5OVr9+/bR161a5ubmpTp06SkxM1PLly7V///407UNDQ/XGG28oMjJSRYsWVe3atWU2mxUQECB/f3/5+/tr8uTJevXVV+Xm5qZWrVrpwIEDunLlimrUqKFixYqpRIkSku5txNClSxedP39eHh4eqlGjhpycnHTu3Dnt379f+/fvV3h4uHr27GnpPywsTG+//bbCwsJUuHBhNWrUSJGRkZo9e7b27duX7o6q586d07vvvquIiAgVLlxYDRo00J07d7R//37t2rVLvXv31qBBg9Jcd+zYMf3www/KmTOnqlevrtu3b+vgwYOaOHGigoKC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cKB9+cjISElKdny4TJkySbr9UoSoqChJsv//nePD3ck23bbtBxUTE6M+ffro7NmzKl68uF5//fX7rnPo0CH75+vUqZNLv2xBInwDAAAAAAAu4NKlS9q/f7+yZMmip556KtH8okWLqmLFikmuW65cuUTTChQooK+++kojR450mB4REaH169dr27Ztkm7fIXc3q9Wa5OOajRs3liRt3Lgx0byqVasmCge9vLyUN29eSbfvtrP566+/tHjxYn3yySfy8vKyT8+fP79GjRolb29vrV+/3j4mXVJjrCUnISEhVevYln8QkZGReu+997RmzRrlzJlTEydOvO8LJHbv3q0333xTV65cUYMGDdSzZ88H3n9GwWOnAAAAAAAgwzt79qyk2+N/JXeHm5+fn32csDvlzJkz2e1u2rRJ8+fP18GDB3Xq1Cn7HWG2R0Btj6neqUSJEkluq1ChQpJuB4UxMTEOwVmOHDmSXMf2VtD4+Hj7tKxZsyY7FlvBggVVrlw5bdu2TXv27JG/v7+yZMkiSYqOjk5ynVu3bkmS3Nzc7OGXbR3bvLvZtmVbLjg4WL///nui5fz9/e13/N0pLCxM3bt31759+5QvXz5Nnz5d/v7+Se7LZunSpRowYICioqLUuHFjjR49OlXBYkZF+AYAAAAAADK8uLg4SY4h1d2SCsokJRnWJSQkqE+fPlq6dKksFosCAgLUuHFjlSxZUhUqVNDJkyf16aefpnh7d+7fzc0tUWhkC/OcwfYCAtsjobbHX5Mbn832SGuePHnstfv6+mrfvn3Jvkn07nHkTp48qSVLliRarkaNGonCt927d6t79+46f/68/P399f3338vPz++en2nChAn67rvvZBiGXn/9dX300UfJtrOrIXwDAAAAAAAZni1wCg8PV0JCQpLBzLlz51K8vSVLlmjp0qUqWLCgpk6dqtKlSzvMt40vl5SwsLAkp58+fVrS7TDsQe/YOnr0qKZPny43NzeNGDEiyWVsn9PWJra75I4ePZrsNu9czvbfq1evTvE6rVu3VuvWre9b/+rVq9W7d29FR0frySef1DfffKPs2bMnu3xCQoIGDRqkBQsWyN3dXQMGDFCHDh3uux9X8mhEiAAAAAAA4JGWP39++fv7KzIyUhs2bEg0PywsLNm3nSZl+/btkm6/jOHu4E2S1q5dKynpMc/27t3r8OZQm6VLl0qS6tatm+I67pY5c2bNnz9fc+fOVWhoaKL5oaGh2rlzp3x8fFS9enVJt1/2kDVrVu3cudPhxQ1319WgQQP7tPr160uSVqxYkeiOwdjYWK1atcphuZTYtGmTevbsqejoaL300kuaOnXqPYM3Sfr444+1YMECeXt7a8KECY9c8CYRvgEAAAAAABfx9ttvS5I+/fRTnTp1yj792rVr6tu3r/3R1JQ84pkrVy5J0oYNG+zjvEm33845atQo+0sTYmJiEq0bGxurAQMG6ObNm/Zpmzdv1tSpU+Xp6ZmmAMnPz0/16tWTJA0YMECXLl2yzwsLC1OvXr0UHx+vjh07KmvWrJJuv820Xbt2io2N1cCBAx3qWrx4sZYuXao8efLo5Zdftk+vWrWqKlWqpMOHD2vcuHH2AC4+Pl4jRozQuXPn1KBBA1mt1hTVfenSJf3vf/9TbGysWrdurc8//9w+nl1yFi5cqHnz5snd3V2TJk1yCAcfJTx2CgAAAAAAXMJLL72k9evX6//+7//UrFkz1ahRQ5kyZVJQUJASEhKUO3duXbp06b6hjyS1adNGv/zyiw4dOqRnnnlGVapUUVxcnHbt2qUrV67IarXq8OHDSY6jljNnTm3btk2NGjVS9erVdenSJQUHB8vNzU1Dhw5VqVKl0vQ5hw8frjfeeEM7duxQ48aNVbVqVUnS1q1bFR0drSZNmqh79+4O6/To0UNbtmzRhg0b9OyzzyowMFBhYWHatWuXMmXKpLFjxypz5swO63zxxRd67bXXNHnyZC1fvlylS5fWgQMHdPLkSfn5+WnYsGEprvmnn36yB4U3b97Uhx9+mORyPj4+GjZsmOLj4zVu3DhJUt68eTVv3jzNmzcvyXWefvpptWjRIsW1ZDSEbwAAAAAAuIC8+bKldwmpYka9FotFo0ePVvXq1TVnzhwFBQXJ09NTtWvXVp8+ffT+++/r0qVLypbt/vsuVKiQ5s2bp2+++Ubbt2/X2rVr5ePjo9KlS6tly5Zq1aqV6tSpo8OHDys0NFTFixe3r1ugQAF9+eWXGjVqlNatWycvLy81aNBAXbp0sQdlaeHr66t58+Zp2rRpWr58uTZv3ixPT0+VK1dOr7zyilq1apXo7j5vb2/NnDlTU6dO1d9//63Vq1crV65c9qCuTJkyifbj7++vefPmafz48Vq3bp1Wr16tggULqkOHDuratavy5MmT4ppXr15t/+9ly5Ylu1y2bNk0bNgwHTp0yD52XXh4eJIvc7DJlSuXS4dvFiO5V4G4INuz3b/9c0qhZy6nczUAgMdd8cK59Pn7TdO7jAxjz549iomJUdmyZeXj45Pe5bisyMhIHThwgHZMI9rReWhL56AdneNRbseEBENubs57W+bD4uy6Dx48qJw5cyp//vyJwqeYmBjVqVNHN2/e1LZt2+Tt7e20/dps2bJFHTp0UJkyZbRo0SKnbx+PJsZ8AwAAAAAgg3PF4E1yft2fffaZ6tWrp7lz5zpMT0hI0JgxY3Tt2jXVrVvXlOANeFA8dgoAAAAAAFxCp06dtGPHDn388ceaOXOmSpQooZiYGO3bt08RERHy8/PTp59+mt5lAg4I3wAAAAAAgEto0KCB5s6dq59//lnBwcFau3at3N3d5efnp7Zt2+qtt96yvwEUyCgI3wAAAAAAgMsoV66cPv/883TZd82aNXXo0KF02TdcF2O+AQAAAAAAACYhfAMAAAAAAABMQvgGAAAAAAAAmITwDQAAAAAAADAJ4RsAAAAAAABgEsI3AAAAAAAAwCSEbwAAAAAAAIBJCN8AAAAAAAAAkxC+AQAAAAAAACYhfAMAAAAAAABMQvgGAAAAAAAAmITwDQAAAAAAADAJ4RsAAAAAAABgEsI3AAAAAAAAwCSEbwAAAAAAAIBJCN8AAAAAAAAAkxC+AQAAAAAAACYhfAMAAAAAAABMQvgGAAAAAAAAmITwDQAAAAAAADAJ4RsAAAAAAABgEsI3AAAAAAAAwCQe6V2AGSoHFFKhfNnTuwz8fzejY3T1enR6lwEAD11h3xzpXUKGZLFY0rsEl2axWOTt7U07AgAAuIhHMnxr+1yV9C4BdzASEmRx4yZLAI+nhARDbm6EJDZeXl7y9vZO7zJcmre3t8qVK5feZTx0nE8AAABX9UiGb8f/nKqoi+fSuwxI8s5TUCWad07vMtJFVFSUjh8/rhIlSvBFM41oS+egHZ0jte1I8JYY/TRS63E+nwAAAK7vkQzfoi6eU1T4yfQuA485wzAUFRUlwzDSuxSXR1s6B+3oHLRj2tFPAwAA4HHCvfsAAAAAAACASQjfAAAAAAAAAJMQvgEAAAAAAAAmIXwDAAAAAAAATEL4BgAAAAAAAJiE8A0AAAAAAAAwCeEbAAAAAAAAYBLCNwAAAAAAAMAkhG8AAAAAAACASQjfAAAAAAAAAJMQvgEAAAAAAAAmIXwDAAAAAAAATEL4BgAAAAAAAJiE8A0AAAAAAAAwCeEbAAAAAAAAYBLCNwAAAAAAAMAkhG8AAAAAAACASQjfAAAAAAAAAJMQvgEAAAAAAAAmIXwDAAAAAAAATEL4BgAAAAAAAJiE8A0AAAAAAAAwCeEbAAAAAAAAYBLCNwAAAAAAAMAkhG8AAAAAAACASQjfAAAAAAAAAJMQvgEAAAAAAAAmIXwDAAAAAAAATEL4BgAAAAAAAJiE8A0AAAAAAAAwCeEbAAAAAAAAYBLCNwAAAAAAAMAkhG8AAAAAAACASQjfAAAAAAAAAJMQvgEAAAAAAAAmIXwDAAAAAAAATEL4BgAAAAAAAJiE8A0AAAAAAAAwCeEbAAAAAAAAYBLCNwAAAAAAAMAkhG8AAAAAAACASQjfAAAAAAAAAJMQvgEAAAAAAAAmIXwDAAAAAAAATEL4BgAAAAAAAJiE8A0AAAAAAAAwCeEbAAAAAAAAYBLCNwAAAAAAAMAkhG8AAAAAAACASQjfAAAAAAAAAJMQvgEAAAAAAAAmIXwDAAAAAAAATEL4BgAAAAAAAJgkzeFbhw4dNGLEiBQt27NnTzVu3DituwQAAAAAAABcgkdaN7B161bFx8enaNmjR48qLCwsrbsEAAAAAAAAXEKqwreQkBBNmTIl0fTQ0FD169cv2fUMw9DZs2d1/Phx5cuXL/VVAgAAAAAAAC4oVeGbv7+/QkNDtXv3bvs0i8WiixcvavHixSnaRsuWLVNVIAAAAAAAAOCqUv3Y6eDBg/Xrr7/af16wYIHy5s2rp59+Otl1LBaLfHx8VK5cOcI3AAAAAAAAPDZSHb5VrFhRI0eOtP+8YMECFStWzGEaAAAAAAAAACe8cGHmzJnKli2bM2oBAAAAAAAAHilpDt9q1Kjh8LNhGAoPD9e1a9dktVrTuvkHkqNEBWXOXSBd9g1HmXLkTe8SAAAZDP00UovzCQAA4MrSHL7ZHD16VBMnTtTatWt18+ZNWSwW7d+/X+fOnVOHDh3UpUsXvfLKK87a3T0Vrtv6oewHKZeQkCA3N7f0LgMAkAHQT+Nh4zwEAACkJ6eEbytWrFDfvn1169YtGYbhMO/cuXM6deqUhgwZomPHjql///7O2OU9Tfl3ps5eDTd9P0iZQjny6916HdK7DABABkE/jYeJ8xAAAJDe0hy+nThxQn379lV0dLSef/55tWjRQt9++60OHDggSSpZsqRefvllzZ07VzNmzFDNmjVVv379tO72ns5eDdeJi6dN3QcAAHgw9NMAAAB4nKT5/vvp06crOjpaXbt21dixY1W/fn1lzpzZPj9nzpwaPny4evXqJcMw9Pvvv6d1lwAAAAAAAIBLSHP4tmHDBmXNmlXdu3e/53KdOnVS9uzZtWfPnrTuEgAAAAAAAHAJaQ7fIiIiVLx4cXl5ed1zOS8vLxUpUkRXr15N6y4BAAAAAAAAl5Dm8M3Hx0cXLlxI0bJXr15VlixZ0rpLAAAAAAAAwCWkOXwLCAhQeHi49u7de8/lduzYodOnTysgICCtuwQAAAAAAABcQprDt1atWskwDA0aNEjnz59Pcpljx47pww8/lMVi0QsvvJDWXQIAAAAAAAAuwSOtG2jRooUWL16sTZs2qXHjxqpZs6ZOnDghSfrqq6909OhRbdy4UXFxcapSpYpat26d5qIBAAAAAAAAV5DmO9/c3Nw0YcIENW3aVFFRUVqzZo0uXrwowzD0448/au3atYqLi9NTTz2lyZMny93d3Rl1AwAAAAAAABlemu98k26/dGHMmDHq0qWLVq5cqcOHD+vGjRvy9vZWiRIl1KBBA1WrVs0ZuwIAAAAAAABchlPCN5syZcqoTJkyztwkAAAAAAAA4LKcGr7dLTo6Whs3blRCQoICAwOVM2dOM3cHAAAAAAAAZChOCd/Cw8M1adIkFSpUSF26dJEkhYSEqGPHjvY3oHp7e2v48OFq2rSpM3YJAAAAAAAAZHhpDt8uXbqkNm3aKCIiQvXr17dPHzJkiCIiImSxWJQlSxbduHFD/fr1U0BAgPz9/dO6WwAAAAAAACDDS/PbTn/66SeFh4eraNGiatu2rSTpxIkT2rZtm9zd3fXbb78pODhYXbp0UVxcnGbMmJHWXQIAAAAAAAAuIc3h29q1a+Xh4aHp06fb73xbs2aNJOmJJ55QlSpVJEk9e/ZU9uzZtXnz5rTuEgAAAAAAAHAJaQ7fTp06peLFi8vPz88+bePGjbJYLHryySft0zw9PeXn56eIiIi07hIAAAAAAABwCWkO36Kjo+Xl5WX/OS4uTkFBQZKkGjVqOCwbFRUli8WS1l0CAAAAAAAALiHN4Zuvr6/OnDmj2NhYSVJQUJAiIyOVJUsW+yOn0u03op46dUoFCxZM6y4BAAAAAAAAl5Dm8K1mzZq6du2aRo0apYMHD2rcuHGyWCyqV6+e3N3dJUkXL15U3759FR8fr9q1a6e5aAAAAAAAAMAVpDl869y5szJnzqyZM2eqVatW2rVrl9zd3dW5c2dJUnBwsOrVq6egoCBly5ZNb7/9dpqLBgAAAAAAAFxBmsO3kiVL6ocfflDFihXl5eUlq9WqSZMmqUyZMpJuP5YaFxen0qVL67fffnN4MQMAAAAAAADwKPNwxkaqVq2q2bNnJznPz89PCxcutIdxAAAAAAAAwOMizXe+3XcHbm4EbwAAAAAAAHgsOeXON5uLFy8qKipKhmE4TI+Li1N0dLTCwsK0evVqDRs2zJm7BQAAAAAAADIkp4Rvc+bM0TfffKOLFy+maHnCNwAAAAAAADwO0hy+bdq0SYMHD07Rsrly5VK9evXSuksAAAAAAADAJaR5zLfffvtNklSjRg39/PPPmjt3riSpZcuWWrZsmX766Sc1a9ZMklSwYEGNGDEirbsEAAAAAAAAXEKa73zbuXOnPDw89PXXXyt//vySpGLFimnPnj0qVqyYihUrppo1aypbtmz6448/NGfOHLVr1y7NhQMAAAAAAAAZXZrvfLt8+bIKFy5sD94kKSAgQMePH1dUVJR9Wq9eveTu7q4///wzrbsEAAAAAAAAXEKawzcPDw9ly5bNYVrRokVlGIaOHTtmn5Y7d24VK1ZMISEhad0lAAAAAAAA4BLSHL7lzZtX586dc5hWpEgRSdKRI0ccpnt5een69etp3SUAAAAAAADgEtIcvlWpUkWXLl3SwoUL7dP8/f1lGIbWrVtnn3b16lWFhoYqT548ad0lAAAAAAAA4BLSHL61adNGhmHoo48+Uu/evRUTE6PKlSsre/bs+vvvvzV+/HitXr1avXr1UnR0tEqVKuWMugEAAAAAAIAML83hW/Xq1dW5c2fFx8frn3/+kZeXlzw9PdWlSxcZhqEJEyaoe/fu2rJliySpS5cuaS4aAAAAAAAAcAUeztjIBx98oKeeekrr16+3T+vUqZOio6P1ww8/KDIyUjly5FDv3r1Vs2ZNZ+wSAAAAAAAAyPCcEr5JUs2aNRMFaz169FDXrl11+fJl5c6dW+7u7s7aHQAAAAAAAJDhpfmx0/Hjx2v+/PnJzvfw8FC+fPnk7u6uyZMnq2/fvmndJQAAAAAAAOASnBK+zZs3L0XLLlu2TCtXrkzrLgEAAAAAAACXkKrHTs+cOaNNmzYlmn7hwgXNnTs32fUMw9DZs2d15MgR+fj4pL5KAAAAAAAAwAWlKnzLkyePvvvuO0VERNinWSwWnTx5UoMHD77v+oZhqHbt2qmvEgAAAAAAAHBBqQrfMmfOrA8//FBjx461Tzt79qy8vLyUN2/eZNdzc3OTj4+PypUrp379+j14tQAAAAAAAIALSfXbTl944QW98MIL9p/LlCmjihUr6pdffnFqYQAAAAAAAICrS3X4drcePXqoYMGCzqgFAAAAAAAAeKQ4JXwDAAAAAAAAkFiawzeb69ev6/jx44qKilJCQoLDvPj4eEVHRyssLEyrV6/W9OnTnbVbAAAAAAAAIMNySvg2btw4TZ8+XXFxcc7YHAAAAAAAAPBISHP4tmzZMk2ePDlFyxYrVkzNmzdP6y4BAAAAAAAAl+CW1g3MmzdPktS0aVOtWbNGmzZtkpubm9q0aaO9e/dq5cqVevfdd+Xm5ibDMNSpU6c0Fw0AAAAAAAC4gjSHb/v27VOmTJk0dOhQFShQQLly5VLJkiW1adMmeXh4yM/PT3369FG3bt106tQp/fLLL86oGwAAAAAAAMjw0hy+Xb16VX5+fsqePbt9mtVq1enTp3X9+nX7tI4dO8rLy0vLly9P6y4BAAAAAAAAl5Dm8C1TpkzKlCmTw7QiRYpIkkJCQuzTsmbNqmLFiik0NDStuwQAAAAAAABcQprDt/z58+vMmTOKj4+3TytatKgk6ciRI4mWj4yMTOsuAQAAAAAAAJeQ5vCtWrVqunbtmqZPn26fVrp0aRmGoZUrV9qnhYeH6/jx4/L19U3rLgEAAAAAAACXkObw7bXXXpPFYtHYsWP1yiuvKCYmRhUqVFDevHm1du1aDRw4UD///LM6deqkuLg4lS9f3hl1AwAAAAAAABlemsO3MmXK6OOPP5a7u7uOHj0qLy8vubm56YMPPpBhGFq4cKFGjBihI0eOyM3NTd27d3dG3QAAAAAAAECG5+GMjbRv315PPvmkNmzYYJ/WqlUrSdL333+v06dPq2TJkurTp4/Kli3rjF0CAAAAAAAAGZ5TwjdJKl68uIoXL+4wrVWrVvYQDgAAAAAAAHjcpCl8i4mJUXBwsLZs2aJz587pypUrslgsyp49u/z9/fXEE0+oevXqslgszqoXAAAAAAAAcBkPFL7FxsZq5syZmjp1qq5evWqfbhhGoqDN19dXXbp00auvvio3tzQPMQcAAAAAAAC4jFSHbzdu3FD37t0VFBQkwzAkSVmzZlXhwoWVJUsWxcbG6vr16zp9+rTi4uIUHh6u4cOH659//tF3330nHx8fp38IAAAAAAAAICNKdfj2/vvva+vWrXJ3d1fbtm3Vtm1bBQQEJFouJiZGu3fv1pw5c7RkyRJt3LhR/fr10/jx451S+L1UKlxWBXP4mr4fpEy+rHnSuwQAQAZCP42HKbnzEIvFIm9vb4ZHAQAApktV+LZ69Wpt2LBBWbNm1eTJkxUYGJjssl5eXgoMDFRgYKBeeuklde3aVatWrdLmzZtVq1atNBd+Ly9Va27q9vFgjIQEWXj0GAAee/TTyAi8vb1Vrlw5p26Tcx0AAJCUVIVvixcvlsVi0cCBA+8ZvN2tRo0a+uCDD/TZZ59pyZIlpodvOydN0Y2z50zdB1Ina6GCqtLt3fQuAwCQAdBP41HEuQ4AAEhOqsK3/fv3y8vLSy+++GKqd9SqVSt9/vnn2r17d6rXTa0bZ8/p2okTpu8HAACkHv00AAAAHiepui/+/PnzKlKkiDw9PVO9Ix8fH/n5+encOa50AwAAAAAA4PGQqvDt1q1bypo16wPvLEeOHIqKinrg9QEAAAAAAABXkqrwLT4+Xu7u7g+8Mw8PDyUkJDzw+gAAAAAAAIAr4XVMAAAAAAAAgEkI3wAAAAAAAACTpOptp5J0/fp1BQUFPdDOrl+//kDrAQAAAAAAAK4o1eHbkSNH1KFDBzNqAQAAAAAAAB4pqQ7fDMNI0w4tFkua1gcAAAAAAABcRarCt1WrVplVBwAAAAAAAPDISVX4VrhwYbPqAAAAAAAAAB45vO0UAAAAAAAAMAnhGwAAAAAAAGASwjcAAAAAAADAJIRvAAAAAAAAgEkI3wAAAAAAAACTEL4BAAAAAAAAJiF8AwAAAAAAAExC+AYAAAAAAACYhPANAAAAAAAAMAnhGwAAAAAAAGASwjcAAAAAAADAJIRvAAAAAAAAgEkI3wAAAAAAAACTEL4BAAAAAAAAJiF8AwAAAAAAAExC+AYAAAAAAACYhPANAAAAAAAAMAnhGwAAAAAAAGASwjcAAAAAAADAJIRvAAAAAAAAgEkI3wAAAAAAAACTEL4BAAAAAAAAJiF8AwAAAAAAAExC+AYAAAAAAACYhPANAAAAAAAAMAnhGwAAAAAAAGASwjcAAAAAAADAJIRvAAAAAAAAgEkI3wAAAAAAAACTEL4BAAAAAAAAJiF8AwAAAAAAAExC+AYAAAAAAACYhPANAAAAAAAAMAnhGwAAAAAAAGASwjcAAAAAAADAJIRvAAAAAAAAgEkI3wAAAAAAAACTEL4BAAAAAAAAJiF8AwAAAAAAAExC+AYAAAAAAACYhPANAAAAAAAAMAnhGwAAAAAAAGASwjcAAAAAAADAJIRvAAAAAAAAgEkI3wAAAAAAAACTEL4BAAAAAAAAJiF8AwAAAAAAAExC+AYAAAAAAACYhPANAAAAAAAAMAnhGwAAAAAAAGASwjcAAAAAAADAJB7pXYAZ8lWqqCwFC6Z3GbiDT7686V0CACCDyFqIPhqPHo5rAACQnEcyfAt45aX0LgHpLCHBkJubJb3LAAAkoUq3d9O7BMAURkKCLG48WAIAABw9kuHbotlbdOH89fQuA+kkb75satGmZnqXAQBIQkxMjKKiouTt7Z3epbisqKgoHT9+XCVKlKAd08CMdiR4AwAASXkkw7cL568r/OyV9C4DAAAkwTCM9C7BpRmGoaioKNoxjWhHAADwsHB5DgAAAAAAADAJ4RsAAAAAAABgEsI3AAAAAAAAwCSEbwAAAAAAAIBJCN8AAAAAAAAAkxC+AQAAAAAAACYhfAMAAAAAAABMQvgGAAAAAAAAmITwDQAAAAAAADAJ4RsAAAAAAABgEsI3AAAAAAAAwCSEbwAAAAAAAIBJCN8AAAAAAAAAkxC+AQAAAAAAACYhfAMAAAAAAABMQvgGAAAAAAAAmITwDQAAAAAAADAJ4RsAAAAAAABgEsI3AAAAAAAAwCSEbwAAAAAAAIBJCN8AAAAAAAAAkxC+AQAAAAAAACYhfAMAAAAAAABMQvgGAAAAAAAAmITwDQAAAAAAADAJ4RsAAAAAAABgEsI3AAAAAAAAwCSEbwAAAAAAAIBJCN8AAAAAAAAAkxC+AQAAAAAAACYhfAMAAAAAAABMQvgGAAAAAAAAmITwDQAAAAAAADAJ4RsAAAAAAABgEsI3AAAAAAAAwCSEbwAAAAAAAIBJCN8AAAAAAAAAkxC+AQAAAAAAACYhfAMAAAAAAABMQvgGAAAAAAAAmITwDQAAAAAAADAJ4RsAAAAAAABgEsI3AAAAAAAAwCSEbwAAAAAAAIBJCN8AAAAAAAAAkxC+AQAAAAAAACYhfAMAAAAAAABMQvgGAAAAAAAAmITwDQAAAAAAADAJ4RsAAAAAAABgEsI3AAAAAAAAwCSEbwAAAAAAAIBJCN8AAAAAAAAAkxC+AQAAAAAAACYhfAMAAAAAAABMQvgGAAAAAAAAmITwDQAAAAAAADAJ4RsAAAAAAABgEsI3AAAAAAAAwCSEbwAAAAAAAIBJPNK7ADPkzZctvUtAOuLfHwAAAAAAZBSPZPjWok3N9C4B6SwhwZCbmyW9ywAAAAAAAI+5R+6x05iYGEVFRaV3GS4tKipK+/fvd+l2JHgDAAAAAAAZwSMXvkmSYRjpXYJLMwxDUVFRtCMAAAAAAEAaPZLhGwAAAAAAAJAREL4BAAAAAAAAJiF8AwAAAAAAAExC+AYAAAAAAACYhPANAAAAAAAAMAnhGwAAAAAAAGASwjcAAAAAAADAJIRvAAAAAAAAgEkI3wAAAAAAAACTEL4BAAAAAAAAJiF8AwAAAAAAAExC+AYAAAAAAACYhPANAAAAAAAAMAnhGwAAAAAAAGASwjcAAAAAAADAJIRvAAAAAAAAgEkI3wAAAAAAAACTEL4BAAAAAAAAJiF8AwAAAAAAAExC+AYAAAAAAACYhPANAAAAAAAAMAnhGwAAAAAAAGASwjcAAAAAAADAJIRvAAAAAAAAgEkI3wAAAAAAAACTEL4BAAAAAAAAJiF8AwAAAAAAAExC+AYAAAAAAACYhPANAAAAAAAAMAnhGwAAAAAAAGASwjcAAAAAAADAJIRvAAAAAAAAgEkI3wAAAAAAAACTEL4BAAAAAAAAJiF8AwAAAAAAAExC+AYAAAAAAACYxGIYhpHeRTjL9u3bZRiGPD09ZbFY0rscl2UYhmJjY2nHNKIdnYe2dA7a0TlctR29vLwUEBCQrjXQTzuHqx6DGQ3t6Dy0pXPQjs7hqu2YEfppAObxSO8CnMn2x9WV/shmRBaLRV5eXuldhsujHZ2HtnQO2tE5aMcHRz/tHByDzkE7Og9t6Ry0o3PQjgAyokfqzjcAAAAAAAAgI2HMNwAAAAAAAMAkhG8AAAAAAACASQjfAAAAAAAAAJMQvgEAAAAAAAAmIXwDAAAAAAAATEL4BgAAAAAAAJiE8A0AAAAAAAAwCeEbAAAAAAAAYBLCNwAAAAAAAMAkhG8AAAAAAACASQjfAAAAAAAAAJN4pHcBaXX8+HFNmDBB27Zt08WLF1WgQAE9//zz6tKli7JkyZLe5bmUzZs3680330x2vo+Pj3bs2PEQK3IdoaGhatmypV555RV99NFHSS6zceNGTZ06VQcPHlR0dLRKliypdu3a6eWXX5bFYnnIFWdc92vLb7/9VhMmTEh2/fr162vKlClmlphhLVq0SHPnztXBgwcVFRWlPHnyqHbt2urSpYtKliyZaPm///5bM2fO1LFjxxQfH68yZcqoQ4cOatKkSTpUn3Gkph379++vhQsXJrut1157TUOGDDG54oyNftp56KcfHP20c9BHpw39tHPQTwNwRS4dvu3evVtvvvmmIiMjVblyZVWsWFHbt2/X5MmT9c8//+jXX39VtmzZ0rtMl7Fv3z5JUsWKFVW8ePFE8zNlyvSQK3INFy5cUPfu3RUVFZXsMr/88ouGDRsmT09P1axZU56entq8ebM+/vhjBQcH68svv3yIFWdcKWlL23HaoEEDZc2aNdH8cuXKmVZfRmUYhj788EP9+eef8vT0VIUKFZQ7d24dPHhQCxYs0NKlSzVp0iTVrl3bvs5XX32l6dOny8fHRzVr1lRMTIy2bt2qXr16qXv37nr//ffT8ROljwdpR9vx2KxZM7m5Jb6ZvFKlSg+t/oyIftq56KcfDP20c9BHPzj6aeegnwbg0gwXFRMTYzRo0MCwWq3G/Pnz7dOjoqKMrl27Glar1fjkk0/Sr0AX1KdPH8NqtRpr165N71Jcxv79+41nn33WsFqthtVqNYYPH55omZCQEKNMmTJGYGCgceDAAfv0M2fOGI0aNTKsVqvx119/PcyyM6SUtKVhGEadOnWMsmXLGpGRkQ+5woxr4cKFhtVqNZ566inj0KFD9ulxcXHGmDFjDKvVajz55JPGzZs3DcMwjA0bNhhWq9Vo0KCBcebMGfvyBw4cMGrWrGlYrVZj586dD/1zpLfUtmNkZKRRtmxZo06dOulVcoZGP+189NOpRz/tHPTRaUM/7Rz00wBcmcuO+fbXX3/pzJkzqlOnjlq1amWfnjlzZn3++efy8fHR3Llzde3atXSs0rXYrgxVqFAhnSvJ+K5evaqvv/5abdq00YkTJ+Tn55fsslOnTlVCQoLeeecdlSlTxj69UKFC9tvcf/jhB9NrzqhS05YRERE6f/68/P395e3t/RCrzNjmzp0rSfrggw9ktVrt093d3dW7d2+VLl1aFy5c0MaNGyVJkydPliT16dNHhQoVsi9fpkwZ9e7dW9LjeUymth0PHjyo+Ph4/mYmg37a+einU45+2jnoo52Dfto56KcBuDKXDd9Wr14tSWrcuHGiebly5VLNmjUVGxur9evXP+zSXNKNGzd04sQJFS5cWLly5UrvcjK8mTNnatq0acqdO7cmTZqkli1bJrvsmjVrJCV9rD755JPKnj279uzZowsXLphUbcaWmrbki2fSsmfPLn9/f1WrVi3RPIvFohIlSki6/cXoxo0bCg4Olqenpxo2bJho+caNG8tisWjt2rVKSEgwvfaMJDXtKHE83g/9tHPRT6cO/bRz0Ec7B/20c9BPA3BlLjvm2+HDhyVJAQEBSc4vXbq0Vq9erUOHDqlp06YPszSXdODAARmGoWLFimnixIn6v//7P508eVJZs2bVk08+qe7du9s7NEgFChRQ//791b59e2XOnNneud/twoULunTpkjJlypRk+7m7u6tkyZLauXOnDh06pLx585pdeoaT0raU/juJyp49uwYPHqzNmzcrLCxMBQoUUJMmTfTuu+8+luNH3Wtw6/j4eHu7FSxYUCEhIYqPj1eRIkWSHOw+d+7cyps3r86fP6+TJ08mOa7Uoyo17Sj9dzy6u7vrgw8+0Pbt23Xx4kUVKVJEL774ot56663Hegwu+mnnop9OHfpp56CPdg76aeegnwbgylz2zrfw8HBJUv78+ZOcny9fPkn/XfnAvdk6p40bN2ry5Mny9fVVzZo1JUmLFy9W69attWXLlvQsMUN55ZVX9Pbbbytz5sz3XM52nObLly/ZN6XZjtXz5887t0gXkdK2lP47TmfMmKGVK1eqdOnSqlKlii5cuKCpU6fq5Zdf5nf+Lr/++qvOnDmjXLlyqVatWvf92ylxTCbl7naU/jsex40bp+3bt6t8+fIqV66cTp48qTFjxqhDhw6KjIxMz7LTFf20c9FPpw79tHPQR5uPfto56KcBZHQue+eb7U1LyZ0M2KbzBzVlbJ3TE088oW+//dbeqcfExOiLL77QL7/8ot69e2vFihVJvr0KSbMdp/ca+8R2xe3mzZsPpSZXtn//fknSq6++qkGDBsnLy0vS7S9P//vf/xQcHKyBAwdq+vTp6VlmhrFp0yZ99dVXkm6Pj+Lt7W3/m5iSY5K/n7cl1Y63bt1SSEiIpNtj8nTp0sX+FrVjx46pZ8+e2rlzp7744gsNGzYs3WpPT/TTzkU/bQ76aeehj049+mnnoJ8G4Apc9s43d3f3FC1nGIbJlTwaRowYoaVLl2rq1Kn2E3pJ8vLy0kcffaSyZcvq0qVLWrx4cTpW6XqSeqV5cjhW7++vv/7S4sWL9cknn9hP6qXbV4dHjRolb29vrV+/3n6y9ThbvXq1unbtqpiYGLVv316vvPKKpJT/7ZT02I0lk5Tk2jFTpkzatGmT/vrrL3Xt2tXhd71kyZL68ssvJUnz5s3TjRs30qX29EY/7Vz00+agn3Ye+ujUoZ92DvppAK7CZcM32xgIt27dSnJ+dHS0JMnHx+eh1eTKvLy8VKJEiSSvlru7u6t+/fqSpD179jzkylyb7Ti1HY9JsR3DHKv3lzVrVgUEBCT5aFDBggVVrlw5SRyns2bN0nvvvafo6Gi98cYb9rf1SRyTqXGvdpRuj2tUqlSpJNetUKGCChQooLi4OB04cOBhlJvh0E87F/20Ofib6Dz00SlHP+0c9NMAXInLPnbq6+urK1eu6Pz58/ZBNe9kG1PC19f3YZf2SLK1se3xDKSMbbyOe70hjWPVeWzH6eP6GEZcXJyGDRumP/74QxaLRR988IG6dOnisIztmLzXODGP+zGZknZMiYIFCyosLOyxPR7ppx8u+ukHQz/98DzufbREP+0s9NMAXJHL3vlme3vakSNHkpx/9OhRh+WQvJiYGA0ZMkTvvfeeLl68mOQy586dk6Qkv0AheTlz5lT+/PkVFRWlU6dOJZofHx+vY8eOSZKsVuvDLs+lHD16VAMHDtRHH32U7DKP83EaHR2td999V3/88YcyZ86scePGJXkiWqpUKXl4eOjUqVNJ3pF06dIlXbx4Ud7e3ipatOjDKD1DSWk7BgcHq3///ho9enSy23qcj0eJftqZ6KfNQz/tHPTR90c/7Rz00wBclcuGb7bHK5YvX55o3uXLl7VlyxZlypRJtWvXfsiVuR4vLy+tX79eK1eu1KpVqxLNj4mJ0d9//y1Jqlu37sMuz+Xd61jdsGGDrl+/rvLlyz+2Vy9TKnPmzJo/f77mzp2r0NDQRPNDQ0O1c+dO+fj4qHr16g+/wHQUHx+v9957T+vXr1fu3Lk1a9YsPffcc0kumylTJtWqVUsxMTFavXp1ovnLli2TYRiqW7duqsadeRSkph0TEhK0cOFCzZo1S9evX080f/PmzQoLC1OhQoVUunRps0vPkOinnYd+2lz002lHH31v9NPOQT8NwJW5bPjWqFEjFS5cWGvWrNHvv/9unx4dHa2PPvpIkZGRatOmjXLnzp2OVbqO9u3bS5JGjx6tgwcP2qdHR0dr0KBBOnHihGrUqMGXpAfQvn17eXh4aNKkSdq9e7d9+tmzZ/XZZ59Jkrp27Zpe5bkMPz8/1atXT5I0YMAAXbp0yT4vLCxMvXr1Unx8vDp27PjYvelv0qRJWr9+vXx8fDRz5kxVqlTpnst36NBBkvTFF1/oxIkT9ukHDx7UN998I0kP9PiGq0tNOwYGBspqtSoqKkoDBw50eGTlyJEjGjBggCSpR48eSY5/9Dign3Yu+mnz0E+nHX30vdFPOwf9NABXZjFc+NVNQUFB6tSpk6Kjo1W+fHn5+flpx44dioiIUIUKFTRz5kz7oKW4t7i4OL3//vtauXKlPDw8VLVqVeXKlUvbt2/XhQsXVLJkSc2cOdPhDWv4z3fffafx48erQ4cOST5yMW3aNH399dfy8PBQjRo1lClTJm3ZskWRkZFq166dPv3003SoOmO6V1tGRETojTfeUGhoqLJly6aqVatKkrZu3aro6Gg1adJEY8aMkYeHyw5nmWpXr15V/fr1FRkZqeLFi6tixYrJLtuiRQs9/fTTkqRPP/1Uv/76q/0Ke3x8vLZs2aLY2NgHHjvFlT1IOx49elQdOnTQxYsXlSdPHlWuXFlRUVEKDg5WbGxssn8PHif0085DP5029NPOQR+devTTzkE/DcDVuXTvV716dc2ZM0fjx4/X1q1bdfToUfn5+alNmzbq2LEjJ/Sp4OHhofHjx2vu3LmaO3eu9u3bp/j4eBUpUkSvvvqq3n777cf+jUpp0alTJ5UoUUIzZszQrl27ZLFY5O/vr9dee00tWrRI7/Jchq+vr+bNm6dp06Zp+fLl2rx5szw9PVWuXDm98soratWq1WN39XLr1q32q7mhoaFJPu5jU6FCBftJ/ZAhQ1ShQgX99ttv2rp1qzJlyqQqVaqoY8eOeuaZZx5G6RnKg7RjqVKltGjRIk2ZMkVr1qzRunXr5O3trerVq+v1119/LNvxbvTTzkM/bS766bSjj04a/bRz0E8DcHUufecbAAAAAAAAkJG57JhvAAAAAAAAQEZH+AYAAAAAAACYhPANAAAAAAAAMAnhGwAAAAAAAGASwjcAAAAAAADAJIRvAAAAAAAAgEkI3wAAAAAAAACTEL4BAAAAAAAAJiF8AwAAAAAAAExC+PaYiomJ0ezZs9W1a1fVr19flSpVUpUqVdS0aVMNHjxY27dvT+8SU+T06dMKCAhQQECATpw4kd7lPLCH9TkaNmyogIAAzZkzx7R9OEN4eLhq1qypQYMGpXcpKTJgwAAFBAToww8/TO9SnOq7775TQECAXn31VYfpGeE4WrhwocqUKaN169alWw2AmeinMxb6aUf00xkD/TQAuA7Ct8fQ+vXr1bhxYw0ePFirV69WdHS0SpUqJV9fX508eVKzZ8/Wq6++ql69eunGjRvpXS4eQ4MGDVJMTIz+97//pXcpyKBatGihSpUqaeDAgbp69Wp6lwM4Ff00Mjr6adwP/TQAOPJI7wLwcC1cuFCDBg1SfHy8AgMD1adPH1WrVk0Wi0WSdOPGDc2ZM0cTJkzQsmXLdPToUf3000/Kly9fOlcOZ5gxY4ZiY2Pl6+ub3qUk688//9T69evVq1cv5c2bN73LQRIywnFksVjUr18/vfbaaxo9erSGDRuWbrUAzkQ//XjLCH9f74d+OuPLCMcR/TQAOOLOt8fIvn37NHjwYMXHx6tdu3aaNWuWAgMD7Sf0kpQ1a1Z17NhRv/32m3x9fRUSEuIyjxTg/ooWLSp/f39ly5YtvUtJUkxMjEaPHq1s2bLpzTffTO9ykIyMchwFBgaqVq1amjNnjo4cOZKutQDOQD+NjPL3NTn0064hoxxH9NMA8B/Ct8fIV199pZiYGFWsWFFDhgyRm1vy//ylS5e2X6Fau3atFi5c+JCqxONszpw5Onv2rJo3b66sWbOmdzlwAe3atVNCQoImTJiQ3qUAaUY/jYyOfhqpRT8NALfx2Olj4siRI9q8ebMk6Z133pG7u/t912nQoIGqVq2qHTt26Oeff1bLli0VGRmpOnXqKDIyUuPHj9ezzz6b5LodO3bUxo0b1a1bN/Xu3ds+/cKFC/rhhx+0Zs0anTlzRm5ubipZsqSaNWum1157TZkyZXLYznfffafx48erc+fOqlKlir7++mudOXNGvr6++uCDD1S5cmX7soZhaMGCBfrjjz906NAhWSwWlShRQi+//LLatWvncOeATUxMjH777Tf9/fffOnr0qGJjY1WwYEHVr19f77zzTrK36x84cEC//vqrgoODFR4erpiYGGXPnl3ly5fXSy+9pOeeey7J9fbt26fp06dr27Ztunz5sooVK6Z27dqpbt269/vnSFJ4eLimTp2qdevW6cyZM/L09FTBggX15JNP6q233pKfn5/D8g0bNtSZM2c0fPhwvfLKKw7T7qdGjRqaNWuWw7SgoCDNmjVL27dv15UrV5Q9e3ZVqVJFb7zxhmrXrp3qz/Pzzz9Luj1OyJ0GDhyo+fPnq2HDhpo0aVKS6y5evFh9+/ZVoUKFtGrVKrm5uSk+Pl5//PGHlixZosOHD+vWrVvKmTOnKleurJdfflkNGjRIdY33c/z4cY0bN06bN29WdHS0ihcvrubNm6tDhw6Jjm9Jio6O1rx587Ry5UodOnRI165dk5eXlwoVKqSnnnpKHTt2VP78+ROt9+eff2revHnat2+fIiMjlS1bNpUrV04tWrRQ8+bNk/zSntrfv+QkdRxt2bJFHTp0UOXKlfXLL79o1qxZWrhwoU6cOCFPT0+VK1dOHTp0UKNGjZLc5oPW9swzzyhr1qxasWKFwsPDk2wrwBXQT9NPS/TT9NP00wDwqCJ8e0xs3LhRkuTm5qann346xes9++yz2rFjh/bu3auLFy8qT548eu655zR//nwtXrw4yZP68PBw+xeI1q1b26dv27ZN3bt315UrV+Tp6anixYvLMAzt27dPe/fu1aJFizRt2rQkx60JCgrSDz/8oBw5csjf318hISEqW7aswzIff/yxgoKClCNHDpUoUUJnzpzR3r17tXfvXu3evVsjR450WD4iIkJdunTRgQMHZLFYVKhQIeXMmVNHjx7VjBkztHDhQk2cOFHVqlVzWO/XX3/VZ599poSEBOXIkUPFihVTdHS0Tp8+rbVr12rt2rXq2rWr+vTp47De4sWLNWjQIMXGxipHjhwqXbq0zpw5o2HDhqlGjRop/jexOXnypNq1a6eLFy/Kx8dHJUqUkCSFhoZq1qxZWrBggWbNmqVy5crdczsVKlRI9kQoKipKBw4ckCQVKlTIYd6oUaM0depUSVKOHDlktVoVERGhVatWadWqVercuXOq3ip28OBBHTt2TLly5XL4sibdPo7mz5+vdevW6cqVK8qZM2ei9RctWiRJatmypdzc3GQYhvr06aNly5ZJkooVK6Zs2bLp7NmzWrlypVauXKnu3bvr/fffT3GN93PkyBG9/PLLunnzpkqXLq34+HgdPHhQBw8e1P/93//pxx9/VI4cOezLX7p0SW+++aYOHz4si8WiokWLqmDBggoPD9eRI0d05MgRLV68WPPnz1eBAgXs640cOVIzZsyQJBUuXFhFihRRRESE1q9fb//fV1995VBbWn7/UiM2NladO3fWpk2blCtXLvn7++v48ePasmWLtmzZoqFDhyZ6K1taavPy8lKtWrW0cuVKLV26lMeg4LLop+mnk0M/TT9NPw0AjwADj4UBAwYYVqvVeOaZZ1K13saNGw2r1WpYrVZj48aNhmEYRlBQkGG1Wo0KFSoY165dS7TO1KlTDavVarRv394+LSwszKhRo4ZhtVqNjz/+2Lh69ap93okTJ4xXXnkl0TqGYRjffvutff/vvfeecevWLcMwDOPixYuGYRjGqVOn7PPLlClj/PDDD0ZMTIxhGIYRExNjDB061D7/6NGj9u0mJCQYbdu2NaxWq/Hqq68aISEh9nnXrl0zBg4caFitVqNmzZpGRESEfd7x48eN8uXLG1ar1Zg4caJ9X4ZhGJcvXzbef/99w2q1GuXLlzeuXLlin3fy5EmjQoUKhtVqNUaOHGn/HHFxccaUKVPsNVqtViM0NDRF/za9e/c2rFar0bNnT+PGjRv26efPn7d/trffftthnQYNGhhWq9WYPXv2fbcfFxdndOrUybBarUbz5s2N69ev2+f99ttvhtVqNQIDA41FixbZpyckJBh//fWXUaVKlRTvx2b69OmG1Wo13n333UTzEhISjEaNGhlWq9X49ddfE82PiIgwypYtawQEBBgnTpwwDMMw/v33X8NqtRq1atUyDh486PC5Jk+ebFitVqNs2bLGuXPnUlxjcvr372//93v22WeNQ4cO2eft3LnTqFOnjmG1Wo2+ffsmud6zzz5rHD9+3GHe2rVrjcqVKxtWq9X44osv7NOPHj1qWK1Wo2LFisbmzZsd1lmwYIFRpkwZw2q1Gjt27LBPT+vvX7t27RymJ3Ucbd682d4GVapUMRYvXmyfd+3aNePNN980rFarUaNGDSM2NjbNtd3Jdux06dIl2WWAjI5+mn7aMOinbZ+Lfpp+GgAeNYz59pi4fPmyJCV5JfJe8uTJY//vS5cuSbo9eGqxYsUUExOjpUuXJlrHdmXzzqvp06dP15UrV9SwYUN99tlnyp49u31e0aJFNXHiRGXNmlXBwcH6999/k6ylf//+8vLykiTlzp070fyXX35ZHTt2lKenpyTJ09NT/fv3t49JEhwcbF921apV2rFjh3x9fTVt2jSVLFnSPi9btmwaMWKEKleurMuXL9uvXErShg0b5O7urvLly6tbt272fUm327Z///6Sbl9VPH78uMPnj4mJUY0aNTRgwAD753B3d1eXLl0c2iqlDh48KEl68cUXlSVLFvv0vHnz6qOPPtLTTz+tUqVKpXq7Np9++qnWrl2rPHnyaNKkSfZ2jImJ0XfffSdJ+vzzz/Xiiy/a17FYLGratKn69u0r6fbjSHFxcSna35YtWyRJVqs10TyLxaJWrVpJun1nwt3+/PNP+5sBixYtKum/9qlataoCAgLsy7q7u+vdd9/Vc889p+bNm+vq1aspqi8l3N3dNWnSJIfPULlyZX399deSpCVLltgfHYqNjVVQUJAsFosGDhyo4sWLO2zr6aefVtOmTSVJhw8ftk8/dOiQJKlEiRKqWbOmwzotW7bUq6++qubNmysmJsY+3Rm/f6nRq1cvvfDCC/afs2XLZj8mrly5kuh3I6212dp769atio+PT3P9QHqgn6afTi366dSjn76NfhoAHj7Ct8fErVu3JMnhJDQl7hxzxjAM+38nd4J14MABHT58WD4+Pg7jqaxcuVKSHE4A75Q3b17VqVNHkrR69epE8/Ply6ciRYrcs9bGjRsnmpY5c2YVK1ZM0n9fSu6sp1GjRvLx8Um0nsVisdd6Zz2vvfaadu3apV9//TXJGjJnzmz/76ioKPt/r1mzRpKSPXm/+/b+lLB9rlGjRmnlypWKjo62z6tYsaKmTZumgQMHpnq7kjRt2jT98ccf8vLy0vjx4x3GpNmxY4cuXLigLFmy6Jlnnkly/RdffFFubm4KDw/X/v37U7TP06dPS5L9pPxurVq1kpubm3bs2GFf1sY20Pid7Ws7Sf733381ZcoUnTt3zmGdb775Rl999ZXDCX9a1a5dW/7+/klO9/PzU0JCgtatWyfp9u/iqlWrtGvXLtWvXz/ROoZh2I/NO/9tbf/uBw8e1JdffqnQ0FCH9YYMGaLRo0c7PCKV1t+/1EpqjJ472+XatWtOrc32KFdkZKTD7zngSuin6adTg376wdBP30Y/DQAPH2O+PSZsV9JTe/XQdiVecryK3apVK3377bcKCgpSWFiYfZwL29X0Jk2a2K/y3rx5034VceLEiZo5c2aS+7Itc+zYsUTzkhtQ+U7JjYdiq+POEyPbFcrVq1fbr7zezXbiERoaKsMwHAaC9vT01O7du3X48GGdOnVKJ0+e1OHDhx1qt30Jio6Otp9Qli5dOsl9lSlTRhaLxeGL0/28//772rJli44fP6733ntPXl5eqlq1qurUqaN69eqpTJkyKd7WnZYuXapRo0ZJkoYPH64nnnjCYb7tVfGxsbF67bXXkt2Ou7u7EhISdOzYMVWqVOm++7148aIkOVxRvZNtgOr169dryZIl6tatm6TbV5gPHjwoHx8fNWnSxL58w4YNVaNGDW3dulVjxozRmDFjVLJkST355JN6+umnVbt27RQPXJxS9xq3JyAgQKdPn1ZISIjD9EyZMunChQvatWuXQkNDdfr0aR07dkwHDhyw/74mJCTYly9fvrxeeOEFLVmyRD/88IN++OEHFS5cWLVr19ZTTz2lp59+2uENdM74/UutpH4X7/zCa7vq7aza7jxmLl68mObxcID0QD9NP51S9NMPjn76NvppAHj4CN8eE2XKlNHff/+tkydPKioqSt7e3ilazzaIr+T4mEGBAgUcTrA6d+6s+Ph4/fnnn5Icr2zeuHHD/t933pafnOvXryealpKTr9ScoNlqOnfuXKIrrXeLj4/XzZs37SdKCxYs0OjRo3X+/HmH5fz8/PTyyy9r9uzZDtPv/CKV1NV76fZgtN7e3oqMjEzxZyhbtqwWL16sKVOmaMWKFbpy5Yp9sNwxY8bIarXqk08+UWBgYIq3uWPHDvXr10+GYahr166J3mYm/ffvExMTo+3bt993m3dePU3Jcnee/N2tdevWiU7qbV8kn3vuOYfHejw8PDR9+nT98ssvmj9/vv1L17Fjx/Tzzz8ra9as6tSpk7p27ZrkG/YexJ37T27enV8uz58/r6FDh+qff/5xOHH39vZWxYoVFR8fr23btiXa1tdff61atWppzpw52rVrl86cOaO5c+dq7ty5ypQpk9q0aaN+/frJy8vLKb9/qXW/O3dsX16dVdudf89SerwBGQ39tCP6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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ax = sns.catplot(\n", + " pg_pruning_compare,\n", + " x=\"overhead_size\",\n", + " col=\"algorithm\",\n", + " hue=\"dataset\",\n", + " kind=\"bar\",\n", + " col_order=[\"BFS\", \"PageRank\", \"WCC\", \"SSSP\"],\n", + " legend_out=True,\n", + " errorbar=None,\n", + " capsize=0.2,\n", + " col_wrap=2,\n", + ")\n", + "\n", + "ax.set_axis_labels(\"Overhead size (vs. baseline)\", \"Dataset\")\n", + "ax.set_titles(\"{col_name}\")\n", + "\n", + "ax.savefig(plot_location(\"es04-overhead-size.pdf\"), dpi=\"figure\")" + ] + }, + { + "cell_type": "markdown", + "id": "9ecf4eb0-6dc7-4bef-bb49-2c8b5eba2952", + "metadata": {}, + "source": [ + "# Data graph pruning" ] }, { "cell_type": "code", - "execution_count": 164, - "id": "62f56cb6-7cd1-4001-809e-9dc96a2c40e2", + "execution_count": 46, + "id": "d2c55cb1-15ea-4e95-a117-29127b667239", "metadata": {}, "outputs": [ { @@ -9508,634 +10617,543 @@ " \n", " \n", " \n", - " config\n", " algorithm\n", " dataset\n", - " run\n", - " storage_format\n", - " compressed\n", - " total_size\n", - " nr_executors\n", - " nr_vertices\n", - " iterations\n", + " size\n", " duration\n", - " baseline_duration\n", - " overhead\n", " \n", " \n", " \n", " \n", - " 6\n", - " provenancegraphpruning\n", + " 8\n", " BFS\n", " cit-Patents\n", - " 1\n", - " Text\n", - " False\n", - " 2186387275\n", - " 7\n", - " 3774768\n", - " 43\n", - " 112.801936\n", - " 101.973519\n", - " 1.106189\n", + " 50535370\n", + " 84.119626\n", " \n", " \n", - " 7\n", - " provenancegraphpruning\n", + " 41\n", + " BFS\n", + " cit-Patents\n", + " 50535370\n", + " 80.565514\n", + " \n", + " \n", + " 43\n", + " BFS\n", + " cit-Patents\n", + " 50535370\n", + " 71.694267\n", + " \n", + " \n", + " 3\n", " BFS\n", " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 189922202\n", - " 7\n", - " 633432\n", - " 29\n", - " 45.458680\n", - " 41.142354\n", - " 1.104912\n", + " 99098478\n", + " 39.527252\n", + " \n", + " \n", + " 11\n", + " BFS\n", + " datagen-7_5-fb\n", + " 99098478\n", + " 39.971409\n", + " \n", + " \n", + " 46\n", + " BFS\n", + " datagen-7_5-fb\n", + " 99098478\n", + " 58.515435\n", + " \n", + " \n", + " 28\n", + " BFS\n", + " datagen-7_9-fb\n", + " 242483171\n", + " 60.902666\n", + " \n", + " \n", + " 34\n", + " BFS\n", + " datagen-7_9-fb\n", + " 242483171\n", + " 79.564720\n", + " \n", + " \n", + " 44\n", + " BFS\n", + " datagen-7_9-fb\n", + " 242483171\n", + " 60.982929\n", + " \n", + " \n", + " 17\n", + " BFS\n", + " datagen-8_4-fb\n", + " 627415867\n", + " 224.443267\n", + " \n", + " \n", + " 37\n", + " BFS\n", + " datagen-8_4-fb\n", + " 627415867\n", + " 197.844532\n", + " \n", + " \n", + " 40\n", + " BFS\n", + " datagen-8_4-fb\n", + " 627415867\n", + " 234.275089\n", + " \n", + " \n", + " 9\n", + " BFS\n", + " datagen-8_8-zf\n", + " 158760\n", + " 1508.937023\n", + " \n", + " \n", + " 39\n", + " BFS\n", + " datagen-8_8-zf\n", + " 158760\n", + " 290.742301\n", + " \n", + " \n", + " 57\n", + " BFS\n", + " datagen-8_8-zf\n", + " 158760\n", + " 174.641857\n", + " \n", + " \n", + " 24\n", + " BFS\n", + " graph500-22\n", + " 33\n", + " 31.932286\n", + " \n", + " \n", + " 38\n", + " BFS\n", + " graph500-22\n", + " 33\n", + " 34.157684\n", + " \n", + " \n", + " 50\n", + " BFS\n", + " graph500-22\n", + " 33\n", + " 31.002115\n", + " \n", + " \n", + " 20\n", + " PageRank\n", + " cit-Patents\n", + " 2794130852\n", + " 196.816184\n", + " \n", + " \n", + " 36\n", + " PageRank\n", + " cit-Patents\n", + " 2794294602\n", + " 185.829129\n", + " \n", + " \n", + " 62\n", + " PageRank\n", + " cit-Patents\n", + " 2794130852\n", + " 181.047248\n", + " \n", + " \n", + " 18\n", + " PageRank\n", + " datagen-7_5-fb\n", + " 550443190\n", + " 74.664367\n", + " \n", + " \n", + " 51\n", + " PageRank\n", + " datagen-7_5-fb\n", + " 550549375\n", + " 77.101554\n", + " \n", + " \n", + " 56\n", + " PageRank\n", + " datagen-7_5-fb\n", + " 550421906\n", + " 75.883832\n", + " \n", + " \n", + " 19\n", + " PageRank\n", + " datagen-7_9-fb\n", + " 1210720999\n", + " 137.275204\n", + " \n", + " \n", + " 42\n", + " PageRank\n", + " datagen-7_9-fb\n", + " 1210719823\n", + " 145.444234\n", + " \n", + " \n", + " 49\n", + " PageRank\n", + " datagen-7_9-fb\n", + " 1210726466\n", + " 138.177192\n", + " \n", + " \n", + " 7\n", + " PageRank\n", + " datagen-8_4-fb\n", + " 3314186952\n", + " 406.727374\n", + " \n", + " \n", + " 14\n", + " PageRank\n", + " datagen-8_4-fb\n", + " 3314193099\n", + " 406.741236\n", + " \n", + " \n", + " 31\n", + " PageRank\n", + " datagen-8_4-fb\n", + " 3313982138\n", + " 383.874641\n", + " \n", + " \n", + " 27\n", + " PageRank\n", + " datagen-8_8-zf\n", + " 44182490490\n", + " 768.628219\n", + " \n", + " \n", + " 53\n", + " PageRank\n", + " datagen-8_8-zf\n", + " 44244650250\n", + " 1073.911689\n", + " \n", + " \n", + " 61\n", + " PageRank\n", + " datagen-8_8-zf\n", + " 44231571722\n", + " 1282.988579\n", " \n", " \n", " 2\n", - " provenancegraphpruning\n", - " BFS\n", - " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 435702119\n", - " 7\n", - " 1387587\n", - " 31\n", - " 92.726787\n", - " 61.450592\n", - " 1.508965\n", + " PageRank\n", + " graph500-22\n", + " 1760226544\n", + " 144.992663\n", " \n", " \n", - " 1\n", - " provenancegraphpruning\n", - " BFS\n", + " 48\n", + " PageRank\n", " graph500-22\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 2396657\n", - " 3\n", - " 34.608081\n", - " 42.711168\n", - " 0.810282\n", + " 1760224275\n", + " 149.804849\n", " \n", " \n", - " 3\n", - " provenancegraphpruning\n", + " 52\n", " PageRank\n", - " cit-Patents\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 3774768\n", - " 35\n", - " 84.410510\n", - " 142.736847\n", - " 0.591372\n", + " graph500-22\n", + " 1760225099\n", + " 156.765434\n", " \n", " \n", - " 9\n", - " provenancegraphpruning\n", - " PageRank\n", + " 10\n", + " SSSP\n", " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 633432\n", - " 35\n", - " 42.430770\n", - " 61.612538\n", - " 0.688671\n", + " 133167600\n", + " 43.555791\n", " \n", " \n", - " 5\n", - " provenancegraphpruning\n", - " PageRank\n", - " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 1387587\n", - " 35\n", - " 66.426430\n", - " 115.157119\n", - " 0.576833\n", + " 33\n", + " SSSP\n", + " datagen-7_5-fb\n", + " 133167600\n", + " 42.356690\n", " \n", " \n", - " 8\n", - " provenancegraphpruning\n", + " 35\n", " SSSP\n", " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 193732521\n", - " 7\n", - " 633432\n", - " 30\n", - " 45.962457\n", - " 41.157125\n", - " 1.116756\n", + " 133167600\n", + " 61.555237\n", " \n", " \n", - " 0\n", - " provenancegraphpruning\n", + " 4\n", " SSSP\n", " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 467315962\n", - " 7\n", - " 1387587\n", - " 32\n", - " 77.736612\n", - " 92.144127\n", - " 0.843642\n", + " 337239338\n", + " 65.867627\n", " \n", " \n", - " 4\n", - " provenancegraphpruning\n", - " WCC\n", - " cit-Patents\n", - " 1\n", - " Text\n", - " False\n", - " 965132860\n", - " 7\n", - " 3774768\n", - " 41\n", - " 210.021617\n", - " 190.549338\n", - " 1.102190\n", + " 15\n", + " SSSP\n", + " datagen-7_9-fb\n", + " 337239338\n", + " 76.924701\n", " \n", " \n", - " 10\n", - " provenancegraphpruning\n", - " WCC\n", - " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 58425032\n", - " 7\n", - " 633432\n", - " 13\n", - " 41.804323\n", - " 39.382844\n", - " 1.061486\n", + " 54\n", + " SSSP\n", + " datagen-7_9-fb\n", + " 337239338\n", + " 85.272062\n", " \n", " \n", - " 11\n", - " provenancegraphpruning\n", - " WCC\n", - " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 129855334\n", - " 7\n", - " 1387587\n", - " 13\n", - " 72.653872\n", - " 74.173866\n", - " 0.979508\n", + " 26\n", + " SSSP\n", + " datagen-8_4-fb\n", + " 891772120\n", + " 250.546991\n", " \n", - " \n", - "\n", - "" - ], - "text/plain": [ - " config algorithm dataset run storage_format \\\n", - "6 provenancegraphpruning BFS cit-Patents 1 Text \n", - "7 provenancegraphpruning BFS datagen-7_5-fb 1 Text \n", - "2 provenancegraphpruning BFS datagen-7_9-fb 1 Text \n", - "1 provenancegraphpruning BFS graph500-22 1 Text \n", - "3 provenancegraphpruning PageRank cit-Patents 1 Text \n", - "9 provenancegraphpruning PageRank datagen-7_5-fb 1 Text \n", - "5 provenancegraphpruning PageRank datagen-7_9-fb 1 Text \n", - "8 provenancegraphpruning SSSP datagen-7_5-fb 1 Text \n", - "0 provenancegraphpruning SSSP datagen-7_9-fb 1 Text \n", - "4 provenancegraphpruning WCC cit-Patents 1 Text \n", - "10 provenancegraphpruning WCC datagen-7_5-fb 1 Text \n", - "11 provenancegraphpruning WCC datagen-7_9-fb 1 Text \n", - "\n", - " compressed total_size nr_executors nr_vertices iterations duration \\\n", - "6 False 2186387275 7 3774768 43 112.801936 \n", - "7 False 189922202 7 633432 29 45.458680 \n", - "2 False 435702119 7 1387587 31 92.726787 \n", - "1 False 0 7 2396657 3 34.608081 \n", - "3 False 0 7 3774768 35 84.410510 \n", - "9 False 0 7 633432 35 42.430770 \n", - "5 False 0 7 1387587 35 66.426430 \n", - "8 False 193732521 7 633432 30 45.962457 \n", - "0 False 467315962 7 1387587 32 77.736612 \n", - "4 False 965132860 7 3774768 41 210.021617 \n", - "10 False 58425032 7 633432 13 41.804323 \n", - "11 False 129855334 7 1387587 13 72.653872 \n", - "\n", - " baseline_duration overhead \n", - "6 101.973519 1.106189 \n", - "7 41.142354 1.104912 \n", - "2 61.450592 1.508965 \n", - "1 42.711168 0.810282 \n", - "3 142.736847 0.591372 \n", - "9 61.612538 0.688671 \n", - "5 115.157119 0.576833 \n", - "8 41.157125 1.116756 \n", - "0 92.144127 0.843642 \n", - "4 190.549338 1.102190 \n", - "10 39.382844 1.061486 \n", - "11 74.173866 0.979508 " - ] - }, - "execution_count": 164, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "joinVertices_compare_duration = merge_compare(storage_baseline, joinVertices, metric=\"duration\")\n", - "# joinVertices_compare_duration = joinVertices_compare_duration[joinVertices_compare_duration[\"algorithm\"] != \"PageRank\"]\n", - "#joinVertices_compare_duration = joinVertices_compare_duration[joinVertices_compare_duration[\"total_size\"] != 0]\n", - "joinVertices_compare_duration.sort_values(by=[\"algorithm\", \"dataset\", \"storage_format\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 166, - "id": "32868cee-75e3-4498-91db-88bc9314fa05", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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MImIiIhIVAyYRERERCQqBkwiIiIiEhUDJhERERGJigGTiIiIiETFgElEREREomLAJCIiIiJRMWASERERkah0tV0AEREVbdEAAEHLVSjqKDz1aCL644sQFQkMmEREpBFzc3MY6OvDUy7XdikqPLVdQAEZ6OvD3Nxc22UQFQgDJhERacTKygo7d+1CfHy8tksp0lJSUhAcHAw7OzsYGhrC3NwcVlZW2i6LqEAYMImISGNWVlYMQwWUnJyM9PR01KhRA8bGxtouh0gUvMmHiIiIiETFgElEREREomLAJCIiIiJRMWASERERkagYMImIiIhIVAyYRERERCQqBkwiIiIiEhUDJhERERGJigGTiIiIiETFgElEREREomLAJCIiIiJRMWASERERkagYMImIiIhIVAyYRERERCQqXW0XQERERUNUVBTi4+M/e7vm5uawsrL67O0SkeYYMImI6KOioqIweNAgpMrln71tA3197Ny1iyGTqAhhwCQioo+Kj49HqlyO7x3fwtoko8Dbi3irgw0PTfG9YxKsTTJzWU6KDQ/ft8+ASVR0MGASEVGeWZtkwK50wQPmf9vLFHV7RFQ48CYfIiIiIhIVAyYRERERiYoBk4iIiIhExYBJRERERKJiwCQiIiIiUTFgEhEREZGoGDCJiIiISFQMmEREREQkKgZMIiIiIhIVAyYRERERiYoBk4iIiIhExYBJRERERKJiwCQiIiIiUTFgEhEREZGoGDCJiIiISFQMmERExVR8fLy2S/hsStK+EhUFDJhERMVQREQEunfvjoiICG2X8smVpH0lKioYMImIiqHExERkZmYiMTFR26V8ciVpX4mKCgZMIiIiIhIVAyYRERERiYoBk4iIiIhExYBJRERERKJiwCQiIiIiUel+qg0HBAQgMzMTNWrUgK7uJ2uGiIiIiAqZAiW/t2/fYvfu3TA3N0efPn0AAFFRURg9ejQeP34MAKhYsSKWLFmCRo0aFbxaIiIiIir0ND5F/vbtW/Tv3x/Lly/HpUuXlNPnzp0Lf39/CIIAQRAQERGBkSNH4uXLl6IUTERERESFm8YBc9euXQgKCoKFhQVatWoF4H3v5cWLFyGRSLB8+XLcuHED3bt3x7t377B582bRiiYiIiKiwkvjgHn27Fno6Ojgr7/+Up4ev3DhAgRBgKOjI7p06QJzc3PMnj0bRkZGuHLl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99/neIrcx8cHU6ZMUZkml8sRFhYGf39/CIKApk2bYvjw4WIcKiLRhYaGlsi2CyO+FkQlj0RQJEENJCYm4tChQ9i3bx+Cg4MBQBksa9Sogf79++Prr78u8cPYpKam4sqVK7h27Rp8fHwQGBiIzMxM5fy2bdti1apV0NfXz7auIAjw9fXFpUuX4OPjAz8/P6Smpirn29raYtu2bahYsaLatoODg3HhwgXcvHkTvr6+iI+PV84zNjbGunXrVE6z5zYOpoGBAczMzODg4IBOnTqhZ8+ekEql+T0cAID79+8DAJydnTVaXyzJycnw9/dHrVq1OKanFnyK4x8QEIARI0aIsq2CymifAVhoqfE4QHpGWihqKAz++OMPODg4aLsMtfg5pF08/vmT19/fGvVg+vn5Yc+ePfjnn3+QmpqqDJXGxsZITk6GlZUVjh07psmmiyUDAwO0a9cO7dq1AwAkJCTg5s2bOHjwIM6fP49z585h/fr1mDhxYrZ1JRIJ6tevj/r16wN434t47949nDhxAgcPHkRoaCgmT56M3bt3q23bzs4OdnZ2GDZsGARBQGBgIM6ePYudO3ciJiYG48ePx9mzZ2Fubq6yXo8ePXIcpoioKJg1axZsbW210nZoaCgWLFiglbYLI74WRCVPngNmcnIyjh07hn379sHf3x/A+941qVSKZs2a4auvvkL79u3h4uJS4q63VOfx48eIi4tDgwYNsvVMli5dGh06dECHDh2watUqrF+/HkeOHFEGzBcvXiAyMhK2trawtLRUWVdfXx+NGjVCo0aN0KlTJwwbNgy3b99GWFgYbGxsEBsbi9DQUJiamma7MUgikcDBwQEODg7o3bs3evTogdevX+Ps2bPo1avXJz0eRJ+bra1toe2xKmn4WhCVPDp5WWjevHlo2bIl5s2bh0ePHkEQBDg7O2PmzJm4fPky/vjjD3Tr1g1GRkafut4i47vvvoO7uzsePHiQ63KKMSiznrpetmwZBg8erBzPMieurq6wsbFRWf/UqVPo378/Fi9enOu6lpaWaN26dba2iYiIiAoqTwFz7969SE5ORt26dfHDDz/g33//xf79+zF06FCUKVPmU9dYJCme871t27Zcl3v27BkAqHy7b9iwIQBg//79ePv2bY7rJiQk4PXr19DX14ednZ1Kuzdu3MDjx4/z3TYRERFRQeUpYCqEhITA19cX165dQ3R09KeqqVgYM2YMDAwMcPLkSfz4449qj5evr6/yCTxZ78bu1asXbGxsEB4eDnd3dzx69CjbuhEREfjf//6H5ORkDBgwQHkjlUwmQ9euXZGRkYHhw4fjzJkz+PA+rrdv32LRokW4c+cOHB0d0bx5czF3nYiIiEq4PF2D+dtvv+HQoUO4ceMGzp8/jwsXLsDDwwONGzfG119/jQ4dOmR7nGFJV7NmTaxZswZTp06Fl5cXjh49CkdHR1hbWyM9PR1Pnz5FSEgIdHV1MX36dOVjIgHA0NAQW7ZswahRo+Dn54cePXqgatWqqFatGvT09BAREYFHjx4hIyMDXbp0wdSpU1XaXrRoEVJSUnDmzBmMHTsWZcuWRe3atWFqaoqYmBjcv38f7969g0wmK/Bz5omIiIg+lKeA2bVrV3Tt2hWRkZE4ePAgvLy88OLFC1y/fh03btzA/Pnz0bZtW3Tr1u1T11ukuLm54fTp09i3bx+uXLmCkJAQBAQEQFdXFxUqVMDgwYMxYMCAbI96BAAbGxscPXoUXl5euHDhAh49eoQbN24gPT0d5cqVwxdffIEePXqgZcuW2dY1MDDAunXrcPXqVZw4cQJ37tzBvXv38O7dO5ibm6NBgwbKYYZ0dT/pw5yIiIioBMpXuqhYsSLGjRuHcePG4caNG/D09MSZM2fw7t07/P333/j7778BAO/evcOjR49Qu3btT1J0UWJubo5Ro0Zh1KhR+V5XV1cXvXv3Ru/evTVqu3nz5vk+/T1+/HiMHz9eo/aIiIiIgAI8yadp06Zo2rQpkpKScPz4cRw6dAh+fn4A3t980qtXLzg4OKBXr17o1q1btnEWiYiIiKh4ytdNPuqYmpqif//+2L9/P44fPw53d3eUKVMGgiDg8ePHWLRoEVq1aqV2EHEiIiIiKn4KHDCzql69OqZPn46LFy9i7dq1aNOmDaRSKeRyOU6dOiVmU0RERERUSH2SOzx0dXXRvn17tG/fHq9fv8bhw4dx+PDhT9EUERERERUyovZgqlOuXDmMGDFCeQMQERERERVvnzxgEhEREVHJwoBJRERERKJiwCQiIiIiUTFgEhEREZGoGDCJqFgpVaoUdHR0UKpUKW2XQoUA3w9E2sEHURNRsWJtbQ0vLy8+PYwA8P1ApC3swSSiYodhgrLi+4Ho82PAJCIiIiJRMWASERERkagYMImIiIhIVAyYRERERCQqBkwiIiIiEhUDJhERERGJigGTiIiIiETFgElEREREomLAJCIiIiJRMWASERERkagYMImIiIhIVAyYRERERCQqBkwiIiIiEhUDJhERERGJigGTiIiIiESlq+0CiIiKK0mCBAIE7TSe8MHfWiBJkGivcSLSKgZMIiKRmZubQ99AH/Jbcm2XAuktqVbb1zfQh7m5uVZrIKLPjwGTiEhkVlZW2LVzF+Lj47VdykelpKQgODgYdnZ2MDQ0FH375ubmsLKyEn27RFS4MWASEX0CVlZWRSJYJScnIz09HTVq1ICxsbG2yyGiYoI3+RARERGRqBgwiYiIiEhUDJhEREREJCoGTCIiIiISFQMmEREREYmKAZOIiIiIRMWASURERESiYsAkIiIiIlExYBIRERGRqBgwiYiIiEhUDJhEREREJCoGTCIiIiISFQMmEREREYmKAZOIiIiIRKWr7QKIPrWoqCjEx8ernZeSkoKwsDDo6urC0NCwwG2Zm5vDysqqwNshIiIqyhgwqViLiorCoEGDIZenfpb29PUNsGvXToZMIiIq0RgwqViLj4+HXJ6KFPvWAADDpxeQYt8agpG56G1J3sUDTy8gPj6eAZOIiEo0BkwqEbIGSsHIHJkm5URvgxc0ExERvcffiUREREQkKgZMIiIiIhIVAyYRERERiYoBk4iIiIhExYBJRERERKJiwCQiIiIiUTFgEhEREZGoGDCJiIiISFQMmEREREQkKgZMIiIiIhIVAyYRERERiYoBk4iIiIhExYBJRERERKJiwCQiIiIiUTFgEhEREZGoGDCp2ImPj9d2CZ9Ecd0vIiIqfhgwqViJiIhA9+7dERERoe1SRFVc94uIiIonBkwqVhITE5GZmYnExERtlyKq4rpfRERUPDFgEhEREZGoGDCJiIiISFQMmEREREQkKgZMIiIiIhIVAyYRERERiYoBk4iIiIhExYBJRERERKJiwCQiIiIiUelqu4CPuXnzJoYOHap2nlQqhZGREaytrdG0aVMMGzYM1tbWn7nC/BsyZAhu3bqV43wDAwOUK1cOTk5O+Pbbb1GvXr3PV1wWDg4OAABvb2+ULl1aKzUQERFR0VPoA6aCsbEx2rVrpzItMzMTb9++xd27d7F9+3YcOXIEW7duRe3atbVUZf64uLigcuXKKtMEQcCrV6/g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", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "order = joinVertices_compare_duration.groupby(by=[\"algorithm\"])[\"overhead\"].median().sort_values(ascending=False).index\n", - "b = sns.boxplot(data=joinVertices_compare_duration, x=\"overhead\", y=\"algorithm\", hue=\"algorithm\", palette=algorithm_colors, order=order)\n", - "b.set_xlabel(\"Overhead (duration with text format)\")\n", - "b.set_ylabel(\"Algorithms\")\n", - "write_dir = (plot_dir / data_dir)\n", - "write_dir.mkdir(exist_ok=True, parents=True)\n", - "plt.savefig(write_dir / \"overhead-duration.pdf\", bbox_inches='tight')" - ] - }, - { - "cell_type": "code", - "execution_count": 167, - "id": "842777a1-586a-4049-a879-d0c9de5b751f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
    configalgorithmdatasetrunstorage_formatcompressedtotal_sizenr_executorsnr_verticesiterationsdurationbaseline_total_sizeoverhead
    32SSSPdatagen-8_4-fb891772120245.070166
    6provenancegraphpruningBFScit-Patents1TextFalse21863872757377476843112.80193625255978030.86569159SSSPdatagen-8_4-fb891772120253.177462
    7provenancegraphpruningBFSdatagen-7_5-fb1TextFalse18992220276334322945.4586802565292250.74035313SSSPdatagen-8_8-zf192374179.988028
    23SSSPdatagen-8_8-zf192374188.399307
    58SSSPdatagen-8_8-zf192374165.206775
    16WCCcit-Patents1100333124186.843296
    2provenancegraphpruningBFSdatagen-7_9-fb1TextFalse435702119713875873192.7267875818553990.74881529WCCcit-Patents1100333124190.770823
    1provenancegraphpruningBFSgraph500-221TextFalse072396657334.6080812137941120.00000030WCCcit-Patents1100333124188.821077
    3provenancegraphpruningPageRankcit-Patents1TextFalse0737747683584.41051028342353120.0000000WCCdatagen-7_5-fb9402618043.228864
    9provenancegraphpruningPageRank22WCCdatagen-7_5-fb1TextFalse076334323542.4307705527524990.0000009402618040.522060
    25WCCdatagen-7_5-fb9402618041.251902
    5provenancegraphpruningPageRankWCCdatagen-7_9-fb1TextFalse0713875873566.42643012161015650.00000020816913876.223930
    8provenancegraphpruningSSSPdatagen-7_5-fb1TextFalse19373252176334323045.9624572546709290.76071712WCCdatagen-7_9-fb20816913875.840427
    0provenancegraphpruningSSSP55WCCdatagen-7_9-fb1TextFalse467315962713875873277.7366126011332260.77739220816913873.083496
    4provenancegraphpruning21WCCcit-Patents1TextFalse9651328607377476841210.02161711003331240.877128datagen-8_4-fb580609781255.279670
    10provenancegraphpruning45WCCdatagen-7_5-fb1TextFalse5842503276334321341.804323940261800.621370datagen-8_4-fb580609781246.380697
    11provenancegraphpruning47WCCdatagen-7_9-fb1TextFalse129855334713875871372.6538722081691380.623797datagen-8_4-fb580609781221.588526
    1WCCgraph500-2226811430972.305158
    6WCCgraph500-2226811430971.964254
    60WCCgraph500-2226811430970.441986
    \n", "
    " ], "text/plain": [ - " config algorithm dataset run storage_format \\\n", - "6 provenancegraphpruning BFS cit-Patents 1 Text \n", - "7 provenancegraphpruning BFS datagen-7_5-fb 1 Text \n", - "2 provenancegraphpruning BFS datagen-7_9-fb 1 Text \n", - "1 provenancegraphpruning BFS graph500-22 1 Text \n", - "3 provenancegraphpruning PageRank cit-Patents 1 Text \n", - "9 provenancegraphpruning PageRank datagen-7_5-fb 1 Text \n", - "5 provenancegraphpruning PageRank datagen-7_9-fb 1 Text \n", - "8 provenancegraphpruning SSSP datagen-7_5-fb 1 Text \n", - "0 provenancegraphpruning SSSP datagen-7_9-fb 1 Text \n", - "4 provenancegraphpruning WCC cit-Patents 1 Text \n", - "10 provenancegraphpruning WCC datagen-7_5-fb 1 Text \n", - "11 provenancegraphpruning WCC datagen-7_9-fb 1 Text \n", - "\n", - " compressed total_size nr_executors nr_vertices iterations duration \\\n", - "6 False 2186387275 7 3774768 43 112.801936 \n", - "7 False 189922202 7 633432 29 45.458680 \n", - "2 False 435702119 7 1387587 31 92.726787 \n", - "1 False 0 7 2396657 3 34.608081 \n", - "3 False 0 7 3774768 35 84.410510 \n", - "9 False 0 7 633432 35 42.430770 \n", - "5 False 0 7 1387587 35 66.426430 \n", - "8 False 193732521 7 633432 30 45.962457 \n", - "0 False 467315962 7 1387587 32 77.736612 \n", - "4 False 965132860 7 3774768 41 210.021617 \n", - "10 False 58425032 7 633432 13 41.804323 \n", - "11 False 129855334 7 1387587 13 72.653872 \n", - "\n", - " baseline_total_size overhead \n", - "6 2525597803 0.865691 \n", - "7 256529225 0.740353 \n", - "2 581855399 0.748815 \n", - "1 213794112 0.000000 \n", - "3 2834235312 0.000000 \n", - "9 552752499 0.000000 \n", - "5 1216101565 0.000000 \n", - "8 254670929 0.760717 \n", - "0 601133226 0.777392 \n", - "4 1100333124 0.877128 \n", - "10 94026180 0.621370 \n", - "11 208169138 0.623797 " + " algorithm dataset size duration\n", + "8 BFS cit-Patents 50535370 84.119626\n", + "41 BFS cit-Patents 50535370 80.565514\n", + "43 BFS cit-Patents 50535370 71.694267\n", + "3 BFS datagen-7_5-fb 99098478 39.527252\n", + "11 BFS datagen-7_5-fb 99098478 39.971409\n", + "46 BFS datagen-7_5-fb 99098478 58.515435\n", + "28 BFS datagen-7_9-fb 242483171 60.902666\n", + "34 BFS datagen-7_9-fb 242483171 79.564720\n", + "44 BFS datagen-7_9-fb 242483171 60.982929\n", + "17 BFS datagen-8_4-fb 627415867 224.443267\n", + "37 BFS datagen-8_4-fb 627415867 197.844532\n", + "40 BFS datagen-8_4-fb 627415867 234.275089\n", + "9 BFS datagen-8_8-zf 158760 1508.937023\n", + "39 BFS datagen-8_8-zf 158760 290.742301\n", + "57 BFS datagen-8_8-zf 158760 174.641857\n", + "24 BFS graph500-22 33 31.932286\n", + "38 BFS graph500-22 33 34.157684\n", + "50 BFS graph500-22 33 31.002115\n", + "20 PageRank cit-Patents 2794130852 196.816184\n", + "36 PageRank cit-Patents 2794294602 185.829129\n", + "62 PageRank cit-Patents 2794130852 181.047248\n", + "18 PageRank datagen-7_5-fb 550443190 74.664367\n", + "51 PageRank datagen-7_5-fb 550549375 77.101554\n", + "56 PageRank datagen-7_5-fb 550421906 75.883832\n", + "19 PageRank datagen-7_9-fb 1210720999 137.275204\n", + "42 PageRank datagen-7_9-fb 1210719823 145.444234\n", + "49 PageRank datagen-7_9-fb 1210726466 138.177192\n", + "7 PageRank datagen-8_4-fb 3314186952 406.727374\n", + "14 PageRank datagen-8_4-fb 3314193099 406.741236\n", + "31 PageRank datagen-8_4-fb 3313982138 383.874641\n", + "27 PageRank datagen-8_8-zf 44182490490 768.628219\n", + "53 PageRank datagen-8_8-zf 44244650250 1073.911689\n", + "61 PageRank datagen-8_8-zf 44231571722 1282.988579\n", + "2 PageRank graph500-22 1760226544 144.992663\n", + "48 PageRank graph500-22 1760224275 149.804849\n", + "52 PageRank graph500-22 1760225099 156.765434\n", + "10 SSSP datagen-7_5-fb 133167600 43.555791\n", + "33 SSSP datagen-7_5-fb 133167600 42.356690\n", + "35 SSSP datagen-7_5-fb 133167600 61.555237\n", + "4 SSSP datagen-7_9-fb 337239338 65.867627\n", + "15 SSSP datagen-7_9-fb 337239338 76.924701\n", + "54 SSSP datagen-7_9-fb 337239338 85.272062\n", + "26 SSSP datagen-8_4-fb 891772120 250.546991\n", + "32 SSSP datagen-8_4-fb 891772120 245.070166\n", + "59 SSSP datagen-8_4-fb 891772120 253.177462\n", + "13 SSSP datagen-8_8-zf 192374 179.988028\n", + "23 SSSP datagen-8_8-zf 192374 188.399307\n", + "58 SSSP datagen-8_8-zf 192374 165.206775\n", + "16 WCC cit-Patents 1100333124 186.843296\n", + "29 WCC cit-Patents 1100333124 190.770823\n", + "30 WCC cit-Patents 1100333124 188.821077\n", + "0 WCC datagen-7_5-fb 94026180 43.228864\n", + "22 WCC datagen-7_5-fb 94026180 40.522060\n", + "25 WCC datagen-7_5-fb 94026180 41.251902\n", + "5 WCC datagen-7_9-fb 208169138 76.223930\n", + "12 WCC datagen-7_9-fb 208169138 75.840427\n", + "55 WCC datagen-7_9-fb 208169138 73.083496\n", + "21 WCC datagen-8_4-fb 580609781 255.279670\n", + "45 WCC datagen-8_4-fb 580609781 246.380697\n", + "47 WCC datagen-8_4-fb 580609781 221.588526\n", + "1 WCC graph500-22 268114309 72.305158\n", + "6 WCC graph500-22 268114309 71.964254\n", + "60 WCC graph500-22 268114309 70.441986" ] }, - "execution_count": 167, + "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "joinVertices_compare_size = merge_compare(storage_baseline, joinVertices, metric=\"total_size\")\n", - "# joinVertices_compare_size = joinVertices_compare_size[joinVertices_compare_size[\"algorithm\"] != \"PageRank\"]\n", - "joinVertices_compare_size.sort_values(by=[\"algorithm\", \"dataset\", \"storage_format\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 168, - "id": "85102c2f-6789-44c3-8a4f-f1aaeb3596f2", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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TUVgYCCCg4OhpaWFmTNnol27duK6enp62LlzJ0aPHg1vb2/06NEDVapUQdWqVaGtrY3w8HD4+voiLS0NXbp0wfTp01X2vWzZMiQnJ+PSpUsYN24cSpcujVq1asHIyAjR0dH477//8P79e8jlcmzevPmzTwsiIiIiyi0GzHzUsmVLXLx4EYcPH8atW7cQHBwMf39/aGlpoXz58hg0aBD69++f6VGPAFCpUiWcOnUKrq6uuHbtGnx9fXHv3j2kpqaiTJky6NSpE3r06IHmzZtnWldXVxcbN27E7du3cfbsWXh4eMDLywvv37+HiYkJ6tWrJw4zpKXFtwARERFJi+kin5mYmGD06NEYPXp0rtfV0tJC79690bt3b7X27eTklOvL3xMmTMCECRPU2h8RERERwD6YRERERCQxBkwiIiIikhQDJhERERFJigGTiIiIiCTFgElEREREkmLAJCIiIiJJMWASERERkaQYMImIiIhIUgyYRERERCQpBkwiIiIq0kqUKAENDQ2UKFEi22UMDAy+uAzlHAMmERERFWkWFhZwdXWFhYVFtsuULVv2i8tQzjFgEhERUZFnYmIiyTKUMwyYRERERCQpBkwiIiIikhQDJhERERFJigGTiIiIiCTFgElEREREkmLAJCIiIiJJMWASERERkaQYMImIiIhIUgyYRERERCQpBkwiIiIikhQDJhERERFJigGTiIiIiCTFgElEREREkmLAJCIiIiJJMWASERERkaQYMImIiKjYkb2TqfyfpMWASURERMWGiYkJdHR1oPH4YwTSeKwBHV0dmJiYFGxhRYxWQRdARERE9LWYmZlh/779iIuLE6eZmJjAzMys4IoqghgwiYiIqFgxMzNjoMxnvERORERERJJiwCQiIiIiSTFgEhEREZGkGDCJiIiISFIMmEREREQkKQZMIiIiIpIUAyYRERERSYoBk4iIiIgkxYBJRERERJJiwCQiIiIiSTFgEhEREZGkGDCJiIiISFIMmEREREQkKQZMIiIiIpKUVkEXQERE9K2LjIxEXFyc5NtNTk5GaGgotLS0oKenJ/n2SZWJiQnMzMwKuowigQGTiIgoDyIjIzFo4EB8UCgKuhTKI10dHezbv58hUwIMmERERHkQFxeHDwoFegMoW9DFFFNRAFyAPJ2DKAAuCgXi4uIYMCXAgElERCSBsgAsICvoMoop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", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "order = joinVertices_compare_size.groupby(by=[\"algorithm\"])[\"overhead\"].median().sort_values(ascending=False).index\n", - "b = sns.boxplot(data=joinVertices_compare_size, x=\"overhead\", y=\"algorithm\", hue=\"algorithm\", palette=algorithm_colors, order=order)\n", - "b.set_xlabel(\"Overhead (storage with text format)\")\n", - "b.set_ylabel(\"Algorithms\")\n", - "write_dir = (plot_dir / data_dir)\n", - "write_dir.mkdir(exist_ok=True, parents=True)\n", - "plt.savefig(write_dir / \"overhead-size.pdf\", bbox_inches='tight')" - ] - }, - { - "cell_type": "markdown", - "id": "9ecf4eb0-6dc7-4bef-bb49-2c8b5eba2952", - "metadata": {}, - "source": [ - "# Data graph pruning (delta comparison)" + "data_dir = Path(\"das6\") / \"20240528-032640-datagraphpruning-3-runs\"\n", + "\n", + "dg_pruning = parse_experiment_output(root_dir / \"data\" / data_dir)\n", + "dg_pruning.sort_values(by=[\"algorithm\", \"dataset\", \"storage_format\"])\n", + "dg_pruning = dg_pruning[[\"algorithm\", \"dataset\", \"total_size\", \"duration\"]].sort_values(by=[\"algorithm\", \"dataset\"]).rename(columns={\"total_size\": \"size\"})\n", + "dg_pruning" ] }, { "cell_type": "code", - "execution_count": 169, - "id": "d2c55cb1-15ea-4e95-a117-29127b667239", + "execution_count": 47, + "id": "83c2282f", "metadata": {}, "outputs": [ { @@ -10159,681 +11177,910 @@ " \n", " \n", " \n", - " config\n", " algorithm\n", " dataset\n", - " run\n", - " storage_format\n", - " compressed\n", - " total_size\n", - " nr_executors\n", - " nr_vertices\n", - " iterations\n", - " duration\n", + " size_dgpruning\n", + " duration_dgpruning\n", + " duration_baseline\n", + " size_baseline\n", + " overhead_duration\n", + " overhead_size\n", " \n", " \n", " \n", " \n", - " 14\n", - " datagraphpruning\n", + " 0\n", " BFS\n", " cit-Patents\n", - " 1\n", - " Text\n", - " False\n", " 50535370\n", - " 7\n", - " 3774768\n", - " 43\n", - " 76.262150\n", + " 84.119626\n", + " 82.968899\n", + " 100187504\n", + " 1.013869\n", + " 0.504408\n", + " \n", + " \n", + " 1\n", + " BFS\n", + " cit-Patents\n", + " 50535370\n", + " 80.565514\n", + " 82.968899\n", + " 100187504\n", + " 0.971033\n", + " 0.504408\n", + " \n", + " \n", + " 2\n", + " BFS\n", + " cit-Patents\n", + " 50535370\n", + " 71.694267\n", + " 82.968899\n", + " 100187504\n", + " 0.864110\n", + " 0.504408\n", + " \n", + " \n", + " 3\n", + " BFS\n", + " datagen-7_5-fb\n", + " 99098478\n", + " 39.527252\n", + " 34.323108\n", + " 9533719\n", + " 1.151622\n", + " 10.394525\n", + " \n", + " \n", + " 4\n", + " BFS\n", + " datagen-7_5-fb\n", + " 99098478\n", + " 39.971409\n", + " 34.323108\n", + " 9533719\n", + " 1.164563\n", + " 10.394525\n", + " \n", + " \n", + " 5\n", + " BFS\n", + " datagen-7_5-fb\n", + " 99098478\n", + " 58.515435\n", + " 34.323108\n", + " 9533719\n", + " 1.704841\n", + " 10.394525\n", + " \n", + " \n", + " 6\n", + " BFS\n", + " datagen-7_9-fb\n", + " 242483171\n", + " 60.902666\n", + " 69.310011\n", + " 20966038\n", + " 0.878699\n", + " 11.565522\n", " \n", " \n", - " 2\n", - " datagraphpruning\n", + " 7\n", " BFS\n", - " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 99098478\n", - " 7\n", - " 633432\n", - " 29\n", - " 39.157005\n", + " datagen-7_9-fb\n", + " 242483171\n", + " 79.564720\n", + " 69.310011\n", + " 20966038\n", + " 1.147954\n", + " 11.565522\n", " \n", " \n", - " 15\n", - " datagraphpruning\n", + " 8\n", " BFS\n", " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", " 242483171\n", - " 7\n", - " 1387587\n", - " 31\n", - " 59.394301\n", + " 60.982929\n", + " 69.310011\n", + " 20966038\n", + " 0.879857\n", + " 11.565522\n", " \n", " \n", - " 12\n", - " datagraphpruning\n", + " 9\n", " BFS\n", " datagen-8_4-fb\n", - " 1\n", - " Text\n", - " False\n", " 627415867\n", - " 7\n", - " 3809084\n", - " 35\n", - " 239.188734\n", + " 224.443267\n", + " 241.785784\n", + " 57850630\n", + " 0.928273\n", + " 10.845446\n", " \n", " \n", - " 17\n", - " datagraphpruning\n", + " 10\n", + " BFS\n", + " datagen-8_4-fb\n", + " 627415867\n", + " 197.844532\n", + " 241.785784\n", + " 57850630\n", + " 0.818264\n", + " 10.845446\n", + " \n", + " \n", + " 11\n", + " BFS\n", + " datagen-8_4-fb\n", + " 627415867\n", + " 234.275089\n", + " 241.785784\n", + " 57850630\n", + " 0.968937\n", + " 10.845446\n", + " \n", + " \n", + " 13\n", " BFS\n", " datagen-8_8-zf\n", - " 1\n", - " Text\n", - " False\n", " 158760\n", - " 7\n", - " 168308893\n", - " 21\n", - " 158.303025\n", + " 290.742301\n", + " 218.721579\n", + " 2703435298\n", + " 1.329280\n", + " 0.000059\n", " \n", " \n", - " 8\n", - " datagraphpruning\n", + " 14\n", + " BFS\n", + " datagen-8_8-zf\n", + " 158760\n", + " 174.641857\n", + " 218.721579\n", + " 2703435298\n", + " 0.798467\n", + " 0.000059\n", + " \n", + " \n", + " 15\n", " BFS\n", " graph500-22\n", - " 1\n", - " Text\n", - " False\n", " 33\n", - " 7\n", - " 2396657\n", - " 3\n", - " 35.277343\n", + " 31.932286\n", + " 32.865590\n", + " 23357988\n", + " 0.971602\n", + " 0.000001\n", " \n", " \n", - " 3\n", - " datagraphpruning\n", + " 16\n", + " BFS\n", + " graph500-22\n", + " 33\n", + " 34.157684\n", + " 32.865590\n", + " 23357988\n", + " 1.039314\n", + " 0.000001\n", + " \n", + " \n", + " 17\n", + " BFS\n", + " graph500-22\n", + " 33\n", + " 31.002115\n", + " 32.865590\n", + " 23357988\n", + " 0.943300\n", + " 0.000001\n", + " \n", + " \n", + " 18\n", " PageRank\n", " cit-Patents\n", - " 1\n", - " Text\n", - " False\n", - " 2795333038\n", - " 7\n", - " 3774768\n", - " 35\n", - " 189.454736\n", + " 2794130852\n", + " 196.816184\n", + " 85.102944\n", + " 113070194\n", + " 2.312684\n", + " 24.711471\n", " \n", " \n", - " 16\n", - " datagraphpruning\n", + " 19\n", + " PageRank\n", + " cit-Patents\n", + " 2794294602\n", + " 185.829129\n", + " 85.102944\n", + " 113070194\n", + " 2.183580\n", + " 24.712919\n", + " \n", + " \n", + " 20\n", + " PageRank\n", + " cit-Patents\n", + " 2794130852\n", + " 181.047248\n", + " 85.102944\n", + " 113070194\n", + " 2.127391\n", + " 24.711471\n", + " \n", + " \n", + " 21\n", " PageRank\n", " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 550374485\n", - " 7\n", - " 633432\n", - " 35\n", - " 78.914126\n", + " 550443190\n", + " 74.664367\n", + " 39.980476\n", + " 22202359\n", + " 1.867521\n", + " 24.792104\n", " \n", " \n", - " 13\n", - " datagraphpruning\n", + " 22\n", + " PageRank\n", + " datagen-7_5-fb\n", + " 550549375\n", + " 77.101554\n", + " 39.980476\n", + " 22202359\n", + " 1.928480\n", + " 24.796886\n", + " \n", + " \n", + " 23\n", + " PageRank\n", + " datagen-7_5-fb\n", + " 550421906\n", + " 75.883832\n", + " 39.980476\n", + " 22202359\n", + " 1.898022\n", + " 24.791145\n", + " \n", + " \n", + " 24\n", " PageRank\n", " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 1210719851\n", - " 7\n", - " 1387587\n", - " 35\n", - " 128.222824\n", + " 1210720999\n", + " 137.275204\n", + " 69.879073\n", + " 48717778\n", + " 1.964468\n", + " 24.851729\n", " \n", " \n", - " 1\n", - " datagraphpruning\n", + " 25\n", + " PageRank\n", + " datagen-7_9-fb\n", + " 1210719823\n", + " 145.444234\n", + " 69.879073\n", + " 48717778\n", + " 2.081370\n", + " 24.851705\n", + " \n", + " \n", + " 26\n", + " PageRank\n", + " datagen-7_9-fb\n", + " 1210726466\n", + " 138.177192\n", + " 69.879073\n", + " 48717778\n", + " 1.977376\n", + " 24.851841\n", + " \n", + " \n", + " 27\n", " PageRank\n", " datagen-8_4-fb\n", - " 1\n", - " Text\n", - " False\n", - " 3313983586\n", - " 7\n", - " 3809084\n", - " 35\n", - " 412.159718\n", + " 3314186952\n", + " 406.727374\n", + " 215.872856\n", + " 134032310\n", + " 1.884106\n", + " 24.726776\n", " \n", " \n", - " 6\n", - " datagraphpruning\n", + " 28\n", + " PageRank\n", + " datagen-8_4-fb\n", + " 3314193099\n", + " 406.741236\n", + " 215.872856\n", + " 134032310\n", + " 1.884170\n", + " 24.726822\n", + " \n", + " \n", + " 29\n", + " PageRank\n", + " datagen-8_4-fb\n", + " 3313982138\n", + " 383.874641\n", + " 215.872856\n", + " 134032310\n", + " 1.778244\n", + " 24.725248\n", + " \n", + " \n", + " 30\n", " PageRank\n", " datagen-8_8-zf\n", - " 1\n", - " Text\n", - " False\n", - " 44197081439\n", - " 7\n", - " 168308893\n", - " 35\n", - " 891.574013\n", + " 44182490490\n", + " 768.628219\n", + " 245.949348\n", + " 5970693132\n", + " 3.125148\n", + " 7.399893\n", " \n", " \n", - " 11\n", - " datagraphpruning\n", + " 31\n", + " PageRank\n", + " datagen-8_8-zf\n", + " 44244650250\n", + " 1073.911689\n", + " 245.949348\n", + " 5970693132\n", + " 4.366394\n", + " 7.410304\n", + " \n", + " \n", + " 32\n", + " PageRank\n", + " datagen-8_8-zf\n", + " 44231571722\n", + " 1282.988579\n", + " 245.949348\n", + " 5970693132\n", + " 5.216475\n", + " 7.408113\n", + " \n", + " \n", + " 33\n", " PageRank\n", " graph500-22\n", - " 1\n", - " Text\n", - " False\n", - " 1760226476\n", - " 7\n", - " 2396657\n", - " 35\n", - " 150.237580\n", + " 1760226544\n", + " 144.992663\n", + " 78.376377\n", + " 71264722\n", + " 1.849954\n", + " 24.699830\n", " \n", " \n", - " 19\n", - " datagraphpruning\n", + " 34\n", + " PageRank\n", + " graph500-22\n", + " 1760224275\n", + " 149.804849\n", + " 78.376377\n", + " 71264722\n", + " 1.911352\n", + " 24.699799\n", + " \n", + " \n", + " 35\n", + " PageRank\n", + " graph500-22\n", + " 1760225099\n", + " 156.765434\n", + " 78.376377\n", + " 71264722\n", + " 2.000162\n", + " 24.699810\n", + " \n", + " \n", + " 36\n", " SSSP\n", " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", " 133167600\n", - " 7\n", - " 633432\n", - " 30\n", - " 40.820508\n", + " 43.555791\n", + " 38.116547\n", + " 22202359\n", + " 1.142700\n", + " 5.997903\n", " \n", " \n", - " 18\n", - " datagraphpruning\n", + " 37\n", + " SSSP\n", + " datagen-7_5-fb\n", + " 133167600\n", + " 42.356690\n", + " 38.116547\n", + " 22202359\n", + " 1.111242\n", + " 5.997903\n", + " \n", + " \n", + " 38\n", + " SSSP\n", + " datagen-7_5-fb\n", + " 133167600\n", + " 61.555237\n", + " 38.116547\n", + " 22202359\n", + " 1.614922\n", + " 5.997903\n", + " \n", + " \n", + " 39\n", " SSSP\n", " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", " 337239338\n", - " 7\n", - " 1387587\n", - " 32\n", - " 67.234251\n", + " 65.867627\n", + " 76.495710\n", + " 48717778\n", + " 0.861063\n", + " 6.922305\n", " \n", " \n", - " 9\n", - " datagraphpruning\n", + " 40\n", + " SSSP\n", + " datagen-7_9-fb\n", + " 337239338\n", + " 76.924701\n", + " 76.495710\n", + " 48717778\n", + " 1.005608\n", + " 6.922305\n", + " \n", + " \n", + " 41\n", + " SSSP\n", + " datagen-7_9-fb\n", + " 337239338\n", + " 85.272062\n", + " 76.495710\n", + " 48717778\n", + " 1.114730\n", + " 6.922305\n", + " \n", + " \n", + " 42\n", " SSSP\n", " datagen-8_4-fb\n", - " 1\n", - " Text\n", - " False\n", " 891772120\n", - " 7\n", - " 3809084\n", - " 36\n", - " 262.843939\n", + " 250.546991\n", + " 255.830169\n", + " 134032310\n", + " 0.979349\n", + " 6.653412\n", " \n", " \n", - " 0\n", - " datagraphpruning\n", + " 43\n", + " SSSP\n", + " datagen-8_4-fb\n", + " 891772120\n", + " 245.070166\n", + " 255.830169\n", + " 134032310\n", + " 0.957941\n", + " 6.653412\n", + " \n", + " \n", + " 44\n", + " SSSP\n", + " datagen-8_4-fb\n", + " 891772120\n", + " 253.177462\n", + " 255.830169\n", + " 134032310\n", + " 0.989631\n", + " 6.653412\n", + " \n", + " \n", + " 45\n", + " SSSP\n", + " datagen-8_8-zf\n", + " 192374\n", + " 179.988028\n", + " 209.249324\n", + " 5899340019\n", + " 0.860161\n", + " 0.000033\n", + " \n", + " \n", + " 46\n", + " SSSP\n", + " datagen-8_8-zf\n", + " 192374\n", + " 188.399307\n", + " 209.249324\n", + " 5899340019\n", + " 0.900358\n", + " 0.000033\n", + " \n", + " \n", + " 47\n", " SSSP\n", " datagen-8_8-zf\n", - " 1\n", - " Text\n", - " False\n", " 192374\n", - " 7\n", - " 168308893\n", - " 22\n", - " 183.635438\n", + " 165.206775\n", + " 209.249324\n", + " 5899340019\n", + " 0.789521\n", + " 0.000033\n", " \n", " \n", - " 5\n", - " datagraphpruning\n", + " 48\n", " WCC\n", " cit-Patents\n", - " 1\n", - " Text\n", - " False\n", " 1100333124\n", - " 7\n", - " 3774768\n", - " 41\n", - " 182.512176\n", + " 186.843296\n", + " 157.944986\n", + " 37635956\n", + " 1.182964\n", + " 29.236221\n", " \n", " \n", - " 10\n", - " datagraphpruning\n", + " 49\n", " WCC\n", - " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 94026180\n", - " 7\n", - " 633432\n", - " 13\n", - " 39.135903\n", + " cit-Patents\n", + " 1100333124\n", + " 190.770823\n", + " 157.944986\n", + " 37635956\n", + " 1.207831\n", + " 29.236221\n", " \n", " \n", - " 20\n", - " datagraphpruning\n", + " 50\n", " WCC\n", - " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 208169138\n", - " 7\n", - " 1387587\n", - " 13\n", - " 72.295015\n", + " cit-Patents\n", + " 1100333124\n", + " 188.821077\n", + " 157.944986\n", + " 37635956\n", + " 1.195486\n", + " 29.236221\n", " \n", " \n", - " 7\n", - " datagraphpruning\n", + " 51\n", " WCC\n", - " datagen-8_4-fb\n", - " 1\n", - " Text\n", - " False\n", - " 580609781\n", - " 7\n", - " 3809084\n", - " 13\n", - " 217.327249\n", + " datagen-7_5-fb\n", + " 94026180\n", + " 43.228864\n", + " 36.768406\n", + " 9533719\n", + " 1.175707\n", + " 9.862487\n", " \n", " \n", - " 4\n", - " datagraphpruning\n", + " 52\n", " WCC\n", - " graph500-22\n", - " 1\n", - " Text\n", - " False\n", - " 268114309\n", - " 7\n", - " 2396657\n", - " 15\n", - " 72.729728\n", - " \n", - " \n", - "\n", - "" - ], - "text/plain": [ - " config algorithm dataset run storage_format \\\n", - "14 datagraphpruning BFS cit-Patents 1 Text \n", - "2 datagraphpruning BFS datagen-7_5-fb 1 Text \n", - "15 datagraphpruning BFS datagen-7_9-fb 1 Text \n", - "12 datagraphpruning BFS datagen-8_4-fb 1 Text \n", - "17 datagraphpruning BFS datagen-8_8-zf 1 Text \n", - "8 datagraphpruning BFS graph500-22 1 Text \n", - "3 datagraphpruning PageRank cit-Patents 1 Text \n", - "16 datagraphpruning PageRank datagen-7_5-fb 1 Text \n", - "13 datagraphpruning PageRank datagen-7_9-fb 1 Text \n", - "1 datagraphpruning PageRank datagen-8_4-fb 1 Text \n", - "6 datagraphpruning PageRank datagen-8_8-zf 1 Text \n", - "11 datagraphpruning PageRank graph500-22 1 Text \n", - "19 datagraphpruning SSSP datagen-7_5-fb 1 Text \n", - "18 datagraphpruning SSSP datagen-7_9-fb 1 Text \n", - "9 datagraphpruning SSSP datagen-8_4-fb 1 Text \n", - "0 datagraphpruning SSSP datagen-8_8-zf 1 Text \n", - "5 datagraphpruning WCC cit-Patents 1 Text \n", - "10 datagraphpruning WCC datagen-7_5-fb 1 Text \n", - "20 datagraphpruning WCC datagen-7_9-fb 1 Text \n", - "7 datagraphpruning WCC datagen-8_4-fb 1 Text \n", - "4 datagraphpruning WCC graph500-22 1 Text \n", - "\n", - " compressed total_size nr_executors nr_vertices iterations duration \n", - "14 False 50535370 7 3774768 43 76.262150 \n", - "2 False 99098478 7 633432 29 39.157005 \n", - "15 False 242483171 7 1387587 31 59.394301 \n", - "12 False 627415867 7 3809084 35 239.188734 \n", - "17 False 158760 7 168308893 21 158.303025 \n", - "8 False 33 7 2396657 3 35.277343 \n", - "3 False 2795333038 7 3774768 35 189.454736 \n", - "16 False 550374485 7 633432 35 78.914126 \n", - "13 False 1210719851 7 1387587 35 128.222824 \n", - "1 False 3313983586 7 3809084 35 412.159718 \n", - "6 False 44197081439 7 168308893 35 891.574013 \n", - "11 False 1760226476 7 2396657 35 150.237580 \n", - "19 False 133167600 7 633432 30 40.820508 \n", - "18 False 337239338 7 1387587 32 67.234251 \n", - "9 False 891772120 7 3809084 36 262.843939 \n", - "0 False 192374 7 168308893 22 183.635438 \n", - "5 False 1100333124 7 3774768 41 182.512176 \n", - "10 False 94026180 7 633432 13 39.135903 \n", - "20 False 208169138 7 1387587 13 72.295015 \n", - "7 False 580609781 7 3809084 13 217.327249 \n", - "4 False 268114309 7 2396657 15 72.729728 " - ] - }, - "execution_count": 169, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data_dir = Path(\"das6\") / \"20240521-093950-datagraphpruning\"\n", - "smart_pruning = parse_experiment_output(root_dir / \"data\" / data_dir)\n", - "smart_pruning.sort_values(by=[\"algorithm\", \"dataset\", \"storage_format\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 170, - "id": "82ad839d-deac-41a6-8a88-233590db3f63", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
    configalgorithmdatasetrunstorage_formatcompressedtotal_sizenr_executorsnr_verticesiterationsdurationbaseline_durationoverhead
    6datagraphpruningBFScit-Patents1TextFalse50535370737747684376.262150101.9735190.747862datagen-7_5-fb9402618040.52206036.76840695337191.1020899.862487
    0datagraphpruningBFS53WCCdatagen-7_5-fb1TextFalse9909847876334322939.15700541.1423540.9517449402618041.25190236.76840695337191.1219399.862487
    7datagraphpruningBFS54WCCdatagen-7_9-fb1TextFalse242483171713875873159.39430161.4505920.966537
    3datagraphpruningBFSgraph500-221TextFalse3372396657335.27734342.7111680.82595120816913876.22393066.344004209660381.1489209.928873
    1datagraphpruningPageRankcit-Patents1TextFalse27953330387377476835189.454736142.7368471.32730155WCCdatagen-7_9-fb20816913875.84042766.344004209660381.1431399.928873
    8datagraphpruningPageRankdatagen-7_5-fb1TextFalse55037448576334323578.91412661.6125381.28081356WCCdatagen-7_9-fb20816913873.08349666.344004209660381.1015849.928873
    5datagraphpruningPageRankdatagen-7_9-fb1TextFalse12107198517138758735128.222824115.1571191.11346057WCCdatagen-8_4-fb580609781255.279670239.018332578506301.06803410.036361
    10datagraphpruningSSSPdatagen-7_5-fb1TextFalse13316760076334323040.82050841.1571250.99182158WCCdatagen-8_4-fb580609781246.380697239.018332578506301.03080310.036361
    9datagraphpruningSSSPdatagen-7_9-fb1TextFalse337239338713875873267.23425192.1441270.72966459WCCdatagen-8_4-fb580609781221.588526239.018332578506300.92707810.036361
    2datagraphpruning60WCCcit-Patents1TextFalse11003331247377476841182.512176190.5493380.957821graph500-2226811430972.30515872.045441233396531.00360511.487502
    4datagraphpruning61WCCdatagen-7_5-fb1TextFalse9402618076334321339.13590339.3828440.993730graph500-2226811430971.96425472.045441233396530.99887311.487502
    11datagraphpruning62WCCdatagen-7_9-fb1TextFalse208169138713875871372.29501574.1738660.974670graph500-2226811430970.44198672.045441233396530.97774411.487502
    \n", "
    " ], "text/plain": [ - " config algorithm dataset run storage_format \\\n", - "6 datagraphpruning BFS cit-Patents 1 Text \n", - "0 datagraphpruning BFS datagen-7_5-fb 1 Text \n", - "7 datagraphpruning BFS datagen-7_9-fb 1 Text \n", - "3 datagraphpruning BFS graph500-22 1 Text \n", - "1 datagraphpruning PageRank cit-Patents 1 Text \n", - "8 datagraphpruning PageRank datagen-7_5-fb 1 Text \n", - "5 datagraphpruning PageRank datagen-7_9-fb 1 Text \n", - "10 datagraphpruning SSSP datagen-7_5-fb 1 Text \n", - "9 datagraphpruning SSSP datagen-7_9-fb 1 Text \n", - "2 datagraphpruning WCC cit-Patents 1 Text \n", - "4 datagraphpruning WCC datagen-7_5-fb 1 Text \n", - "11 datagraphpruning WCC datagen-7_9-fb 1 Text \n", + " algorithm dataset size_dgpruning duration_dgpruning \\\n", + "0 BFS cit-Patents 50535370 84.119626 \n", + "1 BFS cit-Patents 50535370 80.565514 \n", + "2 BFS cit-Patents 50535370 71.694267 \n", + "3 BFS datagen-7_5-fb 99098478 39.527252 \n", + "4 BFS datagen-7_5-fb 99098478 39.971409 \n", + "5 BFS datagen-7_5-fb 99098478 58.515435 \n", + "6 BFS datagen-7_9-fb 242483171 60.902666 \n", + "7 BFS datagen-7_9-fb 242483171 79.564720 \n", + "8 BFS datagen-7_9-fb 242483171 60.982929 \n", + "9 BFS datagen-8_4-fb 627415867 224.443267 \n", + "10 BFS datagen-8_4-fb 627415867 197.844532 \n", + "11 BFS datagen-8_4-fb 627415867 234.275089 \n", + "13 BFS datagen-8_8-zf 158760 290.742301 \n", + "14 BFS datagen-8_8-zf 158760 174.641857 \n", + "15 BFS graph500-22 33 31.932286 \n", + "16 BFS graph500-22 33 34.157684 \n", + "17 BFS graph500-22 33 31.002115 \n", + "18 PageRank cit-Patents 2794130852 196.816184 \n", + "19 PageRank cit-Patents 2794294602 185.829129 \n", + "20 PageRank cit-Patents 2794130852 181.047248 \n", + "21 PageRank datagen-7_5-fb 550443190 74.664367 \n", + "22 PageRank datagen-7_5-fb 550549375 77.101554 \n", + "23 PageRank datagen-7_5-fb 550421906 75.883832 \n", + "24 PageRank datagen-7_9-fb 1210720999 137.275204 \n", + "25 PageRank datagen-7_9-fb 1210719823 145.444234 \n", + "26 PageRank datagen-7_9-fb 1210726466 138.177192 \n", + "27 PageRank datagen-8_4-fb 3314186952 406.727374 \n", + "28 PageRank datagen-8_4-fb 3314193099 406.741236 \n", + "29 PageRank datagen-8_4-fb 3313982138 383.874641 \n", + "30 PageRank datagen-8_8-zf 44182490490 768.628219 \n", + "31 PageRank datagen-8_8-zf 44244650250 1073.911689 \n", + "32 PageRank datagen-8_8-zf 44231571722 1282.988579 \n", + "33 PageRank graph500-22 1760226544 144.992663 \n", + "34 PageRank graph500-22 1760224275 149.804849 \n", + "35 PageRank graph500-22 1760225099 156.765434 \n", + "36 SSSP datagen-7_5-fb 133167600 43.555791 \n", + "37 SSSP datagen-7_5-fb 133167600 42.356690 \n", + "38 SSSP datagen-7_5-fb 133167600 61.555237 \n", + "39 SSSP datagen-7_9-fb 337239338 65.867627 \n", + "40 SSSP datagen-7_9-fb 337239338 76.924701 \n", + "41 SSSP datagen-7_9-fb 337239338 85.272062 \n", + "42 SSSP datagen-8_4-fb 891772120 250.546991 \n", + "43 SSSP datagen-8_4-fb 891772120 245.070166 \n", + "44 SSSP datagen-8_4-fb 891772120 253.177462 \n", + "45 SSSP datagen-8_8-zf 192374 179.988028 \n", + "46 SSSP datagen-8_8-zf 192374 188.399307 \n", + "47 SSSP datagen-8_8-zf 192374 165.206775 \n", + "48 WCC cit-Patents 1100333124 186.843296 \n", + "49 WCC cit-Patents 1100333124 190.770823 \n", + "50 WCC cit-Patents 1100333124 188.821077 \n", + "51 WCC datagen-7_5-fb 94026180 43.228864 \n", + "52 WCC datagen-7_5-fb 94026180 40.522060 \n", + "53 WCC datagen-7_5-fb 94026180 41.251902 \n", + "54 WCC datagen-7_9-fb 208169138 76.223930 \n", + "55 WCC datagen-7_9-fb 208169138 75.840427 \n", + "56 WCC datagen-7_9-fb 208169138 73.083496 \n", + "57 WCC datagen-8_4-fb 580609781 255.279670 \n", + "58 WCC datagen-8_4-fb 580609781 246.380697 \n", + "59 WCC datagen-8_4-fb 580609781 221.588526 \n", + "60 WCC graph500-22 268114309 72.305158 \n", + "61 WCC graph500-22 268114309 71.964254 \n", + "62 WCC graph500-22 268114309 70.441986 \n", "\n", - " compressed total_size nr_executors nr_vertices iterations duration \\\n", - "6 False 50535370 7 3774768 43 76.262150 \n", - "0 False 99098478 7 633432 29 39.157005 \n", - "7 False 242483171 7 1387587 31 59.394301 \n", - "3 False 33 7 2396657 3 35.277343 \n", - "1 False 2795333038 7 3774768 35 189.454736 \n", - "8 False 550374485 7 633432 35 78.914126 \n", - "5 False 1210719851 7 1387587 35 128.222824 \n", - "10 False 133167600 7 633432 30 40.820508 \n", - "9 False 337239338 7 1387587 32 67.234251 \n", - "2 False 1100333124 7 3774768 41 182.512176 \n", - "4 False 94026180 7 633432 13 39.135903 \n", - "11 False 208169138 7 1387587 13 72.295015 \n", - "\n", - " baseline_duration overhead \n", - "6 101.973519 0.747862 \n", - "0 41.142354 0.951744 \n", - "7 61.450592 0.966537 \n", - "3 42.711168 0.825951 \n", - "1 142.736847 1.327301 \n", - "8 61.612538 1.280813 \n", - "5 115.157119 1.113460 \n", - "10 41.157125 0.991821 \n", - "9 92.144127 0.729664 \n", - "2 190.549338 0.957821 \n", - "4 39.382844 0.993730 \n", - "11 74.173866 0.974670 " + " duration_baseline size_baseline overhead_duration overhead_size \n", + "0 82.968899 100187504 1.013869 0.504408 \n", + "1 82.968899 100187504 0.971033 0.504408 \n", + "2 82.968899 100187504 0.864110 0.504408 \n", + "3 34.323108 9533719 1.151622 10.394525 \n", + "4 34.323108 9533719 1.164563 10.394525 \n", + "5 34.323108 9533719 1.704841 10.394525 \n", + "6 69.310011 20966038 0.878699 11.565522 \n", + "7 69.310011 20966038 1.147954 11.565522 \n", + "8 69.310011 20966038 0.879857 11.565522 \n", + "9 241.785784 57850630 0.928273 10.845446 \n", + "10 241.785784 57850630 0.818264 10.845446 \n", + "11 241.785784 57850630 0.968937 10.845446 \n", + "13 218.721579 2703435298 1.329280 0.000059 \n", + "14 218.721579 2703435298 0.798467 0.000059 \n", + "15 32.865590 23357988 0.971602 0.000001 \n", + "16 32.865590 23357988 1.039314 0.000001 \n", + "17 32.865590 23357988 0.943300 0.000001 \n", + "18 85.102944 113070194 2.312684 24.711471 \n", + "19 85.102944 113070194 2.183580 24.712919 \n", + "20 85.102944 113070194 2.127391 24.711471 \n", + "21 39.980476 22202359 1.867521 24.792104 \n", + "22 39.980476 22202359 1.928480 24.796886 \n", + "23 39.980476 22202359 1.898022 24.791145 \n", + "24 69.879073 48717778 1.964468 24.851729 \n", + "25 69.879073 48717778 2.081370 24.851705 \n", + "26 69.879073 48717778 1.977376 24.851841 \n", + "27 215.872856 134032310 1.884106 24.726776 \n", + "28 215.872856 134032310 1.884170 24.726822 \n", + "29 215.872856 134032310 1.778244 24.725248 \n", + "30 245.949348 5970693132 3.125148 7.399893 \n", + "31 245.949348 5970693132 4.366394 7.410304 \n", + "32 245.949348 5970693132 5.216475 7.408113 \n", + "33 78.376377 71264722 1.849954 24.699830 \n", + "34 78.376377 71264722 1.911352 24.699799 \n", + "35 78.376377 71264722 2.000162 24.699810 \n", + "36 38.116547 22202359 1.142700 5.997903 \n", + "37 38.116547 22202359 1.111242 5.997903 \n", + "38 38.116547 22202359 1.614922 5.997903 \n", + "39 76.495710 48717778 0.861063 6.922305 \n", + "40 76.495710 48717778 1.005608 6.922305 \n", + "41 76.495710 48717778 1.114730 6.922305 \n", + "42 255.830169 134032310 0.979349 6.653412 \n", + "43 255.830169 134032310 0.957941 6.653412 \n", + "44 255.830169 134032310 0.989631 6.653412 \n", + "45 209.249324 5899340019 0.860161 0.000033 \n", + "46 209.249324 5899340019 0.900358 0.000033 \n", + "47 209.249324 5899340019 0.789521 0.000033 \n", + "48 157.944986 37635956 1.182964 29.236221 \n", + "49 157.944986 37635956 1.207831 29.236221 \n", + "50 157.944986 37635956 1.195486 29.236221 \n", + "51 36.768406 9533719 1.175707 9.862487 \n", + "52 36.768406 9533719 1.102089 9.862487 \n", + "53 36.768406 9533719 1.121939 9.862487 \n", + "54 66.344004 20966038 1.148920 9.928873 \n", + "55 66.344004 20966038 1.143139 9.928873 \n", + "56 66.344004 20966038 1.101584 9.928873 \n", + "57 239.018332 57850630 1.068034 10.036361 \n", + "58 239.018332 57850630 1.030803 10.036361 \n", + "59 239.018332 57850630 0.927078 10.036361 \n", + "60 72.045441 23339653 1.003605 11.487502 \n", + "61 72.045441 23339653 0.998873 11.487502 \n", + "62 72.045441 23339653 0.977744 11.487502 " ] }, - "execution_count": 170, + "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "smart_pruning_compare_duration = merge_compare(storage_baseline, smart_pruning, metric=\"duration\")\n", - "smart_pruning_compare_duration.sort_values(by=[\"algorithm\", \"dataset\", \"storage_format\"])" + "dg_pruning_compare = pd.merge(dg_pruning, baseline_stats_copy, on=[\"algorithm\", \"dataset\"], suffixes=(\"_dgpruning\", \"_baseline\"))\n", + "dg_pruning_compare[\"overhead_duration\"] = dg_pruning_compare[\"duration_dgpruning\"] / dg_pruning_compare[\"duration_baseline\"]\n", + "dg_pruning_compare[\"overhead_size\"] = dg_pruning_compare[\"size_dgpruning\"] / dg_pruning_compare[\"size_baseline\"]\n", + "dg_pruning_compare = dg_pruning_compare[~(dg_pruning_compare[\"duration_dgpruning\"] > 1300)]\n", + "dg_pruning_compare" + ] + }, + { + "cell_type": "markdown", + "id": "8d32a584", + "metadata": {}, + "source": [ + "## Duration" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "c4858b38", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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SdLYsWP14osvpntcYGCgunTpIklau3atvL29U+0PDg7WypUrtXfvXoWGhio+Pl4FCxZU1apV9fTTT6tHjx5ycXF5YN0XL17UihUrtHv3bp07d04xMTHKnz+/nnjiCbVq1Uq9e/dWoUKFMnsbAADIsQIDA/Xzzz9rz549Cg8PV3x8vIoUKaIqVaqoVatWev755+/72bllyxatW7dOf/31l/755x8ZjUYVLVpUderUUYcOHR44p1BCQoJWrVqljRs36tSpU7p+/brc3NxUokQJ+fr6qmvXrqpdu3a657Zp00YXL15Md5+jo6NcXV3l6ekpX19fvfLKKypXrlzmbwwAAHkAc74Bj4GtW7fqjTfekCTt2bNHRYoUSXNMXFycfHx8FB8fL0lq1aqVvvvuu3Svt3DhQk2ePFnFixe3hHXSnY771KlTtWjRIpnNZjk4OKhUqVIqVKiQLl26pKioKElSmTJl9OWXX+rJJ59M9/omk0lz5szR119/raSkJBkMBhUvXlzFixdXeHi4/vnnH0mSh4eHPvvsM7Vs2fKh7w0AANntq6++0qxZs2QymeTu7q7y5cvLyclJV69e1aVLlyRJnp6e8vf3V82aNVOdGxcXpyFDhmjbtm2SpOLFi6tUqVIym80KCwuzfPY+9dRTmjVrVrp/tDp//rxef/11hYaGymAwqFy5cvLw8FB8fLxCQkIUFxcng8GgPn36aNy4cTIYDKnOTwnfPD095enpmWpfcnKybt26pfPnzyspKUnOzs6aOXOm2rRpY6vbBwBAjsfIN+Ax0LBhQzk5OSkxMVGHDx9OdzWaffv2KT4+Xk888YROnz6tffv2KSEhQc7OzmmOPXDggCSpadOmlm1xcXF66aWXdPToURUoUECDBg1S37595e7ubjnmzz//1NSpU3XixAm98sorWrp0qapVq5bq2mazWX5+ftq8ebOcnZ31xhtv6NVXX00VGP7999+aOnWq9uzZozfffFNz5sxRs2bNrL5PAAA8aitXrpS/v7/c3Nz06aefqn379nJwcLDsP3PmjMaMGaO//vpLAwYM0Pr161N9Jo4fP17btm1TpUqVNHXq1FSj08xms3bu3KlRo0bp4MGD8vPz06JFi1K1n5CQoIEDByo0NFRt27bV+PHjVbJkScv++Ph4rVixQp988omWLFkiDw8PDRkyJN330qNHD73zzjvp7rtw4YLefvttBQYG6oMPPtDvv/+e7h8DAQDIi5jzDXgM5M+f39IZP3ToULrHpIxg69Kli8qXL6+YmBhLyHav9MK3Tz75REePHlWhQoU0f/58DRo0KFXwJkmNGjXSjz/+qMqVKysmJkajRo2SyWRKdczcuXMtwds333yjd999N03nvEaNGvr+++/l6+ur5ORkjR49WjExMVm4IwAA5AyzZ8+WJI0cOVLPPPNMquBNkipXrqxZs2apaNGiun79uhYuXGjZd/HiRa1du1aS9M0336R5LNRgMKh58+aaMWOGJGn//v3as2dPqmN+++03hYSEqHTp0vryyy9TBW+SlC9fPr344ot66623JEk//PCDoqOjs/w+y5Urp2nTpkmSbt68qYCAgCxfAwCA3IrwDXhMNGnSRFLG4duOHTskSY0bN1bz5s1TbbvbmTNnFBkZKYPBYAnf/vrrL/3000+SpOHDh6tWrVoZ1pE/f36NGjVKknTy5MlUvwRcuXJFX331lSTplVdeue/jpI6OjpZHXyIiIrRu3boMjwUAICe6ceOGzp8/L0mqU6dOhscVKVJE7dq1kyQdPXrUsv3vv/+2PKpauXLlDM/38fFRxYoVJUlHjhxJte/YsWOSpGrVqqU72j1Fz549JUkxMTEKCgq6z7vKWJUqVSx1/PXXXw91DQAAciMeOwUeE40bN9Y333yj48ePp3mc9OLFizp79qw8PDxUs2ZNhYeHa/HixdqxY4c++OCDVNfZv3+/JMnb21tFixaVJC1fvlzSnTnYnn/++QfW0rx5c02aNEm1a9dW1apVLdtXrlypxMREOTg46LXXXnvgdZ544glNnTpVFStWVI0aNR58EwAAyEEcHf/XFd+yZct9P8veeecdvfzyy5bPXklycnKSJEVHR+vAgQNq0KBBhufPmTNHZrNZxYsXT7U95RpHjhzR9evX5eHhke75JUuWVEBAgNzd3dOMjsuKAgUKSJJu37790NcAACC3YeQb8JioU6eO3NzclJCQoOPHj6falzLCrWnTpjIajWrUqJGcnJwUHBysK1eupDo2JXy7+5HTlNFrPj4+lk78/RgMBvXs2VPVqlWT0fi/H0Mp16levXqm54F57rnn9OSTT6b6BQYAgNwgf/78ql+/viTp66+/1qhRo7R//34lJyenObZ48eJ64oknUoVj9evXl5ubmyRp0KBBmjFjhk6fPp1uWxUqVFDFihWVP3/+VNtTRrtHRkaqZ8+eWrx4sa5evZruNapXr65y5crdd4Tc/ZjNZstIv3sXZgAAIC8jfAMeE05OTpa/iN/76GnKfG8pixa4u7tbHn+599HTlPneUo6NjY21rMR27+IJWXX27FmbXAcAgNxi7NixcnNzk9ls1urVq/Xiiy/Kx8dHgwYN0pw5c3TkyJE086OmKFiwoEaPHi3pzkiy2bNn69lnn1WLFi00YsQILV26VCEhIfdtv0mTJurcubOkO4siTJw4Uc2bN1enTp00YcIE/frrr7p27ZpN3uuqVat048YNSXdWVQcA4HFB+AY8RtKb9y0pKcky4uzu0WwpX98dvl24cEFXrlyRi4uLJci7efOmZb+1q5aldMhZ/QwA8LioUaOGVqxYoaeeesqyLTo6Wtu2bdP06dPVq1cvNWvWTDNmzFBsbGya83v16qVZs2apTJkylm3h4eFat26dJkyYoA4dOqhjx45atWqVzGZzujV89tlnGjFihGVUnNlsVnBwsJYuXap3331XTZs21UsvvaSDBw9m+f0lJibqwoULmjdvniZNmiRJqlevXrorrwO4v4yC+Jwut9YtKcOfm0BWGcx8NwGPjcDAQHXp0kVFihSxBG779+/Xiy++KG9vb8uKadKdCZ179uypQoUK6c8//5TRaNSqVas0evRoNWvWTPPmzZN0J3xr2LChpDt/vX/xxRcfur4GDRro1q1beu2119LMNQcAQF538uRJbdy4Ubt27dLx48eVmJiYan/58uX1448/qlSpUmnOTU5O1p9//qktW7Zoz5496T5+2rp1a3311VcZPjZ6+/Ztbd68Wdu2bdPevXsVERGRar/BYNCwYcM0ePDgVNvbtGmjixcvZuo91qtXT1999ZVKlCiRqeMBpPbdtoW6dCM8u8vItNKFSuqNli8/0ja9vb0l3fk9p2DBgg91jaioKM2cOVN169ZVly5dbFlerpDye19mLFy4UL6+vla199tvv2nJkiX6+++/ZTabVbFiRfXo0UM9e/bM8lQHZrNZc+fO1YoVK3T58mXlz59fb775pgIDA7V69WqNHj1ar776qlX1PgwmSQIeIymLJERGRurcuXPy8vKyjGxLeYw0Ra1atVS4cGFFRUUpMDBQNWrUSHe+t4IFCypfvnyKj4/X9evXraqvePHiunXrltXXAQAgN6pevbqqV6+ud955R7GxsTp06JB27typNWvWKDIyUufPn9fQoUMtK4zfzcHBQU2bNrV8Rl+7dk179+7V1q1btX79eiUkJGjLli36+uuvNWLEiHTbz58/vzp37mx5DDU0NFR79uzRhg0btGvXLpnNZs2YMUM1atRQixYt0pzv6emZZi43JycnFShQQJUqVVKTJk3UuHFja28T8Fi7dCNcoZFh2V1Gnjd27Fht2LBBtWvXzu5SskX58uUtnwXpCQoK0qlTp1SoUCGVK1fOqrbGjx+vZcuWSbrz+2qZMmUUGBioiRMnav369fr2229VqFChTF9vzZo1mj59uhwdHdWoUSPlz59f3t7eCgwMtKpOaxG+AY8Rg8GgRo0a6ddff9WhQ4fk5eWVZr63FEajUY0bN9Zvv/2mvXv3qkaNGpb53u4O3yTJy8tLgYGBCg4OznQtZ86cUalSpVJN/Ozl5aWzZ88qKCgo09e5cOGCChQooMKFC2f6HAAAcjpXV1dLmDZ06FCNGTNGv/76q/766y+dOHFCNWvWvO/5RYoU0f/93//p//7v/zRs2DANGjRIQUFBWrJkid59910ZDIYH1lChQgVVqFBBL7zwgvbt26c333xT0dHRWrJkSbrhW48ePfTOO+889HsGgJwivYVvHicNGjTIcAXt8PBwdevWTQ4ODpo5c6ZKly790O2sWbNGy5Ytk7Ozs7744gu1b99e0p0pCz777DP9+OOPmjRpkj7//PNMXzNliqUXX3wx1ei9NWvWPHSdtsCcb8BjJuUvzkeOHNH169f1999/y9XVNd0frikh24EDBxQREaHz58+rePHilqHcKVLmbdm7d2+mP6jeeust+fj4aMaMGWmuc/LkyUyPfpswYYIaNWqkkSNHZup4AAByinHjxunpp5/WrFmz7nuci4uLJk6caFlR/Ny5c0pOTlbPnj3VunVr7d27977ne3p6WqZziI6OtqxmeuLECT333HNq2bKl4uPj73sNHx8f9evXz9I+AODxYzabNWLECEVGRmrw4MFWj2ZeunSpJGnw4MGW4E26M2p61KhRqly5stauXatTp05l+poJCQmSct6q2oRvwGMm5QfksWPHdPDgQZnNZjVs2DDdZ+lTRsOdPHnSMsnyvaPeJKljx44yGo2KiorS8uXLH1jD7t27FRISoqSkJNWqVcuyvU2b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i9atW8tkMmn27Nk24/TFxMRo6NChMgxDr732mnx9fe12zNWrV2v+/PnW79PS0jRu3DhFRUWpRo0a2U50kVc8dgoAAAAAAFxCaGioIiIitGDBAj3zzDNq0qSJ3N3dtX37dgUEBKhEiRI6f/68pJt3kdWqVUv79+9Xx44d1bBhQ/n4+Ojw4cOKjo5W2bJldfHiRSUlJenSpUsqWrSoJKlSpUqSpMmTJ2vXrl3q2LGjWrdurbZt22r16tV6+eWXFRISoqJFi+rEiRM6cuSI/P39FRAQoHPnzun8+fMqWbKkJGnChAnq1q2b5s+fr99//121a9dWQkKCdu3apQoVKigqKspm7LYCBQroiy++UJ8+fTRt2jQtWrRI1atXV1pamsLDw3Xjxg3VqVNHw4cPvyvn2/I4ZlaPheZVrVq11Lt3b82cOVNPP/20GjZsKEnasWOHbty4oU6dOumVV16x6zHr1aun0aNH68cff1SFChV04MABnT59WqVKldKkSZNyPG5ebhG+AQAAAADgAsoUKensEnLFUfWOGzdODRs21Lx58xQRESEvLy+1atVKw4cP14svvmht5+7urtmzZ2vGjBlavXq1wsPD5e7urvLly+v1119Xz549NXz4cK1bt06rV6+2jrH2yiuv6MSJE9q4caPCwsJUuXJltW7dWhMnTtScOXO0fPly7d+/X2azWWXKlFHPnj3Vq1cvzZgxQ3PnztXq1atVo0YNSVKFChW0aNEiTZkyRRs3btT69esVGBioAQMGqFmzZurWrZv8/PxsXl/t2rW1fPlyzZo1S5s2bdLWrVvl6+uroKAg61hwlrvzHCklJUVXr16VlP1Mqnk1dOhQlS9fXj/++KO2b9+uggULqk6dOurataueeuopu4dhr732muLi4jRnzhytW7dOxYoVU7du3TRw4ECVKFHCrsfKyGTkZk7dfO7w4cOSpODgYCdXAgAAbkU/DQDAnctqggFX4Kp128PVq1d15swZlS1bVoUKFcq0/r///a/efPNNdejQQRMnTnRChbhb7ql/ASkpKUpMTLQ+X407c+PGDe3atYvzmEecR/vgPNoP59I+OI93jn7aPngP2gfn0T44j/bBebSfe/lcumqA5ap128PFixfVsWNHtW3bVnFxcTbr4uLiNHnyZEnKcjII3FvuycdO09PTnV2CS7OcP85j3nAe7YPzaD+c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OlrXrl1TwYIFnVeYCxg1apQuXLigOXPmqHDhws4ux2VZLurr16+vL774whoapaSk6MMPP9QPP/ygN998U2vWrJGfn58zS81X6KfhKuin84Z++s7RT9sH/TQAV+Cyj526u7vnqJ1hGA6uBMjehg0b1K9fP6WkpKhbt27cuXAHvLy8tHnzZu3evVtz5sxRhQoV9MMPP6hv3778+76NH374QRs2bFCvXr3UqFEjZ5fj0saPH6+VK1dq5syZ1gt66eZ785133lG1atWUkJCg5cuXO7HK/Id+Gq6Afjrv6KfvDP20/dBPA3AFLhu+WT5Ju3HjRpbrk5OTJYmp4uE03333nQYOHKjk5GS99NJLeu+995xdkkvy8vJSQECAChYsqCZNmujbb79VQECAIiIitGnTJmeXly8dPXpUH330kWrUqKHBgwc7uxyX5+XlpUqVKmX5abm7u7see+wxSdL+/fvvcmX5G/008jv6afugn849+mn7op8G4Apc9rHTwMBAXbp0SefOnctyYFzLGDKBgYF3uzTc59LS0jR27Fj9/PPPMplMGjp0qPr27evssu4Z/v7+atGihRYuXKgDBw5YL6jwP59++qlu3Lghb29vjRw50mad5dGM+fPna+vWrWrYsKGef/55Z5R5z7D0QZbHLHET/TTyK/ppx6Kf/nv003cX/TSA/MBlw7fg4GAdOXJER48eVe3atTOtP3bsmLUdcLckJydr4MCB2rx5s7y9vfXRRx/pySefdHZZLiUlJUWffvqpYmNj9cknn6hAgQKZ2nh5eUm6+QcUMrOMobVr1y7t2rUryzZ79uzRnj175OHhwUX9baSkpGjcuHG6cOGCxo4dq+LFi2dqExMTI4kZEm9FP438iH467+in845+2n7opwG4Cpd97NTyKdrq1aszrbt48aJ27NihAgUKqGnTpne5Mtyv0tPTrRf0xYoV03fffccF/R3w8vLSypUrtWrVKm3YsCHT+pSUFG3dulWSVKtWrbtdnkv47rvvdPjw4Sz/a9WqlSRpwoQJOnz4sD788EMnV5u/WcYyWrt2rdatW5dpfUpKin777TdJUvPmze92efka/TTyG/pp+6Cfzjv6afuhnwbgKlw2fGvdurXKli2rjRs36qeffrIuT05O1jvvvKOkpCR16dJFxYoVc2KVuJ9MmzZNmzdvlq+vr+bOnZvlnR7ImW7d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db9ms9l4/vnnjaCgIKNr165GZGSkdd2VK1eMkSNHGkFBQUbjxo2N+Ph467oTJ04YNWrUMIKCgoypU6daj2UYhnHx4kVj8ODBRlBQkFGjRg3j0qVL1nXR0dFGzZo1jaCgIGPChAnW15GWlmZ89dVX1hqDgoKMqKioHP1s7nSfixYtMoKCgoxHH300y/1mPKenTp3K8c/i0qVLRsOGDY2goCDj/fffN5KSkqzbXrt2zfj3v/9t3f7IkSM2x3zxxReNoKAgY9KkSTbLt2/fbt0mNTXVunzlypXW5Z9//rm1FsMwjG3bthnNmjUzgoKCjH79+mV5nKCgIKNv375GXFycdd3atWuNatWqGUFBQca3336b/Ym/xaxZs4ygoCDjtddey7TObDYbrVu3NoKCgox58+ZlWh8fH29Uq1bNCA4ONk6ePGkYhmFs2rTJCAoKMpo0aWIcOnTI2jYtLc2YPn26ERQUZFSrVs2IiYnJcY3Zefvtt63no02bNsbhw4et6/bu3Ws8/PDDRlBQkDFs2LAst2vTpo1x4sQJm3VhYWFGnTp1jKCgIOPDDz+0Lj927JgRFBRk1KpVy9i+fbvNNkuWLDGqVq1qBAUFGXv27LEuz+vvjRdeeMFmecuWLY2goCBj/vz51mUZ32N169Y1li9fbl135coVo0ePHkZQUJDRqFEjm/fgndaWkeW907dv32zb4P5BP00/bUE/TT9tQT9NPw0AOcFjp/nIxYsXJSnLT/Rup3jx4tavLbf5h4SEqGLFikpJScny0Q3LJ4QZP02fNWuWLl26pMcff1z//ve/VbhwYeu6ChUqaOrUqfLz81NERIQ2bdqUZS1vv/22vLy8JEnFihXLtP4f//iHevbsKU9PT0mSp6en3n77besnoxEREda269at0549exQYGKivv/5alStXtq4rVKiQxo8frzp16ujixYvWTwAlacuWLXJ3d1eNGjXUv39/67Gkm+f27bfflnTz07mMs4LNmjVLKSkpatSokUaMGGF9He7u7urbt6/NucopR+wzp7L6WURERCg1NVUBAQF699135ePjY23v6+urESNGWM/XkSNH8nT8zz77TJL0/PPPa/DgwdZaJKlJkyaaPHmyJGn9+vU2P3eL4sWL64svvrCZTatVq1bWR3x2796d41p27NghSQoKCsq0zmQyqVOnTpJu3v1wq19++cU6o2GFChUk3fyEXpL1sTELd3d3vfbaa3ryySfVoUMHXb58Occ1/h13d3dNmzbN5jXUqVNHn3zyiSRpxYoVOnPmjKSb7+3w8HCZTCaNHDky090Pjz76qNq1ayfJ9ud8+PBhSVKlSpXUuHFjm21CQ0PVtWtXdejQQSkpKdbl9vi9kRtvvPGGnn76aev3hQoV0rBhwyRJly5dyvRvOq+1Wc73zp07s3z8CvcX+mn6aXuin/4f+ukHbPZFP00/DeDeQ/iWj1jGNMh4EZoTGcecMTKMTZLdhcpff/2lI0eOyNfXV08++aR1uWUshmeeeSbL45QoUUIPP/ywJGU5VkZAQIDKly9/21rbtm2baZm3t7cqVqwoSTZjhFjqad26tXx9fTNtZzKZrLVmrKd79+7at2+f5s2bl2UN3t7e1q+vX79u/Xrjxo2SlO2F9q23yeeEI/aZE9n9LFq1aqU9e/Zo7dq18vDI/NT5jRs3rH9UZjw3uRUVFWW9uMruEYB69epZx0Fat25dpvVNmzZVgQIFMi23zNZ29erVHNdjGW/HclF+q06dOsnNzU179uyxGZtHknWA9Iw/Q8tF8qZNm/TVV18pJibGZpv//Oc/+vjjj20u+POqadOmWc5U17RpU5UrV05ms1m///67pJu/Q9atW6d9+/bpsccey7SNYRjWf1PJycnW5ZZ/h4cOHdJHH32kqKgom+3ee+89TZw40eYxrLz+3sitli1bZlqW8bxcuXLFrrVVqlRJ0s0xuu5kDCPcW+in6afthX7aFv20LfrpnNdGPw3AVTDmWz5iuZjK7adwlk/iJdtPsTt16qQvvvhC4eHhio2NtY4XYfk0/YknnlDBggUlSdeuXbN+Gjd16lTNnTs3y2NZ2hw/fjzTuoyffGanZMmSWS631JHxAsPySd+GDRusn2DeytKBR0VFyTAMmUwm6zpPT0/98ccfOnLkiE6dOqXo6GgdOXLEpnbLH0HJycnWC7OHHnooy2NVrVpVJpMpxwM6O2KfOfV3Pwtvb2/rOCSWc3Ps2DEdPXpUqampkpSnmizn2MfHJ8sLUYuaNWtqz549Np+CWmT3XrH8UZbVoNHZuXDhgiTZfKKaUenSpdWsWTNt3rxZK1assA7qfPjwYR06dEi+vr564oknrO0ff/xxNWrUSDt37tSkSZM0adIkVa5cWc2aNdOjjz6a7R8keVG9evVs11kG9I6MjLRZXqBAAZ0/f1779u1TVFSUTp8+rePHj+uvv/6y/p7JODBzjRo19PTTT2vFihX65ptv9M0336hs2bJq2rSpHnnkET366KM24/fY4/dGbmX1vsj4h7rlU2971ZbxPXPhwoU8j4cD10Y/TT9tL/TTtuin6afppwHc6wjf8pGqVavqt99+U3R0tK5fv27zqMHt/PXXX9avM97qXqpUKZsLlT59+ig9PV2//PKLJNtPCBMTE61f5+Qxhqw+zczJRUxuLnQsNcXExGT6xPJW6enpunbtmvWCY8mSJZo4caLOnTtn065cuXL6xz/+ofnz59ssz/iHVFaf3ks3B3X18fFRUlJSjup3xD5z6nbnedOmTRo/frxOnjxpszwwMFBPPvmkwsLC8vwYhuVn93cDLWf8o/JWub2z5HYsf/xlvPi7VefOnTNd1Fv+AH7yySettUqSh4eHZs2apR9++EGLFy+2/rF4/Phxff/99/Lz81Pv3r3Vr18/mz808yLj8bNbl/GP4nPnzmnMmDFav369zYW7j4+PatWqpfT0dO3atSvTvj755BM1adJECxYs0L59+3TmzBktXLhQCxcuVIECBdSlSxcNHz5cXl5edvm9kVt/976w/DFqr9oy/h7O+Gk97k/007bop+8c/bQt+mn66b9DPw3A1RG+5SOPPfaYJk2apNTUVG3cuFFPPfVUjraz3LJdo0YNlShRwmbds88+a3NRv3XrVp07d07ly5dXw4YNre0ydlwrVqzIcsyNu81S0+jRo/Xiiy/meLslS5ZoxIgRkm6OmdGmTRs99NBDqlKliooUKaLU1NRMF/UZx+/JeDGQkWEYNmNo/B177DO7T7Xv9FGT7du3q1+/fjKbzapbt66efvppBQUFqUqVKtYxiXIzg192LBeZ2b1uC8tF0u0uWO2hQIECSkpKuu1FZevWrVW4cGFFRkbqzz//VNWqVa1/AFseDcvIy8tLPXv2VM+ePRUbG6vt27drx44dCgsL0/nz5/X555/L29tbPXv2tMtruN0ffpbXZfn098aNG+rRo4ciIyNVtGhRde3aVTVr1lSVKlVUoUIFubu767PPPsvyot5kMukf//iH/vGPfyghIUE7duzQzp07tWnTJp05c0bfffedJGUaiyi//N6wsFdtGS/kb/dHIe4P9NO26Kfpp+2Ffpp+mn4awL2O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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ax = sns.catplot(\n", + " dg_pruning_compare,\n", + " x=\"overhead_duration\",\n", + " col=\"algorithm\",\n", + " hue=\"dataset\",\n", + " kind=\"bar\",\n", + " col_order=[\"BFS\", \"PageRank\", \"WCC\", \"SSSP\"],\n", + " legend_out=True,\n", + " errorbar=\"sd\",\n", + " capsize=0.2,\n", + " col_wrap=2,\n", + ")\n", + "\n", + "ax.set_axis_labels(\"Overhead duration (vs. baseline)\", \"Dataset\")\n", + "ax.set_titles(\"{col_name}\")\n", + "\n", + "ax.savefig(plot_location(\"es05-overhead-duration.pdf\"), dpi=\"figure\")" + ] + }, + { + "cell_type": "markdown", + "id": "c66466d4", + "metadata": {}, + "source": [ + "## Size" ] }, { "cell_type": "code", - "execution_count": 172, - "id": "5418a3e7-505e-40c4-be17-70b5874c0a8e", + "execution_count": 49, + "id": "567be32c", "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAApgAAAHDCAYAAACAkGpgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABpsElEQVR4nO3dd1QU198G8GdZOijFgoKIiC4WLNjF2Fs0mmDvBqOxRI0ao7G3WGISjV1jYu+Kilhi7x0UwYKICoiAiHREWMq8f/ju/lhZEJbBBXw+53gSpn7nsrs8e2fmjkQQBAFERERERCLR0XYBRERERFSyMGASERERkagYMImIiIhIVAyYRERERCQqBkwiIiIiEhUDJhERERGJigGTiIiIiETFgElEREREotLVdgH0efLx8YEgCNDT09N2KURERJRHaWlpkEgkcHZ2znU59mCSVgiCoPxHuRMEAXK5nG2VR2yvvGNb5Q/bK+/YVvlTnNorr3+72YNJWqGnpwe5XI5q1arB2NhY2+UUacnJyfD392db5RHbK+/YVvnD9so7tlX+FKf2un//fp6WYw8mEREREYmKAZOIiIiIRMWASURERESiYsAkIiIiIlExYBIRERGRqBgwiYiIiEhUHKaIiIiIRBMZGYlXr14hNDQUurq6MDQ01HZJRV5KSopKe5mbm8PKykrbZRUIAyYRERGJIjIyEoMGDYZcnqrtUoo1fX0D7Nq1s1iHTAZMIiIiEkVcXBzk8lSkOLSBYGSu7XI+Kcm7OBg+u1jgY5e8iwOeXURcXBwDJhEREZGCYGSOTJOy2i7jk1Lc1FLQYy8pN8eUlOMgIiIioiKCAZOIiIiIRMWASURERESiYsAkIiIiIlExYBIRERGRqBgwiYiIiEhUDJhEREREJCoGTCIiIiISFQMmEREREYmKAZOIiIiIRMWASURERESiYsAkIiIiIlExYBIRERGRqBgwiYiIiEhUDJhEREQii4uL03YJ9JnT9muQAZOIiEhE4eHhcHV1RXh4uLZLoc9UUXgNMmASERGJKDExEZmZmUhMTNR2KfSZKgqvQQZMIiIiIhIVAyYRERERiYoBk4iIiIhExYBJRERERKJiwCQiIiIiUTFgEhEREZGoGDCJiIiISFQMmEREREQkKgZMIiIiIhKVrrYL+Jhbt25h6NChaudJpVIYGRnB2toazZo1w7Bhw2Btbf2JK8y/IUOG4Pbt2znONzAwQNmyZeHk5ITvvvsO9evX/3TFZeHo6AgA8PLyQunSpbVSAxERERU/RT5gKhgbG6N9+/Yq0zIzM/H27Vvcu3cP27dvx5EjR7B161bUqlVLS1Xmj7OzMypVqqQyTRAEvH79Gv7+/jh16hROnz6Nv/76C126dNFSlURERET5U2wCpoWFBf7880+185KTkzFq1Cjcvn0bs2bNwqFDhz5xdZrp27cvevbsqXZeYmIiZsyYgdOnT2P+/Plo06YNjIyMPnGFRERERPlXIq7BNDY2xsyZMwEADx8+RGhoqJYrKrhSpUph8eLF0NHRQWxsLO7evavtkoiIiIjypNj0YH6MnZ2d8v/fvHkDW1tbAMClS5dw4MAB+Pn5ISYmBnp6erC2tkabNm0wcuRImJmZZduWh4cHdu/ejWfPnkFHRweNGjXChAkTsGPHDri7u2P79u1o2rSpcnlBEHDkyBG4u7vD398faWlpqFy5Mrp06YJhw4bB2NhYo2MqVaoUzMzMEBsbi7i4OJV5crkc7u7uOHnyJJ48eYLExEQYGRnBwcEB3bt3x8CBA6Gj87/vD4rrPi9duoRr164pj09XVxf169fHqFGj0Lhx44/WlJmZiSlTpuDYsWOQyWTYunUrypQpo9HxERERUclUYgLmkydPlP+vuNHnzz//xD///ANdXV00aNAAzs7OiIqKwr179/D06VNcuXIFBw8ehJ6ennLd6dOn49ChQ9DX10eTJk2gp6eHW7duoX///iohViEjIwOTJk3CqVOnYGRkhDp16sDMzAx3797FqlWrcPr0aWzduhUWFhb5PqZ79+4hNjYWwP9uuAHeh8thw4bB29sbpUuXRv369WFoaIiQkBDcu3cP9+7dQ2BgIObPn59tm4sXL8apU6dQo0YNtGzZEv7+/rhy5Qpu3LiBLVu2oEmTJjnWk5mZienTp+PYsWOoUaMGtmzZAktLy3wfFxEREZVsJSJgxsTEYMGCBQCA5s2bw8rKCo8fP8a///6L0qVLY+/evXBwcFAu/+zZM/Tt2xcBAQG4fv06WrduDQDw9PTEoUOHYGNjgy1btigDZXR0NEaNGoX79+9n2/fff/+NU6dOoXbt2lizZo0y3KakpGDmzJk4duwY5syZg9WrV+fpWORyOWJiYnDjxg0sW7YMAPDVV1+hWrVqymX27dsHb29vODk5Yfv27TAxMVHOO3r0KH7++We4u7tjypQpMDU1Vdn++fPnsXbtWnTo0AHA+4A8ceJEnD59Ghs3bswxYAqCgNmzZ8PDwwO1atXCli1bYG5unqdjIiIios9LsQmYsbGx+Pnnn1WmZWRkICoqCr6+vpDL5ahQoQIWLlwIAIiLi0Pnzp3h7OysEi4BwMHBAc2aNcPZs2cRFhamnL5lyxYAwLx581R6K8uUKYPly5ejc+fOyMzMVE6Xy+XYunUrAGDZsmUqQyQZGhri119/xfXr13HmzBkEBwejSpUqKnVMnz4d06dPz/GYdXV1MXDgQEybNi3b9LZt28LNzU0lXAJA9+7dsWDBAiQkJCAyMjJbwPzmm2+U4RJ4P9TT0KFDcfr0aQQGBuZYy7x58+Du7g4nJyds3rxZ7aUFRET0PyEhIdou4ZP7HI+5sBSkLYvC76HYBMzk5GQcPXpUZZquri5MTU1Ru3ZttGzZEoMGDVL2qjVr1gzNmjVTWT4jIwNhYWF49OgRXr58CQBIS0sD8L4X9NGjRzAxMcEXX3yRbf+VK1dGnTp14Ovrq5z26NEjxMfHw9raGvb29tnWMTY2RpMmTXDy5EncunUrW8DMOkxReno6/Pz8EBYWBj09PUyYMAG9evVSewp6wIABGDBggMq01NRUBAUF4f79+8oQrDi2D/f5ofLlywMA3r17l20e8P60+uHDhyGVSrFu3TqGSyKiPFB0eBBpori/fopNwLSxscH58+fztY5cLsfx48dx6tQpPHv2DOHh4UhPTwcASCQSAO9P/QJAeHg4AKBixYoqN8dkValSJZWAqVgnPDxc5RpJdRTLZvXhMEUZGRlYt24d1qxZg3Xr1qF27dpwcXFRu73Y2Fjs378f165dQ1BQEKKiopTH8uGxZaUuHEqlUgBQ6Z3N6vDhw9DV1UV6ejo2bNiAuXPn5nqsREQEzJo1S+21+yVZSEhIsQ9GRUVBXj9F4fdQbAJmfkVHR2PIkCF49uwZDAwM4OTkhObNm8PBwQHOzs7YuXMnjhw5olxeETwzMjJy3OaHgU3xs5WVVa43xwBA1apVP1qzVCrF+PHjERERgYMHD2Ls2LE4cOCAyvWXAHDnzh2MHDkSSUlJMDc3h5OTE7p06QKZTIYmTZrg22+/VRtogf+Fz/xwdnbGrFmzMHDgQOzZswddunT56PESEX3u7OzsPtr5QJST4v76KbEBc/ny5Xj27BmaN2+OlStXZuu5S0hIUPm5YsWKAIDIyEhkZmaq7cWMiIhQ+blcuXIA3t+1ntMg8JqYPXs2vL29ERISgkmTJuHgwYPQ19cH8D7UTp8+HUlJSRg+fDgmT56s7IHM6dgKavXq1ShXrhzGjRuHZcuWYebMmfD09OTA70RERKRWiRhoXR3FwORubm7ZwmVSUhJ8fHwAqPZCOjg4IDk5GdeuXcu2vVevXmW7i7xOnTowMjLCgwcPEBkZmW0dQRAwZMgQ9O3bN9dnj3/IyMgIixYtgkQiwZMnT7Bx40blvOjoaOXFu+PGjcsWLu/cuYOkpCQAOZ/yzi8DAwMAwHfffYcaNWrgxYsXyjvciYiIiD5UYgOmYtzJc+fOqZzajomJwYQJE5QDl6empirnfffddwCA+fPnqzwNKCEhAVOmTMl2/aaRkREGDBiAtLQ0jB8/XmWdjIwM/PHHH7h9+zZCQkLg5OSUr/obN26MPn36AHg/FNKzZ88AAKampspxO8+cOaOyjr+/P6ZOnar8OeuxiUFXVxcLFy6EVCrFzp074e3tLer2iYiIqGQosafIv/vuO9y9exf79++Ht7c3qlevjri4OPj4+EAul6N69eoIDAzEmzdvlOv06tULV69exX///YevvvoKTZo0gYGBAby8vJCZmQlLS0vExMRAV/d/zTZp0iQEBATg2rVr+Oqrr+Dk5ARLS0s8fPgQ4eHhMDQ0xKpVqzR6ms+UKVNw4cIFREVFYe7cudixYwcMDQ0xePBgbNmyBVOnTsWePXtQvnx5hIWF4cGDBzAyMkKlSpXw8uVLlWMTS506dTBkyBBs3boVM2bMgKenJwwNDUXfDxERERVfJbYHs0OHDti2bRuaN2+O+Ph4nD9/Hs+fP0fLli2xbds2/PHHHwCAs2fPKk8lSyQSLFu2DHPmzEHVqlXh5eWFW7duoWnTpti/fz/Kli0L4P0jHBX09fXxzz//4Ndff4WTkxMCAgJw+fJl6Ovro2/fvjhy5IjKYyXzo3Tp0spnrHt5eWH//v0AgKlTp2LhwoWoXbs2AgMDcf78ecTHxyv3N2TIEADAqVOnNGu8j5gwYQJsbGwQEhKC5cuXF8o+iIiIqPgq8j2YTZs2RUBAgMbr5hbuPtzu48ePYW5ujoEDB2LQoEEq8+RyOV69egWpVKocu1JBKpWib9++6Nu3b57q2rFjRx6PAOjSpQu6dOmiMk1HRwd9+vRRnkL/kJubG9zc3PK8z0qVKqlt45za3djYON9DRhEREdHno8T2YGri119/RevWreHu7q4yPTMzE8uXL0dCQgJatWrFu6eJiIiIclHkezA/pREjRsDHxwezZs3C9u3bYW9vD7lcjocPH+L169eoVKkS5s+fr+0yiYiIiIo0Bsws2rZtC3d3d+Ud0pcvX1aeEu/Xrx/c3NyyPdubiIiIiFQxYH6gVq1aWLx4sbbLICIiIiq2eA0mEREREYmKAZOIiIiIRMWASURERESiYsAkIiIiIlExYBIRERGRqBgwiYiIRFSqVCno6OioPFaY6FMqCq9BDlNEREQkImtra3h4eMDc3FzbpdBnqii8BtmDSUREJDKGS9I2bb8GGTCJiIiISFQMmEREREQkKgZMIiIiIhIVAyYRERERiYoBk4iIiIhExYBJRERERKJiwCQiIiIiUTFgEhEREZGoGDCJiIiISFQMmEREREQkKgZMIiIiIhIVAyYRERERiYoBk4iIiIhExYBJRERERKJiwCQiIiIiUelquwAiIiIqWSTv4j67HizJuzjlfwty7IrtFHcMmERERCQKc3Nz6OsbAM8uarsUrTEU4dj19Q1gbm5e4O1oEwMmERERicLKygq7du3Eq1evEBQUBHt7exgaGmq7rCIvJSVFpb3Mzc1hZWWl7bIKhAGTiIiIRGNlZYVSpUohPT0d1atXh7GxsbZLKvKSk5NLXHt9bpdIEBEREVEhY8AkIiIiIlExYBIRERGRqBgwiYiIiEhUDJhEREREJCoGTCIiIiISFQMmEREREYmKAZOIiIiIRMWASURERESiYsAkIiIiIlExYBIRERGRqBgwiYiIiEhUDJhEREREJCoGTCIiIiISla62CyAiIvUiIyMRFxeXr3XMzc1hZWVVOAUREeURAyYRUREUGRmJwYMGIVUuz9d6Bvr62LlrF0MmEWkVAyYRUREUFxeHVLkcY2q/hbVJhnJ6+FsdrH9oijG1k2BtkqmyTvhbKdY/fL8uAyYRaRMDJhFREWZtkgH70hlqpmeqnU5EVBTwJh8iIiIiEhUDJhERERGJigGTiIiIiETFgElEREREomLAJCIiIiJRMWASERERkagYMImIiIhIVAyYRERERCQqBkwiIiIiEhUDJhERERGJigGTiIiIiETFgElEREREomLAJCIiIiJRMWASERERkagYMImIiIhIVAyYRERaFBcXV6L3R0SfJwZMIiItCQ8Ph6urK8LDw0vk/ojo88WASUSkJYmJicjMzERiYmKJ3B8Rfb4YMImIiIhIVAyYRERERCQqBkwiIiIiEhUDJhERERGJigGTiIiIiESlW1gbDggIQGZmJqpXrw5d3ULbDREREREVMQVKfm/fvsXu3bthbm6OPn36AAAiIyMxevRoPH78GABQsWJFLF26FI0bNy54tURERERU5Gl8ivzt27fo378/li9fjsuXLyunz507F/7+/hAEAYIgIDw8HCNHjsSrV69EKZiIiIiIijaNA+auXbsQGBgICwsLtGrVCsD73stLly5BIpFg+fLluHnzJlxdXfHu3Tts3rxZtKKJiIiIqOjSOGCeO3cOOjo62LRpk/L0+MWLFyEIAmrXro2uXbvC3Nwcs2fPhpGREa5evSpa0cXV/Pnz4ejoiOnTp+e4zJw5c+Do6AhHR0ecP39e7TLp6elwdnaGo6Mj/P39VebFxMRg+/btGDx4MFq3bg0nJyc0bdoUQ4YMwa5duyCXyz9a5+3btzFjxgx069YNDRs2RN26ddGpUyfMmjUr2/6IiIiIPqRxwAwKCkLlypVRs2ZN5bRr165BIpHgiy++UE4zMTFB5cqVERERUbBKS4AWLVoAAO7cuZPjMlkvN7h06ZLaZR48eIDk5GSUK1cONWrUUE4/fvw4OnXqhEWLFiEgIAA2NjZo164dqlSpAh8fHyxYsACurq6IjIxUu92YmBiMHj0aQ4YMwcGDByEIAho3boymTZtCLpfjwIED6NmzJzZt2qTJ4RMREdFnQuObfJKTk1G5cmXlz4Ig4NatWwCAJk2aqCybmZmJjIwMTXdVYjRr1gy6uroICQlBVFQUypUrpzI/ICAAERERaNGiBW7cuIErV66o3c7t27cBAF988QUkEgkAYO/evZg7dy709PQwffp09OvXD0ZGRsp1wsPDMWPGDNy4cQNDhgyBu7s7SpcurZyflJSEAQMGIDg4GA0aNMDs2bNRq1Yt5fzMzEwcOXIEs2fPxu+//w4DAwMMHjxYtLYhIiKikkPjHkxLS0uEh4dDEAQAgK+vL+Lj42FgYIBGjRopl4uPj8eLFy9gZWVV8GqLOVNTU9SpUwcA4O3tnW2+oseyc+fOqFWrFsLCwhAYGJhtOUXAbNmyJQDg6dOnWLx4MQBg5cqVcHNzUwmXAGBtbY3169ejatWqCAkJwbZt21TmL1iwAMHBwXB2dsaWLVtUwiUA6OjooEePHpg3bx4AYMWKFUhISMhvExAREdFnQOOA2aBBA8TGxmLr1q1ISkrC+vXrIZFI4OLiAn19fQBAWloa5s+fD7lcjoYNG4pWdHGmuHxA3Wlyxenxli1bKsPjh6fJ09PTcffuXejo6MDFxQUAsGPHDqSmpqJt27Zo3759jvs2MjLCDz/8AGdnZ5WxSSMjI3Hs2DEAwMyZM2FoaJjjNnr06IFGjRrhiy++QHh4eF4OmYiIiD4zGgfM7777DlKpFL///jsaN26sDEfDhg0DAPj5+aFly5b477//oKenBzc3N1EKLu4UofDDHszExET4+PigWrVqsLa2zjFgPnz4EG/fvoWTkxMsLCyQmZmJ//77DwDQvXv3j+6/e/fu2Lt3L8aMGaOc9t9//yEjIwP29vbKHtacSKVS7Nq1CytWrFC5/pOIiIhIQeNrMOvWrYvly5djwYIFePPmDczMzPDzzz8rB1Q3MTFBXFwcLCwssHLlSoaR/1evXj2UKlUKAQEBSExMRKlSpQAAV69eRXp6unLIp/r168PMzAw+Pj5ISkqCqakpgOynx6OiohAfH69cRxPPnj0DADg7O2t8XESkuZCQkDxNK8j2CrpNIqL8KNCTfDp16oSOHTsiJiYGFhYW0NH5X4do5cqVsXbtWrRq1Qp6enoFLrSkkEqlaNq0Kc6ePYu7d++idevWAP53elwRMKVSKZo3b46TJ0/i2rVr6Ny5M4DsATPrHeEf3jSUV4ptlC1bVqP1iahgFi5cWKS3R0SUXwV+SLhEIkGZMmWyTdfT08v1esDPWYsWLXD27FncuXMHrVu3hiAIuHLlCoyNjVWuVW3VqhVOnjyJq1evonPnzsjIyMCdO3dgZmaGunXrAoBKeE9LS1Ne/5ofiusx09PTC3hkRKSJWbNmwc7OTmVaSEiIxkFR3fYKuk0iovwocMAE3l8/mJSUpLyjPCfW1tZi7K7YU4yHqbgO8+HDh4iKikK7du1UAqKil/LmzZvK5d6+fYsvv/wSUqkUgGqvZUxMDExMTPJdj2Ib0dHRGhwNERWUnZ0dHB0di+z2iIjyq0ABc//+/di4cSPCwsI+uqxEIsGjR48KsrsSw87ODpUqVcL9+/chl8uznR5XKF++PGrUqIHHjx8jPDw82+lx4P1p7YoVKyIiIgJ3796Fra1trvtOSUnBypUr0ahRI7Ro0QKGhoaoU6cO9u7dCx8fnzzVf+LECURHR8PFxQUODg75OXQiIiL6DGh8F7mHhwfmzJmDly9fQhCEj/7LzMwUs+5ir0WLFpDL5Xj8+DGuX78OIHvAzDrt3r17yoHsswZMAOjYsSMAKO8mz82pU6ewefNmTJo0CWlpaQCAdu3aQSqV4sWLF3j48OFHt7FixQosXLgQHh4eH12WiIiIPj8a92Bu374dwPuwM3LkSJQvX15lbEXKXYsWLbBv3z54eXnB19cXDg4OsLGxybZcq1atsHHjRjx8+BB3796FTCbLNmj90KFDsX//fly4cAEXL15EmzZt1O4zLi4Oa9euBQC4uroq72C3tLRE7969sW/fPixcuBDbtm3L8VrO7du3IyQkBPr6+ujfv38BWoCIiIhKKo17MJ8+fQozMzOsWbMGjRs3hp2dHWxsbHL9R//TrFkzSKVS7NmzB3K5XG3vJfB+6CBTU1OcOHECSUlJKs95V7C1tcXEiRMBAOPGjVMOvJ5VcHAwRo4ciZCQEFhbW2PSpEkq83/++WdUrFgRd+/ehZubW7YnCKWnp2Pnzp347bffAAATJkzg75SIiIjU0rjL0dDQEDY2NjAwMBCzns+GmZkZnJyc4OvrC0D96XHg/R3eLi4uOH36dK7LDRs2DBKJBEuXLsXChQuxevVq1KxZExYWFggLC8ODBw+QmZmJ6tWrY/369bCwsFBZv3Tp0ti7dy9GjRqFO3fuoFu3bnB0dETlypWRnp4OPz8/REdHQ1dXFxMnTsSIESNEbA0iIiIqSTQOmHXq1MG9e/eQlpbGcS415OLiAl9fXxgbG6s8v/1DrVq1wunTp7MNY/QhNzc3tGjRAnv37sXt27fh5+eH1NRUlCpVCk2aNEHXrl3Rs2fPHH9fFSpUwIEDB3DkyBGcOnUKjx8/xvPnz6GjowNra2t07NgRgwcPRvXq1Qt87ERERFRyaRwwR44cCTc3N/z111+YOnWqmDV9NiZOnKg8tZ2bPn36oE+fPnnaZvXq1TF79myNa9LX18/X/oiIiIg+pHHAbNq0KebOnYsFCxbgwYMHaNWqFSwtLVWe5vMhV1dXTXdHRERERMWExgEzLS0NXl5eyMzMhJeXF7y8vHJdXiKRMGASERERfQY0Dphr167F8ePHAQA6OjqwtLTktZhEREREpHnAPH78OCQSCX744Qd8//33MDQ0FLMuIiIiIiqmNA6YkZGRqFixIsaPHy9mPURERERUzGk80LqFhYXySTBERERERAoaB8w2bdrg6dOnCA0NFbMeIiIiIirmNA6Y48aNg7m5OX744Qfcv39fzJqIiIiIqBjT+BrM3bt3o0mTJvjvv//Qt29fWFhYoEKFCjAyMlK7vEQiwc6dOzUulIiIiIiKB40D5vr16yGRSAAAgiAgJiYGMTExOS6vWJaIiN4rVaoUdHR0Ptn17J96f0T0+dI4YI4bN07MOoiIPjvW1tbw8PCAubl5idwfEX2+GDCJiLToU4c9hksi+hQ0vsmHiIiIiEgdjXsws5LL5YiLi0Nqamquy9na2oqxOyIiIiIqwgoUMG/evIm//voL9+/fhyAIuS4rkUjw6NGjguyOiIiIiIoBjQPmgwcPMGLECGRkZHw0XALI0zJEREREVPxpHDA3btyI9PR0VKlSBePGjYOjoyOMjY3FrI2IiIiIiiGNA+bdu3ehp6eHTZs2wcbGRsyaiIiIiKgY0/gu8vj4eNjb2zNcEhEREZEKjQNmxYoVP3rXOBERERF9fjQOmO3atcOLFy/w4MEDMeshIiIiomJO44A5atQoWFlZYeLEifD19RWzJiIiIiIqxvJ0k8+gQYPUTtfT00NoaCj69++PsmXLwsrKCgYGBmqXlUgk2Llzp+aVEhEREVGxkKeAeefOnVznC4KAqKgoREVF5biMRCLJX2VEREREVCzlKWCOGzeusOsgIiIiohKCAZOIiIiIRKXxQOseHh4oU6YMWrZs+dFlDx06hODgYPz000+a7o6I6LMU/lb6wc86Kv/NbVkiIm3ROGBOmzYNjRo1ylPA3LVrF4KCghgwiYjyyNzcHAb6+lj/UP389Q9N1U430NeHubl54RVGRJQHeQqYb968QWBgYLbpCQkJuHHjRq7rhoWFITAwELq6GmdZIqLPjpWVFXbu2oW4uLh8rWdubg4rK6vCKYqIKI/ylPr09PQwceJEJCQkKKdJJBIEBgbiu+++++j6giCgcePGmldJRPQZsrKyYlgkomIpTwOtm5mZYcyYMRAEQfkPgMrP6v4BgLGxMRo3box58+YV2kEQERERUdGR5/PWbm5ucHNzU/5co0YNNGzYELt27SqMuoiIiIiomNL4wkhXV1dUrVpVzFqIiIiIqATQOGD+9ttvYtZBRERERCVEngJmaGgoAMDa2hpSqVRlWn7Y2trmex0iIiIiKl7yFDA7duwIHR0dHD9+HPb29gCATp065WtHEokEjx49yn+FRERERFSs5PkUeWZmpsrPirvE8yq/yxMRERFR8ZSngHnu3DkAUBmPTTGNiIiIiCirPAVMGxubbNN8fX1Rq1YtVKlSReyaiIiIiKgYy9NA6+r8+eef6N69O2JjY8Wsh4iIiIiKOY0DZlRUFKpVqwYLCwsx6yEiIiKiYk7jgGltbY3Xr18jLS1NzHqIiIiIqJjTOGBOmTIFcXFxmDx5Ml6+fClmTURERERUjGn8JB8/Pz/UqVMHZ86cwZkzZ1CuXDmUK1cOhoaGapeXSCTYuXOnxoUSERERUfGgccDcuHEjJBKJcnzL169f4/Xr1zkuL5FINN0VERERERUjGgfMsWPHMjQSaVFkZCTi4uK0XUaRk5KSgtDQUOjq6uZ4RqWoMDc3VxlfmIiopNA4YI4fP17MOogoHyIjIzF40CCkyuXaLoUKwEBfHzt37WLIJKISR+OASUTaExcXh1S5HL0BlNN2MZ9QFAB3oEQcdxQAd7kccXFxDJhEVOIUOGAmJSVh586dOHv2LIKCgpCcnAxjY2PY2dmhdevW+Pbbb2Fubi5CqUT0oXIArPE5Xary/prvknHcgrYLICIqNAUKmE+ePMHo0aMRERGhvNkHAN6+fYtHjx7B398fHh4eWL9+PWrUqFHgYomIiIio6NM4YCYmJmLUqFGIiIhA2bJl0atXLzg5OcHU1BTx8fF48OABPDw8EBERgbFjx+LIkSMwNTUVs3YiIiIiKoI0Dpjbtm1DREQEnJ2d8ffff6N06dIq87/88kuMHDkSI0eOhK+vL/bu3YsRI0YUuGAiIiIiKto0fpLP2bNnIZVK8ccff2QLlwqlS5fGH3/8AYlEgpMnT2pcJBEREREVHxoHzJCQEFStWhWVKlXKdTlbW1s4ODjgxYsXmu6KiIiIiIoRjQOmIAjQ09PL07K6urpIS0vTdFdEREREVIxoHDBtbGwQGBiImJiYXJeLiYlBYGAgKlasqOmuiIiIiKgY0ThgtmrVCmlpaZgzZw7S09PVLpOeno5Zs2YhIyMDrVu31rhIIiIiIio+NL6L3M3NDe7u7jh37hx69eqFAQMGoHbt2ihVqhQSExPx8OFD7N69G4GBgTA1NYWbm5uIZRMRERFRUaVxwLSyssKqVaswduxYBAQEYP78+dmWEQQBJiYmWLFiBR+FRkRERPSZ0PgUOQA0b94cx44dQ9++fVG+fHkIgqD8V7ZsWfTt2xceHh5o0aKFWPUSERERURFX4GeRW1tbY8GCBQDePyIyKSkJJiYmfGoPERER0WeqwAEzKxMTE5iYmIi5SSIiIiIqZjQOmB4eHnleViqVwsjICGXLloVMJoOxsbGmuyUiIiKiIk7jgDlt2jRIJJL871BXF66urpg+fTqDJhUpcXFxMDc313YZREp8TRJRcaXxTT6urq6oX7++8qae8uXLo02bNujWrRvatm0La2tr5bwyZcrAzs4O5ubmSEtLg7u7O0aNGgVBEMQ8FiKNhYeHw9XVFeHh4douhQgAX5NEVLxp3IM5efJk9OjRA6VKlcKCBQvQpUuXbMtcuXIF06dPh4GBAfbs2QMLCwv4+flhypQp8Pb2xsGDB9G7d+8CHQCRGBITE5GZmYnExERtl0IEgK9JIireNO7BXL16NaKjo/Hnn3+qDZcA0LJlS6xYsQJhYWFYu3YtAKBu3bpYtWoVBEHA0aNHNd09ERERERVRGgfMixcvwsbG5qOPgGzUqBHs7Oxw9uxZ5TRHR0dUqlQJz54903T3RERERFREaRww4+PjYWZmlqdlTU1NERMTozLNwsICCQkJmu6eiIiIiIoojQNmhQoVEBgYiLi4uFyXi4+PR2BgIMqWLasyPSoqCuXKldN090RERERURGkcMFu3bg25XI5ffvkFqampapeRy+WYOXMm0tLSVB4XeePGDbx69QpVq1bVdPdEREREVERpfBf58OHDcfToUVy+fBldunRBjx49UKNGDRgbGyMpKQkBAQE4evQoQkNDYWpqijFjxgAANm7ciA0bNkAikaBfv36iHQgRERERFQ0aB0wrKyv8+++/mDBhAl6+fIl169ZlW0YQBFSsWBErV66EtbU1AMDT0xPJycno2LEjOnTooHnlRERERFQkFehZ5LVr18aJEyfg7u6Oc+fO4cmTJ4iNjYWxsTFkMhk6duyI3r17qzyf/Msvv0StWrXQrl27AhdPREREREVPgQImAOjr62PgwIEYOHBgnpYfN25cQXdJREREREVYgQMmFZ5Dhw5h+vTpaueZmprCysoKLVq0wPfff4/y5curzG/Xrh3CwsLytB8PDw/UrFlT+XNmZiY8PT1x8uRJPHjwAHFxcTA2Noa1tTWaN2+OwYMHw8bGRvMDIyIiohItTwFz5cqVouxswoQJomznc1OmTBm4uLgofxYEAUlJSXjy5Am2b98OT09P7N69Gw4ODtnWdXFxQZkyZXLdftbxTJOSkjBixAj4+PjAxMQEdevWhYWFBWJjY/H06VNs3rwZO3fuxKJFi/D111+Ld5BERERUYuQpYK5fvx4SiUTjnQiCAIlEwoCpIQcHB/z555/ZpmdkZGDJkiXYsWMH5syZg127dmVbZvTo0WjatGme97V48WL4+PigQ4cO+P3331Wun01LS8OOHTuwdOlSTJs2DbVr11YbaomIiOjzlqeA2bhx4wLvqCABldSTSqWYNGkS9u7dC29vb0RHR3+0tzI3aWlp8PT0hEQiwaJFi1TCJQDo6enhu+++g6+vL06ePIm9e/di5syZBT0MIiIiKmHyFDB37NhRoJ28evUK+/fvL9A2SD0TExOYmZnhzZs3ePv2bYECZmJiItLS0qCjo5PrF4J+/frBwMAA1apV03hfREREVHIV6k0+ly5dwt69e3HlyhVkZmbixx9/LMzdfZbCwsIQExMDKyurAt94Y2lpiQoVKuDVq1eYOHEiZsyYgerVq2dbzsXFReWaUCIiIqKsRA+YMTExcHd3x/79+5V3MSuuwSRxCIKAt2/f4v79+/jtt9+QmZmJadOmQSqVFnjbv/zyC3766Sdcv34d3bp1Q5UqVdC0aVM0bNgQjRo14t3jRERE9FGiBcxbt25h7969OHv2LNLT0yEIAgDAyMgI3bt3z/M4mZTd7du34ejomOP82bNno2vXrmrnDR06NNdtBwQEqPzctWtXmJqaYtGiRQgODlb+27dvHwDA3t4ePXv2xNChQ2FoaJjPIyn6QkJCtF1CNikpKQgNDYWurq6yzYtinaSZnH6X/B0TUXFWoICZmJiIQ4cOYd++fQgKCgIAZbCsXr06+vfvj2+++QampqYFr/Qzpm6Yonfv3iE0NBRPnjzB4sWLERoaimnTpmXrKc7LMEUfatWqFVq2bAkfHx9cvnwZ3t7e8PPzQ2pqKoKCgrBs2TK4u7tj27ZtqFixoijHWFQsXLhQ2yXQZ4avOSIqiTQKmH5+ftizZw/+++8/pKamKkOlsbExkpOTYWVlhaNHj4pa6Ocsp2GKgPe/i5EjR2Lr1q2oWLEi3NzcVObnd5giBYlEggYNGqBBgwYAALlcDl9fXxw/fhwHDx5ESEgIJk+ejN27d+d720XZrFmzYGdnp+0yVKSkpCAoKAj29vYqPZgMJiVDTq85/o6JqDjLc8BMTk7G0aNHsW/fPvj7+wN435MmlUrh4uKCr7/+Gh06dICzszOvt/yE6tati5EjR2Lp0qXYs2dPtoCZHy9fvkRERATs7OyyPRlIX18fjRs3RuPGjdG5c2cMGzYMd+7cQWhoKGxtbQt4FEWHnZ1drpcjaENycjLS09NRvXp1GBsba7scEllRfM0RERVUngLmvHnzcPToUSQnJyt7K+vWrYtu3bqhW7dusLS0LNQiKXeK4YIiIiIKtJ1ly5bhxIkTmDRpEkaPHp3jcs2bN4etrS1evHiBuLi4EhUwiYiIqODyFDD37t0LiUSCevXqoV27dujSpQtDRRGiuP61oNdDNmrUCCdOnMD+/fsxZMiQbAOtKyQkJODNmzfQ19eHvb19gfZJREREJY9OfhYODg6Gj48Prl+/jqioqMKqifIhMDAQGzduBAC4uroWaFu9evWCra0twsLC4ObmhkePHmVbJjw8HD/++COSk5MxYMAA3sBFRERE2eSpB/PPP//EoUOHcPPmTVy4cAEXL17EggUL0KRJE3zzzTfo2LFjjr1dVHDPnj3Dzz//rDItMzMT4eHh8PPzQ0ZGBpo0aYLhw4cXaD+GhobYsmULRo0aBT8/P/To0QNVqlRB1apVoaenh/DwcDx69AgZGRno2rUrpkyZUqD9ERERUcmUp4CpuNYyIiICBw8ehIeHB16+fIkbN27g5s2bmD9/Ptq1a4fu3bsXdr2fpejo6Gx35evp6cHCwgIuLi748ssv4erqCl3dgg9ramtrC09PT3h4eODixYt49OgRbt68ifT0dJQtWxZffvklevTogZYtWxZ4X0RERFQy5SuRVKxYEePGjcO4ceNw8+ZNuLu74+zZs3j37h1OnDiBEydOAADevXuHR48eoVatWoVS9OeiZ8+e6Nmzp0brnj9/XuP96urqonfv3ujdu7fG2yAiIqLPl8ZdXs2aNUOzZs2QlJSEY8eO4dChQ/Dz8wPw/iaQXr16wdHREb169UL37t1hbm4uVs1EREREVITl6yYfdUxNTdG/f3/s378fx44dg5ubGywtLSEIAh4/fozFixejVatWmDhxogjlEhEREVFRV+CAmVW1atUwbdo0XLp0CWvWrEHbtm0hlUohl8tx6tQpMXdFREREREVUwe8KUbdRXV106NABHTp0wJs3b3D48GEcPny4MHZFREREREWMqD2Y6pQtWxbff/+98gYgIiIiIirZCj1gEhEREdHnhQGTiIiIiETFgElEREREomLAJCIiIiJRMWASAShVqhR0dHRQqlQpbZdCBICvSSIq3gplmCKi4sba2hoeHh584hQVGXxNElFxxh5Mov/HP+RU1PA1SUTFFQMmEREREYmKAZOIiIiIRMWASURERESiYsAkIiIiIlExYBIRERGRqBgwiYiIiEhUDJhEREREJCoGTCIiIiISFQMmEREREYmKAZOIiIiIRMWASURERESiYsAkIiIiIlExYBIRERGRqBgwiYiIiEhUDJhEREREJCpdbRdARJqLAgAIWq7i04lS+W/xPu6ojy9CRFRsMWASFUPm5uYw0NeHu1yu7VK0wl3bBYjEQF8f5ubm2i6DiEh0DJhExZCVlRV27tqFuLg4bZdS5KSkpCAoKAj29vYwNDTUdjm5Mjc3h5WVlbbLICISHQMmUTFlZWXFcKJGcnIy0tPTUb16dRgbG2u7HCKizxJv8iEiIiIiUTFgEhEREZGoGDCJiIiISFQMmEREREQkKgZMIiIiIhIVAyYRERERiYoBk4iIiIhExYBJRERERKJiwCQiIiIiUTFgEhEREZGoGDCJiIiISFQMmEREREQkKgZMIiIiIhIVAyYRERERiUpX2wUQkXqRkZGIi4tDSkoKQkNDoaurC0NDQ22XVeQVRnuZm5vDyspKlG0REX0OGDCJiqDIyEgMGjwI8lS5tkshAPoG+ti1cxdDJhFRHjFgEhVBcXFxkKfKkdkkE0JpQdvlaCYBkN6WIqNJBlBa28VoTpIggfy2HHFxcQyYRER5xIBJVIQJpQXAQttVFFBpFOtjEFBMAz4RkRbxJh8iIiIiEhUDJhERERGJigGTiIiIiETFgElEREREomLAJCIiIiJRMWASERERkagYMImIiIhIVAyYRERERCQqBkwiIiIiEhUDJhERERGJigGTiIiIiETFgElERERE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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAABN8AAAPGCAYAAADTETxgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAADnh0lEQVR4nOzdd3yN5//H8ffJIhEkCGJHEHuVxN6jPzWKolS1qlRt1Spao0qpUtVSmta3qFVqj36r9t6pVSFGEiESMqzs5Pz+8Mj5Ok0Qck4jvJ6PRx8Pue/rvq7POb3lxDvXfV0Go9FoFAAAAAAAAACLs8nqAgAAAAAAAIDnFeEbAAAAAAAAYCWEbwAAAAAAAICVEL4BAAAAAAAAVkL4BgAAAAAAAFgJ4RsAAAAAAABgJYRvAAAAAAAAgJUQvgEAAAAAAABWQvgGAAAAAAAAWIldVhcAIOuEhISoefPm6Z4zGAzKmzev3N3d1ahRI7399tvKly+fWZtDhw6pV69eGR6vfPnyWrduXZrj/v7++u2333TgwAGFhYUpPj5e+fLlU9myZdWkSRO99tprypkz55O9OAAAMulRn5OSZG9vL2dnZ5UqVUpNmjRRz5495ezs/C9WaBnNmjXT1atXH3re1tZWTk5OKlKkiLy9vdW3b18VKlToX6wwrdWrV2v06NEqVKiQdu/enaW1AADwOIRvACRJ5cqVM/sHQ3Jysm7duqWAgACdPXtWK1as0MKFC+Xl5ZXu9ZUrV5aDg8MjxyhVqlSaY99++63mzp2rlJQUOTs7q0SJErK3t9eNGze0Z88e7dmzRz/99JPmzJmjSpUqZeo1AgDwtP75OSlJiYmJioyMlJ+fn/z8/PTrr79qwYIFKlmyZBZVmTnu7u5yd3dPczwpKUnXrl3TuXPndO7cOa1Zs0aLFy9WhQoVsqBKAACyH8I3AJKkTz/9VD4+PmmOR0VFadSoUdq5c6eGDBmi33//XTY2aZ9YnzVrlooVK/ZEY65atUpz5syRk5OTpkyZopYtW8rW1tZ0/uLFixozZoz++usv9enTR5s3b04z+w4AgH/Dwz4npfszwQcMGKBr167p448/1vLly//l6iyjc+fOGjx48EPP79q1Sx9++KFu376tYcOGPfRnAgAAYI5PSwCP5OrqqqlTp8rBwUGBgYHau3evxfqeN2+eJGnkyJF6+eWXzYI3SfL09NTcuXOVP39+RUVFadGiRRYbGwAAS/Hx8dEHH3wgSfLz89Pp06ezuCLraNy4sT7++GNJUmBgoA4cOJDFFQEAkD0QvgF4LFdXV5UtW1aSFBAQYJE+b926peDgYElStWrVHtouX758atGihSTp5MmTFhkbAABLa9mypenPJ06cyMJKrKtZs2amP1vqZwIAAJ53PHYKIEOSkpIkSbly5bJIf3Z2//v2s2PHDlWsWPGhbQcPHqxevXopf/78FhkbAABLy507t+nP9+7dM/05Li5Oq1at0tatW3Xu3Dndvn1bDg4OKlKkiBo0aKDevXunu3lBbGysli9frnXr1ikoKEj29vaqWbOmBgwYoAsXLmj06NHq2LGjpk6danZdQkKCli1bps2bN+vChQtKTEyUu7u7mjRpoj59+qhgwYKZep0Gg8H0Z6PRmOZ8UFCQFi9erEOHDunatWuKjY2Vs7OzvLy81LZtW3Xu3Nlspnvq5k3VqlXTkiVL9Msvv2jt2rWm11yxYkX16tXL9Iu4jFiyZIkmTpwog8GgsWPH6o033sjUawYAILMI3wA8VnBwsAICAmRjY6OGDRtapM9cuXKpZs2aOn78uL777jtduXJFnTt3Vs2aNdM8furm5iY3NzeLjAsAgDUEBQWZ/ly4cGFJUmRkpN566y2dP39eBoNBJUqUkLu7u8LCwhQQEKCAgACtX79eq1evNl0j3V9vtV+/fjp58qQMBoM8PT1lY2OjnTt3as+ePWrUqFG6NYSHh6tfv346e/asDAaDihQpIhcXF124cEELFizQ2rVr9f333+ull1566te5efNm05+rV69udm7r1q0aPny4EhIS5OTkpOLFi8toNCokJESHDh0y/Tdjxow0/SYmJqpv3746cOCAXF1d5enpqcuXL5uumTBhgrp37/7Y+n799Vd9/vnnsrGx0cSJE9WlS5enfq0AAFgKj50CSFdycrKioqK0fft29e3bVykpKerXr5+KFi1qsTHGjh0rJycnGY1GrVmzRj179pS3t7f69esnX19fnThxQikpKRYbDwAAa/n5558lSfb29qpXr54kadq0aTp//rxKliyp//73v9qyZYtWrVqlvXv36qeffpKjo6MiIiK0cOFCs74mTZqkkydPqnjx4lq7dq02bdqkDRs2aNOmTfLw8ND27dvTjG80GjVkyBCdPXtWL730kjZv3qzt27dr9erV2rdvnzp37qzo6GgNHDhQN27ceOLXl5SUpA0bNuirr76SJNWrV081atQwnb9165bGjBmjhIQEde/eXfv379f69eu1YcMG7du3T2+++aYkaePGjek+rvr333/rxIkTmj59ug4ePKjVq1dr9+7dqlu3riTpm2++Mc3Cf5jffvtN48ePl42NjaZMmULwBgB4ZjDzDYAkqVevXo8837dvXw0bNuyh55s3b/7I6wcNGpRmB7WKFStq5cqVGjdunI4dOyZJunv3rnbt2qVdu3ZJkvLnz68uXbqof//+cnR0zMArAQDg3xEXF6dLly7p119/1dq1ayVJb7/9tgoUKKDExEQdOXJEBoNBo0ePVqlSpcyubdiwodq0aaNVq1bp/PnzpuMXL17Uxo0bZTAYNGfOHHl5eZnOeXp66ocfflCbNm0UFxdn1t+2bdvk5+enggUL6qeffpKTk5PpXO7cuTV58mRduHBBJ06c0IIFC/TRRx+leT2rVq3S/v37zY4ZjUbdu3dPISEhiomJkSTVqVNHX3/9tVm7o0ePKjExUW5ubvr000/NlpdwcnLSqFGjtHz5ciUmJur8+fOmtWQfNGTIELVr186s7o8++kidOnVSdHS0Ll++nO51krR27VqNHTtWtra2+vLLL9W2bdt02wEAkBUI3wBIksqVKydnZ2fT1ykpKbp3756CgoKUkJCgBQsWKDY2VmPGjEnzWKgkVa5cWQ4ODg/t393dPd3jZcqU0dKlS3X27Flt3bpV+/bt0+nTp5WYmChJioiI0Lx587R582b98ssvZo/lAADwb3ncL6kkqUuXLho6dKik+zPgtm3bpvj4+HQ/H41GoykgezBI+/PPPyVJL730klnwlqpo0aJq0aKFNm7caHZ869atkqQWLVqYBW+pDAaD2rdvrxMnTmjHjh3phm+hoaEKDQ1N97UVKlRIbdu2VevWrdWgQYM055s3by4/Pz/FxcWZBW+p4uPj5eLiohs3big2NjbdMZo2bZrmmKenp+nPt2/fTve6DRs2aPTo0UpJSdHMmTP18ssvp9sOAICsQvgGQJL06aefysfHJ83xhIQErVmzRp9//rkWL16s5ORkTZgwIU27WbNmqVixYk89foUKFVShQgUNHjxYsbGxOn78uPbu3at169YpIiJCwcHBGjp0qH799denHgMAgKf1z19S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LFky068rPYRvAAAAAAAgW1i+fLm2b9+uMmXK6Oeff1bBggUlSZcvX9bbb7+dpv1XX32l8PBwde/eXePHj5fBYJAkJSUlafLkyVq6dKkWLFigV155Rfny5dP06dM1YMAAXb9+XV27dlWnTp1Mfc2bN08XL15U06ZN9d1335kCKKPRKF9fX3399ddasGCBWfg2btw4hYSEqHPnzpowYYIcHBwkSbt27dLgwYOVkpJiVm9SUpIGDx6ssLAwvffeexoyZIjs7O5HNwEBAerTp4/mzp1rmkH3oJ07d6pTp04aN26cHB0dJUl//vmnBg0apN9++01Dhw6Vm5vbU73vCxYsUGRkpJo0afLQ9eCeVOojp/v379exY8dUu3Ztubu768yZM1q/fr22bt2qefPmZWg31VatWqlVq1Z68803FRERobfeeivdXU0vXLigSZMmqUuXLpLuP6b6ySefaP369RozZoyWLFlikdf2Tzx2CgAAAAAAsoXUcGTChAmm4E2SPDw89Mknn6RpX6hQITVo0EDDhw83BW+SZGdnp27dukmSrl69mqGxc+fOrUaNGumjjz4ym/llMBjUo0cPSVJERITi4uIkSf7+/tq3b5/c3d3NgjdJaty4sfr2TbsT7J9//qlLly6pZs2a+uCDD0zBmySVLVvW9Bjljz/+mObaXLlyafz48abgTZJatmypYsWKyWg06sKFCxl6nf8UGxtret8HDRr0VH2kJzV8q1mzprZt26b58+fL19dXO3bs0BtvvKGYmBgNGzZMd+/etdiYzZo1MwVvkuTg4KDPP/9crq6uOnr0qPz9/S021oMI3wAAAAAAwDMvPDxcFy9elLOzc7qzr5o2bZrmcchPP/1U8+fPV968eU3H7ty5o+PHj+uPP/6QJCUmJmZo/IEDB+rHH3+Up6en6VhMTIxOnTqldevWmY6l9rdv3z5J9wOfB4O3VG3atElz7MCBA5L00M0MGjduLBsbG504cUKxsbFm5ypUqKCcOXOmuSY1pIyJiXnk63uYNWvWKDo6Wg0bNlSVKlWeqo/0TJ48Wf/973/1448/ms3Ic3Bw0CeffKIKFSooMjJS69evt9iYr776appjOXPmVP369SUp3UeXLYHHTgEAAAAAwDMvLCxM0v3ZbA/OYktlb2+vwoUL68qVK2bHL126pGXLlunEiRMKCgpSdHS0JJn6SG/d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kJCgvn37KigoSM2bN9f48eNVqFAh0/n4+HitXLlSX3zxhZYuXSpXV1cNGTIk3dfSuXNnDR48ON1zV65c0aBBg+Tv76+PP/5Yf/zxR7q/FAQA4HnDmm/Acy5XrlymH8KPHz+ebpvUGWwdOnRQiRIlFBMTYwrZ/im98O2LL77QyZMnlTdvXi1YsED9+vUzC94kqU6dOvrll1/k6empmJgYjRo1SikpKWZtfvzxR1PwNnv2bH3wwQdpfiivWLGifvrpJ/n4+Cg5OVmjR49WTEzME7wjAAA8W+bNmydJGjlypF5++WWz4E2SPD09NXfuXOXPn19RUVFatGiR6dzVq1e1fv16SdLs2bPTPBZqMBjUsGFDzZw5U5J05MgRHThwwKzN77//rsDAQBUpUkTffPONWfAmSTly5FDPnj01YMAASdLPP/+su3fvPvHrLF68uKZPny5Jun37ttauXfvEfQAAkB0RvgEvgHr16kl6ePi2Z88eSVLdunXVsGFDs2MPunjxoiIiImQwGEzh219//aVff/1VkjR8+HBVrlz5oXXkypVLo0aNkiSdPXvW7If/69ev69tvv5UkvfXWW498nNTOzs70yEt4eLg2btz40LYAADzLbt26peDgYElStWrVHtouX758atGihSTp5MmTpuN///236VFVT0/Ph17v7e2tUqVKSZJOnDhhdu7UqVOSpPLly6c76z1Vly5dJEkxMTE6f/78I17Vw5UtW9ZUx19//fVUfQAAkN3w2CnwAqhbt65mz56t06dPp3mc9OrVq7p06ZJcXV1VqVIlhYWFacmSJdqzZ48+/vhjs36OHDkiSfLy8lL+/PklSStWrJB0fw2211577bG1NGzYUJMmTVKVKlVUrlw50/FVq1YpMTFRtra2eueddx7bT5kyZTRt2jSVKlVKFStWfPybAADAM8jO7n8/ju/YseORn2mDBw9Wr169TJ/BkmRvby9Junv3ro4ePapatWo99HpfX18ZjUa5ubmZHU/t48SJE4qKipKrq2u61xcqVEhr166Vs7NzmtlxTyJ37tySpHv37j11HwAAZCfMfANeANWqVZOTk5MSEhJ0+vRps3OpM9zq168vGxsb1alTR/b29goICND169fN2qaGbw8+cpo6e83b29v0w/ujGAwGdenSReXLl5eNzf++BaX2U6FChQyv/9K+fXtVrVrV7B8uAABkJ7ly5VLNmjUlSd99951GjRqlI0eOKDk5OU1bNzc3lSlTxiwcq1mzppycnCRJ/fr108yZM3XhwoV0xypZsqRKlSqlXLlymR1PnfUeERGhLl26aMmSJbpx40a6fVSoUEHFixd/5Ay5RzEajaaZfv/cmAEAgOcV4RvwArC3tzf9Jvyfj56mrveWummBs7Oz6bGXfz56mrreW2rb2NhY0w5s/9w84UldunTJIv0AAJDdjB07Vk5OTjIajVqzZo169uwpb29v9evXT76+vjpx4kSadVJT5cmTR6NHj5Z0fybZvHnz9Morr6hRo0YaMWKEli1bpsDAwEeOX69ePbVr107S/U0RJk6cqIYNG6pt27aaMGGCNm3apMjISIu81tWrV+vWrVuS7u+uDgDAi4DwDXhBpLfuW1JSkmnG2YOz2VL//GD4duXKFV2/fl05c+Y0BXm3b982nc/sbmWpP4iz6xkA4EVTsWJFrVy5Ui+99JLp2N27d7Vr1y7NmDFDXbt2VYMGDTRz5kzFxsamub5r166aO3euihYtajoWFhamjRs3asKECWrdurXatGmj1atXy2g0plvDl19+qREjRphmxRmNRgUEBGjZsmX64IMPVL9+fb355ps6duzYE7++xMREXblyRfPnz9ekSZMkSTVq1Eh3B3YAD/ewEP5Zl13rlvTQ75nAkzIYuZuAF4K/v786dOigfPnymQK3I0eOqGfPnvLy8jLtlCbdX8i5S5cuyps3rw4ePCgbGxutXr1ao0ePVoMGDTR//nxJ98O32rVrS7r/W/uePXs+dX21atXSnTt39M4776RZaw4AgBfF2bNntXXrVu3bt0+nT59WYmKi2fkSJUrol19+UeHChdNcm5ycrIMHD2rHjh06cOBAuo+fNm3aVN9+++1DHxu9d++etm/frl27dunQoUMKDw83O28wGDRs2DD179/f7HizZs109erVDL3GGjVq6Ntvv1XBggUz1B7A//ywa5Gu3QrL6jIyrEjeQnqvca9/dUwvLy9J9/+tkydPnqfqIzo6WrNmzVL16tXVoUMHS5aXLaT+2y8jFi1aJB8fn0yN9/vvv2vp0qX6+++/ZTQaVapUKXXu3FldunR54mUOjEajfvzxR61cuVKhoaHKlSuX3n//ffn7+2vNmjUaPXq03n777UzV+zRYKAl4QaRukhAREaHLly/Lw8PD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Sl2nLnUNukqVKqldu3Zp/g27cuVKjRgxQnFxcWratKly586ttWvXqmPHjvLz88vMy3kkwjfgBVOvXj0lJiaannl/WPgm/W+m2++//y6DwZDuzDdJGjFihMqUKaPo6Gj16NFDCxYsMPvh3Wg0avfu3Xr99dcVGBioXLlyafr06bKxMf8W1Lt3b3l7eyshIUF9+/bVt99+q4iICLM2fn5+euONN+Tn5yd7e3t99dVXcnJyeqr3AgCArFa/fn21bt1akvTpp59q8uTJCgkxX0w9Pj5eq1at0rBhwyRJw4YNM82A6927t0qVKqWYmBi9+eab+uWXX9LM/IiMjNSMGTPk6+urnDlz6oMPPjA7P3r0aDk6Our8+fPq0qWLtm7danpsJ9XFixc1YMAAHTt2TKVKlUr3H7gA8G9Yvny5tm/frjJlyuiPP/7QvHnzNH/+fK1fv1537txJ0/6rr75SeHi4unfvrm3btmnu3LmaN2+etm7dqh49ekiSFixYIOn+rN7p06eb1tTs2rWrpk+fblqmZ968ebp48aKaNm2qHTt26IcfftCcOXP03//+1/S9NbWvVOPGjVNISIg6d+6sP//8U99++62WL18uX19f+fv7KyUlxax9UlKSBg8erLCwML333nummhctWqQ1a9aoUKFCmjt3rrZv357mte7cuVNt2rTR1q1bNW/ePC1evFjfffedpPuz1lKXHHgaCxYsUGRkpJo0afLQ9eCelKenpyTp8OHDac4ZjUbT+m3//DdhemrVqmX2/6p9+/aaPn16mhl6Fy5c0MCBA7V582Z9++232rx5s/r27auYmBh99NFHFpkhmB7CN+AFU6dOHUnSvXv3VKRIEdM3vPSkBnMxMTHy8vJSgQIF0m2XJ08eLVu2TD4+Prp3756mTJmiOnXqqHXr1nrttddUp04d9e3bV0FBQSpRooR++eUXlS1bNk0/9vb2mj9/vl555RUlJiZqzpw5atiwoZo3b64uXbqoQYMGev3113X69GkVKFBA8+bNY8c0AEC2N336dHXs2FEpKSlatGiRmjdvrqZNm+q1115Tu3btVKtWLY0ZM0ZxcXEaMWKEunfvbrrWxcVFP//8s6pXr65bt25p0qRJqlevnlq3bq0uXbqodevWqlevnnx9fZUvXz599913aTZqqFatmubOnavChQvr0qVLGjhwoHx8fNS2bVu9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", "text/plain": [ - "
    " + "
    " ] }, "metadata": {}, @@ -10841,19 +12088,39 @@ } ], "source": [ - "order = smart_pruning_compare_duration.groupby(by=[\"algorithm\"])[\"overhead\"].median().sort_values(ascending=False).index\n", - "b = sns.boxplot(data=smart_pruning_compare_duration, x=\"overhead\", y=\"algorithm\", hue=\"algorithm\", palette=algorithm_colors, order=order)\n", - "b.set_xlabel(\"Overhead (duration with text format)\")\n", - "b.set_ylabel(\"Algorithms\")\n", - "write_dir = (plot_dir / data_dir)\n", - "write_dir.mkdir(exist_ok=True, parents=True)\n", - "plt.savefig(write_dir / \"overhead-duration.pdf\", bbox_inches='tight')" + "ax = sns.catplot(\n", + " dg_pruning_compare,\n", + " x=\"overhead_size\",\n", + " col=\"algorithm\",\n", + " hue=\"dataset\",\n", + " kind=\"bar\",\n", + " #hue_order=['datagen-7_5-fb', 'graph500-22', 'datagen-7_9-fb', 'cit-Patents', 'datagen-8_4-fb', 'datagen-8_8-zf'],\n", + " col_order=[\"BFS\", \"PageRank\", \"WCC\", \"SSSP\"],\n", + " legend_out=True,\n", + " errorbar=None,\n", + " capsize=0.2,\n", + " col_wrap=2,\n", + ")\n", + "# sns.move_legend(ax, \"center right\", ncols=1, bbox_to_anchor=(1.05, 0.55), title=None, frameon=False)\n", + "\n", + "ax.set_axis_labels(\"Overhead size (vs. baseline)\", \"Dataset\")\n", + "ax.set_titles(\"{col_name}\")\n", + "\n", + "ax.savefig(plot_location(\"es05-overhead-size.pdf\"), dpi=\"figure\")" + ] + }, + { + "cell_type": "markdown", + "id": "e9817ffd-8093-4216-8142-91fcab4d4365", + "metadata": {}, + "source": [ + "# Combined pruning" ] }, { "cell_type": "code", - "execution_count": 173, - "id": "02ebaf0e-43ec-4f69-b035-b045a8139464", + "execution_count": 50, + "id": "960c36fc-327b-43ac-a1dc-f3e6d6aa69ba", "metadata": {}, "outputs": [ { @@ -10877,311 +12144,543 @@ " \n", " \n", " \n", - " config\n", " algorithm\n", " dataset\n", - " run\n", - " storage_format\n", - " compressed\n", - " total_size\n", - " nr_executors\n", - " nr_vertices\n", - " iterations\n", + " size\n", " duration\n", - " baseline_total_size\n", - " overhead\n", " \n", " \n", " \n", " \n", - " 6\n", - " datagraphpruning\n", + " 34\n", " BFS\n", " cit-Patents\n", - " 1\n", - " Text\n", - " False\n", - " 50535370\n", - " 7\n", - " 3774768\n", - " 43\n", - " 76.262150\n", - " 2525597803\n", - " 2.000927e-02\n", + " 50535334\n", + " 86.595101\n", " \n", " \n", - " 0\n", - " datagraphpruning\n", + " 39\n", + " BFS\n", + " cit-Patents\n", + " 50535334\n", + " 84.816436\n", + " \n", + " \n", + " 40\n", + " BFS\n", + " cit-Patents\n", + " 50535334\n", + " 90.772743\n", + " \n", + " \n", + " 32\n", " BFS\n", " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 99098478\n", - " 7\n", - " 633432\n", - " 29\n", - " 39.157005\n", - " 256529225\n", - " 3.863048e-01\n", + " 99098460\n", + " 47.654069\n", + " \n", + " \n", + " 43\n", + " BFS\n", + " datagen-7_5-fb\n", + " 99098460\n", + " 47.914694\n", + " \n", + " \n", + " 61\n", + " BFS\n", + " datagen-7_5-fb\n", + " 99098460\n", + " 49.001435\n", + " \n", + " \n", + " 1\n", + " BFS\n", + " datagen-7_9-fb\n", + " 242483153\n", + " 89.260519\n", + " \n", + " \n", + " 13\n", + " BFS\n", + " datagen-7_9-fb\n", + " 242483153\n", + " 84.558765\n", + " \n", + " \n", + " 36\n", + " BFS\n", + " datagen-7_9-fb\n", + " 242483153\n", + " 89.686504\n", + " \n", + " \n", + " 9\n", + " BFS\n", + " datagen-8_4-fb\n", + " 627415849\n", + " 255.926213\n", + " \n", + " \n", + " 50\n", + " BFS\n", + " datagen-8_4-fb\n", + " 627415849\n", + " 251.011329\n", + " \n", + " \n", + " 62\n", + " BFS\n", + " datagen-8_4-fb\n", + " 627415849\n", + " 251.314435\n", + " \n", + " \n", + " 6\n", + " BFS\n", + " datagen-8_8-zf\n", + " 158742\n", + " 277.666098\n", + " \n", + " \n", + " 44\n", + " BFS\n", + " datagen-8_8-zf\n", + " 158742\n", + " 232.212127\n", + " \n", + " \n", + " 58\n", + " BFS\n", + " datagen-8_8-zf\n", + " 158742\n", + " 248.930734\n", + " \n", + " \n", + " 5\n", + " BFS\n", + " graph500-22\n", + " 0\n", + " 30.484405\n", + " \n", + " \n", + " 7\n", + " BFS\n", + " graph500-22\n", + " 0\n", + " 30.889342\n", + " \n", + " \n", + " 57\n", + " BFS\n", + " graph500-22\n", + " 0\n", + " 31.083670\n", + " \n", + " \n", + " 18\n", + " PageRank\n", + " cit-Patents\n", + " 1216835328\n", + " 139.407468\n", + " \n", + " \n", + " 38\n", + " PageRank\n", + " cit-Patents\n", + " 1216835328\n", + " 135.999596\n", + " \n", + " \n", + " 51\n", + " PageRank\n", + " cit-Patents\n", + " 1216835328\n", + " 136.403280\n", + " \n", + " \n", + " 27\n", + " PageRank\n", + " datagen-7_5-fb\n", + " 240220188\n", + " 62.764366\n", + " \n", + " \n", + " 30\n", + " PageRank\n", + " datagen-7_5-fb\n", + " 240244723\n", + " 62.195895\n", + " \n", + " \n", + " 56\n", + " PageRank\n", + " datagen-7_5-fb\n", + " 240219503\n", + " 59.712338\n", + " \n", + " \n", + " 23\n", + " PageRank\n", + " datagen-7_9-fb\n", + " 529857525\n", + " 105.311566\n", + " \n", + " \n", + " 25\n", + " PageRank\n", + " datagen-7_9-fb\n", + " 529856565\n", + " 99.278926\n", + " \n", + " \n", + " 53\n", + " PageRank\n", + " datagen-7_9-fb\n", + " 529899165\n", + " 102.904864\n", + " \n", + " \n", + " 31\n", + " PageRank\n", + " datagen-8_4-fb\n", + " 1449757452\n", + " 354.785814\n", + " \n", + " \n", + " 41\n", + " PageRank\n", + " datagen-8_4-fb\n", + " 1449551375\n", + " 346.038595\n", + " \n", + " \n", + " 54\n", + " PageRank\n", + " datagen-8_4-fb\n", + " 1449656722\n", + " 346.665170\n", + " \n", + " \n", + " 16\n", + " PageRank\n", + " datagen-8_8-zf\n", + " 19163986710\n", + " 730.192982\n", + " \n", + " \n", + " 33\n", + " PageRank\n", + " datagen-8_8-zf\n", + " 19164080737\n", + " 608.950502\n", + " \n", + " \n", + " 35\n", + " PageRank\n", + " datagen-8_8-zf\n", + " 19157802727\n", + " 547.495471\n", " \n", " \n", - " 7\n", - " datagraphpruning\n", - " BFS\n", - " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 242483171\n", - " 7\n", - " 1387587\n", - " 31\n", - " 59.394301\n", - " 581855399\n", - " 4.167413e-01\n", + " 10\n", + " PageRank\n", + " graph500-22\n", + " 768876384\n", + " 119.630991\n", " \n", " \n", - " 3\n", - " datagraphpruning\n", - " BFS\n", + " 20\n", + " PageRank\n", " graph500-22\n", - " 1\n", - " Text\n", - " False\n", - " 33\n", - " 7\n", - " 2396657\n", - " 3\n", - " 35.277343\n", - " 213794112\n", - " 1.543541e-07\n", + " 768693660\n", + " 124.917254\n", " \n", " \n", - " 1\n", - " datagraphpruning\n", + " 26\n", " PageRank\n", - " cit-Patents\n", - " 1\n", - " Text\n", - " False\n", - " 2795333038\n", - " 7\n", - " 3774768\n", - " 35\n", - " 189.454736\n", - " 2834235312\n", - " 9.862742e-01\n", + " graph500-22\n", + " 768876374\n", + " 129.000026\n", " \n", " \n", " 8\n", - " datagraphpruning\n", - " PageRank\n", + " SSSP\n", " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 550374485\n", - " 7\n", - " 633432\n", - " 35\n", - " 78.914126\n", - " 552752499\n", - " 9.956979e-01\n", + " 133167568\n", + " 44.230464\n", " \n", " \n", - " 5\n", - " datagraphpruning\n", - " PageRank\n", - " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 1210719851\n", - " 7\n", - " 1387587\n", - " 35\n", - " 128.222824\n", - " 1216101565\n", - " 9.955746e-01\n", + " 12\n", + " SSSP\n", + " datagen-7_5-fb\n", + " 133167568\n", + " 39.447449\n", " \n", " \n", - " 10\n", - " datagraphpruning\n", + " 52\n", " SSSP\n", " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 133167600\n", - " 7\n", - " 633432\n", - " 30\n", - " 40.820508\n", - " 254670929\n", - " 5.229007e-01\n", + " 133167568\n", + " 58.484370\n", " \n", " \n", - " 9\n", - " datagraphpruning\n", + " 4\n", " SSSP\n", " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 337239338\n", - " 7\n", - " 1387587\n", - " 32\n", - " 67.234251\n", - " 601133226\n", - " 5.610060e-01\n", + " 337239306\n", + " 68.398051\n", " \n", " \n", - " 2\n", - " datagraphpruning\n", + " 22\n", + " SSSP\n", + " datagen-7_9-fb\n", + " 337239306\n", + " 68.356443\n", + " \n", + " \n", + " 37\n", + " SSSP\n", + " datagen-7_9-fb\n", + " 337239306\n", + " 88.070066\n", + " \n", + " \n", + " 3\n", + " SSSP\n", + " datagen-8_4-fb\n", + " 891772088\n", + " 277.561039\n", + " \n", + " \n", + " 19\n", + " SSSP\n", + " datagen-8_4-fb\n", + " 891772088\n", + " 289.099961\n", + " \n", + " \n", + " 28\n", + " SSSP\n", + " datagen-8_4-fb\n", + " 891772088\n", + " 294.068455\n", + " \n", + " \n", + " 15\n", + " SSSP\n", + " datagen-8_8-zf\n", + " 192342\n", + " 215.504152\n", + " \n", + " \n", + " 21\n", + " SSSP\n", + " datagen-8_8-zf\n", + " 192342\n", + " 202.215887\n", + " \n", + " \n", + " 55\n", + " SSSP\n", + " datagen-8_8-zf\n", + " 192342\n", + " 204.070694\n", + " \n", + " \n", + " 11\n", " WCC\n", " cit-Patents\n", - " 1\n", - " Text\n", - " False\n", - " 1100333124\n", - " 7\n", - " 3774768\n", - " 41\n", - " 182.512176\n", - " 1100333124\n", - " 1.000000e+00\n", + " 965132860\n", + " 188.315644\n", " \n", " \n", - " 4\n", - " datagraphpruning\n", + " 42\n", + " WCC\n", + " cit-Patents\n", + " 965132860\n", + " 181.747936\n", + " \n", + " \n", + " 48\n", + " WCC\n", + " cit-Patents\n", + " 965132860\n", + " 186.614632\n", + " \n", + " \n", + " 14\n", " WCC\n", " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 94026180\n", - " 7\n", - " 633432\n", - " 13\n", - " 39.135903\n", - " 94026180\n", - " 1.000000e+00\n", + " 58425032\n", + " 37.803401\n", " \n", " \n", - " 11\n", - " datagraphpruning\n", + " 46\n", + " WCC\n", + " datagen-7_5-fb\n", + " 58425032\n", + " 40.725790\n", + " \n", + " \n", + " 49\n", + " WCC\n", + " datagen-7_5-fb\n", + " 58425032\n", + " 36.345173\n", + " \n", + " \n", + " 2\n", " WCC\n", " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 208169138\n", - " 7\n", - " 1387587\n", - " 13\n", - " 72.295015\n", - " 208169138\n", - " 1.000000e+00\n", + " 129855334\n", + " 76.455782\n", " \n", - " \n", - "\n", - "" - ], - "text/plain": [ - " config algorithm dataset run storage_format \\\n", - "6 datagraphpruning BFS cit-Patents 1 Text \n", - "0 datagraphpruning BFS datagen-7_5-fb 1 Text \n", - "7 datagraphpruning BFS datagen-7_9-fb 1 Text \n", - "3 datagraphpruning BFS graph500-22 1 Text \n", - "1 datagraphpruning PageRank cit-Patents 1 Text \n", - "8 datagraphpruning PageRank datagen-7_5-fb 1 Text \n", - "5 datagraphpruning PageRank datagen-7_9-fb 1 Text \n", - "10 datagraphpruning SSSP datagen-7_5-fb 1 Text \n", - "9 datagraphpruning SSSP datagen-7_9-fb 1 Text \n", - "2 datagraphpruning WCC cit-Patents 1 Text \n", - "4 datagraphpruning WCC datagen-7_5-fb 1 Text \n", - "11 datagraphpruning WCC datagen-7_9-fb 1 Text \n", - "\n", - " compressed total_size nr_executors nr_vertices iterations duration \\\n", - "6 False 50535370 7 3774768 43 76.262150 \n", - "0 False 99098478 7 633432 29 39.157005 \n", - "7 False 242483171 7 1387587 31 59.394301 \n", - "3 False 33 7 2396657 3 35.277343 \n", - "1 False 2795333038 7 3774768 35 189.454736 \n", - "8 False 550374485 7 633432 35 78.914126 \n", - "5 False 1210719851 7 1387587 35 128.222824 \n", - "10 False 133167600 7 633432 30 40.820508 \n", - "9 False 337239338 7 1387587 32 67.234251 \n", - "2 False 1100333124 7 3774768 41 182.512176 \n", - "4 False 94026180 7 633432 13 39.135903 \n", - "11 False 208169138 7 1387587 13 72.295015 \n", - "\n", - " baseline_total_size overhead \n", - "6 2525597803 2.000927e-02 \n", - "0 256529225 3.863048e-01 \n", - "7 581855399 4.167413e-01 \n", - "3 213794112 1.543541e-07 \n", - "1 2834235312 9.862742e-01 \n", - "8 552752499 9.956979e-01 \n", - "5 1216101565 9.955746e-01 \n", - "10 254670929 5.229007e-01 \n", - "9 601133226 5.610060e-01 \n", - "2 1100333124 1.000000e+00 \n", - "4 94026180 1.000000e+00 \n", - "11 208169138 1.000000e+00 " - ] - }, - "execution_count": 173, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "smart_pruning_compare_size = merge_compare(storage_baseline, smart_pruning, metric=\"total_size\")\n", - "smart_pruning_compare_size.sort_values(by=[\"algorithm\", \"dataset\", \"storage_format\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 174, - "id": "5980b461-ead5-484a-b9f2-c36b0049cd70", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", + " \n", + " 29\n", + " WCC\n", + " datagen-7_9-fb\n", + " 129855334\n", + " 66.188514\n", + " \n", + " \n", + " 45\n", + " WCC\n", + " datagen-7_9-fb\n", + " 129855334\n", + " 70.410946\n", + " \n", + " \n", + " 0\n", + " WCC\n", + " datagen-8_4-fb\n", + " 364443597\n", + " 245.917923\n", + " \n", + " \n", + " 17\n", + " WCC\n", + " datagen-8_4-fb\n", + " 364443597\n", + " 254.852829\n", + " \n", + " \n", + " 60\n", + " WCC\n", + " datagen-8_4-fb\n", + " 364443597\n", + " 254.553055\n", + " \n", + " \n", + " 24\n", + " WCC\n", + " graph500-22\n", + " 184374609\n", + " 73.372913\n", + " \n", + " \n", + " 47\n", + " WCC\n", + " graph500-22\n", + " 184374609\n", + " 71.557366\n", + " \n", + " \n", + " 59\n", + " WCC\n", + " graph500-22\n", + " 184374609\n", + " 71.922491\n", + " \n", + " \n", + "\n", + "" + ], "text/plain": [ - "
    " + " algorithm dataset size duration\n", + "34 BFS cit-Patents 50535334 86.595101\n", + "39 BFS cit-Patents 50535334 84.816436\n", + "40 BFS cit-Patents 50535334 90.772743\n", + "32 BFS datagen-7_5-fb 99098460 47.654069\n", + "43 BFS datagen-7_5-fb 99098460 47.914694\n", + "61 BFS datagen-7_5-fb 99098460 49.001435\n", + "1 BFS datagen-7_9-fb 242483153 89.260519\n", + "13 BFS datagen-7_9-fb 242483153 84.558765\n", + "36 BFS datagen-7_9-fb 242483153 89.686504\n", + "9 BFS datagen-8_4-fb 627415849 255.926213\n", + "50 BFS datagen-8_4-fb 627415849 251.011329\n", + "62 BFS datagen-8_4-fb 627415849 251.314435\n", + "6 BFS datagen-8_8-zf 158742 277.666098\n", + "44 BFS datagen-8_8-zf 158742 232.212127\n", + "58 BFS datagen-8_8-zf 158742 248.930734\n", + "5 BFS graph500-22 0 30.484405\n", + "7 BFS graph500-22 0 30.889342\n", + "57 BFS graph500-22 0 31.083670\n", + "18 PageRank cit-Patents 1216835328 139.407468\n", + "38 PageRank cit-Patents 1216835328 135.999596\n", + "51 PageRank cit-Patents 1216835328 136.403280\n", + "27 PageRank datagen-7_5-fb 240220188 62.764366\n", + "30 PageRank datagen-7_5-fb 240244723 62.195895\n", + "56 PageRank datagen-7_5-fb 240219503 59.712338\n", + "23 PageRank datagen-7_9-fb 529857525 105.311566\n", + "25 PageRank datagen-7_9-fb 529856565 99.278926\n", + "53 PageRank datagen-7_9-fb 529899165 102.904864\n", + "31 PageRank datagen-8_4-fb 1449757452 354.785814\n", + "41 PageRank datagen-8_4-fb 1449551375 346.038595\n", + "54 PageRank datagen-8_4-fb 1449656722 346.665170\n", + "16 PageRank datagen-8_8-zf 19163986710 730.192982\n", + "33 PageRank datagen-8_8-zf 19164080737 608.950502\n", + "35 PageRank datagen-8_8-zf 19157802727 547.495471\n", + "10 PageRank graph500-22 768876384 119.630991\n", + "20 PageRank graph500-22 768693660 124.917254\n", + "26 PageRank graph500-22 768876374 129.000026\n", + "8 SSSP datagen-7_5-fb 133167568 44.230464\n", + "12 SSSP datagen-7_5-fb 133167568 39.447449\n", + "52 SSSP datagen-7_5-fb 133167568 58.484370\n", + "4 SSSP datagen-7_9-fb 337239306 68.398051\n", + "22 SSSP datagen-7_9-fb 337239306 68.356443\n", + "37 SSSP datagen-7_9-fb 337239306 88.070066\n", + "3 SSSP datagen-8_4-fb 891772088 277.561039\n", + "19 SSSP datagen-8_4-fb 891772088 289.099961\n", + "28 SSSP datagen-8_4-fb 891772088 294.068455\n", + "15 SSSP datagen-8_8-zf 192342 215.504152\n", + "21 SSSP datagen-8_8-zf 192342 202.215887\n", + "55 SSSP datagen-8_8-zf 192342 204.070694\n", + "11 WCC cit-Patents 965132860 188.315644\n", + "42 WCC cit-Patents 965132860 181.747936\n", + "48 WCC cit-Patents 965132860 186.614632\n", + "14 WCC datagen-7_5-fb 58425032 37.803401\n", + "46 WCC datagen-7_5-fb 58425032 40.725790\n", + "49 WCC datagen-7_5-fb 58425032 36.345173\n", + "2 WCC datagen-7_9-fb 129855334 76.455782\n", + "29 WCC datagen-7_9-fb 129855334 66.188514\n", + "45 WCC datagen-7_9-fb 129855334 70.410946\n", + "0 WCC datagen-8_4-fb 364443597 245.917923\n", + "17 WCC datagen-8_4-fb 364443597 254.852829\n", + "60 WCC datagen-8_4-fb 364443597 254.553055\n", + "24 WCC graph500-22 184374609 73.372913\n", + "47 WCC graph500-22 184374609 71.557366\n", + "59 WCC graph500-22 184374609 71.922491" ] }, + "execution_count": 50, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], "source": [ - "order = smart_pruning_compare_size.groupby(by=[\"algorithm\"])[\"overhead\"].median().sort_values(ascending=False).index\n", - "b = sns.boxplot(data=smart_pruning_compare_size, x=\"overhead\", y=\"algorithm\", hue=\"algorithm\", palette=algorithm_colors, order=order)\n", - "b.set_xlabel(\"Overhead (storage with text format)\")\n", - "b.set_ylabel(\"Algorithms\")\n", - "write_dir = (plot_dir / data_dir)\n", - "write_dir.mkdir(exist_ok=True, parents=True)\n", - "plt.savefig(write_dir / \"overhead-size.pdf\", bbox_inches='tight')" - ] - }, - { - "cell_type": "markdown", - "id": "e9817ffd-8093-4216-8142-91fcab4d4365", - "metadata": {}, - "source": [ - "# Combined pruning" + "data_dir = Path(\"das6\") / \"20240528-034100-combinedpruning-3-runs\"\n", + "\n", + "combined = parse_experiment_output(root_dir / \"data\" / data_dir)\n", + "combined = combined.sort_values(by=[\"algorithm\", \"dataset\", \"storage_format\"])\n", + "combined = combined[[\"algorithm\", \"dataset\", \"total_size\", \"duration\"]].rename(columns={\"total_size\": \"size\"})\n", + "combined" ] }, { "cell_type": "code", - "execution_count": 175, - "id": "960c36fc-327b-43ac-a1dc-f3e6d6aa69ba", + "execution_count": 51, + "id": "84174807", "metadata": {}, "outputs": [ { @@ -11205,701 +12704,862 @@ " \n", " \n", " \n", - " config\n", " algorithm\n", " dataset\n", - " run\n", - " storage_format\n", - " compressed\n", - " total_size\n", - " nr_executors\n", - " nr_vertices\n", - " iterations\n", - " duration\n", + " size_combined\n", + " duration_combined\n", + " duration_baseline\n", + " size_baseline\n", + " overhead_duration\n", + " overhead_size\n", " \n", " \n", " \n", " \n", - " 6\n", - " combinedpruning\n", + " 0\n", " BFS\n", " cit-Patents\n", - " 1\n", - " Text\n", - " False\n", " 50535334\n", - " 7\n", - " 3774768\n", - " 43\n", - " 97.991459\n", + " 86.595101\n", + " 82.968899\n", + " 100187504\n", + " 1.043706\n", + " 0.504408\n", + " \n", + " \n", + " 1\n", + " BFS\n", + " cit-Patents\n", + " 50535334\n", + " 84.816436\n", + " 82.968899\n", + " 100187504\n", + " 1.022268\n", + " 0.504408\n", " \n", " \n", " 2\n", - " combinedpruning\n", + " BFS\n", + " cit-Patents\n", + " 50535334\n", + " 90.772743\n", + " 82.968899\n", + " 100187504\n", + " 1.094057\n", + " 0.504408\n", + " \n", + " \n", + " 3\n", " BFS\n", " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", " 99098460\n", - " 7\n", - " 633432\n", - " 29\n", - " 40.551124\n", + " 47.654069\n", + " 34.323108\n", + " 9533719\n", + " 1.388396\n", + " 10.394523\n", " \n", " \n", - " 1\n", - " combinedpruning\n", + " 4\n", + " BFS\n", + " datagen-7_5-fb\n", + " 99098460\n", + " 47.914694\n", + " 34.323108\n", + " 9533719\n", + " 1.395989\n", + " 10.394523\n", + " \n", + " \n", + " 5\n", + " BFS\n", + " datagen-7_5-fb\n", + " 99098460\n", + " 49.001435\n", + " 34.323108\n", + " 9533719\n", + " 1.427651\n", + " 10.394523\n", + " \n", + " \n", + " 6\n", " BFS\n", " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", " 242483153\n", - " 7\n", - " 1387587\n", - " 31\n", - " 110.392218\n", + " 89.260519\n", + " 69.310011\n", + " 20966038\n", + " 1.287845\n", + " 11.565521\n", " \n", " \n", " 7\n", - " combinedpruning\n", + " BFS\n", + " datagen-7_9-fb\n", + " 242483153\n", + " 84.558765\n", + " 69.310011\n", + " 20966038\n", + " 1.220008\n", + " 11.565521\n", + " \n", + " \n", + " 8\n", + " BFS\n", + " datagen-7_9-fb\n", + " 242483153\n", + " 89.686504\n", + " 69.310011\n", + " 20966038\n", + " 1.293991\n", + " 11.565521\n", + " \n", + " \n", + " 9\n", " BFS\n", " datagen-8_4-fb\n", - " 1\n", - " Text\n", - " False\n", " 627415849\n", - " 7\n", - " 3809084\n", - " 35\n", - " 265.831706\n", + " 255.926213\n", + " 241.785784\n", + " 57850630\n", + " 1.058483\n", + " 10.845445\n", " \n", " \n", " 10\n", - " combinedpruning\n", + " BFS\n", + " datagen-8_4-fb\n", + " 627415849\n", + " 251.011329\n", + " 241.785784\n", + " 57850630\n", + " 1.038156\n", + " 10.845445\n", + " \n", + " \n", + " 11\n", + " BFS\n", + " datagen-8_4-fb\n", + " 627415849\n", + " 251.314435\n", + " 241.785784\n", + " 57850630\n", + " 1.039409\n", + " 10.845445\n", + " \n", + " \n", + " 12\n", " BFS\n", " datagen-8_8-zf\n", - " 1\n", - " Text\n", - " False\n", " 158742\n", - " 7\n", - " 168308893\n", - " 21\n", - " 202.223527\n", + " 277.666098\n", + " 218.721579\n", + " 2703435298\n", + " 1.269496\n", + " 0.000059\n", " \n", " \n", - " 8\n", - " combinedpruning\n", + " 13\n", + " BFS\n", + " datagen-8_8-zf\n", + " 158742\n", + " 232.212127\n", + " 218.721579\n", + " 2703435298\n", + " 1.061679\n", + " 0.000059\n", + " \n", + " \n", + " 14\n", + " BFS\n", + " datagen-8_8-zf\n", + " 158742\n", + " 248.930734\n", + " 218.721579\n", + " 2703435298\n", + " 1.138117\n", + " 0.000059\n", + " \n", + " \n", + " 15\n", " BFS\n", " graph500-22\n", - " 1\n", - " Text\n", - " False\n", " 0\n", - " 7\n", - " 2396657\n", - " 3\n", - " 28.202130\n", + " 30.484405\n", + " 32.865590\n", + " 23357988\n", + " 0.927548\n", + " 0.000000\n", + " \n", + " \n", + " 16\n", + " BFS\n", + " graph500-22\n", + " 0\n", + " 30.889342\n", + " 32.865590\n", + " 23357988\n", + " 0.939869\n", + " 0.000000\n", + " \n", + " \n", + " 17\n", + " BFS\n", + " graph500-22\n", + " 0\n", + " 31.083670\n", + " 32.865590\n", + " 23357988\n", + " 0.945782\n", + " 0.000000\n", " \n", " \n", " 18\n", - " combinedpruning\n", " PageRank\n", " cit-Patents\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 3774768\n", - " 35\n", - " 89.170014\n", + " 1216835328\n", + " 139.407468\n", + " 85.102944\n", + " 113070194\n", + " 1.638104\n", + " 10.761769\n", " \n", " \n", - " 13\n", - " combinedpruning\n", + " 19\n", + " PageRank\n", + " cit-Patents\n", + " 1216835328\n", + " 135.999596\n", + " 85.102944\n", + " 113070194\n", + " 1.598060\n", + " 10.761769\n", + " \n", + " \n", + " 20\n", + " PageRank\n", + " cit-Patents\n", + " 1216835328\n", + " 136.403280\n", + " 85.102944\n", + " 113070194\n", + " 1.602803\n", + " 10.761769\n", + " \n", + " \n", + " 21\n", " PageRank\n", " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 633432\n", - " 35\n", - " 35.329524\n", + " 240220188\n", + " 62.764366\n", + " 39.980476\n", + " 22202359\n", + " 1.569875\n", + " 10.819579\n", " \n", " \n", - " 3\n", - " combinedpruning\n", + " 22\n", + " PageRank\n", + " datagen-7_5-fb\n", + " 240244723\n", + " 62.195895\n", + " 39.980476\n", + " 22202359\n", + " 1.555657\n", + " 10.820685\n", + " \n", + " \n", + " 23\n", + " PageRank\n", + " datagen-7_5-fb\n", + " 240219503\n", + " 59.712338\n", + " 39.980476\n", + " 22202359\n", + " 1.493537\n", + " 10.819549\n", + " \n", + " \n", + " 24\n", " PageRank\n", " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 1387587\n", - " 35\n", - " 67.376054\n", + " 529857525\n", + " 105.311566\n", + " 69.879073\n", + " 48717778\n", + " 1.507054\n", + " 10.876061\n", " \n", " \n", - " 0\n", - " combinedpruning\n", + " 25\n", + " PageRank\n", + " datagen-7_9-fb\n", + " 529856565\n", + " 99.278926\n", + " 69.879073\n", + " 48717778\n", + " 1.420725\n", + " 10.876041\n", + " \n", + " \n", + " 26\n", + " PageRank\n", + " datagen-7_9-fb\n", + " 529899165\n", + " 102.904864\n", + " 69.879073\n", + " 48717778\n", + " 1.472613\n", + " 10.876916\n", + " \n", + " \n", + " 27\n", " PageRank\n", " datagen-8_4-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 3809084\n", - " 35\n", - " 237.889833\n", + " 1449757452\n", + " 354.785814\n", + " 215.872856\n", + " 134032310\n", + " 1.643494\n", + " 10.816477\n", " \n", " \n", - " 11\n", - " combinedpruning\n", + " 28\n", + " PageRank\n", + " datagen-8_4-fb\n", + " 1449551375\n", + " 346.038595\n", + " 215.872856\n", + " 134032310\n", + " 1.602974\n", + " 10.814940\n", + " \n", + " \n", + " 29\n", + " PageRank\n", + " datagen-8_4-fb\n", + " 1449656722\n", + " 346.665170\n", + " 215.872856\n", + " 134032310\n", + " 1.605877\n", + " 10.815726\n", + " \n", + " \n", + " 30\n", " PageRank\n", " datagen-8_8-zf\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 168308893\n", - " 35\n", - " 338.839341\n", + " 19163986710\n", + " 730.192982\n", + " 245.949348\n", + " 5970693132\n", + " 2.968875\n", + " 3.209675\n", + " \n", + " \n", + " 31\n", + " PageRank\n", + " datagen-8_8-zf\n", + " 19164080737\n", + " 608.950502\n", + " 245.949348\n", + " 5970693132\n", + " 2.475918\n", + " 3.209691\n", + " \n", + " \n", + " 32\n", + " PageRank\n", + " datagen-8_8-zf\n", + " 19157802727\n", + " 547.495471\n", + " 245.949348\n", + " 5970693132\n", + " 2.226050\n", + " 3.208640\n", + " \n", + " \n", + " 33\n", + " PageRank\n", + " graph500-22\n", + " 768876384\n", + " 119.630991\n", + " 78.376377\n", + " 71264722\n", + " 1.526365\n", + " 10.789018\n", + " \n", + " \n", + " 34\n", + " PageRank\n", + " graph500-22\n", + " 768693660\n", + " 124.917254\n", + " 78.376377\n", + " 71264722\n", + " 1.593813\n", + " 10.786454\n", + " \n", + " \n", + " 35\n", + " PageRank\n", + " graph500-22\n", + " 768876374\n", + " 129.000026\n", + " 78.376377\n", + " 71264722\n", + " 1.645904\n", + " 10.789018\n", + " \n", + " \n", + " 36\n", + " SSSP\n", + " datagen-7_5-fb\n", + " 133167568\n", + " 44.230464\n", + " 38.116547\n", + " 22202359\n", + " 1.160401\n", + " 5.997902\n", " \n", " \n", - " 20\n", - " combinedpruning\n", - " PageRank\n", - " graph500-22\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 2396657\n", - " 35\n", - " 86.850061\n", + " 37\n", + " SSSP\n", + " datagen-7_5-fb\n", + " 133167568\n", + " 39.447449\n", + " 38.116547\n", + " 22202359\n", + " 1.034917\n", + " 5.997902\n", " \n", " \n", - " 4\n", - " combinedpruning\n", + " 38\n", " SSSP\n", " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", " 133167568\n", - " 7\n", - " 633432\n", - " 30\n", - " 43.168527\n", + " 58.484370\n", + " 38.116547\n", + " 22202359\n", + " 1.534356\n", + " 5.997902\n", " \n", " \n", - " 17\n", - " combinedpruning\n", + " 39\n", " SSSP\n", " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", " 337239306\n", - " 7\n", - " 1387587\n", - " 32\n", - " 102.904335\n", + " 68.398051\n", + " 76.495710\n", + " 48717778\n", + " 0.894142\n", + " 6.922305\n", " \n", " \n", - " 14\n", - " combinedpruning\n", + " 40\n", + " SSSP\n", + " datagen-7_9-fb\n", + " 337239306\n", + " 68.356443\n", + " 76.495710\n", + " 48717778\n", + " 0.893598\n", + " 6.922305\n", + " \n", + " \n", + " 41\n", + " SSSP\n", + " datagen-7_9-fb\n", + " 337239306\n", + " 88.070066\n", + " 76.495710\n", + " 48717778\n", + " 1.151307\n", + " 6.922305\n", + " \n", + " \n", + " 42\n", " SSSP\n", " datagen-8_4-fb\n", - " 1\n", - " Text\n", - " False\n", " 891772088\n", - " 7\n", - " 3809084\n", - " 36\n", - " 305.687841\n", + " 277.561039\n", + " 255.830169\n", + " 134032310\n", + " 1.084943\n", + " 6.653411\n", " \n", " \n", - " 5\n", - " combinedpruning\n", + " 43\n", + " SSSP\n", + " datagen-8_4-fb\n", + " 891772088\n", + " 289.099961\n", + " 255.830169\n", + " 134032310\n", + " 1.130046\n", + " 6.653411\n", + " \n", + " \n", + " 44\n", + " SSSP\n", + " datagen-8_4-fb\n", + " 891772088\n", + " 294.068455\n", + " 255.830169\n", + " 134032310\n", + " 1.149467\n", + " 6.653411\n", + " \n", + " \n", + " 45\n", " SSSP\n", " datagen-8_8-zf\n", - " 1\n", - " Text\n", - " False\n", " 192342\n", - " 7\n", - " 168308893\n", - " 22\n", - " 223.981237\n", + " 215.504152\n", + " 209.249324\n", + " 5899340019\n", + " 1.029892\n", + " 0.000033\n", " \n", " \n", - " 9\n", - " combinedpruning\n", - " WCC\n", - " cit-Patents\n", - " 1\n", - " Text\n", - " False\n", - " 965132860\n", - " 7\n", - " 3774768\n", - " 41\n", - " 187.507095\n", + " 46\n", + " SSSP\n", + " datagen-8_8-zf\n", + " 192342\n", + " 202.215887\n", + " 209.249324\n", + " 5899340019\n", + " 0.966387\n", + " 0.000033\n", " \n", " \n", - " 19\n", - " combinedpruning\n", - " WCC\n", - " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 58425032\n", - " 7\n", - " 633432\n", - " 13\n", - " 37.925038\n", + " 47\n", + " SSSP\n", + " datagen-8_8-zf\n", + " 192342\n", + " 204.070694\n", + " 209.249324\n", + " 5899340019\n", + " 0.975251\n", + " 0.000033\n", " \n", " \n", - " 12\n", - " combinedpruning\n", + " 48\n", " WCC\n", - " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 129855334\n", - " 7\n", - " 1387587\n", - " 13\n", - " 76.020076\n", + " cit-Patents\n", + " 965132860\n", + " 188.315644\n", + " 157.944986\n", + " 37635956\n", + " 1.192286\n", + " 25.643904\n", " \n", " \n", - " 15\n", - " combinedpruning\n", + " 49\n", " WCC\n", - " datagen-8_4-fb\n", - " 1\n", - " Text\n", - " False\n", - " 364443597\n", - " 7\n", - " 3809084\n", - " 13\n", - " 257.643940\n", + " cit-Patents\n", + " 965132860\n", + " 181.747936\n", + " 157.944986\n", + " 37635956\n", + " 1.150704\n", + " 25.643904\n", " \n", " \n", - " 16\n", - " combinedpruning\n", + " 50\n", " WCC\n", - " graph500-22\n", - " 1\n", - " Text\n", - " False\n", - " 184374609\n", - " 7\n", - " 2396657\n", - " 15\n", - " 75.913845\n", - " \n", - " \n", - "\n", - "" - ], - "text/plain": [ - " config algorithm dataset run storage_format compressed \\\n", - "6 combinedpruning BFS cit-Patents 1 Text False \n", - "2 combinedpruning BFS datagen-7_5-fb 1 Text False \n", - "1 combinedpruning BFS datagen-7_9-fb 1 Text False \n", - "7 combinedpruning BFS datagen-8_4-fb 1 Text False \n", - "10 combinedpruning BFS datagen-8_8-zf 1 Text False \n", - "8 combinedpruning BFS graph500-22 1 Text False \n", - "18 combinedpruning PageRank cit-Patents 1 Text False \n", - "13 combinedpruning PageRank datagen-7_5-fb 1 Text False \n", - "3 combinedpruning PageRank datagen-7_9-fb 1 Text False \n", - "0 combinedpruning PageRank datagen-8_4-fb 1 Text False \n", - "11 combinedpruning PageRank datagen-8_8-zf 1 Text False \n", - "20 combinedpruning PageRank graph500-22 1 Text False \n", - "4 combinedpruning SSSP datagen-7_5-fb 1 Text False \n", - "17 combinedpruning SSSP datagen-7_9-fb 1 Text False \n", - "14 combinedpruning SSSP datagen-8_4-fb 1 Text False \n", - "5 combinedpruning SSSP datagen-8_8-zf 1 Text False \n", - "9 combinedpruning WCC cit-Patents 1 Text False \n", - "19 combinedpruning WCC datagen-7_5-fb 1 Text False \n", - "12 combinedpruning WCC datagen-7_9-fb 1 Text False \n", - "15 combinedpruning WCC datagen-8_4-fb 1 Text False \n", - "16 combinedpruning WCC graph500-22 1 Text False \n", - "\n", - " total_size nr_executors nr_vertices iterations duration \n", - "6 50535334 7 3774768 43 97.991459 \n", - "2 99098460 7 633432 29 40.551124 \n", - "1 242483153 7 1387587 31 110.392218 \n", - "7 627415849 7 3809084 35 265.831706 \n", - "10 158742 7 168308893 21 202.223527 \n", - "8 0 7 2396657 3 28.202130 \n", - "18 0 7 3774768 35 89.170014 \n", - "13 0 7 633432 35 35.329524 \n", - "3 0 7 1387587 35 67.376054 \n", - "0 0 7 3809084 35 237.889833 \n", - "11 0 7 168308893 35 338.839341 \n", - "20 0 7 2396657 35 86.850061 \n", - "4 133167568 7 633432 30 43.168527 \n", - "17 337239306 7 1387587 32 102.904335 \n", - "14 891772088 7 3809084 36 305.687841 \n", - "5 192342 7 168308893 22 223.981237 \n", - "9 965132860 7 3774768 41 187.507095 \n", - "19 58425032 7 633432 13 37.925038 \n", - "12 129855334 7 1387587 13 76.020076 \n", - "15 364443597 7 3809084 13 257.643940 \n", - "16 184374609 7 2396657 15 75.913845 " - ] - }, - "execution_count": 175, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data_dir = Path(\"das6\") / \"20240521-111351-combinedpruning\"\n", - "combined = parse_experiment_output(root_dir / \"data\" / data_dir)\n", - "combined.sort_values(by=[\"algorithm\", \"dataset\", \"storage_format\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 176, - "id": "a263c18b-ea83-4f99-872c-42f37609a46c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
    configalgorithmdatasetrunstorage_formatcompressedtotal_sizenr_executorsnr_verticesiterationsdurationbaseline_durationoverhead
    4combinedpruningBFScit-Patents1TextFalse50535334737747684397.991459101.9735190.960950965132860186.614632157.944986376359561.18151725.643904
    1combinedpruningBFS51WCCdatagen-7_5-fb1TextFalse9909846076334322940.55112441.1423540.9856305842503237.80340136.76840695337191.0281496.128252
    0combinedpruningBFSdatagen-7_9-fb1TextFalse2424831537138758731110.39221861.4505921.79643952WCCdatagen-7_5-fb5842503240.72579036.76840695337191.1076306.128252
    5combinedpruningBFSgraph500-221TextFalse072396657328.20213042.7111680.66029953WCCdatagen-7_5-fb5842503236.34517336.76840695337190.9884896.128252
    10combinedpruningPageRankcit-Patents1TextFalse0737747683589.170014142.7368470.62471654WCCdatagen-7_9-fb12985533476.45578266.344004209660381.1524146.193604
    8combinedpruningPageRankdatagen-7_5-fb1TextFalse076334323535.32952461.6125380.57341555WCCdatagen-7_9-fb12985533466.18851466.344004209660380.9976566.193604
    2combinedpruningPageRank56WCCdatagen-7_9-fb1TextFalse0713875873567.376054115.1571190.58507912985533470.41094666.344004209660381.0613016.193604
    3combinedpruningSSSPdatagen-7_5-fb1TextFalse13316756876334323043.16852741.1571251.04887157WCCdatagen-8_4-fb364443597245.917923239.018332578506301.0288666.299734
    9combinedpruningSSSPdatagen-7_9-fb1TextFalse3372393067138758732102.90433592.1441271.11677658WCCdatagen-8_4-fb364443597254.852829239.018332578506301.0662486.299734
    6combinedpruning59WCCcit-Patents1TextFalse9651328607377476841187.507095190.5493380.984034datagen-8_4-fb364443597254.553055239.018332578506301.0649946.299734
    11combinedpruning60WCCdatagen-7_5-fb1TextFalse5842503276334321337.92503839.3828440.962984graph500-2218437460973.37291372.045441233396531.0184257.899629
    7combinedpruning61WCCdatagen-7_9-fb1TextFalse129855334713875871376.02007674.1738661.024890graph500-2218437460971.55736672.045441233396530.9932257.899629
    62WCCgraph500-2218437460971.92249172.045441233396530.9982937.899629
    \n", "
    " ], "text/plain": [ - " config algorithm dataset run storage_format compressed \\\n", - "4 combinedpruning BFS cit-Patents 1 Text False \n", - "1 combinedpruning BFS datagen-7_5-fb 1 Text False \n", - "0 combinedpruning BFS datagen-7_9-fb 1 Text False \n", - "5 combinedpruning BFS graph500-22 1 Text False \n", - "10 combinedpruning PageRank cit-Patents 1 Text False \n", - "8 combinedpruning PageRank datagen-7_5-fb 1 Text False \n", - "2 combinedpruning PageRank datagen-7_9-fb 1 Text False \n", - "3 combinedpruning SSSP datagen-7_5-fb 1 Text False \n", - "9 combinedpruning SSSP datagen-7_9-fb 1 Text False \n", - "6 combinedpruning WCC cit-Patents 1 Text False \n", - "11 combinedpruning WCC datagen-7_5-fb 1 Text False \n", - "7 combinedpruning WCC datagen-7_9-fb 1 Text False \n", + " algorithm dataset size_combined duration_combined \\\n", + "0 BFS cit-Patents 50535334 86.595101 \n", + "1 BFS cit-Patents 50535334 84.816436 \n", + "2 BFS cit-Patents 50535334 90.772743 \n", + "3 BFS datagen-7_5-fb 99098460 47.654069 \n", + "4 BFS datagen-7_5-fb 99098460 47.914694 \n", + "5 BFS datagen-7_5-fb 99098460 49.001435 \n", + "6 BFS datagen-7_9-fb 242483153 89.260519 \n", + "7 BFS datagen-7_9-fb 242483153 84.558765 \n", + "8 BFS datagen-7_9-fb 242483153 89.686504 \n", + "9 BFS datagen-8_4-fb 627415849 255.926213 \n", + "10 BFS datagen-8_4-fb 627415849 251.011329 \n", + "11 BFS datagen-8_4-fb 627415849 251.314435 \n", + "12 BFS datagen-8_8-zf 158742 277.666098 \n", + "13 BFS datagen-8_8-zf 158742 232.212127 \n", + "14 BFS datagen-8_8-zf 158742 248.930734 \n", + "15 BFS graph500-22 0 30.484405 \n", + "16 BFS graph500-22 0 30.889342 \n", + "17 BFS graph500-22 0 31.083670 \n", + "18 PageRank cit-Patents 1216835328 139.407468 \n", + "19 PageRank cit-Patents 1216835328 135.999596 \n", + "20 PageRank cit-Patents 1216835328 136.403280 \n", + "21 PageRank datagen-7_5-fb 240220188 62.764366 \n", + "22 PageRank datagen-7_5-fb 240244723 62.195895 \n", + "23 PageRank datagen-7_5-fb 240219503 59.712338 \n", + "24 PageRank datagen-7_9-fb 529857525 105.311566 \n", + "25 PageRank datagen-7_9-fb 529856565 99.278926 \n", + "26 PageRank datagen-7_9-fb 529899165 102.904864 \n", + "27 PageRank datagen-8_4-fb 1449757452 354.785814 \n", + "28 PageRank datagen-8_4-fb 1449551375 346.038595 \n", + "29 PageRank datagen-8_4-fb 1449656722 346.665170 \n", + "30 PageRank datagen-8_8-zf 19163986710 730.192982 \n", + "31 PageRank datagen-8_8-zf 19164080737 608.950502 \n", + "32 PageRank datagen-8_8-zf 19157802727 547.495471 \n", + "33 PageRank graph500-22 768876384 119.630991 \n", + "34 PageRank graph500-22 768693660 124.917254 \n", + "35 PageRank graph500-22 768876374 129.000026 \n", + "36 SSSP datagen-7_5-fb 133167568 44.230464 \n", + "37 SSSP datagen-7_5-fb 133167568 39.447449 \n", + "38 SSSP datagen-7_5-fb 133167568 58.484370 \n", + "39 SSSP datagen-7_9-fb 337239306 68.398051 \n", + "40 SSSP datagen-7_9-fb 337239306 68.356443 \n", + "41 SSSP datagen-7_9-fb 337239306 88.070066 \n", + "42 SSSP datagen-8_4-fb 891772088 277.561039 \n", + "43 SSSP datagen-8_4-fb 891772088 289.099961 \n", + "44 SSSP datagen-8_4-fb 891772088 294.068455 \n", + "45 SSSP datagen-8_8-zf 192342 215.504152 \n", + "46 SSSP datagen-8_8-zf 192342 202.215887 \n", + "47 SSSP datagen-8_8-zf 192342 204.070694 \n", + "48 WCC cit-Patents 965132860 188.315644 \n", + "49 WCC cit-Patents 965132860 181.747936 \n", + "50 WCC cit-Patents 965132860 186.614632 \n", + "51 WCC datagen-7_5-fb 58425032 37.803401 \n", + "52 WCC datagen-7_5-fb 58425032 40.725790 \n", + "53 WCC datagen-7_5-fb 58425032 36.345173 \n", + "54 WCC datagen-7_9-fb 129855334 76.455782 \n", + "55 WCC datagen-7_9-fb 129855334 66.188514 \n", + "56 WCC datagen-7_9-fb 129855334 70.410946 \n", + "57 WCC datagen-8_4-fb 364443597 245.917923 \n", + "58 WCC datagen-8_4-fb 364443597 254.852829 \n", + "59 WCC datagen-8_4-fb 364443597 254.553055 \n", + "60 WCC graph500-22 184374609 73.372913 \n", + "61 WCC graph500-22 184374609 71.557366 \n", + "62 WCC graph500-22 184374609 71.922491 \n", "\n", - " total_size nr_executors nr_vertices iterations duration \\\n", - "4 50535334 7 3774768 43 97.991459 \n", - "1 99098460 7 633432 29 40.551124 \n", - "0 242483153 7 1387587 31 110.392218 \n", - "5 0 7 2396657 3 28.202130 \n", - "10 0 7 3774768 35 89.170014 \n", - "8 0 7 633432 35 35.329524 \n", - "2 0 7 1387587 35 67.376054 \n", - "3 133167568 7 633432 30 43.168527 \n", - "9 337239306 7 1387587 32 102.904335 \n", - "6 965132860 7 3774768 41 187.507095 \n", - "11 58425032 7 633432 13 37.925038 \n", - "7 129855334 7 1387587 13 76.020076 \n", - "\n", - " baseline_duration overhead \n", - "4 101.973519 0.960950 \n", - "1 41.142354 0.985630 \n", - "0 61.450592 1.796439 \n", - "5 42.711168 0.660299 \n", - "10 142.736847 0.624716 \n", - "8 61.612538 0.573415 \n", - "2 115.157119 0.585079 \n", - "3 41.157125 1.048871 \n", - "9 92.144127 1.116776 \n", - "6 190.549338 0.984034 \n", - "11 39.382844 0.962984 \n", - "7 74.173866 1.024890 " + " duration_baseline size_baseline overhead_duration overhead_size \n", + "0 82.968899 100187504 1.043706 0.504408 \n", + "1 82.968899 100187504 1.022268 0.504408 \n", + "2 82.968899 100187504 1.094057 0.504408 \n", + "3 34.323108 9533719 1.388396 10.394523 \n", + "4 34.323108 9533719 1.395989 10.394523 \n", + "5 34.323108 9533719 1.427651 10.394523 \n", + "6 69.310011 20966038 1.287845 11.565521 \n", + "7 69.310011 20966038 1.220008 11.565521 \n", + "8 69.310011 20966038 1.293991 11.565521 \n", + "9 241.785784 57850630 1.058483 10.845445 \n", + "10 241.785784 57850630 1.038156 10.845445 \n", + "11 241.785784 57850630 1.039409 10.845445 \n", + "12 218.721579 2703435298 1.269496 0.000059 \n", + "13 218.721579 2703435298 1.061679 0.000059 \n", + "14 218.721579 2703435298 1.138117 0.000059 \n", + "15 32.865590 23357988 0.927548 0.000000 \n", + "16 32.865590 23357988 0.939869 0.000000 \n", + "17 32.865590 23357988 0.945782 0.000000 \n", + "18 85.102944 113070194 1.638104 10.761769 \n", + "19 85.102944 113070194 1.598060 10.761769 \n", + "20 85.102944 113070194 1.602803 10.761769 \n", + "21 39.980476 22202359 1.569875 10.819579 \n", + "22 39.980476 22202359 1.555657 10.820685 \n", + "23 39.980476 22202359 1.493537 10.819549 \n", + "24 69.879073 48717778 1.507054 10.876061 \n", + "25 69.879073 48717778 1.420725 10.876041 \n", + "26 69.879073 48717778 1.472613 10.876916 \n", + "27 215.872856 134032310 1.643494 10.816477 \n", + "28 215.872856 134032310 1.602974 10.814940 \n", + "29 215.872856 134032310 1.605877 10.815726 \n", + "30 245.949348 5970693132 2.968875 3.209675 \n", + "31 245.949348 5970693132 2.475918 3.209691 \n", + "32 245.949348 5970693132 2.226050 3.208640 \n", + "33 78.376377 71264722 1.526365 10.789018 \n", + "34 78.376377 71264722 1.593813 10.786454 \n", + "35 78.376377 71264722 1.645904 10.789018 \n", + "36 38.116547 22202359 1.160401 5.997902 \n", + "37 38.116547 22202359 1.034917 5.997902 \n", + "38 38.116547 22202359 1.534356 5.997902 \n", + "39 76.495710 48717778 0.894142 6.922305 \n", + "40 76.495710 48717778 0.893598 6.922305 \n", + "41 76.495710 48717778 1.151307 6.922305 \n", + "42 255.830169 134032310 1.084943 6.653411 \n", + "43 255.830169 134032310 1.130046 6.653411 \n", + "44 255.830169 134032310 1.149467 6.653411 \n", + "45 209.249324 5899340019 1.029892 0.000033 \n", + "46 209.249324 5899340019 0.966387 0.000033 \n", + "47 209.249324 5899340019 0.975251 0.000033 \n", + "48 157.944986 37635956 1.192286 25.643904 \n", + "49 157.944986 37635956 1.150704 25.643904 \n", + "50 157.944986 37635956 1.181517 25.643904 \n", + "51 36.768406 9533719 1.028149 6.128252 \n", + "52 36.768406 9533719 1.107630 6.128252 \n", + "53 36.768406 9533719 0.988489 6.128252 \n", + "54 66.344004 20966038 1.152414 6.193604 \n", + "55 66.344004 20966038 0.997656 6.193604 \n", + "56 66.344004 20966038 1.061301 6.193604 \n", + "57 239.018332 57850630 1.028866 6.299734 \n", + "58 239.018332 57850630 1.066248 6.299734 \n", + "59 239.018332 57850630 1.064994 6.299734 \n", + "60 72.045441 23339653 1.018425 7.899629 \n", + "61 72.045441 23339653 0.993225 7.899629 \n", + "62 72.045441 23339653 0.998293 7.899629 " ] }, - "execution_count": 176, + "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "combined_compare_duration = merge_compare(storage_baseline, combined, metric=\"duration\")\n", - "combined_compare_duration.sort_values(by=[\"algorithm\", \"dataset\", \"storage_format\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 177, - "id": "e0055ab1-46cd-4f0d-999b-c32e1f46d49c", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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rhz69++PI0eOZOsVgGKpUKECDh06hKlTp6JOnTqIjo5W9Wp16NABO3bswHfffae2TqtWreDp6Ym2bduidOnSePbsGSIjIyGTyTBp0iQcPnwYXbp0AZDxeZ4uLi44dOgQ+vTpAysrKwQEBMDExATjxo3T+qYI5XMFL1++rHF+8eLFsXXrVsyYMQPVq1dHeHg4Xr16hQ4dOmD//v0an48JfOwd9fT0RJcuXVCiRAk8e/YMqampGDp0KA4dOqTVY0ukUim2bt2KyZMno3r16nj//j0CAwOhr6+PTp06YefOnVi7di2MjIwgl8vV7kS2s7PDokWLUKlSJcjlckRGRqoea5WZGjVq4NixYxgzZgyqVq2KsLAwhISEwN7eHqNGjcKRI0fUHqSe19LftPNpwDQ0NFT1GleuXFntwf+fo03b5EZW+zMyMsK6deuwbNkyNG/eHMnJyfD390dqaioaN26MxYsXY/ny5aoxt8+fP8fChQsBAN999x2cnZ3V9lWiRAnMnj0bwMdHoP3zzz+qeQsXLoSrqyv09fURHByMkJCQXB9b165dcfjwYfTu3RulSpVCUFAQ3rx5g3r16mH27Nnw9PT87PN480P//v2xZcsWuLq6olixYggKClINrZg9ezb27dunCoefnoc+124JCQnw9fWFvr4+vv766/w6JJ2TCPk1yISIqBBITU1Fx44dERoaimPHjmX6nE0iouzYuXMnPDw80L17dyxatEjX5eQb9mASEaUjlUoxatQoAMjweCQiopzav38/pFIpfvjhB12Xkq8YMImIPvHNN9+gcuXKOHjw4BfzWjciEt+1a9fg7++P7t27Zzp8pqhiwCQi+oS+vj5+/fVXvH//HmvWrNF1OURUCKWlpWHx4sUoU6YMpk6dquty8h0DJhGRBnXq1MH333+PvXv3inKzAxF9WQ4dOoSAgAAsWrRI7V3kXwre5ENEREREomIPJhERERGJigGTiIiIiETFgElEREREomLAJCIiIiJRMWASERERkagYMImIiIhIVAyYRERERCQqBkwiIiIiEhUDJhERERGJ6v8A5rCTUGDFuBIAAAAASUVORK5CYII=", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "order = combined_compare_duration.groupby(by=[\"algorithm\"])[\"overhead\"].median().sort_values(ascending=False).index\n", - "b = sns.boxplot(data=combined_compare_duration, x=\"overhead\", y=\"algorithm\", hue=\"algorithm\", palette=algorithm_colors, order=order)\n", - "b.set_xlabel(\"Overhead (duration with text format)\")\n", - "b.set_ylabel(\"Algorithms\")\n", - "write_dir = (plot_dir / data_dir)\n", - "write_dir.mkdir(exist_ok=True, parents=True)\n", - "plt.savefig(write_dir / \"overhead-duration.pdf\", bbox_inches='tight')" + "combined_compare = pd.merge(combined, baseline_stats_copy, on=[\"algorithm\", \"dataset\"], suffixes=(\"_combined\", \"_baseline\"))\n", + "combined_compare[\"overhead_duration\"] = combined_compare[\"duration_combined\"] / combined_compare[\"duration_baseline\"]\n", + "combined_compare[\"overhead_size\"] = combined_compare[\"size_combined\"] / combined_compare[\"size_baseline\"]\n", + "combined_compare" ] }, { "cell_type": "code", - "execution_count": 178, - "id": "640f02ee-b139-4810-9f74-faf7befd81df", + "execution_count": 52, + "id": "ff24a69c", "metadata": {}, "outputs": [ { @@ -11923,207 +13583,141 @@ " \n", " \n", " \n", - " config\n", " algorithm\n", " dataset\n", - " run\n", - " storage_format\n", - " compressed\n", - " total_size\n", - " nr_executors\n", - " nr_vertices\n", - " iterations\n", - " duration\n", - " baseline_total_size\n", - " overhead\n", + " size_combined\n", + " duration_combined\n", + " duration_baseline\n", + " size_baseline\n", + " overhead_duration\n", + " overhead_size\n", " \n", " \n", " \n", " \n", - " 3\n", - " combinedpruning\n", + " 0\n", " BFS\n", " cit-Patents\n", - " 1\n", - " Text\n", - " False\n", " 50535334\n", - " 7\n", - " 3774768\n", - " 43\n", - " 97.991459\n", - " 2525597803\n", - " 0.020009\n", + " 86.595101\n", + " 82.968899\n", + " 100187504\n", + " 1.043706\n", + " 0.504408\n", " \n", " \n", " 1\n", - " combinedpruning\n", - " BFS\n", - " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 99098460\n", - " 7\n", - " 633432\n", - " 29\n", - " 40.551124\n", - " 256529225\n", - " 0.386305\n", - " \n", - " \n", - " 0\n", - " combinedpruning\n", " BFS\n", - " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 242483153\n", - " 7\n", - " 1387587\n", - " 31\n", - " 110.392218\n", - " 581855399\n", - " 0.416741\n", + " cit-Patents\n", + " 50535334\n", + " 84.816436\n", + " 82.968899\n", + " 100187504\n", + " 1.022268\n", + " 0.504408\n", " \n", " \n", " 2\n", - " combinedpruning\n", - " SSSP\n", - " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 133167568\n", - " 7\n", - " 633432\n", - " 30\n", - " 43.168527\n", - " 254670929\n", - " 0.522901\n", - " \n", - " \n", - " 6\n", - " combinedpruning\n", - " SSSP\n", - " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 337239306\n", - " 7\n", - " 1387587\n", - " 32\n", - " 102.904335\n", - " 601133226\n", - " 0.561006\n", - " \n", - " \n", - " 4\n", - " combinedpruning\n", - " WCC\n", + " BFS\n", " cit-Patents\n", - " 1\n", - " Text\n", - " False\n", - " 965132860\n", - " 7\n", - " 3774768\n", - " 41\n", - " 187.507095\n", - " 1100333124\n", - " 0.877128\n", - " \n", - " \n", - " 7\n", - " combinedpruning\n", - " WCC\n", - " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 58425032\n", - " 7\n", - " 633432\n", - " 13\n", - " 37.925038\n", - " 94026180\n", - " 0.621370\n", - " \n", - " \n", - " 5\n", - " combinedpruning\n", - " WCC\n", - " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 129855334\n", - " 7\n", - " 1387587\n", - " 13\n", - " 76.020076\n", - " 208169138\n", - " 0.623797\n", + " 50535334\n", + " 90.772743\n", + " 82.968899\n", + " 100187504\n", + " 1.094057\n", + " 0.504408\n", " \n", " \n", "\n", "" ], "text/plain": [ - " config algorithm dataset run storage_format compressed \\\n", - "3 combinedpruning BFS cit-Patents 1 Text False \n", - "1 combinedpruning BFS datagen-7_5-fb 1 Text False \n", - "0 combinedpruning BFS datagen-7_9-fb 1 Text False \n", - "2 combinedpruning SSSP datagen-7_5-fb 1 Text False \n", - "6 combinedpruning SSSP datagen-7_9-fb 1 Text False \n", - "4 combinedpruning WCC cit-Patents 1 Text False \n", - "7 combinedpruning WCC datagen-7_5-fb 1 Text False \n", - "5 combinedpruning WCC datagen-7_9-fb 1 Text False \n", - "\n", - " total_size nr_executors nr_vertices iterations duration \\\n", - "3 50535334 7 3774768 43 97.991459 \n", - "1 99098460 7 633432 29 40.551124 \n", - "0 242483153 7 1387587 31 110.392218 \n", - "2 133167568 7 633432 30 43.168527 \n", - "6 337239306 7 1387587 32 102.904335 \n", - "4 965132860 7 3774768 41 187.507095 \n", - "7 58425032 7 633432 13 37.925038 \n", - "5 129855334 7 1387587 13 76.020076 \n", + " algorithm dataset size_combined duration_combined duration_baseline \\\n", + "0 BFS cit-Patents 50535334 86.595101 82.968899 \n", + "1 BFS cit-Patents 50535334 84.816436 82.968899 \n", + "2 BFS cit-Patents 50535334 90.772743 82.968899 \n", "\n", - " baseline_total_size overhead \n", - "3 2525597803 0.020009 \n", - "1 256529225 0.386305 \n", - "0 581855399 0.416741 \n", - "2 254670929 0.522901 \n", - "6 601133226 0.561006 \n", - "4 1100333124 0.877128 \n", - "7 94026180 0.621370 \n", - "5 208169138 0.623797 " + " size_baseline overhead_duration overhead_size \n", + "0 100187504 1.043706 0.504408 \n", + "1 100187504 1.022268 0.504408 \n", + "2 100187504 1.094057 0.504408 " ] }, - "execution_count": 178, + "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "combined_compare_size = merge_compare(storage_baseline, combined[combined[\"total_size\"] > 0], metric=\"total_size\")\n", - "combined_compare_size.sort_values(by=[\"algorithm\", \"dataset\", \"storage_format\"])" + "combined_compare[(combined_compare[\"algorithm\"] == \"BFS\") & (combined_compare[\"dataset\"] == \"cit-Patents\")]" + ] + }, + { + "cell_type": "markdown", + "id": "390dbb8a", + "metadata": {}, + "source": [ + "## Duration" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "a1a700fe", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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eXl6eqp27dpydHTUuXPndODAAR04cEBXr17VwIEDLe2Hhobq1VdfVWhoqIoWLarmzZsrPDxc8+bN0/79+9NcUfXcuXN6/fXXFRYWpqJFi6px48a6e/euDhw4oN27d+utt97SiBEjUp137Ngxfffdd3J3d1etWrUUFRWlQ4cOafr06bp48aKmTJnyyO/77du39cUXX0iSJkyYICcnp0e+VrLTp0/LbDardOnS+vbbb/X7778rJCRE7u7uatiwoQYPHqyyZctm6Fre3t7q2LGj9uzZo4iICPn4+KhIkSKqXbt2iuO+/PJLnTt3TlWrVlWLFi10/PhxLVmyRBs3btSSJUtUunRpq19XWgjfAAAAAABAjrB8+XJt2bJFzzzzjH788UcVLlxYknTx4kW99tprqY7//PPPFR4ert69e2vixIkyGAySpMTERE2dOlVLly7VggUL9Pzzz6tAgQKaMWOGBg8erGvXrqlnz57q1q2b5Vpz587V+fPn1aJFC3399deWAMpsNmvevHn64osvtGDBghTh24QJExQaGqru3btr0qRJcnZ2liRt375dQ4cOlclkSlFvYmKihg4dqrCwML355psaNmyYHB3vRTeBgYHq37+/5syZYxlBd79t27apW7dumjBhglxdXSVJf/75p95++2398ssvGj58uDw9PR/pfV+wYIFu3Lih5s2bpzsfXGYlP3K6Z88eHT58WPXq1ZOXl5dOnTqldevWadOmTZo7d26GVlNt27at2rZtq5dfflkRERF69dVX01zV9Ny5c5oyZYp69Ogh6d5jqh988IHWrVuncePGacmSJTZ5bf/GY6cAAAAAACBHSA5HJk2aZAneJKls2bL64IMPUh1fpEgRNW7cWCNHjrQEb5Lk6OioXr16SZIuX76cobbz5Mmjpk2b6r333ksx8stgMKhPnz6SpIiICMXGxkqSAgICtHv3bnl5eaUI3iSpWbNmGjAg9Uqwf/75py5cuKA6deronXfesQRvklShQgXLY5Tff/99qnNz586tiRMnWoI3SWrTpo1KlCghs9msc+fOZeh1/ltMTIzlfX/77bcf6RppSQ7f6tSpo82bN2v+/PmaN2+etm7dqr59+yo6OlojRoxQVFSUzdps2bKlJXiTJGdnZ3388cfy8PDQoUOHFBAQYLO27kf4BgAAAAAAsr3w8HCdP39e7u7uaY6+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b061T5JOnDihNm3aaNCgQXZbmfN+yXPZPfvssza/9qpVq9S/f3/98ssvqfadPn1aR48eVf78+R8693hmpPW5SUxM1KZNmyT9b3FCWyN8AwAA/5+9+w6PotzbOH5vGkkInYQeBDShN0NVQRBQASXgESkKcuigAkdBQFH0UGwgR+mIAioqvemRXqQnNAGlBUJNAUILSUjZef/g3T1ZkmBCdtksfj/X5WV26m+XSZ7Ze2aeBwAAwCX07NlTkvTBBx/o1KlT1ulRUVEaPXq0zbJFihSRJEVERNgsK0m//PKLpk2bJinjaJqWQQuuX7+eYVtXrlxReHi4zfI7duzQ2LFjra9v3bol6fYdWyEhIYqKitKHH35oE8CFh4db959e69atVapUKW3atEmTJk2yWSc2NlYjR47UmTNnFBAQ4LBHJNOz9P9tz4EWLFq0aCGTyaQ5c+bY9NMXFRWlN998U4ZhqG/fvvL19bXbPtesWaMFCxZYX6empmrMmDGKjIxUtWrVshzoIrd47BQAAAAAALiE0NBQhYeHa+HChXr++efVsGFDubu7a+fOnfL391fx4sV16dIlSbfvIqtRo4YOHjyodu3aqV69evLx8dHRo0d15swZlSlTRleuXFFCQoKuXr2qwoULS5IqVKggSZo8ebL27Nmjdu3aqUWLFmrVqpXWrFmjbt26KSQkRIULF9apU6d07NgxFSlSRP7+/rp48aIuXbqkEiVKSJLGjx+vLl26aMGCBfrtt99Us2ZNxcXFac+ePQoMDFRkZKRN32358uXTF198od69e2vatGlavHixqlatqtTUVIWFhenWrVuqVauWhg0bdl8+b8vjmJk9FppbNWrUUK9evTRr1iw999xzqlevniRp165dunXrltq3b69XX33VrvusU6eORo0apR9++EGBgYE6dOiQzp07p5IlS2rixInZ7jcvpwjfAAAAAABwAaULlXB2CTniqHrHjBmjevXqaf78+QoPD5eXl5eeeuopDRs2TC+//LJ1OXd3d82ZM0czZ87UmjVrFBYWJnd3d5UrV06vvfaaevTooWHDhmn9+vVas2aNtY+1V199VadOndKmTZu0ZcsWVaxYUS1atNCECRM0d+5crVixQgcPHpTZbFbp0qXVo0cP9ezZUzNnztS8efO0Zs0aVatWTZIUGBioxYsXa8qUKdq0aZM2bNiggIAADRgwQI0bN1aXLl3k5+dn8/5q1qypFStWaPbs2dq8ebO2b98uX19fBQUFWfuCs9yd50jJycm6ceOGpKxHUs2tN998U+XKldMPP/ygnTt3Kn/+/KpVq5Y6d+6sZ5991u5hWN++fRUTE6O5c+dq/fr1Klq0qLp06aKBAweqePHidt1XeiYjJ2Pq5nFHjx6VJAUHBzu5EgAAcCfaaQAA7l1mAwy4Alet2x5u3Lih8+fPq0yZMipQoECG+f/97381ePBgtW3bVhMmTHBChbhfHqjfgOTkZMXHx1ufrwZy49atW9qzZw/HE+yC4wn25KrHE+007MlVfw+QN3E8wZ4cdTy5aoDlqnXbw5UrV9SuXTu1atVKMTExNvNiYmI0efJkScp0MAg8WB7Ix07T0tKcXQIeAJbjiOMJ9sDxBHty9ePJVetG3uLqvwfIWzieYE8cT7AIDAxUmzZt9PPPP6tFixaqW7euihQpori4OO3bt0/Jycnq2LGjnn76aWeXes/i4uI0bty4HK/Xv39/VapUyQEV5U0PZPgGAAAAAADgbJ9++qmaNGmipUuX6uTJk7py5YoKFy6sBg0aqGPHji5/11tCQoJWrlyZ4/VefPFFwjcAAAAAAADkjru7u0JDQxUaGursUhyibNmy1n59kbW/78PXAAAAAAAAgIMRvgEAAAAAAAAOQvgGAAAAAAAAOAjhGwAAAAAAAOAghG8AAAAAAACAgxC+AQAAAAAAAA5C+AYAAAAAAAA4COEbAAAAAAAA4CCEbwAAAAAAAICDEL4BAAAAAADcwTAMZ5eABwThGwAAAAAAeZxhNju7hHtyv+sODg5WcHCwrl+/fs/buHr1qj744AOtWLHCjpW5nri4OI0ZM0ZPPfWUqlevrpCQEL3yyiv69ddfHbrfN954Q8HBwVqyZEmO1zUMQzNnzlTLli1VvXp1NWjQQHPmzNHw4cMVHBysOXPm2L/gbPBwyl4BAAAAAEC2mdzctH/aDMVfiHJ2KdnmV7qUavfv6+wycmzUqFFas2aNatSo4exSnCYqKkqdOnVSdHS0AgIC1KRJE129elVhYWHavXu3evTooeHDh9t9vwsXLtTq1avvef3ly5drwoQJ8vDwUMOGDZU/f34FBwfryJEjdqwy5wjfAAAAAABwAfEXonT99Glnl/HAS0tLc3YJTvfRRx8pOjpabdu21fjx4+Xl5SVJCg8PV8+ePfXNN9+odevWqlmzpt32eerUKY0bNy5X29i7d68k6eWXX9aIESOs05cvX56r7eYWj50CAAAAAADA6rfffpMkDRo0yBq8SVJISIhatGghSdq9e7fd9pecnKw333xTbm5uqlq1aq62I0mlSpWyV2l2QfgGAAAAAABcRlpamr777juFhoaqdu3aevzxx/Xhhx/q2rVrmS4fFxenzz//XB06dFBISIiqVaumRo0aqXfv3tqyZYt1uXPnzik4OFjr16+XJI0YMSJD32Px8fGaOXOmOnXqpPr166tatWqqX7++XnnlFa1cuTLL/X/88cdq2bKlatasqebNm2vChAlKSEhQ1apV1bx580zX+eSTT/T000+rRo0aqlevnv75z39q8+bNGZZdsmSJgoODNXXqVB0/flxvvPGGGjZsqBo1aui5557T7NmzlZqamqPP2N3dXZIUHR2daW2SVLhw4Rxt824+//xzHT58WO+99949BWeWz2Dp0qWSpPHjxys4OFivvPJKhmVXrVql9u3bq0aNGnrsscf09ttvKzIyMrdv4a547BQAAAAAALiEtLQ0vfbaa9qwYYN8fX3VsGFDpaSkaOHChZneiXXmzBl17dpVsbGxKlOmjOrVqyfDMHTkyBFt2bJFW7Zs0cSJE9WmTRv5+vrqueeeU1hYmKKjo1WnTh2VLVtWgYGBkm4PxNClSxdFRETI399fderUkYeHh06cOKHdu3dr9+7dioqKUp8+faz7P3funLp3765z586pZMmSevLJJxUbG6uZM2dq165dmY6oeuLECf3zn/9UTEyMSpYsqccff1w3b97U7t27tW3bNvXv31+DBw/OsN6BAwc0Y8YM+fn5qXbt2oqPj1d4eLg++eQTnTp1SmPGjMn259ykSROtWrVKI0eO1OjRo1W3bl3duHFDc+fO1fbt21W2bFk9++yz2d7e3Wzfvl3ffPON2rRpo3bt2t1Tn2+BgYF67rnntH//fp09e1bVqlVTxYoVValSJZvlFi5cqBMnTqhixYpq1qyZjh07pmXLlmnNmjX6+uuvVadOHbu8pzsRvgEAAAAAAJfw448/asOGDXr44Yf1zTffKCAgQNLt/sJeffXVDMt/+umnio2NVefOnfX+++/LZDJJklJTUzV27FjNnz9fc+bMUZs2bVS0aFF99tlnGjBggKKjo9WxY0d1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OsXExKh48eJq06aN+vfvr5CQEJUsWVIbNmzIsM5XX32l9evX68KFC/L29laNGjXUvXt3NW3a1GbZJUuWaMSIERo0aJBatmypL7/8Urt379bNmzf10EMPKTQ0VN27d5eHR/YjIHd3d0lSdHS0AgMDM9QmSYULF8729jLj5uZm3ced7mUfr7zySrbCuqNHj6p58+Y6f/68JOnGjRvWvgLnzZunBg3s/6g04RsAAAAAAHAJaWlpeu2117Rhwwb5+vqqYcOGSklJ0cKFCzMNXs6cOaOuXbsqNjZWZcqUUb169WQYho4cOaItW7Zoy5Ytmjhxotq0aSNfX18999xzCgsLU3R0tOrUqaOyZctaw6erV6+qS5cuioiIkL+/v+rUqSMPDw+dOHFCu3fv1u7duxUVFaU+ffpY93/u3Dl1795d586dU8mSJfXkk08qNjZWM2fO1K5duzIdUfXEiRP65z//qZiYGJUsWVKPP/64bt68qd27d2vbtm3q37+/Bg8enGG9AwcOaMaMGfLz81Pt2rUVHx+v8PBwffLJJzp16pTGjBmT7c+5SZMmWrVqlUaOHKnRo0erbt26unHjhubOnavt27erbNmyevbZZ7O9vcw8/vjjcnNz0+7duzVu3Di9+uqrKlKkiPbv36/Ro0dLknr37p3t7TVu3FglSpTIdN62bdsUFxenoKAgSVKLFi10/vx5rVu3Tp6entYBJBw1wAPhGwAAAAAAcAk//vijNmzYoIcffljffPONAgICJEmnTp3Sq6++mmH5Tz/9VLGxsercubPef/99mUy3R15NTU3V2LFjNX/+fM2ZM0dt2rRR0aJF9dlnn2nAgAGKjo5Wx44drXe8SdL06dMVERGhZs2a6csvv7R2zG8YhmbOnKmJEydqzpw5NuHbe++9p3PnzumFF17Q6NGjrY9wbt68Wa+//rrMZrNNvampqXr99dcVExOjvn376o033rDesXb8+HH17NlT06ZNU82aNdW8eXObdTdt2qQOHTrovffek4+Pj6TbI4m+9tprWrRokQYNGiR/f/9sfc6jRo3SpUuXtHPnTvXs2dNmXps2bTRy5Ejlz58/W9vKSqVKlTR+/Hh9+OGHmjt3rubOnWudV6RIEX355Zdq1apVtrfXv3//TKf//PPPWrVqlYoWLapp06ZJkkaOHKlz585p3bp18vb21meffZar9/JX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EmLd3o8//qj3339f7733nho2bKiSJUtm74PLg/7e934CAAAAAADkMbGxsbp48aIqVaqUreDt5s2b+vbbb+Xu7q4PP/zQZgC/du3aqXXr1rp8+bKWL19unR4WFqa9e/eqYsWKGjBggHW6u7u73n33XZUuXVpbtmzRiRMnslVzWFiYIiMj9dBDD2no0KE2d7dVrFhRQ4cOlSStWLHCOn3RokWSpF69etkEb5LUqVMnNW3aVLdu3dLq1auzVUNeRfgGAAAAAABcyrJly9SxY0c9+uij1j7Njhw5onfeeUfBwcHatWuXJOmVV15RcHCw/vjjD/Xr1081a9ZUgwYNbPpKO378uN599109/fTTql27tmrUqKFmzZrp7bffVkREhM1+d+3apeDgYL311ls6c+aMBgwYoJCQEIWEhKhLly5/GRKFh4dbg6batWvrhRde0NKlSzMsZ3nktHr16tn6PMLDw3Xz5k3VqFEj08dEn3nmGUnSxo0brdMsP7do0SJDP2yenp566qmnJEkbNmzIVg3x8fGqWbOmmjZtKnd39wzzK1asKOl2sGjh7e2toKAgNWjQINNtZraOK+KxUwAAAAAA4DJGjBihJUuWyMvLS/Xr15enp6d27dqlTp06qXz58pmu869//UtXrlxRkyZNdOLECQUHB0uS1q9fr0GDBiklJUVVq1ZVkyZNdOPGDR08eFDLli3TmjVrtGzZsgzbPX/+vDp27Khbt26pYcOGunnzpsLDw7Vnzx7169dPQ4YMyVDDb7/9pu+//14BAQFq2LChLly4oEOHDmn48OG6dOmSevfubV3WEr4VLFhQo0aN0s6dOxUdHa2SJUvq6aefVt++fVWgQAHr8kePHpUk6/u608MPP2yznCQdO3Ysx+vczVNPPWUN7DLz+++/S5LN46OjR4++6zYPHDggSTnqdy4vInwDAAAAAAAuYcWKFVqyZInKlCmjb775xhqKXb58WX379tXBgwczXe/KlStasWKFSpQoIcMwJEkpKSl67733lJKSookTJ6pNmzbW5a9fv66ePXvq999/14IFC6yPTFrs3btXQUFB+uqrr1SiRAlJ0p49e9SrVy9Nnz5dTZo00aOPPmqzzqlTp9SjRw8NHTrUemfYjBkzNHHiRH399dfq1auXTCaTpP+Fb3PmzFHRokVVp04dlSxZUocOHdKsWbO0du1affvttwoICJD0vzvDLK/vZJl+6dIl67SYmBhJstZ/J39/f0nSxYsXM52fEwkJCZo6daok6dlnn83WOhs2bNDevXvl6empFi1a5LoGZ+KxUwAAAAAA4BK++eYbSbfvmEp/N1qxYsU0ceLEDI9PWjz77LPWkMlkMslkMuny5ct67LHH1KFDB5vgTbp9x1nbtm0l3b7LLTOfffaZTXD16KOPqn///pKk+fPnZ1i+XLlyGjZsmM0jmT169JC7u7vi4uKsYZgk/fHHH5Kkzp07a/PmzZo6daq+/fZb/frrrwoJCVFkZKRGjBhhXT4hIUGSsuwfLl++fJJuD4qQmJgoSdb/p+8fLj3LdMu271VycrKGDBmiCxcu6KGHHtLLL7/8l+scPXrU+v569erl0oMtSIRvAAAAAADABcTFxemPP/5Q/vz59fjjj2eYHxgYqBo1amS6btWqVTNMK1mypD755BONHz/eZnpsbKy2bt2qPXv2SLp9h9ydgoKCMn1cs1WrVpKk7du3Z5hXp06dDOGgl5eXihcvLun23XYWP//8s1asWKH3339fXl5e1uklSpTQZ599Jh8fH23dutXaJ11mfaxlxWw252gdy/L3IiEhQQMHDtSmTZtUuHBhTZ069S8HkPj999/VvXt3Xb16Vc2aNdPrr79+z/vPK3jsFAAAAAAA5HkXLlyQdLv/r6zucCtbtqy1n7D0ChcunOV2d+zYoSVLlujIkSM6e/as9Y4wyyOglsdU06tQoUKm2ypdurSk20FhcnKyTXBWqFChTNexjAqalpZmnebn55dlX2ylSpVS1apVtWfPHh08eFCVKlVS/vz5JUlJSUmZrnPr1i1JkpubmzX8sqxjmXcny7Ysy4WHh+vHH3/MsFylSpWsd/ylFx0drQEDBujw4cPy9/fX7NmzValSpUz3ZfHrr79q+PDhSkxMVKtWrTRhwoQcBYt5FeEbAAAAAADI81JTUyXZhlR3yiwok5RpWGc2mzVkyBD9+uuvMplMCg4OVqtWrVSxYkVVr15dZ86c0QcffJDt7aXfv5ubW4bQyBLm2YNlAALLI6GWx1+z6p/N8khrsWLFrLUHBATo8OHDWY4kemc/cmfOnNHKlSszLFe/fv0M4dvvv/+uAQMG6OLFi6pUqZJmzpypsmXL3vU9TZkyRV9++aUMw9DLL7+sd955J8vP2dUQvgEAAAAAgDzPEjjFxMTIbDZnGsxERUVle3srV67Ur7/+qlKlSmnWrFl65JFHbOZb+pfLTHR0dKbTz507J+l2GHavd2ydOHFCs2fPlpubm8aOHZvpMpb3aflMLHfJnThxIsttpl/O8vPGjRuzvU6HDh3UoUOHv6x/48aNGjx4sJKSktS4cWP95z//UcGCBbNc3mw2a+TIkVq6dKnc3d01fPhwdevW7S/340oejAgRAAAAAAA80EqUKKFKlSopISFB27ZtyzA/Ojo6y9FOM7N3715JtwdjuDN4k6QtW7ZIyrzPs0OHDtmMHGrx66+/SpKaNGmS7Tru5O3trSVLlmjRokWKjIzMMD8yMlL79++Xr6+v6tWrJ+n2YA9+fn7av3+/zcANd9bVrFkz67Qnn3xSkrR27doMdwympKRo/fr1Nstlx44dO/T6668rKSlJL7zwgmbNmnXX4E2S3n33XS1dulQ+Pj6aMmXKAxe8SYRvAAAAAADARfzzn/+UJH3wwQc6e/asdfr169c1dOhQ66Op2XnEs0iRIpKkbdu2Wft5k26PzvnZZ59ZB01ITk7OsG5KSoqGDx+umzdvWqft3LlTs2bNkqenZ64CpLJly6pp06aSpOHDhysuLs46Lzo6Wm+88YbS0tLUo0cP+fn5Sbo9mmmnTp2UkpKiESNG2NS1YsUK/frrrypWrJj+8Y9/WKfXqVNHNWvW1LFjxzRp0iRrAJeWlqaxY8cqKipKzZo1U1BQULbqjouL07/+9S+lpKSoQ4cOGjdunLU/u6wsW7ZMixcvlru7u6ZNm2YTDj5IeOwUAAAAAAC4hBdeeEFbt27Vf//7X7Vp00b169dXvnz5FBYWJrPZrKJFiyouLu4vQx9J6tixo77//nsdPXpUTz31lGrXrq3U1FQdOHBAV69eVVBQkI4dO5ZpP2qFCxfWnj171KJFC9WrV09xcXEKDw+Xm5ubRo8erYcffjhX73PMmDF65ZVXtG/fPrVq1Up16tSRJO3evVtJSUl6+umnNWDAAJt1XnvtNe3atUvbtm1Ty5YtFRISoujoaB04cED58uXT559/Lm9vb5t1PvroI3Xt2lXTp0/XmjVr9Mgjj+jPP//UmTNnVLZsWX344YfZrnnu3LnWoPDmzZt66623Ml3O19dXH374odLS0jRp0iRJUvHixbV48WItXrw403WeeOIJtWvXLtu15DWEbwAAAAAAuICiAaWcXUKOOKJek8mkCRMmqF69elq4cKHCwsLk6empRo0aaciQIRo0aJDi4uJUoECBv9xW6dKltXjxYv3nP//R3r17tWXLFvn6+uqRRx5RaGio2rdvr8cee0zHjh1TZGSkHnroIeu6JUuW1Mcff6zPPvtMv/32m7y8vNSsWTP16dPHGpTlRkBAgBYvXqyvvvpKa9as0c6dO+Xp6amqVavqxRdfVPv27TPc3efj46N58+Zp1qxZ+uWXX7Rx40YVKVLEGtRVrlw5w34qVaqkxYsXa/Lkyfrtt9+0ceNGlSpVSt26dVO/fv1UrFixbNe8ceNG68+rV6/OcrkCBQroww8/1NGjR61918XExGQ6mINFkSJFXDp8MxlZDQXigizPdv9xPk0X4+KdXA0eZDeTknXtRuZDOOdUmYBCGtj5MbtsC3lXQkKC/vzzT1WpUkW+vr7OLgcuzlWPp4MHDyo5OVlVq1a1DnEP3KvExESdOnVKFSpU4HhCrrnq31XkTY46nrIaYCCvs3fdR44cUeHChVWiRIkM4VNycrIee+wx3bx5U3v27HFI+7Br1y5169ZNlStX1vLly+2+fTyYHsg73156prazS8ADzjCbZbJjA2I2G3Jzs9+w0wCQV3l5eRGUwC58fHxUtWpVZ5dhw97nBwCQnisGb5L96/73v/+t8PBwjRkzRi+++KJ1utls1sSJE3X9+nU1a9aM8w3kKQ9k+HZq1SwlXs7+8MJATvgUK6UKbXvbdZsEbwD+Tmin8SByxPkBACCjXr16ad++fXr33Xc1b948VahQQcnJyTp8+LBiY2NVtmxZffDBB84uE7DxQIZviZejlBhzxtllAACATNBOAwCAe9WsWTMtWrRI3333ncLDw7Vlyxa5u7urbNmyeumll/Tqq69aRwAF8ooHMnwDAAAAAAAPpqpVq2rcuHFO2XeDBg109OhRp+wbrss1HxoHAAAAAAAAXADhGwAAAAAAAOAghG8AAAAAAACAgxC+AQAAAAAAAA5C+AYAAAAAAAA4COEbAAAAAAAA4CCEbwAAAAAAAICDEL4BAAAAAAAADkL4BgAAAAAAADgI4RsAAAAAAADgIIRvAAAAAAAAgIMQvgEAAAAAAAAOQvgGAAAAAAAAOAjhGwAAAAAAAOAghG8AAAAAAACAgxC+Aems+POyhq85pRV/Xs7VdqZMmaKWLVtqypQpdqoMAADYq53+O+GcBAAA5yN8A/5fcppZ285cl9mQtp+9ruQ08z1tJykpScuWLZPZbNayZcuUlJRk50oBAPj7sVc7/XfCOQkAAHkD4Rvw/9LMhoz//9ls3H59L1JTU2U23/5CYDablZqaaqcKAQD4+7JXO/13wjkJAAB5A+EbAAAAAAAA4CCEbwAAAAAAAICDEL4BAAAAAAAADuLh7AKAvCoxNfOOnI3kVMXHx2e53t3mAQAA+8iqnXaWvzo/cIa8Vg8AAH9XhG9AFj7aci6LOWekH9vd11oAAICtrNtpZ+H8AAAAZI7HTgEAAAAAAAAHIXwDAAAAAAAAHITHToEsDG9SVj4eGfNp74Byqtx5WJbrxcfHq2vXro4sDQCAv72s2mln+avzA2fgnAQAgLyB8A3Igo+Hm3w83TNO9/KQn5+fEyoCAAAWWbXTzsL5AQAAyEreuVwIAAAAAAAAPGAI3wAAAAAAAAAHIXwD/p+7m0mm///ZzXT79b3w8PCQm9vtXy03Nzd5ePB0NwAAuWWvdvrvhHMSAADyBsI34P95ubvpscCCcjNJjcsVlJf7vf16eHt7KzQ0VG5ubgoNDZW3t7edKwUA4O/HXu303wnnJAAA5A1c/gLSeb5KMT1fpViutzNw4EANHDjQDhUBAAALe7XTfyeckwAA4HxcMgQAAAAAAAAchPANAAAAAAAAcBDCNwAAAAAAAMBBCN8AAAAAAAAAByF8AwAAAAAAAByE8A0AAAAAAABwEMI3AAAAAAAAwEEI3wAAAAAAAAAHIXwDAAAAAAAAHITwDQAAAAAAAHAQwjcAAAAAAADAQQjfAAAAAAAAAAchfAMAAAAAAAAchPANAAAAAAAAcBDCNwAAAAAAAMBBCN8AAAAAAAAAB/FwdgGOUKhCdXkXLensMvCAyleouLNLAACXRjuN3Ei9laDUm9edXUYGPsVKObsEAACQRz2Q4VuZJh2cXQL+Zsxms9zcuJEUALKDdhq5kZfbXMNslimP1gYAAJzngQzfZmyepwvXYpxdBv4mShcqob5Nuzm7DABwGbTTuFfp29zExESdOnVKFSpUkI+Pj5Mru43gDQAAZOaBDN8uXIvR6cvnnF0GAADIBO007MEwDCUmJsowDGeXAgAAcFdcngMAAAAAAAAchPANAAAAAAAAcBDCNwAAAAAAAMBBCN8AAAAAAAAAByF8AwAAAAAAAByE8A0AAAAAAABwEMI3AAAAAAAAwEEI3wAAAAAAAAAHIXwDAAAAAAAAHITwDQAAAAAAAHAQwjcAAAAAAADAQXIdvnXr1k1jx47N1rKvv/66WrVqldtdAgAAAAAAAC7BI7cb2L17t9LS0rK17IkTJxQdHZ3bXQIAAAAAAAAuIUfhW0REhGbMmJFhemRkpIYNG5bleoZh6MKFCzp16pT8/f1zXiUAAAAAAADggnIUvlWqVEmRkZH6/fffrdNMJpMuX76sFStWZGsboaGhOSoQAAAAAAAAcFU5fux01KhRmj9/vvX10qVLVbx4cT3xxBNZrmMymeTr66uqVasSvgEAAAAAAOBvI8fhW40aNTR+/Hjr66VLl6p8+fI20wAAAAAAAADYYbTTefPm6d1337VHLUCecSU8Sme/P6Qr4VF23/aUKVPUsmVLTZkyxe7bBgAgL3BkO+oItM0AAMCRch2+1a9fX1WqVLG+NgxD0dHROnbsWG43DTiFOdWs+KOXJUOKP3pZ5lSz3badlJSkZcuWyWw2a9myZUpKSrLbtgEAyAsc2Y46Am0zAABwtFyHbxYnTpzQv/71L9WrV0/NmjWz9u0WFRWlli1bauHChfbaFeBYZkMy/v9n4/9f20lqaqrM5ttfQsxms1JTU+22bQAA8gQHtqOOQNsMAAAcLcd9vmVm7dq1Gjp0qG7duiXDsD3BioqK0tmzZ/Xee+/p5MmTevvtt+2xSwAAAAAAACDPy/Wdb6dPn9bQoUOVlJSkZ555RtOnT1fVqlWt8ytWrKh//OMfMgxDc+bM0aZNm3K7SwAAAAAAAMAl5PrOt9mzZyspKUn9+vXT4MGDJUkzZ860zi9cuLDGjBmj0qVL64svvtCPP/6oJ598Mre7Be4bc3LaXeen3kpRfHx8traV3eUAAHhQ/FU7mhPp29yEhAQlJiYqPj7e+tjovaBtBgAAjpbr8G3btm3y8/PTgAED7rpcr169NGfOHB08eDC3uwTuq6hldx885Lz+VLvp6+9TNQAAuJa/akdzgjYXAAC4olw/dhobG6uHHnpIXl5ed13Oy8tL5cqV07Vr13K7SwAAAAAAAMAl5Dp88/X11aVLl7K17LVr15Q/f/7c7hIAAAAAAABwCbl+7DQ4OFhhYWE6dOiQqlevnuVy+/bt07lz51S/fv3c7hK4r0qFBsnNyz3L+eWKltaIZ9/I1rbi4+PVtWtXe5UGAECe91ftaE6kb3MTEhJ07NgxBQUFydfX9563SdsMAAAcLdfhW/v27bV7926NHDlSs2fPlr+/f4ZlTp48qbfeeksmk0nPPfdcbncJ3FduXu53/dLgkc9Tfn5+97EiAABcx1+1ozmRvs11c3OTj4+P/Pz8chW+AQAAOFquw7d27dppxYoV2rFjh1q1aqUGDRro9OnTkqRPPvlEJ06c0Pbt25WamqratWurQ4cOuS4aAAAAAAAAcAW57vPNzc1NU6ZMUevWrZWYmKhNmzbp8uXLMgxD33zzjbZs2aLU1FQ9/vjjmj59utzd7XPlEwAAAAAAAMjrcn3nm3R70IWJEyeqT58+WrdunY4dO6b4+Hj5+PioQoUKatasmR599FF77AoAAAAAAABwGXYJ3ywqV66sypUr23OTwP3nZpJMkgzd/r+byW6b9vDwkJubm8xms9zc3OThYddfQQAAnM+B7agj0DYDAABHy/Vjp3eTlJSkDRs2aN26dbp69aojdwXYjZuHm/yCi0kmyS+4mNw87Pdr4u3trdDQULm5uSk0NFTe3t522zYAAHmBI9tRR6BtBgAAjmaXS3sxMTGaNm2aSpcurT59+kiSIiIi1KNHD128eFGS5OPjozFjxqh169b22CXgUEVCSqlISCmHbHvgwIEaOHCgQ7YNAEBe4Mh21BFomwEAgCPlOnyLi4tTx44dFRsbqyeffNI6/b333lNsbKxMJpPy58+v+Ph4DRs2TMHBwapUqVJudwsAAAAAAADkebl+DmDu3LmKiYlRYGCgXnrpJUnS6dOntWfPHrm7u+uHH35QeHi4+vTpo9TUVM2ZMye3uwQAAAAAAABcQq7Dty1btsjDw0OzZ8+23vm2adMmSVLdunVVu3ZtSdLrr7+uggULaufOnbndJQAAAAAAAOASch2+nT17Vg899JDKli1rnbZ9+3aZTCY1btzYOs3T01Nly5ZVbGxsbncJAAAAAAAAuIRch29JSUny8vKyvk5NTVVYWJgkqX79+jbLJiYmymTK28PNAwAAAAAAAPaS6/AtICBA58+fV0pKiiQpLCxMCQkJyp8/v/WRU+n2iKhnz55VqVKuM/IVAAAAAAAAkBu5Dt8aNGig69ev67PPPtORI0c0adIkmUwmNW3aVO7u7pKky5cva+jQoUpLS1OjRo1yXTQAAAAAAADgCnIdvvXu3Vve3t6aN2+e2rdvrwMHDsjd3V29e/eWJIWHh6tp06YKCwtTgQIF9M9//jPXRQMAAAAAAACuINfhW8WKFfX111+rRo0a8vLyUlBQkKZNm6bKlStLuv1Yampqqh555BH98MMPNgMzAAAAAAAAAA8yD3tspE6dOlqwYEGm88qWLatly5ZZwzgAAAAAAADg7yLXd7795Q7c3AjeAAAAAAAA8LdklzvfLC5fvqzExEQZhmEzPTU1VUlJSYqOjtbGjRv14Ycf2nO3AAAAAAAAQJ5kl/Bt4cKF+s9//qPLly9na3nCNwAAAAAAAPwd5Dp827Fjh0aNGpWtZYsUKaKmTZvmdpcAAAAAAACAS8h1n28//PCDJKl+/fr67rvvtGjRIklSaGioVq9erblz56pNmzaSpFKlSmns2LG53SUAAAAAAADgEnJ959v+/fvl4eGhTz/9VCVKlJAklS9fXgcPHlT58uVVvnx5NWjQQAUKFNBPP/2khQsXqlOnTrkuHAAAAAAAAMjrch2+XblyRWXKlLEGb5IUHBysdevWKTExUT4+PpKkN954Q4sWLdKqVascHr7VLFNFpQoFOHQfgCQlJCcqv5evs8sAAJdCO4175e9XzPqzyWSSj4+PTCaTEysCAAD4a7kO3zw8PFSgQAGbaYGBgTIMQydPnlS1atUkSUWLFlX58uUVERGR213+pRcebevwfQCSZJjNMrm5yWw2y80t109xA8DfAu007MHHx0dVq1a1y7Ys7TkAAIAj5Dp8K168uKKiomymlStXTpJ0/Phxa/gmSV5eXrpx40Zud/mX9k+bofgLUX+9IJALfqVLqXb/vpJE8AYAOUA7jbwkfXsOAADgCLkO32rXrq1Vq1Zp2bJlCg0NlSRVqlRJhmHot99+s067du2aIiMjVaxYsaw3ZifxF6J0/fRph+8HAADkHO00AAAA/k5yfbtOx44dZRiG3nnnHQ0ePFjJycmqVauWChYsqF9++UWTJ0/Wxo0b9cYbbygpKUkPP/ywPeoGAAAAAAAA8rxch2/16tVT7969lZaWpg0bNsjLy0uenp7q06ePDMPQlClTNGDAAO3atUuS1KdPn1wXDQAAAAAAALiCXD92KklvvvmmHn/8cW3dutU6rVevXkpKStLXX3+thIQEFSpUSIMHD1aDBg3ssUsAAAAAAAAgz7NL+CZJDRo0yBCsvfbaa+rXr5+uXLmiokWLyt3d3V67AwAAAAAAAPK8XD92OnnyZC1ZsiTL+R4eHvL395e7u7umT5+uoUOH5naXAAAAAAAAgEuwS/i2ePHibC27evVqrVu3Lre7BAAAAAAAAFxCjh47PX/+vHbs2JFh+qVLl7Ro0aIs1zMMQxcuXNDx48fl6+ub8yoBAAAAAAAAF5Sj8K1YsWL68ssvFRsba51mMpl05swZjRo16i/XNwxDjRo1ynmVAAAAAAAAgAvKUfjm7e2tt956S59//rl12oULF+Tl5aXixYtnuZ6bm5t8fX1VtWpVDRs27N6rBQAAAAAAAFxIjkc7fe655/Tcc89ZX1euXFk1atTQ999/b9fCAAAAAAAAAFeX4/DtTq+99ppKlSplj1oAAAAAAACAB4pdwjcAAAAAAAAAGeU6fLO4ceOGTp06pcTERJnNZpt5aWlpSkpKUnR0tDZu3KjZs2fba7cAAAAAAABAnmWX8G3SpEmaPXu2UlNT7bE5AAAAAAAA4IGQ6/Bt9erVmj59eraWLV++vNq2bZvbXQIAAAAAAAAuwS23G1i8eLEkqXXr1tq0aZN27NghNzc3dezYUYcOHdK6devUt29fubm5yTAM9erVK9dFAwAAAAAAAK4g1+Hb4cOHlS9fPo0ePVolS5ZUkSJFVLFiRe3YsUMeHh4qW7ashgwZov79++vs2bP6/vvv7VE34BQbr17RxPNntPHqFZvpU6ZMUcuWLTVlyhQnVQYAAP5KVu34nWjXAQCAPeU6fLt27ZrKli2rggULWqcFBQXp3LlzunHjhnVajx495OXlpTVr1uR2l4BTpJjN2nfzhgxJ+27eUHJamiQpKSlJy5Ytk9ls1rJly5SUlOTcQgEAQAZ3tuMpdwwQZkG7DgAA7C3X4Vu+fPmUL18+m2nlypWTJEVERFin+fn5qXz58oqMjMztLgGnSJNk/P/PhqQ04/ar1NRU6wi/ZrOZgUcAAMiDMrTjWSxHuw4AAOwt1+FbiRIldP78eaWl/e8UJjAwUJJ0/PjxDMsnJCTkdpcAAAAAAACAS8h1+Pboo4/q+vXrmj17tnXaI488IsMwtG7dOuu0mJgYnTp1SgEBAbndJQAAAAAAAOASch2+de3aVSaTSZ9//rlefPFFJScnq3r16ipevLi2bNmiESNG6LvvvlOvXr2UmpqqatWq2aNuAAAAAAAAIM/LdfhWuXJlvfvuu3J3d9eJEyfk5eUlNzc3vfnmmzIMQ8uWLdPYsWN1/Phxubm5acCAAfaoG3C6pNRUxcfHKz4+3tmlAACAHLplNivJbFZiuvacdh0AADiChz020qVLFzVu3Fjbtm2zTmvfvr0kaebMmTp37pwqVqyoIUOGqEqVKvbYJeB0k/aGaVK7ds4uAwAA3IOvYi7c/iHqnER7DgAAHMgu4ZskPfTQQ3rooYdsprVv394awgEAAAAAAAB/N7kK35KTkxUeHq5du3YpKipKV69elclkUsGCBVWpUiXVrVtX9erVk8lksle9AAAAAAAAgMu4p/AtJSVF8+bN06xZs3Tt2jXrdMMwMgRtAQEB6tOnjzp37iw3t1x3MQfkGYPr1lOz999VfHy8unbt6uxyAABADvQqUVr53NxUoFw5NXpnuHU67ToAALC3HIdv8fHxGjBggMLCwmQYhiTJz89PZcqUUf78+ZWSkqIbN27o3LlzSk1NVUxMjMaMGaMNGzboyy+/lK+vr93fBOAM3h4e8vPzc3YZAADgHuRzc5O3m5t8aM8BAICD5Th8GzRokHbv3i13d3e99NJLeumllxQcHJxhueTkZP3+++9auHChVq5cqe3bt2vYsGGaPHmyXQoHAAAAAAAA8rochW8bN27Utm3b5Ofnp+nTpyskJCTLZb28vBQSEqKQkBC98MIL6tevn9avX6+dO3eqYcOGuS4cAAAAAAAAyOty1AnbihUrZDKZNGLEiLsGb3eqX7++3nzzTRmGoZUrV+a4SAAAAAAAAMAV5Sh8++OPP+Tl5aXnn38+xztq37693N3d9fvvv+d4XSAvcJdkGU7EJMn9/wcX8fDwsA4m4ubmJg+PXA0iDAAAHCBDO57FcrTrAADA3nIUvl28eFHlypWTp6dnjnfk6+ursmXLKioqKsfrAnmBp5ub6uQvIJOkOvkLyMv99mm7t7e3QkND5ebmptDQUHl7ezu3UAAAkMGd7binW+anwbTrAADA3nJ0Ke/WrVu5Gg2qUKFCOnfu3D2vDzhbs8JF1KxwkQzTBw4cqIEDBzqhIgAAkF1ZteN3ol0HAAD2lKM739LS0uTuntVN+n/Nw8NDZrP5ntcHAAAAAAAAXEmOwjcAAAAAAAAA2Uf4BgAAAAAAADhIjodvunHjhsLCwu5pZzdu3Lin9QAAAAAAAABXlOPw7fjx4+rWrZsjagEAAAAAAAAeKDkO3wzDyNUOTSZTrtYHAAAAAAAAXEWOwrf169c7qg4AAAAAAADggZOj8K1MmTKOqgMAAAAAAAB44DDaKQAAAAAAAOAghG8AAAAAAACAgxC+AQAAAAAAAA5C+AYAAAAAAAA4COEbAAAAAAAA4CCEbwAAAAAAAICDEL4BAAAAAAAADkL4BgAAAAAAADiIh7MLcAS/0qWcXQL+BjjOAODe+Nesofyl+BuKe5eakKBb167ZZVu05wAAwNEeyPCtdv++zi4BfxOG2SyTGzeQAkBOBL/4grNLgIszmw25uZnstj3acwAA4EgPXPiWnJysxMRE+fj4OLsUuLjExESdOnVKFSpUyPJ44kQdAHJu+YJdunTxhrPLgIsq7l9A7To2UFJSkk6ePHnXdjq7aM8BAIAjPXDhmyQZhuHsEvAAMAxDiYmJHE8AYGeXLt5QzIWrzi4DLo52GgAAuAou8wEAAAAAAAAOQvgGAAAAAAAAOAjhGwAAAAAAAOAghG8AAAAAAACAgxC+AQAAAAAAAA5C+AYAAAAAAAA4COEbAAAAAAAA4CCEbwAAAAAAAICDEL4BAAAAAAAADkL4BgAAAAAAADgI4RsAAAAAAADgIIRvAAAAAAAAgIMQvgEAAAAAAAAOQvgGAAAAAAAAOAjhGwAAAAAAAOAghG8AAAAAAACAgxC+AQAAIE86FrlVG3ZO17HIrXddbsqUKWrZsqWmTJlynyoDAADIPsI3AAAA5DlpaSk6G31Ihgydiz6ktLSUTJdLSkrSsmXLZDabtWzZMiUlJd3nSgEAAO6O8A0AAAB5jtkwSzIkSYaM/3+dUWpqqszm2/PMZrNSU1PvV4kAAADZQvgGAAAAAAAAOAjhGwAAAAAAAOAghG8AAAAAAACAg3g4uwAAAADgr6Sm3pIkJScnKT4+XomJiUpMTNTNmzedXBkAAMDdEb4BAAAgz9u+/3vrz4tWfe7ESgAAAHKGx04BAAAAAAAAByF8AwAAAAAAAByEx04BAACQ5zWu3VUeHvkUULKQXun9pBITE3X06FGVKVNGvXr1cnZ5AAAAWSJ8AwAAQJ7n4ZFPnh755OXlLT8/P7m7u8vHx0f58+d3dmkAAAB3xWOnAAAAAAAAgIMQvgEAAAAAAAAOQvgGAACAPMfN5CbJJEkyyfT/rzPy8PCQm9vteW5ubvLwoFcVAACQtxC+AQAAIM9xd/dUuZLVZZJJZUtWl7u7Z6bLeXt7KzQ0VG5ubgoNDZW3t/d9rhQAAODuuDQIAACAPCnooccV9NDjf7ncwIEDNXDgwPtQEQAAQM5x5xsAAAAAAADgIIRvAAAAAAAAgIMQvgEAAAAAAAAOQvgGAAAAAAAAOAjhGwAAAAAAAOAghG8AAAAAAACAgxC+AQAAAAAAAA5C+AYAAAAAAAA4COEbAAAAAAAA4CCEbwAAAAAAAICDEL4BAAAAAAAADkL4BgAAAAAAADgI4RsAAAAAAADgIIRvAAAAAAAAgIMQvgEAAAAAAAAOQvgGAAAAAAAAOIiHswtwBJPJ5OwS8AAwmUzy9PR0dhkA8MAp7l/A2SXAhXH8AAAAV/PAhW9eXl7y8fFxdhl4APj4+Kha1apKTklxdikA8EBp17GBs0uAizObDWeXAAAAkG0PXPgmSb/8NFtxsVHOLgMurmhAKbV+qadE+AYAdpOcnKzExEQulCFX3NxMMgwCOAAA4BoeyPAtLjZKsRfOOrsMAACQCUITAAAA/J0w4AIAAAAAAADgIIRvAAAAAAAAgIMQvgEAAAAAAAAOQvgGAAAAAAAAOAjhGwAAAAAAAOAghG8AAAAAAACAgxC+AQAAAAAAAA5C+AYAAAAAAAA4COEbAAAAAAAA4CCEbwAAAAAAAICDEL4BAAAAAAAADkL4BgAAAAAAADgI4RsAAAAAAADgIIRvAAAAAAAAgIMQvgEAAAAAAAAOQvgGAAAAAAAAOAjhG3CHw6cv6pfdJ7Tr9+OSpJkzZ6ply5aaMmWKkysDAAAAAACuhvANSCctzazImGsyJP156ryuXbumVatWyWw2a9myZUpKSnJ2iQAAAAAAwIUQvgHpmA3D+rNhGEpMTJTZbL49z2xWamqqs0oDAAAAAAAuiPANAAAAAAAAcBDCNwAAAAAAAMBBCN8AAAAAAAAAByF8A+4iPj7e2SUAAAAAAAAXRvgG3EXfvn2dXQIAAAAAAHBhhG8AAAAAAACAgxC+AQAAAAAAAA5C+AbcxYwZM5xdAgAAAAAAcGGEb8Bd+Pn5ObsEAAAAAADgwgjfAAAAAAAAAAchfAMAAAAAAAAchPANAAAAAAAAcBDCNyAdN5PJ+rPJZJKPj4/c3G7/mri5ucnDw8NZpQEAAAAAABdE+Aak4+7upodKFJJJUpUKZVSoUCG1bdtWbm5uCg0Nlbe3t7NLBAAAAAAALoTbeIA7VCvvr2rl/RVQupwkqU+fPho0aJCTqwIAAAAAAK6IO98AAAAAAAAAByF8AwAAAAAAAByE8A0AAAAAAABwEMI3AAAAAAAAwEEI3wAAAAAAAAAHIXwDAAAAAAAAHITwDQAAAAAAAHAQwjcAAAAAAADAQQjfAAAAAAAAAAchfAMAAAAAAAAchPANAAAAAAAAcBDCNwAAAAAAAMBBCN8AAAAAAAAAByF8AwAAAAAAAByE8A0AAAAAAABwEMI3AAAAAAAAwEE8nF2AIxQNKOXsEvAA4DgCAAAAAAC59UCGb61f6unsEvCASEtNdXYJAAAAAADAhT1wj50mJycrMTHR2WXgAZCYmKjDf/whwzCcXQoAAAAAAHBRD1z4JomwBHZhGIZSUlKcXQYAAAAAAHBhD2T4BgAAAAAAAOQFhG8AAAAAAACAgxC+AQAAAAAAAA5C+AYAAAAAAAA4COEbAAAAAAAA4CCEbwAAAAAAAICDEL4BAAAAAAAADkL4BgAAAAAAADgI4RsAAAAAAADgIIRvAAAAAAAAgIMQvgEAAAAAAAAOQvgGAAAAAAAAOAjhGwAAAAAAAOAghG8AAAAAAACAgxC+AQAAAAAAAA5C+AYAAAAAAAA4COEbAAAAAAAA4CCEbwAAAAAAAICDEL4BAAAAAAAADkL4BgAAAAAAADgI4RsAAAAAAADgIIRvAAAAAAAAgIMQvgEAAAAAAAAOQvgGAAAAAAAAOAjhGwAAAAAAAOAghG8AAAAAAACAgxC+AQAAAAAAAA5C+AYAAAAAAAA4COEbAAAAAAAA4CCEbwAAAAAAAICDEL4BAAAAAAAADkL4BgAAAAAAADgI4RsAAAAAAADgIIRvAAAAAAAAgIMQvgEAAAAAAAAOQvgGAAAAAAAAOIjJMAzD2UXYy969e2UYhjw9PWUymZxdDlycYRhKSUnheIJdcDzBnu7lePLy8lJwcLCDK7s72mnYE39XYU8cT7AnV22nATiOh7MLsCfLHzYaTNiDyWSSl5eXs8vAA4LjCfbkqscT7TTsyVV/D5A3cTzBnjieANzpgbrzDQAAAAAAAMhL6PMNAAAAAAAAcBDCNwAAAAAAAMBBCN8AAAAAAAAAByF8AwAAAAAAAByE8A0AAAAAAABwEMI3AAAAAAAAwEEI3wAAAAAAAAAHIXwDAAAAAAAAHITwDQAAAAAAAHAQwjcAAAAAAADAQQjfAAAAAAAAAAfxcHYBuXXq1ClNmTJFe/bs0eXLl1WyZEk9++yz6tOnj/Lnz+/s8uDiIiMjFRoaqhdffFHvvPOOs8uBC1q+fLkWLVqkI0eOKDExUcWKFVOjRo3Up08fVaxY0dnlwcWYzWb99NNPWrRokSIiImQymVSpUiWFhoaqU6dO8vDIe8067TQciXYauUU7DXtyxXYawP1hMgzDcHYR9+r3339X9+7dlZCQoFq1aqlkyZLau3evLl68qKCgIM2fP18FChRwdplwUZcuXVK3bt0UERGhbt26cVKPHDEMQ2+99ZZWrVolT09PVa9eXUWLFtWRI0d0/vx5+fj4aNq0aWrUqJGzS4ULGTZsmJYvXy5vb2/VrVtXnp6e2rt3r27cuKH69etr9uzZ8vLycnaZVrTTcCTaaeQG7TQcwdXaaQD3j8tG7ykpKRo8eLASEhL00UcfqX379pKkpKQkDRkyRBs2bNCECRM0evRo5xYKl/Tnn39q0KBBOn36tLNLgYtasWKFVq1apYCAAM2ePVtBQUGSpLS0NH3xxReaPn263nrrLa1du1a+vr5OrhauYPny5Vq+fLnKlCmj7777TqVLl5YkXblyRT169NDu3bs1b9489erVy8mV3kY7DUeinUZu0U7D3lytnQZwf7lsn28///yzzp8/r8cee8x6Qi9J3t7eGjdunHx9fbVo0SJdv37diVXC1Vy7dk2ffvqpOnbsqNOnT6ts2bLOLgkuatGiRZKkN99803pCL0nu7u4aPHiwHnnkEV26dEnbt293VolwMUuXLpUkDRkyxHpCL0lFihRRnz59JElbtmxxSm2ZoZ2GI9BOw15op2FvrtZOA7i/XDZ827hxoySpVatWGeYVKVJEDRo0UEpKirZu3Xq/S4MLmzdvnr766isVLVpU06ZNU2hoqLNLgosqWLCgKlWqpEcffTTDPJPJpAoVKkiSYmNj73dpcFEzZ87UypUr1aJFiwzzzGazJMnT0/N+l5Ul2mk4Au007IV2Gvbmau00gPvLZcO3Y8eOSZKCg4Mznf/II49Iko4ePXrfaoLrK1mypN5++22tXr1azZs3d3Y5cGFTpkzRL7/8onLlymWYl5aWpsOHD0uSSpUqdb9Lg4vy8vJSUFCQfHx8bKZHREToyy+/lCR16NDBGaVlinYajkA7DXuhnYa9uVo7DeD+ctk+32JiYiRJJUqUyHS+v7+/JK5WIWdefPFFZ5eAv4H58+fr/PnzKlKkiBo2bOjscuCi3n77bUVEROjQoUPy8fHRiBEj1KZNG2eXZUU7DUegncb9QDsNe8jr7TSA+8tlw7fExERJt/uOyYxlekJCwn2rCQD+yo4dO/TJJ59Iut3PzJ1XR4HsiI+P17Jly6yvTSaTzpw5o5s3byp//vzOKywd2mkAroh2GvbgCu00gPvLZR87dXd3z9ZyhmE4uBIAyJ6NGzeqX79+Sk5OVpcuXbiDA/fMy8tLW7du1d69ezV37lwFBgbq+++/V58+ffJMu0c7DcDV0E7DXlyhnQZwf7ls+Ga5YnDr1q1M5yclJUkSQ4MDyBO+/fZbDRw4UElJSXrllVf03nvvObskuDAvLy/5+/srf/78atiwob755hv5+/srPDxcmzdvdnZ5kminAbgW2mnYkyu00wDuL5cN3wICAiRJFy9ezHS+pQ8Zy3IA4Aypqal67733NGbMGJnNZr355pt69913ZTKZnF0aHiBFihRR06ZNJUmHDh1ycjW30U4DcAW007gf8mI7DeD+ctnwzTJ62vHjxzOdf+LECZvlAOB+S0pKUt++ffXTTz/J29tbkyZNUp8+fZxdFlxQcnKyxo0bpzfeeCPLO8m8vLwk3f4imRfQTgPI62inYS+u2E4DuL9cNnx78sknJUlr1qzJMO/KlSvatWuX8uXLp0aNGt3nygBASktL08CBA7V161YVLVpU3377rZ555hlnlwUX5eXlpV9//VWrV6/Wxo0bM8xPTk7W9u3bJUk1atS43+VlinYaQF5GOw17csV2GsD95bLhW4sWLVSmTBlt2rRJP/74o3V6UlKS3nnnHSUkJKhjx44qWrSoE6sE8Hc1bdo0bd26Vb6+vpo3b55q1qzp7JLg4rp06SJJGjdunE6fPm2dnpCQoHfffVeRkZEKCgqyhl7ORjsNIC+jnYa9uVo7DeD+8nB2AffK29tbH3/8sXr16qX3339fCxYsUNmyZbVv3z7FxsaqevXqGjJkiLPLBPA3dO3aNc2ePVvS7f6sZsyYkeWy7dq10xNPPHG/SoML69mzp/bv36+NGzeqTZs2evTRR5UvXz4dPHhQcXFxKleunKZOnZrtUUYdjXYaQF5FOw1HcLV2GsD95bLhmyTVq1dPCxcu1OTJk7V7926dOHFCZcuWVceOHdWjRw/rSGsAcD/t3r1bCQkJkqTIyEhFRkZmuWz16tU5qUe2eHp6aurUqVqwYIEWL16sAwcOyGw2KzAwUJ07d1aPHj1UoEABZ5dpg3YaQF5EOw1HcMV2GsD9YzIMw3B2EQAAAAAAAMCDyGX7fAMAAAAAAADyOsI3AAAAAAAAwEEI3wAAAAAAAAAHIXwDAAAAAAAAHITwDQAAAAAAAHAQwjcAAAAAAADAQQjfAAAAAAAAAAchfAMAAAAAAAAchPANAAAAAAAAcBDCtzwsOTlZCxYsUL9+/fTkk0+qZs2aql27tlq3bq1Ro0Zp7969zi4xW86dO6fg4GAFBwfr9OnTzi7nnjnifbjaZ5OamqpTp07ZTNu1a5f1PaSmpjqpsuyLiYlRgwYNNHLkSGeXki3Dhw9XcHCw3nrrLWeXYldffvmlgoOD1blzZ5vpzZs3V3BwsBYuXOikyqRly5apcuXK+u2335xWA1wD7XTeQjtNO+0MtNP3H+00AFdE+JZHbd26Va1atdKoUaO0ceNGJSUl6eGHH1ZAQIDOnDmjBQsWqHPnznrjjTcUHx/v7HLxN7B161a1bdtWy5Ytc3YpuTJy5EglJyfrX//6l7NLQR7Vrl071axZUyNGjNC1a9ecXQ7yKNpp5DW00/i7oJ0G4Io8nF0AMlq2bJlGjhyptLQ0hYSEaMiQIXr00UdlMpkkSfHx8Vq4cKGmTJmi1atX68SJE5o7d678/f2dXDkeZDNmzMhwNV2SatasqV9++UWS5OGRt/+krFq1Slu3btUbb7yh4sWLO7scZGLOnDlKSUlRQECA02owmUwaNmyYunbtqgkTJujDDz90Wi3Im2inkRfRTuN+oJ0GgHvDnW95zOHDhzVq1CilpaWpU6dO+vbbbxUSEmI9oZckPz8/9ejRQz/88IMCAgIUERHhMrfm48Hj4+OjSpUqqVKlSs4u5a6Sk5M1YcIEFShQQN27d3d2OchCYGCgKlWqpAIFCji1jpCQEDVs2FALFy7U8ePHnVoL8hbaabga2mnYE+00ANwbwrc85pNPPlFycrJq1Kih9957T25uWf8TPfLII9YrPVu2bHH5xwwAR1q4cKEuXLigtm3bys/Pz9nlwAV06tRJZrNZU6ZMcXYpyENopwHHoJ1GTtFOA3AlhG95yPHjx7Vz505JUs+ePeXu7v6X6zRr1kx16tSRJH333XeSpISEBNWpU0fBwcFau3Ztluv26NFDwcHBmjRpks30S5cu6ZNPPlHr1q1Vq1Yt1alTRy+88IK+/vpr3bp1K8N2LB2yfvbZZ1q3bp2efvppVa9eXc2bN9fPP/9ss6xhGFq6dKk6deqkOnXqqG7dunrhhRf0ww8/yDCMTOtMTk7W3Llz9dJLL+nRRx9VzZo19fTTT2v8+PGKjY3N8v39+eefGjVqlJ599lnVrVtX1atXV+PGjdW7d2/9+uuvWa53+PBh/etf/1LTpk1Vs2ZNPffcc/r++++zrC87crrNJUuWKDg4WE2aNMl0fvoOoM+dO2ednt1/i9OnT2vs2LF6/vnnFRISomrVqqlBgwbq1q2bFixYoLS0tAy17N69W5I0ffp0BQcHa/jw4ZL+uiPngwcPaujQoXryySdVvXp11a9fX6+88ooWLVpksx+LV155RcHBwdqyZYuOHDmiQYMGqXHjxqpevbqeeuopjRs3TnFxcdn41G1Zfj/atWtnM33EiBEKDg5W//79s1x3xYoVCg4OVrNmzWQ2myVJaWlpmj9/vjp37qxHH31U1atX1+OPP66BAwdq48aNOa4vO06dOqVBgwapQYMGqlWrltq1a6dZs2Zl+nspSUlJSfr+++/Vo0cP62dYt25dtW3bVh999JFiYmIyXW/VqlXq0aOH6tevr+rVq6tRo0bq2bOnVqxYYX3/d8rp342sZNaRs+UY69ixo1JSUvT111/r+eefV61atRQSEqJu3bpp3bp1WW7zXmt76qmn5Ofnp7Vr12b5WeHvhXaadtqCdpp2OjO007TTAJCVvN3xw9/M9u3bJUlubm564oknsr1ey5YttW/fPh06dEiXL19WsWLF9Mwzz2jJkiVasWKFWrZsmWGdmJgY6xeIDh06WKfv2bNHAwYM0NWrV+Xp6amHHnpIhmHo8OHDOnTokJYvX66vvvoq035rwsLC9PXXX6tQoUKqVKmSIiIiVKVKFZtl3n33XYWFhalQoUKqUKGCzp8/r0OHDunQoUP6/fffNX78eJvlY2Nj1adPH/35558ymUwqXbq0ChcurBMnTmjOnDlatmyZpk6dqkcffdRmvfnz5+vf//63zGazChUqpPLlyyspKUnnzp3Tli1btGXLFvXr109DhgyxWW/FihUaOXKkUlJSVKhQIT3yyCM6f/68PvzwQ9WvXz/b/yaO3uZfudu/xbp16zRkyBAlJyfL19dX5cqVk2EYOnfunHbt2mX9b8KECZKkYsWKqW7dujp27Jji4+NVqlQplSpVSg899NBf1jFr1ixNnDhRZrNZfn5+Cg4O1pUrV7R7927t3r1by5cv19SpUzN9dGHLli368ccfZRiGHnroIeXPn19nzpzR3LlztWnTJi1ZsiTbV8aPHDmikydPqkiRIqpVq5bNvA4dOmjJkiX67bffdPXqVRUuXDjD+suXL5ckhYaGys3NTYZhaMiQIVq9erUkqXz58ipQoIAuXLigdevWad26dRowYIAGDRqUrfqy4/jx4/rHP/6hmzdv6pFHHlFaWpqOHDmiI0eO6L///a+++eYbFSpUyLp8XFycunfvrmPHjslkMikwMFClSpVSTEyMjh8/ruPHj2vFihVasmSJSpYsaV1v/PjxmjNnjiSpTJkyKleunGJjY7V161brf5988olNbbn5u5ETKSkp6t27t3bs2KEiRYqoUqVKOnXqlPWYHT16dIZR2XJTm5eXlxo2bKh169bp119/5TEo0E7TTtsN7bQt2mnaadppAA88A3nG8OHDjaCgIOOpp57K0Xrbt283goKCjKCgIGP79u2GYRhGWFiYERQUZFSvXt24fv16hnVmzZplBAUFGV26dLFOi46ONurXr28EBQUZ7777rnHt2jXrvNOnTxsvvvhihnUMwzC++OIL6/4HDhxo3Lp1yzAMw7h8+bJhGIZx9uxZ6/zKlSsbX3/9tZGcnGwYhmEkJycbo0ePts4/ceKEdbtms9l46aWXjKCgIKNz585GRESEdd7169eNESNGGEFBQUaDBg2M2NhY67xTp04Z1apVM4KCgoypU6da92UYhnHlyhVj0KBBRlBQkFGtWjXj6tWr1nlnzpwxqlevbgQFBRnjx4+3vo/U1FRjxowZ1hqDgoKMyMjIbP3b3Os2Fy9ebAQFBRlPPPFEpttN/5mePXs22/8WV69eNerVq2cEBQUZ77//vpGQkGBd9+bNm8a///1v6/rHjh2z2efLL79sBAUFGRMnTrSZvnPnTus6KSkp1um//vqrdfqkSZOstRiGYezYscNo3LixERQUZPTr1y/T/QQFBRl9+vQxYmJirPPWrVtnVKlSxQgKCjK++eabrD/4O8yePdsICgoy+vbtm2Ge2Ww2WrRoYQQFBRnz58/PMD82NtaoUqWKERwcbJw+fdowDMPYvHmzERQUZDRs2NA4cuSIddnU1FRj+vTpRlBQkFGlShUjKioq2zVm5e2337Z+Hi1btjSOHj1qnbd//37jscceM4KCgoyhQ4dmul7Lli2NU6dO2czbsmWLUatWLSMoKMj46KOPrNNPnDhhBAUFGTVq1DB27txps87SpUuNypUrG0FBQca+ffus03P7d6NTp04205s1a2YEBQUZCxYssE5Lf4zVrl3bWLFihXXe9evXje7duxtBQUFG/fr1bY7Be60tPcux06dPnyyXwd8H7TTttAXtNO20Be007TQAZAePneYhV65ckaRMr+jdTbFixaw/W27zDwkJUfny5ZWcnJzpoxuWK4Tpr6bPnj1bV69eVfPmzfXvf/9bBQsWtM4LDAzU1KlT5efnp/DwcG3evDnTWt5++215eXlJkooWLZph/j/+8Q/16NFDnp6ekiRPT0+9/fbb1iuj4eHh1mXXr1+vffv2KSAgQF999ZUqVqxonVegQAGNHTtWtWrV0pUrV6xXACVp27Ztcnd3V7Vq1dS/f3/rvqTbn+3bb78t6fbVufSjgs2ePVvJycmqX7++hg8fbn0f7u7u6tOnj81nlV2O2GZ2ZfZvER4erpSUFPn7++vdd9+Vj4+PdXlfX18NHz7c+nkdO3YsV/v//PPPJUkvvfSSBg0aZK1Fkho2bKjJkydLkjZs2GDz725RrFgxffHFFzajaT311FPWR3z27t2b7Vp27dolSQoKCsowz2QyqX379pJu3/1wp1WrVllHNAwMDJR0+wq9JOtjYxbu7u7q27evnnnmGbVt21bXrl3Ldo1/xd3dXdOmTbN5D7Vq1dKnn34qSVq5cqXOnz8v6faxHRYWJpPJpBEjRmS4++GJJ55Q69atJdn+Ox89elSSVKFCBTVo0MBmndDQUHXu3Flt27ZVcnKydbo9/m7kxBtvvKHnnnvO+rpAgQIaOnSoJOnq1asZfqdzW5vl8969e3emj1/h74V2mnbanmin/4d2+iGbbdFO004DePAQvuUhlj4N0p+EZkf6PmeMdH2TZHWi8ueff+rYsWPy9fXVM888Y51u6Yvh+eefz3Q/xYsX12OPPSZJmfaV4e/vr3Llyt211latWmWY5u3trfLly0uSTR8hlnpatGghX1/fDOuZTCZrrenr6dq1qw4cOKD58+dnWoO3t7f158TEROvPmzZtkqQsT7TvvE0+OxyxzezI6t/iqaee0r59+7Ru3Tp5eGR86vzWrVvWL5XpP5ucioyMtJ5cZfUIQJ06daz9IK1fvz7D/EaNGilfvnwZpltGa7tx40a267H0t2M5Kb9T+/bt5ebmpn379tn0zSPJ2kF6+n9Dy0ny5s2bNWPGDEVFRdms85///EeffPKJzQl/bjVq1CjTkeoaNWqksmXLymw267fffpN0+2/I+vXrdeDAAT355JMZ1jEMw/o7lZSUZJ1u+T08cuSIPv74Y0VGRtqs995772nChAk2j2Hl9u9GTjVr1izDtPSfy/Xr1+1aW4UKFSTd7qPrXvowwoOFdpp22l5op23RTtuinc5+bbTTAFwFfb7lIZaTqZxehbNciZdsr2K3b99eX3zxhcLCwhQdHW3tL8JyNf3pp59W/vz5JUk3b960Xo2bOnWq5s2bl+m+LMucPHkyw7z0Vz6zUqJEiUynW+pIf4JhudK3ceNG6xXMO1ka8MjISBmGIZPJZJ3n6emp33//XceOHdPZs2d15swZHTt2zKZ2y5egpKQk64nZI488kum+KleuLJPJlO0OnR2xzez6q38Lb29vaz8kls/mxIkTOn78uFJSUiQpVzVZPmMfH59MT0Qtqlevrn379tlcBbXI6lixfCnLrNPorFy+fFmSbK6opleqVCk1btxYW7du1cqVK62dOh89elRHjhyRr6+vnn76aevyzZs3V/369bV7925NnDhREydOVMWKFdW4cWM98cQTWX4hyY2qVatmOc/SoXdERITN9Hz58unSpUs6cOCAIiMjde7cOZ08eVJ//vmn9e9M+o6Zq1Wrpueee04rV67U119/ra+//lplypRRo0aN9Pjjj+uJJ56w6b/HHn83ciqz4yL9F3XLVW971Zb+mLl8+XKu+8OBa6Odpp22F9ppW7TTtNO00wAedIRveUjlypX1yy+/6MyZM0pMTLR51OBu/vzzT+vP6W91L1mypM2JSu/evZWWlqZVq1ZJsr1CGB8fb/05O48xZHY1MzsnMTk50bHUFBUVleGK5Z3S0tJ08+ZN6wnH0qVLNWHCBF28eNFmubJly+of//iHFixYYDM9/RepzK7e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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ax = sns.catplot(\n", + " combined_compare,\n", + " x=\"overhead_duration\",\n", + " col=\"algorithm\",\n", + " hue=\"dataset\",\n", + " kind=\"bar\",\n", + " #hue_order=['datagen-7_5-fb', 'graph500-22', 'datagen-7_9-fb', 'cit-Patents', 'datagen-8_4-fb', 'datagen-8_8-zf'],\n", + " col_order=[\"BFS\", \"PageRank\", \"WCC\", \"SSSP\"],\n", + " legend_out=True,\n", + " errorbar=\"sd\",\n", + " capsize=0.2,\n", + " col_wrap=2,\n", + ")\n", + "# sns.move_legend(ax, \"center right\", ncols=1, bbox_to_anchor=(1.05, 0.55), title=None, frameon=False)\n", + "\n", + "ax.set_axis_labels(\"Overhead duration (vs. baseline)\", \"Dataset\")\n", + "ax.set_titles(\"{col_name}\")\n", + "\n", + "ax.savefig(plot_location(\"es06-overhead-duration.pdf\"), dpi=\"figure\")" + ] + }, + { + "cell_type": "markdown", + "id": "08bdd8e0", + "metadata": {}, + "source": [ + "## Size" ] }, { "cell_type": "code", - "execution_count": 179, - "id": "bb8dc560-b63c-4604-b8e2-e49e304a7055", + "execution_count": 54, + "id": "1a21b380", "metadata": {}, "outputs": [ { "data": { - "image/png": "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Vv1crVixgu3bt9OvXz8CAgLIycnh888/54YbbrC4awaNe93q+tmqOnfnzp2v2Cr0159RS9GUP296vZ4PPvgAgIcffviyndtjYmIA2LRpE99//z29evUiMDCQ4uJi1qxZw7x580hKSqrzuZvDjTfeyJ133omtrW29j9GWvtvqQkZ9isuq7dBygJCQEIqKigBo167dZfepGhFmMBgoLi6+4n5XU1ZWxmOPPUZmZia9evVi8eLFpm1Vv0x69+7N8uXL6dWrl+l8n332Ge+99x5PPfUUAwcOxMPDo87nbqiq0U9X+hKrer7qOjbmsa61f13P35wa87pdSUJCAk899RQAy5Ytq9ZSW9XCcfPNN/P0009jbW0NGH+h/P3vfyc0NJSnnnqKL7/8st7nbwqNed3q+tmqOvfVPuNV3weFhYW1e0PNpCl/3rZt20Z6ejpeXl5MnTr1svtU/bxNnjyZN954wzTKOD8/n2eeeYZt27bxyCOPsHHjxst2C2np2tJ3W11IUBOX5eLictWh5ZfSaDR1+tIwGAx1rqeoqIhHHnmEPXv24OzszH//+99qvwgefPBBFixYgL29fbV5djQaDffeey9Hjx5l586drF27lieeeKLO528oKyurWr1vVVVrdazaqDrfX/t6NPT8zakxr9vlREVFcffdd5OXl8eECRN46KGHqm3fsmULGRkZeHl5VWsdcnNz4+2332b69Ons27eP5ORk+vTpU68amkJjXre6frbk5+3yvv76awDuu+++K7Y0fvXVV5w6dYoePXqY/igAcHR05LXXXiMiIoKkpCT27dvHuHHj6lyDpWtL3211IUFNXFZVE31tVU0CWVJSctntpaWlgPGDVdfWtNOnT3P//fcTGxtL586d+fLLL2v8UtRqtVdtKbvuuuvYuXOn2fqq2dvbk5eXZ7oOf1V13ezs7Gp1LOCax6ra71r71/X8zakxr9tfbd26lSeffJLi4mKmTJnCO++8U+MXhYODwxX7vnTt2hVfX1/CwsKIjo62qKDWmNetrp+ta30XwJ8/i23l5+3kyZNERUXRvn37q04cbGtrW2OAQRUHBwdGjBjBxo0biY6ObpVBrS19t9WF9FETjaKq9e1KfU6q+h507NixTn8FRUVFccMNNxAbG0ufPn1Yu3btFX9xXk1VB/H6TMDYGKr6T1zp+lyrj9/ljnWlPhd/PZaD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", + "image/png": "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aPPmzdq+fbtWr16tffv2qVu3boqKitKQIUN07dq1R/58iYmJ2rBhgz7//HNJUsOGDVW7dm3L+Zs3b2rs2LGKj49Xr169tH//fq1fv14bNmzQvn379PLLL0uSNm7cmObrqn///bdOnDih6dOn6+DBg1q9erV2796tBg0aSJK+/PJLywz89Pz8888aP3687OzsNGXKFII3AMATg5lvACz69u37wPMDBgzQ8OHD0z3fqlWrB97/1ltvpdpFrUqVKlq5cqU++ugjHTt2TJJ0584d7dq1S7t27ZIkFSxYUN27d9egQYPk7OycgU8CAIDxYmNjdeHCBf30009au3atJOnVV19VoUKFlJCQoCNHjshkMmnMmDEqU6aM1b1NmjRR+/bttWrVKp09e9Zy/Pz589q4caNMJpPmzJkjb29vyzkvLy99++23at++vWJjY63a27Ztm44fP67ChQvr+++/l4uLi+Vc3rx5NXnyZJ07d04nTpzQggUL9N5776X6PKtWrdL+/futjpnNZt29e1chISGKjo6WJNWvX19ffPGF1XVHjx5VQkKCPDw89OGHH1otLeHi4qLRo0dr+fLlSkhI0NmzZy3ryN5v2LBh6tixo1Xd7733nrp27aqoqChdvHgxzfskae3atRo3bpzs7e312WefqUOHDmleBwBAViB8A2BRsWJFubq6Wr5OTk7W3bt3FRQUpPj4eC1YsEAxMTEaO3ZsqtdCJalatWpycnJKt31PT880j5cvX15Lly7V6dOntXXrVu3bt09//fWXEhISJEkRERGaN2+eNm/erB9//NHq1RwAAP4ND/sFlSR1795db7/9tqR7M+C2bdumuLi4NJ+NZrPZEpDdH6T99ttvkqRnnnnGKnhLUbx4cbVu3VobN260Or5161ZJUuvWra2CtxQmk0mdOnXSiRMntGPHjjTDt9DQUIWGhqb52YoUKaIOHTqoXbt2aty4carzrVq10vHjxxUbG2sVvKWIi4uTm5ubrl27ppiYmDT7aNGiRapjXl5elj/funUrzfs2bNigMWPGKDk5WTNnztSzzz6b5nUAAGQVwjcAFh9++KF8fX1THY+Pj9eaNWv0ySefaPHixUpKStKECRNSXTdr1iyVKFHisfuvXLmyKleurKFDhyomJka///679u7dq3Xr1ikiIkLBwcF6++239dNPPz12HwAAPI5//oLKZDIpV65ccnNzk7e3t1q3bq3y5cunui9Xrly6fv26Tpw4ocDAQIWEhOjChQs6ffq0bt68KUlWyyukvJJZqVKldGupVq1aqvAtZfbcjh075O/vn+Z9KeFVYGCgzGaz1eYJkvUMdbPZrGvXrmnJkiX67rvvdOPGDRUoUECNGjVKty5Jyp07t/z9/eXv769Lly4pODhY586dU0BAgOWXamlt1CApzY0ncufObflzUlJSqvM3btzQ+++/bxnDiIiIB9YHAEBWIHwD8FBOTk7q2bOnrl27pq+//lorVqzQG2+8ke5MNltwdnZWo0aN1KhRI7399tsaO3asNm3apD/++EOnTp1S1apVDesbAIB/Su8XVA9y7do1TZgwQdu3b7cK2JydnVW9enUlJSVZllxIERkZKUlpzl5LcX8ImOLOnTuSHjx7LUVSUpLu3r2bZjspTCaTChcurBEjRqh06dIaM2aM5s2bp9u3b+ujjz5K855du3Zp8uTJVptPSFLhwoX17LPPavfu3ZbAMS2Ojo4PrDut0C4hIUGOjo5q2bKlfvvtN02fPl1NmzZVyZIlH9gWAAD/JsI3ABnWqlUrff3110pKStLff/+d6fDto48+0sGDB9WlSxe9+eab6V6XO3duTZw4UVu2bFFCQoIuXrxI+AYAeKLFxcXplVde0fnz5+Xm5qZevXqpWrVq8vLyUqlSpWRvb6+ZM2emCt9S1jZNCdPScvfu3VTHUu4bN26c+vTpY8NPInXt2lW///67Vq5cqSVLlqhq1arq1q2b1TUHDx7UoEGDlJycrFq1aqljx46qWLGivLy8VLBgQUmy2W7p93N0dNScOXPUqFEjdevWTf7+/vrggw+0cOHCVDP7AADIKux2CiDD7v8hNr1XRh5FXFycgoKCLOvUPIirq6vy5MkjSSpQoECm+wYAwEhbt27V+fPn5eDgoJ9++knDhw9X69atVbZsWcu6qVevXk11X8WKFSVJZ86cSbfttF4rLVu2rCSluZNoitDQUP3xxx8KCwt7pM8iSWPGjLHsdj5p0iRdvnzZ6vx3332n5ORk1a9fX0uXLrXsXp4SvMXHx1tm9dlSgQIF1KxZMzk4OGjy5Mmyt7fXoUOHtHTpUpv3BQDA4yJ8A5BhKbuPmkwmVatWLdPtderUSZL0119/afXq1Q+8du/evYqKipKbm5tq1qyZ6b4BADBSSEiIJClPnjypdjqVpOvXr2vnzp2SrNcya9OmjSTp+PHjOn/+fKr7IiIiLJsy3C9ls4LNmzenu+7Z2LFj1bNnT40cOfKRPot073NMmjRJkhQdHa3x48dbnU/5vJUqVUpzU6a1a9da1nxLTEx85P4zolq1anr11VclSdOnT9elS5cM6QcAgEdF+Abgocxms7Zs2aJ58+ZJktq1a2eTHUcbNWqkdu3aSbq3ls7kyZMtP7yniIuL06pVqzR8+HBJ0vDhwy0z4AAAeFKVK1dOknTz5k0tXLjQasb4H3/8oX79+ikqKkqSrHb/rFKlilq3bq3k5GS99dZbOnfunOXclStXNHjw4DRfSW3fvr0qVqyoW7duqX///lYz4O7cuaMJEyZo//79MplMGjhw4GN9poYNG6pz586SpD179mjdunWpPu+mTZusQsO4uDgtXrzYEtxJ1ru72tqwYcNUqlQpRUdH64MPPrDJTH0AADKLNd8AWEyaNCnV4suJiYm6fPmy5bfoVatWTXOn08c1ffp0ubi4aO3atVq0aJEWLVqkYsWKqWDBgoqLi1NgYKDi4+Pl6OiokSNHqlevXjbrGwAAo7Rs2VK1a9fW8ePH9emnn+q7775TkSJFdO3aNYWFhclkMqlhw4bav3+/wsPDrXYf/eSTTxQUFKSAgAB16NBB5cuXl729vQICAuTg4CBvb2+dOXPGaoaZo6OjvvnmG73++us6ffq0OnTooLJly8rZ2VmBgYGKjo6WdO/10aZNmz725xo9erR2796tyMhITZkyRU2aNFGBAgU0ZMgQ7d+/X9euXVPHjh1VpkwZOTk5KSgoSNHR0SpQoIDKli0rf3//NF+3tZXcuXPrk08+0SuvvGJ5/fSll14yrD8AADKCmW8ALM6ePavff//d6n9nzpyRk5OTWrRooSlTpmjFihVyd3e3WZ9OTk6aOnWqVq5cqddee01Vq1ZVfHy85YfzsmXLqn///lq/fv1j/6YeAIB/m729vRYuXKh3331XlStXVkxMjM6ePSsHBwe1b99eS5Ys0TfffKNcuXIpKipKv//+u+XeAgUKaMWKFRoyZIjKlSun4OBgXblyRS1atNCKFStUq1YtSf/bZCFFyZIltWbNGo0aNUo1a9bUtWvXdPbsWeXJk0ft2rXT4sWL9corr2TqcxUoUECjR4+WdG9n1smTJ0u698rnunXr1KlTJxUrVkzBwcEKDg5WqVKlNGjQIG3cuFF9+/aVJO3cudPQGWn169dX9+7dJfH6KQDgyWAyMxcbAAAAyDaGDRumX3/9VSNGjNCgQYOyuhwAAPAQzHwDAAAAnhD79u1Tq1at9Pbbb6d5PiYmRocPH5Z0b304AADw5CN8AwAAAJ4QlStXVlhYmP773/9q/vz5VjuDRkRE6N1331VkZKTKlSunBg0aZGGlAAAgo3jtFAAAAHiCLFiwQFOmTJEkubm5qXjx4oqJidGlS5eUkJCgokWLys/PT97e3llcKQAAyAjCNwAAAOAJc/LkSS1cuFAnT55UWFiYHB0dVbx4cbVu3VovvfSSTTc/AgAAxiJ8AwAAAAAAAAzCmm8AAAAAAACAQXJU+HbmzBmdOXMmq8sAAABp4DkNAACAp1GOCt/i4+N1584dxcXFZXUpOUJcXJyOHTvGeNoQY2p7jKntMaa2xXj+D89p2+Lvlu0xprbHmNoeY2pbjCeAf0OOCt9SJCUlZXUJOULKODKetsOY2h5januMqW0xnqkxFrbB3y3bY0xtjzG1PcbUthhPAP+GHBm+AQAAAAAAAE8CwjcAAAAAAADAIIRvAAAAAAAAgEEI3wAAAAAAAACDEL4BAAAAAAAABiF8AwAAAAAAAAxC+AYAAAAAAAAYhPANAAAAAAAAMAjhGwAAAAAAAGAQwjcAAAAAAADAIIRvAAAAAAAAgEEI3wAAAAAAAACDEL4BAAAAAAAABiF8AwAAAAAAAAxC+AYAAAAAAAAYhPANAAAAAAAAMAjhGwAAAAAAAGAQwjcAAAAAAADAIIRvAAAAAAAAgEEI3wAAAAAAAACDEL4BAAAAAAAABiF8AwAAAAAAAAxC+AYAAAAAAAAYhPANAAAAAAAAMAjhGwAAAAAAAGAQwjcAAAAAAADAIIRvAAAAAAAAgEEI3wAAAAAAAACDEL4BAAAAAAAABiF8AwAAAAAAAAxC+AYAAAAAAAAYhPANAAAAAAAAMAjhGwAAAAAAAGAQwjcAAAAAAADAIIRvAAAAAAAAgEEI3wAAAAAAAACDEL4BAAAAAAAABiF8AwAAAAAAAAySI8M3k8mU1SUAAIB08Jy2DZPJJGdnZ8bThhhTAABgBIesLsDWnJyc5OzsnO755GSz7Oz4gQoAgKzwsOc0Ms7Z2VlVqlTJ6jJylMcdU36+BAAAD5LjwjdJmrNsny6H30x1vHjh/BrSq1EWVAQAAFKk95wGsiN+vgQAAA+TI8O3y+E3FXg5MqvLAAAAaeA5DQAAgKdJjlzzDQAAAAAAAHgSEL4BAAAAAAAABiF8AwAAAAAAAAxC+AYAAAAAAAAYhPANAAAAAAAAMAjhGwAAAAAAAGAQwjcAAAAAAADAIIRvAAAAAAAAgEEI3wAAAAAAAACDEL4BAAAAAAAABiF8AwAAAAAAAAxC+AYAAAAAAAAYhPANAAAAAAAAMAjhGwAAAAAAAGAQwjcAAAAAAADAIIRvAAAAAAAAgEEI3wAAAAAAAACDEL4BAAAAAAAABiF8AwAAAAAAAAxC+AYAAAAAAAAYhPANAAAAAAAAMAjhGwAAAAAAAGAQwjcAAAAAAADAIIRvAAAAAAAAgEEI3wAAAAAAAACDEL4BAAAAAAAABiF8AwAAAAAAAAxC+AYAAAAAAAAYhPANAAAAAAAAMAjhGwAAAAAAAGAQwjcAAAAAAADAIIRvAAAAAAAAgEEI3wAAAAAAAACDEL4BAAAAAAAABiF8AwAAAAAAAAxC+AYAAAAAAAAYhPANAAAAAAAAMAjhGwAAAAAAAGAQwjcAAAAAAADAIIRvAAAAAAAAgEEI3wAAAAAAAACDEL4BAAAAAAAABiF8AwAAAAAAAAxC+AYAAAAAAAAYhPANAAAAAAAAMAjhGwAAAAAAAGAQwjcAAAAAAADAIIRvAAAAAAAAgEEI3wAAAAAAAACDOGR1AUao6V1MxTzypTruUcA1C6rJvkwmk5ydnWUymbK6lByDMQWA9J/TQHbEz5cAAOBhcmT41vPZWlldQo7g7OysKlWqZHUZOcrDxtScnCyTHRNSAeRsPKeRE/EMBwAA6cmR4dvFjd8pJiI0q8sAHolzQU+V7TAgq8sAAMPxnEZOwzMcAAA8SI4M32IiQhUTFpzVZQAAgDTwnAYAAMDThLnxAAAAAAAAgEEI3wAAAAAAAACDEL4BAAAAAAAABiF8AwAAAAAAAAxC+AYAAAAAAAAYhPANAAAAAAAAMAjhGwAAAAAAAGAQwjcAAAAAAADAIIRvAAAAAAAAgEEI3wAAAAAAAACDEL4BAAAAAAAABiF8AwAAAAAAAAxC+AYAAAAAAAAYhPANAAAAAAAAMAjhGwAAAAAAAGAQwjcAAAAAAADAIIRvAAAAAAAAgEEI3wAAAAAAAACDEL4BAAAAAAAABiF8AwAAAAAAAAxC+AYAAAAAAAAYhPANAAAAAAAAMAjhGwAAAAAAAGAQwjcAAAAAAADAIIRvAAAAAAAAgEEI3wAAAAAAAACDEL4BAAAAAAAABiF8AwAAAAAAAAxC+AYAAAAAAAAYhPANAAAAAAAAMAjhGwAAAAAAAGAQwjcAAAAAAADAIIRvAAAAAAAAgEEI3wAAAAAAAACDEL4BAAAAAAAABiF8AwAAAAAAAAxC+AYAAAAAAAAYhPANAAAAAAAAMAjhGwAAAAAAAGAQwjcAAAAAAADAIIRvAAAAAAAAgEEI3wAAAAAAAACDEL4BAAAAAAAABiF8AwAAAAAAAAxC+AYAAAAAAAAYhPANAAAAAAAAMAjhGwAAAAAAAGAQwjcAAAAAAADAIIRvAAAAAAAAgEEI3wAAAAAAAACDOGR1AUbIX7aachcomtVlAI8kV/5CWV0CAPwreE4jp+EZDgAAHiRHhm/Fm3bN6hKAJ0JycrLs7JjgCuDJwnMaORXPXQAAkJYcGb59u2uRrtwMy+oygCxVLH8RvdGsb1aXAQCp8JxGTsRzFwAApCdHhm9XboYpKCIkq8sAAABp4DkNAACApwnz4gEAAAAAAACDEL4BAAAAAAAABiF8AwAAAAAAAAxC+AYAAAAAAAAYhPANAAAAAAAAMAjhGwAAAAAAAGAQwjcAAAAAAADAIIRvAAAAAAAAgEEI3wAAAAAAAACDEL4BAAAAAAAABiF8AwAAAAAAAAyS6fCtb9++mjx5coauHTp0qNq2bZvZLgEAAAAAAIBswSGzDRw+fFhJSUkZuvbcuXO6evVqZrsEAAAAAAAAsoVHCt/Onz+vb7/9NtXxwMBAjRo1Kt37zGazrly5oosXL8rDw+PRqwQAAAAAAACyoUcK37y8vBQYGKg///zTcsxkMikiIkLr16/PUBvPP//8IxUIAAAAAAAAZFeP/NrpuHHjtHTpUsvXa9asUaFChdSkSZN07zGZTHJxcVGVKlUI3wAAAAAAAPDUeOTwrXr16poyZYrl6zVr1qh06dJWxwAAAAAAAADYYMOFRYsWKW/evLaoBQAAAAAAAMhRMh2++fj4WH1tNpsVFhamW7duqWLFipltHgAAAAAAAMi27GzV0Llz5/TOO++oXr16atGihWVtt9DQULVp00YrV660VVcAAAAAAABAtpDpmW+S9Ntvv+m9995TXFyczGaz1bnQ0FBdunRJH330kS5cuKD333/fFl0CAAAAAAAAT7xMz3wLCgrSe++9p9jYWD377LOaN2+eqlSpYjlfrlw5vfDCCzKbzVqwYIF27tyZ2S4BAAAAAACAbCHT4dv8+fMVGxurQYMGaebMmWrevLly585tOe/m5qZJkyZp2LBhMpvNWr58eWa7BAAAAAAAALKFTIdv+/btk6urqwYPHvzA615//XXly5dPJ0+ezGyXAAAAAAAAQLaQ6fAtPDxcZcqUkZOT0wOvc3JyUsmSJXXz5s3MdgkAAAAAAABkC5kO31xcXHT9+vUMXXvz5k3lyZMns10CAAAAAAAA2UKmwzdvb2+FhYXpr7/+euB1x48fV0hIiLy9vTPbJQAAAAAAAJAtZDp869Kli8xms8aOHatr166lec2FCxf07rvvymQyqWPHjpntEgAAAAAAAMgWHDLbQOfOnbV+/XodOHBAbdu2la+vr4KCgiRJ06ZN07lz57R//34lJiaqVq1a6tq1a6aLBgAAAAAAALKDTM98s7Oz05w5c9S+fXvFxMRo586dioiIkNls1g8//KDdu3crMTFRjRs31rx582Rvb2+LugEAAAAAAIAnXqZnvkn3Nl344osvNHDgQG3dulVnz57VnTt35OzsrLJly6pFixZ65plnbNEVAAAAAAAAkG3YJHxLUalSJVWqVMmWTQIAAAAAAADZlk3Dt3+KjY3V/v37lZycrLp168rNzc3I7gAAAAAAAIAnik3Ct7CwMM2dO1fFihXTwIEDJUnnz59Xv379LDugOjs7a9KkSWrfvr0tugQAAAAAAACeeJkO327cuKEePXooPDxczZs3txz/6KOPFB4eLpPJpDx58ujOnTsaNWqUvL295eXlldluAQAAAAAAgCdepnc7XbhwocLCwlSqVCn17NlTkhQUFKRjx47J3t5ey5Yt09GjRzVw4EAlJiZqwYIFme0SAAAAAAAAyBYyHb7t3r1bDg4Omj9/vmXm286dOyVJderUUa1atSRJQ4cOVb58+XTw4MHMdgkAAAAAAABkC5kO3y5duqQyZcqoRIkSlmP79++XyWRSw4YNLcccHR1VokQJhYeHZ7ZLAAAAAAAAIFvIdPgWGxsrJycny9eJiYk6cuSIJMnHx8fq2piYGJlMpsx2CQAAAAAAAGQLmQ7fChcurMuXLyshIUGSdOTIEUVHRytPnjyWV06lezuiXrp0SZ6enpntEgAAAAAAAMgWMh2++fr66tatW5o+fbr8/f315ZdfymQyqVmzZrK3t5ckRURE6L333lNSUpIaNGiQ6aIBAAAAAACA7CDT4duAAQOUO3duLVq0SF26dNGJEydkb2+vAQMGSJKOHj2qZs2a6ciRI8qbN69ee+21TBcNAAAAAAAAZAeZDt/KlSun//znP6pevbqcnJxUsWJFzZ07V5UqVZJ077XUxMREVahQQcuWLbPamAEAAAAAAADIyRxs0Ujt2rW1YsWKNM+VKFFCa9eutYRxAAAAAAAAwNMi0zPfHtqBnR3BGwAAAAAAAJ5KNpn5liIiIkIxMTEym81WxxMTExUbG6urV69qx44dmjhxoi27BQAAAAAAAJ5INgnfVq5cqVmzZikiIiJD1xO+AQAAAAAA4GmQ6fDtwIEDGjduXIaudXd3V7NmzTLbJQAAAAAAAJAtZHrNt2XLlkmSfHx8tHjxYv3888+SpOeff16//vqrFi5cqOeee06S5OnpqcmTJ2e2SwAAAAAAACBbyPTMtz/++EMODg76/PPPVaRIEUlS6dKldfLkSZUuXVqlS5eWr6+v8ubNq59++kkrV67Uiy++mOnCH6RG8cryzF/Y0D6ArBAdH6ObMbczdG2x/EUMrgYAHg/PaeREeXO5ZnUJAADgCZXp8C0yMlLFixe3BG+S5O3tra1btyomJkbOzs6SpGHDhunnn3/Wxo0bDQ/fuj3TwdD2gaxiTk6WyS7jE1aTk5Nl9wjXA8C/gec0ciJzcjLPXQAAkKZMh28ODg7Kmzev1bFSpUrJbDbrwoULqlq1qiSpQIECKl26tM6fP5/ZLh/qj7nf6s6VUMP7Af5NrsU8VevNNx7pHv4BAOBJxHMaOU3KM9qU1YUAAIAnUqbDt0KFCik01PoH6JIlS0qSAgICLOGbJDk5Oen27Yy9MpcZd66E6lZQkOH9AACAR8dzGgAAAE+TTE+LqVWrlm7cuKG1a9dajnl5eclsNmvPnj2WYzdv3lRgYKAKFiyY2S4BAAAAAACAbCHT4VuPHj1kNpv1wQcfaPjw4YqPj1fNmjWVL18+bd68WbNnz9aOHTs0bNgwxcbGqnz58raoGwAAAAAAAHjiZTp8q1evngYMGKCkpCRt375dTk5OcnR01MCBA2U2mzVnzhwNHjxYhw4dkiQNHDgw00UDAAAAAAAA2UGm13yTpJEjR6px48bau3ev5djrr7+u2NhY/ec//1F0dLTy58+v4cOHy9fX1xZdAgAAAAAAAE88m4RvkuTr65sqWHvrrbc0aNAgRUZGqkCBArK3t7dVdwAAAAAAAMATL9Ovnc6ePVurV69O97yDg4M8PDxkb2+vefPm6b333stslwAAAAAAAEC2YJPwbdWqVRm69tdff9XWrVsz2yUAAAAAAACQLTzSa6eXL1/WgQMHUh2/fv26fv7553TvM5vNunLligICAuTi4vLoVQIAAAAAAADZ0COFbwULFtTXX3+t8PBwyzGTyaTg4GCNGzfuofebzWY1aNDg0asEAAAAAAAAsqFHCt9y586td999VzNnzrQcu3LlipycnFSoUKF077Ozs5OLi4uqVKmiUaNGPX61AAAAAAAAQDbyyLudduzYUR07drR8XalSJVWvXl1LliyxaWEAAAAAAABAdvfI4ds/vfXWW/L09LRFLQAAAAAAAECOYpPwDQAAAAAAAEBqmQ7fUty+fVsXL15UTEyMkpOTrc4lJSUpNjZWV69e1Y4dOzR//nxbdQsAAAAAAAA8sWwSvn355ZeaP3++EhMTbdEcAAAAAAAAkCNkOnz79ddfNW/evAxdW7p0aXXo0CGzXQIAAAAAAADZgl1mG1i1apUkqX379tq5c6cOHDggOzs79ejRQ3/99Ze2bt2qN954Q3Z2djKbzXr99dczXTQAAAAAAACQHWQ6fDt16pRy5cqlCRMmqGjRonJ3d1e5cuV04MABOTg4qESJEhoxYoTefPNNXbp0SUuWLLFF3QAAAAAAAMATL9Ph282bN1WiRAnly5fPcqxixYoKCQnR7du3Lcf69esnJycnbdmyJbNdAgAAAAAAANlCpsO3XLlyKVeuXFbHSpYsKUk6f/685Zirq6tKly6twMDAzHYJAAAAAAAAZAuZDt+KFCmiy5cvKykpyXKsVKlSkqSAgIBU10dHR2e2SwAAAAAAACBbyHT49swzz+jWrVuaP3++5ViFChVkNpu1detWy7GwsDBdvHhRhQsXzmyXAAAAAAAAQLaQ6fDtpZdekslk0syZM9W9e3fFx8erWrVqKlSokHbv3q0xY8Zo8eLFev3115WYmKiqVavaom4AAAAAAADgiZfp8K1SpUr68MMPZW9vr3PnzsnJyUl2dnYaOXKkzGaz1q5dq8mTJysgIEB2dnYaPHiwLeoGAAAAAAAAnngOtmikd+/eatiwofbt22c51qVLF0mSn5+fQkJCVK5cOY0YMUKVK1e2RZcAAAAAAADAE88m4ZsklSlTRmXKlLE61qVLF0sIBwAAAAAAADxtMhW+xcfH6+jRozp06JBCQ0MVFRUlk8mkfPnyycvLS3Xq1FG9evVkMplsVS8AAAAAAACQbTxW+JaQkKBFixbpu+++082bNy3HzWZzqqCtcOHCGjhwoHr16iU7u0wvMQcAAAAAAABkG48cvt25c0eDBw/WkSNHZDabJUmurq4qXry48uTJo4SEBN2+fVshISFKTExUWFiYJk2apO3bt+vrr7+Wi4uLzT8EAAAAAAAA8CR65PDt7bff1uHDh2Vvb6+ePXuqZ8+e8vb2TnVdfHy8/vzzT61cuVIbNmzQ/v37NWrUKM2ePdsmhQMAAAAAAABPukcK33bs2KF9+/bJ1dVV8+bNU926ddO91snJSXXr1lXdunXVrVs3DRo0SNu2bdPBgwdVv379TBcOAAAAAAAAPOkeaRG29evXy2QyacyYMQ8M3v7Jx8dHI0eOlNls1oYNGx65SAAAAAAAACA7eqTw7e+//5aTk5M6der0yB116dJF9vb2+vPPPx/5XgAAAAAAACA7eqTw7dq1aypZsqQcHR0fuSMXFxeVKFFCoaGhj3wvAAAAAAAAkB09UvgWFxcnV1fXx+4sf/78iomJeez7AQAAAAAAgOzkkcK3pKQk2dvbP3ZnDg4OSk5Ofuz7AQAAAAAAgOzkkcI3AAAAAAAAABlH+AYAAAAAAAAYxOFRb7h9+7aOHDnyWJ3dvn37se4DAAAAAAAAsqNHDt8CAgLUt29fI2oBAAAAAAAAcpRHDt/MZnOmOjSZTJm6HwAAAAAAAMguHil827Ztm1F1AAAAAAAAADnOI4VvxYsXN6oOAAAAAAAAIMdht1MAAAAAAADAIIRvAAAAAAAAgEEI3wAAAAAAAACDEL4BAAAAAAAABiF8AwAAAAAAAAxC+AYAAAAAAAAYhPANAAAAAAAAMIhDVhdgBNdinlldAmBz/L0GkFN41KiuPJ4563taYnS04m7ezOoykEV4RgMAgAfJkeFbrTffyOoSAEOYk5NlsmPCKoDszbt7t6wuweaSk82yszNldRnIQjyjAQBAenJk+BYbG6vcuXNndRnZXkxMjC5evKiyZcvK2dk5q8vJETI7pvxQDyAnWLfikK5fu53VZdhMIY+86tzD91/vl+e07WVmTHlGAwCA9OTI8M1sNmd1CTmC2WxWTEwM42lDjCkASNev3VbYlaisLiPb45lie4wpAAAwAr+iAwAAAAAAAAxC+AYAAAAAAAAYhPANAAAAAAAAMAjhGwAAAAAAAGAQwjcAAAAAAADAIIRvAAAAAAAAgEEI3wAAAAAAAACDEL4BAAAAAAAABiF8AwAAAAAAAAxC+AYAAAAAAAAYhPANAAAAAAAAMAjhGwAAAAAAAGAQwjcAAAAAAADAIIRvAAAAAAAAgEEI3wAAAAAAAACDEL4BAAAAAAAABiF8AwAAAAAAAAxC+AYAAAAAAAAYhPANAAAAAAAAMAjhGwAAAAAAAGAQwjcAAAAAAADAIIRvAAAAAAAAgEEI3wAAAAAAAACDEL4BAAAAAAAABiF8AwAAAAAAAAxC+AYAAAAAAAAYhPANAAAAAAAAMAjhGwAAAAAAAGAQwjcAAAAAAADAIIRvAAAAAAAAgEEI3wAAAAAAAACDEL4BAAAAAAAABiF8AwAAAAAAAAxC+AYAAAAAAAAYhPANAAAAAAAAMAjhGwAAAAAAAGAQwjcAAAAAAADAIIRvAAAAAAAAgEEI3wAAAAAAAACDEL4BAAAAAAAABiF8AwAAAAAAAAxC+AYAAAAAAAAYhPANAAAAAAAAMAjhGwAAAAAAAGAQwjcAAAAAAADAIIRvAAAAAAAAgEEI3wAAAAAAAACDEL4BAAAAAAAABiF8AwAAAAAAAAxC+AYAAAAAAAAYxCGrCwAAAE8XrwpFVLBQ3qwuw2bc3F2ypF+TySRnZ2eZTKYs6T8nYkwBAIARclz4ZjabZTabs7oMAACQjuZtq2d1CTmCs7OzqlSpktVl5CiZGdPk5GTZ2fFSCQAASC3HhW8mk4nfVgIA8ATb/NN83QgPzeoyAJspUNhT7Xv2z+oyAADAEyrHhW8AAODJdiM8VOFXLmV1GQAAAMC/grnxAAAAAAAAgEEI3wAAAAAAAACDEL4BAAAAAAAABiF8AwAAAAAAAAxC+AYAAAAAAAAYhPANAAAAAAAAMAjhGwAAAAAAAGAQwjcAAAAAAADAIIRvAAAAAAAAgEEI3wAAAAAAAACDEL4BAAAAAAAABiF8AwAAAAAAAAxC+AYAAAAAAAAYhPANAAAAAAAAMAjhGwAAAAAAAGAQwjcAAAAAAADAIIRvAAAAAAAAgEEI3wAAAAAAAACDEL4BAAAAAAAABiF8AwAAAAAAAAxC+AYAAAAAAAAYhPANAAAAAAAAMAjhGwAAAAAAAGAQwjcAAAAAAADAIIRvAAAAAAAAgEEI3wAAAAAAAACDEL4BAAAAAAAABiF8AwAAAAAAAAxC+AYAAAAAAAAYhPANAAAAAADkSCEhIfL29pa3t7eCgoJs0mZUVJSuXbtmk7b+bYmJibp48WJWl/HUIXwDAAAAAADIgAULFqht27YKCAjI6lIe2d69e9WhQwetXbs2q0t56jhkdQEAAAAAAADZwZQpU7K6hMf27bffMustizDzDQAAAAAAADAI4RsAAAAAAABgEF47BQAAAAAA2dqpU6c0f/58HTt2TJGRkSpdurRefPFFNW3aNN17Dh8+rJUrV+r48eO6fv26EhMT5e7urlq1aql3795q0KCB5drRo0drzZo1lq/79esn6d5rqF27dpUkmc1mbd++XevWrdPJkycVEREhSSpUqJCeeeYZ9e3bV9WrV09Vx4kTJ/TDDz/o2LFjunHjhlxcXFS2bFm1bt1avXv3lqura6p74uPjtWzZMm3evFnnzp1TQkKCPD091bx5c/Xv31+FCxe2XLt69WqNGTPG8vW8efM0b948denSRVOnTs3oECMTCN8AAAAAAEC2tX79eo0dO1YJCQnKnz+/KlSooMuXL2vixIny8fFJ854ZM2bIz89PklSgQAGVK1dOd+7c0eXLl7VlyxZt2bJFEydOVM+ePSVJZcqUUZ06dfT7779LkipWrChXV1cVLFhQ0r3g7d1339XGjRslSUWKFFGFChUUFRWlK1euaP369dq8ebO++eYbNWvWzFLHli1bNGLECEvw5+3trbt37+rPP//UiRMntH79ei1fvtwqgAsPD9fAgQN1+vRpmUwmFStWTG5ubjp37pwWLFigtWvX6ptvvtEzzzwjSSpYsKDq1Kmjs2fP6s6dO/L09JSnp6fKlClj2/8QSBevnQIAAAAAgGzp0qVL+uCDD5SQkKB+/fpp7969WrVqlfbt26eRI0fq8OHDqe45dOiQ/Pz8ZGdnp08//VT79u3T6tWrtWXLFm3bts0S2M2aNUvJycmSpEGDBmnZsmWWNsaMGaNly5ZZgrQ1a9Zo48aNyp07t/z8/LR7926tWrVK27Zt08aNG1WhQgUlJibqq6++srSRnJysiRMnKjExUe+9956ljl9//VWrVq1SgQIFFBAQoKVLl1ruMZvNGjZsmE6fPq1nnnlGmzdv1vbt27V69Wrt27dP3bp1U1RUlIYMGaJr165Jkpo1a6Zly5apSpUqkqTOnTtr2bJlGjRokI3/ayA9hG8AAAAAACBbmj9/vuLj4+Xj46PRo0fLyclJkmRvb6+BAwdaXgm93549e+To6Kg2bdqoW7dusrP7XzRStGhRvf3225KkiIgIy6ujD7Nv3z45ODiod+/eVjPbJMnLy0uvv/66JOns2bOW4zdu3LAEZD169JC9vb3lXNWqVTVixAi1bt1abm5uluPbtm3T8ePHVbhwYX3//fcqV66c5VzevHk1efJk1axZU5GRkVqwYEGGaofxCN8AAAAAAEC2tHPnTklKM2STpF69eqU69u677+rkyZP6/PPP07wnd+7clj/HxsZmqI4ZM2bozz//1IgRI9I87+zsLOneWm0ps+nc3d2VP39+S03Hjx+3nJPuBXJz5sxRjx49LMe2bt0qSWrdurVcXFxS9WMymdSpUydJ0o4dOzJUO4zHmm8AAAAAACDbiY2NVWhoqCSpQoUKaV5TqVIlmUwmmc1mq+Mmk0kmk0lHjx7VuXPndOnSJQUHB+vMmTMKCgqyXHd/GPYw9vb2iouL07Fjx3ThwgVdunRJgYGB8vf3t9SZ0qadnZ3s7e317rvvaty4cdq1a5d27dql/Pnzy9fXV40aNVLz5s1VtGhRqz5SZs7t2LFD/v7+adZx69YtSVJgYKDMZrNMJlOGPwOMQfgGAAAAAACynZs3b1r+nNYsMElycnKSs7OzoqOjLcfMZrPmz5+vb7/91hJUSfcCubJly6pz585at27dI9WSkJCgmTNnasmSJVaz5ezt7VWxYkXVqFFDv/76a6r7evToodKlS+uHH37Q/v37dfPmTcuGDyaTSc2aNdPHH39sCeHu3LkjSQoNDbUK9NKSlJSku3fvprlbKv5dhG8AAAAAACDbuX8ttJRQ6p/MZrPi4+Otjs2ZM0dff/21JKl9+/Zq2rSpypcvr3LlyilPnjwKDAx85PDto48+0urVq2Vvb6+ePXuqXr16qlChgsqUKaPcuXNr3759aYZvkuTr6ytfX1/Fxsbq6NGjOnLkiPbs2aNTp05p586deuONN7R27VqZTCbL66vjxo1Tnz59HqlGZB3CNwAAAAAAkO3kypVLxYsX1+XLl3X69GnVqFEj1TUXLlxQYmKi5euEhATNnz9fkjRkyBANGzYs1T1Xr159pDrCwsK0Zs0aSdInn3yibt26ZajN+Ph4Xbp0SXfu3FHNmjWVO3duNW7cWI0bN9aIESO0adMmvfPOO/L399eZM2dUqVIllS1bVv7+/goICEi3ntDQUIWFhcnT01NFihR5pM8CY7DhAgAAAAAAyJbatm0rSfrpp5+UlJSU6vzKlSutvo6MjLS8glq1atU027z/nvuDO0mW9dPuX0PuypUrlq/TajM5OVmrV6+2fJ1S5+7du9W+fXsNHDgw1ew8SWrYsGGqe1q0aCFJ2rx5c7o7sY4dO1Y9e/bUyJEj06wd/z7CNwAAAAAAkC31799f+fPn16lTpzRmzBjL66dms1lLly7VokWLrK4vUKCA5XXVBQsWKCoqynLuxo0bmjBhgjZu3Gg59s/dTlPWlrty5YrlWOnSpWVvby9J+u677xQTE2M5d+XKFb399ts6evSo5VjK+aZNm8rd3V1RUVF6//33rWq5c+eOPvvsM0mSp6enZUOJ9u3bq2LFirp165b69+9vNQPuzp07mjBhgvbv3y+TyaSBAwemWfvly5fTHEsYh9dOAQAAAABAtuTh4aFZs2bprbfe0rp16/Tbb7/Jy8tLV69e1bVr19SyZUvt2rXLMnPMwcFBb7/9tj7++GMdPnxYzZs3V5kyZRQfH6+goCAlJiaqSpUqCg0NVWRkpK5evWo1m61KlSo6cuSIJk6cqGXLlql379564YUX1K9fP33//ffauHGjdu7cqdKlS+vu3bsKCgqS2WyWr6+vjh07psTERF29elVubm5ycnLSrFmz1L9/f23evFnbtm1TqVKlZGdnp0uXLik6OlrOzs6aOnWqnJycJEmOjo765ptv9Prrr+v06dPq0KGDypYtK2dnZwUGBlpm9Y0ZM0ZNmza1GqsqVapox44d2rBhg86cOaO6detq/Pjx/9J/qacbM98AAAAAAEC21aBBA61Zs0Y9e/aUu7u7zpw5I2dnZw0dOlRfffVVqut79+6tBQsWqFGjRsqbN68CAgIUERGhmjVr6qOPPtKKFSvUrFkzSdKOHTus7v3000/VqFEjOTg46OLFiwoMDJQkvffee5o1a5aeeeYZOTk56cyZM7p9+7YaNGigzz//XAsXLlTt2rVTtenr66uVK1eqc+fO8vDwUGBgoIKDg1WkSBG9/PLL2rx5s+rXr29VQ8mSJbVmzRqNGjVKNWvW1LVr13T27FnlyZNH7dq10+LFi/XKK6+k+twDBgxQ9+7d5ebmpsDAQJ05cyZT446MM5nvf1E5mzt58qQkqXz58pYdQPD4oqOjdfr0aVWuXDndbZvxaBhT22NMbY8xtS3G839SntMndq5T+JVLWVwNYDuFi5VUn6EfZnUZTyS+B9oeY2pbjCeAfwMz3wAAAAAAAACDsOYbAAD4VxUo7JnVJQA2xd9pAADwIDkufEtKSlIOepMWAIAcp33P/lldAmBzycnJsrPjpRIAAJBajvsJIWUHEwAA8OSJj49XTExMVpeRI8TExOjvv/9mPG0oM2NK8AYAANLDTwkAAOBfxQx12zCbzYqJiWE8bYgxBQAARiB8AwAAAAAAAAxC+AYAAAAAAAAYhPANAAAAAAAAMAjhGwAAAAAAAGAQwjcAAAAAAADAIIRvAAAAAAAAgEEI3wAAAAAAAACDEL4BAAAAAAAABiF8AwAAAAAAAAxC+AYAAAAAAJ4qZrM5q0vIkKyuM6v7zykcsroAAAAAAADwYMnJZtnZmbK6jEeWVXWHhISoVatWyps3r44ePWo5HhUVpVmzZqlWrVrq3Llzhtt7+eWXdfjw4VTHTSaTHB0dlT9/flWqVEmdO3dWhw4dZDJl7jM/bp22EhoaqmnTpqlXr17y8fH51/vPaQjfAAAAAAB4wtnZmTRn2T5dDr+Z1aVkWPHC+TWkV6OsLsPKuHHjtGXLFlWvXv2x7q9du7ZKlChhdSw+Pl5XrlzRnj17tGfPHu3bt09Tp07N0joza8iQITp16pRefPHFLOk/pyF8AwAAAAAgG7gcflOBlyOzuoxsoUiRItq8ebPs7e2tjiclJWWq3R49eqhr165pntu+fbuGDBmiNWvWqG3btmrZsuVj95PZOjMrq/vPaVjzDQAAAAAA5CiOjo7y8vJSmTJl/rU+W7ZsaQnc/vvf//5r/eLJR/gGAAAAAACyld27d2vQoEFq3LixatWqpeeee05ffPGFbt6891puSEiIvL29VbduXauvt23bJkkaM2aMvL29tXr1apvWVbp0aUlSRESE1fEbN25o5syZ6tq1q+rWrauqVauqQYMGGjBggHbv3m25LqN17tixQ/3795evr6+qV6+utm3b6rPPPlNkZOqZkS1btlSVKlWUmJio//znP+rQoYNq1KghX19fDRs2TP7+/pZrDx06JG9vb8uxvn37ytvbW4cOHZJ0bwOG5cuXq1evXmrQoIFq1Kih1q1b66OPPtKlS5dsMII5E+EbAAAAAADINj7//HMNGDBAu3btUqlSpdSkSRPdvn1b3377rV588UVFRUWlusfFxUUdO3ZU0aJFJd1bu61jx44qVaqUTWs7e/asJKl48eKWY8HBwercubPmzZunqKgo1atXT02aNFGuXLm0e/duDRgwQJs2bcpwnZ9++qkGDRqkQ4cOqWzZsmrRooUSEhL0n//8R926dVNwcHCatQ0fPlzTpk2Ti4uLmjVrJkdHR/3666/q1auXLly4IEkqVKiQOnbsqPz580uSGjZsqI4dO6pQoUKSpAkTJmj8+PHy9/dX1apV1axZM5nNZv3000/q2rWrAgMDbTqeOQVrvgEAAAAAgGxhx44d+v777+Xm5qbvvvtONWrUkHRv04O3335b27dv15dffqnXX3/d6r4CBQpo+vTpGjx4sK5evfrAtdse16pVq7Rnzx5JUqdOnSzHP//8c4WHh6tXr14aP368ZSfUxMRETZ48WUuXLtWCBQv03HPPPbTOdevWaeHChSpRooTmzp2rihUrSrq3Rtv06dP1n//8RyNGjNDPP/9steNqUlKSDh8+rKVLl6pOnTqSpJiYGPXr10/Hjx/XwoUL9fHHH8vLy0vTp09X586ddfPmTQ0aNEi+vr6SpKtXr+qnn36Sm5ubNmzYoMKFC1vaHj16tNavX68ffvhBH3/8sU3HNScgfAMAAAAAANnC4sWLJUnvvPOOJXiTJCcnJ40bN05nz55Nc+abraxYsUL79++3OhYdHa0zZ84oJCREkjRo0CDL667Svc0fGjdurBEjRlgFYg4ODurZs6eWLl2qy5cvZ6h/Pz8/SdLEiRMtwZsk2dvb67333tPevXv1119/6cCBA2rYsKHVva+++qoleJMkZ2dnvfjiizp+/LgCAgIe2nd4eLjMZrPy5s0rNzc3q75HjBihWrVqqVKlShn6HE8bwjcAAAAAAPDEM5vNOnz4sCSpTZs2qc4XK1bMslZaShBma8ePH9fx48ctX5tMJjk7O6tQoUJ67rnn1K1bNzVq1Mjqng8//DBVO7dv31ZAQIBlplxCQsJD+7527ZrOnTsnBwcH1atXL9V5Ozs7NWnSRGfPntXBgwdThW+1a9dOdU/K7LWYmJiH9l+xYkW5u7vr0qVL6tatmzp27KjGjRurcuXKKlasmF566aWHtvG0InwDAAAAAABPvKioKMXHxytXrlwqUKCAzdo9evSoli9fnuq4l5eX3nzzTatjU6ZMeazXVS9cuKBly5bpxIkTCgoKsszOS5kJZzabH9pGaGiopHuvq1avXv2B1165ciXVsZR13O5nb28vSUpOTn5o/7lz59bs2bP1zjvv6OzZs5oxY4ZmzJihggULqlmzZurWrZvVjD/8D+EbAAAAAAB44iUmJkqS1aubthAcHKwNGzakOu7j45MqfHscixYt0qeffiqz2azixYvL19dXZcuWtcwY6969e4baSQnI8uXLp2bNmj3w2mrVqqU6Zotxq1u3rrZu3ao9e/Zo165dOnTokAIDA7V69WqtXr1agwYN0ogRIzLdT05D+AYAAAAAAJ54bm5ucnR0VGxsrCIjI+Xu7p7qmrVr18rFxUVly5bNcLtdu3a1+eYLKS5fvqypU6fK3t5eM2fOVNu2ba3Onzp1KsNteXh4SLo3A2369Ok2rfNRODk5qVWrVmrVqpWkexsxLFu2TPPmzZOfn5969+6tIkWKZFl9TyK7rC4AAAAAAADgYRwdHS2bLOzYsSPV+cjISI0dO1bvvPNOum3Yetbcw5w4cUJJSUmqVKlSquBNknbv3i0p9WufadVZvHhxFS9eXOHh4Tp58mSa/b3zzjvq2rWrNm/enKm60+p/27ZtateuncaPH291vGjRohoxYoSKFy+u5ORkhYWFZarvnIjwDQAAAAAAZAt9+/aVJM2YMUNnz561HI+Li9P48eOVlJSkDh06yNnZOc37c+fOLUm6deuW8cVKltl558+f18WLF63Obd68WXPnzpUkxcfHW51Lr87+/ftLkt599135+/tbnVu8eLE2bdqks2fPqlatWpmqO63+vb29FRQUpLVr1+r333+3uv7QoUMKDQ1Vnjx5VK5cuUz1nRPx2ikAAAAAAMgWnn32Wb388sv68ccf1aVLF9WtW1eurq76888/FR4eLi8vL40aNUrR0dFp3p/yOurs2bN17Ngxde7cWa1btzasXh8fH1WvXl0nT55U586dVa9ePTk7O+vMmTMKDg5W8eLFFRkZqejoaEVFRcnNze2Bdfbu3VsnT57UmjVr1K1bN1WpUkVFixZVQECALl68KDs7O02dOlXFihXLVN1ly5bV8ePH9fHHH2vDhg3q16+fateurbfffltffvmlevfurVq1aqlw4cIKDw/XH3/8IbPZrDFjxsjV1TWzw5bjEL4BAAAAAJANFC+cerfKJ5lR9X744Yfy8fHRkiVLdOrUKcXGxqpYsWJ64403NHDgQLm6uqYbvr366qu6ePGidu7cqd27d6tcuXKGhm/29vZasGCB/Pz8tGXLFh05ckT29vYqWbKk3nrrLfXr10+jRo3Stm3btGXLFvXo0eOBdZpMJk2dOlXNmzfXihUr9Ndff8nf319FihRRhw4d9Nprr6lq1aqZrnvEiBG6fv26jh49qj179qhBgwaqXbu23nzzTZUoUUIrVqzQmTNndPLkSbm5ualNmzZ65ZVX2O00HSZzRvazzSZOnjyp+Ph4Va5cWS4uLlldTrYXHR2t06dPM542xJjaHmNqe4ypbTGe/8Nz2rb4u2V7jKntMaa2x5jaVnYaz+Rks+zs/t31ymwhu9YN2BJrvgEAAAAA8ITLrgFWdq0bsCXCNwAAAAAAAMAghG8AAAAAAACAQQjfAAAAAAAAAIMQvgEAAAAAAAAGIXwDAAAAAAAADEL4BgAAAAAAABiE8A0AAAAAAAAwCOEbAAAAAAAAYBDCNwAAAAAAAMAgJrPZbM7qImzl999/l9lslqOjo0wmU1aXk+2ZzWYlJCQwnjbEmNoeY2p7jKltPSnj6eTkJG9v7yzrX+I5bWtPyt+tnIQxtT3G1PYYU9t6UsbzSXhOAzCOQ1YXYEsp3yx5CNmGyWSSk5NTVpeRozCmtseY2h5jaluM5//wnLYt/m7ZHmNqe4yp7TGmtsV4Avg35KiZbwAAAAAAAMCThDXfAAAAAAAAAIMQvgEAAAAAAPwDLwrCVnLUmm8AAAAAAORE5uRkmeyy3/yZf7vulI0rjhw5onz58j1WG1FRUZo1a5Zq1aqlzp0727K8bGH16tUaM2ZMhq5dtGiRfH19H7uvgwcP6pVXXkn3vIuLi44fP57h9uLj4/Xll19q06ZNioiIUN68eTV+/HgtWbJEhw8f1pw5c9S6devHrvdxEb4BAAAAAPCEM9nZ6eLG7xQTEZrVpWSYc0FPle0wIKvLeGTjxo3Tli1bVL169awuJUuUKlVKHTt2TPf82bNndebMGeXPn18lS5bMVF+nTp2SJFWvXl1lypRJdT5XrlyP1J6fn5/mz5+v3Llzq3HjxrK3t1e5cuUyVaMtEL4BAAAAAJANxESEKiYsOKvLyPGSkpKyuoQsVbduXdWtWzfNc2FhYerSpYvs7e01a9YsFStWLFN9pYRvb7/9tpo0aZKptiRZZsmNHDlSffv2zXR7tpL95qwCAAAAAADgX2U2mzVy5EhFRERo0KBBatCgQabbTAnfqlWrlum2pHuvnUrKdChoa4RvAAAAAAAg20hKStLixYv1/PPPq1atWmrcuLEmTpyomzdvpnn9jRs3NHPmTHXt2lV169ZV1apV1aBBAw0YMEC7d++2XBcSEiJvb29t27ZNkjRmzBh5e3tr9erVlmvu3LkjPz8/vfjii/Lx8VHVqlXl4+Ojl19+WRs2bEi3/88++0xt2rRRjRo11LJlS82YMUPR0dGqUqWKWrZsmeY906ZNU7t27VS9enXVq1dPr732mnbt2pXq2tWrV8vb21vffPONAgICNGzYMNWvX1/Vq1dXx44dNX/+fCUmJj7SGKfl559/1pEjR+Tt7a0333wz0+3duXNHQUFBKl68uNzd3TPV1tdffy1vb28dPnxYkjRkyBB5e3tr9OjRVteZzWYtXrxY7du3V/Xq1dW8eXNNnDhR4eHhmer/YXjtFAAAAAAAZAtJSUl66623tH37drm4uKh+/fpKSEjQypUrLcHL/YKDg/XSSy8pPDxcxYsXV7169WQ2m+Xv76/du3dr9+7d+uKLL/Tcc8/JxcVFHTt21JEjR3T16lXVrl1bJUqUUKlSpSTd24ihd+/eOn/+vDw8PFS7dm05ODjo3LlzOnz4sA4fPqzQ0FANHDjQ0n9ISIheeeUVhYSEqGjRomrevLnCw8Pl5+enQ4cOpbmj6rlz5/Taa68pLCxMRYsWVePGjXX37l0dPnxY+/bt05tvvqnhw4enuu/EiRP69ttv5erqqlq1aunOnTs6evSopk2bposXL2rSpEmPPe63bt3SF198IUn66KOP5Ojo+NhtpTh9+rTMZrNKly6tb775Rr/88ouCg4Pl6uqqhg0bavDgwSpbtmyG2vL29lbHjh21f/9+RUREyMfHR0WKFFHt2rWtrvvyyy917tw5Va1aVS1atNCff/6pJUuWaMuWLVqyZIlKly6d6c+VFsI3AAAAAACQLSxfvlzbt29X+fLl9cMPP6hw4cKSpIsXL+rVV19Ndf3nn3+u8PBw9erVS+PHj5fJZJIkJSYmavLkyVq6dKkWLFig5557TgUKFND06dM1ePBgXb16VT169FDXrl0tbc2bN0/nz59XixYt9PXXX1sCKLPZLD8/P33xxRdasGCBVfj20UcfKSQkRN26ddOECRPk5OQkSdq1a5eGDh2q5ORkq3oTExM1dOhQhYWF6Y033tCwYcPk4HAvugkICFD//v01d+5cywy6++3cuVNdu3bVRx99JGdnZ0nSb7/9prfeeks///yz3n77bXl4eDzWuC9YsEA3btxQ8+bN010P7lGlvHK6f/9+HTt2TPXq1ZOnp6dOnTql9evXa+vWrZo3b16GdlNt27at2rZtq5dfflkRERF65ZVX0tzV9Ny5c5o0aZK6d+8u6d5rqh988IHWr1+vsWPHasmSJTb5bP/Ea6cAAAAAACBbSAlHJkyYYAneJKls2bL64IMPUl1fpEgRNW7cWCNGjLAEb5Lk4OCgnj17SpIuX76cob7z5s2rpk2b6r333rOa+WUymdS7d29JUkREhGJjYyVJ/v7+2rdvnzw9Pa2CN0lq1qyZBgxIvRPsb7/9pgsXLqhOnTp65513LMGbJFWoUMHyGuV3332X6t48efJo/PjxluBNktq0aaMSJUrIbDbr3LlzGfqc/xQTE2MZ97feeuux2khLSvhWp04dbdu2TfPnz5efn5927Nihl156SdHR0Ro+fLju3Lljsz5btmxpCd4kycnJSZ988onc3d119OhR+fv726yv+xG+AQAAAACAJ154eLjOnz8vV1fXNGdftWjRItXrkB9++KHmz5+v/PnzW47dvn1bv//+u3799VdJUkJCQob6HzJkiL777jt5eXlZjkVHR+vkyZNat26d5VhKe/v27ZN0L/C5P3hL0b59+1THDhw4IEnpbmbQrFkz2dnZ6cSJE4qJibE6V7lyZeXOnTvVPSkhZXR09AM/X3rWrFmjqKgoNWnSRNWrV3+sNtIyefJk/fe//9V3331nNSPPyclJH3zwgSpXrqwbN25o/fr1Nuvz+eefT3Usd+7catSokSSl+eqyLfDaKQAAAAAAeOKFhYVJujeb7f5ZbCkcHR1VtGhRXbp0yer4hQsXtGzZMp04cUJBQUGKioqSJEsbaa27lp6rV69q2bJlOnLkiAIDAxUREWHV1v3tXblyRVL6O2+WLFky1bHQ0FBJ0pw5czRnzpwH1hIeHm61Rlm+fPnSvC5l9lxKXUePHtXy5ctTXefl5ZXmRgobN26UJHXr1u2B9TwqJyendNd0s7e3V/PmzXX69GmdPHlSkvTTTz/pyJEjqa5NeeU0I9Iac+l//41S/o7ZGuEbAAAAAADINh4Ultnb21t9vWjRIn366acym80qXry4fH19VbZsWVWuXFnFihWzegXxYX799VeNHDlSCQkJ8vDwUI0aNVSuXDlVqlRJPj4+atasmdX1KTPg/rmu24M+R8q19erVU9GiRR9Yzz9n+aUVSKYlODg4zZ1ZfXx8UoVv4eHhOn78uPLmzZvmrqxG8vT0lCTLDL/jx4+nWXfp0qUzHL7lypUrzeMp/y3uf83XlgjfAAAAAADAEy8ljLp69aqSk5NlZ2e9kpbZbNa1a9csX1++fFlTp06Vvb29Zs6cmSqgSVlzLCOio6P1wQcfKCEhQePGjdNLL71kFXalzKa7X0p4lN6acikz4+6X8opop06d1KNHjwzX9yi6du1qtZHEg+zevVvJyclq2bJlusHV44iPj9ekSZMUERGhiRMnqmDBgqmuSZkFmDKOU6dO1dSpUzPVb1hYmNVrwylCQkIkpT9LMbNY8w0AAAAAADzxPDw8VLFiRUVHR2v37t2pzh88eFB37961fH3ixAklJSWpUqVKac6MSmnjnzPT0ppBFhAQoNu3b8vd3V19+vRJdc399aS0l7KO2K5du9JcV+63335LdczHx0eStG3btlTnJOnkyZNq06aNBg0apMTExDSvsaUTJ05Ikp555hmbtuvk5KS9e/dq69ataX7W+Ph4bd68WZLUtGlTm/Wb1t+bO3fuaO/evZKUoZ1VHwfhGwAAAAAAyBb69+8vSfr444918eJFy/HQ0FBNmDDB6lp3d3dJ0vnz562ulaTNmzdr7ty5ku4FPfdL2bTg1q1bqdqKjIzU0aNHra4/cOCAJk+ebPk6Li5OklSjRg3VrVtXoaGhmjhxolUAd/ToUUv/92vfvr08PT21c+dOffnll1b3hIeHa+zYsQoODlbhwoUNe0Xyfinrrdlyo4UUKTvEzpgxw2qX0djYWI0dO1ZBQUHy8fFJd/OJx7F48WLt2rXL8nVMTIxGjRql27dvq3Xr1ipTpozN+rofr50CAAAAAIBs4fnnn9fRo0e1cuVKderUSfXr15e9vb0OHjwoDw8PFSpUSNevX5d0bxZZ9erVdfLkSXXu3Fn16tWTs7Ozzpw5o+DgYBUvXlyRkZGKjo5WVFSU3NzcJMmyCcDs2bN17Ngxde7cWa1bt1bbtm21ZcsW9e3bV3Xr1pWbm5suXryos2fPyt3dXR4eHrp27ZquX7+uIkWKSJKmTJmi3r17a8WKFdqzZ49q1KihGzdu6NixYypVqpQCAwOt1m7LlSuXvvrqKw0YMEBz587VqlWrVKVKFSUmJurIkSOKi4tTzZo1NWrUqH9lvFNex7x/N1JbefXVV3X8+HFt3bpV3bp1U+3ateXu7q7ff/9d169fV7ly5fTFF1/YtM9q1arpjTfeUK1atVS4cGH9/vvvunbtmipUqKBPPvnEpn3dj/ANAAAAAIBswLmgZ1aX8EiMqnfSpEmqV6+eli5dqqNHj8rJyUmtWrXSqFGj1KdPH8t19vb2WrBggfz8/LRlyxYdOXJE9vb2KlmypN566y3169dPo0aN0rZt27RlyxbLGmuvvvqqLl68qJ07d2r37t0qV66cWrdurRkzZmjhwoVav369Tp48qeTkZBUrVkz9+vVT//795efnp0WLFmnLli2qWrWqJKlUqVJatWqV5syZo507d2r79u0qXLiwBg8erIYNG6p3795ydXW1+nw1atTQ+vXrNX/+fO3atUv79++Xi4uLKlasaFkLLmV2npHi4+N1+/ZtSenvpJoZDg4Omj17tn7++Wf9/PPPOnXqlJKSklSyZEn16tVLr732mlxcXGza5/jx47Vr1y6tXLlSf/31l4oUKaI33nhDAwcOTPXfwZZM5kfZUxcAAAAAAPzrzMnJMtllv5WjsmvdtnD79m1dvnxZxYsXV968eVOd/+WXXzR8+HB16NBBM2bMyIIK8W95Ov8fAAAAAABANpJdA6zsWrctREZGqnPnzmrbtq3CwsKszoWFhWn27NmSlOZmEMhZeO0UAAAAAADAxkqVKqXnnntOmzZtUuvWrVWnTh25u7vrxo0bOn78uOLj49WjRw+1a9cuq0t9bDdu3NCnn376yPe9+eab8vLyMqCiJxOvnQIAAAAAABggKSlJGzZs0Jo1a3ThwgVFRkbKzc1NlSpVUo8ePbL9rLeQkBC1atXqke9btGiRfH19DajoyUT4BgAAAAAAABjk6X35GgAAAAAAADAY4RsAAAAAAABgEDZcAJ4CU6ZM0YIFC1SmTBn9+uuv6V7Xv39/7d27V5I0btw49enTJ83r/P391blzZ0nS+vXr5e3tbXU+ICBAq1at0qFDhxQUFKS4uDjly5dPFStWVNu2bdWtWzflzp37oXVfvnxZK1eu1P79+3Xx4kVFR0crT548Kl++vJo3b66ePXsqf/78GR0GAACeWP7+/vr555914MABhYWFKS4uTgUKFFCFChXUvHlzvfDCCw98du7YsUMbN27UH3/8oevXr8vOzk4FCxZUzZo11a5du4euKRQfH6/Vq1dr69atOnPmjCIjI+Xi4qLChQvL19dXzz//vKpXr57mvS1bttTly5fTPOfg4CBnZ2d5enrK19dXr7zyikqWLJnxgQEAIAdgzTfgKbBz50698cYbkqQDBw6oQIECqa6JjY2Vj4+P4uLiJEnNmzfXt99+m2Z7ixYt0uTJk+Xh4WEJ66R7P7hPmzZNixcvltlslr29vYoWLar8+fPrypUrioqKkiQVL15cX375pWrUqJFm+8nJyfLz89PXX3+txMREmUwmeXh4yMPDQ2FhYbp+/bokyd3dXZ999pmaNWv22GMDAEBW++qrrzR37lwlJyfL1dVVpUqVkqOjo65du6YrV65Ikjw9PTVnzhxVrVrV6t7Y2FgNGzZMu3btkiR5eHioaNGiMpvNCgkJsTx7n3nmGc2dOzfNX1oFBwfr9ddfV1BQkEwmk0qWLCl3d3fFxcUpMDBQsbGxMplM6tWrlz766COZTCar+1PCN09PT3l6elqdS0pK0u3btxUcHKzExEQ5OTlp1qxZatmypa2GDwCAJx4z34CnQL169eTo6KiEhAQdP348zd1oDh8+rLi4OJUvX17nzp3T4cOHFR8fLycnp1TXHj16VJLUqFEjy7HY2Fi9/PLL+vPPP5U3b14NHDhQvXv3lqurq+WagwcPatq0aTp16pReeeUVLVu2TJUqVbJq22w2a8iQIdq+fbucnJz0xhtv6NVXX7UKDP/++29NmzZNBw4c0Jtvvik/Pz81btw40+MEAMC/bdWqVZozZ45cXFw0ZcoUtWnTRvb29pbz58+f19ixY/XHH3+of//+2rx5s9Uzcfz48dq1a5fKlSunadOmWc1OM5vN2rt3r0aPHq1jx45pyJAhWrx4sVX/8fHxGjBggIKCgtSqVSuNHz9eRYoUsZyPi4vTypUr9emnn2rp0qVyd3fXsGHD0vws3bp109ChQ9M8d+nSJb311lvy9/fX+++/r19//TXNXwYCAJATseYb8BTIkyeP5Yfx33//Pc1rUmawde7cWaVKlVJ0dLQlZPuntMK3Tz/9VH/++afy58+vBQsWaODAgVbBmyTVr19fP/74o7y8vBQdHa3Ro0crOTnZ6prvvvvOErzNnj1b77zzTqofzqtUqaLvv/9evr6+SkpK0pgxYxQdHf0IIwIAwJNh3rx5kqRRo0bp2WeftQreJMnLy0tz585VwYIFFRkZqUWLFlnOXb58WevXr5ckzZ49O9VroSaTSU2aNNHMmTMlSUeOHNGBAwesrvnll18UGBioYsWK6csvv7QK3iQpV65c6tOnjwYPHixJ+uGHH3Tnzp1H/pwlS5bU9OnTJUm3bt3S2rVrH7kNAACyK8I34CnRsGFDSemHb3v27JEkNWjQQE2aNLE6dr/z588rIiJCJpPJEr798ccf+umnnyRJI0aMULVq1dKtI0+ePBo9erQk6fTp01b/CLh69aq++uorSdIrr7zywNdJHRwcLK++hIeHa+PGjeleCwDAk+jmzZsKDg6WJNWsWTPd6woUKKDWrVtLkv7880/L8b///tvyqqqXl1e69/v4+KhMmTKSpBMnTlidO3nypCSpUqVKac52T9G9e3dJUnR0tM6ePfuAT5W+ChUqWOr4448/HqsNAACyI147BZ4SDRo00OzZs/XXX3+lep308uXLunDhgtzd3VW1alWFhYVpyZIl2rNnj95//32rdo4cOSJJ8vb2VsGCBSVJK1askHRvDbYXXnjhobU0adJEkyZNUvXq1VWxYkXL8VWrVikhIUH29vZ67bXXHtpO+fLlNW3aNJUpU0ZVqlR5+CAAAPAEcXD434/iO3bseOCzbOjQoerbt6/l2StJjo6OkqQ7d+7o6NGjqlu3brr3+/n5yWw2y8PDw+p4ShsnTpxQZGSk3N3d07y/SJEiWrt2rVxdXVPNjnsUefPmlSTdvXv3sdsAACC7YeYb8JSoWbOmXFxcFB8fr7/++svqXMoMt0aNGsnOzk7169eXo6OjAgICdPXqVatrU8K3+185TZm95uPjY/kh/kFMJpO6d++uSpUqyc7uf9+GUtqpXLlyhteB6dSpk2rUqGH1DxgAALKDPHnyqE6dOpKkr7/+WqNHj9aRI0eUlJSU6loPDw+VL1/eKhyrU6eOXFxcJEkDBw7UzJkzde7cuTT7Kl26tMqUKaM8efJYHU+Z7R4REaHu3btryZIlunbtWpptVK5cWSVLlnzgDLkHMZvNlpl+/9yYAQCAnIzwDXhKODo6Wn4j/s9XT1PWe0vZtMDV1dXy+ss/Xz1NWe8t5dqYmBjLTmz/3DzhUV24cMEm7QAAkF2MGzdOLi4uMpvNWrNmjfr06SMfHx8NHDhQfn5+OnHiRKr1UVPky5dPY8aMkXRvJtm8efP03HPPqWnTpho5cqSWLVumwMDAB/bfsGFDdezYUdK9TREmTpyoJk2aqEOHDpowYYI2bdqkGzdu2OSzrl69Wjdv3pR0b1d1AACeFoRvwFMkrXXfEhMTLTPO7p/NlvLn+8O3S5cu6erVq8qdO7clyLt165blfGZ3LUv5gZzdzwAAT4sqVapo5cqVeuaZZyzH7ty5o127dmnGjBnq0aOHGjdurJkzZyomJibV/T169NDcuXNVvHhxy7GwsDBt3LhREyZMULt27dS+fXutXr1aZrM5zRo+++wzjRw50jIrzmw2KyAgQMuWLdM777yjRo0a6eWXX9axY8ce+fMlJCTo0qVLmj9/viZNmiRJql27dpo7rwN4sPSC+Cdddq1bUrrfN4FHZTLztwl4avj7+6tz584qUKCAJXA7cuSI+vTpI29vb8uOadK9BZ27d++u/Pnz6+DBg7Kzs9Pq1as1ZswYNW7cWPPnz5d0L3yrV6+epHu/ve/Tp89j11e3bl3dvn1br732Wqq15gAAyOlOnz6trVu3at++ffrrr7+UkJBgdb5UqVL68ccfVbRo0VT3JiUl6eDBg9qxY4cOHDiQ5uunLVq00FdffZXua6N3797V9u3btWvXLh06dEjh4eFW500mk4YPH65BgwZZHW/ZsqUuX76coc9Yu3ZtffXVVypcuHCGrgdg7dtdi3TlZlhWl5FhxfIX0RvN+v6rfXp7e0u69++cfPnyPVYbUVFRmjVrlmrVqqXOnTvbsrxsIeXffRmxaNEi+fr6Zqq/X375RUuXLtXff/8ts9msMmXKqFu3burevfsjL3VgNpv13XffaeXKlQoNDVWePHn05ptvyt/fX2vWrNGYMWP06quvZqrex8EiScBTJGWThIiICF28eFFly5a1zGxLeY00RbVq1eTm5qaoqCj5+/urSpUqaa73li9fPuXKlUtxcXGKjIzMVH0eHh66fft2ptsBACA7qly5sipXrqyhQ4cqJiZGv//+u/bu3at169YpIiJCwcHBevvtty07jN/P3t5ejRo1sjyjb9y4oUOHDmnnzp3avHmz4uPjtWPHDn399dcaOXJkmv3nyZNHHTt2tLyGGhQUpAMHDmjLli3at2+fzGazZs6cqSpVqqhp06ap7vf09Ey1lpujo6Py5s2rcuXKqWHDhmrQoEFmhwl4ql25GaagiJCsLiPHGzdunLZs2aLq1atndSlZolSpUpZnQVrOnj2rM2fOKH/+/CpZsmSm+ho/fryWL18u6d6/V4sXLy5/f39NnDhRmzdv1jfffKP8+fNnuL1169ZpxowZcnBwUP369ZUnTx55e3vL398/U3VmFuEb8BQxmUyqX7++Nm3apN9//11ly5ZNtd5bCjs7OzVo0EC//PKLDh06pCpVqljWe7s/fJOksmXLyt/fXwEBARmu5fz58ypatKjVws9ly5bVhQsXdPbs2Qy3c+nSJeXNm1dubm4ZvgcAgCeds7OzJUx7++23NXbsWG3atEl//PGHTp06papVqz7w/gIFCuj//u//9H//938aPny4Bg4cqLNnz2rp0qV65513ZDKZHlpD6dKlVbp0ab344os6fPiw3nzzTd25c0dLly5NM3zr1q2bhg4d+tifGQCeFGltfPM0qVu3bro7aIeFhalLly6yt7fXrFmzVKxYscfuZ926dVq+fLmcnJz0xRdfqE2bNpLuLVnw2Wef6ccff9SkSZP0+eefZ7jNlCWW+vTpYzV7b926dY9dpy2w5hvwlEn5jfOJEycUGRmpv//+W87Ozml+c00J2Y4eParw8HAFBwfLw8PDMpU7Rcq6LYcOHcrwg2rw4MHy8fHRzJkzU7Vz+vTpDM9+mzBhgurXr69Ro0Zl6HoAAJ4UH330kdq2bau5c+c+8LrcuXNr4sSJlh3FL168qKSkJHXv3l0tWrTQoUOHHni/p6enZTmHO3fuWHYzPXXqlDp16qRmzZopLi7ugW34+PjopZdesvQPAHj6mM1mjRw5UhERERo0aFCmZzMvW7ZMkjRo0CBL8CbdmzU9evRoeXl5af369Tpz5kyG24yPj5f05O2qTfgGPGVSvkGePHlSx44dk9lsVr169dJ8lz5lNtzp06ctiyz/c9abJLVv3152dnaKiorSihUrHlrD/v37FRgYqMTERFWrVs1yvGXLlnJxcVFycrJlTbkHuXjxovbv3y+z2awqVao89HoAAJ4kcXFxCgoK0tatWx96raurq2W2eIECBWRvb6/r16/rypUr2rlz50Pv9/DwkHRvZnvKbPF8+fLpzJkzunr1qmUt2Iy0wcZIALJaUlKSFi9erOeff161atVS48aNNXHiRMsGbv9048YNzZw5U127dlXdunVVtWpVNWjQQAMGDNDu3bst14WEhMjb21vbtm2TJI0ZM0be3t5avXq15Zo7d+7Iz89PL774onx8fFS1alX5+Pjo5Zdf1oYNG9Lt/7PPPlObNm1Uo0YNtWzZUjNmzFB0dLSqVKmili1bpnnPtGnT1K5dO1WvXl316tXTa6+9pl27dqW6dvXq1fL29tY333yjgIAADRs2TPXr11f16tXVsWNHzZ8/X4mJiY80xmn5+eefdeTIEXl7e+vNN9/MdHspoVpam/A4ODhY1hZP6zP/U8oYrFmzRpI0ZcoUeXt76+WXX0517caNG9WlSxdVr15djRo10vvvv//Q3cEzi/ANeMqUKFFCJUuWVEBAgPbt2ycp9SunKTw9PeXl5aXLly9b1oZL2TH1fuXLl1ePHj0kSV9++eUD36e/ceOGPv74Y0lSpUqVrL7Ruru7W76JL1y48IH/EIiNjdWYMWOUnJwsDw8PS/8AAGQXnTp1kiT99ddfVv+wS8vevXsVFRUlNzc31axZ0+r+5cuXP3RWwKZNmyTde46n/MKtZMmSql27tiRpxowZunPnTrr3Jycn65dffpEkNW/e/CGfDACMk5SUpLfeekuffPKJgoKCVL9+fXl7e2vlypWWGbr3Cw4OVufOnTVv3jxFRUWpXr16atKkiXLlyqXdu3drwIABlu+RLi4u6tixo2Vjm9q1a6tjx44qVaqUpHsbMfTo0UMzZsxQSEiIateurebNm8vd3V2HDx/Wu+++Kz8/P6v+Q0JC1L17d/3nP/9RfHy8mjdvrsKFC8vPz0+vvvpqmjuqnjt3Ts8//7zmz5+v2NhYNW7cWJUrV9bhw4c1cOBAffnll2mOzYkTJ/TCCy/o2LFjqlWrlmrWrKmAgABNmzZNEyZMyMSo39to74svvpB0b+Z2ymzszEh5aypv3rxpnndwuLdS2oULFx7aVso6dSlr0FWtWlUdO3ZM9e/XlStXauTIkYqNjVWLFi2UN29erV27Vl26dNHx48cz83EeiPANeAo1bNhQCQkJlvfe0wvfpP/NdPvll19kMpnSnPkmSSNHjlT58uUVFRWl3r17a8GCBVY/xJvNZu3evVsvvviiAgMDlSdPHk2fPl12dtbfhvr16ycfHx/Fx8drwIAB+uqrrxQREWF1zfHjx/XSSy/p+PHjcnR01Oeffy4XF5fHGgsAALJKo0aN1K5dO0nShx9+qMmTJyskxHoh9bi4OK1atUrDhw+XJA0fPtwyA65fv34qU6aMoqOj9fLLL+vHH39MNevjxo0bmjFjhvz8/JQ7d2698847VufHjBkjZ2dnnT17Vt27d9fWrVstr+ykOH/+vAYPHqxjx46pTJkyaf7jFgD+LcuXL9f27dtVvnx5/frrr5o3b57mz5+v9evX6/bt26mu//zzzxUeHq5evXpp27Ztmjt3rubNm6etW7eqd+/ekqQFCxZIujezd/r06ZZ1NXv06KHp06dbluiZN2+ezp8/rxYtWmjHjh369ttvNWfOHP33v/+1fH9NaSvFRx99pJCQEHXr1k2//fabvvrqKy1fvlx+fn7y9/dXcnKy1fWJiYkaOnSowsLC9MYbb1hqXrRokdasWaMiRYpo7ty52r59e6rPunPnTrVv315bt27VvHnztHjxYn399deS7s1aS1l24HEsWLBAN27cUPPmzdNdD+5ReXl5SZIOHz6c6pzZbLas3/bPfw+mpW7dulb/rTp16qTp06enmqF37tw5DRkyRJs3b9ZXX32lzZs3a8CAAYqOjtZ7771nkxmCaSF8A55C9evXlyTdvXtXxYoVs3zTS0tKMBcdHS1vb28VKlQozevy5cunZcuWydfXV3fv3tWUKVNUv359tWvXTi+88ILq16+vAQMGKCgoSKVKldKPP/6oChUqpGrH0dFR8+fP13PPPaeEhATNmTNHTZo0UatWrdS9e3c1btxYL774ov766y8VKlRI8+bNY+c0AEC2NX36dHXp0kXJyclatGiRWrVqpRYtWuiFF15Qx44dVbduXY0dO1axsbEaOXKkevXqZbnXzc1NP/zwg2rVqqWbN29q0qRJatiwodq1a6fu3burXbt2atiwofz8/FSgQAF9/fXXqTZqqFmzpubOnauiRYvqwoULGjJkiHx9fdWhQwe98MILatq0qdq3b68dO3aocuXK+v777+Xq6vpvDxMAWCxZskTSvbWfCxcubDletmxZffDBB6muL1KkiBo3bqwRI0ZYbTbj4OCgnj17SpIuX76cob7z5s2rpk2b6r333rOa+WUymSxBXkREhGJjYyVJ/v7+2rdvnzw9PTVhwgSrpX6aNWumAQMGpOrjt99+04ULF1SnTh298847ltlfklShQgWNHj1akvTdd9+lujdPnjwaP368nJ2dLcfatGmjEiVKyGw269y5cxn6nP8UExNjGfe33nrrsdpIS7du3SRJ06ZN059//mk5npycrK+++kp///23JKX6pVBmpOwqnvJ3wc7OTiNHjlTFihV16dKlDL3i+jjY7RR4CjVo0EAmk0lmszndmWwpfHx85OTkpPj4+Idemy9fPi1cuFDbt2/X5s2bdfLkSYWFhSkkJET58+e3/Ib/+eefV65cudJtJ2W3m549e2rdunX6448/FBoaqtDQUOXNm1f16tVTy5Yt1b1793SnKAMAkB04OTlp6tSpeumll7R582YdOnRIYWFh8vf3l7Ozs8qWLavGjRvrhRdeULly5VLdX6xYMS1fvlzbtm3Ttm3b9Mcff+jGjRuWZ2/t2rXVsmVL9ejRQ/nz50+zhgYNGui///2v1q1bpz179sjf31+hoaGKi4tTwYIF1aJFCz377LPq2LGj7O3tjR4SAEhXeHi4zp8/L1dX1zRnX7Vo0UKOjo5KSEiwHPvwww9TXXf79m0FBARYlta5//oHGTJkSKpj0dHROn/+vE6cOGE5lpCQoNy5c1uW+WnZsmWaa2y3b99es2fPtjqWsvROehMMmjVrJjs7O504cUIxMTFWQVvlypWVO3fuVPcULlxYISEhio6OzsCnTG3NmjWKiopSkyZNVL169cdqIy29e/fWoUOHtGXLFvXs2VPVq1dXoUKFdObMGYWFhenFF1/U8uXLrQLIzOrUqVOqHb9NJpNatmyps2fP6vDhw2muQZdZhG/AU8jd3f2B67Ldz9nZWSdPnsxw2yaTSa1atbLJNyxfX1/5+vpmuh0AAJ501atXf+x/0JhMJrVu3VqtW7d+7P6dnZ314osv6sUXX3zke9N69QkAjBAWFibp3my2fwYo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q1cv7dy5U5L04osvJhms1a5dW5kzZ9aVK1cUGhqabLj4MOPHj9fdu3eVOXNmDRs2zGbd4cOHJUkLFizQ9u3breHa8ePHk6z7/keIHyWpOxClf/8tHDHem0T4BgAAAAAAnIAljAoNDVVCQkKiYMgwDF2+fNn6c0hIiD7//HO5urrq66+/VuPGjW22t4Q8KREZGamPPvpIsbGxGjFihDp27GgTdlnupruf5W6q5MaUs9wZdz/LOHavv/662rRpk+L6UqN169Y2E0k86MaNG5KSD6JMJpO17VP6yO6DLI/A7tmzR3v27Elym3379mnfvn3WcK1fv37q16/fY53PIjw8PMnlFy5ckJT8XYppxYQLAAAAAAAgw8uXL5/MZrMiIyO1efPmROt37typO3fuWH8+cOCA4uPjVbZs2UTBmyTrMR68My2pO8hOnjypW7duKVeuXHr77bcTbXN/PZbj1a1bV9K9mU2TCqnWrl2baJll7LP169cnWidJBw8eVKNGjdSzZ0/FxcUluU1alSpVSpK0cePGJO/O27NnjyIjI5U9e3YVLlz4sc7x888/6/jx40n+zzLm2rhx43T8+HF9/vnnj/9iHpDUdRMXF6d169ZJundXnyMQvgEAAAAAAKfQtWtXSdKnn36qM2fOWJdfunRJo0aNstk2V65ckqSgoCCbbSXpzz//1NSpUyVJMTExNusskxbcvHkz0bGuXbumwMBAm+137NihsWPHWn++e/euJKlSpUry8/PTpUuXNHr0aJsALjAw0Hr++zVt2lQFCxbUpk2b9M0339jsEx4eruHDh+vcuXPy9vZ22COSzZs3V/bs2XX48GF9+eWXio+Pt64LCgqyzir79ttvO6wGR1mzZo0WLFhg/TkuLk5jxoxRcHCwypcvn+xEF2nlXK0EAAAAAACeWS1btlRgYKAWLlyo119/XbVr15arq6t27typfPnyKW/evLpy5Yqke3eRVaxYUQcPHlSLFi1Uo0YNeXp66vjx4zp37pwKFy6sa9euKTIyUtevX1fOnDklScWLF5ckTZo0SXv27FGLFi3UsGFDNW7cWGvWrFGnTp3k5+ennDlz6syZMzpx4oRy5cqlfPny6fLly7py5Yry588v6d7dWx06dNCCBQu0ZcsWVapUSREREdqzZ4+KFi2q4OBgm7HbMmXKpO+++07du3fX1KlTtXjxYvn6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", "text/plain": [ - "
    " + "
    " ] }, "metadata": {}, @@ -12131,19 +13725,39 @@ } ], "source": [ - "order = combined_compare_size.groupby(by=[\"algorithm\"])[\"overhead\"].median().sort_values(ascending=False).index\n", - "b = sns.violinplot(data=combined_compare_size, x=\"overhead\", y=\"algorithm\", hue=\"algorithm\", palette=algorithm_colors, order=order)\n", - "b.set_xlabel(\"Overhead (size with text format)\")\n", - "b.set_ylabel(\"Algorithms\")\n", - "write_dir = (plot_dir / data_dir)\n", - "write_dir.mkdir(exist_ok=True, parents=True)\n", - "plt.savefig(write_dir / \"overhead-size.pdf\", bbox_inches='tight')" + "ax = sns.catplot(\n", + " combined_compare,\n", + " x=\"overhead_size\",\n", + " col=\"algorithm\",\n", + " hue=\"dataset\",\n", + " kind=\"bar\",\n", + " #hue_order=['datagen-7_5-fb', 'graph500-22', 'datagen-7_9-fb', 'cit-Patents', 'datagen-8_4-fb', 'datagen-8_8-zf'],\n", + " col_order=[\"BFS\", \"PageRank\", \"WCC\", \"SSSP\"],\n", + " legend_out=True,\n", + " errorbar=None,\n", + " capsize=0.2,\n", + " col_wrap=2,\n", + ")\n", + "# sns.move_legend(ax, \"center right\", ncols=1, bbox_to_anchor=(1.05, 0.55), title=None, frameon=False)\n", + "\n", + "ax.set_axis_labels(\"Overhead size (vs. baseline)\", \"Dataset\")\n", + "ax.set_titles(\"{col_name}\")\n", + "\n", + "ax.savefig(plot_location(\"es06-overhead-size.pdf\"), dpi=\"figure\")" + ] + }, + { + "cell_type": "markdown", + "id": "fcc5b5a0", + "metadata": {}, + "source": [ + "# Comparison of all methods" ] }, { "cell_type": "code", - "execution_count": 180, - "id": "527f1ccc-4fb7-4101-b9a7-e42bf697d7cf", + "execution_count": 121, + "id": "85148218", "metadata": {}, "outputs": [ { @@ -12167,473 +13781,84 @@ " \n", " \n", " \n", - " config\n", - " algorithm\n", " dataset\n", - " run\n", - " storage_format\n", - " compressed\n", - " total_size\n", - " nr_executors\n", - " nr_vertices\n", - " iterations\n", - " duration\n", - " baseline_graph_size\n", - " blowup\n", + " size\n", " \n", " \n", " \n", " \n", - " 15\n", - " combinedpruning\n", - " BFS\n", + " 0\n", " cit-Patents\n", - " 1\n", - " Text\n", - " False\n", - " 50535334\n", - " 7\n", - " 3774768\n", - " 43\n", - " 97.991459\n", - " 30025298\n", - " 1.683092\n", - " \n", - " \n", - " 8\n", - " combinedpruning\n", - " BFS\n", - " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 99098460\n", - " 7\n", - " 633432\n", - " 29\n", - " 40.551124\n", - " 8266855\n", - " 11.987444\n", - " \n", - " \n", - " 4\n", - " combinedpruning\n", - " BFS\n", - " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 242483153\n", - " 7\n", - " 1387587\n", - " 31\n", - " 110.392218\n", - " 18190864\n", - " 13.329942\n", + " 294044883\n", " \n", " \n", " 1\n", - " combinedpruning\n", - " BFS\n", - " datagen-8_4-fb\n", - " 1\n", - " Text\n", - " False\n", - " 627415849\n", - " 7\n", - " 3809084\n", - " 35\n", - " 265.831706\n", - " 50232462\n", - " 12.490247\n", - " \n", - " \n", - " 13\n", - " combinedpruning\n", - " BFS\n", - " datagen-8_8-zf\n", - " 1\n", - " Text\n", - " False\n", - " 158742\n", - " 7\n", - " 168308893\n", - " 21\n", - " 202.223527\n", - " 2267897486\n", - " 0.000070\n", - " \n", - " \n", - " 18\n", - " combinedpruning\n", - " BFS\n", - " graph500-22\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 2396657\n", - " 3\n", - " 28.202130\n", - " 18538268\n", - " 0.000000\n", - " \n", - " \n", - " 17\n", - " combinedpruning\n", - " PageRank\n", - " cit-Patents\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 3774768\n", - " 35\n", - " 89.170014\n", - " 30025298\n", - " 0.000000\n", - " \n", - " \n", - " 10\n", - " combinedpruning\n", - " PageRank\n", - " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 633432\n", - " 35\n", - " 35.329524\n", - " 8266855\n", - " 0.000000\n", - " \n", - " \n", - " 5\n", - " combinedpruning\n", - " PageRank\n", - " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 1387587\n", - " 35\n", - " 67.376054\n", - " 18190864\n", - " 0.000000\n", - " \n", - " \n", - " 0\n", - " combinedpruning\n", - " PageRank\n", - " datagen-8_4-fb\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 3809084\n", - " 35\n", - " 237.889833\n", - " 50232462\n", - " 0.000000\n", - " \n", - " \n", - " 14\n", - " combinedpruning\n", - " PageRank\n", - " datagen-8_8-zf\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 168308893\n", - " 35\n", - " 338.839341\n", - " 2267897486\n", - " 0.000000\n", - " \n", - " \n", - " 20\n", - " combinedpruning\n", - " PageRank\n", - " graph500-22\n", - " 1\n", - " Text\n", - " False\n", - " 0\n", - " 7\n", - " 2396657\n", - " 35\n", - " 86.850061\n", - " 18538268\n", - " 0.000000\n", - " \n", - " \n", - " 9\n", - " combinedpruning\n", - " SSSP\n", " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 133167568\n", - " 7\n", - " 633432\n", - " 30\n", - " 43.168527\n", - " 8266855\n", - " 16.108613\n", - " \n", - " \n", - " 7\n", - " combinedpruning\n", - " SSSP\n", - " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 337239306\n", - " 7\n", - " 1387587\n", - " 32\n", - " 102.904335\n", - " 18190864\n", - " 18.538938\n", + " 1063374413\n", " \n", " \n", " 2\n", - " combinedpruning\n", - " SSSP\n", - " datagen-8_4-fb\n", - " 1\n", - " Text\n", - " False\n", - " 891772088\n", - " 7\n", - " 3809084\n", - " 36\n", - " 305.687841\n", - " 50232462\n", - " 17.752904\n", - " \n", - " \n", - " 12\n", - " combinedpruning\n", - " SSSP\n", - " datagen-8_8-zf\n", - " 1\n", - " Text\n", - " False\n", - " 192342\n", - " 7\n", - " 168308893\n", - " 22\n", - " 223.981237\n", - " 2267897486\n", - " 0.000085\n", - " \n", - " \n", - " 16\n", - " combinedpruning\n", - " WCC\n", - " cit-Patents\n", - " 1\n", - " Text\n", - " False\n", - " 965132860\n", - " 7\n", - " 3774768\n", - " 41\n", - " 187.507095\n", - " 30025298\n", - " 32.143989\n", - " \n", - " \n", - " 11\n", - " combinedpruning\n", - " WCC\n", - " datagen-7_5-fb\n", - " 1\n", - " Text\n", - " False\n", - " 58425032\n", - " 7\n", - " 633432\n", - " 13\n", - " 37.925038\n", - " 8266855\n", - " 7.067383\n", - " \n", - " \n", - " 6\n", - " combinedpruning\n", - " WCC\n", " datagen-7_9-fb\n", - " 1\n", - " Text\n", - " False\n", - " 129855334\n", - " 7\n", - " 1387587\n", - " 13\n", - " 76.020076\n", - " 18190864\n", - " 7.138492\n", + " 2659266462\n", " \n", " \n", " 3\n", - " combinedpruning\n", - " WCC\n", " datagen-8_4-fb\n", - " 1\n", - " Text\n", - " False\n", - " 364443597\n", - " 7\n", - " 3809084\n", - " 13\n", - " 257.643940\n", - " 50232462\n", - " 7.255141\n", + " 8383838706\n", " \n", " \n", - " 19\n", - " combinedpruning\n", - " WCC\n", - " graph500-22\n", - " 1\n", - " Text\n", - " False\n", - " 184374609\n", - " 7\n", - " 2396657\n", - " 15\n", - " 75.913845\n", - " 18538268\n", - " 9.945622\n", + " 4\n", + " datagen-8_8-zf\n", + " 14974905842\n", + " \n", + " \n", + " 5\n", + " graph500-22\n", + " 1009928153\n", " \n", " \n", "\n", "" ], "text/plain": [ - " config algorithm dataset run storage_format compressed \\\n", - "15 combinedpruning BFS cit-Patents 1 Text False \n", - "8 combinedpruning BFS datagen-7_5-fb 1 Text False \n", - "4 combinedpruning BFS datagen-7_9-fb 1 Text False \n", - "1 combinedpruning BFS datagen-8_4-fb 1 Text False \n", - "13 combinedpruning BFS datagen-8_8-zf 1 Text False \n", - "18 combinedpruning BFS graph500-22 1 Text False \n", - "17 combinedpruning PageRank cit-Patents 1 Text False \n", - "10 combinedpruning PageRank datagen-7_5-fb 1 Text False \n", - "5 combinedpruning PageRank datagen-7_9-fb 1 Text False \n", - "0 combinedpruning PageRank datagen-8_4-fb 1 Text False \n", - "14 combinedpruning PageRank datagen-8_8-zf 1 Text False \n", - "20 combinedpruning PageRank graph500-22 1 Text False \n", - "9 combinedpruning SSSP datagen-7_5-fb 1 Text False \n", - "7 combinedpruning SSSP datagen-7_9-fb 1 Text False \n", - "2 combinedpruning SSSP datagen-8_4-fb 1 Text False \n", - "12 combinedpruning SSSP datagen-8_8-zf 1 Text False \n", - "16 combinedpruning WCC cit-Patents 1 Text False \n", - "11 combinedpruning WCC datagen-7_5-fb 1 Text False \n", - "6 combinedpruning WCC datagen-7_9-fb 1 Text False \n", - "3 combinedpruning WCC datagen-8_4-fb 1 Text False \n", - "19 combinedpruning WCC graph500-22 1 Text False \n", - "\n", - " total_size nr_executors nr_vertices iterations duration \\\n", - "15 50535334 7 3774768 43 97.991459 \n", - "8 99098460 7 633432 29 40.551124 \n", - "4 242483153 7 1387587 31 110.392218 \n", - "1 627415849 7 3809084 35 265.831706 \n", - "13 158742 7 168308893 21 202.223527 \n", - "18 0 7 2396657 3 28.202130 \n", - "17 0 7 3774768 35 89.170014 \n", - "10 0 7 633432 35 35.329524 \n", - "5 0 7 1387587 35 67.376054 \n", - "0 0 7 3809084 35 237.889833 \n", - "14 0 7 168308893 35 338.839341 \n", - "20 0 7 2396657 35 86.850061 \n", - "9 133167568 7 633432 30 43.168527 \n", - "7 337239306 7 1387587 32 102.904335 \n", - "2 891772088 7 3809084 36 305.687841 \n", - "12 192342 7 168308893 22 223.981237 \n", - "16 965132860 7 3774768 41 187.507095 \n", - "11 58425032 7 633432 13 37.925038 \n", - "6 129855334 7 1387587 13 76.020076 \n", - "3 364443597 7 3809084 13 257.643940 \n", - "19 184374609 7 2396657 15 75.913845 \n", - "\n", - " baseline_graph_size blowup \n", - "15 30025298 1.683092 \n", - "8 8266855 11.987444 \n", - "4 18190864 13.329942 \n", - "1 50232462 12.490247 \n", - "13 2267897486 0.000070 \n", - "18 18538268 0.000000 \n", - "17 30025298 0.000000 \n", - "10 8266855 0.000000 \n", - "5 18190864 0.000000 \n", - "0 50232462 0.000000 \n", - "14 2267897486 0.000000 \n", - "20 18538268 0.000000 \n", - "9 8266855 16.108613 \n", - "7 18190864 18.538938 \n", - "2 50232462 17.752904 \n", - "12 2267897486 0.000085 \n", - "16 30025298 32.143989 \n", - "11 8266855 7.067383 \n", - "6 18190864 7.138492 \n", - "3 50232462 7.255141 \n", - "19 18538268 9.945622 " + " dataset size\n", + "0 cit-Patents 294044883\n", + "1 datagen-7_5-fb 1063374413\n", + "2 datagen-7_9-fb 2659266462\n", + "3 datagen-8_4-fb 8383838706\n", + "4 datagen-8_8-zf 14974905842\n", + "5 graph500-22 1009928153" ] }, - "execution_count": 180, + "execution_count": 121, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "gg_combined = node_sizes.rename(columns={\"total_size\": \"baseline_graph_size\"})\n", - "gg2_combined = pd.merge(combined, gg_combined, on=[\"dataset\"])\n", - "gg2_combined[\"blowup\"] = gg2_combined[\"total_size\"] / gg2_combined[\"baseline_graph_size\"]\n", - "gg2_combined.sort_values(by=[\"algorithm\", \"dataset\", \"storage_format\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 181, - "id": "58051007-0119-47d9-9e16-b47955dda860", - "metadata": {}, - "outputs": [], - "source": [ - "#sns.boxplot(gg2_combined[gg2_combined[\"total_size\"] > 1024**2], x=\"blowup\")" + "data = json.loads(open(\"../data/sizes.json\").read())\n", + "rows = []\n", + "for dataset, metrics in data.items():\n", + " s = 0\n", + " for algorithm, size in metrics.items():\n", + " if algorithm not in [\"edges\", \"vertices\"]:\n", + " continue\n", + " s += size\n", + " rows.append({\"dataset\": dataset, \"size\": s})\n", + "\n", + "dataset_sizes = pd.DataFrame(rows)\n", + "dataset_sizes\n", + "# graph_size = dataset_sizes.groupby([\"algorithm\"]).agg([\"sum\"]).reset_index()\n", + "# node_sizes[\"pretty_size\"] = [f\"{int(format_filesize(x)[0])}{format_filesize(x)[1]}\" for x in node_sizes[\"size\"][\"sum\"]]\n", + "# node_sizes" ] }, { "cell_type": "code", - "execution_count": 182, - "id": "9aea89dc-5cd2-4abf-81dd-6d987ba6b86b", + "execution_count": 122, + "id": "84b638b7", "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/var/folders/4z/sr1jzyjd3sjfsw6tlm7k49180000gn/T/ipykernel_43690/4184565240.py:1: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " storage_baseline[\"scenario\"] = \"Complete provenance\"\n" - ] - }, { "data": { "text/html": [ @@ -12655,489 +13880,264 @@ " \n", " \n", " \n", - " scenario\n", + " algorithm\n", " dataset\n", - " total_size\n", - " baseline_graph_size\n", - " blowup\n", + " duration\n", + " size\n", " \n", " \n", " \n", " \n", " 0\n", - " Complete provenance\n", - " datagen-7_9-fb\n", - " 208169138\n", - " 18190864\n", - " 11.443609\n", + " BFS\n", + " cit-Patents\n", + " 82.968899\n", + " 294044883\n", " \n", " \n", " 1\n", - " Complete provenance\n", - " datagen-7_9-fb\n", - " 581855399\n", - " 18190864\n", - " 31.986133\n", + " PageRank\n", + " cit-Patents\n", + " 85.102944\n", + " 294044883\n", " \n", " \n", " 2\n", - " Complete provenance\n", - " datagen-7_9-fb\n", - " 1216101565\n", - " 18190864\n", - " 66.852326\n", + " WCC\n", + " cit-Patents\n", + " 157.944986\n", + " 294044883\n", " \n", " \n", " 3\n", - " Complete provenance\n", - " datagen-7_9-fb\n", - " 601133226\n", - " 18190864\n", - " 33.045886\n", + " BFS\n", + " datagen-7_5-fb\n", + " 34.323108\n", + " 1063374413\n", " \n", " \n", " 4\n", - " Provenance pruning\n", - " datagen-7_9-fb\n", - " 467315962\n", - " 18190864\n", - " 25.689597\n", + " PageRank\n", + " datagen-7_5-fb\n", + " 39.980476\n", + " 1063374413\n", " \n", " \n", " 5\n", - " Provenance pruning\n", - " datagen-7_9-fb\n", - " 435702119\n", - " 18190864\n", - " 23.951700\n", + " SSSP\n", + " datagen-7_5-fb\n", + " 38.116547\n", + " 1063374413\n", " \n", " \n", " 6\n", - " Provenance pruning\n", - " datagen-7_9-fb\n", - " 129855334\n", - " 18190864\n", - " 7.138492\n", + " WCC\n", + " datagen-7_5-fb\n", + " 36.768406\n", + " 1063374413\n", " \n", " \n", " 7\n", - " Data pruning\n", + " BFS\n", " datagen-7_9-fb\n", - " 1210719851\n", - " 18190864\n", - " 66.556479\n", + " 69.310011\n", + " 2659266462\n", " \n", " \n", " 8\n", - " Data pruning\n", + " PageRank\n", " datagen-7_9-fb\n", - " 242483171\n", - " 18190864\n", - " 13.329942\n", + " 69.879073\n", + " 2659266462\n", " \n", " \n", " 9\n", - " Data pruning\n", + " SSSP\n", " datagen-7_9-fb\n", - " 337239338\n", - " 18190864\n", - " 18.538940\n", + " 76.495710\n", + " 2659266462\n", " \n", " \n", " 10\n", - " Data pruning\n", + " WCC\n", " datagen-7_9-fb\n", - " 208169138\n", - " 18190864\n", - " 11.443609\n", + " 66.344004\n", + " 2659266462\n", " \n", " \n", " 11\n", - " Combined pruning\n", - " datagen-7_9-fb\n", - " 242483153\n", - " 18190864\n", - " 13.329942\n", + " BFS\n", + " datagen-8_4-fb\n", + " 241.785784\n", + " 8383838706\n", " \n", " \n", " 12\n", - " Combined pruning\n", - " datagen-7_9-fb\n", - " 129855334\n", - " 18190864\n", - " 7.138492\n", + " PageRank\n", + " datagen-8_4-fb\n", + " 215.872856\n", + " 8383838706\n", " \n", " \n", " 13\n", - " Combined pruning\n", - " datagen-7_9-fb\n", - " 337239306\n", - " 18190864\n", - " 18.538938\n", + " SSSP\n", + " datagen-8_4-fb\n", + " 255.830169\n", + " 8383838706\n", " \n", " \n", " 14\n", - " Complete provenance\n", - " datagen-7_5-fb\n", - " 552752499\n", - " 8266855\n", - " 66.863698\n", + " WCC\n", + " datagen-8_4-fb\n", + " 239.018332\n", + " 8383838706\n", " \n", " \n", " 15\n", - " Complete provenance\n", - " datagen-7_5-fb\n", - " 94026180\n", - " 8266855\n", - " 11.373876\n", + " BFS\n", + " datagen-8_8-zf\n", + " 218.721579\n", + " 14974905842\n", " \n", " \n", " 16\n", - " Complete provenance\n", - " datagen-7_5-fb\n", - " 256529225\n", - " 8266855\n", - " 31.031054\n", + " PageRank\n", + " datagen-8_8-zf\n", + " 245.949348\n", + " 14974905842\n", " \n", " \n", " 17\n", - " Complete provenance\n", - " datagen-7_5-fb\n", - " 254670929\n", - " 8266855\n", - " 30.806265\n", + " SSSP\n", + " datagen-8_8-zf\n", + " 209.249324\n", + " 14974905842\n", " \n", " \n", " 18\n", - " Provenance pruning\n", - " datagen-7_5-fb\n", - " 189922202\n", - " 8266855\n", - " 22.973937\n", + " BFS\n", + " graph500-22\n", + " 32.865590\n", + " 1009928153\n", " \n", " \n", " 19\n", - " Provenance pruning\n", - " datagen-7_5-fb\n", - " 193732521\n", - " 8266855\n", - " 23.434852\n", - " \n", - " \n", - " 20\n", - " Provenance pruning\n", - " datagen-7_5-fb\n", - " 58425032\n", - " 8266855\n", - " 7.067383\n", - " \n", - " \n", - " 21\n", - " Data pruning\n", - " datagen-7_5-fb\n", - " 99098478\n", - " 8266855\n", - " 11.987446\n", - " \n", - " \n", - " 22\n", - " Data pruning\n", - " datagen-7_5-fb\n", - " 94026180\n", - " 8266855\n", - " 11.373876\n", - " \n", - " \n", - " 23\n", - " Data pruning\n", - " datagen-7_5-fb\n", - " 550374485\n", - " 8266855\n", - " 66.576042\n", - " \n", - " \n", - " 24\n", - " Data pruning\n", - " datagen-7_5-fb\n", - " 133167600\n", - " 8266855\n", - " 16.108617\n", - " \n", - " \n", - " 25\n", - " Combined pruning\n", - " datagen-7_5-fb\n", - " 99098460\n", - " 8266855\n", - " 11.987444\n", - " \n", - " \n", - " 26\n", - " Combined pruning\n", - " datagen-7_5-fb\n", - " 133167568\n", - " 8266855\n", - " 16.108613\n", - " \n", - " \n", - " 27\n", - " Combined pruning\n", - " datagen-7_5-fb\n", - " 58425032\n", - " 8266855\n", - " 7.067383\n", - " \n", - " \n", - " 28\n", - " Complete provenance\n", - " cit-Patents\n", - " 1100333124\n", - " 30025298\n", - " 36.646868\n", - " \n", - " \n", - " 29\n", - " Complete provenance\n", - " cit-Patents\n", - " 2525597803\n", - " 30025298\n", - " 84.115661\n", - " \n", - " \n", - " 30\n", - " Complete provenance\n", - " cit-Patents\n", - " 2834235312\n", - " 30025298\n", - " 94.394910\n", - " \n", - " \n", - " 31\n", - " Provenance pruning\n", - " cit-Patents\n", - " 965132860\n", - " 30025298\n", - " 32.143989\n", - " \n", - " \n", - " 32\n", - " Provenance pruning\n", - " cit-Patents\n", - " 2186387275\n", - " 30025298\n", - " 72.818171\n", - " \n", - " \n", - " 33\n", - " Data pruning\n", - " cit-Patents\n", - " 2795333038\n", - " 30025298\n", - " 93.099260\n", - " \n", - " \n", - " 34\n", - " Data pruning\n", - " cit-Patents\n", - " 1100333124\n", - " 30025298\n", - " 36.646868\n", - " \n", - " \n", - " 35\n", - " Data pruning\n", - " cit-Patents\n", - " 50535370\n", - " 30025298\n", - " 1.683093\n", - " \n", - " \n", - " 36\n", - " Combined pruning\n", - " cit-Patents\n", - " 50535334\n", - " 30025298\n", - " 1.683092\n", - " \n", - " \n", - " 37\n", - " Combined pruning\n", - " cit-Patents\n", - " 965132860\n", - " 30025298\n", - " 32.143989\n", - " \n", - " \n", - " 38\n", - " Complete provenance\n", + " PageRank\n", " graph500-22\n", - " 213794112\n", - " 18538268\n", - " 11.532583\n", + " 78.376377\n", + " 1009928153\n", " \n", " \n", - " 39\n", - " Combined pruning\n", + " 20\n", + " WCC\n", " graph500-22\n", - " 184374609\n", - " 18538268\n", - " 9.945622\n", - " \n", - " \n", - " 40\n", - " Combined pruning\n", - " datagen-8_4-fb\n", - " 627415849\n", - " 50232462\n", - " 12.490247\n", - " \n", - " \n", - " 41\n", - " Combined pruning\n", - " datagen-8_4-fb\n", - " 891772088\n", - " 50232462\n", - " 17.752904\n", - " \n", - " \n", - " 42\n", - " Combined pruning\n", - " datagen-8_4-fb\n", - " 364443597\n", - " 50232462\n", - " 7.255141\n", + " 72.045441\n", + " 1009928153\n", " \n", " \n", "\n", "" ], "text/plain": [ - " scenario dataset total_size baseline_graph_size \\\n", - "0 Complete provenance datagen-7_9-fb 208169138 18190864 \n", - "1 Complete provenance datagen-7_9-fb 581855399 18190864 \n", - "2 Complete provenance datagen-7_9-fb 1216101565 18190864 \n", - "3 Complete provenance datagen-7_9-fb 601133226 18190864 \n", - "4 Provenance pruning datagen-7_9-fb 467315962 18190864 \n", - "5 Provenance pruning datagen-7_9-fb 435702119 18190864 \n", - "6 Provenance pruning datagen-7_9-fb 129855334 18190864 \n", - "7 Data pruning datagen-7_9-fb 1210719851 18190864 \n", - "8 Data pruning datagen-7_9-fb 242483171 18190864 \n", - "9 Data pruning datagen-7_9-fb 337239338 18190864 \n", - "10 Data pruning datagen-7_9-fb 208169138 18190864 \n", - "11 Combined pruning datagen-7_9-fb 242483153 18190864 \n", - "12 Combined pruning datagen-7_9-fb 129855334 18190864 \n", - "13 Combined pruning datagen-7_9-fb 337239306 18190864 \n", - "14 Complete provenance datagen-7_5-fb 552752499 8266855 \n", - "15 Complete provenance datagen-7_5-fb 94026180 8266855 \n", - "16 Complete provenance datagen-7_5-fb 256529225 8266855 \n", - "17 Complete provenance datagen-7_5-fb 254670929 8266855 \n", - "18 Provenance pruning datagen-7_5-fb 189922202 8266855 \n", - "19 Provenance pruning datagen-7_5-fb 193732521 8266855 \n", - "20 Provenance pruning datagen-7_5-fb 58425032 8266855 \n", - "21 Data pruning datagen-7_5-fb 99098478 8266855 \n", - "22 Data pruning datagen-7_5-fb 94026180 8266855 \n", - "23 Data pruning datagen-7_5-fb 550374485 8266855 \n", - "24 Data pruning datagen-7_5-fb 133167600 8266855 \n", - "25 Combined pruning datagen-7_5-fb 99098460 8266855 \n", - "26 Combined pruning datagen-7_5-fb 133167568 8266855 \n", - "27 Combined pruning datagen-7_5-fb 58425032 8266855 \n", - "28 Complete provenance cit-Patents 1100333124 30025298 \n", - "29 Complete provenance cit-Patents 2525597803 30025298 \n", - "30 Complete provenance cit-Patents 2834235312 30025298 \n", - "31 Provenance pruning cit-Patents 965132860 30025298 \n", - "32 Provenance pruning cit-Patents 2186387275 30025298 \n", - "33 Data pruning cit-Patents 2795333038 30025298 \n", - "34 Data pruning cit-Patents 1100333124 30025298 \n", - "35 Data pruning cit-Patents 50535370 30025298 \n", - "36 Combined pruning cit-Patents 50535334 30025298 \n", - "37 Combined pruning cit-Patents 965132860 30025298 \n", - "38 Complete provenance graph500-22 213794112 18538268 \n", - "39 Combined pruning graph500-22 184374609 18538268 \n", - "40 Combined pruning datagen-8_4-fb 627415849 50232462 \n", - "41 Combined pruning datagen-8_4-fb 891772088 50232462 \n", - "42 Combined pruning datagen-8_4-fb 364443597 50232462 \n", - "\n", - " blowup \n", - "0 11.443609 \n", - "1 31.986133 \n", - "2 66.852326 \n", - "3 33.045886 \n", - "4 25.689597 \n", - "5 23.951700 \n", - "6 7.138492 \n", - "7 66.556479 \n", - "8 13.329942 \n", - "9 18.538940 \n", - "10 11.443609 \n", - "11 13.329942 \n", - "12 7.138492 \n", - "13 18.538938 \n", - "14 66.863698 \n", - "15 11.373876 \n", - "16 31.031054 \n", - "17 30.806265 \n", - "18 22.973937 \n", - "19 23.434852 \n", - "20 7.067383 \n", - "21 11.987446 \n", - "22 11.373876 \n", - "23 66.576042 \n", - "24 16.108617 \n", - "25 11.987444 \n", - "26 16.108613 \n", - "27 7.067383 \n", - "28 36.646868 \n", - "29 84.115661 \n", - "30 94.394910 \n", - "31 32.143989 \n", - "32 72.818171 \n", - "33 93.099260 \n", - "34 36.646868 \n", - "35 1.683093 \n", - "36 1.683092 \n", - "37 32.143989 \n", - "38 11.532583 \n", - "39 9.945622 \n", - "40 12.490247 \n", - "41 17.752904 \n", - "42 7.255141 " + " algorithm dataset duration size\n", + "0 BFS cit-Patents 82.968899 294044883\n", + "1 PageRank cit-Patents 85.102944 294044883\n", + "2 WCC cit-Patents 157.944986 294044883\n", + "3 BFS datagen-7_5-fb 34.323108 1063374413\n", + "4 PageRank datagen-7_5-fb 39.980476 1063374413\n", + "5 SSSP datagen-7_5-fb 38.116547 1063374413\n", + "6 WCC datagen-7_5-fb 36.768406 1063374413\n", + "7 BFS datagen-7_9-fb 69.310011 2659266462\n", + "8 PageRank datagen-7_9-fb 69.879073 2659266462\n", + "9 SSSP datagen-7_9-fb 76.495710 2659266462\n", + "10 WCC datagen-7_9-fb 66.344004 2659266462\n", + "11 BFS datagen-8_4-fb 241.785784 8383838706\n", + "12 PageRank datagen-8_4-fb 215.872856 8383838706\n", + "13 SSSP datagen-8_4-fb 255.830169 8383838706\n", + "14 WCC datagen-8_4-fb 239.018332 8383838706\n", + "15 BFS datagen-8_8-zf 218.721579 14974905842\n", + "16 PageRank datagen-8_8-zf 245.949348 14974905842\n", + "17 SSSP datagen-8_8-zf 209.249324 14974905842\n", + "18 BFS graph500-22 32.865590 1009928153\n", + "19 PageRank graph500-22 78.376377 1009928153\n", + "20 WCC graph500-22 72.045441 1009928153" ] }, - "execution_count": 182, + "execution_count": 122, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "storage_baseline[\"scenario\"] = \"Complete provenance\"\n", - "joinVertices_compare_size[\"scenario\"] = \"Provenance pruning\"\n", - "smart_pruning_compare_size[\"scenario\"] = \"Data pruning\"\n", - "combined[\"scenario\"] = \"Combined pruning\"\n", - "together = [\n", - " storage_baseline,\n", - " joinVertices_compare_size,\n", - " smart_pruning_compare_size,\n", - " combined\n", - "]\n", - "all_together = pd.concat(together)\n", - "awww = all_together[[\"scenario\", \"dataset\", \"total_size\"]][all_together[\"total_size\"] > 1024**2]\n", - "gg_combined = node_sizes.rename(columns={\"total_size\": \"baseline_graph_size\"})\n", - "gg2_combined = pd.merge(awww, gg_combined, on=[\"dataset\"])\n", - "gg2_combined[\"blowup\"] = gg2_combined[\"total_size\"] / gg2_combined[\"baseline_graph_size\"]\n", - "gg2_combined" + "baseline_stats_2 = baseline_stats.copy(deep=True)\n", + "baseline_stats_2 = baseline_stats_2[[\"algorithm\", \"dataset\", \"mean\"]].rename(columns={\"mean\": \"duration\"})\n", + "baseline_stats_2 = pd.merge(baseline_stats_2, dataset_sizes, on=[\"dataset\"])\n", + "baseline_stats_2" + ] + }, + { + "cell_type": "code", + "execution_count": 123, + "id": "875feb87", + "metadata": {}, + "outputs": [], + "source": [ + "complete_provenance_comp_text = storage_formats[storage_formats[\"storage_format\"] == \"Text\"].rename(columns={\"total_size\": \"size\"})" + ] + }, + { + "cell_type": "code", + "execution_count": 124, + "id": "697d6968", + "metadata": {}, + "outputs": [], + "source": [ + "# baseline\n", + "baseline_all_comp = baseline_stats_2.copy(deep=True)\n", + "baseline_all_comp[\"scenario\"] = \"Baseline\"\n", + "\n", + "# tracing, need to combine this with baseline size data\n", + "tracing_all_comp = tracing.copy(deep=True)\n", + "tracing_all_comp[\"size\"] = 0.1\n", + "tracing_all_comp[\"scenario\"] = \"ES02\"\n", + "\n", + "# complete provenance\n", + "complete_provenance_comp = complete_provenance_comp_text.copy(deep=True)\n", + "complete_provenance_comp[\"scenario\"] = \"ES03 (text)\"\n", + "\n", + "# provenance graph pruning\n", + "pg_pruning_all_comp = pg_pruning.copy(deep=True)\n", + "pg_pruning_all_comp[\"scenario\"] = \"ES04\"\n", + "\n", + "# data graph pruning\n", + "dg_pruning_all_comp = dg_pruning.copy(deep=True)\n", + "dg_pruning_all_comp[\"scenario\"] = \"ES05\"\n", + "\n", + "# combined pruning\n", + "combined_all_comp = combined.copy(deep=True)\n", + "combined_all_comp[\"scenario\"] = \"ES06\"\n", + "#combined\n", + "\n", + "all_comp = pd.concat([\n", + " baseline_all_comp,\n", + " tracing_all_comp,\n", + " complete_provenance_comp,\n", + " pg_pruning_all_comp,\n", + " dg_pruning_all_comp,\n", + " combined_all_comp,\n", + "], ignore_index=True)[[\"scenario\", \"algorithm\", \"dataset\", \"duration\", \"size\"]]\n" ] }, { "cell_type": "code", - "execution_count": 183, - "id": "f7283878-bd3f-4841-8f06-5208b73b88ef", + "execution_count": 125, + "id": "997f26c8", "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAw4AAAHDCAYAAACNq00OAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACnKklEQVR4nOzdd3xT5f4H8M/JbNJd6KK0UFaRJSAVVJaCchUUJyhcURRQUFRUFLyAyGWoDHEg/hAQcQByURBEgZYhQ5nKlF1ogdKV7uzk/P5Ic0iatOmCFvi8X6/jSU5OznmSYnu+53m+30cQRVEEERERERFROWS13QAiIiIiIqr7GDgQEREREZFPDByIiIiIiMgnBg5EREREROQTAwciIiIiIvKJgQMREREREfnEwIGIiIiIiHxi4EBERERERD4parsBRHRj+OuvvyCKIpRKZW03hYiIiCrIYrFAEAR06NDB577scSCiGiGKIjgR/Y1JFEWYzWb+fMkr/vug8vDfR91Xmb/f7HEgohrh7Glo27ZtLbeEapper8c///yDZs2aQavV1nZzqI7hvw8qD/991H2HDx+u8L7scSAiIiIiIp8YOBARERERkU8MHIiIiIiIyCcGDkRERERE5BMDByIiIiIi8omBAxERERER+cTAgYiIiIiIfGLgQEREREREPjFwICIiIiIinxg4EBERERGRTwwciIiIiIjIJwYORERERETkEwMHIiIiIiLyiYEDERERERH5xMCBiIiIiIh8YuBAREREREQ+MXAgIiIiIiKfGDgQEREREZFPDByIiIiIiMgnBg5EREREROQTAwciIiIiIvKJgQMREREREfnEwIGIiIiIiHxi4EBERERERD4xcCAiIiIiIp8YOBARERERkU8MHIiIiIiIyCcGDkRERERE5BMDByIiIiIi8omBAxERERER+cTAgYiIiIiIfGLgQEREREREPjFwICIiIiIinxg4EBERERGRT4rabgAREdHVIIoiTCYTiouLUVxcDL1eL60NBoO0NplMMBqN0mOTyQSLxQKz2Qyz2QyLxQKLxQKr1QqLxQqbzQqbzQa73S6tAUhrJ0EQpEUul0Mmk0Mul0Eul0OhUECpVEprpVIJlUrltqjVavj5+UlrjUYjrZ2LVquV1lqtFgoF/6wT0dXD3zA3AVEUIQhCbTeDiKjKbDYbioqKkJ+fj4KC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zw+TJk1yu3hSqVT49NNPMXz4cHzzzTfYuHEj2rdvj6KiIuzduxdmsxn33HNPpSY7qwqVSoWMjAzce++96Ny5M4xGI/bs2QOLxYJRo0b5HDITERGBOXPm4NVXX8WUKVOwePFiJCQkoLCwEPv374fNZsM999zjFoBER0dDo9EgPz8fTz75JOLi4jBr1iyo1Wp88sknGD58OObPn49Vq1ahVatWsFqt2Lt3L0wmE2699VYpqKooURTRr18/dOnSBTKZDH/++ScMBgMeeeQRPP744xU+zlNPPYUjR45g1apVeOyxx3DbbbchLCwMx44dk3qH5syZ43Vol3NOh/T0dGi1Wq934avyXVbW7bffjrZt2+Lw4cPo378/EhMTodFocOLECaSmpiImJga5ubnQ6/XIy8srM7HclwYNGmDGjBl46623MGbMGCxcuBANGzbEmTNncPr0afj7+2PWrFlSl+6UKVOQmpqKLVu2oHfv3mjTpg38/f1x8OBB5OTkIDQ0FJ988skNf7eYPMlkMgQFBSEoKEgK/p1K3zG02WxSj4VOp0Nubq60di7O56YiHcq77BNkSkDhB5nb5HPqK0OlnEOo5H6cg+Iqkspg2ixSpRm4PL5Sdca5zXJlm2gtWVf9LrkgCI4LWj811Gr/cmvsl7549lZH3zkevXQSaunHzgt7b4vr64IglPma6+vethPdSK6LwAFwzC/w888/43//+x82b96MU6dO4fjx41AqlYiNjcXjjz+Of//7317vrLVp0wZr1qzBwoULsXXrVmzevBn+/v7o2LEjHn/88XLnT6gparUaK1aswOzZs7Fjxw4IgoBOnTph6NChXsu0etOzZ0+sXr0aixYtwq5du/D7778jKCgI7du3xxNPPIEHH3zQ7e6Bn58fZs2ahVmzZuHYsWNIS0tDbm4uQkND0a5dO/z8889YtGgRtm3bhl27dkGr1aJFixZS7kPpOS18+eqrr7Bw4UIkJSXBZDKhZcuWGDRoEB566KFKHUcQBEyfPh09evTA8uXLceTIERiNRkRHR2PIkCF49tlny7yD6jqnw7/+9a8yu0Ur+11Wllwux5IlS7BgwQJs3LgRe/fuhVwuR2xsLF5++WUMHToUb731FpKTk7Fx48Zq5Zo88MADaNy4Mb788kvs2bMHJ06cQGhoKB5++GG89NJLbheBISEhWL58Ob777jus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N998U9tNqFVyuRwPP/wwHn744dpuClG5BEGQynpWJwAhIqKaUzcy0oiIiIiIqE5j4EBERERERD4xcCAiIiIiIp8YOBARERERkU8MHIiIiIiIyCcGDkRERERE5BMDByIiIiIi8omBAxERERER+cTAgYiIiIiIfGLgQEREREREPjFwICIiIiIinxg4EBERERGRTwwciIiIiIjIJwYORERERETkEwMHIiIiIiLyiYEDERERERH5xMCBiIiIiIh8YuBAREREREQ+MXAgIiIiIiKfGDgQEREREZFPDByIiIiIiMgnBg5EREREROQTAwciIiIiIvKJgQMREREREfnEwIGIiIiIiHxi4EBERERERD4xcCAiIiIiIp8YOBARERERkU8MHIiIiIiIyCcGDkRERERE5BMDByIiIiIi8omBAxERERER+cTAgYiIiIiIfGLgQEREREREPjFwICIiIiIinxg4EBERERGRTwwciIiIiIjIJwYORERERETkEwMHIiIiIiLyiYEDERERERH5xMCBiIiIiIh8UtR2A4iIiLzR6/VIT09Hfn4+ACA4OBgNGjSARqOp5ZYREd2cGDgQEVGdkZOTg82bN2PXrl04c+YMRFF0e10QBDRt2hR33HEH7rnnHtSvX7+WWkpEdPNh4EBERLUuJycH33//PZKTk2Gz2QBBDrkmHDJ1CASFHwBAtBphN+Xh9JkUnD59Gt99/z169uiBwYMHIyIiopY/ARHRjY+BAxER1Rq73Y5ffvkFX3/9NUwmE2TqIKgjEqAMjIMgV3p9j2izwFqYBrPuBDZv3ozt27fjqaeewqOPPgq5XH6NPwER0c2DgQMREdWK/Px8zJo1C3///TcEhRp+0bdDERwPQRDKfZ8gV0IZ0gSK4HhYC87DnHkQS5cuxe7de/DWW2PZ+0BEdJWwqhIREV1zKSkpePW11/D3339DERADbfz9UIY08Rk0uBIEAcrgxtA2uR+KoEY4ceI4Xn31VRw+fPgqtpyI6ObFwIGIiK6pv/76C2+99RZysrOhirgVfg27QlaSx1AVglwFvwZdoI5ORFGxHhMmTsTWrVtrrsFERASAQ5WIiOga2rVrFz788EPY7YBfw65QBjaskeMKggBVSFPIVEEwXtiO2bNno7CwEA8++GCNHJ+IiNjjQERE18jOnTvxwQcfwA4Z/OJ61FjQ4EqhDYemUS/I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IT4+HufOnYNEIoGbmxtee+01jB8/Xu+0rSqVCt9//z12794NuVwOGxsb9O7dGzNmzEC/fv1a+pCoAZg4EBERERGRQRzjQEREREREBjFxICIiIiIig5g4EBERERGRQUwciIiIiIjIICYORERERERkEBMHIiIiIiIyiIkDEREREREZxMSBiIiIiIgMYuJARESPjKtXr0Imk+n96d27N3x9fTFmzBhER0fj8OHDLRZHZWUlrl692mLb11q1ahVkMhleffXVBq33wQcfQCaT4f3332+hyNo+QRCwceNGjB07Ft7e3vD396/zTcctLSsryyj7JWpuZsYOgIiISB+pVAobGxvxb41Gg7KyMuTl5UEul+Pnn3/GM888gxUrVqBDhw7Ntt//+7//Q2xsLGbNmoWQkJBm2y61ro0bN+KLL74AADg5OcHOzg7Ozs6tGkNOTg6WLVuGiooKbNu2rVX3TdQSmDgQEdEjacGCBfD396+1XKlUYu/evfjss8+QmJiIyMhIbNiwARYWFs2y3+XLl+PGjRvNsi0ynp9//hkA8Pzzz+Nvf/ubUWL44YcfkJiYCD8/P6Psn6i5sasSERG1KRYWFggJCcG6detgamqK1NRUfPfdd8YOix4xJSUlAIABAwYYORKixwcTByIiapP69++PV155BQCwfv16KBQKI0dEjxKNRgMAzfYkioiYOBARURumTRxKS0uRlpZWq/zChQv4+OOPERQUBD8/P/Tp0weDBg3CW2+9hf379+vU1Q5Uzs/PB3Cvq5RMJsOqVat06qWmpmLu3LkYNWoUnnrqKfTp0weDBw/GrFmzcOLEiUYfS2FhIT766CMEBgbC29sbQUFBWL58Oe7cudOg7ajVauzcuRNvvPEG+vfvjz59+mDYsGGYO3cuzp07p1N3+fLlkMlkmDJlSq3tKJVK+Pr6QiaTiWMFasrIyIBMJkP//v1RXV2tM7BdLpfrjW3EiBGQyWTYvXu3uCwlJQUymQzjx4+HUqnEihUrMHLkSHh7e2PEiBFYsGBBndvT54033tBpxw8//BAymQwjRozQqdfYdszNzcVnn32GsWPHwsfHB35+fpg0aRJ27NghJivac7F69WoAQHp6ut4YGtJWNbcbGBiIGzduICIiAn379sWAAQMwZ86cep8josZi4kBERG2Wp6enOIA6NTVVp2zr1q0IDg7Gjh07UFxc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", "text/plain": [ - "
    " + "
    " ] }, "metadata": {}, @@ -13145,19 +14145,67 @@ } ], "source": [ - "ax = sns.violinplot(gg2_combined, x=\"blowup\", y=\"scenario\")\n", + "ax = sns.boxplot(all_comp, x=\"duration\", y=\"scenario\")\n", + "\n", "ax.set_ylabel(\"Scenario\")\n", - "ax.set_xlabel(\"Data blowup factor\")\n", - "#plt.savefig(\"/Users/gm/Downloads/blowup.svg\", bbox_inches='tight')\n", - "write_dir = (plot_dir / \"das6\" / \"conclusion\")\n", - "write_dir.mkdir(exist_ok=True, parents=True)\n", - "plt.savefig(write_dir / \"factor.pdf\", bbox_inches='tight')" + "ax.set_xlabel(\"Duration (s)\")\n", + "\n", + "\n", + "plt.savefig(plot_location(\"summary-duration.pdf\"), dpi=\"figure\", bbox_inches=\"tight\")\n", + "plt.clf()" + ] + }, + { + "cell_type": "code", + "execution_count": 126, + "id": "627bef8c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "f_all_comp = all_comp[all_comp[\"size\"] > 2**20]\n", + "ax = sns.boxplot(f_all_comp, x=\"size\", y=\"scenario\")\n", + "\n", + "ax.set(xscale=\"log\")\n", + "# sns.move_legend(ax, \"center right\", ncols=1, bbox_to_anchor=(1.05, 0.55), title=None, frameon=False)\n", + "\n", + "num_xticks = 10 # Specify the number of xticks you want\n", + "xtick_min = np.log2(f_all_comp['size'].min())\n", + "xtick_max = np.log2(f_all_comp['size'].max())\n", + "xticks = np.logspace(xtick_min, xtick_max, num=num_xticks, base=2.0)\n", + "ax.set(xticks=xticks)\n", + "\n", + "xtick_labels = [f\"{int(format_filesize(x)[0])}{format_filesize(x)[1]}\" for x in xticks]\n", + "ax.set_xticklabels(xtick_labels, rotation=45)\n", + "\n", + "# for axx in ax.axes.flat:\n", + "# axx.set_xticklabels(xtick_labels, rotation=45)\n", + "\n", + "# ax.set_yticks([])\n", + "# ax.set_ylabel(None)\n", + "\n", + "\n", + "# ax.set_axis_label(\"Size (bytes)\", \"Dataset\")\n", + "ax.set_ylabel(\"\")\n", + "ax.set_xlabel(\"Size (bytes)\")\n", + "\n", + "plt.savefig(plot_location(\"summary-size.pdf\"), dpi=\"figure\", bbox_inches=\"tight\")\n", + "plt.clf()" ] }, { "cell_type": "code", "execution_count": null, - "id": "47a9b94f", + "id": "613c0dc3", "metadata": {}, "outputs": [], "source": []