From f7726933feff036bf7245c30625e993e348c8862 Mon Sep 17 00:00:00 2001 From: Github Actions Date: Fri, 23 Feb 2024 13:35:07 +0000 Subject: [PATCH] Sarah Segel: Merge pull request #94 from automl/bug/pre-commit-hooks --- development/.buildinfo | 2 +- development/.doctrees/api.doctree | Bin 7466 -> 8079 bytes .../.doctrees/api/deepcave.evaluators.doctree | Bin 7658 -> 10734 bytes .../api/deepcave.evaluators.epm.doctree | Bin 8114 -> 11845 bytes ...pcave.evaluators.epm.fanova_forest.doctree | Bin 18491 -> 36551 bytes ...pcave.evaluators.epm.random_forest.doctree | Bin 36048 -> 50551 bytes ...uators.epm.random_forest_surrogate.doctree | Bin 14766 -> 15967 bytes .../api/deepcave.evaluators.epm.utils.doctree | Bin 11361 -> 15333 bytes .../api/deepcave.evaluators.fanova.doctree | Bin 32178 -> 37483 bytes .../api/deepcave.evaluators.footprint.doctree | Bin 4780 -> 41365 bytes .../api/deepcave.evaluators.lpi.doctree | Bin 6514 -> 36750 bytes .../.doctrees/api/deepcave.layouts.doctree | Bin 13682 -> 15896 bytes .../api/deepcave.layouts.not_found.doctree | Bin 10706 -> 13615 bytes .../api/deepcave.layouts.sidebar.doctree | Bin 11590 -> 18002 bytes .../api/deepcave.plugins.budget.doctree | Bin 3631 -> 4805 bytes .../.doctrees/api/deepcave.plugins.doctree | Bin 179148 -> 189451 bytes .../api/deepcave.plugins.dynamic.doctree | Bin 14329 -> 21067 bytes .../deepcave.plugins.hyperparameter.doctree | Bin 7478 -> 10397 bytes ...plugins.hyperparameter.importances.doctree | Bin 87957 -> 59216 bytes ...eepcave.plugins.hyperparameter.pdp.doctree | Bin 66133 -> 54139 bytes ...ugins.objective.configuration_cube.doctree | Bin 66768 -> 46859 bytes ...e.plugins.objective.cost_over_time.doctree | Bin 60438 -> 47966 bytes .../api/deepcave.plugins.objective.doctree | Bin 8338 -> 12198 bytes ...ins.objective.parallel_coordinates.doctree | Bin 67073 -> 46933 bytes ...ave.plugins.objective.pareto_front.doctree | Bin 81214 -> 57602 bytes .../api/deepcave.plugins.static.doctree | Bin 18575 -> 24788 bytes ...ave.plugins.summary.configurations.doctree | Bin 64170 -> 48197 bytes .../api/deepcave.plugins.summary.doctree | Bin 7066 -> 10068 bytes ...deepcave.plugins.summary.footprint.doctree | Bin 86951 -> 54834 bytes .../deepcave.plugins.summary.overview.doctree | Bin 29083 -> 19470 bytes .../api/deepcave.runs.converters.bohb.doctree | Bin 14657 -> 24676 bytes .../deepcave.runs.converters.deepcave.doctree | Bin 14953 -> 24027 bytes .../api/deepcave.runs.converters.doctree | Bin 7938 -> 11871 bytes .../deepcave.runs.converters.smac3v1.doctree | Bin 15445 -> 27124 bytes .../deepcave.runs.converters.smac3v2.doctree | Bin 15445 -> 27156 bytes .../.doctrees/api/deepcave.runs.doctree | Bin 155715 -> 235021 bytes .../api/deepcave.runs.exceptions.doctree | Bin 11450 -> 13587 bytes .../.doctrees/api/deepcave.runs.group.doctree | Bin 23597 -> 60474 bytes .../api/deepcave.runs.handler.doctree | Bin 63500 -> 85722 bytes .../api/deepcave.runs.objective.doctree | Bin 12586 -> 37646 bytes .../api/deepcave.runs.recorder.doctree | Bin 4765 -> 45296 bytes .../.doctrees/api/deepcave.runs.run.doctree | Bin 47298 -> 62699 bytes .../api/deepcave.runs.status.doctree | Bin 7777 -> 13961 bytes .../.doctrees/api/deepcave.runs.trial.doctree | Bin 8788 -> 23383 bytes .../api/deepcave.utils.cache.doctree | Bin 28692 -> 39570 bytes .../.doctrees/api/deepcave.utils.cast.doctree | Bin 4651 -> 9755 bytes .../api/deepcave.utils.compression.doctree | Bin 12608 -> 19485 bytes .../api/deepcave.utils.configs.doctree | Bin 11974 -> 12562 bytes .../api/deepcave.utils.configspace.doctree | Bin 19556 -> 20060 bytes .../.doctrees/api/deepcave.utils.dash.doctree | Bin 8394 -> 15732 bytes .../deepcave.utils.data_structures.doctree | Bin 11645 -> 12176 bytes .../.doctrees/api/deepcave.utils.docs.doctree | Bin 5212 -> 9950 bytes .../.doctrees/api/deepcave.utils.doctree | Bin 20984 -> 35114 bytes .../api/deepcave.utils.files.doctree | Bin 4691 -> 11764 bytes .../.doctrees/api/deepcave.utils.hash.doctree | Bin 7273 -> 14205 bytes .../api/deepcave.utils.layout.doctree | Bin 20163 -> 73276 bytes .../.doctrees/api/deepcave.utils.logs.doctree | Bin 5567 -> 9533 bytes .../api/deepcave.utils.notification.doctree | Bin 4760 -> 20202 bytes .../api/deepcave.utils.run_caches.doctree | Bin 30307 -> 34790 bytes .../api/deepcave.utils.styled_plot.doctree | Bin 9813 -> 62515 bytes .../api/deepcave.utils.styled_plotty.doctree | Bin 61458 -> 84695 bytes ...deepcave.utils.symbolic_regression.doctree | Bin 25181 -> 26357 bytes .../.doctrees/api/deepcave.utils.url.doctree | Bin 8528 -> 16968 bytes .../.doctrees/api/deepcave.utils.util.doctree | Bin 9124 -> 24633 bytes development/.doctrees/environment.pickle | Bin 3226213 -> 4112609 bytes .../examples/api/importances.doctree | Bin 10010 -> 10014 bytes .../examples/api/parallel_coordinates.doctree | Bin 10486 -> 10488 bytes .../.doctrees/examples/api/pdp.doctree | Bin 9793 -> 9795 bytes .../parallel_coordinates.py | 2 +- .../pdp.ipynb | 2 +- .../importances.ipynb | 2 +- .../examples_python.zip | Bin 18497 -> 18502 bytes .../e839af13aa37ae3d835848af3db8e085/pdp.py | 2 +- .../parallel_coordinates.ipynb | 2 +- .../importances.py | 6 +- .../examples_jupyter.zip | Bin 23713 -> 23717 bytes .../evaluators/epm/fanova_forest.html | 87 +- .../evaluators/epm/random_forest.html | 1291 ++++++++++++++++ .../epm/random_forest_surrogate.html | 43 +- .../deepcave/evaluators/epm/utils.html | 40 +- .../_modules/deepcave/evaluators/fanova.html | 72 +- .../deepcave/evaluators/footprint.html | 1374 +++++++++++++++++ .../_modules/deepcave/evaluators/lpi.html | 1131 ++++++++++++++ development/_modules/deepcave/layouts.html | 22 +- .../_modules/deepcave/layouts/not_found.html | 24 +- .../_modules/deepcave/layouts/sidebar.html | 57 +- development/_modules/deepcave/plugins.html | 430 ++++-- .../_modules/deepcave/plugins/dynamic.html | 77 +- .../plugins/hyperparameter/importances.html | 240 ++- .../deepcave/plugins/hyperparameter/pdp.html | 215 ++- .../hyperparameter/symbolic_explanations.html | 6 +- .../plugins/objective/configuration_cube.html | 162 +- .../plugins/objective/cost_over_time.html | 167 +- .../objective/parallel_coordinates.html | 163 +- .../plugins/objective/pareto_front.html | 221 ++- .../_modules/deepcave/plugins/static.html | 132 +- .../plugins/summary/configurations.html | 212 ++- .../deepcave/plugins/summary/footprint.html | 215 ++- .../deepcave/plugins/summary/overview.html | 81 +- development/_modules/deepcave/runs.html | 657 ++++++-- .../deepcave/runs/converters/bohb.html | 86 +- .../deepcave/runs/converters/deepcave.html | 60 +- .../deepcave/runs/converters/smac3v1.html | 76 +- .../deepcave/runs/converters/smac3v2.html | 77 +- .../_modules/deepcave/runs/exceptions.html | 19 +- development/_modules/deepcave/runs/group.html | 232 ++- .../_modules/deepcave/runs/handler.html | 198 ++- .../_modules/deepcave/runs/objective.html | 136 +- .../_modules/deepcave/runs/recorder.html | 1032 +++++++++++++ development/_modules/deepcave/runs/run.html | 189 ++- .../_modules/deepcave/runs/status.html | 44 +- development/_modules/deepcave/runs/trial.html | 66 +- .../_modules/deepcave/utils/cache.html | 112 +- development/_modules/deepcave/utils/cast.html | 772 +++++++++ .../_modules/deepcave/utils/compression.html | 57 +- .../_modules/deepcave/utils/configs.html | 15 +- .../_modules/deepcave/utils/configspace.html | 36 +- development/_modules/deepcave/utils/dash.html | 45 +- .../deepcave/utils/data_structures.html | 11 +- development/_modules/deepcave/utils/docs.html | 817 ++++++++++ .../_modules/deepcave/utils/files.html | 773 ++++++++++ development/_modules/deepcave/utils/hash.html | 796 ++++++++++ .../_modules/deepcave/utils/layout.html | 220 ++- development/_modules/deepcave/utils/logs.html | 781 ++++++++++ .../_modules/deepcave/utils/notification.html | 811 ++++++++++ .../_modules/deepcave/utils/run_caches.html | 58 +- .../_modules/deepcave/utils/styled_plot.html | 223 ++- .../deepcave/utils/styled_plotty.html | 192 ++- .../deepcave/utils/symbolic_regression.html | 29 +- development/_modules/deepcave/utils/url.html | 807 ++++++++++ development/_modules/deepcave/utils/util.html | 856 ++++++++++ development/_modules/index.html | 11 + .../_sources/examples/api/importances.rst.txt | 7 +- .../examples/api/parallel_coordinates.rst.txt | 2 +- development/_sources/examples/api/pdp.rst.txt | 2 +- development/api.html | 10 +- ...deepcave.evaluators.epm.fanova_forest.html | 60 +- development/api/deepcave.evaluators.epm.html | 35 +- ...deepcave.evaluators.epm.random_forest.html | 98 +- ...valuators.epm.random_forest_surrogate.html | 22 +- .../api/deepcave.evaluators.epm.utils.html | 27 +- .../api/deepcave.evaluators.fanova.html | 44 +- .../api/deepcave.evaluators.footprint.html | 157 +- development/api/deepcave.evaluators.html | 32 +- development/api/deepcave.evaluators.lpi.html | 115 +- development/api/deepcave.layouts.html | 16 +- .../api/deepcave.layouts.not_found.html | 18 +- development/api/deepcave.layouts.sidebar.html | 42 +- development/api/deepcave.plugins.budget.html | 20 +- development/api/deepcave.plugins.dynamic.html | 56 +- development/api/deepcave.plugins.html | 392 +++-- .../api/deepcave.plugins.hyperparameter.html | 28 +- ...ve.plugins.hyperparameter.importances.html | 129 +- .../deepcave.plugins.hyperparameter.pdp.html | 139 +- ....plugins.objective.configuration_cube.html | 94 +- ...cave.plugins.objective.cost_over_time.html | 100 +- .../api/deepcave.plugins.objective.html | 34 +- ...lugins.objective.parallel_coordinates.html | 92 +- ...epcave.plugins.objective.pareto_front.html | 137 +- development/api/deepcave.plugins.static.html | 58 +- ...epcave.plugins.summary.configurations.html | 94 +- .../deepcave.plugins.summary.footprint.html | 131 +- development/api/deepcave.plugins.summary.html | 30 +- .../deepcave.plugins.summary.overview.html | 41 +- .../api/deepcave.runs.converters.bohb.html | 61 +- .../deepcave.runs.converters.deepcave.html | 60 +- development/api/deepcave.runs.converters.html | 37 +- .../api/deepcave.runs.converters.smac3v1.html | 67 +- .../api/deepcave.runs.converters.smac3v2.html | 67 +- development/api/deepcave.runs.exceptions.html | 15 +- development/api/deepcave.runs.group.html | 277 +++- development/api/deepcave.runs.handler.html | 174 ++- development/api/deepcave.runs.html | 698 +++++++-- development/api/deepcave.runs.objective.html | 160 +- development/api/deepcave.runs.recorder.html | 134 +- development/api/deepcave.runs.run.html | 164 +- development/api/deepcave.runs.status.html | 53 +- development/api/deepcave.runs.trial.html | 99 +- development/api/deepcave.utils.cache.html | 74 +- development/api/deepcave.utils.cast.html | 40 +- .../api/deepcave.utils.compression.html | 34 +- development/api/deepcave.utils.configs.html | 7 +- .../api/deepcave.utils.configspace.html | 16 +- development/api/deepcave.utils.dash.html | 47 +- .../api/deepcave.utils.data_structures.html | 6 +- development/api/deepcave.utils.docs.html | 44 +- development/api/deepcave.utils.files.html | 40 +- development/api/deepcave.utils.hash.html | 79 +- development/api/deepcave.utils.html | 90 +- development/api/deepcave.utils.layout.html | 243 ++- development/api/deepcave.utils.logs.html | 44 +- .../api/deepcave.utils.notification.html | 107 +- .../api/deepcave.utils.run_caches.html | 44 +- .../api/deepcave.utils.styled_plot.html | 252 ++- .../api/deepcave.utils.styled_plotty.html | 169 +- .../deepcave.utils.symbolic_regression.html | 11 +- development/api/deepcave.utils.url.html | 83 +- development/api/deepcave.utils.util.html | 126 +- development/examples/api/importances.html | 4 +- .../examples/api/parallel_coordinates.html | 2 +- development/examples/api/pdp.html | 2 +- development/genindex.html | 268 +++- development/objects.inv | Bin 5259 -> 5923 bytes development/searchindex.js | 2 +- 204 files changed, 20925 insertions(+), 2011 deletions(-) create mode 100644 development/_modules/deepcave/evaluators/epm/random_forest.html create mode 100644 development/_modules/deepcave/evaluators/footprint.html create mode 100644 development/_modules/deepcave/evaluators/lpi.html create mode 100644 development/_modules/deepcave/runs/recorder.html create mode 100644 development/_modules/deepcave/utils/cast.html create mode 100644 development/_modules/deepcave/utils/docs.html create mode 100644 development/_modules/deepcave/utils/files.html create mode 100644 development/_modules/deepcave/utils/hash.html create mode 100644 development/_modules/deepcave/utils/logs.html create mode 100644 development/_modules/deepcave/utils/notification.html create mode 100644 development/_modules/deepcave/utils/url.html create mode 100644 development/_modules/deepcave/utils/util.html diff --git a/development/.buildinfo b/development/.buildinfo index 556cd127..c07310d2 100644 --- a/development/.buildinfo +++ b/development/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 427e04ae34191866870e58fc211b7707 +config: 268198ccf5ff446d476157fe5db16dc4 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/development/.doctrees/api.doctree b/development/.doctrees/api.doctree index 8497bf2ef0fc1cec8203da30513309f338520428..72390cf0537c4222b1a1c9add7a98eaecbc79ba3 100644 GIT binary patch delta 1041 zcmZ2w)o;(*z&f=>ej{rxQ`A&0AV^6~El5r*OVukX%`4{OQdV$GDlREXOfCs3%|ntc z$SFYo$URF`2PlN*x-6Z^ z2e=LS1AsCR_ho59^eHoCsZCZCl2`BHP*#9M0L+O90fY;avAHk-$*6_=VUu6+ba8co zYy!u`XNC>_9SdA^#c1N0ajeR2ZLto%#SG2XX2B3wI=OY{_%rtocuM8*^2oz?>W>`UeEdVqXm<)iv zzBYLwzt-kmLPr=Cqk)2LQ~a`GpmZ#hj)T(iljn=raQgvyz=Y%tq(CW|Kg%7+%JKjb zr5V~;o|^?lcQ7$7+F|%qpNU8)#6!&oECFZ7`5TvB079=N@rRo)x<`ts|6y%hqXM)5gZ(tJ9L{gbr zmY7qTSdw3as=l-&GY2TLnS*&Y^W>F`@|>j^+8Koz(is~jPvn=GT*t;exrF^ZCeP!QntV@4l_}#AP}-O&oheIdvcHHtiftjtlJFDV8mef=#K6!t#V^Yq zN;^PlM=0$ynMK@&(-6qZkj~O$n%vJX$DgGI21a}qNTRbiLlMXf-)t@y!3Y2=1>FY# diff --git a/development/.doctrees/api/deepcave.evaluators.doctree b/development/.doctrees/api/deepcave.evaluators.doctree index ef67ec18d7f682f4e1ca45c25a9425e306f98d6e..208c907b36f5f40a132d4b0adada0ff16a7c6e87 100644 GIT binary patch literal 10734 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 delta 1307 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 delta 1334 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 Wbt+^8muVm?RA}@L20GqXivJI73fs8= literal 36048 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 EKa!cK(EtDd diff --git a/development/.doctrees/api/deepcave.evaluators.epm.utils.doctree b/development/.doctrees/api/deepcave.evaluators.epm.utils.doctree index 0aad4a8e52ddcfb0c6491ee3c764827e1d9e9089..277e7763a9800a24a0e78d569f77879fe0dd2de8 100644 GIT binary patch literal 15333 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 delta 3351 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 CdJ^XV diff --git a/development/.doctrees/api/deepcave.evaluators.footprint.doctree b/development/.doctrees/api/deepcave.evaluators.footprint.doctree index 1c9f3f5f12ba0e9e4531d4c5a36c47eb7df7ab13..644d769f65d11845cad4f0d752ea4d7945e0755c 100644 GIT binary patch literal 41365 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 diff --git a/development/.doctrees/api/deepcave.evaluators.lpi.doctree b/development/.doctrees/api/deepcave.evaluators.lpi.doctree index 0e69ad993f516f3499aeae757ebe111a151ecf1c..6f96a0610cac91cfc965728a10e190e8c34a16a9 100644 GIT binary patch literal 36750 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 Rj#X#`2#qEAG|i>?{|BPF#F_vA delta 1291 zcmaJ>-D?zA6wgd{_S0-izT9P+9mC~rTjzfGZil-rtpS3flm{5&kPh`2ke4w(D^OgR4*s?d8V`A+W0g%)0<7x z@5ITYB``n1h!}QE0&uoA|f!EUa z^Y8;CDguUhH&qi?#EQ5eN>u1a{GAmLGGlSLP3rgfa8}2kG6z(6fPZJ2aaix*GTOMN zC#T;r!@%`J+cv%B!vcnnE0ij5q-Rhi@zI$*JvTvzU)zpvaWi4$S1IHhLcLaQy;_5K zgb1mN-S|Z|rro57KV+;H#o}hp(7qEMt^4A*D!T?UTe!3LkXEJB z9Kjz(zc=4gA+0@Dn8m;Bw~IXP*PNxgCHQ!2z@@TLsyT-3E`)WZlQGD6B zo^|y(b*1A!r*fyc+E^Am;aQ8pa)Y?is&&)%1y4zf=`C4-V4o6Jo*{$Zu&TAiT2(Y@ z@_Ie6j>0~sCX$;Gf< zcTC$7>@5i-Jr}suIl6FxFW7mqMCPjmIdVjiJlRR}>XiH-5WzR8b!(8-vX!-6eL9QrTU4 q_&gj%=rE z(uRx;y0V&oIA*Fgrgo*Qz(`n#LdCwcYFqb#wjr(iV+D(4i#;hnUI>K%c%Au zu9;QiE*bg0<@cfP!QQA*U(eJ$EOMX4k>i?DaIG+0<{U2g-)7P979xBzCx3&*46c|O z4PV5s<8a5+Y4|*T9mN?Q*k*RwUc?^HCiHh|A#C1H$R3!tJWlq)y$TOhSgTA=lMNdr zH{AnmR7QL=df4`g`vsI|jLF#0U}7LEy~nJ7Ntp`mRW9-{h#PzN@L85{Ix!F)k0jHnEPVqf zQ6_#Vn=$i&vB+pF%SBAdV@wHRVn6(B(e3bqjUmjc4>s;9pJif>x`&@x=^Av|{nqcQ z+fUzygx!hBhpr3KPvD}xmZctDgkRYk?eAsG9Pnr)K9;3Fgp#s0?=6lnT01pT$`Fc*bEK(%y!MqtoZr3!)8uI+iTZVU$;>;MFbyH_Mbv%>o9d=@2auc={-iOVAM=N;q;0w-XE&%)`vO3EXZo}0nn&j#X~ip;I?Y_6UP-G1~eUFNJ3>S z1r-O4C~btWuihL`(LuY_3pZ=@m1I>Y{!8FlU!Cb=wx77eV5>Mwj37EXNe3KpL^tR6 zTs~d26KAR$siYO%0q;8+$m3ut50^)o3C(e&Juq2bFHixNDmMA(5nLXT8t@(s;Qz)x zcBZJpUQq#o`l<`4NujTP0X9~=MxKYcigsa!>GEznj;iPhY+_n{v|zbHRsA_o^r!%j zRCYHN%sM3ps$dp+fm|~YrLVwT<#RSIoAtvzpVLnd{-+E zLd(6f<-Q`zhu5+^yk5)ic&o@VrmP44>1{XvnML1C|DYy|o8IGOaaWe#U}un%h3RLq zIi0w_sDDTW^}@NclL35(nTr4Q5Ml(dbl zW(=X+C`uZ{Bp)lKYx}Yp3l_)f<-|`IJK#mqJbg$O)O1Nzn&Uw|)>^(ws$kuoA0Gr! z^g>^4Rpb)lqd#WNH(B#8YcA)$X7TGJo#X8l-hPX>^Sr&v+XdD#3d=i%rJ9=9{qXDB z5cxUorU&+!${c-~LN0`7!Uxm(CbRUsG|4K9QApOstkdd2&m1~kUjD3;RJ{nQwJim_01d=`!NSD~s3bJ2ZlG z#p^B<3s#lar~L(AL-R{A< z%LT1|7hGvDkVTlPJM3o90czHB#MP29e;u1qzptrWVz*#3jw^Iy)Z^V&dw{(Ns7_wC z3bpE1#;S?2dI1;6^5(kqO2vhsN;s&;xTO-s5<5ZdEW%jm(+#rW2geV(1A8%mX9G`b z0ywOPe+8O__^JTL)(T*X2hgMj5dITz!%9%E4PRu9@I^G?JCP4xKX}IAOJod%qhJ>#x`aYvnZ$m+~AZZ?23MBj+fb;@{ny#DgU<6*u_RzcVVbi1Ln=DLj z`U|!TUT=XGdV`OtFE+ZgkO;*IxxDb(<|m2ZF)a97mvo&$dLO6J71mrwb>wDd!UAvBj*AT=3G9w!UR7QY}(v8X86}q{H2%?Oq zLyBZOB@QJM2=Nawh*=_v8O%oraVCh87)>;g7!v~t#AxE<4?O34Y;6JKlAYdr&-u>% z-E)8E+%vrMH!k%{M>o&@K=O+zjm*&qf9U25wNRZ>AuNREl!(v>6DdDsXQks`LwI{< zU$57fo(?}qyQQtn$~av0`JvfwQfDXiD=mhop)1@S-rODTVljyMcE?_hd6^WQ0V`4~ zpe(i1dYq-U#8^R8uXv2@k0~}*b^->oZ17cTsWgJ#-vm=`DOl4=gfmc^wo4d>@w5{{ z48n#ylZsxlzhjH{;Un_fE+nDL)?EtQ2m%|NRiZp~4-;%8) z+ro`Xmo$KD`{lL0IO4cwgY*oe#BkOQwv2gF8;(K<$PU{wii|Bd%VajD!~NHfj%2J7 z1P|QJd|a#)AUwkcPZ_5h{KB+p%*s8uQs^k)5>B}uMIZBXx1zJdY2&ZrQu@XY?_~vC z2}Vm)Bl?lI;)~(WtR>w(>MT?ij5DpuLGseRbdN@QOcbkbFd~^!jfC>ms zX4Hs07lzHPW!f6ED>Ug;gT$WOy80svc+^b2a;sH2s@rd8iDQr$&gX%CV zMShp#zpsUWag_;I3D!fHFae(y9+!l^R^9}+i>k%j^9?q3z>*>a$hv9wWK3HisN>~-R6Pg_Z;-i{P zPR@M9gX=Z)W2ZB`k%x}1RmQeN>Z1M$!Dj4)tPG1=JPzI3SP9)R{dWubKEn7#-Z`3Sc zW98aBdM7q$DIQ%weFxN57K!*XQei8L$=SF`Gf?05j>NeauK9e}m1G*zX#;Fjcq0PV zdXXoE`eDR=we1i@sAQ_VZiOP=j>Z?w18CM`C#AQ4&E)R^ucw3Lng2lyZm{0UMzN)ujb7S}TJ zIvFZ)y%|27`LSVc3iVixyaryJwIHnmXXvFIOjS-tf)idUtF+dW*Ny%)t3wbDkG9Qu zQV_SLjGmo)Q&-NHqZMC1*?UB0hX|yFaQ7m diff --git a/development/.doctrees/api/deepcave.layouts.not_found.doctree b/development/.doctrees/api/deepcave.layouts.not_found.doctree index cb4906d7b4073733ad2726e8ece4a828d619496d..6993d4c529e076512afb6d72d96af5f8c5ff9801 100644 GIT binary patch delta 3771 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 diff --git a/development/.doctrees/api/deepcave.layouts.sidebar.doctree b/development/.doctrees/api/deepcave.layouts.sidebar.doctree index 9202d3a184da7196c8d5c0d1e722e7bbd4c22ccb..22aad419a0f66ba374bf787aef239023670951bb 100644 GIT binary patch literal 18002 zcmdU1Yiu0XbzX|(l3YrpC|R^pit#9_qZKSJBS%ebR#6?xs*yNl4aYTVOX_I2JIk5T z?96%|5@|#3D-RR72?~4K0C}`cQvYcC!+oIW&!UeYXoLO=3iLn`WqUgfqt){KmKi2& zw&geDj_F0o>&cm4N^U20HWwJTLO%|gX2L4y(X?#06_{RfEny4PJ+j@fk&d4U&1Pi# zUN+pCwyM_5wWMy%vFXT;TvK_)j<-y++ca*P4cFN9<0x!|cFWu{f`rCk$kemu4&gGS z=f@I(XSHhpt0=LS*qoj%!>dg%ktUCtkXWVmj0?e#%aXaphF^UkLZ#9LN{P1|0}+)>CUC~G|c{H>E9 z*D3se5dTl({~1~f$Pw6l1$8#nHS8c^TE}n2uK5$%pg9xvfatO|u!mLMj1nWZ9Q4vem)pvo3cX&(`+{V?aWVDNHpd&*7#eoW9(05%3Llkm6*l7DpF z??xbd7@4ie_uZz^w9NIVcO%R9*5BKBv~li{^_};fUw7@T^)7Ek<9cXE=2{mFHMY$# zW5jwYj(E+*vC-Y#AZ~%2-nQnq2U8E+nvg^RIetLnh9riXm_}>+ zffiY&CTEkx8EZ^VxStt|a25#s)MQ_rAG~C^E=hZ+LASKP+_pj8z-(!T*U~I}xMr&% zu^q8@j_0-U@tjuhoMVfejy4$_-34ljz@@q|$L=fj(ZTSJ(vdxS>Xdd#D1B|MD5M+O zr8tcIj{TC!`IAbpCPY{)oDAC(h*E%A%VA3Ds7*Nuc19<`O>332Y6c_-xTe+er6~)_ zRzANKyRI1xq|6+VtcM(D3u-zF1#%&`oyD|En6|h!Oyh58f^!D+*O1`ydpa_0}hVK zz*!8rWw#f+ z5GpZMpAj5#P7;t6XBB^jnJHGq>fsb6?8Go1HbDSE{W^y2B~AlC*$f(@-7eyZNkV|l z%flXN6Y1 z`a@!e$j5Z<=M1uz*)dgMrM#X|#DaRNVljN9!p`bkrV-qgb?)QS4BcOyBh-DxS>#=v zqxe%Y54nP_j$q%G**?8;iGQAE9w_l8(WW@TdMjPma~#<*)-{xB&LKi%#i@+|b(VJ} zGddU~n<87CAoPRL{Vt5|x68W7jw$<%=K9{Y*mI2XqW>AAzf~Tsc4Bio9d{!{6an#gZdC>#M8!}I*eC?!GI!&fexir_MAXs7v# zPhUJsdy<$IUKMD+p=DjP(-$uyi065eWi~BrTQ2m!M*^e>y}ASeOW8QsgeJX1JmoksNvL-t+Y+%QC^e-GhRO z$cRx=M`pngz`tYQW+KTuq(@Hnzscy(e~X@n7_LDF`Sk1%VZ+(azZdrEBALHdCbRR` z)FPKP$Cp)JQ^}Fo&%OA^eQ=*8+y&yZG~a$W|NU^Bk8qqRozyYm4wWK&cC?TGELb5m zIvc9;ao8|UZZZUVnNovCE%!$x=lK5&r5c;?dKK-z1Yv%FKf?@nQ3C!`4Enc`2eEf_ zVmGppAn;5*qm{@P?2+nzUqH-NSCJ`pREdLb+UBjM--3Bxl#j53P0J4y%I_B`ke?_$ zx0AYX`v#}vke)?}!1v=EccE_ij_Z6LJq=2lBKr%LC#*)| z3y%~j?4no9sv|g|sg<^>Y_^TW3l|`PTTPGrCJ{Ia6X#*z#hX74&zQf+dlKGXCYrBi zgoaD;Ths!}shFpx??q~oKF_k}j@Cnu8^~jCXcUuh3$k(jl^zo&GFjKNt!5@2r0f&# zCqgQljdKF{NFRXx=*ZxmcPZnXCkZO$_?KB#AfZh8!P1n)t*P#;0g?z};Q6nK-LYUA ziI8a+a~ZIP=}=K}3c<=pFjNUvQU({pl|3a~aUKI+g29i|6A7ksiEzDt0O8fh<6hkr zA%P?U!!~@7n_O$hB)*BLVS^rp(B>k!k5`|{!#=%o!|JAUSgZZEQq{vv5oGr;jr$U8 z#FTnUxDk8j1blg10y-}V4&%7MQ4pS&=0K*J4$B5sdphvDW)RUaREnnBl;gt2!Ubn- z&R#Y`qE&^7bmi0%mltIN`%s!>(>Amx>}GTY$2n)U4uAlI)l@3S1Vl}qAFo^ey}`nDH^y~6lx+;vSM zoLoZjajh(xx9rH0!l>m(*;>;N5WaVPo}bhrpN_5UK#K5gqgG3|`do5rIWAII)TW%e zZ;eG=MSkZ&wQq0|IKPiSQbyQ=C7JENaEa82y>ooOHx9m1o(a!UrEJRU9X?f>OCG=m>%^P5X^A$Uf)8ctz#aV$o7r8hPYT;yJjQEx< z_ZI}5;2;2|1DJBmo1@wj^F9RBMa=7*1?tWkK8oBvhn69?t(^DLFdo^Qr>Exu(D^ZX zGVoMBnPRyZej;&xoP+Ma8t?>WMMl4p!mt8sL~I^NIFDj{k=XV8?g2YamsPaTbm6t( zzKYh4J?_b6_frOU$W_EnXX~#bWp@BE&%H1HpkX_sAvut69o^QzTOrf@bx+!cPG8fJ z<H1x|ZrRvEvZjI?7AcO63`4-URynKnOfwz?zRY?t zb#t6jH?%q=hSa5rY)~;>^W{nKK z7XfOR=TS6yg=Ec}7^);|ruaPjO;=PyowDz#x0h}hv)k;LySl^r&EX8nkXKK!Zmv8J;M4NsmO}+nW37ZS{sTgFJeTpk3P_L@tOcmp20qO zY3H`+`qBtccSKj|ElD4+NQe^3&LeP2fwgo~b4LZo$;FZN^xl;SDT{j`tI8Wv&vPNc zDHJEG^8$V4hpFm!&tDV8062c|kVc}qfIYS#o7coOxjl9;eJQ^$p+|al6lR?kJzuuT zegui;3(Y8k%aicaz~4X+#kD96&C{&=+lk1ZkXOoiV9sxv-$`u#=xD)wqj$Eq9iGvx4pl?GShMBT4V))$*6no?Z0|GRkViR=3bsf_SPQ3)m1m-L4by-BPXCDv~| zla`|JvJ6V1nDvzoN9ULbyLX1@P5zC@E6_e@TN@rK)1jcV1Vf?>TIm+C-qwLtf|eN zDO9IUmDKw$+-X>#I0BtEc$a?h!8Zw?G(h8X<&yHPq3ctl;r%XPzXeEl=xKfrLlsZ6 z&o%4bdkduJ zp0mY2oBXrIKTZDG=AYa2Nh}-SujR{NwQhbm&vy@6RH^l}C?+MdMrT9v)F10h&rWgZ zo`dXj7%Dwvd5sAp^P7pqk*SBAW)q5eX-=5;XN0+!5r#kAAz@Hsm3px`B6aIRp8sAG z6`J8%C{BmqwWn3Kd7tuu5MrSs(NGc0gHK*lg<9Uhn@3iwY@KEIMSOIUP3G)>KH&{~ zt)*Y%z{R&ibO(-hX?lx$a8xqDjd}Pz^~*SKO;-HOp|buhVSF+_6D2 z+}w^s*=d?hqx?7C2D}BTNTHe^z%`8yTIN9eCTi82H&C;(V0$2tZhE){NdXg^i=+11 zBM=)rpD4c6%^>gtU6jwFB)dwe;>sag6l7MQOmip+TP?jQfpA`gHn0T&H^)JaK2dy8 z8q5xJ-wA}WKq8kH0UUA-Z#zawG$>BDIuD@SpB)WMTrX(pEtBe>Fb&=5*<@7&k8Lay z6tPjqMwc>o5LU4T$`t5%6FY#*nz+y$ce;8ee;_PxKqA2mJOdREo47_#UASZu`}3x5 zXvQsHN3jBW9Y)2FADX&4l1oW5(r?-*>*n&gsJHBpO69PS6w4W@7tpbTSWJirS6tVJ z)TG_?w(VkZFow(Ygh@~m!OM(sFB{NWVEH_L7XhpiUm>DPq+F03)L~dqfsP#|KYjQ# zTj-iy9YjIdwAbVWL-|-2@($cdGuUw}in`&(`Z}6J6q-}LdczO4*AsS(dU6ENQ%Bu0 z*c0&@4YRxU;Cs%4o(n;{SprWjIrw)=@RSfIk-cFC4cm;`d=6;;x)pU?Og4w|5oi%F z^_yj@kjajosb{u;w7g)C9S(QB$k@>>d)spHAM!gzMJNe77@}M<(qD|B*C7aXlz$gr zb=QZtE=arDv~ab%3C0V31C==mG5Q7y7?IBacKjzJQai8*>G7Mk*M>4Ue`B-HqsA2+(;lZoh{T_hS4riuuPPQ?XhD`^tz#&s84fs{166NS&sHn`coDV zR<|u|+8&!Uy_@s{5^PqO6I{ZAC?Wx4LpdT;eNy2W7n~&^1<{INTv45lN^P>;>`0-N zPSSWYptZ9vbgWCiMuF}#)F__o&Xcs|JwYGm=%ay;n9WfSo~ogrvEY67_9>t#!tb6m97Wi#$hi-dw!tnbR z4xM&8bQy>zk@$y3{{WI<{DZ`E-fOpYYobeb z-o5vHd++DobMCpfRrd7@@-g}KmhfeHj|A7u>*0bF22a5dYX`O9FIg$XKZussOZfT1 zGG-a#E-psZILdBhoUe@(+D_UdXub^XM!7+|K zfsShUpsYmZ*c*V)$~MaV*y=%*8*J7!CEeI7=G8n8VRplg=9bi9Ydd3J_^Ld{!Z23p z27g7BCCFB-;x6H3a5L($3mLn@gl3cnMV;Yur;b#Z8QX@x*menkS88TdhVK6;FW6H<;41DJDkfThA(%ui=RtTw=XN1%kC%?ya^3?`i}Hj7*K zNc;i}hHLe76En0iu&%b0^Q)>w#~$h(jBDas3{5yv!Dn`fo?53Z_;s|XYgdhCC1@lLnM@yH|dbgr?C*$ zEE%VXAi!W}<9KOS#O5ht%01Nga&Nb$i1UQ;{tAo_aYS{(bZm9CxJVL;qxgu72Uif6 zsO6Jjx35Lm8VeW$WKRYoNExhdR*sp6yA7E+~nOFIT7?LOPJL~=KLLl$&n>LKDmIrkm1L3A)k^c zyPsKsT$D!Er~N;~cqRm#>_g14$hM_-Zdw9=*dtw8iS%(Uq|bFEx^UU27=YhH0ceZl zZ=hEo$MJQCYL}cqj^kU#^}WIM!%D8(xwz*3i>om=7wgWVg8OzSJQiJN*-O!L34BB` zlj-phUASyb3FYoC!xzIPqxA(_jNax2cdIdgNl%lNmR44YX}UFwm&eHXgDuTL)wC~R zR5DK<-cEC(Phf1Zpw>{gVBbKpKhuZVwMWYA>FbA+QIUeWs2%2_R$F=jXU0t>7!J0$ z;l0PJc6f0vv7Sr=nGIwb7g|1SO$xtm72O7O+oao|ZbM{g>-JQB>p0%f6Df7mQ%n+h zsUJ7r%~M1h3PdZKq-voTfuNK4lIxDiB(K9q9sTfN>vm~64>rZll-rP1xXDoI67wwe IDAvjT1uIONhyVZp diff --git a/development/.doctrees/api/deepcave.plugins.budget.doctree b/development/.doctrees/api/deepcave.plugins.budget.doctree index 6665ea194293392e47ae3a50eacaaf5f6a6a7fce..f97f854867f4c0150b7876ebc8528690a8d4d702 100644 GIT binary patch delta 978 zcmbtTO=}ZT6zxprC7pCIF^UV5+9|O(sa9MnRq94J;s+{pAt6qjXYRyFCd@~nN@+wy z3bT9TGMhp{Tqu%_xDdOjxDbm7`X^la1H5l0W5()AH^ZBA&%5`YbMJdu*_k7K^7KvV z6Gew3n5nz;m{ahPsGz~Nf}&(se}z#PST*5 z071T5RWI9yZ&5c%kcJ+Iah)<;XH1-5FF+ZtLIpA~4OigECCP7s925+C*X){}X?Giz z>3XUD;)=*QxQEj)J=#eTgB!7o#vR*nsHO8{`I}(6YA0$>?K$?!x@k~X^*z(VVtDdw zb;Wdj-7@dfkqv65l>87o za|p14MJDgzu;gfh$fZtx$Ra7!!;+kzQ#{3+sWd}7BONG{GFgMuk~Im)ikrNVS!Qw* zr!-^C=6RgwnV2#zZ!Y4w&#aKKB4cTB4`*ItZfZ$oL2B`o+9??;I*T(DYo};rEY0AV P+$G?~D7pEfz!ydUAN4#v diff --git a/development/.doctrees/api/deepcave.plugins.doctree b/development/.doctrees/api/deepcave.plugins.doctree index 71d73963c7f639254b4ee6b1ddd8fa7786e9e368..15504c7bdca7f75898e48b699e9cf3427e0c0535 100644 GIT binary patch literal 189451 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 literal 179148 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 JW}BTH|G&%lugU-b diff --git a/development/.doctrees/api/deepcave.plugins.dynamic.doctree b/development/.doctrees/api/deepcave.plugins.dynamic.doctree index d5100a6f122b9965e9376eaa4f8a109dc39c3450..b269e6bde72f0f4900a6186ad657fdcab497a139 100644 GIT binary patch literal 21067 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 delta 3582 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 delta 1136 zcmb7@Ur1AN6vw^4d2h`*z0OTH_s7|vLF5O>g;rJy4;LL^jDOO zYtqgQRQmfADJ8O~r~cVfPf-s-L{L2hNs$i{z18{MyCzvt4R-Ij=Xbv6oZshnewW+s zZWm997en58@g&2frItY>?vg8Tn`Fb+mOchy3>VIdHwx&7&+UHnS*=VrH|FPjb1nzY zS|x}YB;0VggCGM*?ZmJBye6}90R=FF@VNdkjQ_^o&cgKJc+QGzQZoW{ci z9=s{nGnmB>@^uE27%%TD1&uP6fi$9>){bk{6scjmd#g1KURVHMt3aL!()wNFWSyhn z^Fbq01PRu4Xn@&vicz-Yi)o5_!Q(|e9xr$*LvWUyBP1RBSz7&@Tpvq&7);?ldsiV` z&4qu#r*@+EmGLb`DNU8)shWW@CcvT10q*unJlkmvdo#t#6+Os&<2YR=^sTG9?* z@L#|wyNxdY%x*7dXUVb46)DRRj5(Sp$r^@A6PDO&N;$(`-l0BP%1)!2-$T=)G#IL1 z2ke!*MM$L`Ub;9kKLt3Dl^@B9MK#-2;6It(Ea(269Ky z?X8obo6Jr=D|pOX;eZbMECdgjj3Qy$M0+OVEfH*wsnnMeKZlUkoQ z8u9p)TVyG>=|P2*Iem3CV`hKlFkR2_%v*o6Aeb_t4ev~K%1bU;q(?$E_eWyUWGWs_ o&~4Ng#u89P7gJxSL=9k8rDSCAU^IzuylzYdDp@njOb1NtJNS-$O8@`> diff --git a/development/.doctrees/api/deepcave.plugins.hyperparameter.importances.doctree b/development/.doctrees/api/deepcave.plugins.hyperparameter.importances.doctree index 859552bbc42dea6e71d455d4a8adb26d7e11f3be..317b10fa89b273c788a4727db6ed75eaec9307f1 100644 GIT binary patch literal 59216 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 diff --git a/development/.doctrees/api/deepcave.plugins.hyperparameter.pdp.doctree b/development/.doctrees/api/deepcave.plugins.hyperparameter.pdp.doctree index 3fc9cd1b32158e8ca6444e478fd2e201800b2f27..4954fd5197e874e1690f6f25cf342a27119a0a1f 100644 GIT binary patch literal 54139 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 HSxx^x8Ytnp literal 66133 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

|&GMkO4j*SiPK=#!_>idfTmj$UCltC|9 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 L2pP*MH241jI%RKL diff --git a/development/.doctrees/api/deepcave.plugins.objective.configuration_cube.doctree b/development/.doctrees/api/deepcave.plugins.objective.configuration_cube.doctree index c29e02179f88b11865bbceae06158df9453a44b5..c3e79f27743668076d86dba9451b1306ed3f1f22 100644 GIT binary patch literal 46859 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 pwz{w@-eBaQW62w%WM�t#-ZHYmg}}kX4K~XbcJ6EtgRB{{Z&3zTyA? literal 66768 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 delta 1323 zcmb7^&ref95XX57Ep2(Ulwzy2&?2prUmC?<5h6ki@kdg{coGOyEQ}jL1i?TsLJTUV zU|^m}A&7Y4AbKD@=tU%+j2DA{fWey~F##pUUm?zWEe}Lgyu6*=H?upR@67Ia^f2Uu_leWn6DX>#Htt4OvJ-`Z1@ zan>m^g8@$@bs3<60(t9MXv7Mm7pIdF3};#)H?oW#bGb<$)HnH?{q@cMCXi4HUoqPR zJ&Ztnl?2ux?qqh{k!%sA9;sWpDtT$UF`Ts7@nf<_3!^k0#`1Uv7F+f*n7|IpD1#6s zS#JS}jMdMK***C_8g+jLr+7!2WpwNZros{3cWWGiIwMaE(95NB-Z5u(K? zk=_hXg8Jq_-MNbm{_~9zX9Ct_LLsKKCzn?#2Z%Q(>R`U-qTcPMQ6hy(4jjogWcU?>Hsz3VR{M{Qb{c^E`mDp`|(MRajrvZOSe+8caWz9po-JK5piCs;>hl@I2uJ9#kx*6gp=jK_nD#=fTn>#_kJzZ zl2xrVd5t@D6I9Vud0gmbRzSLs%2*i=xl4ppBa4Z-A^Er|IwnO&Gs91wLY+WUD&rC* z;Y{b>Cf|FJ>JT*eMn+&VCo0$Gx-z_t2*$sBiQ)1TMEX e1zPBxQGWEcKn6WI%6||skYC0^Ec`hCtMC(q^}7iG diff --git a/development/.doctrees/api/deepcave.plugins.objective.parallel_coordinates.doctree b/development/.doctrees/api/deepcave.plugins.objective.parallel_coordinates.doctree index 224259d4df6f100d8995cc36247626aed7ec59dd..b5e5157c76a24eebd47e911f9ba76e2640bc9942 100644 GIT binary patch literal 46933 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 z zrL8=3q->t%{VcFL!$8@sD+QG4on1CgHj_2k(pyrP06BU@EmWguIp&K zNwNM^8P>}g&PggXAzdYgx%_!&A*704A8Q*^X9%fspVqjjx!@dR>futH5y;d-D3pRs zQL?V!DRVscTo|H65kdt!$sVTQQ13|8nrk)^hkBItFgvS0r7DXQZ|$9Lwqu%55C-8jk^!@VY)W+BiqW08!4-RpYCQ^`#XaO zZW6i_-7AuwKvlYeX6pyFFW{%IQla8*z(|9i(ngQ|8CA!>U#8;>eEKfqT0VgSd?Er@ zSQas$NysCXrbyd4umqWGr$WVLvNZ5%vT)CIZ{mIk>|7T3l<7})qeH#m6Q$}(o#J)j zViMrfixP#h6=gZJ^?*+WNYlZmBx(I!kil4#O^xP)NQX+PeQxU#e3BteDey@~r%I($ zz$d0xso<0QH4Lgu@7yQoDgb5flhM`Jadq1L2K)O>_V+*7-*2(M-)4XRll~HO&HzZn zwo_pf6_(%5FiNyy+o@u`T{cXVxt%K3%&OugI@;k_(RXl_ffc1#i3E!> zcR|Hi5J!uoo&%S74H~78sxMlUwXumelYongWme|=KcW{hl!&|A-U-;m8uyYA%u`A* zXBIHpG8hl4b9pakikqp>gmjp2LivDEAh#y<-`d3WDY>IbXxS3BG%W!rGD>ko07d7c zPzq2)$$h3QO8|ehiG@@1(&QN*SgP?Y3S8c>vy z=WxnCr4`g4<)4ym=gyB9DDmt*%+_XSWJ`GgBV`o;(E!W3A^?$xs&vK7)(dK107P{v zRNU-ScO9h;7zJ`FX`Cw4bta9IjBoiQ3W$hETw!U%;Glen=&fZ)lT!H;DpXu5!?kL4 z=B4aJI_gY1h@xdujDM_f?{r_{-hg5yU?Q#QLN4X6QGH$%4E<$F@R$Ab$xUj+(Nao~ z>kuShB8PMt<>VI6$4Dz)!7D2th#5`Dm9DF^0AuL zMZUwvU#XYS`2HoleRju6Y^q7`>#{MEeQC?R>1|En7|y*$WiR$|17h;!+i0;Dl*ZDF z$_*GdEE3UUT&ey}FTKBeR;s^)++0#Rtv^A} z<*n-eOP1dK>zCgB?2$pqs0W=<#^!FNUUQ8+i|EYri#xXL?L3OA9*E}q@Gh$X(HsRg zIYi^*Dg&a)@~aZ3*;||$aj-_p5}3dbggfmE*1YJqa89#PcaB=dBy(8Y045C_6Kz!K z@amdj&eQ%3{=l$t(zQ{w&E|qti{53sUe)sWsW)l$Jbvnr3)Z9z=@q1s0Ged*lN*d9 zUYq#8Fk(QaCj?)B9pE@!oaGcd(dY1?W_{71*E+axd@d=x3x+d$+w3J22u!^FMX#hl zur-Ih_Jw0KjpI(ePB|ME&djUfHn3S`TV1;cXl*P!!>uTld$6p^xu>bb1qX1@ zup8nsZ?L3U@oRbZ1DY5Src))b&@+qLy@Q%AYEE*Z_$U>ckfQ^2GUfH6SIIp~VsDy# zZ#+SJGxk{sP3R3p+6UrWbsUcmB|{oltf@HkmJ`!_tQ0Wr z`sDnd45i@w|Ib*~6@la~*&OF@F6q*ypG$@M*|c);%vNI~gcuUU_!15N{WB`rUR9>! z42!uOCHi?+0mu=7D=do=fZQ!*NRu+Ti3$~$$>@tQV&94Pt@j#z-x{Q>+U&|M+&vwU zD~axhn^>zl7)OC{D!yN1(xOSA{?;I+>YgJVbKD3PXtdpvD3omuI&JPT6f1!?vPR31 zwqdXS{&Ydw;%`JgygIZ|qvdE@uWw3Al9umd=|x}@bQQE~GLlkuo!h#^SY^VGGEKLn|PeQu7FN?dSQt;?kqpHGBt|fR>iZTTgrPIe*yqb0B zvjVtih9!<)QjBt+BA%UfXzRj0T9%DxDN=gytS^GJ)xfhxh9#c06IU5{R!sXPh*iM2 zNNVD+B`GS53ttwR-WR#L?M5sJalk{&gXnusG!bH-{K5Q^D;Iu@$>d9>lZM%>@#NT< zhLcfL`#UA72j-P*fPgP*LOhB!f@d>Y^zt0AHrq|4ZE0GoE&$^H1;Gq}Txu%vVg4a6 ze!3CPC~8_&%l8Sk0=$I-qo>Iy%jvK>--OG5X5JeG+Z&2wjTWAbUK;e>owaZ+i{orH_xXK1WLR z%qK*RZhOkAtvf{}*yqbMF)t1Mir!-qh(>g;`uCzT{gd;teN<>d4jqU(({L}Pn7j51 z*TZ2}SUK?WNZJ`sRTmGI=^~pAA3%wMQ8STJFlxSZ`T#x$a)PK;lP2fc4JQK~*l6q*=6k|-39K=q+Tr_Fr; z#g;QM?oV2LVqAk3m}_1Hu?1Z-`MFZAIk$BQXvom16rdr)ZRK`T z01f63asUl_&H;_{MkJuYuFf`~ffHA;X-sVNT`5E(d0zQVD+X+cjxHP7xGHnbDOrJ~ zH@P)zuOSj8+;JvPET4vc#740qM=@QQC=?&Xa$m8d_VO$(jvCAzio~_ziE8A%A!5+7->Fl)c7L5}O#y<=OH)<>&Be}Qiq?$_Z;?BaOGxe( zxw}v_&)vs0OT1BcJ1Z35A}1GPX(kizxc&r#lDt)NII;BZ2P@V6p-8KG`X74)0-}3G z!GlYuAY3{H*~6)lTF<7rbWJ^ro95C!(>)V2BR=YCwzcLOXn`+y`-$ z0WHQIki-_B+jn@2o#Zb43SznEp(z@E`htsB-fRI;5{OURJZ{v?z+`|P;HDM&9@Q;XZrL( zdV%$lWU6(`q}^==PNSC zI7<*Z!Lz-*Rfh8UvWDV*no97Ed!NB&-Vja;6t9KCA$wg@Lrj&Z68MlayK(QSGPFqu z?Z2tegp8%AlRqCD_eQsH&s)f&$qi;BD8!Jko}=jLi9U}&bdkGpFPT3(0^kmH+#OjqmCNTXMTE zxqLaNAY~gLJxOqRFZqbVG$=z&R@GksFJRrurGRbf>nniWB0{D8r#E9L=eLaCY(Xb$ z8)_7;$~6WV=_;y@Bp8(2TgmUcGWktU68wHvW{*`blEwP-_P0y%HordFFuA^eeR9Jj zIjFoDIXPYN4)cF;FS`=oSa>AC*?d8XcbL0WsGl!YL;OxM4XIqt0zT0k1%zpjl>FXa zrgIEyd|PpT6A>%S?-I*EA1gze9K-&O3Ki%3@PaqffUntx=eR-tp z(vQ}(zQc~DJ*n$IpJfuu)ljAcpX#4a8Xa-8loI5cyab$OTrS7-{6b;}ot%Ox0jB`Y z-$Z}$+253J3h-my=s5?RN4HAAnO&W2!1-{i?a|(ZGlexDSP86I^l{lR^HkbATrxld z?N$R=o`fFgLuaA0+h!Am;x?BHEK_@V7NvkB8qfr=ygOrX>i*P_RUh~5^72yYb+9XH!e`ZkjG*f;J98y*^Pu8wKEeU#d2qS-|-_WoVO=^>0(5 z2^n&c$t(|Wrh|)&sq5$PhM!ptZtgVMmu(4Jp$BZgH=ALl0;JIn07RRK({P5jl@OeS z>IP7V0nqWU%~Geg`! z3K~*zi-=jV0~?dPf@FHo{FFTBrb%3JDOn;rq?CC6hCVE!e1zx!jM-?;Q3lT!==W57 z&vB%t$uOlXhJRZr1rV>|-^{23Z{vze$)yyP?{*a^6|SkZN-F#BCCrbOoK!cHJq+|K6n#De51^$0X(IG(Qs~-Xz<4D;iC_ z!rWa-vk#$AUUah@-o9};yrm7pf=;z}n7I4SrI1;ayR;8jayPya`2$O7_HWN1cR#co z?qYYc)LgkwnRxq|r4Y$^3&#<2+LWsMjWnm7l4pCgI4GuR%3&vS_jlNb`mjIlu=DGq zHL9nXW6yR(&<5){+qfqRrytWkZFW$pj!O!R`1kX&@HSai;4oay;p6>C)6s8GM~ zORZ5oha@CtY?xrzq7$H^IdxtZ)!B>6be1hwT!0dJ&PwAy5w*hnFR^BIT^Z7382myi zR9p_rILPCc!rfbj`%gK@BQx$h#H2+oL_f%bQgs)S5+kEXVia@|g|baxIkfe>0n?wf z_$XG8w)hxy&+5>Yd>N)cZPCjvG>9Zg%lE5vkjITo{MnMy?3#?ElwIexE|(!Cf+eB6 z{6bM5tLDa(*79L-sVr00AY@?D^eALPNVR$>{l5E-wRpD&+q-%pop(IZ}R zimz7>RO{F&8UH{#UrhZd^__hq>+d5f*wqrLu($R~V#>ZYoRw>r)BL?@e;OZz$4PL` zF>4xIGU=?zIzHs?wQEk(3@qyFZbUkl9PX;3Got8BRCGobt>{HfdlE(W9PUE<>=An$ zr%5u<#@-7SZO9vj!a?8bw5wLv-W#3=45I1R*^bT%7OxiYD!AW0*_{dp0xvM@-2>~w z5t+xT;kHBVtq(`5{D`)SsOw<3Ri@OPrqw+dZWdpm_q*Yanpf=vPTilu7BD)|t%l`; z+t{YC2!{;^`Nop&L3{hbaCpILT5U7%+Nfz5TazuklhkP8W(#kyf>w^=c0}BE+I8G* z3%qJ&&a57#r+(Mn1dR!I&U;=!he>Kr4y+Hi`H)Pr)2N)FJ*{1&i~^ByTHtb{fy3u~ z)HlvkaGW1YsnDU3*uhB~a_R9lQ6Ng#imlUL8{a##j#=Q{hH%6->(T8%xWhW(1QmL{ zs^iN{1K~i;n(Hi}zEJ^ABS+gZ8%P-@jL0I2y7z~pY~o$P+29@&XrUVpcY^upYo>h% z*XPF{R;+g0YgcfJX{~Ox!EWkmHRy)hIh(aw23RfKa3b*}QHA>h*iJag>s5V_rO%H) zNE8mwAsV1)z6}=DK~p!}R>u*m9dp3~$7{IXU^TnpxoxWo`%uTAJB-tVICx+lWP&43 z4T@^bJ14NZAC8)xz^kaFaDxNg+E(i{T9ruuz*v^xK=s;9vreMh&Qh3WllWCq%eOi; zuX3V6`gD$UqUHG(HbSeCOiQXk<(Px7u`>PKUa2`gEe?PX(aRxe7qGFdAjS{K;vKJv zO1Ft@73_`#aWMWdx6J0xEusG~{%6j=$Ip%o7#cS+MK)5B=R#_ek}(`VA9?_PZU} zwGT#}%kKGYrS9SE3(ndJoaIL_tJUWA1}-xeqV&;D3r&oocYzat|J)CphW2<>+UTwv z!%lJ)erGO`&uNhI()%dP8aFYQ1f6NjSv8pOBD!E(R)9u!Rgvpx#cG&Ny<*mCl`1p_bv@U9 zDEDxz#$nkiE3`9KKZde)Kx5~wWL@G3!UuTgs@EY8+6}i z-C(rZsC1U?y5D`GyZip`z1`_xtYsZtYh|Ev({O1>+QM5f=4aT8>?m2 zYIg0Oa;4E|Ro%MfV}#Ten%Z#4K0#y5)WRCAg$KJFu3>aQfI8cQv2qBuvpyIW&>jpn z)ZDt=J=j^Wf^p0DTkb-K#z0tE?^fG{fssnhYPazc&qH-k-%vKOgL zCm8XqCHmBLwmOr}Cg*%-y)zXYnRgn?_I#^TuiLHps9-NLIqAB=R$zxTm0m?Ca$DWtSC$*qPR)LODd$kS!PUIxY~G5_@Ik+8b)3tc*$8h3oeMx6@WXJcv(R!Y z3RJh&9@dhHLC?|*UIgttq!0c zS~sxr!M1yT^X*sM`}QmEmH&3ByMs}8!MEodO&|Qx_U)?QXw)iJ#j)paIq5r%`utUM zubaE#n)wq~zjnUnF3dOCTfCfayS_c!1m{^xc01&lc_C->p`6W2Iny|%d2$bN8|YqN zDm51Kl6meHA-ww|(cN>!p1oGbZ?rqh%U0{;K5!&x7fc8p1bLoQK6iud%C9o;tZR=J3I5zsOxDMwM|xLfs|?tyWl-ZH4?fkEnA zg-RWm%3x5cVFP!m4Uo=UXjD)33=}NCzSTJ1^PZ_$lGns4V?^tvmeq8Wih;Wa)CNE7 zIg)_S(%zhcnne12NA4-zGkwo)Mwn^npiND?4voH4J^{U`j-_%M#v<8cqy`be9HaE_ z{H{~Q3O$1U{#i^@JrVnzW*qPiC!KF*?8rRyhcTK5 z`?d4{3PHK1w-jt34c>*h0{|VAw&P6(=P7ebsn)13@tMMkOKAnQ%kkQ3pO3Z%2!33pLnr7lwa_f2L=-sO% zl_tY%O|SuOMXyyvbHEn*Qf|AjhW$=Ua|_N(02JcD{Rp@%tfp13H+(DRYy?-{z4u}t zw#1&&E{2$0`(|hg<2}Jd1EKbm!Xl+z`}V=gW&X)TFvK-isOG(k;U}qrr;eJprOX|{ z+7h2xCg>?@WH#1_uJVJm$GdU1^Dd_#~-a+nYGy;jNMbB|TJUD3cecPE>P}Qdt~Oy<$Yz8$wJcIS|vqM)3A5R011pu$jir z7>xba3<8~y`{RW4uA?^+31bWiaSS9HESZcM?=5}c7$rD35Tn$0zwzI07=N%sG53$T z_VG%i3eC1vK9;R|#c8w@+V*p!$j*^g#x-Sbx#aeD;Jc$4x7zjY#Ngpga?{KC90`^a zhli6pnt;4>QNkj>8S4T-RyPoDa(u zyeFw~T0oizHmM_0`hS0{e_dNoJD=coJ?z|BK3iylOcn<$d+!OfVl*2f4pR+v?`hOi zY;{3#-C94TSnJNeXXJMN10%TerQp?B2oM_5XVU}$tP}5;=1ZautYhz4qA@d&y@%e{9@wImolB`!XtWgCk8-;*ruj(6&>CLpWuPTnrQnszotp2KDO^Hk2uB@$0(Ym#=J+{bc+yM6x#!}e zWQ@~m?FE-)(py-@OEL%}XnG97=K&Ho2)(!A(R(}o=q!03-sE3j^X{kC$VTSYbnRM| zOJAg7q5#Jb`>rUe=#!`#*G??Z!qlM%z)l3}tB5pr=OK-ECzYP`?x26Bq!xzCiC{>M zeMBw@!m8Y&C{6E2u$Y2Gci)Yu)lBL3I-=10@g}GtdOCdg@C*#9*5Tcy+1b(|uwhu6 z+gByO5xtu3U@32R>6q1Wso6GXQ?_s=;s#~3g{4CUk&4z9ZbqcnBP98`kksNxs^cGE z2J6D5X~oK+*QzWyp}QnB>6&1h9In0GbgZ`9)&?xmCKp6T!xzzjAB}aQ&pR=J^G@*r zzncv>y{PKMHHuV7ZLY;7@iQRK;a3I;6DY{;#l(@ z!568Vg0*)`Sn(7A`BAE!RjWuK6WaGaP7QHeM(g0&;vK}Psspqhd?-O;&k;~xF4E_h zP{}m!tCaITg2GAuX$s}Og5usY_>+TR>t@1*ReFq|`ySdUNHQ}HscgDo{eX~aVAFGp^tm0C28GZGw4D>7K`NWh6oHOw7Bib}pqWi_ zDgO~M>8}>)b?nzJrpxp_AUxJ|+M;*)ENe z`$VSIL@IiS7yS*^s&_m7kv6Vy=)Aj>cfrW5Hsb8{(1QzqMBQs z=~lQQk;^v4mjc@6wSYdQq9JeIpi?#7;gD1qM-7vBC{!TOR+$PLITcFGJ{Fo%dl!Lr zSsu`&Grfx{Wv9kg<{a;DEH@i<#QWr4h`1Ly5yZ`lH)I~%3fu+Jt4ZO!o>7zLGu4@+ zx0#ugMVJJ!mMPYd2o?HxX?A^N=ia=SN zlJO*SrFYY!VzjmxF*Ejn=ryOg_c_d0Z{mS=vH6jg8A0rgyQBd?M4AKkF{r=mjaj}e z9_tSEhJ4&2U(fO_wWoqj;-mb%9VJApyd4(WT5rgAvK+NU{k3i1$8IjZDn22WPXR59 zL&}i%3L=q<6jyQU&5l3dK;)s-3Ph@dU2z;TY4b6QNU6P?)-dF!V;Ut>81i$mO1kVC z!;sWpTu#&#Iz7@O!jPW~`wLz?i^7m9(G#PP+v3t9o$1~W(X{+uLS!X{AExufAS1kc zFHoy22I>7m38lnVl)bfzX%+uAlKu_zW710W4~(FAJJ4WHxLZUNzmKXWD@x}x5mEeZ z=1Shh=vxgPCZp;Mh7Mny7CO_oE;(`-0n-yX{1{MlIwFUoLvZ9+w(Qqe@d!FGAOt-OAG+3G~_u(iHV7P?4l> zugir95&7GPN(qradad%ad5tLw>&f9I#QEM5YtkqpG6Z&r4KKZ@>L}%n^WBNILl24c zR4ly5QKLn}QkRUIMS#oG!M(*hFw@SkKKNLXJ|96P)6}g}%&Vbrj`-f=D4vsIh85Q$ z&-gx-)9^Omv@HSu^%=y*Ad-PV*1~F?N%biM$E#jsNV)X_C zmD06IlSZJa;k`I${guvIhN5&(6ox16$;I%--eq`Ct|R3N@5v>=h?x_@d(8Pv4DWgG z!4e{KPQCZi)9pZl_rCDy2|S(hy6o?h?C(Ekf8WpkKE?iifc_G41`vj034urh9DE#Z z)e-`=(XKcUmzof$b#q!HarKz+XNtrfi&fIa%ovHI{!GHAM@U2@&I|iHtCChUswalx zSlVB#n352ve~C2uqanUl9E^)l?>$1Tp6+1W(?(E?!MG2is>$ZjSxp4vK9IRmPcSYS zRcA05mzu|?^G$LzE`p{f8fODXrz0BoRrJH7aesuTlxSRnh{$kUY95~kzaEd1Ob(lQ z37wKX)i)j&PtoJe#{zQZLXqsgD0-E4gRWb9{i~_7TqS}K---w^*pS?h^Wa`OA3vl@ zQ&KxZiG#q@!YyIF1?(($vM>`69sO>0od14hk>i-BhH{8&N4M z#k|W=I7cMzAd2UtSo+dvwFq=VTw=bt#v}bAah)RlwoqwMSUsK}tEqDESP|f|Ak`4$ z_+XJfe`kOQ{cwJSrnBj1i$IqJqsBa$?x3_v9i+?gZ1ElnPvHBC^!a*J8q`$t zMzo!C0#D_MJBk1&q&OCdqqmy1n-GahC^OwJ)h;yYBL^|wjBz!Z1%H0dEOfI-i3~e( zW=zX-N&xQ9SCd@XQDaBIm(sS;54xadG=JBe&UQW+J+T0$wueE>Z-!beFMr8BLW-fO1vTTuCHL z$_3m=FC|1%*#d$gno8e!H1&Frn@3aG)0vK@+O>vNEmv*2G{mk~PVxlD_G+E6%F{=2 zxawW2k<*ww))fa-_ar6UB=p-SIbqD=C0Pz-CGS2cKHi5{YrMl;ToMMYe!{QiZNvtd^`r9Dgk4kdlKt z8cP+&sxR5qxza7I#xWO1D3mN*p5xQ~aEmqjguCG4sL7M^piHD3%RUrI|E?IIG;eU$ z=T>$tWEn^7+PEwO7wJTYmIj-(;W62S1a4HuthD{#V{NBfspNtFfJ#q#G$0n#yJ2;J zkF-J@)O2~paOhzA{}-k|VEjcvCSV;GdEycujpB!IuGdboLxMTGwK?zMXx0Tfu$7K5 zA{OM!N&Hu->at5majRhIxLd1H$z>ZCk5%#0cc`&(&fuIkl{+j>M{g6sfP0BpZvDor zewtu8?`0y!1qX&em%nF{U>2HR^5Sn$$OxZ<8X0&N@l+nzho>8hTCiHY8e(=Y5L|S-A-lI?&eEC z*Dm0oR;%LQO6ECR1XA9x!-;XvC#w)1P%PUkQG1K6#xfHOI+=K`bYmTwx^0v8MWgO9 zT#rlLmU$htGgE4iDB)lysy^52KRFe^a?OFM^-RkKptm-@h#aT^0-*gY_>I z>Gf*^#OWXA$7!l2c&P|*Sx~Ams7z~8898FwpA{LyPX~zLzb=5_wBY^5P5RW7J~@zw zA?6W|U`@5A25NT>x`Rtrse^R6zOr}^@oBv`bG#+*C0Hc#Fxg<|k!1Ul-{XgoPb7a= zI#|j@72%o3M}?j)&tua@Oc8IXpC>-){o_6giNyOVqS2)H8dlVME&h=x>v0VB;~LOo zZllu{p^MV=^>A7F^(5EUPx2c{ZV_cl;_yha?BTkKC747TeQT^;DH%QQBU}WzNFgls zhnawY0Q&7C^jhOmqdB>OV3s4~KcZnh9cwC+X8jNwR(jEu*gF3bZJXqlqeRnCsq^w5 z6ah})+=x=cCc6Jrq|fIEh|m}EBQ$-I`LiO>Wx^=LQS#_|dX8B1FN^f~KL?1>zsir% zRKsI@vo6Z%LZw(X0->?Fi{5HlAz|)HD05*y{TERpUc0|Of3Oc3a_aNf@#VxsHNL;o z!ZJ3N(fJj+8ML?zC<((_{*2(gIu~(-&b|_r5>{8}wMHGIf-&ms1F@zu@yxHYVWk&c ziOzmA+BWHIj*@ITyHW%=fpa5D4LZABq|fF65!%U*&~%;sXc6c#VKiN5|89{!KQKUy zekeaiQ+4+56#-5lG^VrZt)>+cbaq0S3;HO#NQK2K_gC5TeW=i*vW-o8bKF|LoLTGX z>W5ktJA^5Aka2(4D_GH0*&+Os7$wX@6+47~M3wr5Iifo_&L>NpA`L8H#v^1Rx+`)j zVd|R;MU?&fJOgI?gI~@-SwRB=Y?Wz{V}J1ZTXd<&M2lBarR=oWqI-hO_MDC{gn%4z zhv|yUV_U(DDta}|sk0adGc&Xkdg!gDPhwLd0AllC#71w5)kw$nO5kCgW&%gw{+k6J z-CH<(df=f>Gr<#XhMmTmMI0QX>SQu|86$H#Q53yN0+35)jlIi#v2xdd+&E&cB=*J1 z?J$u%ChUu4Q6|H_So+TQ#dZN1-xtfC&h)<6yOeD(tG*fb=2hDaEBDn6AN0Ex_{5n7 z2eJ!KlujgFUygVRj=~b{OWjdyU~%k z@k0(awut+?@l>}fcDqf6E%vrxb$pg&U9QE%&ZKP5m2PWbn>=4;Z`L|X=-X|Niw%%+ ze2Z?Y?U#HP`z87H^(}0i#Q$}=ExgV4(V!l!)K{#EW6!Wh(Ha10ms}rhN}%~Bo^Z@! zSs(V$71^@c)mv80K^FsEagOTMslJm$1$L6lv{dZmVdo=<`Khl` zo&Brs-g~icpYZpTc5%3O?VBm>rCVFeZFi~MZdw(4Pbn-@+O=;Vyi9Wcq40)z6~$8g z9{5AmdYR7teJNH+SA52^f2lu{r0Kq}IQ#d-u)pA&XVaoV$X?vJ*Yc1zsgfd%e*I-+ z(EP6uK}lJyxfW<5Tzh{@ttKpJoSVd~oX7M;*Dwz^b9(NUZ8|%~ILmbJ<~XXF)V?;nzp5hRs z&x{e(dJ=Y%IrR)C?3Vgz`IIHH2#}s7vTr~HPsb8j6}00^WHmgcERpHjN3M~*svp#P zO0HBYa7Mo+v=+R*hmaV5>RCHefpTvZ*Z}4JPTdgwLE2@_bLmP)xOT(> zB~}D0HQS<Vnhw2_ z)#I@S^tm?1(lRNWdSy$Q^Ev67dE~hg+n-($3>&a)J)U`BJJUE(qB!jsgGh@!yQ1N4 z)>uCCxVOfHLk@SdCNoNNUs=&8CsKqj!a|&L(`SF7OTBl|hY$QI)v8RJ7pKelahl4s4-^3|3rYQ)7|o#u{#}tV{J{V*{KfnjPTipXts=m21Z#RVwSzw^-T_<=E#sED)n?Cx z9q4Qajeb)eS z`cQtHrrK;DECO5>lp2`yQ$_mx!~hZc>HG*yXVR|}fo_Eu{dSQ)zd1mRekVUhQ%$I! z6akJSR9Dn#XXgB(cn5JCjk?w5#snKJq0FTjr~YU{k2liarrC+1nY>6cy>i$zkBRW6 zYSi#0E*La3rI>xg*R*a$#7I^PjT%~f%CNRIZpGRpThO?y6-HIXCjxqL81S;}st(((fY!#OmYuv6^ZaeY6O0 zS&(XA)6W*^^D_fP=;!hyG@VWVun2TnFlyAL-!IbZ_Xdd5Kh2NRR3`nKBEV%qsews{ z&(-I-^cjcdOffmFM< zHeAiCE7zT;>*jR&uE1E4n_5iv%HJ`v5vQop1bVAY9Wh@R<(2y*Bel8nw1A~_oe4BO zMJ@wu@vAH6P77GEt1A;W_4E=8dY@iqzq<1J(*jCf3Ta7yJp=-CDpyx>c>C+FUog&2 z7c510ks`>YyNtcdOhCC`I#(v3+#Vn4rG!jCww1|{2}s|0Cg6P_H_rrQPiHz4@Nl!$ zpaUrel>~TTHIe|u7+0MCH=UFtArYWtQ^|vR2AT2qR7~tMW&C|4R!Ns7W5yr#XOgHW z!-vFBWc+o*{(`TcB^iGqFC`@Vjf5Y0JU{#$&8MFYF|y(mzX-YB?@_A>DSjIjrW6}L z)~fD6{>;7?jN><6y!lmBHJP3|2Z_wSFSAOkmf81G@!|hT@!_XWE)mQEfcLP3?;a8m|Y^+Y%+da&ExE10Wq zBHX<2x=UdW+yXM7s<_Dv7fwQC*(NTw>5FB^g$Z!E>qUC!l>lC~|8>nD+lS8*-_Ayb z4I)hlL?8q^7K|LXT6MR+q}+KI%+M-=j12P(MY%ljPj0*UAaWyGu2pm2W-Zjjy>ijQ zhBrg4bLF3}orqF%c`4=Xq8b+*SP$qf!=p*Z(%d}Fi{Gmt1GXtO^8fPyS++jkZh3^V z%F=Shv=pvbVpdAx6tRUN5AX(}ih5q8c12BwJis@{8Zb(@+$BrBvdsu9$OANwJXaoI zc||b9^8n2QTZKHpx2|Zosd<3rap%qhd|*YR?4Ji1A8xv}1MNdoi&R)6&_LHR1~l`k z$OF7DQDNPp*t7Cj)xOK%YSN!j*XpZC8Gk$%?!+qOGgN6x8s(%_S0fK_nhb+!@)Z4ufQ#xL6O@?>Y?)eXR4b=Lp2-a)Br|F@2Gd4UOsdCDChDiJ3F>a%7Rb7;D(f zFd}OFEjGyXqUu6y-fX@9hPK0{O0q0t*?J*@v>c2c{3HbM63XmgCP|FS5e4Hl`U&8q z_k})~Au~a2=KDM=YEDqNl+T#zUOt=-#y9Qpt%-EdLn33!TmvD6@@E9x)>r5(l}=6? zv|!JTsFbkBj$UVHPvgFjSI3$%4@)rQMQm8yRIUCrHiqh(vV0sYstU4iKRS^CL8UUr4nGbeS+p$M8vv>gNDKT>vr*M-5g*4(_E*NEeNf(`jEzmoeFmS+ zpyEZKm+TeO(k=}^>@#?p&jx)BtPJ}Mz8XV&x>}_Eg=zI4sZt-)DssnziQ9y;j>VN~ zcqL4@o|5)CqULw<43Y)d|7!+n3cM3AtBm&?0rtPn1DeGDUs9#)_%C|I?D$SyB-43g z1yg4Hh}i@yZW!ZWc7zs7r?;BIh|PIqV5Q3w}&$GazPc2uU z9(btJOz?!!WV-t$4vtY>GMQb^$ed0TQb0mxNdR)mtg&|)SeA>DxdO{_xjB-@gupVh zA`O9M`pyH(%RmATEVHN82rQdn7boTJ#M(TUCht0WWMM45<}~-thAK6y-R|1zYPI*C z4H)*@XzcH$r?-btu&07hIGcJYG41RP=4CW`mS2C+o^336Hm({wX3yg2GYjXJ*Jdk? zMyu-9E#IcGic3PGs&k_1Tv&BZRxPVlEqSj9xX&4PCY|*hOU?{Xw9d51i}PU{omR!} zIy1q!e#@%2YwYB-GQyKfIApKg#SJFGkl*mFTKB-3U|g25tN7WW{?-OtD*T$yvS{mI zut~nD;Wmrz!C(|;2KiV#Z+C<3)kdY`yS4Tl^0Ml_U9Tb_bO%d650}=1VZJr4d(hc> zFc@31>vqfX8!fan2KUg$nYPPK{Mg7lETfmB_&F|qc3L(3+Uz$f^6bok z@E9nEzC?xa#U>n5*l79XntjX$;?@P@j#UeP4h7ro6RuyTvw3k3wkR|d3{~xg&Jx<& zB7zMl(Xy>&ycq-HD>i}CeK^>{oanM$uQb3tOWk0s<1fx$GmGPZyTSST$FkjOHCkl{ z=kV3+7H~~Nt@zzwtJr=RwKBw7=>}7=FR>=Pe*?h@w(xd)YoD)wh*b`@5e(q6wgVK^ z08=;ET(jy+9c#%3#;f?f&aQWZ9WA>8;V6g40J;p*!?-+T5nuu%ZWUaL`%+F|vqrGR z>iCUv^eR~Ag0VJNJIl>-$b3L7d*OobT6L>Nq}$5gFt#T0x4TciG_;2OC%-k@cBk4X zpI9cY+Gd}?Zc`h_4n|EdcB%N~V=lI#GA`X(uDWfC`T!y^+z}}qkhD#JsttKyqJ~Cs zE*mRW#%TiJHGuHc!hr#JflB)|_kmi>wdmfO*GXuA#Fr z-&%k;Reh&>U^JKlb1s)dISm2er(AbW1>4#u>%MiO?6^x#4gZ6YH`E#=1Do2*79{Si z9SC?Eh}yw^^PlBf0~gtF)J|0#sNV|6#{~~qW++7Mqn#$Y*n-jdt`Gckg>VXN)Tq$0 zl97fuhjd1}vk)uiE)y41WQd972Bw(6Gs_Eh6|#I1LvU={Mc54;f-xvPKYhWy)(T#-I|#m zx_cxoh5!Y`7BmphkbvX55Mq=Q@c~$2suX?)Q$N%g7-~avIzhA#?_(T8l%}wmTXlKx>In6V3R<+vn zs&>$c#;RVW-LRWs=UnH|+dFUR%tYh9bvp3ce#P!Yn^2-sbLv&!Zgx&|qDd+qI`v>q z)E^D(O6YjaxO#24Hc}fs(V3}@N5i2L)@|)kG*h+hR>eAH&$a69Wv3a;d5bQ!KzA(P z4!sA;OTGtks0}nRbgzAeXv3`TBb*x z+Roa6+V zKLC4I9^cYltZj;hoo3ZOqe+`9qIMP7sa*|e9>o9G;{R#^88Z8x2=#mv`VL( zpl#KiH{rL}Bm%;kEo56_!kyzIZ~rv%B}0CD2*r(lCR9Jt zJoH;iENAkIvq^vTH_?fE)m_TIgY`lq6S<| z3SjjOE3y4*ezCz}F|mz7Y#+qLmFeAn1%=+5RVW(aLhVGGXFKE%-=j7ENLEcM{L5T* zb|wuiP0x*fEuKV+V#=gJKgR501m@v870o81QDOB`8S!r=)Bl`brk_*2)()fF-RO2x zv@5hA9Lq0Pym~ok**XFJrq&@=KHBxbFFbU^TONAJTjak?#$Qz3MSuGIpL^!?5p=_m zTda2I1?@(|@>h-``oO#$?H6$+VzoK#aVOfX{VGGAW;FQf3H+zEK67YdVo<*Yw>6yX zAa)%i;j-_wTbc#&N962Aq27Yp9YdAVPBpA`j!)1y_z@KPENte-a#rqV9$Evxs5d}7 zEPB%_yKn(E9&mWKM9wj2K9{td&>RMKy}rKdOcCub3`SE4lS{2 z-xM;qk1xH86GmZL@01HTr@v#;bEw+EkX7RzdReV5#qlNKY!VL1Q=|=)A zf-vPqM>Wq_nqlJ}i-Nq1&qD*cg{+nSrf3LDw(gLM=9Ec#QVtxzC}G<-@S`0XBN&++ zXxc=JDb%op9k^h)z#2gOM=F^>|Ik|tttkXREQ+9YgiGmFKya|HvoBxFr3m2<#?0(g;{=#N0k3QA#L zh$WaFL2QGq&SD5N;-VcyD>EGS+Xy901^rc0LGEAD9m(`KV>-#P5#?k@KF{=_dyMGj zM2}Hl{pkJs40@xz+8W@LW1p^gRd}AA@)D!7QuBOGcm0B7iiu=c^5QZNadHD~0Bcd* zsdn6Nf#^6abC2K`jg229S>c*hbA$UBN?3%M0t<$mI?)74i^FD-skH3Uxsf|Qq zOMo?)jAor0HMeWRXk39HGU7=ug1-(0!xmWRj?_v=CgR!?96>Vs)ZZGK9 z{iS;a$dhwfbmO4Cxi8e3ai^#g+AaVjY>=iAa#ey5)922(vuKbn0T3C_a<^}cT#~j} z1ROwHnNz!51TbqeV*5j=s>Sxg3e4#KtQOt7w}LKi1+SzlG6nZ`qV+}jw4=x78`1m2 zqRED`COv3|Vodktq+%Xw@1jdS2%Z-K^D6~CwW+iTL=OuEGtmasl_vOYa+ph~WtY4W zP2A;sE!(I42{|q6x75UYZy~v1zsOyX)KQBA_DMwgsogTb{?84Qm{6U>J>OOCD2xzQzQtVy!cA1caLicsdBrqY}uK_duz zSV~9C{%UxZa>*AyzJEbQ@wCOBy}D;1r*tpxTvg#@M<-#7&EIOEDagMXx& zS7&gaDngAkIHDqt!A+S4mk_2DRi9Eya(`ZgR^8OFljA;x%6UwUOE|Zwky6Oi_*|G> z4O=fM-g5+Fb|CP4F$mDY{Rh4J zrM(H`ac%Dc$^id&rUA~l|BN2p|A9Y7Tx+gK#R~7axT)yRHx^`&p<=nL-ouvFSYQE4 zz;*&n>e{L_8X_(6(J!H>xNOgIY|T%QRhg~NG=M^DZog<-sqC_?d~Bx2h0*3_Hxl#$ zs)C>x|71A~Q?0vsr5(8|MVB?&_0Yjyd()=1C>IsqdOwT#%-zOYREFYC&>bdY_lKHo zi+R2$V7WG{{OFoI0}%T=00n4!CW!+mKDuy#A7di0!?7zb2JN)u>-)D+Cvo)1lcS^>0C$toXn3l*EKge)T~z)E8dwk#z&xvB z;V-kKuBCR9|bD4mBsHNdGCuZ!q z<++j!Z2VF@Lmrx&cpcKFY@|$~ZM~lgnn!DkHuA>kv0bWLD_$E}Rsl~Vv#Wea={p0eu)i`unYrW!2GO*aXw30ey;D5lKdpQoGTrS%DK6w2~;~LS%^j zP}+Gi(SD}ubbp7_`UIo3cTpXz% z=f*un#+L>m<7rgNiq&+XyPrYfG(5P6(7%G>?&t7lAX)RBPMGfI6Pm2QkLCuHH8rIt zOe6;Zo)4G4{kC)Zc4$hOYjTZtrIut9*(=?na8vIFk6Ah)D|&?Fz&%z>s*6)s1)+pjHn;hi?p zekd*P4&O(jIQ;A}9^oOFuu4@6e?*RW9P(k0y=1=;N#t`ACHyDK!!Iv6%WY&FQ(igS zRS$AjL+TA4psgRT>N;fwZ(v6rTZa}3hd&}2vM*2&$ z#5}*;=-2Nl*4%{lvS&x(E|#fMes?jn;Ne{Gs>c%O>TvzdJAySV)lIp2krGRLEV6d0rP9I9%2 zxGDLW-8;Bu2*h`AIdgG1GzACEcQ4FTdMklPMfB`glV)%=WaFJpye`x2CYQUfld8&%>U=dMWR;0UjxMb$q@ zj70Z8=$-XQ6?`sH$#m@QXVFC0$QQYS)L(K4=;PQ#h()g8_u~Gd&u%c_ze~F!d(hlz z*_~31&owDe)Wox6ILnO|+FMZ~cDGZj95Uao2c~1vF4=VJ?#Xy|Y42wU;Z#G4m4lhA zxYwY;E|U_Q4p*US)}(2gl-P7Qkh_w56Z+P77t%#_0d^OrGTlh;Z3V?Z*S5kxVWh3+ zw!$%poo_4LjjP1ALW-@+{e-JBSv5Bjr2S(4{qMqYv={qqBwX_vpu`%kOz$VtPd*Ek z7VBQ+WW1MOwK^4I6gMSDc4!%Rhg1L!%VNLRJ*=e@0d7lL0R# zrIdzjq?EDGj~ywwCuuMjCJDJCH|T)-<~~B#pa&XTS%DrE75HS07445tj&hhG1}Nj- zilwK~ly0EC?SuLkki%b7rTlK-Y8uLXUBVBt=s8j3D5*&QZ$(IF+W01uTQ-XVEhZM% zSQ`a^piLtKXyxCEX=R*m&><(5xtcVb72`0uU9~SaWx79ce;>5v-wqMI=JF`JK@fAi z#y%6>)y+D^?}E9l$OzV!cGo8=^){5%@WwhV$eO;blVq*G6Pjcq>dlSjgvf>pnSEyO z5(<(*O(7^qhN8;Rq(DK;u2P{O_iqu(GP`r1rmIB=!Tn-<^>?^B>wby-{WAOe754Y5 z?C;mu->=hO63#k6Huup2mPIvdjM%(tP{c+jX4Qa=kM8Yu=Hl zWR9IoyoUPA8bRjbTHrOOTjFk|rRd+wKQye*bVRl(ZKp3V}6B zzV5G4tLGc6`D7+5nPAP6s9G4T`FQS1U0_YRs4f6lb43!tFs!U+3aFyL3#;)VmG#7G z{toSPtmYfIN?1E3+6iks4{dSXqSVf+C#0NX=D*)QIdqiPA7pCP13L<Md6ui(YC(gAor9C&%|Of;F+Y9(%_kt zGUpwhNz#zHHerCkXdj_#D~U;B2~)o21;r0Oxg_5 zzo42Tnneg_x;U9%7sTKi>!JWS^PVECN!R=cRm!iE!N8f1=B7;dChpCswkmL@r$2cN zEq8-6bhnS!?FMH)m8g`@Qx@f|3!KTpnhwq+S?lkDKEg!Qn;Xpqkqs3x`^?@YI3q(E z8O&u@5_vi@`cx*J0?shI$^d8RIR|IHPge|_VOJL#oVlNttBqE@j5lVm@3h7U&9Old znl6e~4bxnoTzYhMF>^k#nvt=DW5| zzh+l6S{dRsuqTBZpdA!3%W@c)dhfV zuI}qrdgt0GCc5yOf5R-Xp7>1}qUZR{GOiN%O%I!wAkM+QESpGJak*P;*{Os0brg_ zCR)uL8}ePoPcRC57u6SLMPZ&lK-)UZLtZQu=845*z&uGQrNKNYWlp4I;jE$kC|{K9 zJ9DAJAcYV15w^CrqOp_}3Tp7qFR`L)0`GhmP3eZ&+b*bo0q^`HRmwl?uUGI6`-%)r zApK^HLUoje{qXEZ~~{<>Y%xB+fz>km(^L{vqf1 zLimS_*_3uu@DC>74E%$hbNu5C;EdxR?CL_}A3sm4KkmcV82cFbeIkRJRpTCA?-Lo# zpI6M|G*quo0lD&1-kPXnI?znagZj%FM5&lZ5cjtsGwluSrs5s!O^QS@?R_HiiSoRi zST3u^Ih2UqbJXhj#yOtMWF-^l_&BO&xq8#2#QQ`a%U!7p=SUaT1;9DF-X}8cq-Tzb zVxSA-XhJOOiE;c5+UFR@S8 z0F8Ww)iC|0ph8aZrn^i-F*f2`lZHl^mxBWSUMXOG6IOmwM8B^@4|$i;+U zOiY+Fd#2UNM3oU#N0a>VXx(##0W;}ywJa(vVFG*;Y=6H`E@}IuCXo(U=GAV#jp~t_)!0H60RVL z7BYfNcOc;kIibr~CcBbI*N|bDQg8}f!6cjkSI~0~SNt_yv2+b~b)n&kpRIdVmA_0A z40`YhKTQS)lD}e*>7RbvyE={t#9!-%nIq|KNIVQkY%$nAOKo*H=Hh1T>K!koej zy-)F-xT)xmH&_mYA+MB0Hhn3Qg-pGUx;9s{;s9+W5cj7f8{Y5*SdzY=hxPQ{a95;v zEk>UKE9SWB%vg5b8XXl4+SL`6b_pa&W34G^o zmV5z@x@MnMQ*Wj-#bWRKb>3llP&z;OnjN0a57w41(kwYXz9keo4ZFk-K*4F-bf9{Z zjNQjHp@Ya8dJgucsRP zNNuI&!A?hs4?qx$;`q0s@75yp$>90lQKc#A`VsYI;~1CGmaNn|Y!N50V?^V?_E_T? zB^0T57a^4`VHQxMPn0X8S7Iq=^m>F9?Z2EXu!LzAVNGh`BvmS)1@&bxb;Z6BCIYQ) zj0J$g5S7*3?K^T)sxM~>0wbbVeI-LPW-2uDRy^p=xu?7OtdPE7+lqtMHQpXgR5Bw* zeJas;b3cG;1(s^8(_*Y`Ijo;NosYMq;{M>gFvoi>#$9}p1tvD)Em+K@tBjRJ&V}3JN>C8318O-K%&E)3_x#rB?C9ojp)Uy98(mP|JtU4V+$=7`?wVHy|>`S#!5xW_Ot*Vc=xtD5( zDrSE~rjp4_Wma^dAVu4xtO0TKb}aFTKYGG$hUz^{vzV8!80y z0XJ$9!UG_u5krLhg`9ZxK45KS`hOwll(CpOo9PQLzAv@$4p>R5Oy;Y6KGqOEem#Vb z)Y$r$w0@m{la>|Gm+H7{~1>G81~p?rlt zKL2UmAN}@f%3q2kf_&BsM3^-l8DHZ&qYOv?^xA7 zVBXMB^UK*MqGo4VGDX^l`OG7gRcuAz7}eDPq`ff6`$lhXnvG7k2H4BnEENG9Pj$LwZKd&)Q5=t)ArFUm>1qAA%(f1$sW5tK=LEtk-* z6#*xG0qq{l+Vba;lr-6As-)xiQ|=7N&{gqeCxnwpuavdbQ`Yn(A?wRCXjXJ2EB2S~ z8w$xcyS?|o_(%G;C$|yEJ7q1d$>WM+lYYcqY~Lg93v44imXL9_%0zbBN2pRihpOiJ ztH=ZS6h2Ulp}kqhKBOl;sGJVq_N}Uv{)f3a(V_UF+YEgP(s5FX*Hd>Oe!stYFv#=C z{^g_@kxmMkQKk_~$WzVl$z@ONAWp@;7XMG<|3fF(XSYQzm0Uw86G?$QKLdKB49Jt7 zbI9`_>5Ao2v8xLWdEUdqIpO>UO{Pl1owp90QzgA{ZDb+rSTsq`!vEYYK6fscNA7QE z-(ZrT%6MG67tMD;osz{=5J{$5ttZU+f1r5X|L1z~Yh==_WID7=n3MX;8bS)*AfGH? z&i@q?8U4vdO!SKFCk5i%uA4f8s1Q$@HBw0UfB^6ywH@{M@Wgl3IL>CmP%I0q*N=b-nTsI=AvZKhl61%Ng$ z?d8IIr#33ulk>a#6F9c@gf$T+njoH5o#H1&B z+}{_(OjhVUjnn#wzB=|**15ShNP1bq)4s%s>c(vf0%k`VHB1vpS~f3l(e!r#n@%A}uxnSF)7u3+X32?1r&E9E`gQ{MC>A@6)( zX0l>``CeB@zS->&nE7=7!6H#8@={q#X!5)Q%=}YUw0}-?oPjQJXZguKWrDSYY_nA* zKunt|^>e6do@d)Ae6fs8isiO1a7*c&5|0#dD@BN7&goQt{YiNf6KgE*0^sql7GX_J zWap?-ez}h?dvmX5^5!`*sVV1LAtm@vi+J z2uPxZj39H!OXyby=MqB9t|Xvex!zI=PJw(}nl?UCIDd|Fxt`eeq3ALI6>2A}EkNNr;6A#^r z=P7xT@omh+>{`)(eJ1^xDDE_>W-TF2OA#pUK~~A6T4p3r^kSl*`V-JDe=72CADsMG z3{HM;Kd*T1!a&p2djT-ey(wO;H~gu{?t(v`#i(CT_|t)gIQ;oWTqWSocq~ffb6*Nu zCg>?g72@?D3WwDf^qk|NbSX~XTtq%!wd6HRRtbZRtz-F$wrYiz$lu!^6|JT$dL`4M zlM8TyIXAM$g(^-7hOq`8k48^he$#0#>-n08d2U45_9;D+#9V5$@xnA-c>USe{oDc) zw|vK{J8!ZU>vF*nuSwj9TIb%oSUXB1?<=Yi_hG8RUp9U>F0-5@O`?zR;(w?K1HmCR z^8Zm^nJ&8?X|@{@^?ibjC2x8sZG%W_9EExPW)5o|Jyf@PYe7w5{U? z6bz)|2C=Y=^Zb&sf-t+_^prAt(=@K6l&sM^B$Rmi7yF2a$`PLaH>_MnZuNBnPoFUl z9Ei;{8IBZ92cF(-8dqZ zSsGCS1<9bb?smz^x#-({Ej$lr9?+3nFT(HHtp z0TQsLs3r@BBiAc-i9XGWuE{RZGYO&h_L|hc*d_V~Rq7Xj#VfMta?+4ov(bVMN8#Yr zH=L*yub#7tD1H8*2(fI#;QRgcDdkU0t+D(I>>BOZV;X-hJxoxg{Cb!)!w2TKW>Nx4 z47}t#{KDMit-}AO99Psc^1BiQvFO8?Na?QbLeiN_OoKNkD)koqYIy590H;4|<}{X* zH**qNI6u54&%)`?TYT0H#Xm{bvi&NhsvKbI@2x3vR^kItG)M}K>&)KeM&K#9VBONP zD~XLji9xC{o3ate0@93kKVVEy11QU1F zYc913Xk}OYf`xk*U0!*7sGsD8WIl?wF1R?|zobjH6QYQr_iASNTS>!}I$q@N*!r^6 z{o5f(;!zUE({%Ogv0&KMfP$%Q@80E|sofGy%MHp|ej;Nq>n*xArnFP`YzuFUhu$n+ z9BhW5QM?YMs?3Qhb8(e9UZu>dSlXLIB+}YeE|uD0h-6D<+&vO_ZNFl7YKNms0Aw_S zI(xyq3^gv}P|2Y47Km^-^g^rNIld{HkY(&DezqyF*&Iz)+CJV%3(KOdg=o9HQ+Jwn zXCWF3>@Wme8+4-GRj<+xoq90GXveE;*i*RAs<&Y<=Q=!ZH5%b5Af1KU&V^`v*>2jt z6?#5e8b`EdareMNqCHEV7t)LV z+LPm(qa6V>(QG%$XXq9C4(?0>)^S>8yw2YMX93zf!0*^~o82j&cETE7D5vuQ=~M+ofzdxtUmiqfPQB)0Uo#SKC6l}6lj)!N=KsjiU zg`ACc1uM11CroZTP_rWL}uq79rQO};zYW87_84RnRuXl*I}F+xMA z%I=TSO@2M&K28(jZ_=Ol(VzF=Pdgf?65&dVwZqGtWzWyHYgc2kU==V4-hy4a5l&w0 z*K5Q4eaTvU-1#kWj3B45XxIrF9_*chu}k)1R-cMK_WaKk5l6~^aem^@W0-B+C+H7} zjlD$b{ut4X`yBoGCyF<|M}Pbg{5eg3=!4@feURLx&vLo+*)EsPM0e@TbeB#>au3rV zdYQlhJ=CESoG@gSY$;n zN!*M}j~gwH%U)TfJx2SO>im%A)_uvg#1n)U@ZJ@#O&+!rZL4@VrkD*0#0{gji~Hwb zzwheY15bn)2tExK9boM74r3>7+};-7X2WNj)2!6nRT{3#G;$`YG|vc^%=I_-{{Vpd BhfV+h literal 81214 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 diff --git a/development/.doctrees/api/deepcave.plugins.static.doctree b/development/.doctrees/api/deepcave.plugins.static.doctree index d53080077cb615dc1111cbeae1216ccd3c98f888..4d7553b7084ec7a5220d01e998a169669b30e53d 100644 GIT binary patch literal 24788 zcmdU1Z)_aLbtfhANFF6pk|oLsO=}&=7UhV?SaBSiR@BI{(mHZz*L6}imU3F&ExEhe zyFKsjNhA!nPJuWkJay}4ou&cm4{;hKc2l50TLeK1v_O%?I|`MIgw{+pV+~=WwmPNWvkNi+8a(Ytb~ynIklLIpv2hY)+UkC zJL8vPL1n3Bf~F|8_p+&K%7nd>l@i)l*_h`vt$4M)X0oywMS-){j=(eVxYMbJ#Lq;{ zGs6&xcph(>4e>NtZ@1LTnpwLPSnHIh%_bsqgFeOftUYh+6(L#mTkXbEeGvp z(+ZZa_`#*+2f^r>)1N!59zbNcY_^=`9x|u|A=tU~+>Z8|J;KJFX5HG=j%lGdwpT0+u$sOpnKbfPM=CtK9=DM|kserXkuf zIL3^1KR}XbGWk*wu%Ekz3Y0(}8A_lw1b=R4S8gf~MH&-L<7~6tFxsJ2=PX3FCHW#= ztdxggiz&)43{UyEM)?$*ty}9((;+=n^&E^Msmr7?0#x_s@>BthhL({%d-$+%Mrecb zlJO{4PXuFY#WVVIjxk#@e%19UDSdTtDM9t5Qu=L7B!znFw;;;jfGA%|6~lek1_q^K z?AQ4OImfP{MkRpn4ljTy@b;Yn1z`1*5-SN1#cXsbCe{9eCg11#RsWoTYVYc)#+FuN zqhF1eP-8NOlRli}(4{%N%@UN*h9b*x+-LVuU_5xa=8kBaF$ zKXn_r(uVRI&r_4?%~G@x`0bVkC-I3?<^=kB$gZA5kt3&pe zn|gCXJ@6#%De+Ms#n%t!mp^cN@r7S%mv*mj09T7kW@ zvN19^V=OUZ!W|Q3M!OKr4rqq9;rY!CVcwc~J^n6yi=PyZys6EGw-RCv4wlAbE3iT< zxNLF1DHpLC{|sZX0P?UV*?r|U6(-Fi#L`h zB|InC!(&)_>~tN;Ql6nN)zHEEb<_?r%kuj)Lsr@|q`avZ7S~YBY&Lybw92gXvlCCA zJRHGGTQQDuX&*gxoTeht44hc>`ihZeF^--(1-qHoJIBU_wW!A3EjzMmMJHL*rJ3Pu z)R6WHo>V1wKs?PiP`)tdNzu8Hi#p*tg3=~xnTS4Mr2sFFpSKSffoZu7sBO^#NSdc z2}j~}dK4i187z1FL(;lLWEL)YGnss#nQo-3v7g`1CpdkFim2hH4Z^&v7KNXjz$JrA zR+8&}Z=pIi0d2z9{oEhZE1%o+_olxjP96YdOa)Zstpw0^j1<*XI|Oc-I9t}8?}5C5!QA++?m(iJ_MqXc z3$y4R(9+n9P86JKZVbEgdY0>IQ{TKZ5v)|4x9d&yu%V4yp)9uDyHG_hBbwUFV^bdt zS?eG%qW7omvERG_yehqm=sXS#PWKbK*m|4A$=uRAgR;OrmNMPdZgw9+i|(iKlNroe z`6V{8lAn7w)hbASL?=1B1ecJRO;n_v=|kF+MB4dc(pK>qs;fI`Oe5_*vcS%QhwL;< z3N^976jdD-*euEk3(WmJV)K;_Hot+C-pAA2Z{o9Ea(|x+6A|vW=&4Rm^!i-vep`Mb ziW1{W_8Vz?zlPC|y9;Ibyy z5#8kK)hO3)SpzJjT7>~t5~OJ+SUcBbR__dFf<1-0uF?eiH547*1miu-O)%c;d|kNn zv}3|E^?b75bwg@Az>xYM_C3~qkL&9z#jx0~!y<#SEDXLzJuP6c6F}53@OAn!(4Ihl zGyJQZg)EBn$tbHIGG_QUQS|y?U?LHNW`w&h5tG7-6=E(l1G(X=6Bji=gH+o~9!G3%B% z>gY5qvT1QTg-(V>W_T&AlpnJ;aL&!bVa{gVu<_$rM$Pm*Iwl;Zry<{?+EwrT&9J@W zz9~=#BU=~9bbf-_BNG^%eQ8-iM2CtK_~=QBmLCp93l2`Zf0ve!WK96ho@`p4ka_-GoWsP=8qNe?xKMsvJDrLnRL(k1Stcdr`N}J4 zofF9y$z1xbIQx&3&Tdwku1shQ;7p}t2gfSie?wt#HO0z&xd6mi`q~qlFW^MdRG3H6 zIXYIPHgj~k?-EynzJy|s`DH1W#3EC=<(9ru#WYczNm06Q7)rV7OK^)5i0&*37tQL_ z2{VY~@x)XFI@j>>ld{qMa$WQ{(AXf(C z$GL#q5&V(e$$Af%gnmg&|BQ;tQ^Qax0Y}sg0=W5ZfYSvEycOnAbUrc+ojTm6AL`L+vU;T;chIRrzd@hrdd#VJf@lX8nG=mnkBZ&KQ0!{p*#(*$&TbYw zJ3)W?+rtN#0#}N2wpxwcZu>nIACJ}$&z)8~Rwo#NCL!HPeiF~rxRQj|qeSsE9Ldtk3f8X0>bmz^j)$b=%~H!wm- z=YX1AYu3%kG}f>^TQ}eh^Vx>`x7_G5=xZlXCXy=Uh)&;?h|Hlxq`_rB__)AD zl!eQrBwjYE5>%`HFs(}9P-}w#r*aii1D=L0rnq@_7;bc!9e@m<;WF$GGa>7NVMg84 z6=o-J#X7<*%$nKa>nh5cl__#!5*aJyGVjSnTe;;k**auT=aZF$UKvV48p>`48(-%V z%A%}5DgD7PZAolV8-rkr`!qcSCB;yfN6F;RhoMtP%|XcI`&=gdQ6pqGFltEL3N^*W za5JyVBGDAqDX!{_sMr#|w+di-UbVV-%vkK$wFvp8+={;aXW+1w?bmTqwATgsO!kVb zKhA6tYm5xKPkd0PBCR&vFwX4lO{!MKlDbMzc=*pkJS@6H?CJe`S{3`+4YpmIN=okA zn%WK;KgG`NnqDy!vb(FvNi)T+J5s_p7Q3tO{T3!W&=mu?GKNEDbmJ?3u1pcyv8(wn z=(20x)fC&Ad}H$<1R*vy58;VrH$O@DaxHA?F{vVKw!E-lD;eQA038#ca?I_ zyXWZ7g48(4HiDqO>#ba^Hy0i@x3IQkn4v+(jH&0;*hmLMpInOk+A!o}5X`$5QKFBR z>wZD8S#(~A^ut3U>!*0F?x*obE^Q~wbH?PG}z|4JKabi>)^P>YQ zJi9#CEL!D9OzAEGb( z9sc`M{`)Tf9l_4XwmZsychE1vP8|>x#&mL=@midL2ZCfHpZf%S_kMV{;NydM5tYuC zuGvAjEn^&ZHqhNw*w>j+s>p7il%{-#VANAn4&^?)omR!Zaih5p-NYm8{p;XJD8}9C z35fIm&5=0N2P?f@3Po~uSCI z{4ipa*4u+rXh9A@%(TVU+t?~xN}(dB7|v?&h?1K5f71v~JdRL2n~{}~i%p+)5GxO)bd<*uLT*%FYp>U5Ut+EVwcyEZ4tC1@o7wVEEHj3WlyW<)_g_`=q){up|~&!X>P% zP)uA)GN`iT!{(YY{A(gIT%qDz^SE*dBwOG{$vC<8akf7S%w{N#!dB5u8wk@N;^dA; zxb^SF=SEmr=CSH{ZBu)rY^K%@Xf~{-F?V;#6cKxuO(yre5NdcYMzDw-ydLn|qIDP^ zpQ8|MVY=eNO5#*ZylT%Pj?{*Qc)Dif2NYBayO0(n(`eykS~N)4gfHQ>oV>OJ4{y8a zaw{41^c5FeDO?iUx9T7z ztXe_f2UT%O8S#KiL~0FDxn_l!wOYn`EiqfjeaThfzJ;;CW<qu7LIJ{ewEY;t#;k7 zB6bOK?Lk~LKeVcPNsf|QRK4sV#xTd{Y_;x$w66|E5-KO;xWE|O1!h9rcoZ=-fSM#* zb=~p698}>PJ)sdqNa2xe5i$X_)zRhrNSAyCMEBC*0&)}ETPTH(s_GLl1tJ*MEv6+hTmj@bdq$q7KtDnjF;dmgl`yLH3drR2(Z>=WSs0FWXVWLt|5jCWBGLgBVV- z1z@sKO^0X7Koav~o9zj=nvuC#wVe&y!++p+jAGKnY*&b|kx})jHpX=bLEXgP#cLId z*k&Tyg_@1X3pI4S7;lg=7a>YtLTJWq9@m@)D^K*mHqhhOoaQ<(AQi(tQWar)Etk(} z5O_V`6r+)Xj$ev_nZ}w`#}M8E3ATkuc-!ni4Y@8=Ekxn-stCbOT9%W&HwmH+uzKr4 zr){&HR`W6iFK3fNo#5;^poj~(4hBbr=$8~q8$9{E`?C%dA9j?tkB#>DO3QH z+)1pKmy*RrWhy6&oaxrv$KGCguipU2ofx*yNLxk8& z*8RD}H1|{{+mvjT*S{}QKc=G~qWSMYzOLj8OaN%un%^eW literal 18575 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 diff --git a/development/.doctrees/api/deepcave.plugins.summary.configurations.doctree b/development/.doctrees/api/deepcave.plugins.summary.configurations.doctree index 718b71c72386b1dae05e9eb007dc3ca0d3465c79..6ebda56e33002b6a8f9d0300c02db480f112de96 100644 GIT binary patch literal 48197 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 YjY_RurQx?sBVnRS^M)|7Ttf5z2bjEIhX4Qo literal 64170 zcmeHw3A7|vdERVqoqZ%d3C%pIB^gZ*n)jX-2aB;7EhEe#F%sIhp{HJVy;oJ!ue<50 zo&}iz!V-)rFrWqm0fR9%2?_^0vMq3o!x9t}$#!BN;&Y5~0_1Q`Yz#?=eNI5J^Zj?J zy0^OOc2&LCQbs2_M{lZc-R)oQfB*Y0x864P!B6~T9s4ib?spuwb#mTnG+OP3?f1jU zM!Viyv0Fj^(f+=-_uta5hErYZgx~IU>vlg}hZ=RqZ8o}gtAC^)Zlmgf+w|u}`w8E! z2X4C+HFw6GacAO4zv@hdV}TnqZRJ(Cw_)3zx^>*1?=*YMZp)wddn+qe_tbp7-CA;& zdtHlq^ZV2Vdf0S_eUhe@zv07u4#jxK!kmM?vooBkML;?m!*K!I;c!#aZQ1?9y+tdW zwt}GRF7^W8gmAFYZTJN5M7?SGJ__+X*0NUk(`2L9iGM6w^SAA!@ zv)kF?>~S_av*A4pPJ6{(==NGIySs3r-95H&BM@=u`nz5gKVXvng4J;sa^h&d>jS(C zZradWbk>DqZmVIRRB+A7;9LlBoQr_WOYr|o@&8`@zmGrzcDgPDs2XnSSZ=o;F08a0 zy{7&1m7G)Phx5F}T;2xG_~D>$^_1gC2|rb@l^yI~neF1lD4&X?1J$cC+SpY;^*|(71`!4|hCp&x2RI z<-sf8BLD5vaEIgJ!mli}I|2B>59~(JZa3>z-LV&LJry|Z*1}cuub98$>V=ap|JjA6 zySUI{r6^qR-N2sffWxe1+mAS7L9Ctyv3eHt)id8Yb%3}D^ldFy+Dm!KIe$o7ga@uT zaE;Xq+G3D{U^b8`oDo6H-~Td0?c^N}U#Cz@dLuGLgVb3P`P`!*fSe!S{GnZ4>E&)Dq4 z4V_c{aJ+MB4jAj(s`w+q{VFK`QAq!6QjY@%SV;ZwvI26sj~$entypfW?>rt(;8$>} zgWYr^O(Wcl-}cE))2+Kf|6T0$39H-cpAM%$TP{xvYqWJ5-_``a1)8yJ~Ryg=%BWp>@qw@ zk^PlsyS2>4xs_aVb+oP}TdS4Asgosbg5L?I;yy>ygTN;^2^Mm39Sn^K|3E*Lr6exqc=6*g_;@kx|(*q zLk9=^&NcCM;da)@YPH${Q?M0L8(w+;HJ1d~%nwxdGVu2v+)uj+9|Y6z_-Ix|dogJo!MMufJV`6WNy5R28*dff*{EUB;Sz^tAgLct6RM!-z%HPx zT;X_e-A2e4XFQx->NT4T?R=iowV++EK}Qb!zV|jvf)zgk<%_+DYZ4f{35?l@b08?r zqY|unW#!b{tw1$|$df?TiT3XBzzr6x0S79i3p4gTaP*%Jtggl>jPBOwZ{+{p$}Am6 zBbhlN`cMSkyTxprS#cEph}_r0tI7`Ld_wl&eUQ2*gUU>}RhyJDg%2mDpv&B<^I5J; zL)o0;GGAM>q!>V*_8vtq#@#(;FI7wSehuvuMOlztSCvmIsJpFm1k-m_< ztMNKZd!q47tflYFLVJ298ZZ3n8K*rB&{wEa-d%u7GD^5(kj=O>9efchL_dh|lBy7S zi+JzV@kbM+I*NrF5u@1q8|qamKf9RnLv|u8B)i)LV=7uhI4OCR>vi(z5Y;!E(G4zugbk^0mFkIgnRN=>|$!>20{xNMKI)>KqM$Z8)`5J{US?M(c zw??*qQXe?#@DsQ@O}fHQ2*bO*RGfP*UP`ujezdai!XXj~2Cg)fEuQ~?%Jvk1;3}K< zW;}Wi;*ZXRZ$(Ldmy7py>V>pN?;-kgIcVa&gPyL&Q^``*K-A6_&BR-9-R zbxy7YQ0p6L&38EOop{tqq$+T`Z)RIpWvSh*1dffPKK8T9VzXU8HZPAq#yT;JUq`IR zj*V#xT(xP4E%`+wAA#^!3gDqXPleM0BMetZCcr;qRdmFgj@*(4{&{rAJsvcGa? z3yw?vcr%0vJsml6WIt4$?vZ_!xw*<6V7I6>*L*5LJ1(mBVCvdeIc{}b>elD{$V@)M zKwd*%Fs&(wRAjGE@MGy5BPl3^q%KEN3;zH!u$xw@icUhsD%U&FQANnZb>R*u6V@&hEPsspqUd?-O;&oNM6D>LSo(a5xWtCaITiOOjQ!wkxO9o4;0<4*yC zZP*{#CFwDS?px@mB+1Me9b?i%;#B;K$NfQ>asL|{jS8zjMBfFmn#rb{HjW6X1~xsr z%$PgTXjBNDLEi-t8fLQT{xZ;U$zo>HO|-K~F6BRBCVgd@Q4fp|r`Hz8X(p52Sq8W~ zC^aytU1rS15h8TCI6}kq+*t%Y0#7lsyrm3mX`A0$sUxxZsRO)w)B`-WMgwFox4@b_5dyKj3`)fT8_ zqRth?4*~I-N%j|eVUodp{J^=}J2pfGpu@CFv*c$YlkJbH-odNBf%WR$iGQSyD-Lwt zeM(t4ahnYfwG8G&=$`x?gY;Y>iiqRe|E5Oj@y+v;VZ|{dKC!{IuB4j>d=DE1h-= zzBU<1kUT@qgh}P%+T4>{#bH5=Y7#d;&!|benR=9?Qf;LV0yGr?t?Yt#Cfa3l(`ukn zhRz3?x{oG78!mLNW+=)AMPYd2oH++GLO|s506v*$q%TFI2av`~vb}0< z)15EE1Ne9}UikZGrU#I-4RfpMp1(=S-}2BK7sMOqvl0Ahj(};4K&P5O<_GQwZ? z7p#$|&3YAn`iS+g2T>>1c4#sp+zW@%#b2G$UhGQ|F z_kd&ZH-W-YIuUL!N{8Z0GGNmkiE^o7WBliWfqIKW9Eq15>e?34 z#VS^Xqz8F&tcvswh)qIdvqg@@LTzHEz8t`++NCbfRd(ZNj@dI_41*AJ0%#E8Rz--( zgXYk~r|K>g=N`2v#_p?%U{@Y{ZlFf9Qbt4mr5!=1!p%r4YcdTh+6oyIA$$wqA?*6K}Vhh_SRA6}%O`LeE!F6>kHB^1e|BXyFk& zibg3OK`K_+(`ELvTVTvik{~-QGQ{s`mi?(QP|w5NxzjSE_C+ zV9cn=+5MFhj$3yszSHhC8ym)>3I4t#!lj$Vajlw`f>Ohgk9meFfj)itq< zZXVZJG@D&$d|?@#q(;NGrPwlh{>?&jp-3pcsFNy-sY*=MJw+yq=;YnrOVGk}Y9OEl z{t2ix#=m9(6+%ZVi$Qxu5zr(ZUQUhj(;@c94B8FZyLdW>b5Ca#QUsYC2=Fk8k=HSr z7Ft2b`#|*cD4tGxefIZ*?C*!z-w(6DkFmcWp}({SMqsnMk8BzU-ycaJ|7%uZywm2i zYAfE$G?m0>k>1(}&ub|EN5KOsALcUTeJasNUvEZ39*t*OO}bS^81g<8jTe6H%rxX_ z1Wt|R-#NhjQngEY6U*HvBh;+g#usDR`#tJ4#l{y0aWX5OW+qF#(=2@YJE*;JK@7?t z89_1H`kqEp)2^*^m9X`FJ$Iu48(BK4UH}_eWtcF@FqXvt3>eGa544QZSoUM|&y8h2 z#nYg%EQQ^r)$HP7(CX$h$;D9X9>q{3=7yTjgugxV$@7Jq2*fv6iaC1Ygf3ilIhkf4 zd(ntD;C!8ce&m+2^NOHZs>0_`qgg5GAU)D7W$}?@F^Z61^Z0tsVlu2=HyAgdy zhX@iv33C}ojTTy-8Gm_y8Q_Wx;FKT0OuP7S2d^8Qt73*aS!T>08kzQBm15rAs9eB$ z^k!5qNU`kj#rKtgPAr$iIauS7a7eKHuaz11SJ7xxSpD_lSj}7qUn~P$9;6!B^yxBV zJ~cvwK2sc_*=+iqGSKD0s4-anf0h~bM6?S)Jn!YZBzr3NNF zzs#8DqS2^U{T}pPP?lx}E?-#&IF3+FbY>24?WhO1d5s3hUdQ*AAEERH?v)vH8I4B8 zbWQZVR!sL$8Q{b!PDIO7siy6w_?J@ZREI^&M=E`+Qzg4G8hn|J`qCj%RdGeoVa8-t zqpHFcw2M_;6Ial06(WRi1$~Yhr8kts7O{2^MHR)si?h>;CO zNiB4qN;T1tQ2kL~iC>R7Y-&nxm#t&01}tUhT%hUc!Z~0|<~dyWynw|=%>_|JELfTd z9)B^pTV_${pFA(16s3@sg*ZSUFsDp@h~OQ*gZzMTb~XnpvWo;kA=zadU1mH;6JVi? z2WhK~MnZJrWh3K-f z*O&Bhrq5{Aj?O~~Ykm4KRYVEyuiygC<8Hg>3vBG?_uu$3l|j4pY9_rS=`PE99gFDG zMgdSLF8<-DtMD6Vo@X)(ktv?PJti_S)K~SW`QowupNw#s=E^ks|2~GMCM7M^|MwVc zq|bVLf)N>HdbUDp73?(w2vsRFevm2%OtwlOO>Knizf5y}Q59O!-Z29SD zZ!j@62OP8Udh|X_v*w)q0yt)0noIa)cxPiM2E4Ox15~5*&i+06=ib?Wz|)|2HcPrn z7p)$8>CdN&7~M}RDFw~uAtG8HKka?D8;Jl{)UfLiD+{gsTU| zK2mY;X`f2nv0BRr_O0C7Z69}$`baqv?SMW+vedLsx{EF@h&m-=fw2-M=&|YXf|| z?318oFG%Q-I4jS-$hJTrccY*P5R7j=;gWidxJPbjHBYhI`Z#C#oXwDNgUIqOyJLX3 zjT?*T#sP3;!)2eP!k48gC){R}YOdJ$E=B`C1BW`B=Df_=P>F7TK1Q1fM?6Z*T?<8+ zow&=ZQi}_28UtM}V@z*eANzRq8x%5%PDUP(@Y*7VVYTnNcIZDopFy$yE?3O@$8;UiEZVHtBQFc#dsoP#* z3xKW&oUgpL1>x)4Bv6qLJh@I@VG)61@^nv{x0MLdYUBg+eI{)wmv!U334y+JV3(e{Bd!0`dhs2$>B|5TZA zKfwUYhg9#qs9Yd$;nS$TR!IH*GQj0Qs+Q&^jm(N5P*jwEUuF*f4vkEwGnH$LBKXRy{D0vRq%Z!YXLd@ksX#u9)U1kpF zq0y+Ab{2gXl?qvRhh0?$IF4XlmS+uc-KYn6{TdCBy{_*oKZ1EXnw08Mw9`ig@lJoN z%;*jpjf(wN(D!im!vR>!#U!3lS2ErY+$@(;=Q29}NWE={(x_}S$)3FJ7+z|=;dw{X z^-KOS8_aAb{k<~4uN0z+IBX|pg^?~RqSMAqk?d*M;d-}sWQfEk`6-g6?_*WX2ZKWi zOJ}8eBaWv0p785ir})+2w+gd7C1KJxh)A=?5mi`KQg!qJGpJA~2Fhbx{7xZK2u=OB z*a86o^bBe$*0?m`w$)@_xQSqvYnT6sr}cEAt6W>xQ*2tz1QLgD`Vn z{!SU-1kQ~pHH50Y%fvg;6X=$)g+TIcCxG%Zzz0 z8jWge*@M1|vS^m#ab+3c1VR&g7nN#KA!YAMsdM2l`4>|n*?PD<|J)G9E-24m!Oe!L zV*F6AOW&L?AjPER`IQl3 z^r_+)&5YOn%QCOoIYZzBd*DP153eYLuTA+w_wl z(><$6LkP%`JTTpxdv2@PQN^gHJ@rmTAxtoe5v{@rNTr%QNo{0XvK>Ugupic=jkGP5EENt*lUM?$uAjO0@ z4HBzrk?v^OHHb=SiZp#=dRL-T^Cm5vD>M@pdo#wUm3xk7u{r8=m6K$b32CpCZhvM~ zv;69dfOq1JD9Hv!1&9TEz6drMh@c6<17%|ZqvLY+@%d08HWSC^>!{JJ+_kVSQlbHs z1hbm8|OU{pR-V1gjl`w5Qb~;0W6FVsnn9iy*K(9zU^+;F|!Y$K05kkYR{f+WHFIGP+bk+UWToTwPg9DYl z9Ll{1_gAi=FPGJPeDKQeSathAC8|@|d+?yVh5*@YyosXqZQQPlwOlveZca4PC7bca zTN=-_l=OqExbgNM!KGaGhJSd59_Aw^;)iZ6g?Ed}^-@>Y3uEP^V#IwR8%c~-??UP| z#n5ne8ea-4k9OZ}@dVeG8v!vUxL(PaNawn2>xa1DcAhoT6I`VypVZZYX`qM8Pycmm zHT{W*s|Mz;y@Jvk{f;?lsXPRWIA3kjR?OsV_hx>u!S#&oEuZb008W{RDDt zl%}f?Wa6f)KAr~CS9KX9ZCA4f81+~&q-x!@DEzY;?%F!AdLELk3l+k>JhHzULX$4ALTYNN2Io+QDv#mnnZdQ=0 zC|sXUFrRK=oRsL7YJl9KV(xu1(Lwe$NM>eXO{7uTnRcNdU31U8P;U3rtAb$@EXUKi zCw5*ICrT7&CGp27|JJIeyH#WP-1FX^SR8V?TeUT#boaNbn&nK!;)}76BY zvos@~qx?7?hn==Xj`Ff1sc_7tPRiON)o%$3lcZV{!?tsWJYl5WwvyNqq+M(qHJX*W zGfi^v3-`ryltZZ8ex;g{lB@)x#2*;gvz%K%{Cwu4^sH zXA`CC3sqnHVBsd3pyWpWBSz%@LWmTRuvIil$up*6lgUks6P0({2{I2{uy=i;Gqczf zsdoq2#ImcZhP#4>NbeB(jsinSKTDV)IZ`wjGxHbjD+8RsdLr;g8!#-8SLl_Q!*T%x zdv~F7e#@xWMD>CQ&W??Js0?&@Fl-FqezeS}??WS#s8yM^C{90E9H*H~`*<1P@}SfZ z!2PewjQNETBJ@ke5t_}Ue^v&%JQyt?2L5ZAIece?82)~73}*&(KUW4gj$lo$W)3j5 zQ{VEkw;odN#V#c%n1~psQf>E4i5O3*Gn1}KD0*hHk$!?%gJjf;3n4+AaFVm47?2{0 zPOQQtdm5(a?)F|fgnfxtA{q5!R@I!0itl~mtAEe|V}&n%!na9;%J*8T#g67Yq@!}& zYW83~(XXLN)8OQxQs_$ZXN-bZ7ovdB;truviWW!38Xp=J4&!$CK%%Q$tK(iat?a6+ z*$&@`zD+6yM~S}lKZB2d3&d*<=AaC40_R4Q8n(kZ}1SDL(*|673cd8djYv-VfX&l2Yf=oLhgq zp(i^TuG3sMgxm#nn)e7-rK;3$6BiVk{gs4%!);o(!8s(GMM@1BpK{o?rmaMuqzf9& zT9JoTY|hc|7>lH#j%>H z82wQh;PN2Vz^30WGv;565TXCMI6|}8^zX_*mj|OpSvr1}E|#+eq@q1+M59qzTqn`@ zTFKH2$^e%Kr3NOQFEi$4BSh%s#Sxm#q`y!Gx>aKI?lNQEF+z;qTO6aA2GDjH;5b5c zeIiSH|HV-caJu{e$>RaRrRj(%$AgqQ7nl`i#gv*rmMB#%8F?-4Gx=sA5{ZPY zKcz-PLLZcnt(z$pio(Tkmw5}8?Uf#KKylf>hywKK>lK~0?^3)Mea0eAVy#f}DnA5@ zEY^FaAtl{N7F1pN9M;OUgw1fpv-SvsZmO6m58iEhn`gy8(-Tu30yE1f3a8#$0= zrhO07FsUZQQ-b}7rfbZ81v1mlIa`-?W_$@Y+(nJ@v*B8Pu<>QN=evrNvO@`Hgr3{@5G(B}K2W-g?Hs1BTfR*@QV@goZ zAh8haMuqu5*w}ntKq*QgEg5fsKoDcf2OBxO!)4bcfHbGcmSlU3*CU6ROm zkPs@VPx4}$QD)+OIkB#DW#WA!(MT89#!NgK&$MLXbR5zVL?+%JMB{~DJo7T~B92K( z!kdU*B9{ugWAr=T8^0X^pB5xsDD^JJqxYB8Yf9?fW`+Mm5XUMr?tW~XzcJ(PM`&si z#X7TyjJv;Kjn*vVZu2?1N|WIAvk+HdB_p-RDcAz{TA*pk>1S^gG0X$`YU$*C0rJ&m z(q&sls#-klfmF38LCaC5s$BsJ@l>@};At>bEn1E;OYOXL$n*p?xwgOpUlhzgG(m0Q zHukMLcnf82+9J}G8u&~XK9Gnt$s(>;gci$OixSfcw~GbK^+wK4@H9(EJHv%9=y6cM zjHAm`IB~-2w%pdT`mxCUbh?)wTb?8+%?7W#{g%VXS?Ib}(|xnG*c9JKiwzFm9n?D) zv_qIkDZiwkbr25+d|DT`7GU9m{nGC zB=hsk6I+A)ypODEx|#WT=6M&+&wG4TvmBnEmz-|4<^t(MyNDE66OceIV?Z;niu}BH zqzbHCp=rs4VrQH!vf(#ZsmXXkT&qQ~F#eN5xD(dFXQ|PwRIo{^u0?)cm2`lr@dNijN%?A)iIGp7a>TCyBokyieoLM&RI+)Nl-baV6w%q z1-RS$-Vn@?njjJf{tK&WP8_(D@0eTFgeTg=DFn!|<`nd^cDN|NoB?XwMdlG`>)+en5?es8;cDJe;{* z9M)k+X+)nkiA*P1uVZSiJ6Goo<0P5m`~T#irocM^v&MKY;P{>`0-D7C`P3*s{>xs; zdS&jptwO>luVhWxH0LpoK_54jY62s%=aG($>;ffz;x&mD*=)2Lc-WvO9UuZn_iN{Y zN8eiB`24^_gXV%K^77I*Op@Rj#U)#_moYMD6NLnjShKVM3awe==+faUjgo~NzS6QB zug4UJFVi9o4qtlD9ljp~WZdD)p4P(QYldCiEPEbq8Re_VyMZ2=OG4W4`akl=0%fv(PTc+#B%n+0l4o-AKd0lJG-5Y94pR#pk#wl%N_UIy>8v^ zJNv`4gRa%`n`|02xE7ajubtn=*E+(npdDDv{!Qz`X<5f^;AfA20S}=u{7|=lpc=r5VihcXZzuB zYT0htz)ri1o~Cddv~eZuN(VnS^8srZp`oxQaec(xb;!84I)DZo*La~47Y&S2ln>H({op1vOms)|R zY8he;9kIXH>fr3<2DetA)I!sX7qC`+-aY5gBo3J+w*0mv2d(mFZPzv-!|b~ zK#i_#t)OHIh_BlOPXAruHg;&P*{yoJK`w}JsuwKHT|I}}bo=2R{bkMWcH7;WgZuEB zb{Dv&sn&yjxLt$+#=VTOUi#r|;!UCp?>}Logxh$(gRS@IFA|Nz9Rvfo%y)pICSdA^ zTbovExo0igz<2|{H`uLycvjc0x4Vs6bRD0|Fg?y$pD^M!z@_+f$Vr4#gxjoM(5}Tr z;RY9swYAY(>C__T17cZ$3%={NtR|6eJ1b#qP2`V@I=og{ij&NWK}az33-cbSJGWa87F(jM#Kn+@SyZ9ecxV9lKKlQgH8K3o$Pk zWDAv$JFrH}B0SFtf{uS+VFAVdeCJf);JU(gcX^>7oaU*ef7U0CG&CeD0-} z|19vit-DlDbWbI5_m|4<$!bF^d(7_6yLPa|#=z2FaDtU42Ac}3MXaJm;Ph{r3}?ZU zE465OMgZ`;q5G%99sa3SV4bWv?y}Rw|KQ(E%{HXRX=B zr(8H{XX}oI`LIvN(4qvE84A(*Sg(U2wqbUG8vy@Y4x9$}wCi-MV=NeUk*M%{i-~&f z3NbG^fY@r>#N-ipW@XWCUQ^O2x@`VrO(R{E;j{PDvnDh^I{SY!6$wC`MmeSy8les>Mrq2qiq zkqCFjxJ5nw+|xD87q4!>;h5{Mw87n^B<(qmjtAkV{@)ML>64y;O?C@yvaryf4b{V& zr9V&6pJ(XLZ<0dsIQ@D5IR1Qy{=97pe;%ek^!+D~z7OTmb-Es1x9d@~f=AH|y>P3# z5Ex~))?KgvdCwd%A0;y0@ph z(_Ot6f<>Z`C@U3D?nnp(&qyHghJ?feLcH(*Z#*F(egYCd0KQXwow28PoY)pC&Cc}c zQ@5{9eO2e2dT;iVS1(SfKe-(G+;R`vx@o$e$--F9nVu01m@DF2@e}XIH{%W22=x8X zivokiatay-w;VHIZv1vEmq=Y$PS{S%*F$Cq%X9PMe3sXE{q1;zH{`6agu_a&JouWt{|yzuy*D{F>g`?({*OJ+qlef^w-(_pFBq{Lu<>dHehE>PVe}>WgFl*~JOM2yQ zEa{jr!CvlFb;YQEJNc+HtC+*6e=~_y0Gi3Hf^h6oM}{opEpLwndluV2&M=+$-DhuR-!aB&uMM>*uidlb@78nAZC%nM;iadtmvA1& zIa98st_$3QcIkC2S4&SChCA$V{Gy4!aR=M>@X?~#Jl}eG_}DYPXuf4osaLQ=T~RyK z_yQS&kpAVAw-PoXM`@(r>D)AAP4ojV@=Ml}yrQF09g}*Ob2^72`<5wqyxpW}{F0hR z`&oQNUHb)mjcin7eT`C0*KVr`otqV1&pf-G(NRq?c}0WvsGu{>Ml z=*EaLklsMI+}M5xmC8B<;?PIXVVXK1=kd%Ae8(~@5r3>+@9TjZAHm@~+)4zEIQnla2*U0)Wmfp%JIc7(p+g}s|_&L=-*7QbfOnLbCcPCLu|5T0k zE`X_o-M&I&T(@6Swc4-aYZ$|gYFw`#&nfv{Q^97rPEKUDR_cm;{hl|Y=HF(eM(jV~ zA?2wrjOD4krzMK|GZh?bCmXhp_mdISAE7xBLD@H{&N2=CjRX_Zko^JF?H|*>5Akou z{)mcCGVBM-D}O+@a26cm6_SM8Ye-R~1gQe14}?tL=ZjbbQJvWk^=A z$$v(=UD<~R#U}s0TR1Ag{;X_r<@jZu9Yib0BvTo~C717UBX?ku&!5bhvl7V!qkgbFa$4ar%p)W#qg`p*ibr0g5($s2stPODaCSaf zQmWNFa+_O45%$8P@O(cypweLTX);(N=SxRd$sB|bz(hr)yAvJ8S)Ba zq>ylWeL5+#c?XJ;XG(r^%kkWP;)CiVhcf%gq>hVssH3bZ8wUetD@2wBC-^x(U?DlXC<8z+^r=^l$$ce{!bp zcwKlfbwl@6qIE|$k)SOyeKgM>p)hRY1AJ9cmi;3r*zb`R3cari-99aaZEf&NMILrD zO_yzEX+4%l#KvcJ^(;4u2334)I-v_rAu41!$FIFSi_4#qr$wN-z|}`8e3f#@D!1JWJXatD z0C)IJ-HBj7nN7-?7YRQS@eW^xSJ`LC_Ugh5$i*~u8P8yNkzW`WOWc zo)%%v8s(JfZ5S((lc&g}Tu-plo9z>Fk@D+qG|&zZ=pDq6EKy$4M?h~tY5NfMttS!$ zu$4rk#G00+wb5K!AkA~{$c2FUULZ7w?J;0?QZ~8n#3tjW4j zAI&Y18&1&?)XVe%Bn@D1Fd7jY^(D&%KpJxmk76kB^dr&Rd~q|h@cZoWON|AA7ie5} zO@|>_U8AlV@X?nOm`kUU{B##0s{naUR${+mwe`H6xG3!G!$S6wE3`i^qp3Qe3%R2 zhg+Qv#38cql+|y0LBA8rGo-0H08I_aYD|w%I}P(UFFgG`@LURd#z^%fDXM=ws~#&= zCzIV}LEB=Yr`o{k?{G12&{zXoAy$zJlg`O=u*rdzFVB1ch^Lc<9LbgN&=vZD#;rbg z@PYl#(1sezg%EdJg!WE^bsYkzhtzZOs5zdYCwr4Tm#52<^#+s`gebj>;O~*TccU)T zq&#p0>+uZB?ZE~zVmL)q5k}n+J!?S5>v(#y8tF>RZVa0lbeV}Ie26Y^hPc>~JYzs> zS7QjuIU24A5zDG>ucnuLV609r;j|+;&D=e@S|jHYI>GvdDdNhCg~cHdiKl3rx>mD_ zPQkPU$Q5@Iuq6|B%Tq(rU+8UJ3k$Qg=@yBpwMit--N*fuUO9)ce(wJaI@7WcJB2#@S&--LM8Ls7oh(5+2 z(;m7$jg9yJ{8~yR7t6-0&|E}NHQ7#qa3Ud&%Jh7ggnOmpotY6&_GHh9Sd`n|*e??22-DhC6)~IOigP_i(x}?g5kTF9LO~ zfQe~$g)<2OcniVfjB1QhjnXY6G`mH~w|6XGrGRP)KoY;*E_Ej<++4AO}(y1il5lp0s4GwZ1{lG;Vo!pm}UR=~ex!520H7iHK| z99BV+FG%w0{~%vwO`Nb^ms$h|^m06)=Se^6_0!HZKg3anuk<~YxS*E1XJSELYvOTdak9=)8)(C56Y{vnk2oYO}7o$X$A8R(m&UMedJ=5K~ zuiWk{X&`2^Kpbn+$tLTYR1&7 zEQIerk3Q%0?dQCtsfw#S>U;V;{`dLM*QZavb@;u9e{UQ6FP!o_j@!C0Z`JFqcHQ>- z;aI(0>ox6G(0`_XVezv=SBNb z->wC2yA?HehMf^-^zr_zGae2HZqTr`Tj9-h+wRn?bM}0v(OY&~{=DC7Hm&Z;{8GCe zbh<7Gq1I@;^AY<3QB|nT+xndLk&XpQ(Z{}Uyc)6Q422_tqtoHehTF3Hr+bT5IAH}r z*In!dkOXl)@6l9&TApel=F_b<~eVt9G_)FHxOdI2u^XbgS=7IR~8G z&JE6xGZQ|%;Iy0eLbumy+1-Wn?e5uy*MR+#_dNPqbpay%1*_vOw~j{r*`xf zoo(T;+p60aG~sf&J2!$8=O&2o5dMET{y&WWj}TW7OxI<+%!WHVmfP)z-_>l_dkyXO?c z0S9O{$mlxtruclkJfFiFpX1>arkl2Ooa8}i zVotfqvC2I$L6L|I$&ew&>|>r;1qJAxf!#I6nNZ_M)6t8RSS}P7%Qt#K0LfQVil1&_5zMY*6O1+eyxmDt`_TxA9KL<5~15=1B?-W6Ul_ zU>;q!rrAU|Dy&{ABl@jm`fJ5y`hptOIf`NTVc2cq-oS!ztZuc|ZdCn_trL(psqSR; z!@ZCFyC1#d$sfJ*N%=36@$abN!e6*j=b(AzH+LL6ZuNq;nAuJs*T8%oPK%@w>Dat> zyC3e;epMkuGu1mjf&ZeuXOB!wJQ__{#Uc~})Ns7pC`gP1%iVUbquC0-MPY3eiY%$e zF*G^v)&r-1YJx2O@1VNBhIM>H&d7O&pmp%WdI!YAV!OUFKq%-O>bB1hl(WQ{QniF8 zDnIyvW5_nzi{7y(A`w@P=O<=L*(aWOtn%3GV@JeXur1u(v0HUatknxhYc;CEd)Gb` z_g*Ll*^Aw^8d~?>joY_vV=4c1I3DrRkKEfkME6-jos{k&lV$XVJ31@Qj|^a zGTcd_ypJU>V)Fk%OnxcuzTq|6EL3T*e!FR_x zUE8<2=WI5Szo;g15*)2!=VNLww(K795n(Y;hTju~y2>nH+_lzr&u84Ga9*26i(JBY^tyZf|>ox-q3h#X5@k0T!hhvq) zjMc*@j?!Gk`$xhBfgh_xRVs&1oB(3MAf)MVn8!P1=|4wSqglF6EALC2T*B=YKJ`q~ zmFnadW1X1hA8tS2kDHJ88D^~>4WDJO-aApjdl%J0nEe=Ubcz1qn9zr>{4|gtrtK^- z-p!Q?u#m7VwQda$6_{|O;0x7Ns`;OhtdghuU9ibHI42`1+(Q&H6JfuNdEZpUZ^TvM zeThmWtK*E-IG4X@JD@pG>0_bh5ygi``~ zg^2p$1PKaR6EI~nhYLqaB}yV{I3wZM60ig&Z%*YzHE7qWz#jv@?~Uz%uM+W3A&+A> zR88XGXNiNE$WSn^Jx3+*WX(MYv(oW%3G2)%C?UN2UJG#Yu?l6<%vz5<@neH7#1OCf zhuJ@87(D(&6bDB|4_Xkr3e@Y7(7OS|$yq79V|8PBH*1}EGc*Lj@zddMoi2@v8)H)=pLw`IuNA^0$qq*UxBxsSIA3$H3Gqg<4nT;8#_YpMJQg2}ZX7YVeOTN8VgD!3W z_tF(vfp?N6{UBE+W~-kPa}0zsjv4za;`I2uU41b22g-% z!&+(gg4rXL*+GwsKNM8Bg~Yp?HlE(pkq@6J(|Uej{JxPPM{G)S^F9Q!Wl$9ellKv= zEPQ#C4i9!d+qIX0Roh*WD0?5*TfRc&#r$bUnZ$U6H_;+-5L2)BS$(jSO!zIaMrQc- zo<|pHsW6R~6->B3UGbwps5b zjN$zy{uuM6DOQmxDzSR+re0-QyPu`C^tcuNVs~TDpTaR|pFCNY%f6_-mPHQMWw|#k z5vwd~(v}CYZl|@jiu<3>r3t2lF7ZY`Q@BxhU9;B+Ts(ei z*_0`A(ebBI7b#o$5brTj=HB0GhOyz9cX%Kp_y7(?eokm+JSA6@52WO0!5dG>y&bsp zhVaKUzfqJF+LPgpQwJ=unxL!Sr9Zpq&mZEC4)%r#Zu0iNw}-0DWN--lf%GBLbZPjo zkS1F4q{W-UWh{PciFxJU*g=I)MC|D@doaPKr^;fZT{|1iwD}d4W&f!dUCtq9OifBz zwr(hduwRUXjYk?2ORn9hCqKGnPd3x^3`C)?{(}hTSCc4_=woz zkxCW&P5^#tlGUQFSi`BftfY2bDXG1TYGWONe;_J=@0D3C1EJ#76{!e@c-$%}wwoQt z@?GDcS&CBXdMqkXG~XT@C)2^ac~0|fjOO&J`f`#lSdAw)eDTO0?6AP5KY;P>MBi+! zNlzW!B|O4@nlCUZ(s|JWlY$j{@}fy_yZ-bdE2E1RI@b3GycM*_%AhoD z5R2=qja^(D73NGLG#O=zwGWhGO={(R)Tp>t_Ph>Dv^UllYx57a&x_9@}kPeQHRCl?Qhh`q*C3qlbIV863`m{k66QW zpI8fj(ZD5Hd|ab6&SHK*`Y01sI!BrdkUf=hfy~jpzvr<_rcE+k$!;{s8_C30nKz!) zm@Q|yeT{H{Bo3p?tqRNrM*+2Sqx%+E#9nYbo6vu^+H-u9F($uOTV77e;yJ!cRl^Qi~0m;=TWxaqko9 z_mBarjua~oX0qaa4jm4_mI6I`J(_0aKBf%`^yvP=jl3^nY#k;_7S-m$MAxUsi*%Go z5k7ztT?27!5K43&U2~M^-{ZkwzSyp%p z289unBPomulowCQB)0PcqcFXyzC0<5?R*h^>njrqONo$9BqjsWiAyO7(n+YZ z>5xvG26Is{7>W*fAI}lGwt^zx%F5fQs(^If$ExNBg9ySAwiNwVrnGI?G|+VWpz#Hy z^UoN+L>Qt?z0 zJsL0k+!n!J2DF+8z+97PdN~yy4-9i=Bv^8Nvvc-F~5(d zSy_u|QUZ$ka^Xe;P)xF@HW!MyF(-zk<1vc*0X*h8$Yg`?m>naSUD&Rj30xU?Op29D zQ0Ar_PEBM++AeT{4-1RRMP?RKkeQ|xbQ zKv%kPrrQRMFW{P|sZnwF*HD;f15V-;kzY~i;@L8UGhKXuNiCZ}u^WmQTxVSv&`dU5 z^Z7EYNuB%>H7c%?$!P!0Bi5o{3bXmm!sO}U#9KnMHDNZX0p&~Rd2j;`mFkwA5Oxt` z#%Kc$i9iExz8-6tZZd0OP>ozDYAPmm^d`<^enk3pCaiRpw1`9|Rmux8N0;c0%xp@b zH!?d_7M_6KFbm5-Z|FWpZw`#&ilH~`>T;tu>;)|z5!Va3DgT0&G5(rSo7f9lM(3M~ z*xUtG8)2ZxZkgk;My9)DA~rN$meZKaYk}C@9*wtUUeGc$nuyl0_e)~cv=_9@J8EKo zFp@EhSd(4E4I%D9v&vE14)w4NXg%^Qji%wObm`G zR#~~_e-Tv3Y1<5mNf^vldB4ig0*ho2`UjQJHx_^Sg)(xL$^NIP(Togg2o!6=U+DN! ziO|p?uUsIP6@U5lQc@B4%L{0ffWJ_&kpbvOcJO^rtH58r8tXOFA0+!Jky z@|rTN$&h>xH7c$XwfZO77sn>vP?$D7mUw>)i!A}ZDC!DDlz+?Am1(-n0v^h*C*MaT zah9@x%vd0?2RWPB+?Cy;`^F zAX>XsTj8(l_@z&X;cq_SXqc0w_KYNtzGnF0gnA5`Ji;tK5OEY|{M+Z;cFz|~AH}QR z*gfORgJX>IMy8WHlDiMmZmWoS35wVA5Yt~uEo^@#>MH#F7TDpDCb@+5_zhWlVX~ez z-)b2`16J-CFSJC(v@egUC_VgYB)lYmA#+v!IW*0h!c1^S?49^5Yh+SA6|=kq4ic+? zn}Kr0*_T((*>9~EXCvH&5*X6&fDidok^fh#C;!h^Pk#CwptLyvmnaAHK0{P zm5ZKy-w)wiL6wGk)~+08^5lkmxPng=RcbhE1Sf-7OE}L-OcE6bUsS5p9ILf#*P|nA z?oqwG_}2Gp{k-_r4;1W4ImFEnQ~HdNgt=_-*#P>wQSgj~JU*3zlZ}lta36o5)mUNg zg>k|ATnjk%Ws#0{q4Or73~|s4|5d5G?1UG5@2Ya%Z8WH6)5aO@b^Ht*))`l|P@+0) zW-~^c4mWrdWlrBy)||ZCsl~xl__mJs3S4GQeYASJgI9l(rbZ;q)Cs(AV_~!hY3Q;i ziJYcJGctk`kqIY>gz{xC@yeX@9(@vaj2NfLkB+hNZIZpCCpy+U?MEMWoQ33=RC|81cZ%mMx z40}Q^@8LWr94bV2VtP5b9?U9&<0Is2@?DJDOvao-nw;h8AqAf7b?N(nDf$yhz42P5 z%ngM~CTkXTjk#V-?jlnVv-@#U0sDCeOvtVxu!LXC>+Wb!r0z21mJ@{U$=-wdRx+A96-!sO{dXUT^q z;Z8QH4sz1cB=NDyT}-iF3sZ_V@WF&V8BG7nyAl4||9dzEj`_QZeh|2~o$J&mg z`k{9Pc{AU7v^R%08nhg5+x2~Oan`b9ES=tV2ly)J*W@In{5o@ViCxQuQ7P%kHs8tal*6| zIb!f9N%}>0LOuFAJk;VakytazPxP{n;Ig$MJ?NpMeh<@2rOal;-rK_!t5xU4#zzwl zM;YXsN^}ntFg^f5fi#4;WekFQ^IE3xlHgbdebbfWOKf~aWJ|g!RQqRwu3N193V~x_M51lvf zO=z~3g=Ri$=0dX=Z+xw;yywYHVQvs1$mcFX2r#h`Z~kH-Z9TIo3=O~n`TQttR2K0^i;5Vt<^Jc$)V{AMoES!li=%oYsI6z58X=FHJ0Kp;~nnJZ>D5}Vs( zO0B|f0zkmxK?XoT_c=iDb-H2z0lT`~0Ko%n(X0-aDZj0afACA>bJ*Qh?hNYq@M}g4 zZjUVkb=L5pQEp&6D);b9C}AT%f%ebPxiK>pdBbjax7o;?nKIw7qw%u5$6UjUH|)L{ z5xFJKqaHLI4mub+688?);_ufD-cYmV^_hY%1r8~hde>2}34qJhNk%E)E#q+N=xKQ2 zZG5+9GLpHC?-y{#1JSfz^}$n)M=oRJ`fK z6k^hE+yVp9Z^gkAtLNac)pL+Ot0}DwY}ZS+)Xm+lryU1A;J2w8^%UU)Fy7xIqHPe2 z_Y~B_VZ3+Y%7F0(LyN@nwBx|z{F$#d%2K{c^&fT2%%7<(qJ>tV$UF&?MZUq(t z(EtPCbAdL2ea+}}5q@ZRv>0DyYh~*1%QW>Erhsg4X6sHe(8@D{TWIA@JPnoGox-0Y z)T3khe6J0|Pf7B%hHYWj9n%K1fX^ScQCfGGmh3KJV@=Wz(Ac)QuW|x-8{cR-@bbao z`H3^=)Tdok*o|3bBZxivhnbR_G=$s2NH})PZHpaN8gzK&(>fh~bgl9n*kMXCm4yRR zC1_cfD=He2C0LqZ(LvcNNBCG-NANyEE%+9~OSsIMcC{^pKdzY}mL}8*tZ`$v5WY}` zHwjriPmN||{zF7w8CwXyR*D(1RqZQG%$V&5zJEt|^c){`GPe-M>!;7!atq=AVq=@j zfOue~jb~rxG^TGMyq&}UwDIhI_K8P&)WV;!;9HQ5o{a|u9H+Nw+hCW^60yyhGG7xg zv;3(XVRVlvkW9km2DBkGVlOBU$d~TKJ?4#PV$AmjS-YdJKOD-EA(4LCP`9% z2-CCt8A&>A7i^SQN8QEW3tI4SBm;*s;KEsOw`w3!rNz;EdJfX3Jf*b(L^jz{Hy4qeP7c-Sn<^F218D5;!QD0pjdh?J zj>dLyWuUQUNRdeFwaI*$D6EVRnB;z61fVM&g}snz-f^&iP}nUwnNWr*IQ(PBt8Yy;O!biNJoC8qLUj zhlso~5ZLESF(VMzUu9xWLSX5Rp2z1Qu<`oovox)BXj%MuHny3x#e*s#u)oA1!1L8>3h)lj6j~eC0PldbQ%^q6Phn`mOR3#B=t#s@z zdotUq;bjUueZlizD|#5e`VN#W{BRjYS#bNId|QyZBY~{5?n-Q&KVOD5sl$L871!bF zzSSBQrc4KZ%VOU<>BA((tG%@9Nkq7xW{Sc@811*7g_lyP9$u2+?bx?ke>T=A-E(x_ zybq#T2~d0BTdf6HlRJ@=RR>b|ejZPR;fYeu>6Dur^3QP;c$`Jh4Y>u9|2<68jIj;tdA%^r|L6{td8-^02I#yz;Cj8Hy8NbHxR+~<+rsBI`p@*E9kxgLMihB)CGBx;_V9lCqFwpHhaWhN?XX?f zYPdgQEjDZ+^k`+~y`6gJ5xQJIN(&duYQg()YQf*_ej6^c0wGO~Kf$YiN)rZ>JnG~- zQ1^GBZnlwIS>tnLEJe@sq+R#Y8b@JX&la#o0d;>m(Hb{)v+=K#;Y}{{f0-K1$h3%D z=E{J&f43Af0_y&4rl2IKo9^g(&x5+-_0#hbgdm0n{U#gROj6@>3_;z$!D&o~y0254 zjVW};r^K?mivK0Xc_xJtY5gZoWCEs5cVdE^ij%3_EnYicjQ^L7oJk}DSh*Op`y+t$ zi~0RYw1QkAYfVOzjR06b%c`ym!1~I4ra&`UmtK1(HOlkaXc`Z%y(gOHk#W_d!>gkt zE4_l!<$YxcWiD|NE%Ih>ffNx#>n!^c0BNlZYf=YKP^02HSi`xM7YdW7BZ;L^Qg(=m zzAKj235h6az_b-dNvTv14Jjz8d2Z!@iZx0%f1Nk)DKsmClG32%SW^d75KLN-H}kBD zOPj-6{H%%sYSR(mIBVH4l@Q=JgRg>qO-@qEuQNxN2(VoAltO^zLRI-}0s_qJDgyzg z`y2uODqS%Im|d+00-VjeI9=m8>Ox#K=xlm zT)Y%Rk;nU#c1<`3oFOg?=O_fRBg-hm5x?E**6hA>G`u?KS}ni9Uh}L1iCo6H zY<~aA{%klLv;(WrKea8Kkag@je)ed*?crpNpF3U^eVq<>%aVrMviqmQG2adXEW!PL zxUb%>^#Zry&*POPI%d8ONa#`ax>&S84@dYj_Wo&S>U221Y`5&L6|}qPX&mn(+t`KP z?BK^PK42B2oW;)x@w3-$;Mbm@U8^oywX<~B?|b`U7vX*q8hz_RyK`!LxW~sQ1X{gj z^#VOk?W1H8vC-{R@ltIQC#w7C?*K2s*9KTgmA+|#*E;DfUAnzTG>8gz<9+FNH>fu3 zb2enRBb;!oM)Y$y+-F~KgDP#P$7iubrQvY6ZZGzh(ch#%El>jwb(<&|hwN)Manyf0 zoMahr6(167*9qGQ$9uuj+}(4&i|ZTAn^n8pZFj5qfJ(h#cOh;f6=y()Q(VkiFT<>t zemE1m6YIj8*$-h(@_rQ!vh@w-jacJwFYy3F^Bst&0iOEdo(8_|(zBLrNW6~UJM30J zysB&0+Fk9NX)crW2+o7U196gwTZf_AOYQ|cYzZf=UeKZVu;vuskoD(d)luima+Xp%kcwJ&tqz76m|wPaRO3##W_-{tl>Rjs=| zp+;atP&q370zS4IAAs}W3CzjR=^jz7iuWeL9Q=Knt}qA?D0<%-x}o0cQ28!kgwao! z=st2TSWashhS+eMZqR@I-oxQ!$L>@i6uhp5Z2`p0ZYm*Mu}Yp1Uh4!w$3M2PfMS2X zvl2LXt-IY_Ug(F{P)$YvYE}aqr{2Kb`r#PL=U#sMU6AKwcc~WZo=Q~rx61D6wSy%#2E2d437QQIHXc}u@S=L)^iPe2GqA~KHFD30fvVpj3%MBX^;cSfb)o9G z%T5FT!+v)*+GP5>eMHZo`sN<|+J~U7V!!#%YNL&VD7k27a6moif%>?=LCQ>oXnnTV z!4Q+6E^q_LpT~iVu%32}-hNksVLycmzqc5x=QhcB>1_n&jXPOLg3UA+?K)g|1td7O z9bk}aYN&O#YBw#nQMKxIin5ICebh6l9A7k9;xX-FIApiZ^-uQ}!!aIC;J+|Mw^euH z96>d(@O>SGCm7B?5Czi;5M0p*j$ftN9qu3g?@Nov>>oadS?E1|% ztecjRH3Svl&F{ZbpW=y6R)bxBH14yQQM^m^=Pce{@;dbAnw|J_J^guZ7=JF&ANo4F zM_*6(=$l_2eG|;1vw=N2JJ_S+MLarw#G|e49&LU1=z)hv4@7$59^ECFj`q}CI2I`x zdgCP&`D8tA40;K#2NQt{H5c2B$jeyOt7C;x?Qx^WaXBh$wBP6-lUO&PS@W8BU*ZlD z2gK!CyGOCJAMUEPafT-|c4P#jCq?-)u*|phA3}`5K^BNsuvH&k#RrVSvr)V&DrSzc Z%Wc&fy*fGKGWoLim&aGn@=;=|725EYj>28Er5F=?o8eq{%8jW>fX_&3auFCGpoa(Bg zGHYfU5J-qaBc%|al970Txhyc)mRACSS$h|R5jMAl4=h&Lt6j4O2^O2jF0l4{`+ppn z5mA{@8Btv=+P2p=$c5=!omuvO18?>Y0 za=p}=cWYt$?)L6m+BdZ)qLHR^BB-~TCAS@|fEuNWS1mW)TKh;l+JMzVuNq9T_CtYN z3cY$QZeAIv3|5AYv?nSf(Lm^hRabZwon3a_M#(wuPBp5nIj1+Dpcr@1gSTd#+W zrUwJT*3fv(weCqARjxK~ZPT$2HXIl!^szY_DaNQ(R!4&jql3|!s#kN{2U{~vH0p$5 z)0=69KncWrwO0-h%b`-$2?8jD=Yg6tPoIX%tw!==#wi_Zy0ciP6%B>X9KLE-Hde+e z>nhtSt1IKtHPe;)ygS`&)oN~Y`b52XZ2IMZ{((!be?{^DgAAsfhBw`vGE>a}Fx!6l zs@6$ zRdp{cbcf!KcGJp}IqFsh4~A{0RoPRSObBwYvK`0{tQ~B&W}03}7<)8yfRUVVe@pV4 zaTa=c86_+2#mU4If$mR$R`vqLHWP|%3Z0o&)oB(>^=dI_xZ(i15pNBtA8mTgufP7h zn_mBdoA|$N1a~k27d<##Z-l`3Aau)Ny@?Pm-y|!akH7U}$ZwP@m1gzo}Qk3_FA~ zY~OkNE^=C7o%OmOWD58aZDGm*rrnhAx*cs6eiea+@|4~@3jf7@PwXBYiE z0uatM>#c?$0EyBV0`3?xXBe8C@XBGOefcQzV;=b71Iuevqj8m#DKenr;tp;UJ3tjS zQ!g)c3>1WTb+dk=qnv0xoM)*`MnF3`b4{mF5gJCX+6T<6&-nX}##Ag^)P0U6{M>)^ zHHFtqyk<9{`vjcGzOx@oMeL zC!-pVz(e0ZBaJdO#Y$}yt^`9c?48Cc6FCd z7_jo4Q0aDn_YOr7+^zi1S~DrYvC6k|0@4rtHW)LM9Ii#~qRzz#SEbcT6P^)ghH^smM zOD}9SC9`&IJaiCiYW;$-P3k+fT0L|W6FGXp;fr>Lu+Z)+>>{Y{+P@cdKJ6cD6Cn7$ zLR_V=YyW;Q;)qqfB^sb=B-X6{PO$F92_%k{_9ZCkXk~$_@Gbb1bTX-QB5T=b<%zZ` zKK>qTGDg7b1lAvbdj25%0g3f@&_?6<4>glN{Ht#5M zwOzB?`>*aY=3yK&9q=&1={DBuG-HiU7cAG~o_nGMd)s!jkv|rlTB%ZR3f$^u?W0w| z7wA1jy3Xe@%VE0+ExmHvzX8Sz`y6VHR6c`}Ur|w@+)OmRe+JZWaNh=7QJ_yd8bvCB zB?5bF*&K=njf@YbGAe`7@NBDECB&vf94&_RQW5OZFlhTX1AJ2aHZY9Hi=-xEFoqb6 z$5H}we=C;2G#2JYsa^|3e*(9@Co1u(8(naz1KaC;1vE#AsO~%Z#?JYJYO^$T4f*E~ zaTgqomEaKTLC|1#u(4Fe*+%m|z8*#A*#WBjChx(&2Rlc{#Fl8CI3fZ5dldMx2A!yU zf||Er2u@NBE=^5b&B4I+?}lEqOL8JqqVei~2-*quE91Cq!JZN<*vcOfc31u@VR+^9 z(R1@KAT~gki_!*)qFm_KC!{=BmHtD>KVn$=x8WldYb&G1KMlEY2n_t4$MEDEyF1QcMVCn2PX+6~ezb)B5F`9hF_|Jl2bCG8|a(|mp z7M&9tI-Q+QG~GE5+#XG40{Lf)EzeIZ9*UHS$umfs2$Sub(6?yw_R$k_vy2>srxPN1Wo1UrS7Uh5r+)Q~oKB81v&X+4@Ze$*ZBCIYsu)w=Bu32BF)dP! z7=H%d`z81zX+@c=%m_%x>OY0Oa)aeGVz8i(1?G#}tb#BKYkoA$<&&CW+@O!^YwHrL z3XT6FSrP@qPw94x04KqIc$F-!vgAc8Yn|5hAT}BESHVBJ^+2Z33fkzOfGqhMMbDmZ zRYR|cPH{8?DCyuQ(C!qj`M*R8kNK%I_dR&Y1*7jaRWzniKHxS=Gq#dpcNklb!q};? z<-ZOd{nx`ES@zxpCAp#x{w>%6ntcA7@z3*t3;wP6bOAg?g2|jVd*0sm-wJi3aSeK~ ztrQF}F7?2dKY^BXrSjhnk1{hvlWW@*WCbeB)|-W};uh$-RG6vOOUI`8#zbE!5$Bho zn33IE+GG|z2yAg(#`+J4d@(~8tlW`kbk=jLWjaF=HIVqP2grLtnIx}RQ&oeE9^&&Z z;EWK960#pQA-jJA)*kb($A8ATrUbQ+;E?XxPRw)&aM2aLFmb@CR?+i+_%OsA_7<+I zLClXnUID5CpNg% zj^!fs1+FWBkb-7qrg)-z6C#C1L~2qZ)!-kX4EQAr6M~h2#iE>7;w=T!b}OPye7Np> zqv8Z!APtz4jq`OlE=UG^hXO=i8ASh7q{(E*}8I8E8F1n$!|aDM=e`bE_rL*Ir}%@or$tNTP$jhLQc z19LMp>K8$`K;MQ0jWWe_uMKuov*^Wi4X$ilO6iY8NH4a5y04EkeW^K3Glldz8|3nk zR3oIW4a}K75_Ha-pwUVir2#tvo)TfX$p*Ky#qUkn5nKF30C)5oz`ctEAbT4BmOTXh zG}g%6!!|G0Q_;KQ}g#&GCWye4}22m>7@Y ztGmc8k!oJNH22_o*e)=rI)!r~;U=zU;${v@rMcdT&`6B5unu0Qw9A&JUa%5C=R-|g zNmbOktDOr7iLy}<1RkZwNZ_^5{i{F`2;M0k#nCr<8#)XVzhNTGaK1rqIYD=ygVcMY z#-G`tIa+53V$^g?8Uc!Ms2n2t;_q60lAcxuzeBCgA2;ygNqS=PRJ4x0r;XH(=%Dd=klcOpuocGBXUi8p13FnCnO^xPl zQYD&icspMtOXt^OLZrF>Crn~_2~GX4Vy`5Y=l?$;l%aTi{gs0GqrMx;eg|t9-2Fg{ zK1JY$2Vf&bB5<4FNs7RA3N{bGZOcYZj=yn9g_Y&wOnzE3UE*(JO8kw?OeOrLt&>c@ zt$>nfe#v@IRAbaAA78%e3MhOg!xkufNSNMy6V`QOCWg}3jzBC*$U134R=y#49yS{1 zx(oDyetWj`5j8&$h$g5&Mv63@c&QN~SOjf9G)jq}VX-KydS6Wv9^=DHiI=@v=~65H zJd|`T8D4f(al>I6FS`Nyj&~ZUZ+bnaFaa%J?}JrwmWTL-VTj) z%d5ySzY3KN;$(M0bwiG6JeM}uvFW00oFy5Fy2QyIwt@Q)H0l>sKWk3a%z5w)8|3m3 zRU@X~vw`{DJ`(hA%?X+s{TW&NM6fzeOG4mYfUM*R}f5$M}+>Sqe+ zSvJV!A*n`4r)^;F?IS_Yvmj_z%;MkMAV&!*sm{!x$hG|j;4Bh=?0H?^DNv^NCp&RFcY|a8gd+-0%cz^;s^_rJ%Ww$@5Is!gD}~9h zRMG~DwGS>yAy$=0({`m@f3Olj>ojSCniwWiQR}XBRuU3rqap}AN{^AiYoYTn8TTU@ zg~_;kFA?UHFd5l=riRJx)z=P^Nnf|QqvYOrgf=tOsiuIJqNaS%f8$W081L(swopXS9I&R(ny{< z+UOR-(@h{bGQpx-ehe@A>@taNb#OH`#C2w>l=C=O#@j?2-x1TL=U`VtV*hsRb*Y10 zAJU?t4R*aBn(FKoS)^F7>%QELI)Yv4q*~fw*I8Y3NJhjf8G1*=%LRh;DdP2I=$b~n zz6noK#4AI@dDv@57c}MA7Z+TxVdnr4+BaQeU%Qmp*Sr%ps`U^)fmWa^j}iyVT|b$n zf5pbaS9e)kcJ6}4m${My^8a~4{{9BWo;IN^-vayq8;x^42f9Na7@LWc#TGr)jEWe~ zFtdnUNKKdeIo0?aKrINZ(wgXuKvnP~x*%HFHHCFyrC2-Y$l z@{IBAzN&m4=#o=+p&~HSU0Uco&dJ?^+!LyA#L@w|D>uoD%$=G&#x=?3HkE3^hdAXoi8=PVm=-<9GZV7<3)t&Y$1~rlMMWFWjG(Db zP0M1$;+ePQZqyOaOefXS#xs@gXUYPS{{75k*d4LVYk?Sjie)|wUDH_Re}N|{mYE{- zJdUY+KT|?aj$v|Pg=PJE0FWz&seT%hcCQ33^_7x2_$Y(Q*JxS)r9~^3%lCsNsuQ(^ zwo^jn{zfXlYeHAPANvkA8s{1ew8HX@RQ|*We-^2H8XBcUDzR9%8Iv50`687AYvnGr zV$YL7RzV}3rWUt!rjg1a=sVu|psrCOm6S9RrkT#~?Ka4n0N7&>K;5QE7{Of=nP0fP z&<5rO&?qm*{O3SrgGlAYP~DJY*{dcHvty*VcJD332xJUr9=kYds2-XYuqz%mHL8E>x zHPg_y;R2p16R)sAj?H2vQi-LKwVM*DOsQiNsZ_hsI%r8e><7d`*IUahQi+=xoqJ4( zRQ?62x+sy#z=#nnQrW;p`S)EN->gjCfp@8uY{B1RGGxMqTcCw*RtQl^L~W6|U=Wr3 zkO^vh7yJQil%E@m8I^oE_jtv`U_W zOh+XTR_ji=Sa$KUcDGhqpdS_ujPD4HF9$qely{j9z30H>{v?|y9l}JjRoh#D>uQgC z^;W=;-V1j~4t4aaGO`uv=b% zyvdUrdgC>4&HF#*m%JyKt5@qK3kZrx+lFE4=!a};8)7QhkrQ?;al{7$_B^{61Wv_W9Wrdw+Q!0 zx^S6#NxI&By)-;B$6zL{6~-*|{cWXhdA(7>yZ)bH?J*w*M8a^dSRCY&*{!0QJ?~%( z3tQds<-W85H6LXx0E&)8YijjS;^vX7YSjgD4JH+(fXWqIP&k9v7UD%7C|>j!I{j5B zd!-OAJ#?B2g%e)2iZ$omCWs;Y3@g~#C>35RcfxJwO95?5)MqG(IQ^rEbfY-=PhpGg zmk$76eoUlXKOvr`)vpxT$U1@8e18uRtlL1<7S{^;fig$d2sRq$%MncCv;zbq(b}07 z=rg!EK)#oleaINZbOhfNz0jQ(?vU)b;pMY|TXjpJTP}kARhYP{L8P*Jm>v_qWCnt{ zPAR+^jcjsITqq$|bk#K8MGrwW(VKnn*hYF6mfJMM&_A6vB| zZ3EL`Z=sG;39dK6=A&LvXgEQDljr5`tOHjI2YBu0L3q#9v7CRsjswSDxmJ}66T#bK z#2j|IVHY$?Io*K8;+8<~U?1jG=0i*hlHt8f=~6E{ELrPfGQ8}nqHDVqLIwosV>IAf6jWY6mz_7J+P^xQn+YI8U)NW||2HqfV`QNMKN3!(4sixO;DrE49L zrIHPl67x=}vj?|D+-~b)GzyzywI}~Eut@loiqY1i>GtJO&WA1O?*#zY8*zp0y46tu zjrN$>w24rtJ$2hG58NLzk7jQp@x<{Y+adqCDlgnaCaqt)5_l&dg1&V+o024- z&c50PIYx6WNi{lq#s+4wj|4576Es_Azs?4`ToldL*>~8$yseKEz0;hcnL7I;Hpnr8 zDmoiWC9RO6vs3D9@1pDy6{a@suCljx;X;SX)^_QSQ)~S>#9Gf*KiDffuZyvRoTse@ zN!3L;ult0;3H?x6nB#G5)Gf@B+(f?(E%7*DMk8b_a?8HO3Z}lkQo`9En+%wo)_p1m zXBiI=u|?*A!D-#Ko8?)NixFBD8 zj#hP&Is0tF=4_@2dJ`vr(VW#n=ciQpsR17T)i+|NRQXYtWIm>xQYBF)%_&uUPfw}d z3YgJTs^saJKBamG4b)>pL@5R5H%;B?Im_ z%Xc>*(5JI}Ux2RZS-wAoC+RGoB)t3pU#9dU>Bo@t<1xK~3-=)DbDY}yb)0rr!0~l@ zhKe~MX6sGzyX?+-aDIv(+4E|Jqj&`ik(pxES%Ac?qXnl{rp2>f70&nZ@~P2lD{zQ} zo@p<@Q_U^8L4c>O;2a5fxF>Nwa=(Xids{G7xTX$A$*D`bQEkluY%dsP2MPK3X1!(* z7D5ls9nuju;Q%81U#r8}uYjCcfp+K>FFB=(yO%t&-T;xH;Dyj9N17g(iO0-b=wN&7 zF(8njS^kXifUiMvoaD4lQgTmX=f(Dk;q%u@r}{OP#YS)>#OfL#+{!)1)5#cRzVbnm z@ApWrgl?beX_Sxr3y__JW2zWvO%ZZvb2%;^pmV;#m~MNvZ|G`rUNhhl7XMCYIeHpZ zYkW%SrJrqghp`L6_Ya?V+t07i3G3!QIpxw7S&P~V7caJf~O%*T`sE)gNk1{dGc4eo!! zCz6Iqo}TFq?p0)ims}-io`4yIPUw}G&APiCU2MMD6~OnLf%$x88zb~hb1&)U4Nkd` zTR-ER%d^F8^ZAD_+8Meh!+nKa6un*h_ZBXKRGU&U@aBp^!zsD@3UQsnuKoLAcZXYQ zP-26$iD21%1$ZuMvRq$@eN1U2D>Lm^ViBHh_Q-os_LbO2V|dX+%Vi@jFgNuhv71!s z=4Mjoi^LfDUoj!l@-&T{8wpMQ?_;ki4udn`=s(Z@jfIlRlAO93XO`wpIQ?fWBHD!0 zUqDlxs+J{)eIWK{q>(&o9%;wPArD-9gR_P?RT4g&dAdAnlnHS9D)ci5o)t9t2B8qF z>dnw}QHDRnv;<*@JbvjFAQ1mfFqpK*V7EO6*{fQ@wT{HnbV*&>#M0+vtL_XpR5I!g zH`EtE82jXgx(0Yd-B5?&NpeGV>J{#b+Ln!+oJPtO1&Hw%*#w5&*V~2ViRVlu+pia2 z?K)-f%uv5g(>YNnJE24T7T`2$fO`iLkt*(dfjfbyA1dCUS+`GQy`+_OWuB59`?6hS zfHOxKw!oPmi3fS#kEera4p`wR)o9@C1Mga?>N@BZM8_X+0@;eupH!2;-3ydPNJW&~;61U*AAzyQk+$h=loju{O z23)|Sxd*m2OA+EH{nrd+n^c5a)_IPredAg`WZ(LIZgOf0mLd|SEE>z;PxFO+A(kA zUtptgZX*MFDc(kZI|Pa4!2`^k{T==2uU)AkI)=}OCY;l%oVAfL@ncV(=wSrzb);A?N?D!2xn_qDSCc*(aQ_dp5VsQhi zy3(Zcn%$C8htH5Z)2mH(CUpQB>7-V4$Qe2q{ZZ&U_Q#<~rnna=Q6wBQ^ZRz#Ajhb# z9KewPMh5wP=h=*5%7DQBI8@H>@$}D!>V^c)KBIb>4R(1btUXA5qYczoL!-PxYf97C znA0>PQy*Ak8p{Rix_@vDkKHf(P|E@WOGY?jO z(FQq6U`elL0{E6a09ZbyOi=_Yt)3|-w^QnDNw*{fJ5y~W?_d@oDf9WNvZF_hS#hJ#C?&55izPYK8XVf?aHrChept+g zE0AGjR~2nI)8+6S=v!xEP?E?~KPwmXLL1~5&9x-eEQgodz^`k_~ow zD5@3G&<5&j`$*H{<}}T;*&-X{@{m*`r0=tVd0!t1`T=u-W((=3Y_RK*qF=Is`A8or z`ek#9W|~k>*dRvYST%=}#7PwUh2P%@7Ptw~IuF zoq9b%<=Pt~h&?uJprVX3+#0R(921%%Vx?TW1zglE||y z%PcxzgB+u|mZX{$=NcQBhx$m+>&yw7z2Y3R!7dL)yWF7n1{=5weWdCe&8eDc7`1JX z%R^L+n10j-=7;)7(EH5^nk}Y(XoFoIifVP~*KMGFrH?fIra4VBh4k-ikjq0-jgbD# z2IfEZk)Z$AoS@l4y8c=6DxSTbqD8=#-X1Bs-3I0uG}4)Ky)5?y=-YI;&oZuGWP=>)5XdJ+`wCZEjjeH&aQV$p0D3nEU zVin)i@WiWxQ13Hh5j*;DA2#Z8^g;NV{uOu@3XhAyH^pm^j5*(eWKQ@PKRfyt;B^v> zdf?%CFT7VG$wn<;7AoBYvUJlVS#zI#ufiPoT?K!64$!i`|4!dDt{tFP#UlLSIIV2_7bub8o^9U2p7~k%?>xV?Lvn5c_ zU8o3*be9%7&%ER3rHwN0`0@8dFQsJOk)uqS%sYHfGw*7^Zkl;Vo}THhnS-Car}d9G-)?GT=B#w1xc zIL%nL-K{aa=z-;uZ5Im+O=FWj9<)xBW`3kqE=-ojkH*ONoMD&H(f!IO;`J%JZqu`2nZ6a$-TbZaBxTph`h;iJZB0i? z&Z^_e0gR@bnanJQthxe_K-_%D%aW3!M6&9Z zuGrIXGgIsI<2FvMdu>mn?4DYu4mW$L24kG0)=lAvXlmUwJnC#RwBK23T_mV1*q>r2 zeNU~s$B1^!vG;ClG|r7<9HcL}wP`B(zqZu6-!~#8JAL#!gvDTn%Bgi&EUwT!rPh5( z=}fObSrGIQGO+BbqI=OaweHK%ckEY0drV2KqePM8g<0p1zGs6Rqq^dAl>nNg*8SLK z3{OELomvnH>^}~b4N~iV0@V!(oE<|Se2y%O*)oBejEPSk3TqE~Jj({^8PKR-G<`Po zZAjD1gC5g1$mJoa=Ag$*ZD3y1M}l5rPS9*2eYFjCc_?a-T34|dgWE?6`{oqRJhpwa z4RVygl3vXOaHl;046f}Kf@=s?T0K+FWu(;Uo?53ilD9I8kXm=Y5fNBaS{)UT!!or_ z?WvocJLdm(msJdx1a=Jlep2;UJ+ zSg^q^4@I>?dY%o`sXo&5d~=#++H9BEAeV=v8X>*G2IlpBBsE0}5_z^| znMEtM$#lvdv0$Pwnrlg_S#dVmz+4ZF`ehcK27Mb6G<(IFu)!`5MZ2Wdy~GCYi~2~_ z3(cvTX&C*Q4RU#isu5Gi2Ihb4BSA~%1kD!H1sm-0P*kf+Z?}Q^_CC@yGN);#kbc+( zxjZD*2QuMnvFu&7BiaudZ(M;?8r#8q@g39(pmi4}3 z+}fVV2VlKD0CjtScu6*5%Jv|oPX5$7weh06a?dp)26N@AqXM#+r`D;Rbl>rOt&2t6 zvE$Kp$y4h-lEXL5a+~lxf$p?34uGZB-9_EVi;-G)gAt3^(TD4?QJ13+%OthVSMZnT zfOTqJQ|VT}Z()+Jjs+Ehm|Ca4*GeEst(${k=yoM2Q%wAjr;99p2B~%T8PSW0;csB0 z{9?G6sdc}Xd%QjDq&rgUQqGBdg0KxGMNF;3QfcW>_QFtK$ev10=KZnKE?aDSK}!Iw z+t$XY$*FZYa8pz39$yl)l+?Oh%!0#ih)@31x}PiwDyAHYQ|BfaLXz;wsdW_J?z-z^ zfN4(Mg^IvPcWI&X)H;4}+9;wQkRLcp{hDk*8-mweFRT zW*zTM?m4UOg+^I*3~J8_b=#AK29Ai3OScp$bT0>figP1Z3f&b-BUvkJQ|J($Ze}ED zHE0U36uOti@S;yFgA}@0I#ROdhT@lSO&Y9v@$Y2Kb7E|J&Y4RH=O4vhQ*!3k3IfNz zd%RLOHXNB>Mt4Fxer>8;08Mo&R+bKyDpx0s7A;loF8kr%VL$xr1t7t>Bhf6Ky-S;D zwz)%vW#pJ8gYC#MyAbHsryR3SL)SFN?2q6{$}x+l9#1bjy#p0Fvy4w6FexsE&QNW3 z%`BT{ACD=-SGCQ+MPB6sezTY2= zz<@_$22@6(p%YHC=GErfcenYMeWJbip&S13QhG@q|ANkcxaO*ZaD7kHbE@9!oSCYt zUYF*72YaUq+N__13y+&}!T&b4*natH!0s>MQKtuSZTxdu{eFQMVB=vY|CU(y%q785)cW%qnKb-39U31}aZPsbG25NMzu5dqZmndQ@cJXK*G5^PR(>#5(> zoh;r<$0SlLN|f<6MzmwzyhGS%oEy%lRTm?l4zDIJOk9#&Mz^~#Iawf!6}*63LD>d@ zeX>oyMlLqSVdp@e6BKJkD6+#qJ~T=>41~p^64Ph88DwMJs&uRu7?!qlGZ|!dRnhZj zn)UWp=sR}#p@pbqy~PBQav3`4lM)C^sdIW7mlF=EExJv>F@LTLWzbAu2mQ;Ws{Ww= zxil4B{M`H{wFUZJdHVHyylXgBF!^;jY!>pL33C4#;EN)a%}yLN6VK0(L4&NziI`X{ z_N5n3?fHstDP8G@#RT%}WLVi%MS=A1g~|q5f{#IUoj_8O$f4h?vub~DgB+u|;-8lQ zMw;^#KevJTGianUcY7h|FU<*>eZFE-L6*F189*s!;*yJ^Fwyw8lvd+&GIMs=z}yav z`bE*5(6_0GW*vWci4Ag$ph|)nmP%S7MJcD$Su1L`gz9R|?#lR6U4*zp8Ed=b@p>mm zuPk7S_KME6iUVNr`YTD*?gmzlPvHhe9Au_d0~>WQt%P{}mTTB%9ULcRuY_N`b(#yY zuO#br!p*ms43Y$@Z-ExN353LCbVpJI^QQS9|9iP8T9*eE~!Hze1>pg}<0 z#OkUG%QRhT6S6;?du%;ucm`FcksgF`5HnYbNn@!kG!-zxit77&|LUPQCk%qt-2(0_5s4?Y^Dfv7AJtwoYg|-0b1^qwKa+OFt{_TRY%hJ7xM{ayI9E5?F6Sz=LH*U5>A%0nA9T2%G|Ay(-Y zl4vlfx0)rlUD+F*5jLG#P<3#DD}o!nucRf8$GAgmU;wK7C(t|#}P z#t!sokbVNReXz3eU^Fu4*4(BO)|=4N2y6mf_$cjs1AeTf0E+Wz{8}H@ zOT`(dbPV4H?aH0eX-KhJJ#>ZQ%U4G01Gf~`TJyz|v-ReD8%j374QF1X2%o>7$B*Ab zXJfR)t-7S7c)|-SMIuQqzFyB7plFeTbxpTXZ-&LHd)x)Wt%^n~PBs2H5N&o(dO)wx z30ncLG!PAx-I>-L^tXY96re`ab>^XD1PEVp5uNsJ(FU?rF1oc+y^Mi}XrvX+PF^q> zc<{VUepz&z&3dy~acbqN+XPzUP)lJu+DK_E^fEwtX-DJA8>I{XMwlMa2HI~j2Htv` z{6c9QZ9*JC%7O}zs0ui>qxDs%HrI0IT%dRvey?(C?dbHTTdFt9#j@J~838aJA?#qO zUYi9pfg)ZRq|}}DPQpQmXoJ%V>&2ufTIGRYtuMFc8^u`ofUu+hW|-ToIaOrcMp8n= z8rh!|H3GL)t`|?vqcCl9Pr_{nZc%JWq@)xUk9%+p0uj!Q#j+P*NCyyMqa5Os0w&lx zKqi1`KxPa!2?#&pCF=}ab|(!)aF1C ztKPg9wy)f@E85U-8$}?B3-b|9rT~z2Sb|Z%B2J5FYb6XD!M^EfC=R9?3t^>Ro2obG zrrXh(Sd$C@Y8FFx9@rBCJBFcr@|@?t5a_v~Ia^Y?$C9M`b9wjZt3i=H<~FB1H=HFf zVCqj-!ucuy8ws5mm__BV(!P8+8V8x2FUHd|MxYopP(n^cn}UT}=$tH8ytzsh{s;M8 zQ>~-uuM0qRhQ-&mU|t76sME=B`m_!z$uWPddaKJf(&rQa2l$Lpf#h^^X5@_G3-NT;~JumKxXD=+%inz1sFobbwdDh zW(jH?E4uTJS1mf_GOAcI?9JFSD&D}Y&QgVTDq8KNQfUqD>>$O^+id(}5T{U?ln-GcefFP^OW-8@ z38E1!4i_4vF?n$+sO*4sfxL%R?ji_+4${HID!ej4{pgjmpkieQEKe7a7`wRaMgv|j zUkB+%)98Z$t1=$l`>T4wrj0fQEUoKsX$5cm87qN6eVV0b}$Eq4zTjOL15q7z8Z8)!)b!H0$B}UR#AYldX|dU e#>He}to3T8YO9PBaSoN~Xc<=!rfezKrv5+ME-2ukE$hi8o2t>yDcy-c5Y(O`NtV8_Ok4BQR-PH;p1h5+<|vp52+V zb7wB|Ved9gWhB~WrSk)nA!?M01_Y!kNonB+mSWb|LmA2oCUG|W%XXA-jR(WfCXSF9UMu`>M z_u92W8W-)8kU7*k0~J{tfz`1!;>GNp#>YzfUnnJ|`bBj=t%R$pvwE^it)GVuUT*lE z2zm%3){1=JZCXv6H7;#Ow(m6_sQ*;`{tq^`KJdPV>#Q|8G8Ku9(1}>B0}WdnEX+02 zNG-OJT5Kb;*m`GsmGlVtdK-qnK7cr($I(nU5X*;D&$B1Qr6+ACG?c83PT*g5&`S;K zaZUv78S8#vTz10Pa-C07YnEqZWKheI&5V$_=#s2u!1BVn>P`#Sq2fX*9~(+3Hk9|+ zSXb^paUn8n-))7Gkv7z3IPH!fM3#pq56rhMayDlSR^O-_Z5CNZ%ZjWshQG$i4_$_c zEU#sR5%PtR(<}sVUFt4m@a*t1nCL2l4?GDSrUu}6O*bY30Gr$JFiz7@Mkwuol$|L* z*Ykdh7o2Pk&&ia=$&5JCV(X3vd-Xljg%-4qo_eVnacd=yi7waHGKvd#-f29d{P1io zcMhw@Q>pQ@%=9hS&85(-3nM5xi65%fKoXgzhz9mvP9s9TBkh>tRt-?pZWRc?|voBNzWp{B#IEkAMnciC9R(Vnm#E z?QgAQ$*?l@E87WsP&;7$>v=R7mM>7}oi9FgAbUCCdr%~jJ z(~9f_=4ju`M@C0Rpuqo&*Z3$Nvp{4oi_oh1g>p5LnKi$)y^CUe84LU?yVB)Mfx^=+ zMT*Gi(N%<580J@>%Oq}`+cOx=6@UJ@XN+f-pIMPTY#H6*P=|RfL{R1y!g!4&@u6#M zNA+Ro1`!(zELW?W*GSkjy;%^`85c?3$NByASxz3h#kUCCC9UE>XFCy-o$VT=kuW{V zCrvb@LixS;)6YGLN$`!RH4%3WH2p|0Eu;c%%kdI^4z-IZBt+XC%o4|l5^)gkY^&os zO(#lTl%KCyftTzc=-*ydA~KqBkSxt&T@mYFY+asm7l_&id!gp<=OqZ zyalnJqD5cXAR2r2l}e|exuE?YsRUY*tsx}PSH66a2wCK}4^ZoZ%u2qtca>tCe0qXu zJ|dF0;hBF>?Zx7_HYgdc?`^1o$*MB_eU$$1YH2-_nAvK(t088(=)=>UfQ5iym>kr< zTMX(XIGVfHD@HIF)G!&s$zs?P@6Q~bu`Ihb=5u>blvjr9^ZlTQ5iyRL)b6N<27@{J zVulV-oG1=TfR#4B=VJ#ZILK~!o=?-v680s|K7H=a2yw)!aayu@`urIhr&RTbyCCaT zBhO--K7Ss=frQHz#DwyBg^~X;8H{G+I;pBIZFCW%h8lYo=&7jW&nuObEnkdYNvf8^ zzbOrsQ}g|7mA{G%{0o!|&i0Q~p+BTQ3IY4#4IT{=oHiuQAlmv;xM4z+{`Cc0I%Ubw$RSW#@DJ5fcMlxFEvIs`{ zL?_?bgW_qTSdlwTt?WhVzxAP1+@eL~gbFwP7JSH&>=B)>Y5Reusl5VLieBh@3Sezi9$zjlzU496%Q(+CPg3PJSqI5(8f&29|Oo!ASNMN5sBRt>+G8c}ii;Sy;YA+-u2WjDIaA3}vHG)MGWQ=YukPf6No zaK3`N`VP!la4zkv6nQ_0qFUsgT0uGX-qB)jei3vjE4V~YWD5M_MC;vyX-5yFZwiMF z6DFhSH*i4}6cX|aq*E0apQJ}+^@UCECqzx{Xg@`Z(cw}`jlI-ubkJkClofHas790X zz5+`AC9>U%m=2nL9Ccy4AwLs9M6$IOFA<7&AN~rH@J1NDT zJYz9a9)A-gXD%xRZ}=Z*Y2v+EY`nYf<$!Gf0A@i7UGT5#1s^D)O}XUJ946eHR7Er& z7gfxT|C!!ckNEOal|p65$p0Eu^a?Pky?*_)9NMG-W+!h?eC-AgFn6mn4LSM0>w=x{ zVo_=|>hh&<62F!UqMMUg=089i{D=4{4MSy_ra@RCQ~s+|YZfjZli?yQ*`lYgpt71H zrZeMIF>p4K%JXaS+3vhDrlm=jDI*ds=&n=?uq23f_q68ssK_FJ9e?_b zzGVshjwmAdIclGu=Ko}AD z5s%t;U~XMOKbV#+vIl zH}h55!7>-d{jVt%*$`6psolo^o75FT;&0^=#{$9Zy2IR7_r*}TP9VQ)ekC1Gi=tI$ zGJ7fOf?+mO*OLmFkBlkJ4Em0ZoxBsi)s3RDFM2~QYrU42PM0=wjS z?z&rBA^U3c1xQlet)?b5i~Q&wf+wlWDIHNq>=#N>)*q@q`+b>}|1bVj+&h0qOA}L1 zFrdL+?l$uGf~8GrTmxu(+X%Iv`V5;2={|!WK}wkvZJ;?t9bOGGYX4W^4JxC|067cN zKQ#>Lm@O~zZItL2H)+}+7JtmzIHDm1uOW}pbhAXO|nTk4m#HwC;}8Qa@n5u3(=@9XcLUsD^BG1hs0 z_BfX%*VOKg9dRiAn7z*7d8Q+tpQUB_s3vMJWKo3m#6-@c-oR8zTIr&KTvDuT ze+!igSGwT(Rx1UT!fS+-9vmEws_V^OGn#ZVpZ4h0E@M0J8RH)FCxIiK9IyC~L2#tI zD}~BEt}l*6?NzN?pCpxM^eK+?uDm_*#*L06>5A+MAss5`Q0P%Pu^1m8$~nJg;HVHH zU!__laKv9Lg;A;DsZ}2SyZW~=e3R+?jjqXvVr7_Qt;+~;u=?H9k4 ztt7>LF33V_DrT@AKQ9q7La}_zu&k)GC@Dto$tELsDwx>p%Y+#9cVkx$6?b+@9QC=_j+qyDU#=f#{3*)*iwHWLL?T>xE{|RR02m?-w z$wL_O;01Op0Po%lzlq0w zqajUe{#0c@s~IEa6I2OY#Q$g`c8bF8jj8C+YdVS7lM3GcnVKFJS@}mQw3J06L}XuN z<#t3Lgt(IC^;2^xM9Oc+TqlENR2-6$T!~4(Hx#WY5c*vy#cnViebHG*p84G*7NV-= z?>z)7ceu#EBirulHZxp}MA|R3CNoKKwQtL;d)q*cqovZ!-wT%BJy8}xe^OIi?F1DX zT>G_$4O-94&Wtq!CUJAQnKsN){q$67K6njTs$l89VOWxQTMZ@l>Y*w6Nv!{vwN%2^ z`r~bn55ro9xBVOy8eCiZ!`s#drcB4AhQ#o@;B6G1bp`K#Q7Vc;bscY`RK3R!gtu*1 z3ia+II&Zv#VnbkwyYRLFSkv*gDrCWedUHb_CpCMrp`pyaZ|fP}mc?CJc-g;D zinnF4b79h5@HQ#?u6P@N2V;%Y4Id%f`6@W$qxsVTJnir?`8zIuC*<#>{GF1&)AUQi z>4A$4#74IH6KoXwhRY?FRrg4D9+sE)B^Q4}v`a3&k#ixR_Q?f~P^QpcLCCUwuGmIU zOHbz4(*0hw%xeSFOz%M`GWWiC!pbg7pka~@q>iaRDGyQN+J)XGncpvApAol4f#rp+ zJQ!f&1pfw(RjB(VCL){{aFfSI#B7#_weT8Kd!u5m83%NGg_++~aVSescUFk$6#m4u z9rM_kq3+>W$J#A6=e96aeadoU-0+a?q!E*9hg@>eK7w;p8w~eQNPq$_I5p3({j1%< z39EyuLE5mgiPzcmH4a?79j3j+blU}e#eQNs8zhdc`+h_d679=lqv9~#1>(hRbBj*u zCrFv2OA$Iaa@wXVMncrLs8Vo8flM*4IFXIOS6#S)=F$Rr!XZp3aRGqovdavzJ0NCl z%gtXW#5~(_ATk`ph{G(?gqUctwRi)~&Cv-oI_8IZnbk(h3}oMA#1YP@&B^JHiP?@% zhXJugI*!(BAFRoZ+9%2%O%?=xVA_~jxeT{wVEY`7@#0k4k#r+sQOks^B@s)NFO@3z zf1!VfIaTlO(kIFvDuu;S;sJ&h+7OW|&+r^}EpH>ntrd_s?Uz4*OIyS(0c-j}%gm=B zbPLEuF$s))9sAKC5vK)1#V+?PK+j^1P8XR)k~o0f?>K-Ew>xHTe-NxpaA10YXW_uo zMI8I5EYh+`{Y6qIWO2(kan=aAj^c!%A2Q4zi;~hxnvsc%EgS;SP?ymhQ72q&G>{zP3J|(d zr0xeBjYJ%$oRR?KG;y&3)Pu=8j##ly?XLUY2YJo~>&;5_lu}fGcUC>!Z$T!z$%4AW zqIKB@dVj-?+AbQKLBNV$Bv15CizV1(+swOX&OmxvXh$3kx4p>PGHqwWcJUwfJ5FcF z5^*TRJv@>5OELO&2tnN<-_@&0yGl~gE;ViJsKE^*f$DFNvJ@doZ{nQtj=UpCUi_2# zfgMDoy6eiP?T9hvU8YNaXk!bx6ZBu0BG#!KbdCroyXkzXyzplp zM8UKoI9FU>fvX$HcZ*}CRN7)BlTq7x{xV5j2sa2J`xGUrXa1Ko27U`ap_rj$xr~KO z^21JOpTdnj@;ipPa{ziK(^D#$7thXG6t@zbli;EbbKyFm5NAh{7isu^aFPP+o8;;n zc|3;GnK4eA2RUsnM7LCWGYO*y@tyV zN?C8MB<8tiO4(+zR%K1cO7&y#2_hQpj#ukSzhJBG$BbZuG7?sP~_mIRuV`Z^St-o-tDg6 z+kM&HXZxr^lD0{F$)qXC215DKQc)olq(D}qh?x-x@S1y>5xrP_P}cRi&6Oz->3za z>%_&)A#>OqIUQEaF*X!fLBmi!v8(Ea(W>d^jKx-?y=FQ7qTg;db#HyqJ!g35EaQAg zg;93!KH~x*)k~2lLV@{kO9!4oXil@SYD}29iw#HgoM3|u%Q3Gk>p|dIEA0S$ zAi8&1b)RS)sWo)pME;iC5c4W9@M`?O7XJ_8{~;m@eDN$!N`(!!bju6bp{84JH;mh~uE0Z95qTH7 zXEldU1fkwGuQwMGZk#X=faehFu-9JkteS#38#xy7n@fHsd5^@3T0SCpDr(VlsU)CB z6QJfi_%+S>wKvdL+6~>S*4#$bZy72A-B>rs^RvAV{rD$uc;u5Gd_?{Y3EYVU9D8}m zZ3U3J9~kw(bsIIkW*STPt_P;;EZw;Hp~V|+UAl1dO-l`HWvRtek+|erfw9nnKIv78@WE9Ze z7M0H-n^xYcU|_l_?;XcKS#{;m__%DjL)okmgCYE2&2!r=Mfi!W7=dK^6wD}!oVV(M z86F=eSu`OF8{&3^A(NIUS6yJ*;tD>YRzQ|(#jUSzLKF(T%X80fO6SIoT3E*-V=znl zny0r+r69X&8Ip8Y?Bz3(iQ18_tt*!0(K8Qe4^(BB z;YhKLG@z)S-caf`e<5nJqmqO$X|rFU;qXgH|+#kX_r84Gqz^QGupzIidM$Yy@w?dJFyBE<%7!;N7^;YFITZ2ru%_=XK8s zH`o|tB`jc19TFQwe%_6QCpgSN_tuOcWQTi~FgGtRp(A+@nw8@N5M79-IKy^U4k=0z zs!Czx3YMh*yg6rn3kIC3dag(dDD$((^fcgoHq-Q9$h_zEj{@MV`R6?XDn|Vxuz8|e zO`k?4SgZV+*dUq25IsH!G?ClLR>`hVEVR~eoi$;4^=wP3p>#D{TFu19E;JjE@*ox-&N`CVynA{XV)Fa4fKo~%szPP$khQl)n)AY8sw!$W$jSFa!93eJI_;Kyv@2O5RErnxQDcB#S z6iMh9Cp1fC(v#p#!FZG~7U+%=lx~>bUw|pQOmRgLar4-ogqRne>W;CN#&h=Nuybz7|00M!~8mFyqTpyh%zzm_T|W-)36K!O|U0q zo*eBp_r~`B5cgLXejw}vJYZ6mIY;gLDpfvNY&HC!wj2DA*G=3vl$f9 z*0W-MMYywY{T77vPPI+y#Np7|FQAsfo;Xn~)mycH8RZm*H4=N;W!+F*R`Ykc%+25D zQa4{^*Yzfa*zJ5zm~1eVG^40%BF4j)v|l0dad*#lglnuS>nFB)#z?^g@nnD{w@qJA8mVNpbBW`ByhRZqvBSApetHh-BZ zlx~~$t@xbh+7P@V{YiJKk!$mv7#{o0ce!h`S)7rxV?O{Qq)M>q4jLs4Vuvq@^YZwPOR$W`}y1ip<(O@u#R8NONe1DD*bi(pw?+ z1I>0Lu&OlMO)h|79bUn^4eIazhd4ZIcjUQk;iFWH?e?bF59Zq)%nfz&vJ#{>d0B4& zbKzy#KZ!^CllVz%-lItAWlh0;oXV4{XMc)*J^&HepQfi<@x&58xl_w|Dzu+KR<=K% zHcX2sewS2uh~(QSC^{$mDLkg-pn6*S@8O+}w(5FXU>cg}inNu6TRXcbha$z95>5UH zX&4`?b!x}zR6*3AzE|xYIQ-#=R(Q5!Y<$%+8gqm#d_`JHt#V9nG-yKq)F~_^%xm{M zSi%#J_rOHZ)9KTv=i#Avrw?fh3)+3queh{uShT=Rl7#O0LhblGN;F$sMHQHrQuwDB zQaQwwH7i~~&=+q!!5asEzz|G2Y89m}N>+8-jK>ahe{XEqZfPN2YfA`o6s<%KTGkGdK`~FE&$ySrB zgJc8K#AtHXKHH_|r?Ij{$cYh9(S#jky-#HQIIq>dAAh848x7y=Pbg_@b_lu$Xqs#tKBy zj3Unn;t9m0!Z$!7g8LDCp}srrf(RVP%#q{D$0?b-AVOF-*zV|~e4j>+Xz|~VGwpF) znI`j5O$5(3f&jr@VyR&!n$QNdeBo8D;BR5+_3nnN*Q2#pe~YWGxAeYZyQqTQ@`CGu zcyU0jwt@`<^V;F+rC4hHn~ZVjX{q&lnL=rsU%1pt@Uq&i&WxrPy`rVoH)DA0*Wc|+ zt*Rh9uCne<=MaOybYfz=-;OEov?f#OXKgiMqWu=t%GXxyx0LlIgpLTs<8vhydq8ni z5%k_hz%;P6M>-~>_u*L*-1iNoJ&KH$T!v~kEyzbpqf;naWXRK65-p96^FnE?cOI?^ zVh}7j%@>hrq1SC8ial`Eh%q*BSk4gPDIsFMkO(&5ZeHF!Ohsnx>jXL}ZVd=*$oHx$ zKyE7pVi$2rKuPx&`Rysisa^`%S3^qbYH?>Rx}>YcS9CO*ISa)JzMB?`{{pRGdlrgy z$Wts7TX<3ziqq{}t`WblBSq=uVcBM(S>KI}LVKml^6)Ju4ZZGDY&9(oV^5z}*8^SC zow|l#Qp5xpK7DD%gG~{`6t5hYE}yiYhYM9()l@M6oqG>jc!yTx^UrADzE*1(x`RZL2n2yh2N$VzYjxG|e65CICvxGFtDWJ!hAiuP z<07GM(4HT|sjXL|Z;RT!sMI$!-!QZ@RSrRZ<8p2i2+IMaCXZK-q@7Gbya%wYz=BRF zOjT^@lNp7>+V~#62ek_Bg2N8BHzbSvY*flaTK{3eN2SKkWok_KV;L2;KTEl1Z9;>u zLof9yXa#VV6#F?;DkrhnWJ)C@`V)$tC{=xFOEe5>P&lQwV#Kb@Q%#BE499Vk>M8)f zwk32YQ*A)0wixd{nbsoFolG?%rMfq^gyl?5YfNls7Tx>~JF=bjqlD3c<3muuPvNo1 zg`#=9$3*sP6a$7qC{=>41`mS->7R;!=iTgs)mx*IXy6{NU4g?2)EHJA9*pW=sJyc z-bbq?@patelhQ_A80m`bD?(v|RK3(v@scojY`7l=N6|AwDAXZ(hLTlbWoMq!aTZ;o z0uE#kQ5l*}wgEI+F{x7cr#jE1`7DJyc=GQlx|DJdFr7hG>CLtMo5%!F$SAe&G$ zO^Q5~mPr0b%HVKk9}Ko{MCLw%S?)&mJ{g?9yjU$mT`wFSq*g6iD_#tm{ENL2Ql zWpMbtZRGH4{c|{XP5iIQ5GNR%va7iO{;50wn%z+s-3e@}_w2Cf-XYISXHP=$KeL6> zDbapz#9y=g8)A_ps;Qun1=l8$lO-3W1ELMPYeLs#)qQTjky7|A@QUQdEEH0tB zgNT~7|5tdq19+1|s!bl?Jz^}VRT76Ud7{8*;qu*0BYHlDU$q+8o}!)88*NOjta@&f zdv$GWrSIs$$-!pSlI3f{f@?<7x>GEH$cxiZsDl?r$tgW7bT|sT!w+SuDn={v;cn(= zE^;vhOVUk0F97-DWr&M-UdYmd?oclS^Cz~Ep|$=Qn%^C+m!Yl~jutBE z(`BGOwT(Pw{qr=}XZuna;(B3efs%f;49u6ek)dDfpP~6m`p0Fc+agEbECchq+sM(s z?w_N%F4TXPAxCm&4 zboXiIx`?|^pXS+UpO)&>h$${OH0snA_iu!Qa}p~@vRLfY^fKyx8fEZL)}Ggkzh%> zwdJ`*50)V=;&~xU3wj)@49wMSWa!!c8JgeYJYI&nUO3ui2KMou7>?{HPB&Dy{Qb$8@7?7H}}ucT<`s! zGQ9>N+xGVQ7}Jbt)0V zT&CRikfnewa>ZiO();Rqpe?(v?#4?(R%TyaPr{01)%(7>yDteT{YofxUcn{-!Hmg$ zcQL))ZPyM^+N13vL(rG)Dugcg)j8CKE75|*g`$0RGE6?POC9#r@ld9Y`|9jh5oXWB za_n!?(`Ud0`&;qTYk1nQ|A7C#&VS$FzkkSozs-ODh*AFK-lzQcbtl!Cfqp{&&O2or;=3QH27!>UxG-*Jdzx$w-DW3vJf48y5P#YeGIw% zKgpbb5s)q~uK^RyahyWGOK1VV)&h5I5V1VB2w@ho1)qt~|A zz}qC9=}fl|(O1NOKFjv4x^6(54wU5M18kBmW^&ri>IDk+50Ns333#i88*rL*-;*KJJkfQu@E^j*5h1m{$@gVlvw7x-z} z`_mt*hUd9n)x_S3hJmY$aEvT&6~YA@djyY_T84NnA)Cv5$y8y#j>f^JM7;?Pvh@D+ zhfHC%muP^N`6gJ@;I}ADHgspLjZ1yNaXPVlCvMPUmw86b_3G6){++I5I>Cmqk#-e_ zf`cPg9a;*<`vUftvMIXXp_(MIoj89SN5Hq6Ed&ztJ+@SQiYHjmJI~Q^WyA@#ho^A0 zCh;dpE#GL@-70Q-K(4*G?8NmA><~#xaxJL^)pHgG0vvr1%voI!!GLnuCihOz3~p z3c?@Vdyq}Fj8?LPgNVUxH!bKpaHnR$t~7(7MM#fj1gjhdn*Nd*G#dam zhWj_riujd8qiha3*{sIRGv0y{-Pf?e_WJ8ipkJt()|%PCf9UTZ-Qp3l-99cw3#t#d z(XM?k>N5T=UaL6ZQ;%3XS2Jv_=Rm^2aK=-8_*uNMmvBK z!?2G`h2LJudm8W`kW(L$0$`1NZ7Qs<>N@ zOe{xxI=UT>qTW}9LEB)v4Cfr(z(xl_k~u;9g(_k*x`oCO;G!wIDu>^`HVvepS^+F8 z)CR**GTdxmDwR&(GJ`V5?FH+w>F+oEk_A~F!jmvzCvb^2} z8!G6I0-J8_u<0CKemJmA8zpVpNZDqSsw#8dPU4~@(X)czB84oL%qN7Xrcg8EsZjmq z3hrV{WxYI;80Q{KWgC-Fc}@FL^`rCg0_yFq$kr8oL2nOxT65cE^Kj)8?%1LI8c;BF z<0HqS^cSEMPlP978?XrvRt7re)BS98C*Z!=tfrDD;$*JS6P8nJwCmJ>)~M8Yoh*N3 LB*~F!uPpvQ8o&-t diff --git a/development/.doctrees/api/deepcave.runs.converters.bohb.doctree b/development/.doctrees/api/deepcave.runs.converters.bohb.doctree index 5c45940d68f406f2ab1f9d7e64ccdebd8c961d0f..8a6cd9f3f5b56e9bbbbc3c7cb14c581e92316ec5 100644 GIT binary patch literal 24676 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 byMCk9ZPGGZr&dTS4E-QQDOo(-)!P37R@Fu5 delta 3471 zcmb_feQ;FO75Co#NM4NTy4lTccC)*0Ng%r+9|+__8VEs{QLNEXz!8jbvw3iHhwR4v zC^EGLMnQuQnC3i6QEEFn{^3UynogP4K?pPGXz2{L&a_i;03F-u_($PCb?nEv_r15t zV$^Y_f9!qt-E;0azjN;Iocs2JH^@H=uHCM~53M-inxLRpbdl9C)7J)9E4GsX7_9t~ zbi-z)8{Sg(C}S+lcyX9z;GU`;mwbZ*Rri2SgYb{4&nPO@sJW%^H{k-EWzm@th{45%zf3(l!Dl*#IAV z{gsQ!4L7hbZ=9@ERTs{=8wYgHiPxrFQ&#z0+YvbZE3tlU?7~JpGXb*djkKeZ?Qp~`&JNx zp$LNbQ7B3OGY^O_%0N_8nV2#VmWBl)BsH!B@dbid`AwNXCpM3DWjs}2D+jU}%@B-E z@B&KVVACSH%=9jg#ZFQOm8WMVsec}PmWGAz?)mU_Ks==S=LLw!-KGG}N1AH4Ar_?j zEUS^Bj_9%Q1GuicbK2ICY}#NaMFDI_WI`2AMMJ~~e~oTmC$*}E3fc6~cq&)O8~h1W z;$nH9p(|35NsVcSToOjY!e4~15f54aJO~r9Rs!(b*xlYk!i6lZ0Tvy=Zg3Pr>MhOe zmv%DwQK2FFLY?lox0o^Z8fLo)^JhgO8XO7sG8|FW3elYS5ehSE^Uds}uEWcpPv>jRnf>T8-zwBHPiWvog-n{De4mi)QnC9)rt^_3xFD z3}bvVTHp9C?oY8sQ8YinDc^-dd3=w<#r28sULh2$& z?u^AZpr&4dPzpQ8vFbL8*UAwspSIs&N9WGEI#GS1%)(qU*mMRnp6^rcg}$zRUYpn~ zVisbF%b#{NA(uVfL*7R%P$d<~WjMPqO1WgRVqK+=I)K#1$}bL!$^|>HsovvGJcCVe zp(jZWPbMR~z7wNuJD3bZn8dUdhcy-x9};n_f-Ek63y(0XdVECF#?z@EYVA4rbbbA< za$4!0wJ5%=f73cV?sk^SGs7g=OK4rcagNZ?ol^Xy!6(oze;F0#G(Q_6rvDLv_Uri9 zm0(a};Qrgup_<*Q7MP}{i@BVZDX2LFqTaDp72eb|OJ%lc`Bw0(s;^Zyu+hA#W%9+G zmd8D*LKXC`>Vm5)D_Z_9rdHDvlB;AArh2F8YYv!cAB4|WHPZ89eX)nXD`E@tx5Wd` z1)k_g-aZ>oP-1RtQ|HDd;xR8trs(c`A(zc;Gr%Y%p|Yh#Y-?$OD?LH_iFCAze{4Fs zWaZK(Bo?7x{b)CQ)x&JPU25vwkC9WchI|J-T%?Z9Ii{m|&lEhnY7QUeQh5|)#l3O|ZZf>WC zHXJ6D9hm-n;~j(^aZazj|B55Q$AnFeLta3t7wB>w{nfY0Rs diff --git a/development/.doctrees/api/deepcave.runs.converters.doctree b/development/.doctrees/api/deepcave.runs.converters.doctree index 1979732fa39cf8a2038281d1afe9afdbd17f11e3..01c80d3600055b9cb4c34a568b4463bdc4ec9f1e 100644 GIT binary patch literal 11871 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 delta 1374 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 delta 3677 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 B@2mg- diff --git a/development/.doctrees/api/deepcave.runs.doctree b/development/.doctrees/api/deepcave.runs.doctree index d2ae6ca41671dd0785f9823f004124e250f632b7..2c74e69a04f9473bf823fef89674d586e7fa910e 100644 GIT binary patch literal 235021 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�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

^Z^Pys|wSTfS9eoEJ3G$v- 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 literal 155715 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

{}6d7G7=@p|9+pB22j(%-(JWKe|f)Y_G0z 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 z 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

bFGm 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%0A2=?(6(j?iDv>Z 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 Z|%*`_-Zl3ct&uN?I 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

plUCA{urm z-|jhILAr?N9--O@uT{2E`$=TSeXjV`3p7H;nTirk3{?_ZXVg)d$c6c`glYhw@>J1* zRMlVRHErC3mh~y0Iqu|zPa*HyTchuCIooB0`_mV$;p;=;t7$K;!ly6%4l2AORN&Fd z1-7~>zqgVhi`@R((>fY?r&U&FkFBh*&U-_hLfD6^dg<88I;*}bSJi70u3G!p%D1!H zyDO@>w0A3?KeqB$SnoYiz0?Kd0RG6amA{ooF>eERRe$=}%D-mSXv87mkE`?l99wzc zt5GMO7?KW(lB@BJuU-s z-<*_7uD=hQMP9#Oe+~Zm&U5~^zy7EFZ-0mse)4s^y@ra&`u8r&coscD-QDdV-`{)x zt@3<-&s;u#Xr@1GHpXqTe!6}99WqRr9UEaRH2~xhdJaZAW;ydI!ZMVfQp2}qKQoAG z)IJ;}RSlPnF3HGu)F;3Zmc!!*Oe@9Yd_FJSnb;qooodllxmv&8VE!~;c^&C%H`{y- zMFbWMep~JJn|#S)t%G}6?&0pZJv?DJxr?R3CE7dZD}S1o;N_X*Vz;TW!n+TU)zET! zr8a;fgcxn~j3WcCyz`x=TW$C1#-WM*imz^JH)X8X-rcExy+MI^kdN!pjgNf%qe~zC_+#z%<0rpq>En-WtUtE2 zzVxw=d{c9M{iCgqt!+I1SbO7RA6a{J7u0*y7TKf1y);n3)&m_O%IaC)-J5&n@SNuC^_Sx8?=R?0(2^o$OZfnoP9P5 zpEYs7)T{i8Gkg;%Ybslx&RIt}DyT?2ho*wWC5Q6xM9k%JblMlr#+0uuozK|r|XGTqVLXB#%+!V zweZE?;dUS$%aww2-*TWF-!$}V3=UEH(3C2YwU!7L$dr;&n+Fllw$ULc4C+gnAC!Ho zDK5+UpI|JJ+I~ZJjh#EsmAViN=laZNI8>J3hFOPyt@Z6w>0so)ynPXwnf+fwWZU z#o+?8u!kBi4A1}!K$SrvZ8`Ol2a;Mj2gqcLqD{D)!D2;VElHE(X-j2V3hYc8Brl^& z@HRZ(XheR>kXvCWu+<#Hk9;y!-=)?v|Cd+P(P^@|#Gu?MO)lDssu_I2H>jCKPl|i6 z&BEzu)}y{>IW-!u%z@k7k*=Oy>M?DnSP8gGUA%NH^Y7Vk zLISYtRwv=wMFZYkM~Hujm5RYzp8*a>_9k*5^@|gx9kdr%g_^U?IQJ7N!F) z{o#B|{wPqkFePqI3?XP$ybc6KdJ08geZU zU4;t;?1?|2jy^866c#x@=LqbF9q7wSq%p;-85tnc9dD9W^l$mUNiV}#-kB@^f*0qC zWW_Wn`F&nX8CJ2LB7PPoE<7h`12m@LXa56`3FgRaC0mWPQoVyHgFdekYMjYU}Gy=PF`dsBOufwAC>pRK;(PF@B~iei7?4yXgk0m$d${ha&#p;9|YAU zG>IZdB7mN)Y&3>>l#zf$opx)Q$lK_pVwjQ) zie>hJ3tc*LJOe^CFQq(^2sW%BQ!>sQ49Sr`QltX-RtHB}-vR%qz0zGYxfRI(5N>tv z!1Dt@8d!NJ$QT5@*lJzHwi^ft;Sv7i7~_KG9qbqe+^HjS=v*I-;q4Dc6g`7vHB7V5 zSHXImCuCCF(NhZEj5c665+Izgjl7ldyVBu!;xfPEbO6N_{|hbM;XoSV091=tgg;RP zq@DAR%a$B0eWJ_gIOPs45|WSY(t}SmU6h(wK=a%wf*@qir7i~;Fm~}WwjW}NcI|=b z#Ne+Q5^(DYbJat-A$z$mCfu^UGolPv2Y(V|c~`^tmXo7pw24_Jh7%|XvnM8Wyc^VL zt~Nb+>bbV;Xb2|A&%vrO1CeI#g4Kx_@iga`+O_*xeP1v zkX0c5xTLZ=V(x|9Kv#K`k(tCVNLfRC!+}_qKrU-J(Z*Y8x;jw1tou50JnzJ*YVR5{ zvK#vu=PD^{pVkiRnDwK-bk<>=lKiL92T{vS{f99@tOqdDK&mc25gBbXC7E0wH7{IP zTCu@jZw}~2XdxJJP_RX4gadI&22;-qaFZBLHd;>9)pi$0RhUmwe|Dw;2j%e(L)eQT zsx%D3pdEJCA)*(s35KjPnix=`Sb~|Duc+&P7*iWfQ4|n=kM|zVYkFXhEbeXUU}E)S4w0t}>Ey z35R7f)i%HhK(jO`cR1orrkpJYREY#so9Am=NZIK~#3un5~|$Jp3GUOgup zovmH8f3u0Y668fMaJn~JM*Ji;OAjXLan9rD^{q0wQr+*>KEj~%?I-5UCX3KfunAjg zdt*b4M^pzjIt3q*1dK{G)4S);FfA^auQ@bOT!{FIvU6eS#IaTR7MZ4wa6Anm|?K-q}VQ$x?#m7W;89ny%ZyRZ@88UHPJjG zaTN3qk7rIrg{seZRZc*PvMgJP4NZuGdfY0&uASiqBedHpk8G)?mfc)$T!%0UmSlw^ zdQL5t`73DNj#I1_^_SHflyjHV3z^XYnc!Mz(&*tvlNhF1*8p6^fN*f-hawQ<)0;H2 zxHBu08%`}8BM$_AI7D=7S4@scagJ^#esXf01W%!r9-)n@?B4&hyKK#=!V5-nN-?BL zCWb743p@SI;+{o-YfSkdr^}SezB4q$6WB;8u9fg7XajI4;rSbAu!vAnTE*?hyF6e> zC$7DeOx50o#;3bC9jbt$8Lbn>@Llr1i2WOkmQhcU4*_FwC9T-sm3o3wbv?`$yzJc# z7~aX~NyJ%oD_jtks~8fJP+g7WTjoFIRf?1?xAk#6<@E9y!2Q%w^RMfORrxC!Rk2rt zjk)ad=#EtQwQh4~t<}tsvk@Q>c@B%gupM1Ry@Nyv)=(!g_iRM@V5|)~17vQ1R+L+0 zsc>@kQyME0_Mn33A@C6Ae;*bX2G>{QlPgG^VhfVq7HiV2PRbv#H^*Zi961G?N?#Q7 z$YLmn!2spY#Lg-uJEKqvzMKMhLdr>h@AU{Cn<9&)2tdTa=zv!tD&wA5-~Y%og)15! z+d3v*m5&B)sUQG@Q8eBImgA8G6vBx-9ftvTHS&~WUSO1TYYITT6D`^veAoWJ&aPZL z=du5^-6C1Y!tW&#pAd>KvJGKWq;c7=-NKBei<#+&v69dTkA?<)qcB3OZbShrJ1Kxv zt+;S`Be%d)VqtMb$!1li4rP6(s*3HwM|*a@fMGfZ4VS{2Svo68K?-7LQ}4(j0Owad zWs3*Abl?It(uQpEfk$dfV@>{4;}G>)zGobQbxejLfOI6~^7*h1sFbC&w$T(=k7GRq zUZG7yfxP*LJOqk^bdodso(;*&dsd5?_Hqav6OBEOrcK&RR{^+iir<(E+De0fHPmEz@`JhG*TAkq2Ggu^WiGC%w38p5$!5U=OY8Z+G2n!)}>6i2ENvf(IcL# zN%Ls0c58(&>ch{C+wB+HHS9!y7XH+`+4tdkUjA10$1gmAOS*627qdm`4c-f%yztNP z=^=ii#u-_KT!r6Wd4RW%-yvXQrIfP9T?2mGv6XhHWCH@SbfLIPo5xn}veIh+$=wou zuaw9w;peX49`HZnE#cq%wEyj=R^4yo?H|Ht+zo!KUC`_{@x;++h)co$=G7IKf~7{q zz2GJs9C!dx?`(lF+`C{7YJG-$p;tniYwOP1n4Ny|4052Y!D)corZ5g}^;=qJl-%W| zon|2u1DU^w+8l1xTQDVc`@1{1Dpu#w2Pz({cFc$4;h*sZzFE7yyN-9~{CC`DKvbd{ zGbD=GsKG0-Lmo`+J}qZT*34jL#^2i%g48eyr$c$>KOGZ;rv{-0-JwPgSx}R&Y-(@x zVsNR36ceX)?IQRakSQbN>a;FFAv2|*7$0$%LYQDf^jHz;=?w~5G=ugg$P2$H7`eOF zT)!Fnl%$5kV_8gy`iE-94XVS#VWWZNLElNE;TG5@W5RlDN;)F=fER5xz5eH#FngU? zI%yIoD59Utv5JQbJb-&VPBo^Aeb0CR%4qog)TGW1?jF?kA9zM)H^1`Vd*OXpa_?~; zi(_(&{2MQP0M!BvMbLemyYL}=e7(YOEB9?IlZBf#utr6C>+l~qT7=BOdhlcsAIEP@*kFzCX#HN*{Q$DG1eNY}87 zF2vKH%>sb5pT((Q6T$q&d;GqJjtMg;umk7_gkr7|K|}Woi`_3*ta86pw?;c%ccuL0 zt^K;AoCmBJ+nP=XQq!-w#F+q+4l8@gw|E1gCgvs-}Q zaN+$}fW=D5D$Oo@5S8vvA-UE1Aiv3KeQgVC^e4GmA8xzf#@kP!5Ucgwh1JRnkZah$ zYuA7H8_U<~RjuK3x<>a$wN||rKo;;3xBK0&SwjE~v)0;r zSlxbUo_^*Tn4j_se-|cETmtKWa~$OJJ*bxp*`@JF{(Ds}bL)P7R9RuI;3q?JMh318 z>+RlvhX>ai7*V!khi^`$z{zI;Uez`pVNW#*oi)SRO>kOgw>!ou$?9B|KTR|x(^M{* zCQqG+f+?AVd+TKN#3NhqQYqTeb5o}!r2dIEM~tW?jZX3fG;NplO_t!#T_d=t zwvKRk@7Qy1X>%X1lv=(CLEEuc2O+J(F2iV7J(f4TEwrYs>K(+`x?ib`+8-SpGvk{A zqSFR|piB58Y<*sOMrv`Ytr`)q9ba)ev})rfg}r|6B(&47>i(3#fgu`0Uq1j2olQMG zNnn?O$Ds^T4OpsptIdX*i&B$s7Orn~x-BH}jUJ!qP$;6A2*=uNzqiO8cd^@VG9T#d zZgaFnGR1G}eiFiq=UF)h)U;!UmIKf{QH8*7BhSGm;yZ(@54#dV0deqa;|$=((9qyC z-$_tO^7?}flf;M#!@r}4Ap&T`10e1#GQO~;8ID3=7>mt%w3zhc(aNb`Y{4I@VZKVP zpS+=m)$>nqvMe{uq<4O27sVm*i~q^f!fzi1|95T;>Pw|qOF1?#Uw-V(LuQz00Z~>^ zz3uVxOB1Xhr@)I~rsY}3>Wg^hy2ZmoYjLC7z9a9|bvE`Eu@teZju!pSHcHTN7R2s1hQ7VMOH(OPJBKA-O~z*BVXvrQ!MJSFskZC(=qC_Ogj5? zyT^oLCByS*`u_%WtN76P56@5>fAsiK*icw-_R&Mo$Q`LYX8dmj>s7RP#Bo`X;d5{z zGdse_oIXKs0iG^hZ+Elp{#w|lQ>7!BLWFRM@>4tB8uWKt{o6g+K#+{AJy=xrW%d-5BOxC6aA_`TY zPguXyl5o=qccdHWpSjzmH@tz;UxQD5I4_ozQU!|>1#RH0v=$8$Z9>uuIcp|5B^z+- zah>=+DD32Jc(Lz<>TJ&N6|Kf_KN_J@%Q5TtA4MP*_uy(`kg{huOs}&s3YNKD1 z<6KU+OE+>%RHU`WBgMHFCrvdC6sD^*lm-ij%pw7eHeOG4{#Pka#{?rThcFOIefY5s zsg8U?%;z^{Z5muA)y{1i#EdKeN9w49xm=xHJ$L@%`KzCL>g)~9!0MG}FJ3%<@oD|z z@>3Vj${!_Auv_t>24RFlKEd;c98T)c6wn-vVKh8B%pL6wG;i9 z`WuiyCET?hHCJbybzGbtvqjW=TT%fxAhl(uJn=T`igFUeX93`r&LSIl!f?Bu&ZUDRU&)@X}c+KHv54;`}o$BjMXvT3IW1lx;9aJzo z2?Y-_RSsx`w1a%c-S(6)?jBB(3h@;WL^L%y%T=zCxH_!M^(V)pQNLGIVdHx7@3V_j zj);vqt>wd11mT~<2k%i}^<}rHry3(0Vtw`p%d;)UIS-D2{t(7~oZWYh&;%loF(568 zOQycyq%gEtVl8qP0f4H`N*m!O9r=0*FPMI0&^`)Prr>V& z!k=(5nB5sJo|uyKQ>+aFKPm-d>Ww(BFu8Q6Ip44|{>*;e#X{~3qG*MGBXWCtz#$}e zG>l2ZGc;8gIZL-XcwvbrUh>MIe|vVq>=2Ma4gfL1ytTAvA zk)MLYw|d=al?jGD!ixy^iW&C^_mwj6366HY4;#bmx6la(^S2!~W~=Od1aTOdrZ%XE z8dL$TWWxPCrdp&6-G0iy2vF3xLOa%O;lx2;S_C)K=ody>g)xS1w(; z);N3q3SE#@ahl%n?a2L%hNz}d733Wsym8tEn_fZE{bH^9CaxdjHBh2%tc(2s(3mHekZ(yDrJl`%sYtX#i2&j4C zw;JG-46u1SOAr!w8zTd-1ReiDUk2SsBBRaKEeJ?#Gv3J0T|$`^g=p#b05>Y-Y#lMD zNm|6}jnW8}=T`>^HAt`ksk6h}|PdejypPjQy) zA!oJDic+tJLvlD2r-u_ZXLpqr)hu>bvuoJh)vBr{*)ygR%YtPCQXCm8*hvfp3hV$e zg#4p8LLNw<1c@RCP?U$`*ijN04h+Z0OHiCd5Mt%`JCFPN?pIaK#|(Fdg&9`$_uc2Y z=bn4+x##>Y3)vVQz@HMnl=p^%`}Bze5?hCG6tScg_%#sH0s@EYm`ErCL68+vk1*_d zSPbU`VjB$?BwulALOp%~3U4O?r9&sl00<<9_5ou7Bp;9(5YbE%B(1`_R%uIEh_hBA zt|BkN{~OMdbfjWd_lagFt#XlKp$rjYZMik6R=hpf*{`&k2UP4iE883a3l^;x5dHyytZJsfg6t8IZ)Je!Jb-0ns%u} zjsj{Dh95(@)w#9G25+d?xy8C;%!()nY}61}c=&*^@$oOnnT_#Ks!uM{;533AmFFTd z$ULK#Jb2jMLQu+9|Mb=nb}@NN+Rn(FcQO+Aw9kUhL~g$!($RATq#|7&r8n>)OXP?Q^~%&zhf()7hy5VwFYW=)(Y zNO^sLWpgi{#+S})E)lg{xa2hoqxUvaK_86^Y1)=td4!N8EP!c_7v!%v^UdtA)#W99 zxTEg_O|W$F{OX(Q=PzEoera{};koSTJJ+t?co@B!Dx%Kb_T){IVP{T;t^8MpW?E#+=G18Cy&wHX)cGL?oV)R@*9;bXLI*bLWVZ``^|pO3*x7O)?SyLIT8?5EN}2 zvxizP+PynU$GJCHy0g@=Yl*NZhI?&JLdgNN5@$I2yOoT$4Yk1qlXZM62)ZD42JVv4 zB1~W-@EQYpcP1mfTST;P#vidQ9v|E)Ko(|_ppT~13!~2gT@`LO21)pEHmYHBd(N`_ zgULpAlYkhyu|&>5;3;4@$74_x6r66uN@Eu!GH*JD$}N#mibW~(0i&BZ1DZY=X&qw_ z&S@;`8pNidyy2IqL0!=j5>u$Ib-9uki&TFh=q=E8$bmaMbu0p#HgI=QLh;UN|#ky9( zPKNy#2LzIvz#*|rMc8)QbHZ>&Y0Wa0vTOok09XV2`!b;d!zawN7{9`6BkKRoORM{X z4Q|_XONb;U*rW}yp>dp1h6bV*1Ko0g+W8oyqG$#2Dmli$f>NLxCv=bI!IQ$v7<684 z2+(CvQ?B*wIS=8!WpBB15t^f>iR$%jv3Dj*l{qjJ2<;Y)E4^S(w;Qnraw3<3J?yxu z#ou58v_Il7ye!b2FUQy%?g(v_2a<)>d zK>_{V8*uZ*m?dXpIO>Tcan4omvK~n84ITwvgbZ!Y3)damn8Ek}`;&V@~_GZ4Gd!O?!@z6H<2@2JT! zBT#)%7EWoBM!WV7oC($y^>1cCEzCnXjlNNw;=Tq1pHy74l9wI_gsjOkE06*>rwD-rhwK2QPQ=WuD{RLtUvw#XbWSKg*lPjLIP}_*;;_C> zwujipg((cJ7^npyN!lHP0re6@B;cYwSbG)G>oiEg(yBX)NNQ7NqzG;kTn^g4Zn%jN zFv3vHaS3W$o9Gb30$?stGe|OIK+&yAF^sK?nhrKR`5GlXTYMqX-O~aq(NhrLT6Y|a zIFlY#erNL7XcUGTq&lJ?))B+CTeO`*E>RG`eU|sX?F?@d57lIUR&Qbt;@o;d($WU% z>p)yWn2;+2-9^A`@}8ycX}quWsYXx4rX}jSAFoGjmY37SI_|MDpgt(;Af|w53eR>!he; zvoe9QV9m_CVEu3lM`9btMk^w99-$eUdC_)gYBxF5tT#dCa&x8_D{Pg}q zeuf)~4o!xo9@sD~ydf(Vb>C1?0R<4}!)by*+4`uKM(FD-)&7u-&^x(kvB^t8FTxDj zhjKpLIN0gO0}kmoz_GZBORuSOhq|+8W&yP2Py#W^~9|sI60(xXr9%$KSN)o z$uAi3Z2Q2QLg;}N7gaYd!NkMp3cR4e%%GzCL!dVXnV{y3@aJ_kIqM-WXQzKasXZ8W zXF$A+EfuQby)%xCQ(V!aPCK`+z98jU(+a~N2(rlqQjn*XbyW} zFi4$RgbJpb5}-W-g;^=pbdsAgr|twjj~SCa>Z#7lTGl#`1?7@#WwY7g4&~$PRM65S~v# zhs31rX}wTwC=8XIbRjSk#YDQ6X!l+QPqA1d&S$VWVxBm;Jq=pNs+xUg0?mVFY!I!j z*9D#xHE0$DM^E7hYR_I)`mK9%ON6N$&#FMsZ|L%am60j7Fwp#m)uF8@?^L}#3m)aabkjDPj`@nDT zix8}CD6g}T=g0l6VsK1)fWeiLU}ClVA9W4kh~M3V(NR|2z1AMFXgxtxVmix;Aq}e% z%xiHa@^+-()!4E$0e^F4Lc7St31_Z#@w|I;&GsXLLkwXQlLqt;`y3XLtnON)%aMUDL`Jn2h7~Gucvj&#dWi zCtrEFy(dV&QA02Wxm`LIaFoiTO+WJ*ODp5=Vrng-7T&<@&?6Td_Qzvza4^IMO@_&l zn-1<~heE7f5>p$)yyky)4VLWcISnZ(v_QEG{uPAB!DCX-^xF%3oN37wMfSazl}7rb zXeG~QwXoPD&uZpA(YXrOd|AjThGjHbR~}}lkCQFo_3ZU40<`v(zE&=7ueY@DTeJev za@3|$oUm5N)^WYBTS)SBJl4Z@73>jC9qL-piEvD$6-#+62j0U6+yhgshZBXk?3s#= zrfIeC&~I;HQeJ4^vR;dmysEF{njkDxqzuCWSeb3UvVONL5VM$b5QK&CuP91fi{UhZL;BXvv4K$zag%kcbKiX> zYzc1fn&zfLeGUsdX3fD^!t%(Q;-()^n8hOv!V6RDF0Q1XU1YkXSl7&AmMQsl`NcNz zpM8=R~ZtAOu+iwnZD+^LUs1TdYWrgTx7CZ6@7AY&I zeNoQJNTg7E%{WAYs|u#BGPrvE!Xk}8798qM%~uA7KS z8?_dkiWToo8wKUa2Z?t2aNivPlV2P=;&B|i!_SG%TZ1Vs?hT$>E!5G+uF)V+Dx6@L zCRiaG4im<>@Ih26bdKs{qirUenKhXEC5!ndX(!^pGZn^W@6G9; z+K8AsMltdBV;qUltl($IvdazK%8%hlUV5N4;EdVeCNyRH3E^h1%eW#QV*@%6uu2m| z*b<1jxtmz15Z+Trh+HX5wn}AD2}}VSdxaKeRpIlaQ?!gBcDOJzX`TZQmW47x&Ti~& zl#&%t>0ewOd0siiWi>m9__SJiCsTi?mmbF82pQgNR*<@l$$_QD(W;9ok1KO&hjYjq zQncC-{Et4vXy1`^JhS*xGk6kuJ#u@&|p6^_cYp}a@o z*O0l=m@2O_!x8v24+&!Ta^7TdDvla_S?9ne3k0df((|#e3O{%Ep#~tnFS@g4tkr?8 zFY#R5Ew3*}2MuHQd~S%R2i(DQlPKal6AhXPZ=?SiTgy+*Xjy0Y`kMM%Bo#n#O0zGj z7;WTGA-7`hse{{8De}b3b_UC3sbY zCdA3eyy*v|lcMUB@|4o3WlgEj9lf*dWinTUV_D)V-D3%Im+$hKdd9^MwQ2f`bJLq> zb61QWLbca~iPa-O9&pVx#dqE8S@F1-v(C@@W&}F}?lWqAGtxS&<-7k7%&56~7dP)PS3bnTC>VSaawBYEi}k z4dYIKn8eXxBB$MI6@tDfh10eeC=!<`?P^mdpb}Z0j^eR{JT!hnN5l@j+bq-RM|FI- z=W(L`l;12txS3~(>G2+{f=Qo?xAmG(78eH{fqD|DQtC^_QX*K>M)~jArr9P_#86n4 z;2K9(osS5@W7X`g((bjYK-*X33fTsjcJT;OEm6hOSx%q^VMGyS_$yK@omz&T5%vq# zj?y>9@niyPKNU%KBMMORI_I+;7J>hgSFx5z1B zE^DNthbp}VtHfIB^anhq7}%fqJ|9JNB=u0msTlT59u()(v88OWmEz2Zg5rL2EvW)9 z2GQTHIh~V~XpD+KAPJHPfiUx`i|Ptip&eW~f%NbSyf3)r0E!!~u$4m#=CTy<;uTLw7L5INMv36qYH1rg4k+__3+tsX zoH-kM(HzCut$Fe-2~AO;He8{6``}Kmdp(gOar#dVK=a82U|NW9P45W-%i3lUB8MfmD$~kmJIlvSD95I0gXMD;{rKjm(_u;lMi1!j;uI>RK z&~S(l?HlN7q+6wCErpPO4lLf|w&2d&Ry zOrW)%%{yTVo7IGkeiZHbt64f5nJ+kz=+0ATkinjCOJ$qU5bR66QM9nQ^NPP@4;CAm zY7g$xqk9^gs9;?8=m~^H5FC)N7}7==z!}cpqI?W+!zcD$vi9l9%UD?X(+H7hLW?PN z)(~KF;na+n7~EFIWteRC<^IlrBH03GBC1BxfZ2h)zFA~PBZuujbyE@8Bv(tOIU%u!VDqqmv4z5plF*r_&LQPJ_Y03hT7t zf0$n)%HEVq!f;Z<(--enG-S+ZVrp49JHE)6sMa8SVH0aG_3Sj;SNh2$AAf+nT zos@q9*Hxx7o9U@-T;e1%DwUfQq)$NTC?Wlm zSFbZPnw{duUbMKlCU4VC>$17^h0;uJSn^qNV>3Mp4Ea@n08JqBUHl~+Sjv)UxDbgV z1KbwBmU7;Txd*B&VQV;%RNu^I%7hA|GxpOKB}9;k9ge?dPCg0%EIAXf%5I!yADV2D z5y(h38y&7PL}C2NiL0uRabbxUmc?O;JxqtQzOjsR?Gr6%)XZiJay~gAY?5oTC~OMk z6<0SAFeaAzbdw=Zvv>{GgMINSPhzoAc|Piq zvDr=+fY_Dl=*~kVU?!BQiSx4fiXXg&{snm_jjN|&I$VaSNhnw1kl0+u9E1|Wofgsi zd-$^_oCv0FT&hZ`iaJB7c$9tE1s;lV259MW)rY`l+)C#7tz=fe4k!=?pCaf1 zYk(MMh(?Dn{`>tybyic52;4w6d4=)^CPcAGXtxtnw*(oPr`=$0BG)DaYtP0APRi8e zz^DqcrPO-_5o2AOLAh*BUXfFeQ|2-mB?3nztKH^g$ZX)K;qR#P#a|#o0=`dP;Rry? zXd|OQOQ)IEYzEgE-QY?VFB9p>L=3I*`4CRnI80uxTv}B6PcuhI&BWo43Xl=u2^a{& zVVmr8pNDO_bSkufz2!%Cel0-}+DgpXP?s8(m}mY$AWPRd3KPk2b6xDpp(LL6g+JEY zXRozSs%$i#Rq%5gKyr8E)YgX`-9%v=bU5d!6=*Bft)A3~=|tUt3y$g~_MniZWlhZ6 zlMEH-vW#Q&4;?6e(zET(WC`o7 z97*fiOxTM+5<282@`zy#ursKf(Nrof*b6a*ng~krTzb%lr7c>K%ZdBLfM9leu?R;+ z0t_4-J9Fz+L=EI6ldBSR35Td<&ky{a+wXDP3AK#D7Vv*@I0ZO8jpSAV_~s-)=4qL5 z>SjO-cgoU`TV|cVMJ~A|M;4|;-*TU2;zw_e2q7;=_P4AG$Z+QzD)9qirfhYH^TBT2 zGJY)^8=)U=1z_q4pXCj<)=fKScTQ6*oY;bciP#=P#hzo>u`^itiW7rWxEFOX5~o1f*EZvmWKlv z(5uOw@gd08X8L~*>B z!jjqIdBJ<5bC(3>gXae8` zD~j?WZA#TRgXA9L5(#dLN%GF)Ul6FZFufG#q@dVkUd+|9q&TfKzG3)t>h_D zN((;%t$?H@=l=z@(s6I+FJw0UqGqp~Utzk(C1hIt406`$-|Re90+Y+(z99Sjb*(AI z)~(Lp?2b*^TlQe~Sl8=&D&`h3kY2#G5K!z8^-w3jE?Gis!qZDqMS10vFr;a>ws_?7R{) zW+RIdNg~gJDrDn6d=FjeQH7-l^QU zKD@I%opt9rbK$z((RjJLKOXMFw;{P#g)hqwcGB>}n8y^%5!F8(`K5VUm$poI$7yZU3d`2zD@<9Q zV2~&KID!)*B(hgATJoyH|H`>waTfS2%X(2 zZE zfYpPP=*X$Wqv5CUrqbG?)_J0%LcKE`?Cj7AMAFL^0@JZWaOU@T=tip{O{m(XOo?kO zN%f&MQlu9G2x}BW!(_=QPPY3{3rU-P`!*_MOwX4+s%Na-f9m$FhG>vH~X6w%;!m}=8Hxd)otlf~vp6v&B$ zr>)+t&k%pTzM+KUPEEbXMK(}8h?0wl)LM@}bGeWjeb{CAVM5`y&0J!wPj*#Ih7}YT6g0tM4}3bHMi4h>(0M6oH6-RsMbVXws#l-}{H&TjHmT@T_KeBn zHCLP&IL$TJL>ZwtDVX#&il|boQRsQUlgWWr;;ErV5x8gP!Z&wiRg^YuHm*Fg;ImqP z7r5{$tBd70`eSh943cO51z5~q@{TR%B4+b3w);}CuK{bN#upZ&PvbgMSva#Ky`=0o zGcXOpM*%1a$GECU285}krd382nszp znn~X*NuinOyI491ohA2^h33BhiPBo@JSwd#D~~LUI7>NA1qU9`gK=A-PWY_5O~RAh zzDjT@rv0MLl})tD`AQLsj1=cz$#`ahA8mUYl3%-ANaiOa^tI@hqN>a8Jzb&iy#xRloVex@{u;VqUdN^IngeEktg5;X6$ z_M&a#M>|Na%zhNoPOMXP}{)Ldi;-J&%9W z8hc@9xPNv;rlq@@4Pz0 z%9hq4`C#X}Gu(S?uq8&qGfQ89k7x@=lzAW4nKMl`hv?BrlxE`Z85zR}iwS)ug%)F% z8vyQsS9X7~5pSJ)k2=%>Y`8tz0rM|+7bHE;H0ba(#~`0l758;dmKR}-8Kh@~dm!DwJ|r0utr2#U%S04wi8fpnCBN?^ch^ zt7cZ;uAPGqte(e+Q_Kao`bL99x}m&0fMy<0XVP0i)XI`5W3CqkS3>v%V$Ton`MUM^ z7Pl-#d}T!ewXJt**zm5vV&HwrCh`r~8bTU#d4}^^c+`Wx(fB0X7xgCg#QBCS@JJ?; zQVT5&27%0thAJ3`8%AKN;*l&}7HSSOnZ|kfAI{#IAV88-C<(W)%(Pf zTo(7H_%a;MVA0*hdHL}6aA!C@jI6d+K%EFqmF8dA756Pda?m7Z{-P2;ajQ0OQ;*Kq z5y%zYhO`%YW#n*zAvnxjbr+mUbaJZ@D`OIwPfUnOWakKxDXke9H5<7tQ7wN9y_30J zC3sfF6E4#&8HhBIqzWN2pH=jjpL zLvdvS8tB&YNW64L7y+K9Gg>Eg0--OzbZ$>rB#LvH-f+z!@R^*x zIcbEid0|_{>7sFPDN+LeXp8*Z3YmeN6Zevyir?CwG^L!526Crqy-%K6L+Bbw=ZF5W zP#S^bsEYTkI-Fr23=)HG>aFSxNGPX#`k1uCl1JlHqvE_+uRSMdH$htR6#UMK*}Y7m zHEBs(5|e9eeTW)O1a0b$zw2XTeUnxtSkimx(+JajBCTh|708Wzm~icM%AWFV4lE!A}~ibUM!K^IH~et$HX3?Y@I2}!k!twP#bi2NBMmWz<3!!iQF%9}Vt{qtmZ zLmLP=IgBhj?QKf9+1`s8+EP{~2tG^kiq4uBPLqqIJXW(k){36lvGo#+i*TT`=-adfsWkXcq@1B=z`# z%$vbpx#UAyyC#$<;5w$|EjR$^&;YGGE2~nE!;J8ygI;>SXmr7p%vk>GXmXHNaCu9% zXiScaDtVDhAd)`2E^*&BbjfsMw74JM6y*9s-?ZwD>PH z*(S7v<>tbi;jfm?s2Hb(bXlkL8mf<5(TZD*Ceu-LY&&TTPdY@|);2_k_k6ZSDy2Ld zG+mzaz+GB2T{09(#i@^nVxoT?(SM~5Gg#}zrt&yDbxU>PG^~|+-GCr!MAo5@7!OXf z;ZO#p?&#)i)C6P(q_DYd>>R+91-1(VK(}u+km>;&952_VPXV6bRGs1YysLgNIoN?G zxW$ca^r392x@k_~(CqOxxh^|UgBL?gdHI(eo2I~jeLKLE*M&MD-iQ|bPr$*5+;NR4gZF%9e7LYrZE}Kw^LUQS_c9R zuE7!~45l)bsB-rJ94AAk!-K(-CCdMjpnphlviW@sE(dvc08{d&`a6R+L+QrpQ6wz3 zB4b#w9A6V1s=u?g;JDg$wjcEZa^nq5o^*AM$P2W?V0#u3P1;sWy|D{wiAd4VIhKy8 zqh23Nor@ZdE&EjJYLVp&KAWv+aA_Hi;Lzo4k~*y<#v)^kk}0#+Iiz+=Q6cR-{bj~v z=c~XBFc45y87oBsq$1hoyf$AMqiJ%XB#^U-#KAEfAVy zlgyF@nbW!Q*xML-^L+S3PoR61(?&<{5yvk(9mLP!TDv!yrujfJ;GMbj`YpP5>zxBo*P zTdh11vZUV|kK)8QPonCQ7O2ytR_HmKP|neuNKC;`Ws-6onkQr1JvE|$6G8i=hdN?> znKRkPe$6GRI&{*T%=H;wKXn`qIeQd3ESwVvqKy1u8{NmL@} zkDMg6TGO;TJ&-P~NwQf!VaU0Ys4j7?6A;5TOE~yed{#zJKu?2ZM=s;o4aCOD1{#=X z3GKQxRZa5&zNP)g9unmlet`IOK|jK!I`oNFG;2F60Gt|?ZiV^qyrbyStS=h-q73N+ zr*#^t>h&#vt>PRr6Iw;v=J-wtDHdFD^^~Wg#YdJ%n5)1{I*%Pjs=rUyYz-(e(p?)gkYC4Hpc8fhm$YPwH6+eU3Lq4|kdVuha$Nexk7$%&}L%I6~W?VrGW@K43(5Pib zN#~}SIAE1UZ?skDpkSJq^trI3hy?)Q%U_N!FY;V-Gy`UPS+1jdOYOps%GvF0lvahGe4+H`a6$dwTt-x z&Klahw}$Bq2xLr?gssDwiC+KcI|OLJVR$0vbF$(veeUKbUHkF|=eoYkd^uUn8oL=L z9W@OcD`O(Uhm0GJTNp3+TqXO?bT;BJ6H}_i%Ofr*>;{r1_c4(RvTNHaPGPz{NCnCA zhHNUL@?+`d2{S9z!+UTZVUh%_Dar!A_fMA+(Oh?N0Gx{t?CIrxGC*(f?95Ju{N%lx zQ8E-bXULYC*v+6@BkAZ)urxwhoVdQi#5wl7LBrd^O|GbB}o3M{zrir^!W z8t_2mcjCCtS3ZL>U{1cEg&FB-`C+!49h00alo#^B?Sagk@LFWGY>(H3aLZtQq+XjqOTjR`7(k_1MkjK}g7IpjIMl$So*TKXx$WW{au& z`$Jw-o-PCAax~>Yf#fI`VZInbKp{(?@SrJPID!+l2fOJC->!X~&kB`k(s$<~z?YK# zoPlz#tky6>n@JOikA?$f@s7n0TFP+6TZ#g_n9)gzOr@u|_VWB@xRwZ#?LLrJBMpwQ z8svkP@dL?P3=>%@uB@}2y1vXyr>aPDAkD$v-97jXYx$JUcKVz(;0hd)lO(%Cc*pJC ziOWdJSa#jx_?mk@N&1!PHf}3;j_@z^wmzLhc{q?x1 zeKPG?8VV4eaqMbq_*+fgPt-vVdt?b|e z8yymBcFuB*>a!7H1Gl;>I$5olCRt$jDM`~gO>2-{&Kl^|AXu`D+KQ!3J^rtB2CNB{DRpSpVE>hPz&_S4^FFX@}Xt^fMLc*hdl zz4`zNzRMD{`1@Ph_pkn0r2XzPZ2?GTiGTL$zlOx$Vu{_2LLI{_$zQtq-yq4imPvFW zv^4+i)qjwrQRfnzl<)O-;CN|i{-3MAi!|S1<>YC^6D6ely{rEpQhsMGrPdk?{r#0= z$B_1P**dy;-3C%CR1BfG_Q-Dc)CR3|kFEUToXmGdyj=tyK3l^(2Z;B;9?>%Y^>LwemzUVy8x^MmgF~HSo!U& zCOIF=)BMg0E8q1ZYWfDJ6*NT4-g$B5G++Hed!qZFRpy))5z^4CC5QkFiy~uM@#zJr&s=2CiO9rV~mj2+xjD)Uimqu`gU(C z3iJc8v|WGx(<{HibpNEKOMDQmzW?~sE5E@M&f=1yasFtD|Eo{0{5BJRTT-nE7dx-9 zWWV$2l@~u#v@UZJvUH#M%*wZv>14c3ZJ9*tFKeO_EOzW&9{V`41 zs{Q`YtgJDK_d=4y@|?yuKeO`3nd~38&e}AvLVo-+EB{hjNV$8oWdF)%R(_Sqd^kfg zmC2Us*FLlI51Hx@XjNZ(?|*&aQ=hteQXU>aSikpR=To10@7G_%KX2^&uNS8N>t8tV zUw7~OuYdQ@fBlOO{nyX`xc@r&&-<^x@F)D&^e6n+JAcxDz4?>=>pTCH|N8HK%73l= z8UOXUpYdNW{jC4`)j#LI#(%+oedo{nub=n@|MgG&CI9tz|FZx38~=v=I(YBTqw7;} zx?C3ppH-8hlcmi=c)1TZzSjHdU-`yQed+`dJV!qUT(pbdd*;k>YQ6|H&=kjytNZq7 z^8ltY45Pc!?yEDl*b;T`)UiS%Lics|0;J;rcPN7G>=OO>@e{meowtgsNB3#3R7dh0 zEH6;rwT7hTyqb<)C$c2XJ}!s8{o5NI+{uBv7CYx(zo5@>D-5rN@W*=q3x5kT^tis| zjZL^yYoGAkdmBUe3R}V}T+vQ-uE{liS=xJpozXrwg-f!=hf`b68Qhk<3f|a7w_z(e zy$m6X8u2mmgi4I#$B!!^Y+UqdPrqOldi{b~Cw$-Xjt&)$cv|QsdeyuUqP~Tac!>k3 zB3bNI!u_L7JYW+^dal(jpiP_=xb1W81RH3}th+9q)w2q+n{0zdSd^v(SYf(MBLw#3K%Yw>jZ&1?H?QK`=bKVsFH&L(~tL=`}k6CL%fWO;jlAd}N#;VS_Zh zxat~XMRHuS$pHqvcQUBB9>DWj%D7|?7Un~W-rMYME7sYQIRo=y1`Rh52W5GKThYF1 z*>S7+25_oJ_euMhm?jyof3O)h6Q^kfHl8wPYYq5tCw^wchDCyZpPVLJu06iibaY#|;@!B?unvH=@ALtbD2(<-7?Vi_rYeF&X8$>>DGX(oGI=HQO& zQyoC*k2fOioiin-S;?gK!s0TYcq^IZh(p3$&ZnpX(zbU^B&%?XT!-SPEH)7cagLC$ zq5N=V7kM+;?ypCGVg{&6FAnD);8F#XhuhPIf226 zYHQ(Y&afk`Ahhu{)U@QB-!n=EgDYdy@mYC@&S#~$lh0%=Ddi|%@Kg5uL}$hB*ycveZwnLp-QrZ$!z;PBE$hh% z%+;505D9rlt$*s}E3$1o*=+*sO&mq}3RKplUNS{bH~PWY>cw<}t6H-%#U4>lscn z5_%H!Mj9EEkzA~JGJbR?%rk{eqm=pq!1F(Q^kR2p{q+GYx{ zf&w)~hAwNiqElw_l%zGwRh+1?X;#E*HMP(!IZ+vuJwn(T-8|R2W~CBW#k%P~ANqYz z<)Tt9C`FgDQGILX^-CNpe$u}B5CrX;%l-O#&+s?CM(gvpW_!S(p{qUQ>MK{zz#5Wo zrQ_udu05Ec=IX0g@6p0imZ-H_i4U&+B+~rBERC62zKyTM%5vtHV0HL2w6grEzv{pK z^uKMt4&J+l*RVu06l8vByXxB@+JMP03X9DBIkN!~IIB`XG_mXO!fr8VG zn)AKk@5@5w+rOkXs1mki-s~Jq3A`g_0K51Ni-z0_D$_=ekyZQv^@WiS9fQ-R zKF;gW_fD(HZUEKwxXDxQTG$ZT4$vS%)0sasVYVb-2C11P31h*%rxO^i(a?t7B%w!} z)kGD*u(g^`4svCy?c@Tul75Ej+oQG=m`N-c`INdk9Y3!0MVBYr>(~%apG?!MgrzPIm>_IE~8cwF5wCdl=ik2e~*&*j~U6JQS>}Z@qJcS>GCAvbN>a zQJ*X+Dxv3G6^z1nWOrRuh1Dw20p0|A|qaAvGN*z(3_ybQ@M6s)#FkW@F<$td2K{hfLnlBCl^Pb^L0wMbYau|BWk zW~4ia2Q+irl_+U?DcM@BZAYGGvS2JKdS1!I4#1JI5cl$FYsBgqwCi=-5sJTG^; zI$R=X)%!}oQSc(6i@q3QA~44m3?*Cr(_pxL@B&x7OXSBuP%2JKZUyI-NWxH0^Sk+e!mHBe5WU}9^>}@Oi zS~tDGAm}1fx+?2F{#k)Na3ou=kaBkDJGXP5RF%6<*neT0umfR0a}o4bt~ENvJ7NeD z^KsIFh4dN{D{HW6G*#Morz-kP4tH6H#ANn7ofk-G%(n;(*Xv&M%fs8yW9PwWvdj!h zGhRnN+-$+rgxwHY3Uuaa1$)dJSwq+iWw+pLGH<2GB<|Bom(hD0O44$dHw6`#okba> z!S&JoroTx$c`uB1n#sNLdNzNXjE=H%+t7H1M54FX>503tzC}|~CrX}koqy&4%ldH3 zWjW;(op8mX;i^^BYt)PO@9y3Jcjw(6jkiabi?C|+&CY6S#8T&798uBG-G|S(Xn%l$ zI@rAprJ%Dw@v0(NVQO93f+3mi=A9qe`;ol`icn3V-r+l}|r340+9i3s@X^PbD@LYPOxtF>F;g-=CS%#EG`F z2Gy$g%%bV?-Tgty>;mim|hl!RQZK5R-ScrWM+-{lVa4OoP@{B?YmuT$~;SE zs!hITA5C}C@}ClB#j~zF1(MCupmGYiAb6T8)SH>brBx=0=wpl(w`lF_bT%(?VX@B5 z!lZR&fRY-nm(3{TL`WFf9~G?5$4AnPd`O!8sp~k2Zu8b~cR1}VNW6svd3P1?))pZ{ zZ5_VOqp+ifV$;dVsUQY)TDLvvEajt=+q~^^b8uRBRlGYBeZhW#?$Z`V04vty?hvQ4 zn=K-lE9V)o(qfrp6qZH^0)}L$(>MI zWdBWHRab25|usRFk$HWlsR<Wq`Fy<|y(jtxbp_Ql* z9AafFPxo+8tbV4KzHsJj7=TpQ`O0W~x3e?6i_32l$#i7M*Y>EpYl}d+hNf}*qI?TM zL5~I4BWFOm+F@*BWLwZmc(50$B(t(wU#WRQADtff^c`9-x7Ax8-)&jRU zaw)D=FER&(>Da7w(+u64Yc|spNf=3?^ElGM{!V&hPkP%2yZybwBPL3LMh3Pu>AR)O zJKmH_Rv9i<7p*1lusth#8( zu5uK-;3;~Op;S@aI)+fEr*>UMU`sf=L6k z7V}EyNQ%%JVKvkGd6r@>TRA-<|DhsGJl_~JeU9+nDw3X^>?}7LL{cUr;B5*m;(IG5 z<*2rz(li*Dwa9L3r_aK%Jd|5kFCvv;+{aQGlCv57Bx`j{Ydn`L1(I62je=rYd6K6r z7xY;=ju+^{!_r2Un_YB1kWmGh)lUq`{0{mM&aOU=#ysL$%J~(i13tTQot&wjBu`4} z*K|3jw!e$yPI8-aR5za4nd^rL9>rY-Cnt}0rTudFo9G%JA$*k5Q?|k8FeuGLlQSI8 zz?HPk!WJwCpShxkotHjnsG`^r%8bQ7@4zWhF4cjW2v_bw-=YC0FPV28Jn^&OjF{6M zjiSt}o!WxTPAY1^+WtN2s^A#gbgA*O>^#*W;n(j}|z4FQ(DD?-o;oY?RO8;Ow+TD3YU6)=# z=sjHUU-{x$Y+_+k?00|;a<`Am&LEb&l0f$pr3q6+gt~ddRHhieurn~ehI^~X9Vg)N zJVhvj*nac|4Zv0b5JK1y^P5LWs84Z9KoNMIjK;Tzn+WlO1xDQVZ~~mP#2Z&ODb|TK zk9$1hL8M2tc$=y^k)(;LiiSBK!r8^lA2KTay~Exb&xCsSM9aD0V^7PIz+hO#OQH-w zZ@*a}4cYtk`x3(rt0ElI@18?mmf%<#UWkEd2&Jr2ATD^N4+BLw2a`Ugg(Gnclouzu zq@&Cy^^$4JmQ^7g+G<+D<#y{iKT?O~7=+dUwj)mTnFXOQ#tdAP%`YzwU-B9uL@dca zH6lpU0z+Yq>BD(lT;dxAhg3x1$Oo7-IreEQh70ZPDG#M)?eQocigSC*q1fQiGF=K(8(O7aTanMJOd2ayG zDOVZy$`+?VU#L%Z=E#+_Y|$O1s+Xy~z@A{0+1NSQL;&Y#_cpJ+vdwlNQt;wzT)HD3 zD!~KuRO!rllfX0FONF9xS)m5Wd|P({0Z;Hiro*xxjfdJpAtY&diW>4(kS8L+v1-)B zQ(k9U*yY?GwJZ%6)@ALeEsZPc+Qx$?E=Rihr(qO`8bLTGd_6^x4dsbTV-|5kj<;Bk-Q}Qm^xpP$gLrTOAFS#hm6UBz@e1&dh2%u24zJn3# znnYjD@tTB_^wMSeU&k>|b+^lPuSs)M{m|Sd-P1Mj5veGux!`gcZ4Z%D0+2JGnN5r|+?4`uFI{o)ADX7#X5 zHYe={dk&%97xD4iWoFF6p3buRXNj*!JS^#I4kW5O&bd?}E8=>Hc8$5XqDILwZ$ApQ z5Ir%jY(DAqv6~wcu@$xLlEl^aMgAY%v6l}I45C(qbT=Ak7n5tS4ekThJmUb$Ep+`;(HL0>0+3VQ1n$1;L@~m0V{R7`T>YAN!02gi-)>Ys?=sv;0 zg?@aDG6{|D$fcgQ2OCt#$zShHuo+g{hXr?q#*&;dBh3TTUidpIM@$A9hBuXukiQ@ z*_8-w-rBj-K8+28%jH3YFq-OMgej#U5Z<%?Mf_`8;0iN~p+Bq)h1EJgxHu}i`Q z&S1`LxcC-J@$3C@)2)&3xLsb>;m=Q0_>!Lo%Ma==4wsD$&MF(!Q`r<;m#OMGUY(U= zw?Dp%vEE?V-7=X|ensA_IPk_uwi}vM z*{yxE7*YP5b{>cpgWF`cAWpVdcJIX5pXz!o`^6;CIo~FQ0b0f!F4(_1?S zjFAfsoxih;JY#qwsyvteOL4b(gbn7D2coqdCS04jVDf!qqq!gxJyD0OXJW6W{0w|U z9=j&2Wa85tLsD50hB@V{=Q}m1T!Z8|6&jiv5+S=}5HLhMC3sheW~FAy=~a(n%XtCeLzMd4x7D zOG}&Ybf?66s=KAq(LU=utCXOR);*v~w!8P2WtXvYfB7tc-}?I#Y{Qpdm7mjXY(19Y z^O2RD7zWui-TL%whosvc#8gEx1Ll%Qf&&;BxRr^{C(Qjo9`ypr0@uO>X8424--iP> zry%njO22yPZY-(JbYLb#v^_MR-pK}`1W@Zc;%;st1QspTb~y%ub>`|0K(M~EOqm5O zS<=0$|1y$(TbeWpX0Swm@#t_(5B%5f{D=N)^H==W|MDOCuYcq} z@n666pZc$V_@DW&-}-Cz>)^fbLeW4cJ24NPY=3hfsAT`s#X2e(_7*&{znI{Nx1f_n zfH8_r!?mZ;%!=rQG7jPF2;8hr@12Y9oW#-0I|}RlQDT%;@W(1WKi9czcf!F(tfgC_ zR|GUOuP7A?m#<&Bxc<(yD{tReU4Q4&_4V^#y|N0IOoB^s{;!^2dFQQ5`s&Shk{2uI zzq)QO%cpN%`^wwJJ8otfym>ravcdlDl0rqSgCh~Rx;{C;>BJoh>!A|mIu090yKl(bRexC^ zav8kSqrr_4Uh7~|l=$I+hgA{5DC=?$H5dS~a^+ZIRc>AGyn5z%!KllfvuBQ{Jjw_7 z=(CJNhFi>W;OiAWc z{4wyjVwBK^4c)BU=n&jtHAMs<13+~D^qui=|1|Lh>@{P!SwIFuwyzRSrbx5iyWvoHbx zH-J)N;*hkzLw|q%VW1KVpf&5NTG;@Tdd#qHrFgZOI;6->&T(?Sa}iVx--#^7Xsq=~CT_!MWY@yIg)yH=U{ z$uZP341V}#hO5*$ake~7b2jnsN9Kn@Bc*P%ezrxT&*4e7r6$MoDn5?Fyd17qKh)uR z_2WNW#Y9dR(ah8Bt_GP^E%-pk6MbUf<2LrblU6V=Z;XE* zWqt5GnZi$>X}DH-^=%?&q5dsEhTM_OTjbx-a_>+4yATxqnBO0^vj4RC>dJ*n9RQx* zn-2x+R7m-1p@Cw?oB?B{>gcapG1Xew4YfJk9?VzXy-i)5r3~*e>U*&~3-At$PWZja z#&GLwrDx?hQu=6GN8s zK(mh%Zk)v%P7lV2A5QS%!YC_{0gNVt@g1ZH$Z0z1lgKNWxv{B(KYTnRuj7=2qA5VB z%_)bVa0%t&Q+~99Eb$zeIL${3el~1b5eyUJkcv|V!SLOSQ0^p)pQYv}Jq$>>^llFuo+2 zLvHvumCXg;H&NBfL=`AFa<+epj)V?Oh=>*{XX>>1J}McoTzwge?NQLQa6FLWo*5%2 zt4_=&G=7-xo4TQ$#rk8jBb6CqIpTxwhGs+DRuyxhITKq;s!QK_x&oBqt87rzLyKA`&?`s@k=M9 zMyADC{T!U^34)V_(IKO9(I@%a;m8`vMP!yE^cZWdgO9;qFjaff1-(B6eoknJ>N4Ta z>vO=zf@I+~l@lYX7Ab!s?lbtM_!RcpeYC~MbH|FKTWEMT7ne*0nAJ?-qYpwp6L4I5 zqHzSGCRx<#axO~w?fqBhq<%HU;7(U0r)BP2TtjlX=2}QAkjtgL4TQ}JM}5 z>lYGiN@#0-Y8}X#i&mvg{>(K-+3ysu#CK>gSym^arPX&YT)4El8WSZ7##hm<%`FdS zp4?oTj@E%Zw11c=Y(K1NLgVBTRlmkKs z!VkgQaHhH&$c;9qrGKfD_+91gO_MFB$>Q>L0(Zs}YGV&hfw*4`|I&6A>Y^*&GM_B* zYWj8aq}w0Ck7AOudogyAK}n4k!Y#KvpOm?YK$JgY*Wd|->oKJ*>$q!oUE)b=E^E!K zM(X8+LNQUoZVaFS4VE6P^WW)6u8fJ}M(=#SILu!M^69uHX3A||l#MZkf58UsC2_ci zA?Mk2gt0!ru|A#2LJ<$vVcD>1_!CXxzs;tU>0qiz(}e=TK7`GXVi<%W+>?6fbV^f%ggM2!tnrHgQDR zw664k#gj0_J83Vg$=}V?K)LW`KIm=dc>zKxQZ`-PxhteFE4;iuVZp+INP$5(Xm9B) z)O02%iE^4S0Y51*jjKXwVN9MD&J?)-47jf0roBcShBmQ7P1Y@gAt+eTfYO63dqDn# zk(lxLT#|$$vbhOJ0Ci5f03=cPHTNOU86xjitA=Z-`rZd8b#LN_V4J)06w#f$8-=ks zW_gwR2WrhBrrE+w@KxSmzyc#TEHv{22&_~8ilm^VEy)C zp`1w}01VW+;u?!5SWs%kTcqXON;o~3MOz-G9$!%-Y=T{e@+%6YR$S2{ zV-2-Vq3(9tXm28IV#{hpHR$8nLubP_z$h$Bns182b}po%qh7M3i_eWa!UNe=q)Mjp zl{v(R>ID!6NJtaKLbBIu-3Mtc)UgOmR3?MkD z!4ww)=HiEI<%9K8P-Q5M-XHF(s>cTqR0WWzX6e8iR~lMH;PEsNJgc~b8)rAU=I`(Q z8=yPuYv_GDo}^pgF1dxYy$iJHIM zP?Ob=&p9n+PZEmVGW24jC+ z4bZH?naA7z@Y5CGEo^q{uO*2$4ypWSoxmYAJ7B5#b7pENzewt;UOj1Y z4#YbA(-p9?d5zZ!f;u9q*wLyHon88avYJ^RX6tbrnI>q?`xw>3EcGHw0&}U1&a%## zNEd+FIXY-rp5I@7zu6Cxb-@{C>x*c|Eo-_+G2lfg+(OoJA3uKU&Nd$%E|fIEie3{J z%MJs{>jRmFI$ibmktgh7QiT4VU&O14 zF3DCcGU-KAs*5b#bG3!KGAVV`y*Q|K{xeEAdzhDOyOR2F zE{rBf^6;a~CI2={%*Qw(u5FzgSc^L0P8s2smHx4m8Y&^Jk&lW-m?BlAC)>edbnV;hu_Kl;MPm`%_7GbUIxWMB4Q*9NBc`E~cx%y9E{S$z4`JT2M8dQ>J z`ICZx^WC*9GQrh|7T|Aw73II&nz-S5YWaTc>hB}pAF1Ut*BFDkId*L2M~Ph1+66Vc zWL;Rfb!=synH-j2#?V+b<6|qw2zuj?C|QnFu37pQUs(Ap(|=Q?2L_gNQc?(5&iVfW zkTyR{u$=Gy4gd95{!9P$h5y=reg9wgUw`~>_^;RhrvLii|Cayyjo-9i2k+fN(SXSL z!aRta$>Hv8od0dC4;~<{a8IuFngBHC#V^-Eb5n)*tq++obGs&(iWYArvPj${X2v3I%_dcJV&>ueb}RLHZdCS;#M@h*A2#Y+$xVA zeZ2tXoa(&02QS>Gj+Y}E?;W|KY$@Lm!XZO(YcAldhnP7yw0|>;&^4r)cEp`Ka7*Zq ziJrbUfRg3~`p{k<+(B44VBoc&uP1z-oKzW-PzA$^J`J75yw~ew0#SHD;l?{V2LQD$ zAbhYUg~9l`#rVl-pr}L>7j;0ACMWQMWn(&Q%`ns9;Eg1w#9Xm;uqTe`@cEt|KfZc> z{l@k4SKe-5Ts=|LAm`Ln2rUE~f~)wflUplXF5HcF6)(=|rO0V@cH2GiZ0rHccs6+4rg z&!L0BCG&KDi58zl#juMY&v6%LRs?sd5Ovfcmzaj1^jO$5=se)qMyzRc%#&$p&*6jy z+oK%>mo9f#1>h*gPkbB^C|=i#AzF+@&Jsro0DcZ9L?=}NI(iN#2v7fhBM<+#T&94q-Id+8S;Q5qkY7Fg2OR>tj;;?!GfX-~*z&9MFaV8xMG; zo&|g>JRWfZ&1^MU5*2zeco0_EHPk=2oodK0PQ&msdAiRwuu8>3JVMdHF7)e$&YpSs<>ASb;te+>DG<7XOXW|0@l>bP?Zb;pzjtw!88R)*Q3%#4 zLsin^%HNaeU>}zfEL^-^@upX~ZNlK%atK~lv%r8>q)=K)Jo8MS@^?$dW`;__Bgwhc zG_dHlQ}V1H?1DoMd${><6L-&#Fx@&1SHMlM+d+77nwz`C1p!XWX(31Y;+aZR4m3_>29n`D*-~IZbNiH5YkMngkX>o5Lib$_XbA-`;tS_ z=9qcQ%kNA`B(+0KJc4wPEM4u+g7bw9;>=%gW-dVD3iFq}ZdV#S<(zuR08fXX-Wl!V z$c9s=vx?R7QFv-$5mzvuue;C*cK2~wp$prfk2tx=8BZRr>v1@CKTvC(H_bff+Sak3 zF)L;-4L&3IJ((UNQ0jxOx(eMG?Za)aduHj2gWVD-%5$~Mqi0r}YdAHcXa}25f9h$B zuT*A{ss3KVkQU18hV&Ypa7x+(}tv*<93?vMGn=5 zJ5nrISPPG_oL9D_Eqav?%OTnU8sX`;hM!1m#<&S5e4-#+aREL3z2)lJjrta&?vu1< z&ot7OI#8DW3%D7mks}q{S?Xp|o3u#P5a40*o)hN;1(*o1lG3}$@>+MiJE30I^)K8_ z(dplwjCKwnl;qYx%>L%&kL1w;vg#kk^bhr1Kg^?s6Q4{e7;EU&SO5{an`1HIaCO(s zhVw7N1ouWi)<4&|^o28LLu1mj+pmnqcL64Xt0rDbd=Fp3Z5LDL|2}S~82eNdfQpT6 z8cQ~l8QAU?d~FZ7Ar#}9Y0^m`F7)6S1&Phf|9Xxe8Agi24WxaJA35+TYB5m7yv<`p z5Hb}X0H-o>_SFNrXBR(`!5Qe{{AlgTy2NorE1Khd5zz_ZtXR8HPH{Ew-BX==TuhOc zxtD+-v^(h)A-@)AGn@?f;OPbkmEJwx3E1LGSY#%{He0gP--i)Use}%SQU@8ZteIHPy?=MCLu-`lgQCp4D=HM5aiLqWuh5?nkdqa!)KJ2 zrC9b1m{J+yCW>PG&x~^7>p0xc@i;f`5-!Rm8$vkc1iA#gB=-cpA`mj_5`3Si7LvTq zSqtbxO_b1ic$`w73_Wzdz~!yYGtK8YX6Gk2bP9``Zp=p9rp5i2ip5O#;W>jm{`g^b z`fOilwO7HAz%&LyZ`qFq%wldz5!zE91V9%P`#G8mM9-YH3t-S;^dJf5q)tI~!X6WO z&YtPK{Bl?$!<(e+WS^PTkvvV(7W>R3eeovAlk7B;^vTmCt=X*NqHcT7mc^T9h32yT z9D9_jNas2BDCSt4LO^Y zwC;tZ9!?Txukd@hgl0y5csimNVeIT#-{OD?PGDNq?B;#SE8cKAD*|cp|4hG;T>PC2*hI-)PJZW! z(uhl>ny#l0dd0DY>Z{B8m6sEAZwzMew_OfT^TbX9gu@P&{SP=KfXG zb@l}HhR*7By1Lr53ZxP;I)41B1)zpVnCt;X${U;No{1-lQGV z@nLRP1B2gVT>ls&*yQD{?gwE%Cdif#k*w)Si)1XvqhouqZKpbW>zjj(A!OrZ`SV0Z z)D2(jLVogLUVQBE;K9aVe~R!`e$gKbsF#J2aCT>irGz$0Os_dPv*Q-!yM?$*p4YsC z0C7lS5DIbnBOLF*OA>?4JL`sf8-N)mDpMFcPCb6Mx;zL93{*&cn5PDfeuXk@jS7t? zH2K*toH@!kbuYz^U@0P=`pyXcVi3!ldT;5Yc5G(93P**6&koaNDYCdD!QvxUwVQ{Hf7_U87QNlPR=b%3wV=`SgT1I~Bz*gudwJ?XzbFlU=_|Gt=06=7vOfINnkH9FsD`1eAG`?SwK z$NYLWF~4LQMkWb7!D+~GGjuIm<5z7dNP#beLAYYSqu3~&fZ3E@5CAnD`U0?hHnS?k zYl^!n^T=j78=^C8_w_!D*4-Z$WL$uPC4;+0x`Bm#V^)RiAzAK>l33Y&=s@(@;}&xB zlt4zF0?<%Pud*t7xY|a8gy>$5J4Gg=y?A1gPA{I!eO-azlMnc5+hIY6)w_@aL3p~i zKo?WPKC?j0Mp++Uw0tF_{@Y5-<_%D;S0T^m>|tY|CXF?)kVQQFC-aQ&j+)d+2=g;zW54MeUTpcj4sWZ@Lae%~{dpt%pH; zGecr1fE_d6JPQ(a;L`q6-;Lv@Qxp}1ky)K3X&x=BN!T>bIK2{(Gq6m6O= zodrKZz|r+d7N?a?vM_m6$u`2iA-8Vzczxfp&8Px7Iyt&+Ku6;;lddlzDaL3CCjEGa zIo#!nK!Lb+aMx7t56Zso;a$PUE~2)BI2Ubz&9jtwRq4rsYuzZSpeoOqO@|K~lL|6$ z$i<<7rse+g0W-UC%i6MD>=N$K@xK*1JTyBLoLKZ63eCp-lhB`;=h{;@f(-cq=PB8#aTaAe)HJM|G`|Jt>#KiABF+^+s9Tmhynb~ zwG0LVd|HwS2=LGR7C?LdB0+%f{%!x&{X72aSN>=J^;3V>e|`S%`L9?0zWq9Q?-x-F z0Dn(6fIp*>3^S&Tu!KCXZyekn0Oy&eRxDZ6={$)Ij_)K$qloDq$22E3q8Z@3Pt!o*j)D|Scc zX4AGq0i^E>MA(=SEHu0a4qnGtx;BO@gHh zUa;rGOmEUa!rb&oK`~&DcJ`v)!?$-v8+Q|nHq?ebPP}o<85VKgWuc$&2yid(&&Sbb zY)yDaimzzIDXf(tWe@%-q z)xtta2d)pM2jjg)>qGN0f`zASgKof!DA?!du0AZiZdd|&n`J%jJH-vih)V*O9~iMW zo};^#ROuv=zG)3AQ$I&{rF?jf?ppFi2GtOw7M{|qwXlh$rKLGAQN?L;+Ugl_4ebaZ zmGX*mk`yz~m$~3(SJKQ}aUIL?XiKh^?@LOMkDrV+H;^p!o1RMTPNsuD;`btel$l7` zGdI>rt_T47O~4`g5A+M@l7xeRuL;l^vxCmG_DZ9QS*=d%IL|&;LhvtJ4QF&?kHR%o~B=2opA)&2K#p(2dw?1pg+J+)o|=XLSV1 zEewJ~Ur)?P%tp@aJ#K;~2Rn+^gXeJefJGpZk&nz)ghdEDc>E86p|C%^XJ;Bge2%cu zp{ZyMW{*=HQa=!%19w9$Vp4;8lz@KpUJa?zA*wr3Mgc&`8P5B29o)SPEIGPY>MzcI zLz7AD8St}?VcTblv%6a8zhdS%7i)nHn@U#d+Rdcchev^w!S(OT#*2W+RLS*(aAU6E zdansNhsa;t`(mJ`+vCBYQ^==;B_0!NCUl4Vp`(s^dAJ252SK9@Dj9%MV>mV8du zMzN$J3u-h6d!b5aOLr3y&yVm{ha~*T#1{_6V*+FOOfhdQO_?-ho;{#_nve=v=dHH} z*HfP?Cps{7?#qgP`#pr94et%2Eh289X@N?yR*E;ZcxG(6>pAeen%*XiS>JL?W3Q;N zfeS+t^Apo4h(!$Njc*tYU4iC^q|og_q=Ws9meIe5nzudaZ6ECR_m;Uj#e+kAS9Cu< zO!{sQXLj6bI+Z|nG^#4Q8Y-L9PjUB;-F!4ZroiR15nh7)ZGfkQH|?!GjT^@lQ$4m8 z>suUBrGR?~g(lTGB4#80$(gv;phzR#jPkM+tw<`(L((FjPW-j*?6K0f4aV!Gg++Ey zwLP76_QcXJYqppH9S+p@aaryZp%{%663%5MW7+9MJhEo5D>Zznkw5od;h-&0XBgxY zo$I#h#5E^ZG9%NtxL)7hCz*T@^5mwICNhFe;>V5XSWK3SptgO0Q)wa?@JUv$3ehc} z&pWs|*hzdf_k{&R-n#aZvMf}TrjJ#Eh8NSCV2P@mH!z^k#I(ZkdCEj5Va9}2=d{4M zbAI(H8_%vgFhsrguFnNBhMuZ^#{k5XWAnF=W1iD^76+9R|NV{>k-2IPG+H4<=K3 zrvK3DwYS45DbINlO{`rzWqC&nmf#MF{x7N*X8?_%)!2pUi-ubVHi*v87Osa7z0OPP z8;IT8)8nVfOLB0(OAmnI9vp6V#iJqV&cZq_4#|>X4K=d`?6`AKP2)w@cKuXxSI2L0 zotNBGX^|axr^>O+k%*sXOQ?$}R ztGGD%0@K~xg0u@B0=>c$>jl{5;k|;MJ*?>3;cH3bBja;%x56h}P$) zb-ddkRv0lhM6Jz753=h8>W4w8T1 z(0dC0E|jA%R&Eb=17*~eC6RWYRN)3lp(TxW@|5TRSvSUb}YjS%hyYSJ6<&~hB- ziG^@vMO??yt;_4GLyd+C_mf(s7VGg03BuyXJQYULhNSatdhMUO> za{?ZAyNLUQ$t|=X5Kx1*sE_rAja#xpa=0%;MaCL%GWJmExwW)89_<55|3OmY#%Kbo zFF-K1)p`GR`-FhuyyFS8{fU( zAK!^vJQW4&`V@ITco?##n^A1b&Iq@&-#+?;A}Dsh^j*eHW1a-zh7X1l*&&_;r*sC0 zSmc#SgWmhYeNO~*n>7n~f$8{=Ie5JEzWl&l1NnB4Gj*HzNt`OSNg)i37@Be>^a>*1 zGBZCmS!G15H%+PrLTH{&hn{fAiT3gr9q7;uF7$b|@FR!E94gmzljZM?3ddf<{^f;d z1F;s!c9Ub$XbCeR{zaPuy~Ka!dlWBPQnI<0l0REhPIm@KW<+VGitOQ~lj$7jSm~N@ zK6prG3eueHEH{iLaHA)#QSLtK1p{ab`^X8k^N9v-W5#L?fgoWZ5sL>O(7nk%P*!>j z%o~sUhZ1sdvIZS-0&$u5WvjFaKU<(iPq9YQuB*~KiRtwRqJx^ku4)MG;)9<%*7GT( zr96_siWE{uetJw}9-qRVW`Ya?L{07w6B_&^0s`-Fx;vN@41W(CFr_na@7_rU^R4s& zTE7iPTyDSuAxN~lI3@;8ODI^&O-6%>Fe1`~tY0REN=R&`$MxLnTCnWw^K5tl>-5RB z$}8;)UM>yyHU|&T_$Vq_Emi?P`I9sX+bjhn8V5Q2z4I-+k26^zx2p;pXgkJ+BUw=IfC^{4vfUBE{`~82WTYA zhGxwOT97kOgW)5~-izI)bx^912^XjlSc5-y0F49r%nN+**XMa+>hX$^mw8T9ShtElyTMl*rL4(XGa`~w;k>OI zi7-kYxo@I}qZHl&`Kch)VA_`kOYgMxGHTVP&{~4jU0F_INwyaz?K6@8CE(iT(~dFm zYxkUkW{9H5LuHAt<|R_-p+sY^M=G%}IWr;@CBCW*JF~<<%dC-*O+}Fs_l9C)c=hKu zdk>Z$0ETNBF(B_RzkdqQZ#i4%dW$LuTEtuZLul*054w{L+(F6Fd->%|fq3{ZX09GH zWUF#9L>xsS>KU2k>*SvYaX9#zpJtbm4$bb%V5cNkF{Y1Qei`K3THqRy(3aO=f?^W? zRES+rI9XOT=uJoFjWX7;h;)qAXs#u_xz+;4dOVTt>4kmE7c#(}mGjpxUwQjv%pZd> zdRi1jjLz~b6k#8`xumUT&(a*nzs8t6BA?0MVgqHIL|Z`K=dW%eD(yr)y{-dU%VUOp8Yy_?|(yqh}%0Ef`B}nDlRmX=j&WJus7Ld z%-%PgZHw8POs^r`4J12qxE_=h(RDhk344-Vo)3K4;`w09_nVM50D+3r1lSDw<4s1x zaVH-9G&fRi1b~f~M3)&g+d@-EJ#Y|#w!bF@n1hu^i<~&oxlly##cn0Rd#D$Dat}9k zqePG5lUWc`L%J@NEfAN&|&KBtHEz&Ba!JdBMxP=1mJ z+{nSsKAcRZ)6rhF1i1;dJswUJAJt`AH7tD{Wv&Fkg$TFEU2VZ_vbux_w?|++Dc~L0 zmZ1G1+FSng$gR_-<n1tOcD^4pEAXj{5)VFyfh^sVK~4C6X%fqj|iDkJ>RdWx$K`)$S0$fcolM% zSCC@EnbvF9Lf#(0uAw)SnwErg5~ZDj-eSLMVjc#wk%aJ2%+oVTTjVx48c9e572%2T zd*KtB!6I}@9W_^A1E2h}YD*b8m*3on z!kiUK(_>XXm({-#Wfa?d@B`Tu!4B|*g$RfEp>K5{Dhh;R&0;ff=}?1uA88U%TZ=b| z|6qKxn6D-HV{0j9G9g7Zzp(@*M-AfpnUH`c{G`i1JWtv=QW{%`=4wl=0X`;4^Xli7 z?5rs2zD4n)-WVJ#vQ8EnyD9u=XV_BuCp2uz2^RRB!a#TT&qI|-3;$$6F>z8p4^?&o z@w*-k=P8n?xYrLhF|X&{Y@Vpqx$}*en0`M>sB(;FtAM7bh4Z&LREB`y_82;*u6XtF zv42R5)d6pjncuUF^-RP*J-*WlI-i_i+xFsL z=ECAJA}YUn`aF;9TV~uMGcB880;<;<;+QRz-aCHR;3nE9QKhlPxd_WVQcS8X(G$fhQLc)WGFmsHY5yZCMZr34s04RLx5X{#mhU| z@OZ8n1y_d4a~%m#fSI1~SX>^D4)&k&Xxz~{>WB|B$mTS9X2+u#*Q6_Ul>Iy)S?ncS z!!e9sG_rpp0+KV8zj|)((uiK#wT*jIMx|jMm7P8e4k7L_&s?62N2PF)mRV|RZ(cH| zXWpzlHSZr^uu-~>&S_A6ZTg@KK*GTe&-ul$ijzfg=aGYdaNML@P{5^1lJTt(PInMO zOgz7OAw;lSprA{vTJXVOA%ZcHzJakd`l!;JLXKpFg)0U-k(0hCqZ=1J&@c%Yt5|<- z4;etMfvrjF80cCp)r9vGD%X53>gJmy{^+q|-_;$t5^~h1f$n+05qRv`3OJ(0-54O6 zoAuQFsmC5QHY(>Km!Ij#BM}Pbi@CmwSTX-SnZkP$W?cSlE>-k{1J8@a8GbOt0vL@C zb7ej(S*;ODL2FJ7#I`&8AiNXFr2>nNz7Slw+=9~wywRk=kk9dtYASRkBx1MnTF^(l zWl!_xvD=c_X%JJ*6hRc2nTth;vMEf+Aq*$_ccuH*7IT0W{o$Ddw7yvgm)4^6?Cc3b zTm~v-V{`)tT6!E8?Z!D}e2q>?YRndj3?uV6@lSe^R$q=%-x)hBQh5|m$>lI11hzbx z@FyzF&!eB@ATuxxxAUDi(a0U-A?VI>wYD6&H5ZML-P7yg4MWY$@T7jpKU3VjmbOOUSdj4Hdj^_2jXcBEoOQCi7OdK z#Mo_(MGZHxuZnMz7&B(2({dxVuE~+$Oo%=^@96#u{`Kg%?OdAutQO2=*o+-4lOMX{ zhNzZCOX8xR-X10S)(2x=AvG^A^@73$_HbPy9FSR}I}SUa!!4&MEqb781rmc1Q=M)} zMMonqD&bs~5q#W{pn)P7E}Fs1?&R)pKR@@G$o+k_j0^!_9{T=F@=O>d`aj3vu0*nx z4SPb)_hHJie15Y2iC29iN$6vDV+cfS^JLQO`ft|P&w0>8ln+d$GQuOZ8kI!H^jwSe zYUr!p$i$bt;)@(oe@l0WWlk{us3+k7ts|Uif3V!$zE|wZy?Vhl6z^#9)|2bK<(Gt7 zCRRev!0*6V%i&kO31JX4A%h(136-?V(hwb%W&LVt0S9K8|1^us=TR{wp5|c5v~ISC z1e;0aQ=Kz45EsukcL*bqbspE7z!h<4fIHqd?fRK2(^bZSlA|&T9~qfNF4p@9RcU9r z3vX3~@f@}=JkwNI9fPp+YNeY#3d)-Gj31}bg9wk>Ko!YsW^5^A+sj3xZSCfkTWpp2 z@@+*R2JudEMU$-haFv4jl#9<-;G(&~OBmErzc#rUSE9E1)TEhLRumgijRPVuC6w_gYEZJ;89;O0KPxe14q`w;GxnhY8C|4iL0)i~0s8Qn7ik*oNr z*xd7z_m9kZ?3$a;o|^Mm&<_!6(Bjr-+9m*13iVN`m;YPyTncqO8-BBF@RRc?d;M8+ z){a}4d}QKZU5_xs&Wy^<(vR%@$c#%*JY)Cm(R6SQK|!LXATSte9ec8r6>NHX&xY>L%kpqCEG` z4#nSU_q?Z)F4izLl51CCWSHP`M>#2!eo@6WA;}4GKXM20Ffb5?gmX}4Z455hBg-hCy^gzWmp$H~N&=X$Eha|aV$fKc} zPjMd>?%~5;whU`N+EAN`d~5J2y4V)swU*G>mqiX$J5`TgKyX@<%?K%e z<8IW;CmTK$QQll!dAH@ruUO{?$Vg;MeW#BfO&$SUC4_W3meWA4Dto9~+F2-E-Q z^`(8>dn~6E%xN%$e%Y7yRTEL1ao@Jv0ikyyOBTe03*Ox)j3;e&DwV!!r~y2e&L(w` zhPuTStnHQC-$z78vjg4e*r-Q(d<{1VaC$88w)Acw5pfa8VeZap!8Nke<=jA< zy>HB&gEX!rLZdTi`jJ#g&(L-N8$InFlBI2Nb_x?r_62=}#i7oK*h6`8^oR2PK+%DV z(Z9Yxkf$SJ|DNyklckMj-yE}+-4nhc7YH`a%k1_y*eH^fEL>J*&x9?7(Was+hFaYr zD10t7qkJ!5%LNEexsS4Rrc=3A@c8A=dd8>lwm;NW{-{KVk z0qz%YxcC?EYIL;06ERa%7x@OwlF6oqn@MX65O~O?uIdh#C;N}dme`H?qi4dr2yDO` z9YwW`wgmP?4?anm#`!v+N83qbl(#&NAVqJhms4E`e#(BL!_-bpn#FGX zQ;}~X+c^VEi;@BC=C}Zzk!~ZUzmqia<`sj3PkVS%gc%`5W$+VW5Am0|?CJ>GTvkw6 z3g$1%pFh-&-4v=*ss1(ai|nuznPJ!&ZOlgp#&ns z&peP!+x%}*p2sXg|fp{qCqJK;O?Z!;w{`<&Uo+MkI!($ zfu9kPf{Ps_xlf^IJxAhDN`LHBW{}REaxO(5+9oy|Ie6N-hI}#o=#F$%J~d; zHH9lGD-H7#3*qodvNh+h$Jn<3cYjU0&B;sMxvQr(nIXmx6L`d%k@*5^$g&Bs}y zu$@<1(8ui@n)oW*M7vIgQrKvwk$8OZL3{cxZTjmw8M0`ptiKYEs>42kn;deY8$_?; zb>XSV%)v9gUnZG141-*~ohjsuBf+gev}Z=Z1hE3W+F{fa1lL35dr1m*f5AmtH1v zQFBL2xV7o&$HhgDLT!G#V2QY05CmZ@@c0yy zx7#e+7{{;iwj*9W7ZHc3n;W=REQJRE)bL9#s>#4I*4!om>%_lSaoxsm8ulZr{46HT zmOGbtOCGMiw1yppn51xxW`W%*s68RZQ5;5|VP`3RxWGIje>t*Qx*g%xP7Bic#t=Ys zV@%Hiw)vKEPHC)`;|p=%z`NEfX0|G<>AG0fkhQEZu1S0{k%nXFLs8=kU9g!hql8!H z7rrL50IM3ccO+x+AFC=zh&3_gz-7Mgysmrp86V4q02L#s5lwa`fM#lA;DFm$bxQNQ zuF1_MtahH`@>Mb52w?Go6sA$3%V8_+M65;jk9)}uRUK)*msYhvfAr+Z>GAntb-o?8 zla~0t0!#w8h1frYSV%zCybM_+JQAbKf103-5vqC2NSgVU0fE z8A}DfSQ;4UcdE<(!dbgOAQ#eT45S4(3PmiouDu5Zb$5&Z9zt2gpHrx+p?YRJISeL; zEVjmbtPWiKi@=ryzlC@du^7l!TEzO@-@Jc_0KRW`)lku}ta5z+-$#{SZL87@P5ck< z|CcEIc4y(nQKuz_{Dbsu^iTM+|MO4zw;%tafBTca# z!#n!3HOvr-Qi|jYH{@*g7(#c(q;_00Xd`V;T@m=%x#so7TdyzPqCkevz1J6Sft4rj@cQB{ z#F+mfx_E1O9JghH@vHVkE%^ElV1D*Oa|#40fBBh+;qG0!_LYS*B-Vm;HN4gl%kVmo z+o>h}Wr)H@Ob4~mf8d^3y-U}>o_V_dhh&}}H*G;N7D_+KpgKFc1X!`i6{GDd zVsM;s<*thSD#CV>H{};ub#1X;Hp3T-3SPP-Y71>HY^M_4t|5hqu*)^%)soBD!SvUV zT}B)~eg?D4lo)bKjb1nA=2NDZ`2zgyA){-Xv6Nl=*Ln=^=6F1nu#rRNFqnz=fm#CS zj&Qs{@IP;j7J~==IjsXZm+%1C6L3B=$1*xc&XXyY7TBFi{hxr>rvemZ;JJhCZ? z(WzE~H(%d?mszhPCjMPA-z`Fq*ZgV6bbs*r20Wh%`Fo-HsOB|LfbGr6F;87(#2zZw zX52~Pz4;q01Fr*p!TsTd&I76u%*uJm@zGB$(DxDH`GUc|m0G?cWCS5oEf?KobU4wb zu-o)(u5fOmaWXis}@7YA?sOY*YFz7FQB^y;V^8Aw_B0yp<15r6?X))`RO67$w^ z@m#+>s#@CRaUkd6)f(;&2e-RVzO8CWqVCG950W3V@ehVi2M;Q3D)H5MYA!tz11*|W+?0{nu-s-3 z*j(dUfFeE3fjH7)c3ny(`22cTPuE*}VsRgDYNzb!dKm4=3_c(@<`plE9aN9T0o3&F_hKLMcDt-u43RLO4pqoCjbLJdO}VBD@}G2sY45}%35d}~L&Ck79H zaQpV%hYufL_Mo8B-&W!8(dBbTTG~m27NjEBr{(eW$B*+Yk3UAm|LU zH#%;qoPhH$Tt%Fr<8z;#{N^`$d$7e|(zmW<#AHBrCwn8WCHm;cLyE}vk^vnc;0Le zLKynO;2L*Iu}3y0^O~8D&hceJoadNM=wZ=b3y18(>%M$1S2W;50xhKVK5&#sjs=KQF6X6WmktB}rs*?)TH9M^D2hWQuqU?~&Q7T>gD@CL%D-{D@&0`Q?D!Y15iOqG z#l7&Q-c3YsKjmUZk^Kgo-bUaCXic(Rq_XX45tJK3TGuaw#Z26qgGGQa^v#DVmG%z1 z%4g<@rt^=M;!B0_*KwkAFl*(tW?fJR%-;MAW@R~myujs^DVjDB1t*t+X63%2{>|>c z!9x5*anq?i`@;oR zMY;#7u_|mCXhccg{o^`tLkiffD?|PW%1LVR3*Vla3@dd<9Bfd7NPJROjU{zyGob{? zSOHrm^^tG*)vUVtU_>J8LpR&-s7nGbx2xLz6vTcGFYiC7+^Cb^R%o<6FTY1^sDf!u z*))W9-kZ7uaVThs@@A;@QNX_Cazzux*4hSOQJ{jcQXsTwDP0!TTZBkVz7}bhlU_LV zR4^64LCSz;lhr2<+dpa0?bWVzR5M@$&RIYI3|%+-?UvMDh)#O}=sU_2>|*jHG7XbP zK}EiAh`>BLJUJL`T^&>!jg)YFR+WNkOdL{*Wp-aEzs-4Badju_uexiMWjgO$+S@x6aI($yDovb03zNhF-$a!dZLgjH{qf7iPZ zw5fMivvH|+n-MIWm4jytjDL1Oz4#b;VkVl&!aGg6*s$H;<(ot}l3To%w8UaQyf8b=g|FwrMQI?yE1-4MFkSq5lUP~Qy%LAHb5T*n5YeHc za;o*hS3tyDdkX-F@9y)?t4|hv|A>K+|+K;QCJ`XcsyHJ2-~mpczdP z1G_9nf%KD{y20{_ZYzGXV&$(|^;q$~Efu{u_41-+g{OV7uCeYj8WAAtGuYl*SoTy^ z+Y7Ogc;js3p&bi9O~m?lGWR8By9q(LpaNF_RWtpd&PU7L-lkA>-i%6&H*QCb>x8Io z8DIC^sKe`Rx1+M3wQfjd!93dL5=jFRQ&*y%mS}4UuvWxe=r&bb2;!YJSQ?Tny?470 z!aliPb}8{$yLa>?Gp#7v^E_qI)Qyiuixb9SPIpa~bTv8Qm*ZwbCQzLe@`u zY%n{7*)B-$raNt0c(Cc;Uhrs*ZV;yhE1uQUelzcL?mqKM`BiD))U zg123|b`{RAPfkZC2XI>J&rkPi=fL2LJw1AI1@~a_=BWgzt=x8+k>Ko1G;{K7L^|mv zo6}I;==CniZ5YU>_T+dLQqjfXe2P26$ks_Yr=#bR6hKlULAxS_^TmPgRPSYu_md7!}7@RlpidQxwLeg;q$d?qD4;V<#mF6eP1)oElacMF=W405>T;hq5mJqQlC6-$jLd~Ko zHcWK)b7f;F#`oG1(4o@1M7czzCTYb_Q~L0?Uzs9*sYi$KZmk{5gp01w^DlR92n06@ zs_WG*=n3mZR$Hq9fS@2B&H^&V1__VHiifjPRfjhz@I9TJZuMu_EYqNH7`63okYEYp zYrQt)LnlJA%90&IB#XyR{{#o+ec1Udtp^^QBE?nseMC2!(keyW*EHj=M@<$W3p(Pc zy4O=4FGy5IR8(%SSXClk^47%uggh6MlTw!Bn{M^f*+iDvSe~Ci+MUX2p!i|{tS?!Y zmRPGeoafW=;$Z7qvvV_E!OdXn-R9fp^d{)kbF(@{Fo={F0!wxWfIUR?yaHwxJg*Cy za+mSUQff1cw=kG6&6g^KY&4nF@4fuJjems+ojfDXpeqfAB~H3_|5M~C`tz{{`Jjjm zMGmCQ`7x_u>D=;P-^t3 znoB?Kign8btHQlxwpHh zWTNSe#HkIrgwzin>JE}RVIrU5CM0+l9ry0S-$|l2lVW5Z^8{sr^38-!hi6Zw#{>ko zIp4GvperMA0n1q=eyQ8@q*78|HRmgmmuR}DN9nkFi2+;+Z3e0Y*-V%*57cOP&(jRu zymkA6xuG6lSC}0$In<-G6Da;~YFcgF5jonM?2h)HYI_vny%XXnl^c)d2SfOhE#|0k z0$U>zd>_O63D}(T_C(8igi>A|C-u02dU14^Uk%ubzdxQ0&rV>vnZ);#6KXQYdsD`? zNe*#Uv^IMW&K6L(G{aL_1vgR8PLL#TG1wi=CmA$v;I_jWI-0!Ln+QfyH=i&;`SIch z3X&Ct|H~e)jWSR|?yj=HK&dA;CX-*45#`5P3Q4P~QkpO7?DWt(mF#7cA)dVX=9@}1 zN=HJA8=NImwO|!kpD<}ckX_&hA3wbN2%GVhYx48cyEpIr4t`#hUmxGSd*|WslTRPe zA@ttIAK--+D;`~!vhUx#_tD)uDDf@;WjxQ&UE1Zf{kYM)4GELRr=6XEg-xs}rirJq z4}X9wtg>Aa+uq{SoTIzG0N_oD5z0suYL)o6QjtDD_KW`hnUx9(93mbh_?;l&2v z3EY*D5Q+jXMIF4=Vya(vdyumOD}&WLlH8wq;h7_1G@Vb>m>7(RcYV>MUhip!A|Is# zE0>YNBZ7nR8Cjg3X9J2$4LZn}gk41#U7o$vVXm3@6%>0c$014vi-hEePRoP~#F_4f zt{ITot=oCI2!x;&?hC*J8F<<>5(kz-AX>RX9B5Kv`tjN1Y%=I=k5H3_5V(d;uHc+y zes;uEgNxDpsbS#LiRR=N`hoxI7=Eqr+B+oIb+-|~0Qaf|*q-!OQIUxYm{5s97Y?ph zUSfeDIVW6vgB~E{BMhiFKbh=J_c0`Ep(2mY)^s&y)uOFQB_L~Y4A=mR0G~)$VVK%A zd$3KKwHVGkLUQ@m&Y~WTm_A}`rn2_58~8guL8vp(AYY1F_D-e(0&s{v5}eYu_y7+ z+qgU!dbz9)(1&w?%f%LFCoa58i~59bD?ZBh(D_50NSvJr7c~s|a+VIYRf3{NMx^o7>b>b^EF z1uPA9R!~CkG~@93(IS%ELF$Ja&%Pg}1(qeo)454v09~^QL?_0Pea%y~K`{~Z&BV;N zv|iJIH=xSYe5ki$jsp+XA*FJhF%#4T{g?$+6+2s&8Vk%N*6NV6KI9XpyH>Pdc_=@u z!6Gp2r1@dVNa-oD$lIC?tH6@D>$&dX($(nX1h%YAT>Ard4!Hwgv5gLuO`m4%7g=Z9 zS!yCxXIXU4N)Jhd(=m)<3m^nEgf50$5Q1c@kvBI|iF0ZI22pt9fr!0AB$oad)*;C8 ze%?66MLc6%nw~nqok^*8+v98hfqQZbyMUl-wKa*h`YMuNQF6zbR}UAo?;-l)>AXGw zTcZ_O0Z0aZMF%C#@vt^F75oh>3=GqVAe9Q+HWb8vEP9$VN2fTAwGGn|+1fyfYkf8_ zRCf-D=t8{A5=39>rM0REH0Mz5Ai?;3^u$Y{Wb1clLO=Iw+D%9f{E%@dK9WT3lY)~$ zW)>MzC52J;ZS8PKmwMTdW$h$(NfEomK;$wlkQeKRpeS?5{7yXn`NBV!AQ9Y3Cdz#lo5dLpiRjR=aeVzXt-N~du~y~5NjM5-Ps_&wFSdy8gn@&KNi?KJB1Z- zA=`D?YLp&vrP<4(%kXkIdN!JhdWoJJ)JZ0Ru>vH)MY$FPLs>}OK|wnCqMcKn9y~~s z;;WX#A}e=JArqn_v`JV^*jD^tcM3qJrk4f`g$l)}f{fu^@ZMojc#Dq9PIDX0VdDzC z8N3M4qwhcJ+%B0ViZFErT^-V~=|S$Y34I0~gxy zo|i4{p;|1g%nu|{+HpAl@DUvyHpaw40#U#^XFk(Ib6Bin+ck>ncuaX1hKiY&`VYClY|xfW^2pe<@;K-y-wHV8Gb0;;Q+2JI#~G;I-_ zAQDYBCACk!R8{qEFrMt5J=y5r5~T{uO}Nsa-#P2ai`GU;U7+2M*73QLMR>u_X1fpy z(!^7e(nmCBfN@-qLwK_kCFW;`cAx6#5JAY}^By8Zr?5}L7zKH9(R)s_jlHswRc^uF z9RHSlATl3b4kStwnpJ}a;_Om`8#!{HdYmpzKDCb@$n2gRFA;-g|vF&`DwH51F`1pc#*4hKh71m)s zs6T9o%RKM5Y!R3QtL$u*jj*CIAJ*X4mF4q-Rmi0Q-2W%HB~s$6f}*;BmF>X+*y$5~ zx@@fMKk=KQ`}7noEN!BV4g4mi@N^NOvf7WW=tN_`NOfiQP_4Pmz0Izh6=p6fp1?IdaqXd1&(aWF=kww6So1a=tqoosRGEil)=E zlSMaQTMH3SAYF+GjBNoUyXQ!cQgyLvt^L$+!V%hW8o$;b*VrLj3W$`d=Zop#A^E~F z)@3W{N>TE0mH-bajp?xuElCsTs*+!gz}^Zz0rUamhEpGiuh!+{QjcA>{k6I=EL^0U zjJP$sL1voazAW7Jx)Cm*=P{VaPsCaaX%W6N>ISfUhq~0eBfO5f%xE90&6S!l7$7ZD zop|9C2qvKlHn?SLEuS!-Evirjb#+f$_aK7+R&=U0vVF8k;BD6!OB3H0R-re;$pbl| zb8E4jp$wa+D(tZ3fTZiJBTtL&ZmG{s%2>sFtIry|aXW4B zpN#_tA+K!glyW=?SqsiA%?IJ>5}b=bd>9yApU)1*a$D}`@cHO`PCh0lN^)-L(;!ct zAIxxs&jbH7`b)jLa@G#p{<$;)suP2@lY(cJD&34o&HP-VDTD4uW>3_Ki6@YRBH3E39rGpOD}FxB zJ|+5~*9*QS{-_;4{`TH}@2#OV{}#6#a<}q$poR()Q7p=G3~ab_MS8E7)M4*AcQ;#s znKF2`naDtzQ-d6l*ZVbiOUcW17Pp?il!vSrT;50|I9t%+1AZ*L0n$g17JIok*ID}E zBoH>J!!hjh@%WBCT(B8GLHL5rz*a;rvTU5T|H%l1Pk}fFnj?X_cqjCJ zf#W}0rfaRzfA$OZ?=+6WsDH>&xDnH_PR~Wl17w6`D1p6dA-_q=b)^ASLJ=i$O+%rgsEN8LWCr<*QyM?@X#urV%-)?)}`Ku zv*)A)x^44>&-P*^9f>xG7brr@&!+RU(IMhKPN6zu zr`esD6kz^y5zclL72}jO)#z#^g(cE$U8pMCHwicHIs={Q=DczMec})X4)GA>T_!3t zaQryo0SChQ94R{s&+ z>M|%70wJsnSIhAs=bcS-_|^nADeQ;s`e$;uyva=2&2|HOli)_V%}E*1#+(sD{rM67 z2J{j9c90KF4o0^6NAoM!`{2qBhW}j->b%7k6l$~_OByFd&aC9#?_Ke48oO|F^QvnO zROvgG0V39;{wd3m{`ClGdhX)m=8bT^c~?ee@XihJ0ZB%}*S>A%4Hl^D7z0 z%PXH}&|X?ZL%XmoK8DeIR^+7=9P)VGYzuPSPKpXKFtkAlk%=87VBi)qNK(W?LD20ufX$GHs19SS`8^7nuz>pbPhFu23~qekw@kM}u_EToIej@O)OkQkYM*hh?P zbEP+b?{D6E{Kg;QhoO;wJjf>&n)j{y8;IHaV}4F*A&kFv|1O^X(nCn=9@mh(y{*XJ z{RxWvVp#-|$=Qh&cyj*;1%9R_gew&rwSyoxai$YDd>YHzDAF%qbl+`o;wQ`@mvHcU4s}ZTQXNCT`H@5#Z7W&6x zV>UY<$}0(+9K7?!ANlOx_=gZU`NmcM_V=#)x8Hx)zMXwGLqP;TzU2_c?+g|G`#!Fr<>b7wia%WEdH)qk{$j@jHo@!lWREGOB8F3N|p^69zP* z7l-8ckly9&hDr|i3ve@T4RD(}gA4^7!h$GK1S1U8{HG7~m=;ig`)@TSJtA+DSLjzq85#0EXW z2{JuD*AI2HUZMITo{h4r2UNo|2Z7(!YhKiwQQ>5Y0y{Nan7K+jfiwewNOH!@204LeHm9P!O}dsqIjNP zvFwFZkoa~y+nc{*g!E3?#o&~w7`V~Pxdrh|$qZY$t}|3m3J~%kVe5dU84rWv@O_Xn z5DgcEgPB?mC^U06=my0j`y$|xiATt(VD%T@cd>tUO3SyQc_TQ9*Ga%>THMc5NL(?J zAhNA3NJA11>!Xlu$S@TNIQA7DN*wW%phs;8GDWT1B@aHB;#vqhmw+(k2s z#p{m@2`an>e%~(s;fPn!2l{wA=>uHELCAgrkNDH)r+`K{cbe_o430x+J6jx(Nz)@K znKTw?>R698eiYI#{76iE`ef`u;OFMx^`qRd!B9IA(zOPTa}oof-oQjU17ivV+XA5z zPEj~bN+|y_)#S?F>J^hS7mt_hZlC2~m-Pg54BFnn|E}YiOxR8GGCa%mkP_VII7A_K zk@3a&dT079gmXm6{R7hyt2BAi{MVN~aDyq(F2g+=`v5lPaA3uiz%`NtPlYVS55vg# zCEh|%Vl2(81EEL)2Q($Fz!D4b6R~S^T&goZBTc(kSx%cnP!BGa{b;m1Iov2&bMM}r zc%tFO`B$_V*$b)8IPNwARU;|5U2}-QEyN)+cj3|Kh5o_riG;m@#J%mxfijdZD?T}L zSgd037h0sGm7{puEfx}4U@T|BBTmONT1Dmz3#q52y7v~@ep~}@30siIMM{^q0v8mk zv~C|_z@N~@4S|~M9zw|#0#3HezN<+N6!~z5MQYLP8hQpAq(T4y9pL>bwmUr!P*Q=e zPJR8D88g*q8-tLca-Yk*hmUjv<;I4g;(vq4FA+d*I)*T^Rs6lgeuJ*P2erQge;7+D z)I!gnrMOch%_0zmcTu62~B;G5jdqwt4ks#=}eHlZl)foPL9+Gm!0J z8mls1(mG(?zi!F1-Jwni;mo#vE~8tUYJUrMXGje&MZXm&|1Fvuoh;08MR&ymI?zQC4?YckBa5(p)^Udax3bjOH6c0!gbw zc3MUI7D(37dus0sEU}yAJm8+QFq?Vi;zCmo?1WB{RI+sxu&Q7?loyaWbhJBRDL!`o z9&J&q#<)JpJmjF-5d5;!Fu~dC*1sp|q^&5HMekZ>-<*`XJfioIema(K2tCUfNCJgz z^OHDA%Ny)ih=QoP%WOm&U=!2`+ZYfnoDS;%Hfi7jJV`@JdBcImgSNCNm`97%=*yB# zj@B;G*?DV`-lTWsdll_o$nMMtJ@G7ACp8W6^jo9T!W*+T!IzAMJ}XCO*yNyZ{N}?4 zA1B3~^4nT$jqUyXCJnBbTsL!cK2;Dmi^~g{!hp^%#D$V=C2kDu{Kq+u8$-lu04>xa z6bnX^na2#N9Ke|~f6)h&0yTO#EtXKnFJOp#DP^0FtVwT#jm7Kh_ul-RTp7kL9?ze+Onf1|iY}ScS2)%*BqOP%9V6CGarXY@`7Q!bXdO%W#?7@Ao!t z7p9PVcOZhMvS~aoFPF#n!RH8eJV@1vHZ%qF();olj z$3_B;#r8zCq|cR9MO^9_8!(CHakd{&eMqDa+e5f*lS&U$?&;O5sZgCe8x)n^Npz#S znBpprILroyeJFu7qkP`mtYA#gaq$(&@?qzyMiUz)(Or1!HUVX_>hl&V_W7--Aj5F|!?h^is~zc#P~~*pFowX-qn3MVoD-kvOML ztign&-RQp&@YZU=5^Mxn6!a!&)rCi4-Zb>Vg=Ppt@n*IpgXY=X@1|~_tS*?-92xEF z6<@dmyTo{wseKgP!IT&2N(X_fNQd;D+=yg?VEhU5o}dT{f z5oT8VauyIMT6EOvsEwyoQ7ZJxT&ev89Gtxae8B5?AH;St9^8TA@;>u$Ziv&yZ8ZzK#5s75n>YNWHw9R}pL1`$j%4q)hp#4-rd-`gRC2$gf zUGqXW8>yz|7ATsQzw9FkVk#k)lSc)yK8;Z91dCb3sL^tH!jMiPibH~ul&SZGa1KpI z{V^60JVke}yj!0@NRuBT#b72N!mE$p-RM6^>Rw%w#~hDFND@#Cl$A@M`Gg-U-z=`L z^$_F(-pkZoghh+7hgCUDcRGo?%cO?ayYau`TCnwb|6sxm3hU{%XeNXA?|txtPwx&t zynFA14<7}Ckk|9S6~_EA|4JIgt-cH<+#D5)bkuevwa;`Mt!z!@WWx|bnN=2Gom{HfBt#pI}2(N~91 z;R6j_ZLk(E#J_D0Km2NaHU%IeOF>WOH_MoELa_?easr#Lg}9#26_pVs;C zDE?BnNu}`PLT*5*;wqDG!d2#(Tr<7#s zEIG)rlKO`yInA=vA5h#z(tOX;Z@lj>W{9tvomUIegki@Yw9aYod%dffZ2e6fp2s{PXFrU3=Mo8Pp9{m1;moxGneXw_{tSb*h{**R7;{XjlbB!*yJ&T$l~q z^Q;V3d_Y+WFxxjj{ovlmB}V&lPb`Xl-WNtj#NATMCd9_^j1lp8wsUoG^}XKPa!}{C zfdsmqxLtc3M5BOZTC#eh7m%s(pE`W1o5ci<6WP`Y6IMJZ*)boI#lpHIgmh|)e*%-oKYYfcy&yaa;f zP6A{n#EJ>4oG%vDg8OiDk$J;*F+0UKa(wyD7!WY&=unS^2jQ1-`;Xnn3gua6l2^qYgMKV=a=bhN6+7?rR z@JbDnfT#f!t=QL0N+(XZ>fnomlo4L91=eCs>(C{$O3&N zOjFcgG2Rr5`(UBuic>~=A!$oXA^GK#-O%6Yn{C7*_MJ=0#_ zKcAQ9dRslXV8H^Y*SnihX<$$przm`n9>?MsuRignx4S1f(uUxOC~GD*-$fHyipaId zne#YS*(VZ_6z$#=h28USxMC+(NA-Az=E#sBg$e5x8yc>x$CA$QMhQW83V1_+w+Nx;x*&G6W>b>bD zfV>;H%}x8M-M~^cuK48C1dsyw@o^jktN6!2j74Qoc@A4ohjdc(m@x}n<>`>viYR^^ zAo;v;c(^E>PEV2-Udh02M|Z9Hpxw}@6PS37c=HEt#&NX+7cEcWd=$3X)ldXk!wsIV z3`cR4+UTABY@Cw{C_YvoMAqTX3v!3=eqqRZ{H9!z{AVgel9U;`s4?mH-?{%GBGP}g zrI3utR6{HLoA*a3{Aa7eA(+9+?cF~`xo@|XYs6<*mBszPg(|;XRWWyGEAww}|HBNQ zFWoIQZcbN!0qyoLys>?Y<^N*UXe%jc7u$E<*!~w;=bvh;vnM1e%he{{YW+)ZZ2xzx z_2;TuadWhy|HB*G{|}4)$+D*$`_~cY|F@V0;IDnxzrFQW{M-Ng8~*KY ze$T)C?oI#p2eB{g{myIw`?!i%ZoovMfdB6%69pX4ehf|G&Uda} zeUmKoQty2f`Gl8bUMxjGoeLoKgx!JrlqCWHeiz{8^emx&Q;PhzdyT27NPrjFJ!JY7{ ziZ-M5n=$#^ny3N|>2+-GWXkumDT+b)emQcYrHwf39Aq#1Zy9Nyaot8+Qeh=ossO{4 zC*?IDKQ*kvLTfC(tW%j-EmQ~PAIv6K(NuMW!}rf%1b&lixtuSBC^i1LJidL)Lp zyQH(z>;d!ze1D|nuh#V^di{K(B9hl~|0xjUqF)q|TZKHHzJEG<-c<3s&)sj&4x7cj z!}exwn*rV3?n?SXQ)R$Y~c}4WebRP`F%+j)!|31c{JYoOQrDYZ#&u}zP_9(vXi`y zejJRz?^jO{BG`{4M8{pvk8nQ^FJH%Ho!q;jIUrFfa*gl@jc!Q9nAIomvi{r8aRJ^g zP7CSDH~6c^e>Lb|bw&T(XY}n2+(FDqr5u7ZH6@thbc_Imqv;%13P~QL>Ha#9jVuh@ z$(@>{K-PPJboR&CFFDE-62Yt&9T_VfSpMz9#Sn1?5O`*3?3>8#%0wWVwDNfJ1hUq% z30!-jJma_?0WNDbOw3!5dP~yF2*e7)c;$twp#spwzp7QM9egvEY|GM@Y@ETxvRwWZ z){|$S?89+-+F5a6!FO<(&-8HK#emmZ*pj9dcQLRbgmcofnwK(TtEtSo zy$4BK_rXk&>R`6$AhK$hKCqD4qA_4EQ|tl;8|}wp^u-t9`4Y#~(Fq$u8iOquo=e<& z4^m+C0tLR?U0}YLoS?*ax=Tn@^490*2FJr6&7K3ctAqFOeS0#Vo-siyI>65l!6N!C zXYvH2We62Xg%Wn0)GfaixigjuaHJy$4oe)kO;t#0+4PW9iQXw6@JZFVTAA06@sTJr9%TT@q_hIRlM@WOz2Jx%%#VSFfe% ziHLule@VACN)uo;67^c141b;Zm-6YX*rVoE9+cZ(eYPdyA)lRvNNLTUl>v-Ibg73l zR8U`VX{ameIdC;SD!jsI?yTN~JWBb^6!)p*;P&EqYk6DxsMEBr2S-X;h+%Cn+RIx} zek@!Ejp=mk^z$2DFzdoo@H5M(P&GN@!G4F)*prQeGbGSZhLqN*zJnGYho2vYvD?F? z1Gk<$NdueBqqPR=p{CBd$9V+_&&?|$0ghw;j3jLnHXCMjC{Oh2?kI{UT_t6lYdoqvn@dddFm!gO&Og6s*G6x@jbe!9OuIi+LH z5t$^!(pj19FwG;*U^NY5Lm)sVPM_pYU_wQv-#LQb-oo88FacYJ#xf+z9zVIJ zTbMFeYQMWA)nK39TcfU~MqzpU)5^W2c7 zd7E&-wb&T$9m6eF619t7lFpzL{?Zdbkq(~eKbQecMFwyR-8(x(j*PskIeQOISiz;o z1JiO7vO}sZal;_qvcH=#!$P$+frLk2pfSrX=F|)w0Ul(-lNpYYxYw27>0?j53u9|S zmYOhD)pJ8fu4lshs)|YG&o$wke0H=8RdQ9`RFLo{fZI2fdV&z@Qa>u0azCLTMbr1H zOo3FCD}GmH3q+!9@w+NpA`gYj2UY2W2SXUj*N<|Ir8|sBixME|i87k`F+?AtSq$O! z^DJvbIrW2|USbT|aUJIDnHkbeIH&bOmKdb>6(z=SL?!a{{wuq)d62HQsCt9tDdtYm zKKrn8Wih_shvyS3l1>!I6Je>qme~g*L8LWIr|@mUO%*HCNi={X3?0@_aa`Z(f0Cnf zTMn#S>VB!?<$C{`26~(RK)8ov^(eFWZQQP1N{oJgubtxSyBB^|MjhoYi`>o}iI>sTTQirO8Wc0>pvr6f+5TLP3crAV6o zmN4*&$%p8x{w@u38rJQZwiW;8xh`{x3m9v@1|^T z#jgBn$QHFB*&9PD4t*hZ7F$20V1D$COr}}g;^Kl;D=ywFUgoM|Qq=stw^~kg!+Otk z3=qk_SIFJ1r897>a6Rw44xRIg72th}3)N;v<#}dnhY`F|(r+zZ!uM`ae&c+|V0G3# zc@;#rd#+rCmW#=fYK0y{L8#Uz8nsK95MmmGf-k`?`CPItl3_}B*)l?jopTCRSaeg# zbvQc(ae$xqelk7T2&1w>7Vzr7Qs-6nmKVrv;fX(u*qq^NUwLXtE4*?TT;siBVbJ>p zm$l8$k9KFgHwg(}iua%iZA&s^H}F)FNa*F-)uI``X>>(DLq>Sw=G3xN+n6|4jaI<) z9`216a6>6K8}`5talIu7Z&c;$7h5k%_Roj>oNt}Czd!&5)9eYJB2(6C`fo9`t>RZl zqtYBS3r-3ZVEh3c%1q-Y6;=6;SR`Zy!Q{4O17Y8?d(q#1tBERykgcV1(Jx=+XIl;E zLkxfEC+Rc&$OP@J@^7`x`m3;|611?Bd5LTek!G@a!}Lbk+&L@eG*K&~xm_20P@!M)GabTTyC+x^UAksbg{gAI?C%hHG2iagXzYva% zbgWzYCu4-WY)eaN^Ig(JLRF5n*a#3%xAm};VR&xYKYVgRWp-NB;)9N4A#tn--$y}X z-R+7TsS-(VtIVZtx5zGLIb6YQ10Aj!9cCE>tco~4-Ss%uug&|7+ktW9tR4`{)G>Ud zU$KQoB7YO+5`j1rw%*)7aBVwH$!)y-CQB~MIfX5?X0VVr)ZROKQr?^vNS3?y{B(~- zn&7EBJ$iBlZq~4?R|21R%)e`yU|6uDjaLMo3*w7I{X>yP;UZC@KV@tzVBmouG;7{SL&+UW@BHf7t@sT&a$$>v!9Ho?kN|V7owfkBwE~KB| z`)d*|Ik6mSyK70y`Pr9hUx8yRV)=CPE|hhEAfHZ-;g*Wi%D{)!!0LYJX-i7Ojii%Q zXl#j01i)=0JzIIE7PT!j@MT+2g6NLcUn__>)C&6RA6^9!7cYJ%=&f=Sb!8~vj>}X+ zWQ&D;jC+La6+z75`hPKmx`+RNG6bo)o+mB*TCZ%%{>~LCZoiTWz}O@M+zG8Hi-dtiW2TxU;RVP-<6?+z!( zKRw>S%>i3|$&lH@#bL-JUo~Uvnf3|R(k%`b#WY5grpr$4wW1~u`LpkP!Ux&YWNRvt zY~0_xf5gNWWw|0a$dY%=?*Hp3_)EE9@O-x-|K|Pw1VwU^iGdVp_y<|(|MdRH$#Y`@2%znq(rj*Wj=;*P)k#`b@}Qoou@wQ7e}{6BhQ z`|q%Lz@Ri5gjFl~-@mc_r~fEQ{-dd3O9t|*@?4UE{OJ#o#^XO`GLZi}ef#`3{n;;k zbl4k?7lIEYO^OBq^Q-A?h{KjrhoK z^l}~u8x$@FT{^h0Bh?5lgge32J@el2$(xqJL(dNfa(M-%RSbNN;~LGcaa)cm9`d%R zL75H_`IV0(Mo9JO+i=Tzf`n1<(JF5tQkx>$0lsl9o^Y9unVReHeJq4UTVZ{D4>2qV zSZ*uu0IC0v+dIMqe3+)A&bIA+N8^_*tH@}M1YSBk_-7#GdU164W|eV7&5d465mgoO zlqpU}*5n-}tJb6`UWKv?Vm2(HrJWiioNI6XwCWX_2a+M3&dyF8xDWWFtrXV)u2M6& z9?Gw(Tw4~Gm`m$I`CD>Q7V^yTbdHu5lOb|}@!S?ZEV$}=C>u{J6okcrWdrmDoMW#R zNBxwg#h2hlf#;m1<>CvII-U@&re1LlrP2%ca0)Zttv;<&txS+M^FUvF_;44Zd*S|%NaNpJNYA(lsh>^5N*yWY}ZT?RL0fj8>7AN=$j z%3`_|GJo5cmzXO>Q2DC-$=dT2awk!vP>#`6Ks}OK1xEPJgR1+J`-qg=vNp7aDW8!Je^ORi)>?DVKMS|(Tv(75}Spk1)52PwE_y$+ML zg<+%tBNyyeIU)QS+UnhzJ}XVV%0=Y{#3%=_W}?Y_nqCb} z?Q7S_!u|TI<>V(5cPw7DWhOgK`JA~`Jf@IvdLn?Xw-|MrBspWb7z2c>&k}5F(Q|~i z_4=ZGxF@?~LxFbcjePy}VM5IOyJqT+l^Ki^Px^GSI6FPg=lvGilis&)(MwYa`{hST z$7`EbP1sKdJs6Jg&uH&-HizOw4KM9jmZ=G^H2^0;l{`~6apQA7DM*il1=N_1$en(o zke=}xdkxRXw#L+bas~5h)thMcKUY(qxR=q4Uf1wTugamnwiWg=Sw=ls=b6{W27PXO7^T59dVdrD?)M+~JRp8GVe@6jUhP!_ z@I=v-4(B8<9(Ff>jTM4RrZHVsf48a8QUQ0Uy3ziFfBo~!~JkSAJhj`Sk& z?|%OlxjgI=j0}n1^uW+to4vONpTSjfqp?u2B(ruG8;swVOqv&y$-B9n!n|yMgSSE! zk`u1MSUT%o^#H8F+{oOjB$j?=2v^pScAYhVW~;6m$k7Je1pCM}xM*Y>@&4oA6&-Z= z@p%hh_qw?V#qIYW%@#;kskn4RgOGfOgn8D|5QDwGtOZ^lqW}Flz=WjloC5<0P7wBT z02Oq0dj1U=e5t|^?-g-YQy|2SgXalmcntGxwfd&VU?cO11Q+LZ84m0&^=Mm3E0*Sy zc>SV?v&aG^63FNMn+u?C_YA8F*X1EKEl-b;(1$->rZy-5J;eo_6gr&D*zU&Vc98=I zuusK*I?0Rkekqg?4HzHNp1Q@6PxwLIAW=Mn*C=MQ5+_*h83Yn4XUaQyjluAlI`j?& z&SwE7EKhiM!f+q^#g$L9;G4@S7E&2D|Lk&T@lx+WlF<{I@@SVJ{9}k%j_X^Lz<`q@ zkK;+P%lKK9Qk{i@tW%9Wq1M3zGB7Gld8@a06bOEpY)J{hW=`NAwK5r=C9URWPqI3( z+8LaU5f`r{p2^s%n>C^_N0N+-YD?;m^nm2SjI=jK+q-v1C$B7XORpc5B~-pqaN6qJ zJw26MAF=9El?*GFoFa=PU}!66-ChH^BFO7cO7f{W!jJW21&?u+4B9d*@Q)#}D9<{L zB0JiITm$+tt1K+b4}rxA&~Z;kTY{-YmNdFEXS-K(vyJYD3)%7tjnWDwBm`v>`@m2) z1!>m-Ae8c$kUBwXxq3mRRu#2UXrK=T!3D-bckqzN`NG(5VvUt|1V>_!Oi40<;Ec!ZG`W}1TD!n$dP3C+Oi&c;2?XL!5G*oTZ1sn`hoj@Cl}8c# zZ%R8x8403W$}1HPMfB=Q4~47a&OuB?L7#)gOb$)pjnqU276|ea!tY>rwD+{nWv^q) zS1mTDfrChOFdub|ozP+vZq}{`tc+ekkLj&bF94nO;-{TDSz=l1$S5CRA3Z~U?9uMw zWDpHH^RvCZ$$Y+lc4$0ucnX~z1GR?vNB0He1`h@GPPdPH@9;)#=dW+~uHix-hrF|G zWuxt{ONJ`wo(oJZ1~7$@hPX5F)ae4cQ!Ld6D4UkUYSKZwbZWTL@hB8cd^GmpVo;=D z1tZfgf~5BQu)neSm)|Z7aJY*coCfYceMk$!apZ6q_5>DAs0XRHqqhgvgE#bK0d5QuC-khXa&ji_?i0<{sz-BnsB07kPD-YMHeaA!|IPz170X*W6S>g4*x zI_XcQGMI7%q~!~MhMDW*nmqi&I5*^}GTPk<>GjxT`+{E9Q8#!+Kgi>U#oG=;%<)Gc z_*vRz(x+kr!kF(VxAUGkVu`QphC8K5nkr(e7i65 zY0WaUeY;CHoR(x>+y;p3HN^KjN%5q*Q9_#$RyOf;az2*^aA_XaukeA>4Lnu76<@eT z6?F!z!@Z4z=BIc&Of7bUl!{2FL1M6$Y;o_$6URrRr{YM7qbSQO#_W4S-GC5M&uCB3 z35~GHEtH4#4q)!Y3B?2hN(?1?*?itb3@_72w~>&K9!=~-wxANpg2}z-Kc8Pg2|_gE$6}!g<$9 zDowpZyXW+B>Njja{G)rV&2y#Kv!)j9uIU19dkZ8PZVigS+@II7od_%h8d#Hkvif*( zxVnDC4V-I{x)gMRNq{d1FW8$&+C@x*UKV56sIJNDJ%`h1qPK)TlXf%gp!J~a>Fa1? zuqR4Mlqv2iN(SGyM-8%^pUK*sVU4X!-3^w!Q zdP${tv@7KY`ZG_n7xU@fnLgh6j2o#I)NP^By-#ahI_V&}1Di88rz?C1kt*!Ku%Fs) zDfl~5FwJ_lr?r&*U87g2;-gvC`0pBNS_P%k40le%teuGyjB2@6tMaBcqH%6hT^pu`hUDY0%ZDO3N{+-GG=P;nU?oDB8g`~c3(YWWFc zlOw8wb3|z&Fc-F2aIHDKig5vbhjIIG#vAUlH?5PBNGf@C>158$-C z%%!}!%*YnI<-4p@yp89=0?;w&M4099Gs}383u0!)*?|Eq^y$cIH4`&AY`poE(=&|7FUU?ZoR^sk_lpVMY7jl zx&2o1DX^F6$Ksx98fpy&p%Yl{MG%9;DhLFUQ;ZEBk#8ai=!?nN?)fR^B}Q!JICUJg zcGfTwr-`BLmM_v$C_7P%D2J5{K#Ta;A1iL|=eJKD9A=G^pS3s3ggE6unO zvu0b6@Vob)AhhOVyJmwIb6b#WfE>B6gbWcadpvorV2Hg%(y)wn_dH(j=B?Z4 z%D@G+9?ZrX(T#G3u+PojqqCDkBvOOq zI|J&Zr<2j*;1FrEteH>n^G%O%y)ASJpTE6{KWdAE1yX?m{C8rIg?iquvawFtR4G&I z*hoG_Uz-EANx-ajGatQ_FxX%NcTT3Vz;%-x{{=|ZL#3PR_ zgaOD_8z|QX%KG}*;o`_LDXU2do`~ans-~zxMF`f!5rN`|73>|w-J%Y+p=ej2Urwrs zb%D$6Y;eMH z6%>pUzJ~m_Ik7rEcsID2QMM~m$lmOf#(B6!icy*C6U8D5ATsi{Ug6wvQt=ojefWer z5(Q&gGgf+3GQ zc!#6Z2kg0JT+X?O&`;TzFIP$wrc&E=W^fLe9AS%{Fdv3bz-`>Mq)VKr#H49%B<9a3 zXnF3Fqs(1rhmAx41UqdU0%#1U0#Zy{zZeUM72~4Rb%a%td51Y1inJlVgJS%AnZ_+m zwXE;7Ho4H->J-blGenS>5q^={TfWxWklt$f{;yxpzEB2033c0=2ZDpeLk8Da;;9t^ zr|VrnRLJD3`D&8nA1ecvNEV%VTB=blG&NK@$b>Ozp9^jw7k8CVpoW3-*lI@Oph3XK&c^hMF zG)oD;hMZmUV{%%74}D|lAVqR>Sdx&zB9TX=1J6}{K9_oi&Jv&kW;B*Do^-9G7*l6lY4d(t4v)&^F3|LqQ+oQ(3B-;pF0e$K;~_INU1r1 z*a!`G0v9E0SXcw2yswFTAel}^htEgn^N`<3qs_R-!LXe+nG%FmLBJd<$Qy%9P!kPt zY@OuDe67ku*263E6mq(R5v+w(q)3~Df4HNd zESnIVJo!QoKiOB-w6TN2|~ zv8(Vb5L>H2CnU7SHoP250!$Cb_W?ud<1yQ%&Oj*^?A5N^XUgKepsCR?`tfKcd@L!S=4O8G&P)Fw6f$2X3Akr*|fH9}J8*czp ziDN|hQ?O1nu^k&|hYCt73b&mPJ~Z{quo{K&1S<2+SzDE?Bh;5YNkJKbz*>V7wW zfcY2^xng1^Ei!opV=o<#Q4L(RPO3iBz&PTYu^adVwspjE{6v0xKAm9q5=&=9OgVUJ zlX>W3hru4TiB6a0FB{=zBMcW8;q1+j4$+uH(-xJ+v1pzeO2QL#Il9kx&X?Sl#PF@SKfiXiyF3THG&*FR|{EZkKiXFtVwnTL+8 zqvb}so9cR_j_A*)b4Wf!5kGO}Z8^|UFV6gBada%_UsZG|Rx58MV*^#JU~AgcX735S zM{%%XycrT$z{YxPEN%B-W8htBj2tKTq;<5jRB6=&Bp${QrdsR@3(u^Nc*PB;vcajj zSBG0~L`x?|CdG^+L3^oY#*O-cHHj56S^JmF$4FdlohvB=#_n!0ss- zE)4gwf46 zEE6?I5OzbO!qk_~^aH0lTI5buoGlO(ajw&vXifLP)Fij9sW`w3E&@5M$M>5#IYah(D!bpaf<>_-nAee6MmE%s*D)TFwx zzY)l&?k)}NQ^fX7kL>K%XP$rW1u~If0Se28W-k|KDs@di{N<~Ih~kM;s&bw5ntkol z^Lgb~$?49nxTzRC4IC*|1p*rBourae`mcIp4;R|0F1pRY|dA7lM6C2ASWd6QU=NG zhWF93HCMAA?(Z2faSnVjvC}Vs0kNZk!i)h0y?}Jq*;^Z#7zUV7QpF^bu((&XGNj7P zqZ*o`B%e#B71=nvE4Wa0P`MpX!IxlDyR*Z>gif zHId&W4Kvd+1{00Up&|3kDAUh+%*t9xjB2NemDE4y2*|Lm8U|Osu31!XgW6yf3;lJH6^Kn0hoOjD51H1xBw!vxws}S;e<#MHHi+Z6~JH8X(TuejU2X* zDC$z@xfn#8v})CnFfT!ZXgD`VnACvxS9o@igA-#9Q8&dEgGG7(|utse_&9?PLlv4FcZZ<1&go7VzEErEv zUms?gztnp;J6#0JU<-1`40fBN*ko+|%{@}ZE*`{NrJy6aP7C*W6A!dZTHSd)vMs>5M}<)f zmGAi8s49A2*`ub>CFUSireIt(i~r4SHL5(ocZMKh^R{IEA*(1P(la@f5vl*ZRl-1zr!*g4`8!b%GmK5e%V9pR`KjA1mEG-E~4Echy7FF=LnBHBibKH}8Xr%O$Vk6`iE z7!p#mf3U8&^laKp$N+{EZ!mN4&hd(g73$&=!I<7KdF#>ESIv+(V18<}tfXP0D`C_0mO=;4%!BO*R>+zG4~n*!3-VJ#BKb>`?}3 z)`@kv6EkWyPdls?fvE})31+&ye-EMBF&QuPnfbznJ^5}NOW9Q3l=XLJb`fic^<`VO z9ictS`B0W{rMrk&ACEqc;vIiVzCw5!A0nz z1gIEQYL#f_5hMaXly)uX009SvpSbo|dix9z;x)mY(+dYP`~d+qtg$A5kSWFfb)kBt`{VUVuppe{3gbL_FyPgIvRI!?ntWg3|%_ou5okV1*TI2pv(~ z&BK6{nP;D`u~{CVvXfL@b_%#f-+R z9QI{f38_q`c~##rK2yxoO0VJ?mhc?_NtUqQve4NMs{%CbJ4T9QONfHlvCsotozQSo!8a>uVt?%BBwsUfKThAnM1py?KNzS-@*eq6X>|2th zsijr;0~)?c`zE)SL6Bzc(4BTF>wKC;S&|56iP1!Pe@*2ObTdPELtrGYx-4DvHIz8; z!OK#S+??#?wu2w?BAia+LD8nk7cK5c(SIgU3sD1{5if=hZi=j(vY*OM&H{F}sokNU zJl~P`V{K>5c5RowTXF^3PHh5m|a#>C;LeRxhE9s*UQx0kq*`Q%5a# z6(SCF#)4}W42-rF>Szjmx&f6`FS%ih(-JOUQ#$`#+kBY-Dv_Nq-1|KB^l}ivHJ&Ej zwr=M{Y#u_IZemXpq;Sv*#nM%3{4LkfxY$Yb7t*!;Py%8#xy_FLKvIXIzHrHWP#iY5 z4qg5Ohzx4!<(7@v*Yzt`YNbsEX%-T~;@BA z$!l{y%ncGl7`MZCp*Tlj6?>(?zKV%)V*Qh~eRoRoH)*tu*>9i6geo>5m{o8gfv~Bm zU=7pYt_}vfcEf$%VCQVMRwz2ia0}nQ0B3HeuA=eVlxVuB$MN$OaWpzHq+Pu-C79C* zNnE*+O1w!QER;>UX*|UxvuR|`MH446eu@Q%TokF8M;^bTAA`;(e3CGuOFbFFF{9Vn zwA2EX)aV%ZVgT4Ofg`tR2HcBbdl8olOQW2&1>rtmOKGHDfqy}m?Yd9y z_P)DN-wsPxX}d}$wNBQlBUK=qsIXvTAA=LhuqJ^<%MBdCqn^xCxvONV2zz)zW{%Z_ z4eR}TFiIngB&WD&^ud}&eGP!pP=)Y|s!h$74b|N*CC9c3aIsOy+b4-t+KGm5)*A*D zB9T@q)mkT2MjGNX{JN^lob zD-41!Td(kDT{hSC=3YL4@~5g;=9m-J!XpOdS{xw;T;EZs zOi`@(TFzifovx$;KX1kX4t;5GHl6AcwORj2Mv$fk^1#DfObJQ9YdwVE8u!oU?53QK zX%(wMhQx)8x|UM+YTZYZ0Njqo6hHr2$&nLgRCJv}hCOEf)5Gac%nTUBr{#${7s zNyuwKWHxWDtvRH|jlnb&6xgO5Y32DtfJEyqg`!>9aZ?aS z#*Y#*1l|T1?Q@=>XXOBpx3d(aZsjO7t6Ow7ZPjkrODHV0LD25`I$MXDmTxZ0>`FLm z33Lm~(vlFlqv^3&T(InLY>4c>31GR6eos~n<%rrhJL@!w3j>pd^@d(nBcwQ=%(ESb zj4(AyS1_|NSaa@ooEIkX#!}AikC+@CJAUf7uDs?9=1InKws$}sw&QU_B>?k_n#W7Hvzs7oB#t;D_S(|hqMlLzB z$uk^9r`w~$y))`ch%r%3-wwDWTD3In2ac{6n}FBHQ?>mm&&O!JdOkrOK-g?2kR623 zWaGzqR5sE+f+!%jXN!QJF(&2Js@_89&UaXdAER=rZOa*&2YACXB5YXP#HuE3on4Vx36MDBiBM1 z3?x{o1C!wz37?qpbblX-WjuVjXuW|67kZ-UbJZ>(8HYn?q9IFx zsmfTk0XmL_x7_g4_<5R;epF_|^jxKlCi3t+$B_omIg&^ttlz59vS16o^;%n>)rz{~ z`48)JhA}{y=u8Ueva*^o2_E9E(xCKat7ySZ2xha5;%6twzgZM7%DcY#TfB4fUZWy2)E^<+^lp|;2rTddR;9xM4b0%feneHR=$kQdZQC(C8Yb}c1v=qcvVSgjzMKtIbKgoU3b(AR*N>S;NI>gC+;W~!cN$&LNAEK;wRNH8oJuxDgK z5*j0iG9NR^tn!R32Ad!Bns%?-7ZEca`ADR^F<2=ivmAs2kknULz@(#)`4WHDhr zcg}im_nt|`vrT+KT{^>51BaJTYR6#+_v6|E1!*2lM$VB%t%#dIl4K$A3vIY5L{e|J z8hu5?Oin4yT>3Xieax@}i|Z4>Ji*VFblXuXd4migTAEp zoL@WK0kZ1E`O715j!V$UjUQ+5R$UtmaguSpu z>sE4$TH3)9M*(-4h=+Q`Ft9b5%`13Q$$W+-zG?-2@d+;|F& z<^lhmjBrB^%>$=6j)l2u|Ll;PP@@aEwh*if0j1FU*r|UQAY|ZiB^B>jhP<}_(!1ioq00T{p%H9QS%8$_XP25b= zvZdr5YQ*PRGzelypp-&q(C3`<;<1Kd1>GWGs3@qUERWJu%ubOGq-@V}BZ#KqXFR*- zNcuG%vV~NYdlz$q$s|!K$!Wo2-D<~>4qXUC(4W;Gc=Iu}f|g|ph7BC_Y#ok{cE_XM z;_T!G|Jk{Q*!~0!yjf&ZLkj+S$g^-I0m)_wlL&*@K1e%~eyNomIeL@z?XG(|8 zQn~+>{cG#)!X^hSJY$q4`i=xEYOh7})`cFy*|I@L`mNbMi-T@kJYz`pAW&^cmO!Oo zvZ{YDC@J5%cv+~uk4sqU&vD3!e7$mROQpxB0`~X+#VU=(@mDcIHxq_nD*Ttwx zY8+7zoE*_6rP_4wHxLqvysXDGaaVTuCZ%<>@x8K*Vx9mbhU~pICnol8Fy%$Z{`iq; zk-g1VHlJkeNK1J+a4;`+b#S#=O8AtQ(0NbXp@5yug8O+VJ<70VewL<{d2r2o$xLUvkQ!IfDl?(Pq0hG?&WAH=Jzhr>2i|(+NENv3o-0k^94C z5(A=ENwbvg5-5b2GLw>;D~lZJA&O<$D-r|NH}$w++f}qw1Xu0S$-d z^9k~@UmXnc{b%f1f^GvH9Grk^a!cja^-G{q=-%l`hR}nP0hGKcoQuH5de=&p4M^d_ z!P{Iruybv2wYMRMQPsxL3ahoX1hm@^J`Q)Y=K1CDUr1E403Ybs2;zm7r71%v&p3Y> zzvUs;1-)zTD9kA}GZ11XxVUidIu|GLQZrJzHy#H; zRVBy;J+-H7tl(37u@QCvW);WFc&YjfV@n?M6)SY)w6nq&LtfHYs6<@13O5(6eya{( zxYA`uD5lxCNlCrZfy)^$0(UW*!O)cRNI`q=#xTRwkSQT5@gX51sg6Hm4rg3ViM@Jq z4b6Cx#s+_n!?PqnQNJ%GpS*GBlA2sXB;&TiA}5`U2X}zd_qjhTU1?4Fg;?yN!$-J* z_>|&CpyZqT*l$cL2;zr^58HHRs8Jd25U~D09i=ixf>RqeZZx7~0^3Yze7!ZB2?F9t zvOTLf^&lHgDMjq0-|>E1&dhHeO!sgVofnUs7dVMgG&G1nv}*XwrAcISu}%)2se^t@ zB@9ptkg!+5HLCK3Pynq)-ZYnXL_4H{J8KUoC}4)Z7+OoO+)=BET!quj#13?p2Qpey z6BmY?Xil|bRBeUi46UbeYmroc%XHX~>`f??@@j^RbU9E1V0tU4Il>LSQ(Qc*jQ8aH zbU&Dq3D3>m^V5+W&XT1{0qP7;Ee}PVReJx?kJ82J78rt{`oZMn=tn=wESt?`y74So ze9BK={H}tv3FbarY(iGSn0rvDw#efY^W{&Rh^Hy8}~ z?HK+hw|)~3@vlF{S7hl)CaT*H9zF{4*mAd^A9hA7k9wuz(A)U%lgpe2s!Ma6TubKH zOc7BwgGe6OCF(RS#o>LM?U!mw!Zw-HSWL%A`&{g1MFFz1G#lKn z(~n9x3 z%%f8R>(*kfx5vLiZY~0!mvfM5&I_a`VKGSSLy?m)XSK-eeMvvfQt~+Wn%bW?i{^Ki z2O#=`5iS9`0>%T4G~rVY70wv4GDAMhyQ4X7a7Rj6X2QUt$L3;5VuXmGpIa#Jm8?cz z>U}tSPFGk^D5hnC136fNj#UE84v3;;YSzK&@d&aY+)zsPG|!SGE&X#iH;HE^O~qYR zV4tHqi#YCZYsXoOd=@R+3o<% zyfZpm%#IG${`xT>DGocjiZJg{I=UOUwv&yI)U={Xr5jpk25@c%salIdKZ zZG>HB=LS!8UW7#P?9e~4VAZBpL(5Hs#Vv$Ki!|zp46Vk2J>);6e*>A(?hF~aj9oE$ z;&8MJj3)BC)cbPeWgichV-gQs1}stNGCd@wzA{9JG$AKrbHYQ7Ag%aQ=D`xbG!9q3 zK$H@(LtF1+w|<{bR;y!+N!}{1d{H0tQdSEf6{GJIj$${3+A;k2=JwsL=Gu|TnZH3X z#*Don7yQ7$_do%RxZTJ;c_yW7s)VH?i%IbM11T%vyD;AhR`cd$u*a5O0wH&`nTXDs zh^pZRpKb9U9*2t3w`G5Wz+{F_7JKu}H)-13;}QCB^5ZiEhvE`l>4Kg@<`;Bx7hZ`F zco4YvSa~Cp7PcAl0e@sQA4&G=9g+Ys^5rpP>vfV^=ZD=*fl-9%@=k%*S!fh z)mtA;dBY|sTD_Lk5lTj?8n~$Yr>F&i3afs!z!~%|q!bU6scd}~M~OcPThP;a46qZ? zm1YaL6JbATd!ccJ z#?ow$Azrnr+hptlk8oO=JIV8V(LQp`4)|?!%iEQM<`VdBtc0moMjj($ONvXA$j5q- z1+n5+w8qKV?PsT}#WxwX_M{x^WOGzCT2k zpcU2mJ@1s}&CX3S0Xy$+_EJu0e0>h%!rtKw4Db*hXAA71X}*uH0X71|3*8vO%GO~N z@_m|nC0=tUW2xLP3mje7%CTaq$pWnX)Pe<$uC<2`v)rZLo!RkQP-$hbbPmlcA5GZ2 z6-~1mkb!H?0i1aBm$30YKcwR3oltxuwMlDe0V6>_N7r|rK4yH_v-Y-BfNW6qMt>Vf z6XA+vLOe+Xf2QLoO6v6P^oi&`HK3zwKG$-8!~6_OfD2AyKa}EyB~jO>`YdP&7ydF) z#&`zrVD@*!D|37>00ww2>ore*mcBREWxx3^(weB5QVuK4b2`sJ1kY=?Y0FqF1 z2p9ml-pta2o|zs@12faJ-O~giENn|!>$NM(in)rc$Wf$NN7lo7%@{} zJ93mbk&_%b&QWA5kK^RnN3o9MeBXUk-TME(dwM`}y^7dpm-y%Zt8U%8b?e?+w{G29 zbW)30B&@q^RqNMJeiv0JO03B4RQt@qqHBM zIO@kvhbJ3W*i$+FLXd;|N*1EQnK?YM0>9}=iR0xFts&frjm@GU&S4>ALmQ=o`RpeU zg$$G`1(9)da-b`u)-?PtGx|{gC z5I?U>c46N1E6H4~{PpgiLHW1E@`z&Gw6EXT{VsfcOZ+-mw{PFw{Q-P?PyA+S=GHcO z|FISO!S0V&i&3UX*eUZBS+T#?{XB|25TT`FR^)GW{~Hu}u(8P4%KXFbZ=p;Gg+D=)F};^5AR1r7t_Q^dL(XL?S+^ zq!oPkp`}My@cmOk!sTFPPaIlWV%aaBRo3XSbm7p_pJd?=OfO6ign|Bd4=qht`j5;m z?Z9syTKcmr{;q0q({u*)n+`4gFpJejPK#NoA33!2pRrVpR$40e|7Q;^{XG_ZU$s>P zM0wDe!ThfdE&b!hmQ{OLsef{4>GxTxHlA7vEqjOm^`WJ=-HVd74x2VIfN#Hd=`j|o z5xqPdW2L|9-lYpHT{K@NJFt>};@+j}ELoc+vPETuw(ec}ZWgN15w^EP26<=x;=N11 z%7V3F(I5*0_iOhq{ojq?U|wi8Fe~^k?p-=^AHWr~3HxYP>?`hDny^@{4-)%hg>K%r z^cfZ^NTTAvPe@wH@4Rp6e`3j^w;F3?ykG@?>%OJ8en}N%QPAmf|CcQNQI@RDMJ>H9 z5oreXE5BsvM_Klbffrx8{=eOO&pq9T^~+nts!I+ZtM?OMvh=Rked|jT2>a{*`O2Yt zuK(P9_uO;+H&^}X(7HeU$c8_C^QJ$2V9THWyB&Y}{H{MeH1?-Y?fKKj3;y(rFZ$Cz z`;fiIHpL)rk{^QU2 z(@%YmKVAM_e|q14;7_0V0e|}J5Bk%|zv55t`%!=T=^yu}Pyd8HO|JhQNVx~en4)TE zOwze1H`*bzW_7r^`cnH({?Oa*xyO%PpMC7nM-Ow=e5CdGg{L0BG}$?PSdRRGAt#9N zv7^XX^6U-ZvcsB1Y#ZE<)VoIC5FJ7m7{@=wk$@K0`lB8BEKm=(AMf4jj|bT4WKHcMa>(szrfLQfFTDf}4v? zrO`1jM`{Zy2_C6D?$8ABGCVB30)vk4;6z;`HJl1<05CJw9UmoG?wanjVK0t`2&Lzc zEA5jbQvM|M;3N~Ou{3{I#5s!hSo3n_hOVmbh}dbZQGa8=*o_4a+k(6k0}rO`il06_ zsbxP3z9Is*q!hi!q=6g{5N9p?w0RNY{U;hvBCc1K*(9Smne5<_u@y`4cYY%mRI?4o zd02H#QdFWn-y`4ZV>uM=6_7cC^*y`{OJe@7=F|3+_9S^j+maD`8@7cKkgA~j&R%kGK{SmS!iY;hkWLPr)*xGo&N zE*Qq0>tpzYK$CENuGNiPss}ivxkp+Hv99}H>LXj2&UuJ6bX5-LV|xvUhG!4B92MK^ zZSOjXjqp0OA)IzUV%OTOk-h?%G~@5C2>+<^JL?-cIjd%oQBsVzkK&(|Z8?Q2_SWY$)(F~(UWX=(} zB7}OsF()L^C8(L2hy)OH7DeJA&|+^htkikGP|r_biDN855cz&aJZ6{WkPE}4+DNZ2Upul3;a6uL5bi%+ivhkhD5C~hDNP9~n^Zl}jv zvkfJpHa98bwz<2CkwQ}=m{FrXBg5cI^D)~RUb}{rUnb$Gq@Q~H zvi+F>(dYv7S%uq}gUV7FGwltc6?VmxfvXO1#KS*WKUsc^t~1HIxPmpzXpe#c4Hr%$ z`lSeHg%pKbC;{d22=8hsT|}e;idX9J1>tY+X6E5Uj7>_Vm_A zMUyg!d;Pdo#X8D=XsBewl2%5Lc>iFBm(C!Rg` z>^Ve_UwZbLXU;$KBx1w0^LTUax%1~fcC2;f+@+=S&z!!(Qi$NV`1Cn>y!`B$Gv_W} zE`|;?&&RF2{RJzDv?K^siS#P!vN-0~LT+x(3JIru$~U;I6&sAiWkIXc)F%o4YUq^_ ztlp^fLdiPiqf)m1v7pB+bPFod-i%4X3MjLeD|5m&#}9lKP>)Zcmfzf9dDNx$?oZRHwF#&K3Uv z2g_f4Jsm8th(3wfrQl&X+wbq5IsM$Z(#4{-maY`N1lOrH{7qgEFLr5yK=fpo`&+3@ z--lTB^7A+_Ds+6g9*m1zfVYl+q_yCa5Q1Zh=YsygUdzjgYEhLAIeGME{46Q>qvDjN4&P9VWliz2K+R;e^7QgGQk=wf*J+yX7I9! zMQPSNj{Nd+Y>550Lad)ttcaJp8}gbJ!4dqoY(+qnMFsep9dXxoM2(U!*OJh^9_q=s z7m{Vq6r8oIOoOWHP z>z>p?I9$Nl6b=~hPv~2E56bfe{BV8;ZUF=XmTFTvM7K*o^PWw~;I@u>8} zG=PY!CMrSrg|gw3eL}C|HjSK@p0y!^t?Zrl!f4?rH&8c9_E&Fd;~vk3ZuP|EbYFCv zIE??j;2{t7T^uq3f61H00N_ym3RtIc*T*`_O`F7sM_T6)&2npRlZFvpgS5Ex;6e7v zg~J#)PKL|d2H?Y$jUArH*u@r_KJ{PhuVKA8)BvaL_#Jvwi|YsmN>VJAw-Q=QV;kF9$cms5bM5lr*iLik<;E5K4Cgd-4x78 zH5irc%zF}iO#N^FV=8;1{6wWkmX{-wA1C*!iEOM*0KjO**W1$(t zP}t0a)a8=#asl7q&AdnZABUT_Do3BWqbK25i!GMWs~1w)lD({)S6N=*3rq}l#DBJ> zqoKg$*j&2&)L5^n!Z=PnPEo1~#+w3o%+6BZ+$;7p$D$piisQ=pmk-i1bR+?Xl1F*$ zY0H@l9HA|FiEjDQJ6-pSH@Uj;PIp|(%8g$0><5Qn+8E{Zhtf)&u0o)@Kzzy`M$YhR@!;^c;@ukD^ksdt7_RkwGy`wvm#a4un9@AvY(c)fq}Z^PI9 zv-EoZ=C9h*VDp$Pa!y5veayAv24r<{F$}Kc(S`>cOmpNpFHP3Ld-15Q*TXR5IGXlc% zh?@M+*&Xh-W6GwmfVdm)w3u&q-Kq5}0bFZKFsUh2s1cy4mf{~_{HL!Y{% zda?Crsr5*yBltW(dVgpF<|Zg66u(1YG1NdaDb*7<_S@s9C04`1#huvPH$sIqZ>PJ1pBwvSFvzlEwqn z{K)Ja?G|W)+P7ED#|$J@aMuTEru&)5`mY(eR2^=&(&e3;%C&9+8&!u;L^KZV4^y0V z6cePf;N7~XIYzAywU#*w&+j*WawO_CUpAN^*nd-e*|avJFZoGtDQv@pF*kQzJ-Rz?l6JAu3{z+mdrqpeU^L}Qy_Z*>s zY!VT7s&%P1U>G@|%xY0%{EtIORZ{jw0DCuwk|GtS(TQc=bq^@fLFSoas>rkxO>*Lx zInfialuf*QDmJjh+=VH@@az`mz`txq4=q%?Vf^^E?mNKA_tz+9pC9bL$Jq6QzX>M& z0kZ3_`_tt53wT7nq<56;dJS8GyWrF}KiquA;7NX;i%SI(o*qHb0 z^i{%2Mxo&pLP(~hVN63@X7ej}a(?U=#Z5O0tjrIjfhf|-?|T4I&&k)aDhYksp{+bc#G0Fra8mTu8dFZc*?Ti06dKa$CwtVc zYt3nc>{1_br&Q14r&?!V93zr)?Aduk&>UnC_!|s3!1dXQV^x}|{h*Pp;JkQx<}$OP zB=~f1XyGFNyYs!y6!t#*aFBiKf;)5yIH5?bmufwwYi)I#0hxu4wIs_>xN4FZdFdJ$ z>laXv4C4ZTR|X_JPD9kE6z*2N=wGB7L*AfekPcL-W_DQtoskC#I&t$t2L+x|kCF(2 zz0B5SG@v<_^uI-0z$_(rm->pQZ4dzt1;FwZCZsKqRDZm0BneF1Z^{&4r?BA28LikM z`#}A^hd-f)t!pBgv_(ntQ?DwoXI9KgC1oHJu$Gq$XRuqIX;wC&aIrn2N~I-)@46jOZ#%@+&zD`K97o6x=f0O1=D{shW$FvMqZXHx87V&mbULQN)BWYY#3$ zOFz#t{8@H8%lXMg9y}m>>Pbes{pF**~$DBBbT%*bzNxV;bQZ{v?^h;a<=@f$Q-e4sVYCN-NV;_;NAKY_>r? zH;$u%4b@$mHUJ>pP!dwL5hO0O#d=b2ZNODI*ESK^W%goYc}1b|mWOuH9GuErp>%Y% z`d_;5kw;zKm969_LTWY|V zUs(|=`c!K{77jQXihL&SRN;E8Om};lx2$t+K_8aK$JFBNaE;?bZWc_^rO?oo336-D zhXF#(%>{}MMLj$Z(FXIRD!MG!qf5eI7&PU&E#Y)Yl6z%QK2M6{aRyug>phLVCbnq5 zb`}i1oIwez#fvFP4*nSq8Zk4QK;`*kLkDS2vCI>*4KKxc45h&(Y z>V3jZVYKz{%y;JE$FRfo=f0`-!tsU9_2B@w+6odLQd1wO!MZTh0WxFLuU%bZCv4Bl zCJ|20V(x+E*g7T*gr7WC(&Cxo!gqKWuWb$|ntz+b%v1bsMxV{jG3-ZLGJ(dpe@iBw zXw#k~bS2WT?lB!SeXV#3&8RpCS83L5JVgMymMP7;*qjZ65e5H}`G>dZpy$WQxXm&osEN-dunbv!e%_M3Kz8mS46 zNa-ZruQ4CP$U{yYQik;#8OI1im3R&J0I2d7Wp90gs5v_}|>}IhKBH2+OPn}3^QbALV44{Md1{(w1D2yc% zr)$p^iso4l5@fzS?C1j*1A<;b7>bjuLQpJ=lX@qn)c1k_6!FFkoR0Q>JPj(<@C4cC zXkx$NY;Zj-Crj76l2^J%D-2#QVGLl)xw(g${vro9N4F9+<{R*Y&6F{Fm51s89ou)j z9F~uXFHcezpI`P=89qT%6)^Pl;R(`W`iv}wN#@6^JrZnD`&OUr`%RnBrGzF4%xUgK z5xtzgMhRq60>{vqt#j&1GY~!`F)?kCL?#V!$ehabk)`hRA@Tj^<$QTJ(T_;Fvd~5I zwZRL0)$Rq!Frf}CBU88LoiZ7%3rhsBPd=X z4`sYZQ)U_}muC;*Eb!c)Gr-*JDSHSJx^Qi4xZ2x7Dhm`ezQE)Iw_|Cio~cwPiIdqN zt72;kT#N7^1I0-KH?-VWCDct#Q%1;}(v8B`I*#I9NyXuO|WRJ;?7(&#pTofJ8lAl(hLJH+;NQ6`9E7ga#4}_sa=&Nd6h)cI620h zy-t`->e!~sIn6M5?L9S}ppb|`Fo}MC!YZSeojqPqs(V5Cqq5ro^71YvkhtE`5r%44 z17S8!8(VB1qpQiV*L#eG2Rc<=O1XD!2l9dZJIg;5~ z$ua~jO~R`rA`4u~o1N2;>q<_(HEgpohy$8p4cEcYrEPO2AVFo?P}a+ZwZ7)BiwD5a84Chdi(&qkyAw;+v!sPrBuW2stbSwC{GfFL0O+cD0C>= z7YF0T6L}hGElPB07!T9yq^8V%5nS|~CF~WKARzG;k7*{zc(IJEa9|gSM16~R8dGqO zMO1%v_Ztz1n!ky2-@biw_gnDou-2nP)82nu_j~dF%k;fpZ`}R9?vLQ@JM?Yg;j(H! z+WlD+c&ip5FSIw|8Zzw%CE)LZ`}f`0$beF*yf8^7gGzxa>+>8XF>Prv`a_|wJT_NVXs zU;XLt{*FCOuHOPc1Pnh=1`NyX8vPMMhTrlv%^|~2K}v7+NBag1i=&-I;rjrgU}51> zHtr^YWk-WPwumj+Y>Fet<(#T7g$wji#=Hm)zQ({`u?;xn9YSr+h;Ey1v}Z?}Dv}kr z1LkqYRZzG$w!EPA(qzZFdkPyT(ixhn+AysTjm|Aoo9pGQw8@GnVyqde$<8@zXCyn9 zfaNqiY94v;@fq23uLK86|120eu768Fg1vOzfeFhsz?$bS6un&38Wj_)0!VLx#f@?B zKI`SQoE~z6+^DfA@LLh6sluhnjzG?V`gr35BcjkP!P+3n*OcCvgC}8lk|WZb;nEgZ zY_d1RY7VYOWWMA=61J=^ln``+s0Pp<87?6V1ths@j5FT|Bup_+TCTmjHNgqqqu_OX zw1ox2oL_*Wsgkq*u4V!nuJSFl-svrD;qAxrwVKkG*)iB_SO*C8r7WAe0xC-9ND~G? z(xhSX#}VmA<7}0?W-{&DcAKnGRC%B>9yf-P*gj9&&yAx^s7Do9oH;2T0j4PYeV7+WUC zT4B27#ZonHT53t60Q3_9=CVB#W2J3iBVd`E(?OD8TC1tI;*yxzVaO2;g(slgUtkK; zPVTB!xFYO0VDxQNf{Vcgi2w13cr0Pa_y`0Lu0fh&0MiMLcb9xBYk&Zwf3rC&-kUX; zKLR1~o4f}9$Ud4vO5bRPV(Whlu0dRd%-fBQPJ@u0LLeBUEXwYT{?R5rCP+M_ft|!c z#knR7eQH#|C1MF*8L?`d#m)$MI%h6C^W3>hxK8hKUa7%O-+@Hg!4(~h+{kg8+GQ|V zWQE9MfP4E65hZbDOA6r@=uC;Daz=!q?38LtfmB~U_IcJTqId}jRP<_Go%9raO5w7x zHOuZ@zSWYt87RX4Bz^5f{=!(UgiQ2>3$6CPey6T%E|r|+`hkOc8Jt3HubLkS zrqdm2(Gb$t;1-(C$yLJ+LSkm7`?KlP9vX)y3|-d=M@%EuLb0_DzPA@bE0|uAh8kDa zjoRV8(##_)+#y*jAbv@q*F{*~c_zk|)gdM%^NYs~PO{u^CdypTLFcgtS~oATs!=j* zHSr58@P+%6YORFfkYj#TxCzqf@tBvr5B1Dqdd&vT>n-Uu*nUQ#$DYOTp!E1g^%ft z4PhwYjnj#`Jz=aF?eA)ruq?dM@8ke07$TF=j$ShmTD8Tlb5AMpc7aOR;LfTLjZN9z z4xE%=QGkgegaH8GZoy{hfN31~ed4Z4Jc^-*T#G7KJl$+v#3$6SOr+3MikhqP8M!z? z##xp=qUWAq?$z?rh{zgfhoM|C8GpWN!>}G3VgjJ8VT6?+gaRmitq=`bZv)mM$E;IMH6NI&dnaQ6*dG+W?{XSsGzmPy+(XG z16)jin(d>UN8Thd{S(pUg$^$-K*HrLaJ)YMrBylDnOGQK{6Z>9hzi>{$`DKkUG@OZ zM7ZP9N8rD;yV+aqn{{7cO_&^+8>dpv35%$9%5%KLcjt89bF1*>hx~%s4xfe6|M!YCl*QXK892sR*5Yu2f5s&q~ z7;_~Fy}Fh zb~U0UK>%?#blt+5brWuOU}~Trg{zx01QjSYpFx?huOm@V@*;pAv)wAY<{6qFl2m*a z>ojc+8Jg5)Y~dK+T?_&48nD>$0?wlIXHTWb?MBFy05A z$JJ@YSwb1%ZgQVc`|&Nin+AZDu8bzw`2-+r_oeB89xO;!JsCbkuH7!!aYaqFtkIq=&T3{oY_$~6=rhebSH#eUL|9$9G6!=6??40mbP*I zZ-*sk$~O8_%M}pG3-qtnhvzES1y^;3U*)=*q`C{)=Bz;zUPf@14VPvMxU-IuV^MOY z9*;_0YcE{(C>Jy>BUhY}VmCU`l^7=i7Zo*bESsx;hgXgFoMkt@^^S z-fCss6Q9;gvcdFu_Gq)HG(BFT*dy=a0mN%7>1sn^0ISX#iLYo;hX&9!nnH+* zx1NHa5*$O6jCEN^f`2(Q7XC{z^M_+zuv|ror{?$`2x|jtzKsDWl_s?Qd0sZCTdMHO z(5OMQYTu$niG^sCgl#c}izXFZG6pccF_$!)lrr%K65g@%+mJ&rf%g!#c@3*6p7Vz2 z!(Q99N&*kU11i>!88l$Q`VeF-%kQ8^rARr0q<>yQ)i$g7FMd{*cfFo@PSrh2?qfzi z4eN=$5{C>K19K#8hPcVji_z#ZbAHQK#23_{OCvnn^#adjk>4*>BLUCH9DhMvB6wwI zjJdH5#ek{Er6q_lzxF2O;-=KpjV;a_*)>jRjVEiE-_-Uco5=p#3QTkA4T_FbLwRFe zeP{TH;3sE}>hu<7nP%ITY{&U!vph3j($Uxh<>sm2vzQ-CVF=D96wEN1bfvg+3`wah zLC_*zB=o&dZa@nlpi5t^)QXnGutUN^noJdfZ9egziLYWZfrr19IUmxxwRa6s0qLuY zv}u%WeQ?p{xQ$XtY8jRN?fjx^L9ZEZq-2(22{!>Q--Nb7fBLdO87`asVYmw@*+Q^H zTX|T*oohMf0ArQ-ROC)R2w_R5E+I4_lOnFnL=aIC0&^AfS5rsCvM%nRrAeBl(92%0 zUO~H@nC{mC4tf2UJB^*s)T7*MoCvhUiivpSx6{atu(S8bc!KZ_B(_Ej2^PdRH+#BM z%j(`5h=M7T8)WUX{f!=CnB9O6o!w95CJdtpDllVj*=CUpr0O~NB9yT(=&7uSjCROu z;v2Xav+SZ$K~#5=X5J%_QN<-5YiFsHS&PLGLI<}AtPr7*=t5DF*tiz|<0Fh3?I6ys z-$VSdxVq84oQ=Q6uynO2%JEg+E)1e#jBKg`t@OGsz!d*9<%lbP0$Za&I_v$_$+h;z zLzmFih1(aw<4K|)74PMp1?2q5A?b*G+CvVG!8hRe{X>PwkqH{{K_A1^m@4xHo3uA7 zju)xcAN#@}Ln*b%jG8cuvCZ6mG-{;++b0?KAlVMYcjR7UjE{x@!H>?{Cn4S`b0iZ4 zremV@k=7kTEah$ z?jEmmXP9LN2edX2+KcOck=w8&9SbUV;J>OmJG7l;Mzl*dsMp-%4e;|cQRlQoL1N&) z+3a@{Hn*wajR^x4)uY#H@A0I;Z44rA00l~jpT}L`Cy(BFsJW2^&=sSCdnbYe)=?-s zY1^6I{;ky^&V!vN1xJ(JaCY149YF*EY_nR)#9bJp;|fkPj$jQztFpJYC)bT*v<-AQ z{Rv(c@kLh*t#h7iyCJm=D{3+FnMf>QE3TNs?lNvy#e`QMDNQkWER?FLJ(ZBIUrN4< z!-`XV42IO)IT#Jwdb-mDywkb}83=ERxL9OnK@5!x=Mg&qq9Pszn*i|Y=FTM4SfrRU z$8sr7pIl|SucEmNg1*qJ<4Hr1`p3zAhlsLq{_4_JkNQCUaAMV0xzggOl;{as5a;qP ztki4?$Lhz-6B5jfrkxy)HHE&ISf!C&v#8cKahS#ONyp92^KfBm%i^l!&OM#zU|$Gw zCSReRRp$frfvv!`0(D>N*cgIQ%2JG~4bi%QXYs)wE84JWJ=G~ZpA}~~G?IvM12_vZ z#T?5UG}j2a~&SgX$!frop!yk<=JPj(m_U_q_JW-q92^Q;JI&*J2e;GPwlfx7jvS2E>Z3ujH8jr)g|~&N$K`n_C)G za#a>OSEVnChQ0xBQQ)IJ9EYUJ5OW%At}!$IF)Ul>lkNbhscfn{%3`81sJzT)gJ|3h zm~N_quA+8luzoePy5C|skR{QaV}40ackzk8*=u2xrLEk&O{g8Z+MD5^l)>}rSEd+i^7dzVBB%o}bJ25yCHc89DJJn+N14dXp zkuqxq`M{&I$z?M#L>u=X*I>vJHNBGHQ~uL5<~~%7!T551jMH% z^bHv7CnRd4P)w78hd8*IUUTq{&gslM0>D*U&=4SaNrG~&vKrGiXF$zNNRG~PdaP%r z-*G9O7^)wfehLS8Ioa(<5l?H>1G??V@Yi=QS4wmChaheZ|F+W4cCVpyIIbiKYD!NL zjVC_?J?MTr%6~B6Lg<*2m0)56|C#Pz-mkdCkXrE{=>Am{e^&+i2>OVntk93i;qDJq z3MCYj=2rISyT1m2Zx3ZH*vr2EJvpuYK=_`cZ>-4gEWM5Ar|%DCRQl-mrMDkiT3~?( zYXxNg&r1E#LrYJxRBS4H{H@UWLrZ_2h2C8U6??Vx7Y;4`O_q!OGRwmteg4qWZ&sVj zO27*J4~Le1n}s6l85kSxrQbQU^lwCN^ux&9vlRUA%#S33PXqO3?Mj&MAE`N8Jn=@&eW&^!m!%`Yi-n{An- zHXxeL)9ZrxhjhMtW3nTmpn6!9OH!T`q7GOaZtwQ=+>j$c55ke^iSmS=9G7Hp?zF}! z5A}TX-mP6W;|IHUZXJ`5)OfmF&X`$oo^5u=t<_1d=Dn+`ll(j$V$iU@Iehq|8L;|m zbN58-yG%c$ama8$>)rquiY&| zJwKKq$c5%q+@YVLy7z70>Y-CwonpL#Kdm5n-AqSeS87a_$vqduW{#Kn=Y(GbkGV@b z{iHR3S&+txOOSSv3k5+*gFQ=6zK<9145Qs>ugUnr)1ESvk2&c?;4D;3&xYmTRj+k59r}4li2o2{WFHbR55N&U z?=ps!0>%>xK>nx{$Rp{^t6?iu&IsEMH71#F?aO?KC5pue&dDzH^;%*R zs@KRY3EX~6n~0KX2){-es5unQ$(W^yGqy0|ni(@wa4}yQSsolGXD+TUE4MzM2bt{) zSMsAgEL6S(wK+@SmGVfEi%G|w3ut*42In0`D%}SYLbI5 z=to8Q@-|hmL=9PG%l?tmX(vjPdL1}Ni9bXLPnuo!6pkWD%mBvP09%roY#uU^MH%6p z*9{S!%|w5@#5`G?tmpxZ}njCD-c&)~{lRlO+kBCpB$VMQ^?bJI&ut0f}=7~B5889GbaB?w( z6$d95%~zovbU=7r;-YwD4r|Nl__=s0Y@mDl%2KuVi`VnCKNo98o7@q|LNc!k!aM99 zIYnFxmgruY9($TnT=XthoTc%hi7mg zg%X^8q1wVFSNC!yAsmi^NF3x>JvT;MN zFLnsv(~w;c(Q9JaT(F?(<+?vClORgaC%O3q;VsZK^G#vlxN}Mq`e7dfp%3xY^L{o+ z^L0%JY>nf^UqswT+bs@m$oje~*&eK9=0GND`da7gSXL&8?)AJY%lws<;7U@zeD{%V z7cTevb0J$z+vlb3^K{zh&uJND1y;H*qQKj70kvK2>o;`26JOt&zlu__kKfh(IedIi z{#fA*EB4pB|0RmOAr-Sdfd}|nwget|8(i+6;g-O$clgubo&NM&5BSqJyvv`q-tABA z_uA9s`djb6m+txpOLzSU5vHScNhbTBw3@y3m#oM<&Uyt0?Wik5gml6%syWylB36Ow zaP1-NLGjQiBl$!8=@AfFY#(nscQ&KXU9N{dU`ki>$HRkyjER?d8~0&*Wf`gAtJ_sP zLK%1c>npnpC1ShMe{rvma1=&U8@$U1k@O7#+!nir&_l_5lD@<8o{SYpIc!+_YNFFI z0^+r%S2~No&zwdYLqyt3XrdR;q$)$Vmc4vpyu*hN>jr_3g-Ru#*asRana8uY3AhuA z1r|fM)2!#}O5Ve)rsPw0!ji6FC`t}F$trgkXn4)uWOu92dsy=5FYCn*IY5HYS&tz% zAYgPJ;7<&;jha{mY~C;EV1sbFjF8(OaWO!;l$?a?hc=`D7E~6w-9p+p+|Nj0{oUaj za?6ykQi4*!9RJDK7G97Fx`K?Qg!gnOSo5G?h{{3Q9BoF@Ti06nR6%VkBLTA0A!*+2 z8mNpcN#KR1gTa0=4r3ro%hn7~2%xhMj2#GY2ZmzMKpBIM9z^{xl)>II7ykbzXV^TNhdef(-6f7CH=eT`AB={VmrSZw%yt6m1fH9wb+a#s<;op^Wg%8QtJ7;h{oDI;u6cR12F%k$Z!2{bFex>ypjxyMyfsnT9%=R_`h3`es zGpb6O*~UupMWW0TQ-~Q$W~^v6d5^fBJw2?H82cE47GVFp2;%rG4BlCsiG}_D0se$a+?u!@Q=#1K|W z`BCx&<>lgctfGU7W=PyA&8u#+t%g^yEGWYAGq3eg>%|ne0EsF0N650D;uE&QYH#g^EdIrj z&4XergN&q-xHTb?^Nflul0-!+z`jFVh-^{!fvCibc!9~=q~WtnDK)!*%qXQ6qJpR3 zq2?B1XJ^oSdYhFX^{ZH>hGgakt&PrRxt;`Klg1KVFA`H$i5WwJ^j}bk({$1lWpstf zS-=Ch2&oJKa^VcMgrj;`VRB^(s|U;Gj5*s6ZO_n1cD>Pf0%tz^0Edg5IFQ(85P<1> zp$N5sL^dJoqNac5a}J7^QQE%2RKnOh02_}bYMy5df$Pffh6T|lP|#~s^GWGsCTAyj z5s%&omG9u@d+rrc3Dfm0P0q+)Y%Pe+rb5Sz<*o)-1~_+lTSxiM%0e(O*@XWnA0)Z3 zzwmz*uK;#;Yk*|10JMA@x2k$E{}*VW2J#$Z;oct&)|yf+vn&cB0Et;i@ZUE6%EWb0 zQcS=}$&WahO4`NJnT`fNPb3z@xh)tuSREqT&eC-a@+m}?Z~%ycK2dZn2|^$&Z1G4d z5cRgzyOUFg*PUrIL4@cm8MiEkMGPfeROq_RY_>#Rcj)Rl7$<640O`tlhc|eJV$`a& zLaIqaDJs5NsjTcm$#vxAtQXA|Oeorb;eMi$jBS1jiUm&S!da21HJ|iUnx=(_5j6oJ zUpxiLqc*V?POA@f0EcjWyH~T;!D#{zxJQ=<8{;pCwQ`jq1{QEF45AspwfxL=MA?9j zdTfEiKBEP#FjXp-&@;Eh7KB}X)KQ6=91<|} zvT-33zL(1xp0;~AO9;$PyO$S-RVM53euvc!5DWBZL@azS))>f}AmS^3&yp33CYg|2 zjpW40mEvRENJxPY04SqdSfs8StdRVX2rrP#s<#6AS6L#{)Z5B$GO_}!Sjhn?C;@@B z4yP0%@utgOTp(zUNYv7($t-)(HF%CsksA0H1@xhF`PnmP&RxEo3%U$XQ&{abPJ-$p zu`WZWOZX~2x%)v{Gz(^QTHLIm;K9Z6Ip|i3Vs#)>Fw>;~ESM0$oXfHpK~AGFFMkg1 zsq;*R0F?}J2Eq==hLH)*O4R`3ABiI1gJvGG{y_+wmbC0d^<#9l|T& zE~6_N=RMcA2~1Cjmwo6HG!?i!9wBS^zRZ?ZPjw1b4(;z-IVq^R24^)~*dn5sNX=eD+ z?A+)(*tVh9P)-MfJ8%`>dh1qP;JsqX3AvhN{qLdk9PrW@=Rx4Q269PXw~3iC1h!m* zREB!uf{9Haj_w)nWb9xzw%LF*T?dqC%rc6;t45LhxO)XBQP*)*NmdeSGubKWteFxh zL1HB^q7}_=Lc>xcS*Z=dwQ4F@OMt^9cXVDlrd^xs}RKipZk=Q+~>1!Bt=)&~<%c|E)@pu{3kK7R$K80bJ@q3+RmHWOF&}q! zhr3t~2TmX*l?j`_nQ7GgG2@jXr$N&7Fn!~uxW~vASV4_r$PyA$(@`&oT#|ghZ&_E5 z`=0D>A-Ll0;j_8dUf-Yc&q?O;g%UFx_Fzl;<%TqB~yg_!)!^TMkY5WOnT2PC0WDW#v(+oH zb^7|&#&X1GRxC(Jns6*xW>=_e4;bZ9#)Rn2zx1f3sFZD7zP)%AQ}vTMgVf;)vk{<@#1%A3cly9Kc-i{O1_LWDa{eeG z>YMF?WIhEGNIFO5CYp+8SDG_e2ZaN-dDD;etAs&J0FRx;F8{m2=#Fa7BG z9H+bbENsWRj>>1DotNQ~uCBz>fSj2T#biUT*c8AjYkgs_1uTLQp0u;mSrYZI@O-#& z*_u(OqXJYe71>ViFa|@ICuXMF!g8dS5d;!nh%K+3z3kc8FWiQk1{(H}`f6m+2%OXf zpyp9}4WT%7mqp$XtWDJmzHN9+?mSyge}fb-&&B#r*pT%D1R1F`PwT}w-9vHCsbMa>k0GKhV~e%pArzc$#og%8pY)PxW{ zZ9>X=2kA%?MF=%;#*us?CY#de4p+1BV2*SCSXsZaEmty6{wu6fvmRQ>-!UqcME>a; zq(R`>a#(D^*MuM9R2IB1{_K&ZjY{4G{YW*MlS7h z0i|>)(a-@CkeWt%9+|+2NcPgXRmmDTl;We9R*;~3dVrGz9jxcm7!cN(?IM6DDc&^M zIV^KpLD&V^7PN0n8zEF1Dt!hIU!7q`60~@=MIKJE!a~bo!1TXsY*)G|Bx- z8uB7u@1JH(MmC$YJopL!wFnyK$YF2z+m8ZetEn2RCLYPHG>@Q@guVu0e{KGwGUm`H z2+0O zl8?5txeK-NM_LP%f*me;v&NG0LG3kF3!i7yo>8-@R#+ZX(R43X1EyhNP_5-VN#atd zbTF(5s@3#Uh`G>7muK>f6Y-u3hde@7)vDzoG1%RD50}iJJka}1<=P4L^LiJK%LFnZ ze-%ay{L{#dHoKe8g(H7@X(essOUetbm0%^gK&g0EEh){IGHBiGn9boRa>%}d^=W+vxJ$q zGyEjhYfpUj$s9_R-O-_K(yVNJAGL8Bd&)iA^|Fm+%*3D}Fl~??Vs)^i$26h+bd-XZ zCSAm#b4#+;d(^#0>EY~HR+rDfe$O{daO$f!3|)e)AqQ}-a!GO(ZDDUCU^Ab-l3LJL zs-_xPE^!=(<_z2LqXg`HtG0!nOlf$1C8sBgYb%fv{TH#$!B%1JppnQiXyW7o1sWH! zk3QbTg&ExMR|w{h&4Ban2D&HHXUbMHxD}g$T)cH!kEc|t$6A;Isb!x5`+z#0ALAog>pxVlaoJ1nlbaGinTvoIteE;_ zoYILU`n=|CC{IzemW(Hvqf@|RIyRjin@%%!EVBpM`3X7CL>>x(eDqbwAvvVo^}}X) z{lIDu=ZNp1WM^)sUkcuVL|npx%)maxDzXctX|g_qho0+p2^$HY)6_DDAL~CiH5rIa zENoDlcFujTDDpu2MnxXJSK`KM{so!n$7J4DTnj1!uuPYS;81``%Uu8RTGD3lFHzoD zUxpQU`)CDXgWqN0nY*B+ud_%_O)k40nuVsRxHbl~MsVliwSGGzUcrsMK~3q@@*r;r zu#Gf~DA3qXRw$U{Nb6a9W5kPI#W{L!>QpWX20L#p>X4 zbD(zc6RL2ln7p+)$PELbF&`vF_d1L|9xWX)LMAbqjHDDM6*0R7MQvl8lHr%6(yur_ zu>v80Mv~OBYT5MXfJT6jfNaaEvfuh5p_3}ux}#n}KjaQ1hya#EN_uIrxf!F>U!JIM z6bC9>vvO%KoDrnq-SP@W#vw6L(D)U)PRo^ALc?Ng&}Lp)u&cT}X$-RwiPRLelZDbE zBK7p1wfv4(t(9%KJj0`jKwFIF;ZFQyUzlxQ>t@AN50b-;>A9NGJ!}jpMNSM-0L13o2fsQ5}h8hMyj1uan4yvaok&Tze4RN%08)5cXzNk@c5yc#LL z7wjQ_yv_(Z9zGCg&kY1>sKZ?WVB*SU;PhQ{lPB}x5unJUD%)66@|y&L5In`77y=S~ zg)g>_T_22Zm`Y|I7j0ZLTxzOWzX-*&w^>SY=;fUbJ$)W2mdiIc!h(XX$LIH1dtXk` zV&vl?$eQev1_1(s5XQELogDmY7rxFvJ*qzQQ=o|KJ!w2}-IuaMP zvWFx&ZHtD|S8DW!!bgj#B`m-hEZJBY?mO99=hU%FYV&+orbNj~YjoFk)+gJ$dWlVk zz~F(|Sx2Pc;$vvd`Cb4RBKyFwQq#eh4&Miil`6m_bd0_xbJJ^a{)h{jQEeUUfZ4jq z3Zh9Ig~lR$apC5|Q8{Q@nlQ5GK!u%59;;avBULtRh=kSi{%SEmS1z2r08fFgRIc@R z`XfLVfhHj{y1UXxhKbF=HiR8+lg^CAJEpkkPMyQ?=`h3SY6_n)9nm#koJ%r9NYk6P zc>;f#-&;)?A#xQh!SAF~YaKlv#_Va>8kX>!)B+T9(xxihjqNr43^71B84r`PGDx0$uC$)VXefAEa@Rs z$qFYRmMlJLx49O9=s@@YP8#=E1aY4wd=9oUs~COQXvJ|DopRd64vZ7rNmntVi2wtw zbTO$TrsXB`G`&QG5pflCXKDzp8 zMhj7q$*fH{&F7C6H4{95H5{gR10fQ0cH>45p0>C68AHRu6P$AV_iWA+#6ATB;+4_f z3N*HOUi0j#wa|i#K{NcywR(B3M)fX3=aE&3kl^2_^i>jY3q8IqWmOZGoe}-XIVq7w zhL+2&2&>?}(E1FMP^vdu3jn~1(zj+IaBys!X&P;qBe?GaY?Z+v+vFGz-chny$?xg@1m5zJH?wB!{ZDp( z3Gcs@@8Kn~m%qI9b$S#CZ)rT}>!s6&mTso^6g~F-)}f`J;`{pm#ZC=2?xykxLZCBIlYw{+ps$BS2IE}g#o)VZ^{%<0E3 zT)GlpJagg7%DLxGKmF|K^qN{se;4$}+po%gDnt&8V}hbc%v`W#Hl>`@MC*)kuJng%)!FPC?aO^)W6`9b z$yWHIX>0QYYe;DiS|!X1aRi9p1>DTIkW@V)9D^-|%mSf(6xNOG$}zbTLTy^Gn&hPA zTa??l*e6L$jD4v47^Kqc^_vN%ck`XdrC&Y=Df7b+AlLut6ZSN@{(3wj9rZg(c_Z>0 z;^w=)toan<6*?wnh#RSInzM8GSrI8rt548rJn>53#!?Z3M&=qKK_Y6>h*Jo`;-zXQZBWEOS@ua&G3eky<1sk~ZDvl0(M_ zf}?gPq;^y|#JK|#_66RZPI-M-9TjM^r@hT@k9$cRO6In2MdXGQP}`FJiY!fiMgU

z1tk#<_L z-VO9`Rzhj{Eb&L)4H*P&-M6WLfW$DRrinB@POF!$>uabd3=q8r()=t7<7aZTBh;qwpCD=Car#y6V$9!7#5Mf(e!V0I-#3S9~9lrKA&@ zxk)Ik-jYo8W8$xQKJ1;v9z7{OTKE-vTm_b~#KlbFt}p$KWO5zf1E@2g*Wc2!jX*4O zA8C5JCCD={M2$2G?OtoLGx#L#$T~Pugvnp*WnEUfkPIi6^P7)%8YK}QoPM*-i9-Iutl&|E<8tZP-T*s@nNkvCdVpa_?I#IBLY=NP zum!hlj?1}1Eexx|uPzFaXOYH6wB-VJg;4cxO0>LfNrbFYElr2K$J}X5wILr}S~S43 zd0NLHi;i6DdAnI&x{h^Y{iczV-G2u*(3`b@O-D12{&@Fn{$xC0pPuM`44+;nwajpO z2VaTdbpAZdrN2zW=@U=;Q)|he9)8B2CfDEl^_9h&p4FFa7Fbh1|3I@fb*6^|R8y>} zWU+AFC3cLO0=5^esU(oTa%-{<`-+|!%+g~mZsW-V4(f<>03~c`2kQsXzhn3~;b6kQ zYsf;Pt2=5*qS66Wd$cCOWa5959Rgd7A!8cShRd)WZ%G$$exKEw>yRU5wof&;+_jzZ zM9|}>b(l5B1%p_s_*=hl#b3)aQA!mX1YBDPF~*BO91^GR%Gq6$mH0^+PEs zWc5irgQ`;QEKa8~;GCXYa0z#}HZVFjR@N{a6xw?G#TqtXxG+be(*d@sP*OK%`81r2 za450AZX$#&3usl(b}O{JaXFCZr0=kVje(0875bp)XU_!zjM@L=EesMv+)!|Ja;?ml zoT2CrH5*MOc#okLXfPZ^{;YW0XzTVJnhWU#C_*&#sz-mDRnC#t6N5f8eR3ut>R7?y zkI8O`7P3aLE-*6(%0vx1X|SMNXJsFXRZ6e-K@EVBeVRyjW#%_WS!O8@SRaD1+VMHQQcJ6C)1uVkTJj zXVOvY6cy^%R`aX*fp_O#j?zIg=+q+B;+ zA@nic6qBe}awG{dAE~mfOXRAws1R@$J{m+tXnu3q8T5?i+?mel&NIJECuVcN3)tF8 zNar5cyK6*iK#dxvNEC?Kq31lMkVeZY?c^)~Q zD;E{VnRF0=d6}k~oglWE0R;_jA_kZZ1>t$FbFD)W*Iww+Ex5}6tl>X`1fr#E2T8Km z!;?rGAWx)B+S{mp3Ku*szZf2b<;rwdSbMf7mdK+5%(%_ISpY>A@18P&5A=@ z%s4mF?r-nz-8!0MdD8reB9ZW@Ao7@V78s1m6zAJ43)Nc1wRV_{Wz0CTBCzNk_<1m@ zpIEs4(6NU)*N20hHb?vDolh)q#PL3wzj}QASnI1EwXnB`#*+3mirg#RaHJ>=4 zKbgyd)Ik!37G9QM{yKot3Fw(wlrBZFt^)PYA0i^iJP5fdxf#nb&)m->67 zK_B7fCVnx6z~7S8Xs|{;J@6pyBl9^xFetQ9N?2?7V0mbYo+ZkW&SVD#3EfEe(g%Lw zFOGuDCho;B?`{?+S{CEP2*$a04&!3ixU=+R4!=wwauUs+POLC*L%*Njd(iBbWy+!G1-?P19d! zoBH1wvxXoLq4gC@jR5~w|& z_{_M>UhDc$pe?ELiWo*t$vA$=9C3B-FY<)JG}96GPi_j;O_y5HDN8$IQo`&^m|^yY zYr^=(b@tf?Mz%#${NpU$J)-PNdCx7!2YP?b3 z3;pfGh3?1k;SKr$knHtx_tSX&mh@T_xPAMU?&oq9s0n-h?@IubL4u&M*FV|)d~R8o z*gpKN?r-43>!b-!h0Ist0{{MHIJy7R```lq`1Ahs_y3eXJ$==mzP;y9e{Fw7-}=({&P&&ScM}}-E8xrV^4_)EFVgIGM#Ay?Lv+t_@u6u|OEPC;#quu77(?jsxx z3!=k#)WYG;?a((rDk5CKay&VNdTUsc47WA!nUypkMLgVbDN)}(Vk7>oPeEi}$e8alxx!x!w6Q8=9!!6BYUZHyRyX@>VrTVsmHoKrHqyG>^ z2y3a)Ap;%TUN}a_$0-CwS&?dQLLr7uu@ltI+KcuA|7IMz%x@pSew&^pkCEU?M6+?i z&$Zq;i%(B*T=h(3T3R}{U-m@M7&n4Z9w>*OnrHS*XH95t4H%e;K{6ybTZ_hIZN$xC zINv>S;xqw(E);+g89eENgkdW8!RA76Cq)8kfzk6!7Z4hnWh~kje;vogUW6bFQ0uI^ z+MBtX)J#ZG_TvAvhRobTm~|GtSoLI)LelzB@R>jDxR^JZ(SRM2jdX}6oKFX*jYhq= z1Y)hq0Pz)n6_KnjC3OVG3#cTl{R_v&npFv%#A>kYSU8T4SB`?(-%V>I!A)UzUW5Nu ziGr?&co`sgERZ6Ml*2I5jDiR`B=N%D7t7f9>X^fQR2ev10+;QRdCTb)P{1*3oLy|M z-y9BZLQ3L{!^bw&v2vZh8rEePB%5v@{kql#nAA8mgH2B6=(*9?ee3Zy>};%;=!@YQ z(=<*IaXo!1eb93zCG4XNC)u6HOI!!4Jw*Q4MVk$C!4kQYRSPcMkZETg=XH9yAd^+7 zMd2hiiAZeerw{(wq@?KIB1&0BMg7D9t?++^?-dWQd`)@?g65wIm|IRUK^fJETf zDiwXoLP{y$+=+})eAlp+_ax!laYb(v$n2g@_am^;@2?dzd;LT5`3>o_)q1}yLf#mL z!#+IOT{ipvd$wRly>uV!`_Jvz)8zX9iI<2Cez0ayF+<82*3=*Q(kW)Tq$8Pj9wA%m zT*G5R@k%#eegd*Zh+^{s?jrD|ugs>$?79(~B1hDWKwOC17{he2$QY+-1n?Y@Bao@U z$D=vU$X{kH5bgeo7D#Kyut|+^_W%f)jape5$mb*Gm|Zz*4auzZS)EUcUhrQOkq766>w2SIDPC>#Qqx^R*O8@O@w$tDLz`Wv~>)xucZNKGi(W zY+S;yN)FAzz#RyXm(s=)RXG1y=|vuwz=)ViM=uWT?rZ;tWvesA@{BiM=uK^wpQ>87i!IYWTQE>4GWpSoy- z4UN}EgI#Wkj93bV(OiGKRt)FKac*DYwFFwNQ1gznwJuZ`jv21Hb`v)p9Bn<4F)G?> zMn}`l^!6UoBM$CVe~0mM*%l|cj$k_9wDbuG z(Zq~{VGF4$q$}FSOF5C}rye0+a5XyaOs{Z(;s~N9vE9+975yT4*wY~0>D&&TVj^~8 z<-f$!TE;FTiB7-%i);Pez1BJT2ffQmoiG~q1vijhi`h&#lQ@k`+UTUwX?%P4PTB!9 z9j}N`uYdMUGUH8InCg9d_X+i2eBURbZ+`-scYOW#@Cbcd_h4{#$`K;y+<*SoSvvPJ z?`0`H7~>v~>LE51YJ>VTM}Dr#l`y3|o^dip6I~2(P{B1u(ziGVhX750-q}^Bg& z=Dw|~k}yuYBC0w<+k|~M0zo0`k$59TW$G6786@JkhBL-%y{)H;avB{7II{1rf1TGe z)lCI2j1Wd!hjFytxft%b-tQq;=>_JeLTx@GQB{EkOd|C)$e66?0Js&Q93$i0bQ6}C z5k3aXN)j`bDlW%#bf9s7v*OVP4TfH)Wm@NAqOVM@iuE55h51lmqJ!p>@k&y9MI(xV zrD{Tv3XNo!eSOqJk`0c&q4aTy!VKuh;}m)%k??pkixWZDf+HB8a&xmzkj^EUCzo+5 zq~CtjBo%N)ct7`avb0btpei=-y~8OR4AKKL9SqfbwRez~Py(EFV?^zaAV0-FnwO-s ziZ^#f(Hz4A*R0<#*ezo)!Vt&_h_Vr>i}WpiPqOe-Lpc;lsD~9ddjl&VI0!a(F*&Er ztx8SSR>tFn*WxSK-0iGw4hOisIk(4R{jG*(Y>v)^x(tXywd}H<2Cs1{?+bj4OhEme zwZ2>hi^kI548ce=(>BL}DfouJOaP)PhdDWxhy;N2swI$pQX;=hKr5w+Hq?Q>*aE8> zA=}nKNl)bpv?vUaLq!s>nt`S@e0DO%cwZ4_*@Oz-YC^++^5y{Gk5rsRTY>XtD`eEd zNe16}C2em}5|mo26st-|7pu~FZF{P0l_(h3YO)mq*5zKt;k%H!K8|sjV~g3m3UHF^ z)Km-W6_>gK{Gig7BxVdwL5?ZT8eei&gq%q<>}&6E?Ex7#S%aKItkfQl@b*U6Cd{!# zgMkzQ!LDH$)DQQ}BIhBJVC;$i8kxXH$W1RQ6DL<>7mvwMWEB8|Y_HlnHalCmPV^R{ z6>zM(jf_MVHh7E2cp>Z$Y|49Htbm zS<_GXw`*@&aWv$4r$9L!z-%` zjfs)k=9O243AQV5*M6m#Z(i?$g+=2vL~s|xsHEf(N;$E>NUk*#H+cd6tLB)X+4|a~ zR`Z03W%+C!VrE@=EH!v6tuQUb5_bulcr?$JSWbJXxwkFGQyZBJiEIc&n0#)gDZf}B zjEk^ug($p81c_Xn$?=)$zrk@FYb0<6?o_{Y<7(iCyG$V*4mgh4QcpQF+zW!4; z?P+rT*YL8)1ETRb*oEJO)8WTZ`Uv92<@TPCcj&C#H{BSIlj9|@;4z;F9oIaWxQVDY zgqFCk!8ZNb7M8@rJ@|=wyXfCGE|GzmAaMZet7~TD34r!Cj&k;{+2yn_G-Ta>OE#n+ zJrndz&(CwM>-+gG=+t`msI4Wb^emKuKIVzyo8_3E2p{zW%_ zVNxKK%Pn`pI?AxL(BCQcRVrkzcOhGLv7gQRVcKJN8i%+{Tf2)KO|(c-l`C`sTI?D- zk!;vfwY&zkuH{pigZ0IY1%b43n|Cex03E%v5DJY~mI|V38O`^N*A|^wC^noU1zbtC7}`xN~M7HX)YIt5AF0pFGoxWt_|9e z>EO*z^gY|NV7io0Ka-lsNPw|uv|_hOP{1I47lebYDBWSa~F{I zcZlrrdBB(DYqr5ni}IUyTsoetB3hVRv~zc1 z4hHp2HdRuFN@7te57~$Ud1M{mOgsYFM=_ye1ymajNC!r#kfRFnQ)VC#tz_xax^>Kt zDfKb~`v+JFXf@H=9lh96L!>W~wR<@TRzLiUeq=a;m>$oT6tup@loCJVW(at9;X{<3 zL0BSy4ULZa9Rzmbb~IcnKUz42Qm3xAI}d-|(XW;Ne&i}b8VOsCU`{K&X$&+_7#Rhg zI+l-}Yq(@(m)>elGX7TaX=CB))!Xs=iKBO}Ud;yvtq1%krI|w*)~b;rbp)7htJ0d* z36`*4w7&SdaRzBqaI4-m_@Z}i%UgJ{IHE3oj@ z$;N9@DIVHBgFokMSkk{ttyvBm7DqVQyCW|lS4qSUQaFuikF^)TM8QW8 zD2&6nC(RAuO9#{xHUEaB-b~5ArF&kL{HMPeO8#d=$^SAQVRYu?w`z1!6jRG1GOckH z`UJmERr9(K)r7VlVEI9`BZwfq(h>_>sKRq7&nxS>LQq&yAp_k z%mF+g2T9HK&=jNdjG~NiO|!Y@DQtkANjGP z=f_)&L_*>Mh@A7-WC7->e+EJdYe!T#$%~nZEUepl{^Sj5OpSBj-2HOp+z)*VIQP#9 z=l&ob8{8*c34?L_DAVLVc?zGW@NMBfaqAR=C}LFnC}esXrfkFPQL{DqhOv+P7@P`? zHYY2@*y4SS%@pO^v*v~9vsqG`Q%f?95qZ!)pey8(bm}N|O$tw2JEL*|j9qE;W$=UD z9EurdBH{=FJb}|-4-IHl9f8qN`~`MPo1+`%blbC`?bx<&W+Y7 z7^-SOKlbQXpA341bDenj>3Jz`_C*+-Vp#NyX35w#Yv0txqVltEB5{1k?8^tbC(JYY z`tQJm{x(e3>l>f3r^)pv@e)(}fr=*tt~|uvVRC=Rmp4!Dr=`GL(_0RBd7>-@i~$q3 zYD(<~M(Jk4r^XNt(7YdaY^g+@cJToeQgaJ7JJ)BBdy;&VY2Fc;Xngaj;FbG zNDW;7M{2a00^8iE;(Vb^sf%YQhrQvhdV<+l=Q6M=*U&jyN`R?LM`%5OFtUkrR-Ly9 zavbhTWDgGD@3c1gh()T!`d}v-H5ig?L7JMn83B^O&j8Jqku2CCA?3AP%H`40$(hWx zF(w&bQ&o<~@=UL;Vb*3>O!+$Hz~!HgHydqjwx(L1X&mj;{?y zI6b{kxyqET+>6R0xfvxnqAJ$bI`m_#!;K`!7p?3b|8Q$}_4tV@NY+O9Gr}W?SE8~5 zg(_w)%Ebj?#^7xC0%@2R(^Cm0bU`;pK{xeC!Q}6cR`%$bZ?A8hD$c@WdzH4A?F^lG z^uvPSE^>n!5a7L{!fHi?m6AoLbj$?#G{n|2Q<(U%2}Kf7*1ISM`w|Rs;!%CsTSF+> zcm+qgk_l}a2ZEKjR8a%B&?V<88uU!d&SPof)3{E~R-3`}7epCrvw-s^zLr?U)gJxW zU}<4zpY)W&oLLFBq@5S?%oYMh8^{3{$IC*T+!-NL<57)GA#P2mJd^Hs*K*>!f_`$+DBgznRXl2Tp<2<})-2Xu! zb58DMSLR4p#C5>D8gR00TZB#Q7}^td*+;Soy_?u5&A~G+?VIU}$Ri}^L_DL&x~<+S zcK2P@2AVrRD()$s6zd%41RI0w`IDlEO~jnIy&!BOdT3|R`ifRNg28zQfqt}w zLv@wg8nruvvO8$XKp)M0s>es5t;{qT1($w}pcg9gIpWJZ?EUvYh~mK4zHML%$h z(lkURLl>}>swMeFpo%OMQw{r|!Wk+Jl{Mr5F-DZbsB%ujA?oj;{V9`?xl0%KA|5zf zAQM=-6rrmKM#sS%cQ!;x*(6u0))9`_x^$$&#C!y5aZ>ELjVYZzZ`mI7MA{Cw^O%m< zcpq_j+NDkl1y^~f4W1Av4-_+UNme_F8lKBwGQdKj2KU4joJ^6tNQ^v8Xjm5#=FTg? z$q@xsG7N&f;*4EloEw)(+$h3WUO!m*Igzr`Yr_%T>xg(@0&lJiiEtB&j!l80D6eHyOEUs+`O!t5O4J5$JjBE-*w??0Dfsrz@OcPE8|mt`g9lM}ss? zuQV|EdXfU=+4CzToD2a3&-Jz@{d1$yF#AHl%YozRFtYw3sWF}Kn|^0Ef{HLP`a9R) zQWM-<9SzcKu)z^6W>9Jx38hWWqz;n%Y+#mymil;qOn%9a#%9PbWBpVEv3703^i4W;&U+0(<3g`M?w9zishM(+hYJ17jMKQ0f}Uwr;}on;Hvs3HGNQ@5@edzwh3V&zjuCd9G~ zm!8Zv{fz_X)Erj&54}2jO<%xo&h(61vivIyvM->*uu0lr~)(@LV zq?z8+fYjG?PV9yn`OEfdrMUPB>8!oNg>;qi3cJ`swKKu9?#GjH&wPjzPrTqy^4aA~yz+l$P(vGtu zwUWzWhhza~ZFy7JaT%vnODEctD#|iiwgk4ldi>D^ZxytqmG8K$Zvd~D9;>bMp)}~z z47B7~h!&ERWY}#`Un8dTqKz#K1v$)*H!`uq4oyPKV&C5wHV18!_nqAjbNd$onQ2SI zzI>Hj827g7K81Zf)xCy#Z?79Q_WgSINAUdteorQtn=Dr3$GX3QBKOxU8vFcf-QOi< zQ9#<4|6}RFL$)*B`wQ5Qevv!VZ~2@*{ml3J)0OY{r^kQLpFaJ=_B6Tv!gn_Yr|?oU z>|g)gDN$8V<8!%tjR50uYqBeT0Q5%p@_0`Kr5F4{Ijd6{k77l9|JeStydX28RBZeA zR*##+zWHq1#D@<{$b&@)F`G`>pGQD8H~Ci%i}yz|&RFUnlv()bL8#iUB3Mfvc=WNS~xsV5QcEiNAU2KqPn4;83HdClie6$->0RBg(5S6n`>U83 ze+5%%eErQoDih;H)ph48sZ~_myK0?z8*$@J9K~{@B_;lp5 zSGZP0n8I$)G)R1RkOnzsGUDsV-@1Z?ID@^F6-nTlca9TBXr^{M2{M9z48e|!0MLaS zS%5z+Wk;{V?kM=wcRVT(<*?Y4k_kDX*EGz~jY}LKnQ8?^ohdVB2f`n{ON*ThLJ;;( z2}1>J*>6+-(QTem#c{Y4>*7bic<{0G=tXRwCHKLuY?GPDR4iM*vU7y^C(*e1 z5F86rTKHEJ7-dT=#Gm$eT9gV)5R{gh35Z358S97Pvb7coFpb@4SESw*+=d~s{#3sE zfXTm^;YIv#k6LpU3(NadTb7xoXTHd~;rgP8$w|>x(lEH11$q6d6b#?8?MhrQJN4ji* z5U@I_&D!K!{!D);NFA*3TBf5!5I*osoE9#;Op&~;`wm)!MG<`+50{nI}VP4*)+3ZMQ7f7<Td(QME?<Rmsd)u{UK<3VIh8F zF__1f+GOXkVmt&X6D_;DOLW( z5l#S(_Q0W1xT5(43&|F`PaL)mV>-9tkrUtq)kGBR@$OCBGv7iyMR!~dM~Af zb6K=zTY1_FL<1=s#*;cC7&H2d(5qaNbk3YU^VGSOv*#~yRfMKgDCC2JQqM3dZm(W& z9<#$%L`e$cR$0BX*jhMy?(t`z%-XTAXV4(_yH=qIk$MaOMOV^Ell6e}F5w5`MG5RQ zQuiF7NpJ~S)COP(HXsMct)=9q=B zxzdeOD*-14{Kb(-=Mn5;r_5Q8kboTo<$|AZ*0uj)he`Froen%7*u$OLiFDac)5ejL zm~tl_Ccr^Va@1nruHvF5SttZ;Z`0aQoN`H&LX**I17l1cHrilKDD!vdoyEq!pe7pc zHv7qC@f{IVt9=B8J5z-@LCTr!Atq*`{@MhK_MJUBfCCd#nrEKI_5$PIee0jqYnl5b zKpw}5fdC&9NXw@81Y9669-bIZcGe{_B+sU)*nnsSLWo5m=(6S!nAuxMy($7#5JqZQ zW+umsu&5>Cl<;9|LT6FlEBHoIhoNEt#NokOM1U1j#rSG#VH+A@A<8`#Dy26#>BFvQ;i5Kov`v0ms_YldmEU!;b zt1zwZyj)jd{|KXODzdvODzmD)x~Ht{+3M<7kzLbGSHG6DjgHKW%#5ylO-5!`W)~^q zU$U&?A0vzFAO0btf(W__i-QV+3L~N*=z{n_{AY1RP(+Xg{d~_k_wkEIW>$BPVnS6! z{C@Xw?z!ildtUe4G0qtDDaBu8dbW~Ru3sNrvqr1cX0U7R6`omG;8)44Ac!)bK5L+@ z5QjgC0X1-T&ocF{=BpsAWT{y5Ax{2bT=3g&oO5$1qZIX;Mtz-fIi6>lDf8r|AiYjo z>zN27b5Addmi1s7w@Gtc)zx}w)YXHt>ayn4g&8wv>OfToDwsQ9&(vbF+9Z3O99>4K zw_pWQq5_edSj{Y2a{;e6#M5S$29w7|J#N~x2Thf>__!=Ky|9dWqI_fWZKe_uCpK^n z$eM6zN}_lBg)S)tH5b@Wp;6G_P?@f2T1%myjE6CcsAgZAa=^-NcV0^cgEN|Pkrxcl zYO3{sgzqRfh|XHR;bJto>j9KfF8dyyEZ z$?%n^QYQKuxicP@**YB;UoIwH1cx`XLLQ{U{3W-pgolR25D%-p2fZAG)_I(x4AK;+ zf@8Gb2}KQzI%MVkYr|$y0%A1LLXqXgGQS`T2_9?FZs+V~4`PKHQ=Z(u&gU2pFfj~T z7M)yH8O#}VfGZWUc1hf`qJoP`DV5Pk%=N`;L4C#hWRiM(8XCJ~Axz`EnU=INCOFU; z?G%bWi~o%5;&OP|WJ^!ZegvZaeBNxPC&2f2-r-Mk`8p(Dk@RTOL|Smh_^AFpmxM{4$KVKc~lL z#QpK##7z4yWyGEPwe;OKZ8-+uPdJ z0rfxmho)P0A1L|d+Pf4w*L%t0^jk=ENIm6ELrzKt5wc9FGm=hppHYL@=kQI+z-R7B zR6EqWVo2G`*GnX$m}=)rEE;UfGHFaWKnu)x^*DTO5-m2GNQB9($ygkaRZ#7nsE24V zZWwS`=#6`C_CC7z+WT+aA`d9Z#Em`a;ajiYd-JXL(^Dy1ADuz8E*dc&yxDy}|Kd_0VE|ysU)&iF`9rp$szhP@Z&s*vhlMw{?)-Ph8ew z54vMUaNUXd_V6K>$=EE9xehRhOtn2%ePf92wC`+e$cpg{I@;^6zy3anX_ZO+kZ2}3 z^$xc=By<36^!L}E$rFK)cKyZc-Fd7>FJ13me@W(n1#av?JzBWtPuR@yE?5 z*IEnRn+q?i-UhA!Y%=@GFa;RXjF>$Ocj)y5ru)7tA~R}8Z1xKgoOT_=*DBp$sCh~n zAoAssB^{72*NLU|mCcm0yNBR$wrQG4W@o=|7gcpIpX5d9bWn+g5*x~Us6&e*ZIF6t zEW|DTz&jfB3BC%ejx7b1)#jF*W3zS=K;k+r7){scAsV`RG~at!gps1>p8hva@ze~%}g=uO)aH2|oZ^`l81 zS(>V)&-OYef4l4b?cvr51>3rDaed0!du!CndWl=DW$g0XI5x=L!8{H2ciIu`nwr*U zIq#}p)%Hn%T~V#|E)0`OD%NSg-G6`Zv6;HL_+V$P+xoz6R!q#%;HZ)AnCi5T4~DA` zF)Db3HY|Se<BmANO6CBpX~c`>L;`3)d&BhW`ux1fKpN^Bx_`1la$5UB_Fdb| zSjsztM-Zb5vO*Nbqvh*rg$aN1a;k#8>F4UzjMgN4dPUb>xH9bgvpU|c zVy~5q&SN}g*#Ltg{m4&e-+%!Muoof%ob(N z8tn;PF+)iNv1q_DQB|aM0i~YpORc-yBCO=l#aoi-uFFPI-C$EaUQgyVjZ87H`CZT^ zA4bldvR^%?y^t(EMe5+@0ZjlJI;dI{y7K7Oy9dLKO@iAjy-?j-Xz1%@Imk~%Fr)}I zbo68hNe6$;viC0Hh2LjBJ7(xXIxp(YUDJ-CiZ zJnBl%TrXB4L1+j4TUPnn-p+k(Ni=J>q&46vgsU-Ls1d)Cr5;piq+W!As;AK^E0M;!2p;*k+M4gq zzX<>BSeIArX_;9)oTvt9&!1f_a}Ar%@xFZu>t-vqa#ASZWEKUSOs9Y=F^`S2PZuPM zlZq_98afd47n(w+gBpM`g&OIF8gV+9-bl>&%%eae$k%kcC=esAq|_F9S(M<5eE+Rh zk}shGt2dKxtS`rq^rEIkR2v7W>=!B`gw;d=i5d5X z8sUw@aD~pAO_z=*5BX2F<@JNSFPR3pu|MQQ1@_9wra+=plsF|2(--@7sYp>)dL^9z zvb#VouaNHU;brs}O_y}d#miT(#_vbNwS&#Y`Rl;t7iEH5m}I-aQi1~_C40iioopwjgG6{X?pc9CE#rYqCSBPO z&smXK>j+?!P3y~ZW!F)@WAoXKBM%dBTEPm) z!E6nPxhq(x*Yb+4JkN9=BaL(+6_G3^oFMjN-CN!4alttj!60l0dC@_e0-#Ne zb7gP2ZRluM@#8APL-{3o>*RnmuJ&c_vM({PK!!?YY?k_yVq8O;Oj)2JbSYCEcG--RL6_|nrPJ@R}Hs~bI9^h zpT zEa_NSmA7#od(Fvr<)dIjhq?Mtr0`@$J1+a)&DFH^=ggYs=upNSJREX32jB7rpI9>% z(%@TPsa2>(J#FW(546Z>86`!-;^9n`-_kHPBE3(4l@UjVgu)Exv8Gvfl$@BK2IF#wF#%G-K3c!*(k1G;a< z)UZP|?aysek8fc|)_fPjS2t}Q;U&>Uj~E3gGT(i9tb`j|OM&s%yQ@@V`o^BGL!T$? z6}+q#i~7`G+m2z|qMzESy(Xl0nvtAsX&=kB%)ER3HLL!@MCY+L@wUwdaxl)fu)AO# z=B<5}+L2pPATo1|N?suacQ-9pdhfVj=9uqlTgLHM5&bA2IRal?6qB+ z*cz-KuvxUtKt$SnFu1wP9X_oNH)(OXPPKmq2dP8>f6{sGIftuk$3foOvRy9iyof#e zd{CnvKJ1>KnV-`R)XQ602Sv8@qQT9mk#~kpOhu_RDbmkqqwbXrRK2CY88xb2HxQtc zUqVI?4GFs6CI6?1+X_L12O1-vX;phO>={vYGKFXX$m5C8?qdo-bz2 zAk5EzX$+BvVpf=a_J@NbIRyHVcXGI@MXiw6T;YqD^Qu8lQGel~_p#t{9S|;-Bu#6nd#YFLntrTi>*VaHlz`D% z$N&t38isYYnZ9U!yX^#6GI=a>FEFTYdOWaH2v zpHrE7fEm5LUX*(Nsr&OP^-O6g;%VmWg$2}n^!Esl`4dkQQ1ipTpT7OAe~`ZY%0Eos zzWtBVxAs3t-D$*ykm2q9)qft}NU1?51m67oSXji!X50dA4o(QY`3t|G z(3^>Ca~*s$`yZT~8+;?yqK1vHAfu*89R03hYM73&-)d%98PB{y#RHT$48;es;7h#G zn_7XE<-5Mka4ZUB2g}A?JYdQ{;|ZFsWRWpa28@Th=w`bEju?$nya`tyrmuDANpPqD zc5u8$sFvyWd&jAGykmdZv%6dD^+p8H`1v;Ob66d8H&1Xc?v<#bXxo*MyF>|W?Cz5@ zeCw@7ITtHvM=>Y|{%cx^dt7crijMJDa}gN>22=Eot`I0sG3Xx+ws!Yqo9N2;U+y$c z6%-7BsJw#@yAfuS-m~o?Ns-a^DDIEU1jorb13QP|+-+g>jC{kUL zsvpP$)lY=%4TzrcQCXX@(T;8AV@Ein+O5)Y-ksm|72+j)Yt=r%reC|+eo(m~-8p2A z6K?O|+$j<4Wl#Pn5>)jM4|egShzMDL!hxL^u-#n2=w2g@aw;wOSxOfqkY6SB`lIfH zJ0HH@yLbQ2o3B48d#LYyUfklJ*pU`)5>)j)8?0Goc!aQNzc&YREAxQ)>iA1yKUsWNI1BrZpW5uKo<_hjugbUBOz{t#J=8iMRRKob(e3Po0^7?K7 zI5^~%LTQ3D9!X?_$lmirC3aqfxdn4N#V)pd=}K$R-ROE3m*(xyuzYEKeSUsDT=ZuX zX$41<_@s{WQUs~Kz=i@X)4f?4wvq^<)kW28O)T1%%2M&N2z)wgKHR}VjYP?jI`O~3em3rwwwh~( zC6Ri&;DErN;&Fr%5ZJZG6m~Ra8*R600=A|m=%>3SK=wNAOXQa_6%r@$h2Y7fR)bR^+LtuWdMv#y zFWkD}_qS|JzPoYjMSr(4`R>JAFZsKWmc;<9d6e3lgrMlRHCg?(X6$z?z%0;le@-t< zR%SjZ{*DDx;HnT0r^T?!Px(lhQPLWH6BQ4Vff(8^nx5FJdoZ@7JC@*Vv zgrJMEJ}rT|DG`r7|HN@)sIzb4^PjU$2gGc%9c^{6zgxSU&L=KG4%LqY%5H`P^v?IUfU~LXRh3*vMUfjd&J;ZqV z8O5v}jthxC@}AEaT_z5_FU^WiACRhrbJ>yXAfhY65*)a5W_*&G7lLww*5g?%hM#^~ zi$1p0tdN|WWzQ~`t=U1XD4bSP12ngjp5IWEo0^%ff#~;UtjIFg8PYqZ>%pah2;zoH zrg}=!J_{sm?rrNtIwM*R)_O5Q%$ZD5C+k{Wc8uXp=Q)2Jp-81xjA>Raf1U12JKPy^ z%US6u?i+~5xhWpo_=IfhHi%zamaZQty*p5Z^5#)QhlQEIVXRczU>h)$Vq&X}SGx9X z*=iQDs0szJDr8>+_^&e#6nW|red0hYuF0p z2GftvgRNB8xI`#zH1dY+S?~rq$@caniyFVO>`UA-q6U?nN11i3N-CAFxH>Ah6LzS< z`Ad#BgQ9YkMRRs zz)W;+1+P=^`dGn*3PyGK`SNh#ljY%c0hwSvO1EY2K#Rz@v_8@|!9qycvgFw#jHs$# z72$Qcxv(>2i>zL%J~x9YBWh>-@l|fFnp!xc#fGDij8(M)4v1~IvI;L(GT)q&w`$_} z+!)x^UsW4(*%X|%TyMs9xx9eX`@?1%N43P9_v=!b%q}p-wa)T#)!Xtzc49BXSH3r2 zg4%^ffltESq9YEP0}T#7uub@Pjl*Sbs|CL2Th~GF6j&<=5OwhgIl|Pc-Qc;Hcvpi% zI2SdYLH(jKbcPi=kG+u-=@ir6vme^zgz!@~pW=x>UbNPW7wu%xnkx@JU;MoMAiV97 zi60(}l4+wLeR0Y}l=@a~rN6)U7%!e9)Es&K75`a6NIVs8;^{UH2cEV~vT2`|Ha{m8 zF2!rvY9b14aiP2?xL4d3 zsr|v~P|DpRr;73r)Q0j&nd=^PX?}iib^eCTA`AM`C5Nm0Rsjd_tJ>3qc*N$Y{U5O@cI80iuYAC zAvB>ect@F`N=Is%)_YpJBWEp}d!$;NVo)cB#;(2WZ-oq5MVUyoNV$4_^;&~wFn|Uk zPQVRm0}f^q@vb-yURlm}SEk%CX_1)Sw`>0*v6=D0sr)sbzDdr+}vYFYtCUNoaSRu7bo)U#!o|>pRx8)P0Tp0=D;GG@@e-8W-^HZ zCzhsh!wFV3G(ugYShw|RHj4Nym)^J05B(wbOzGqY<;a`}w_#a%!G>DV8m-I-8u}B6a47GBpCBv#$G#pr#96^=wN)#$NUQI3@O0m$( zk%_ogVJLjL+>g#wURIq*T=rH}Hri`WJ<6DkrW55jgX06d3h!m;b90E^_ASFD@B?tE z$<{*EY4yrls$L05UfYnSPeoNYky5lrPo;_mX3sS)FVGy;SY^Q}^2}t3pwr*#?|Y1R zQj>gM?z!XHWl7tW2HZ@a6?dtTp<1i_Btb^~nX6T`1i#A%z~6+mISv)}fntB1y1uNL zG09A|0L&}OWl1jy_ml0bbb33>w4*ZmQ#oTbqWr(X%b=x(mypKEJlKa#Ps=P$a5xzN$Peg8)F4iYfPDs1l>jEr7oLE=6u$hrxQjU zI(5Tr;I^5}GE?!`F2saAnZ0Q*d0Y*E^Fl7$NNUEop59yNPBa?&S!%<#SPkhMJ&nNN z-R)4qe5ReyUGi%>tCVR&GWVF|zATCOldQ7&=AP8Gn_pTVb9l_2Vi-+6+5ew)F&~rZ zW95EebZZRcX?SPbfdVN$OPPYCM-?BMi}H>$^cKCGC>a=S-RG=IN*QX`ee1}Pw3tr= zRBz1Ze_VA70+^y(C4fXBSV~8hciq%tttl=V~S)VJj(tk>k@m1?G)5 zrAj}2_Cp*CXGnA-0ant^+B%}BrN8>5>m?$-JBkN+mEvwb9nGk9-fkNZ6^UqEWN1Pu z&dQc0lT22ST%w;8{9Lc!1_GKQs70`QsWcW1Y?&6Pnzh3$33?}(d_0o&sA zj2{^jH0sDaa~AD3V93+#?Tt-C!ciitDdd-smWl-BX#$(VD+%$@LQr;}M{y18HDC=- zvfNa7t|=I2jEUEZNB!gUXzYOSR5(ZGAZ{*}snDi^85%%c$9E}Uja3zZi_TO#YB1E1 zSz)j?#GDi(tGpPdV!^g|bNi<8Lw9n>m0_0GVFS_YGUQ?q`Ds}Dqz3qr#Z01a1%3 z-2vonC|B>uX)Z&tCH-fePWOan|BAU>Teb;U`1`ibzpXl(?MG9G7D7%yyv>codP;5X zuIZ4ULV7`%!s3f)Yn-}pokT^*v%q@0RfTc}1*IE1<hZ%&DY=MSIGQ- z5cl-55av#AU+cee``XGYw^#PsA_d=cb{meu8ge#5)Bkx>Fbh6UlIf=JKYI>M!F3h~!bp~UZJaoRC- zPHArHcoIVuGFh?dr!hlkM1CsKNhkPUPdOZL&N3_9$>GJ~m6gW7T5~^xWuiriS)?6U z>)ElY)Y$5%r~B1>T1i_Vb%!=27!KRtDNrFD7#@|^4z>qQb{|K^mJ zw@CO4i4E8NBZUW#bzp6~ctpj=tWlF7bbH9@slD_kylf1xv&#DSdW-(yYfspWYMFqu z(y4_B^Old>Nf|Q}i6WHut6rPzbY=nJxtT+%txoh?=+msNI<(n+b-xqgdMcqmz$TYG z7XlkJ{sild9Ct%{-0%q%wu(bm@agQ1;1g5@t*WmLST7f$nO3{`Zg%_ZT_q!>iZwMw zJ<;C^bMW(u#g@85(vI0sgh}DWjMf#qMY2mSYm%mrKzgj|aBm@p_J|Oi) ze}9#@v&WA+-RHkQcX}FGotnA>U0R(<+%sDbY02Jp6#=x@L6cG^^`8jK3MyFGL7!|& z6~;(xqM_8N>-j4%#vO@sGs_u`-qn5~vRb|sfLg>Ige%jLWSQo?%@wsf^_M=q-!z5` zbUR#IOne??$cIj7+Un+TYmF=e?YVP1!?gPZBlL+-Wba%HW7_PI{YGU41qdC{p7(`}Sa!NPQ+MK})P1uy7#c(R}(vjTM>+%A-qc~rAWT7p- zQHDrT-aYf9KlkyoU$ei{A9a5DnQ}5a5;wH%66$BlX{&g?xb(-!!tf2r=O#SI3fND3jHjg=sQvdb-FFr-FKRl~g?eg*} z_y6cq_kUe={-D*FrU*yDA3t^fH&u`kObTjI=C_`@|I*jv>XtYD75N~3@-&$y9{xu9 z_T7JzzWv94m%jbu|B$}@_&=p@-}=q;?c4u3efwSiCB7Yg_7`cI{1WYa+&``gIoV#> z-5RcPt<8qgC7?HxW#X@Vcg6)TQ5tnFmA+8236vDmEk~(->CF=aZ(v&G#(~*+BP3YW zi6TBwAktY`An0oE#IqAb<4L$lQsSubwwoWPa=kYWcd!NQqA6};6z-)0&1#xiY)q-r zgBW2TXm@`s4MW$_{zY>iDBS^xEjr`rnXy$y-cT3o4LvDNt9t4DCdrp?>i8?E1J=36 z?0Bz;&nDRE49@Xz`*53$iTE*z!V7lnT+)C4Xjhg9OhCkfJ-U$mKapj(0xR=13H9C` zoe;(3cX^wg00=Fw1=n%{OLRF)4xcstMn`GjRkN+*riH^W0ic8ZeRjr!K?gNuvF&lP z^)(@&%Dv(#);>byri~HSUwLVc&Ac9yS80RVH*%}U5wx^^xV6<8ZT9yDizMXKCuT#k zL3q!LK08Ikn3U@3_PlhrNSeXS=?9~@=3NKZjMne~uktK{x_3A72 zIZ(8zE3LeQrXIX51V;m=_?^!mYyxM^x@liN_2b>=iBD=>0^XEaC8I~cp3;4j96*PS z+T^;5C3I42iF@5|7& zr8xgZL3GIrT=j}pN?$of#O)GI75#9jE9%uv1-jBz9l$TF|G}=cGP! z_H!rq5M5;xw;4%ilUO}6vs5k8qa91&WO>{%lgP?DI+KVdJB!meAI}>#d~ByE$9g2k zfu5M1#*O~x>=ICC?kEV88J|gEV##UiB!M`qQxvwhzk7hsfQpH{#7aWufER2%>YwOB zb7fC~G_78T)!R9aBfx5?MZ6`LMvG;&6qA6|*dbhBU6cc@B8zShK*(#g z-Hp#`FKO;Lq#I9=j=GscW3_=i*3B|%_5}4mW>QFyCMVg@HyZ=W_-BlyXf;zI>-wlT zXZpNOV2urxqm(s(V5(A^rxee@>X)$jZG0s&LOW9?L{I-8&WCn^f>_aFfH`Y6;&rKW zvB{{1dH!59O6RFiPjS4IHP&f#93F(&kZ|+Yxod4BMC0sludMZ3$VQ~cIL0r1Qgm_K z9Vd!hYZTEwI#J}gMiFhi6GfhH6xkUlKW>8MR_p3<1;yU(qw1vt`rLB?=czMuY$9Z? zwWL~XdX_}S>`;UK6H8en-k~Ln-BKrjbbMad%)qP_aDpL9kzESdUgPjPTNE68h&5aX zwi+vRNIvLqBz6y?K?pZEjZ-I(RKMx-7$F%c2MYJZfe@xo3Dq5YCIyT6PwQC zRFgAAO5&t8)880oR^*L2!evjmd$k$25M4pvR7VD811F6DNbh+k{xM_E9REb86x^q8Nh277l54Ri<6Q$VlN& zcg(v#Vuj$K(M*>s#Ra+k+O$AyXwC_Cy;&p^-2<0}Ty6+Dv#D*|Moj!i$V|AD6j-49 ztJbmE+n%?}5?v(~qerWbb_way)m8{1h>=Cs3I^b-Rxlcdtw5RH0LNF9sK}8#e#x=8 zMdb;A2QyM~L#`ZdG%>y29)lcwXJl437!5`TfdqL2>Pnt#qHw*Oj}lIp>k1x*>4 z9ln&&Cofsz;IW^2#mEBuH1ibZ%%5GF!{GR>as52rURnAcZ+}m)U(*KT&F!UM4I|`- z{|%$zzjzuW#<#=Ip8D@*Nc_&2A@Oj33&Y`W{Eq2{!w=qjyJ;xjFF zLol~e$+D;@ri9E)g(PKmA;sjlZ?_8UnQbK`nbQ?ZjbBWK*+ys%O^~e(8DP2nIH|_w z-R$wKqa2V@A1pnhVuaBB&~lr}_NT`%g^x4_VRj?&0FOON?V613tzJmq%k?JnH403z zPj#YVWigCZhM=_MzrR(vC+ z3;Zf4|NI%5HI(U;kV!X2l58L>L~>Rhu~R4-qU>YuKy>?$ln65>L4udRP7}`Tjn5&E z4EuS>`P7pp3}PIcZ=a?g60N$w#pF{WW*vaohO|a46^6Ykn?)uwd%m1Xexg(0dFTPN zQ6fBhZ8VjxG$hZr{){s&5lt}8pIK_dQooUDDIPz&bUXOz&;KuY=ZW~~yT2XZ4nI5O zA?}#(j&sq2q1fo3{>BV8%IhW{MT0oP&yAsrSD38$rmZc;9&RVeEYj{dxT54S@Ye1# z_oPG+F`pZ#?h}XcvVRy^r*z;1nvg&7(SSQJca(<0Oi9k%q@-XR-`;b+Y#}BSNxw52 zCaWI)5_0+mE9Q{*8h2{OFNeFbG5hOSxXJ;Aa$`}E)48yFG`vzmLU=PqdssEe{USYp zMlQ4jy(lbnJPb2l1pjrYpTO88zBmO)v2Vv|1I8!KjT^wB2aQPFvV~y8{l}6%(t2dw zM44vL=6E{W_S=T4)~2*mOA3tFkNH#JCL0~;c&u5w4a3gz2O|1p+8Orj)qu@(+@9>TdIk$ReW$2SHIq-y)_6zvNnp6HlR5Llk8pk}M$^SydVXt6Js zR2;k24FxB?!F=AphJ!5I>2|xh3xiCdTS1&<>x$;r+Z2Cnoh)B19o#~@H%QEwkXvzD ztZan2m1yEtY2uSpTJ}aJboKT22aYORL9NS=)x+s!xv;Y9&;1=eg3pwikD%gh@$_>T zv)J2{?I$+MvsY5;dyGlnG25AKOQP4NE4czfyVVm==bczbKiwNL~b&o>VXngKe=eW2Z2L*3>LoeUt#_lP!Ki(4Y zgx1{V?jf5^v$4Ry?N*(g-CQmTEcCahOaz{os$y-nip6q3&bj?{%}uBM>@Qw>cKh11 zYf!%3wexK$)eV6pWW8@LJu9uc-k#!3XX$O;SjEPYiP!HeeHKFEPyRQe;UAZf_}o)Z Z$G3m|_4s!9+3)_^(_cII(IIz?{~!K!t8D-P literal 3226213 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

yxXI*^x{#C$qi^vb$o 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�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

!#05+x; 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%0DSoPK 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�bTTovDQ5m{i)>IbC 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 HtJwnpb4(#w diff --git a/development/.doctrees/examples/api/parallel_coordinates.doctree b/development/.doctrees/examples/api/parallel_coordinates.doctree index cb10b2a643817a64376d8d76b90257d16e42abd2..52d9bf8ee5d7b39df14ba78fd0cdf5ee02cc9258 100644 GIT binary patch delta 64 zcmews_#=>|fpzNJjV!mg8QV7(3Y4(O8)$MV0D-bXT4s7_QL0{XMt-@5=9CQf*eMx; P5fDX;2AiLX2#Npz&f$`V`M)3e|W)=|!5D3Z%kNA;L68@Qmf#LH;@fhaKA2{k6Cx2v-(lgNHQUC&F zg|y7{(xOzo;*9)q4NWdoy}7$(MFLnE7y>q%vqrNLrziO4e$H<|`@U`7&-H^v2A}zx zFY)KAF#{dB*~RQ4GngS^HHC*4#o3d0x*5xZMBt7AI!GGqJqWR+QF$`AyOuRb4cu~| z1GrGstO0Tp3o`W!QVR46Dg(S3nM9c3fi$_mU7G0>|Kx}KlG$f$`u3M(F@=W)=|!5K!<4jR-vY>Cy)l1_lrontZ`cbfbYY^JYE1I>yPLSfmU! zxfFmvSs^Vmy|gG*uQ(&WTtgGpgqwVuoBUZB7(iH>VX~mR?B*C&OV-J}tO~p!8_r(6 z&iNH+`q#~exqh%rp2sD@3>4mcoj+d<%wvpy@;*0Xd5{^Xc7PoZ zCYCfROcrq03P-UAXcrek3B!`c6+mucL8g8|N`YQMWq>y$lL#{+1j3eOPPbKKU;trp u6n#f0Pjm;naq=#AX-4zO*W49A4xRkdU7Cs8YO;=%)MNt>0k#EhAYA}!JX+oW diff --git a/development/_downloads/e839af13aa37ae3d835848af3db8e085/pdp.py b/development/_downloads/e839af13aa37ae3d835848af3db8e085/pdp.py index 83479592..957e8d96 100644 --- a/development/_downloads/e839af13aa37ae3d835848af3db8e085/pdp.py +++ b/development/_downloads/e839af13aa37ae3d835848af3db8e085/pdp.py @@ -34,4 +34,4 @@ # Alternatively: Use the matplotlib output (`load_mpl_outputs`) if available. figure = plugin.load_outputs(run, inputs, outputs) # plotly.go figure figure.write_image("examples/api/pdp.png") - #figure.show() + # figure.show() diff --git a/development/_downloads/e9c545ae14a903164c9a627d1b3a375a/parallel_coordinates.ipynb b/development/_downloads/e9c545ae14a903164c9a627d1b3a375a/parallel_coordinates.ipynb index bf52afe1..accf8606 100644 --- a/development/_downloads/e9c545ae14a903164c9a627d1b3a375a/parallel_coordinates.ipynb +++ b/development/_downloads/e9c545ae14a903164c9a627d1b3a375a/parallel_coordinates.ipynb @@ -15,7 +15,7 @@ }, "outputs": [], "source": [ - "from deepcave.plugins.objective.parallel_coordinates import ParallelCoordinates\nfrom deepcave.runs.converters.deepcave import DeepCAVERun\nfrom pathlib import Path\n\n\nif __name__ == \"__main__\":\n # Instantiate the run\n run = DeepCAVERun.from_path(Path(\"logs/DeepCAVE/minimal/run_2\"))\n objective_id = run.get_objective_ids()[0]\n budget_id = run.get_budget_ids()[-1]\n\n # Instantiate the plugin\n plugin = ParallelCoordinates()\n inputs = plugin.generate_inputs(\n hyperparameter_names=run.configspace.get_hyperparameter_names(),\n objective_id=objective_id,\n budget_id=budget_id,\n show_important_only=True,\n show_unsuccessful=False,\n hide_hps=False,\n n_hps=3,\n )\n # Note: Filter variables are not considered.\n outputs = plugin.generate_outputs(run, inputs)\n\n # Finally, you can load the figure. Here, the filter variables play a role.\n # Alternatively: Use the matplotlib output (`load_mpl_outputs`) if available.\n figure = plugin.load_outputs(run, inputs, outputs) # plotly.go figure\n figure.write_image(\"examples/api/parallel_coordinates.png\", scale=2.)\n # figure.show()" + "from deepcave.plugins.objective.parallel_coordinates import ParallelCoordinates\nfrom deepcave.runs.converters.deepcave import DeepCAVERun\nfrom pathlib import Path\n\n\nif __name__ == \"__main__\":\n # Instantiate the run\n run = DeepCAVERun.from_path(Path(\"logs/DeepCAVE/minimal/run_2\"))\n objective_id = run.get_objective_ids()[0]\n budget_id = run.get_budget_ids()[-1]\n\n # Instantiate the plugin\n plugin = ParallelCoordinates()\n inputs = plugin.generate_inputs(\n hyperparameter_names=run.configspace.get_hyperparameter_names(),\n objective_id=objective_id,\n budget_id=budget_id,\n show_important_only=True,\n show_unsuccessful=False,\n hide_hps=False,\n n_hps=3,\n )\n # Note: Filter variables are not considered.\n outputs = plugin.generate_outputs(run, inputs)\n\n # Finally, you can load the figure. Here, the filter variables play a role.\n # Alternatively: Use the matplotlib output (`load_mpl_outputs`) if available.\n figure = plugin.load_outputs(run, inputs, outputs) # plotly.go figure\n figure.write_image(\"examples/api/parallel_coordinates.png\", scale=2.0)\n # figure.show()" ] } ], diff --git a/development/_downloads/f0660e643860808c88e59e2b47bd432b/importances.py b/development/_downloads/f0660e643860808c88e59e2b47bd432b/importances.py index 981f5d87..be61312d 100644 --- a/development/_downloads/f0660e643860808c88e59e2b47bd432b/importances.py +++ b/development/_downloads/f0660e643860808c88e59e2b47bd432b/importances.py @@ -26,7 +26,7 @@ budget_ids=budget_ids, method="global", n_hps=3, - n_trees=10 + n_trees=10, ) # Note: Filter variables are not considered. outputs = plugin.generate_outputs(run, inputs) @@ -34,5 +34,5 @@ # Finally, you can load the figure. Here, the filter variables play a role. # Alternatively: Use the matplotlib output (`load_mpl_outputs`) if available. figure = plugin.load_outputs(run, inputs, outputs) # plotly.go figure - figure.write_image("examples/api/importances.png", scale=2.) - # figure.show() \ No newline at end of file + figure.write_image("examples/api/importances.png", scale=2.0) + # figure.show() diff --git a/development/_downloads/fb625db3c50d423b1b7881136ffdeec8/examples_jupyter.zip b/development/_downloads/fb625db3c50d423b1b7881136ffdeec8/examples_jupyter.zip index c1a5e58b0ba0bbab201d35a2893162c3c8c7dd05..84ef2de36b7ff3cc37a6828d573356096b1e6923 100644 GIT binary patch delta 292 zcmZ3ulX2-zM)3e|W)=|!5D3Z%k9gv9HcgO&fkAMicq7Z^38Ed0ljYf@84Wf+l{&_jOZpoO}5Q1`M8*vff_cON}kpNGnidIuz?xh zyjTRlX2ETn%pPr~fMPn(967M7AjFbJ7mmqs914?bqj}^(3gMOk74o7ed^34Pvix@ZC zun92-Ovy0ZNK&W){?B+x(V~lZhE9 zzS&apv=*4b?(%^R%=qQSA^_F`w|g>ow3$4nEnr82i6xCrlM|wK!D`?Z0WIT2C}CLA z_;T`^Xc>?dlTSxWGipqJ9<2%1!NU4=#z8g)1`vk$9HMPWyYj<;;Kf}+! S0K(E}rWVHNvAv4|2?7A#OifDw diff --git a/development/_modules/deepcave/evaluators/epm/fanova_forest.html b/development/_modules/deepcave/evaluators/epm/fanova_forest.html index 9b9948dc..55db2109 100644 --- a/development/_modules/deepcave/evaluators/epm/fanova_forest.html +++ b/development/_modules/deepcave/evaluators/epm/fanova_forest.html @@ -702,7 +702,20 @@

Source code for deepcave.evaluators.epm.fanova_forest

-from typing import List, Optional, Tuple
+# noqa: D400
+"""
+# FanovaForest
+
+The module provides utilities for creating a fANOVA forest.
+
+It includes a FanovaForest wrapper for pyrfr.
+fANOVA can be used for analyzing the importances of Hyperparameters.
+
+## Classes
+    - FanovaForest: A fANOVA forest wrapper for pyrfr.
+"""
+
+from typing import Any, Dict, List, Optional, Tuple, Union
 
 import itertools as it
 
@@ -719,7 +732,32 @@ 

Source code for deepcave.evaluators.epm.fanova_forest

[docs] class FanovaForest(RandomForest): """ - A fanova forest wrapper for pyrfr. + A fANOVA forest wrapper for pyrfr. + + Properties + ---------- + cutoffs : Tuple[float, float] + The cutoffs of the model. + percentiles : NDArray[floating] + The percentiles of the data points Y. + all_midpoints : List + All midpoints tree wise for the whole forest. + all_sizes : List + All interval sizes tree wise for the whole forest. + bounds : List[Tuple[float, float] + Stores feature bounds. + trees_total_variances : List + The total variances of the trees. + trees_total_variance : Any + The total variance of a tree. + trees_variance_fractions : Dict + The variance fractions of the trees. + V_U_total : Dict[Tuple[int, ...], List[Any]] + Store variance-related information across all trees. + V_U_individual : Dict[Tuple[int, ...], List[Any]] + Store variance-related information for individual subsets. + n_params : int + The number of Hyperparameters to sample. """ def __init__( @@ -758,7 +796,7 @@

Source code for deepcave.evaluators.epm.fanova_forest

def _get_model(self) -> regression.base_tree: """ - Returns the internal model. + Return the internal model. Returns ------- @@ -769,7 +807,7 @@

Source code for deepcave.evaluators.epm.fanova_forest

def _train(self, X: np.ndarray, Y: np.ndarray) -> None: """ - Trains the random forest on X and Y. + Train the Random Forest on X and Y. Parameters ---------- @@ -781,7 +819,7 @@

Source code for deepcave.evaluators.epm.fanova_forest

super()._train(X, Y) self.percentiles = np.percentile(Y, range(0, 100)) - # all midpoints and interval sizes treewise for the whole forest + # all midpoints and interval sizes tree wise for the whole forest self.all_midpoints = [] self.all_sizes = [] @@ -790,8 +828,8 @@

Source code for deepcave.evaluators.epm.fanova_forest

# compute midpoints and interval sizes for variables in each tree for tree_split_values in forest_split_values: - sizes = [] - midpoints = [] + sizes: List = [] + midpoints: List = [] for i, split_vals in enumerate(tree_split_values): if np.isnan(self.bounds[i][1]): # categorical parameter # check if the tree actually splits on this parameter @@ -814,14 +852,14 @@

Source code for deepcave.evaluators.epm.fanova_forest

self.all_sizes.append(sizes) # capital V in the paper - self.trees_total_variances = [] + self.trees_total_variances: list = [] # dict of lists where the keys are tuples of the dimensions # and the value list contains \hat{f}_U for the individual trees # reset all the variance fractions computed - self.trees_variance_fractions = {} - self.V_U_total = {} - self.V_U_individual = {} + self.trees_variance_fractions: dict = {} + self.V_U_total: Dict[Tuple[int, ...], List[Any]] = {} + self.V_U_individual: Dict[Tuple[int, ...], List[Any]] = {} # Set cut-off self._model.set_cutoffs(self.cutoffs[0], self.cutoffs[1]) @@ -831,16 +869,29 @@

Source code for deepcave.evaluators.epm.fanova_forest

[docs] - def compute_marginals(self, hp_ids: List[int], depth=1): + def compute_marginals( + self, hp_ids: Union[List[int], Tuple[int, ...]], depth: int = 1 + ) -> Tuple[Dict[Tuple[int, ...], List[Any]], Dict[Tuple[int, ...], List[Any]],]: """ - Returns the marginal of selected parameters. + Return the marginal of selected Hyperparameters. Parameters ---------- - hp_ids: List[int] - Contains the indices of the configspace for the selected parameters (starts with 0). + hp_ids: Union[List[int], Tuple[int, ...]] + Contains the indices of the configspace for the selected Hyperparameters + (starts with 0). + depth: int + The depth of the marginalization. + Default value is 1. + + Returns + ------- + Tuple[Dict[Tuple[int, ...], List[Any]], + Dict[Tuple[int, ...], List[Any]], + The marginal of selected Hyperparameters. """ - hp_ids = tuple(hp_ids) + if not isinstance(hp_ids, tuple): + hp_ids = tuple(hp_ids) # check if values has been previously computed if hp_ids in self.V_U_individual: @@ -872,7 +923,7 @@

Source code for deepcave.evaluators.epm.fanova_forest

prod_midpoints = it.product(*midpoints) prod_sizes = it.product(*sizes) - sample = np.full(self.n_params, np.nan, dtype=float) + sample: np.ndarray = np.full(self.n_params, np.nan, dtype=float) # make prediction for all midpoints and weigh them by the corresponding size for i, (m, s) in enumerate(zip(prod_midpoints, prod_sizes)): @@ -886,7 +937,7 @@

Source code for deepcave.evaluators.epm.fanova_forest

# line 10 in algorithm 2 # note that V_U^2 can be computed by var(\hat a)^2 - \sum_{subU} var(f_subU)^2 # which is why, \hat{f} is never computed in the code, but - # appears in the pseudocode + # appears in the pseudo code V_U_total = np.nan V_U_individual = np.nan diff --git a/development/_modules/deepcave/evaluators/epm/random_forest.html b/development/_modules/deepcave/evaluators/epm/random_forest.html new file mode 100644 index 00000000..75509889 --- /dev/null +++ b/development/_modules/deepcave/evaluators/epm/random_forest.html @@ -0,0 +1,1291 @@ + + + + + + + deepcave.evaluators.epm.random_forest — DeepCAVE Documentation 1.2 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +

DeepCAVE Documentation

+
v1.2
+
+ + + + +
+ +
+ + + + + + +
+ +
+ +

Source code for deepcave.evaluators.epm.random_forest

+# noqa: D400
+"""
+# RandomForest
+
+This module can be used for training and using a Random Forest Regression model.
+
+A pyrfr wrapper is used for simplification.
+
+## Classes
+    - RandomForest: A random forest wrapper for pyrfr.
+
+## Constants
+    VERY_SMALL_NUMBER : float
+    PYRFR_MAPPING : Dict[str, str]
+"""
+
+from typing import Any, Dict, List, Optional, Tuple, Union
+
+import functools
+import warnings
+
+import numpy as np
+import pyrfr.regression as regression
+from ConfigSpace import ConfigurationSpace
+from ConfigSpace.hyperparameters import (
+    CategoricalHyperparameter,
+    Constant,
+    UniformFloatHyperparameter,
+    UniformIntegerHyperparameter,
+)
+from sklearn.decomposition import PCA
+from sklearn.exceptions import NotFittedError
+from sklearn.preprocessing import MinMaxScaler
+
+from deepcave.evaluators.epm.utils import get_types
+
+VERY_SMALL_NUMBER = 1e-10
+PYRFR_MAPPING = {
+    "n_trees": "num_trees",
+    "bootstrapping": "do_bootstrapping",
+    "max_features": "tree_opts.max_features",
+    "min_samples_split": "tree_opts.min_samples_to_split",
+    "min_samples_leaf": "tree_opts.min_samples_in_leaf",
+    "max_depth": "tree_opts.max_depth",
+    "eps_purity": "tree_opts.epsilon_purity",
+    "max_nodes": "tree_opts.max_num_nodes",
+}
+
+
+
+[docs] +class RandomForest: + """ + A random forest wrapper for pyrfr. + + This is handy because only the configuration space needs to be passed. + and have a working version without specifying e.g. types and bounds. + + Note + ---- + This wrapper also supports instances. + + Properties + ---------- + cs : ConfigurationSpace + The configuration space. + log_y : bool + Whether y should be treated as a logarithmic transformation. + seed : int + The seed. If not provided, it is random. + types : List[int] + The types of the Hyperparameters. + bounds : List[Tuple[float, float]] + The bounds of the Hyperparameters. + n_params : int + The number of Hyperparameters in the configuration space. + n_features : int + The number of features. + pca_components : int + The number of components to keep for the principal component analysis (PCA). + pca : PCA + The principal component analysis (PCA) object. + scaler : MinMaxScaler + A MinMaxScaler to scale the features. + instance_features : ndarray + The instance features. + """ + + def __init__( + self, + configspace: ConfigurationSpace, + n_trees: int = 16, + ratio_features: float = 5.0 / 6.0, + min_samples_split: int = 3, + min_samples_leaf: int = 3, + max_depth: int = 2**20, + max_nodes: int = 2**20, + eps_purity: float = 1e-8, + bootstrapping: bool = True, + instance_features: Optional[np.ndarray] = None, + pca_components: Optional[int] = 2, + log_y: bool = False, + seed: Optional[int] = 0, + ): + self.cs = configspace + self.log_y = log_y + self.seed = seed + + # Set types and bounds automatically + types, self.bounds = get_types(configspace, instance_features) + self.types = np.array(types) + + # Prepare everything for PCA + self.n_params = len(configspace.get_hyperparameters()) + self.n_features = 0 + if instance_features is not None: + self.n_features = instance_features.shape[1] + + self._pca_applied = False + self.pca_components = pca_components + self.pca = PCA(n_components=self.pca_components) + self.scaler = MinMaxScaler() + self.instance_features = instance_features + + # Calculate max number of features + max_features = max(1, int(len(self.types) * ratio_features)) if ratio_features <= 1.0 else 0 + + # Prepare the model + self._model = self._get_model() + self._model.options = self._get_model_options( + n_trees=n_trees, + max_features=max_features, + min_samples_split=min_samples_split, + min_samples_leaf=min_samples_leaf, + max_depth=max_depth, + max_nodes=max_nodes, + eps_purity=eps_purity, + bootstrapping=bootstrapping, + ) + + def _get_model(self) -> regression.base_tree: + """ + Return the internal model. + + Returns + ------- + model : regression.base_tree + Model which is used internally. + """ + return regression.binary_rss_forest() + + def _get_model_options(self, **kwargs: Union[int, float, bool]) -> regression.forest_opts: + """ + Get model options from kwargs. + + The mapping `PYRFR_MAPPING` is used in combination with + a recursive attribute setter to set the options for the pyrfr model. + + Parameters + ---------- + **kwargs : Dict[str, Any] + The key word arguments for the model options. + + Returns + ------- + options : regression.forest_opts + Random forest options. + """ + # Now the options are set + options = regression.forest_opts() + + def rgetattr(obj: object, attr: str, *args: Any) -> Any: + def _getattr(obj: object, attr: object) -> Any: + attr = str(attr) + return getattr(obj, attr, *args) + + return functools.reduce(_getattr, [obj] + attr.split(".")) + + def rsetattr(obj: object, attr: str, val: Any) -> None: + pre, _, post = attr.rpartition(".") + return setattr(rgetattr(obj, pre) if pre else obj, post, val) + + for k, v in kwargs.items(): + new_k = PYRFR_MAPPING[k] + rsetattr(options, new_k, v) + + return options + + def _impute_inactive(self, X: np.ndarray) -> np.ndarray: + """ + Impute inactive values in X. + + Parameters + ---------- + X : np.ndarray + Data points. + + Returns + ------- + np.ndarray + Imputed data points. + + Raises + ------ + ValueError + If Hyperparameter is not supported. + """ + conditional: Dict[int, bool] = {} + impute_values: Dict[int, float] = {} + + X = X.copy() + for idx, hp in enumerate(self.cs.get_hyperparameters()): + if idx not in conditional: + parents = self.cs.get_parents_of(hp.name) + if len(parents) == 0: + conditional[idx] = False + else: + conditional[idx] = True + if isinstance(hp, CategoricalHyperparameter): + impute_values[idx] = len(hp.choices) + elif isinstance(hp, (UniformFloatHyperparameter, UniformIntegerHyperparameter)): + impute_values[idx] = -1 + elif isinstance(hp, Constant): + impute_values[idx] = 1 + else: + raise ValueError + + if conditional[idx] is True: + nonfinite_mask = ~np.isfinite(X[:, idx]) + X[nonfinite_mask, idx] = impute_values[idx] + + return X + + def _check_dimensions(self, X: np.ndarray, Y: Optional[np.ndarray] = None) -> None: + """ + Check if the dimensions of X and Y are correct with respect to features. + + Parameters + ---------- + X : np.ndarray + Input data points. + Y : Optional[np.ndarray], optional + Target values. By default None. + + Raises + ------ + ValueError + If any dimension of X or Y is incorrect or unsuitable. + """ + if len(X.shape) != 2: + raise ValueError(f"Expected 2d array, got {len(X.shape)}d array.") + + if X.shape[1] != self.n_params + self.n_features: + raise ValueError( + f"Feature mismatch: X should have {self.n_params} features, but has {X.shape[1]}" + ) + + if Y is not None: + if X.shape[0] != Y.shape[0]: + raise ValueError(f"X.shape[0] ({X.shape[0]}) != y.shape[0] ({Y.shape[0]})") + + def _get_data_container( + self, X: np.ndarray, y: np.ndarray + ) -> regression.default_data_container: + """ + Fill a pyrfr default data container. + + The goal here is, that the forest knows categoricals and bounds for continuous data. + + Parameters + ---------- + X : np.ndarray [n_samples, n_features] + Input data points. + y : np.ndarray [n_samples, ] + Target values. + + Returns + ------- + data : regression.default_data_container + The filled data container that pyrfr can interpret. + """ + # retrieve the types and the bounds from the ConfigSpace + data = regression.default_data_container(X.shape[1]) + + for i, (mn, mx) in enumerate(self.bounds): + if np.isnan(mx): + data.set_type_of_feature(i, mn) + else: + data.set_bounds_of_feature(i, mn, mx) + + for row_X, row_y in zip(X, y): + data.add_data_point(row_X, row_y) + + return data + +
+[docs] + def train(self, X: np.ndarray, Y: np.ndarray) -> None: + """ + Train the random forest on X and Y. + + Transform X if principal component analysis (PCA) is applied. + Afterwards, `_train` is called. + + Parameters + ---------- + X : np.ndarray [n_samples, n_features (config + instance features)] + Input data points. + Y : np.ndarray [n_samples, n_objectives] + Target values. `n_objectives` must match the number of target names specified in + the constructor. + """ + self._check_dimensions(X, Y) + + # Reduce dimensionality of features of larger than PCA_DIM + self._pca_applied = False + if ( + self.pca_components + and X.shape[0] > self.pca.n_components + and self.n_features >= self.pca_components + ): + X_features = X[:, -self.n_features :] + + # Scale features + X_features = self.scaler.fit_transform(X_features) + X_features = np.nan_to_num(X_features) # if features with max == min + + # PCA + X_features = self.pca.fit_transform(X_features) + X = np.hstack((X[:, : self.n_params], X_features)) + + # Adopt types + self.types = np.array( + np.hstack((self.types[: self.n_params], np.zeros((X_features.shape[1])))), + dtype=np.uint, + ) + self._pca_applied = True + + self._train(X, Y)
+ + + def _train(self, X: np.ndarray, Y: np.ndarray) -> None: + """ + Train the random forest on X and Y. + + Parameters + ---------- + X : np.ndarray + Input data points. + Y : np.ndarray + Target values. + """ + # Now we can start to prepare the data for the pyrfr + data = self._get_data_container(X, Y.flatten()) + seed = self.seed + + rng = regression.default_random_engine(seed) + + # Set more specific model options and finally fit it + self._model.options.num_data_points_per_tree = X.shape[0] + self._model.fit(data, rng=rng) + +
+[docs] + def predict(self, X: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: + """ + Predict means and variances for a given X. + + Parameters + ---------- + X : np.ndarray [n_samples, n_features (config + instance features)] + Training samples. + + Returns + ------- + means : np.ndarray [n_samples, n_objectives] + Predictive mean. + vars : np.ndarray [n_samples, n_objectives] or [n_samples, n_samples] + Predictive variance or standard deviation. + """ + self._check_dimensions(X) + + if self._pca_applied: + try: + X_features = X[:, -self.n_features :] + X_features = self.scaler.transform(X_features) + X_features = self.pca.transform(X_features) + X = np.hstack((X[:, : self.n_params], X_features)) + except NotFittedError: + pass # PCA not fitted if only one training sample + + with warnings.catch_warnings(): + warnings.filterwarnings( + "ignore", "Predicted variances are smaller than 0. Setting those variances to 0." + ) + mean, var = self._predict(X) + + if len(mean.shape) == 1: + mean = mean.reshape((-1, 1)) + + if var is not None and len(var.shape) == 1: + var = var.reshape((-1, 1)) + + return mean, var
+ + + def _predict(self, X: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: + """ + Predict means and variances for a given X. + + Parameters + ---------- + X : np.ndarray + [n_samples, n_features (config + instance features)] + + Returns + ------- + means : np.ndarray [n_samples, 1] + Predictive mean. + vars : np.ndarray [n_samples, 1] + Predictive variance. + """ + self._check_dimensions(X) + X = self._impute_inactive(X) + + if self.log_y: + all_preds = [] + third_dimension = 0 + + # Gather data in a list of 2d arrays and get statistics about the required size of the + # 3d array + for row_X in X: + preds_per_tree = self._model.all_leaf_values(row_X) + all_preds.append(preds_per_tree) + max_num_leaf_data = max(map(len, preds_per_tree)) + third_dimension = max(max_num_leaf_data, third_dimension) + + # Transform list of 2d arrays into a 3d array + num_trees = self._model.options.num_trees + shape = (X.shape[0], num_trees, third_dimension) + preds_as_array = np.zeros(shape) * np.NaN + for i, preds_per_tree in enumerate(all_preds): + for j, pred in enumerate(preds_per_tree): + preds_as_array[i, j, : len(pred)] = pred + + # Do all necessary computation with vectorized functions + preds_as_array = np.log(np.nanmean(np.exp(preds_as_array), axis=2) + VERY_SMALL_NUMBER) + + # Compute the mean and the variance across the different trees + means = preds_as_array.mean(axis=1) + vars_ = preds_as_array.var(axis=1) + else: + means, vars_ = [], [] + for row_X in X: + mean_, var = self._model.predict_mean_var(row_X) + means.append(mean_) + vars_.append(var) + + means = np.array(means) + vars_ = np.array(vars_) + + return means.reshape((-1, 1)), vars_.reshape((-1, 1)) + +
+[docs] + def predict_marginalized(self, X: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: + """ + Predict mean and variance marginalized over all instances. + + Return the predictive mean and variance marginalized over all + instances for a set of configurations. + + Parameters + ---------- + X : np.ndarray + [n_samples, n_features (config)] + + Returns + ------- + means : np.ndarray of shape = [n_samples, 1] + Predictive mean + vars : np.ndarray of shape = [n_samples, 1] + Predictive variance + """ + self._check_dimensions(X) + + if self.instance_features is None or len(self.instance_features) == 0: + mean_, var = self.predict(X) + assert var is not None # please mypy + + var[var < VERY_SMALL_NUMBER] = VERY_SMALL_NUMBER + var[np.isnan(var)] = VERY_SMALL_NUMBER + return mean_, var + + X = self._impute_inactive(X) + + # marginalized predictions for each tree + dat_ = np.zeros((X.shape[0], self._model.options.num_trees)) + for i, x in enumerate(X): + # marginalize over instances + # 1. get all leaf values for each tree + preds_trees: List[List[float]] = [[] for i in range(self._model.options.num_trees)] + + for feat in self.instance_features: + x_ = np.concatenate([x, feat]) + preds_per_tree = self._model.all_leaf_values(x_) + for tree_id, preds in enumerate(preds_per_tree): + preds_trees[tree_id] += preds + + # 2. average in each tree + if self.log_y: + for tree_id in range(self._model.options.num_trees): + dat_[i, tree_id] = np.log(np.exp(np.array(preds_trees[tree_id])).mean()) + else: + for tree_id in range(self._model.options.num_trees): + dat_[i, tree_id] = np.array(preds_trees[tree_id]).mean() + + # 3. compute statistics across trees + mean_ = dat_.mean(axis=1) + var = dat_.var(axis=1) + + var[var < VERY_SMALL_NUMBER] = VERY_SMALL_NUMBER + + if len(mean_.shape) == 1: + mean_ = mean_.reshape((-1, 1)) + if len(var.shape) == 1: + var = var.reshape((-1, 1)) + + return mean_, var
+ + +
+[docs] + def get_leaf_values(self, x: np.ndarray) -> regression.binary_rss_forest: + """ + Get the leaf values of the model. + + Parameters + ---------- + x : np.ndarray + Input data array. + + Returns + ------- + regression.binary_rss_forest + The leaf values of the model. + """ + return self._model.all_leaf_values(x)
+
+ +
+ +
+ + + +
+
+ +
+ + +
+
+ + +
+
+ + + + + +
+
+ + \ No newline at end of file diff --git a/development/_modules/deepcave/evaluators/epm/random_forest_surrogate.html b/development/_modules/deepcave/evaluators/epm/random_forest_surrogate.html index 49cac1d1..9a7a67fa 100644 --- a/development/_modules/deepcave/evaluators/epm/random_forest_surrogate.html +++ b/development/_modules/deepcave/evaluators/epm/random_forest_surrogate.html @@ -702,7 +702,19 @@

Source code for deepcave.evaluators.epm.random_forest_surrogate

-from typing import Tuple
+# noqa: D400
+"""
+# RandomForest Surrogate
+
+This module provides a RandomForest Surrogate model.
+
+Mean and standard deviation values can be predicted for a given input with this module.
+
+## Classes
+    - RandomForestSurrogate: Random forest surrogate for the pyPDP package.
+"""
+
+from typing import Optional, Tuple
 
 import ConfigSpace as CS
 import numpy as np
@@ -716,12 +728,14 @@ 

Source code for deepcave.evaluators.epm.random_forest_surrogate

class RandomForestSurrogate(SurrogateModel): """ Random forest surrogate for the pyPDP package. + + Predict deviations and fit the model. """ def __init__( self, configspace: CS.ConfigurationSpace, - seed: int = None, + seed: Optional[int] = None, ): super().__init__(configspace, seed=seed) self._model = RandomForest(configspace=configspace, seed=seed) @@ -729,11 +743,34 @@

Source code for deepcave.evaluators.epm.random_forest_surrogate

[docs] def predict(self, X: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: + """ + Predict the deviations. + + Parameters + ---------- + X : np.ndarray + The data points on which to predict. + + Returns + ------- + Tuple[np.ndarray, np.ndarray] + The means and standard deviation. + """ means, stds = self._model.predict(X) return means[:, 0], stds[:, 0]
- def _fit(self, X: np.ndarray, y: np.ndarray): + def _fit(self, X: np.ndarray, y: np.ndarray) -> None: + """ + Train the surrogate model. + + Parameters + ---------- + X : np.ndarray + Input data points. + y : np.ndarray + Corresponding target values. + """ self._model.train(X, y)
diff --git a/development/_modules/deepcave/evaluators/epm/utils.html b/development/_modules/deepcave/evaluators/epm/utils.html index 97b53b44..716e2be9 100644 --- a/development/_modules/deepcave/evaluators/epm/utils.html +++ b/development/_modules/deepcave/evaluators/epm/utils.html @@ -702,7 +702,15 @@

Source code for deepcave.evaluators.epm.utils

-import typing
+#  noqa: D400
+"""
+# Utils
+
+This module provides a utility to get the types
+as well as the bounds of the Hyperparameters.
+"""
+
+import typing
 
 import numpy as np
 from ConfigSpace import ConfigurationSpace
@@ -725,8 +733,30 @@ 

Source code for deepcave.evaluators.epm.utils

config_space: ConfigurationSpace, instance_features: typing.Optional[np.ndarray] = None, ) -> typing.Tuple[typing.List[int], typing.List[typing.Tuple[float, float]]]: - """Return the types of the hyperparameters and the bounds of the - hyperparameters and instance features. + """ + Return the types of the Hyperparameters. + + Also return the bounds of the Hyperparameters and instance features. + + Parameters + ---------- + config_space : ConfigurationSpace + The configuration space. + instance_features : Optional[np.ndarray], optional + The instance features. + Default is None. + + Returns + ------- + Tuple[typing.List[int], List[Tuple[float, float]]] + The types of the Hyperparameters, as well as the bounds and instance features. + + Raises + ------ + ValueError + Inactive parameters not supported for Beta and Normal Hyperparameters. + TypeError + If the Hyperparameter Type is unknown. """ # Extract types vector for rf from config space and the bounds types = [0] * len(config_space.get_hyperparameters()) @@ -753,7 +783,7 @@

Source code for deepcave.evaluators.epm.utils

else: bounds[i] = (0, int(n_cats) - 1) elif isinstance(param, Constant): - # for constants we simply set types to 0 which makes it a numerical + # for constants types are simply set to 0 which makes it a numerical # parameter if can_be_inactive: bounds[i] = (2, np.nan) @@ -761,7 +791,7 @@

Source code for deepcave.evaluators.epm.utils

else: bounds[i] = (0, np.nan) types[i] = 0 - # and we leave the bounds to be 0 for now + # and the bounds are left to be 0 for now elif isinstance(param, UniformFloatHyperparameter): # Are sampled on the unit hypercube thus the bounds # are always 0.0, 1.0 diff --git a/development/_modules/deepcave/evaluators/fanova.html b/development/_modules/deepcave/evaluators/fanova.html index d06d514c..0d10d2e3 100644 --- a/development/_modules/deepcave/evaluators/fanova.html +++ b/development/_modules/deepcave/evaluators/fanova.html @@ -702,7 +702,19 @@

Source code for deepcave.evaluators.fanova

-from typing import Dict, List, Optional, Tuple, Union
+#  noqa: D400
+"""
+# fANOVA
+
+This module provides a tool for assessing the importance of an algorithms Hyperparameters.
+
+Utilities provide calculation of the data wrt the budget and train the forest on the encoded data.
+
+## Classes
+    - fANOVA: Calculate and provide midpoints and sizes.
+"""
+
+from typing import Any, Dict, List, Optional, Tuple, Union
 
 import itertools as it
 
@@ -718,8 +730,22 @@ 

Source code for deepcave.evaluators.fanova

 [docs]
 class fANOVA:
     """
-    Calculate and provide midpoints and sizes from the forest's
-    split values in order to get the marginals.
+    Calculate and provide midpoints and sizes.
+
+    They are generated from the forest's split values in order to get the marginals.
+
+    Properties
+    ----------
+    run : AbstractRun
+        The Abstract Run used for the calculation.
+    cs : ConfigurationSpace
+        The configuration space of the run.
+    hps : List[Hyperparameters]
+        The Hyperparameters of the configuration space.
+    hp_names : List[str]
+        The corresponding names of the Hyperparameters.
+    n_trees : int
+        The number of trees.
     """
 
     def __init__(self, run: AbstractRun):
@@ -741,7 +767,7 @@ 

Source code for deepcave.evaluators.fanova

         seed: int = 0,
     ) -> None:
         """
-        Get the data with respect to budget and trains the forest on the encoded data.
+        Get the data with respect to budget and train the forest on the encoded data.
 
         Note
         ----
@@ -750,7 +776,7 @@ 

Source code for deepcave.evaluators.fanova

         Parameters
         ----------
         objectives : Optional[Union[Objective, List[Objective]]], optional
-            Considerd objectives. By default None. If None, all objectives are considered.
+            Considered objectives. By default None. If None, all objectives are considered.
         budget : Optional[Union[int, float]], optional
             Considered budget. By default None. If None, the highest budget is chosen.
         n_trees : int, optional
@@ -762,7 +788,7 @@ 

Source code for deepcave.evaluators.fanova

             objectives = self.run.get_objectives()
 
         if budget is None:
-            budget = self.get_highest_budget()
+            budget = self.run.get_highest_budget()
 
         self.n_trees = n_trees
 
@@ -785,7 +811,7 @@ 

Source code for deepcave.evaluators.fanova

         self, hp_names: Optional[List[str]] = None, depth: int = 1, sort: bool = True
     ) -> Dict[Union[str, Tuple[str, ...]], Tuple[float, float, float, float]]:
         """
-        Returns the importance scores from the passed hyperparameter names.
+        Return the importance scores from the passed Hyperparameter names.
 
         Warning
         -------
@@ -794,17 +820,17 @@ 

Source code for deepcave.evaluators.fanova

         Parameters
         ----------
         hp_names : Optional[List[str]]
-            Selected hyperparameter names to get the importance scores from. If None, all
-            hyperparameters of the configspace are used.
+            Selected Hyperparameter names to get the importance scores from. If None, all
+            Hyperparameters of the configuration space are used.
         depth : int, optional
             How often dimensions should be combined. By default 1.
         sort : bool, optional
-            Whether the hyperparameters should be sorted by importance. By default True.
+            Whether the Hyperparameters should be sorted by importance. By default True.
 
         Returns
         -------
         Dict[Union[str, Tuple[str, ...]], Tuple[float, float, float, float]]
-            Dictionary with hyperparameter names and the corresbonding importance scores.
+            Dictionary with Hyperparameter names and the corresponding importance scores.
             The values are tuples of the form (mean individual, var individual, mean total,
             var total). Note that individual and total are the same if depth is 1.
 
@@ -823,14 +849,13 @@ 

Source code for deepcave.evaluators.fanova

         # Calculate the marginals
         vu_individual, vu_total = self._model.compute_marginals(hp_ids, depth)
 
-        importances = {}
+        importances: Dict[Tuple[Any, ...], Tuple[float, float, float, float]] = {}
         for k in range(1, len(hp_ids) + 1):
             if k > depth:
                 break
 
             for sub_hp_ids in it.combinations(hp_ids, k):
                 sub_hp_ids = tuple(sub_hp_ids)
-                importances[sub_hp_ids] = {}
 
                 # clean here to catch zero variance in a trees
                 non_zero_idx = np.nonzero(
@@ -866,16 +891,17 @@ 

Source code for deepcave.evaluators.fanova

                 k: v for k, v in sorted(importances.items(), key=lambda item: item[1][2])
             }
 
-        # We want to replace the ids with hyperparameter names again
+        # The ids get replaced with hyperparameter names again
         all_hp_names = self.cs.get_hyperparameter_names()
-        importances_ = {}
-        for hp_ids, values in importances.items():
-            hp_names = [all_hp_names[hp_id] for hp_id in hp_ids]
+        importances_: Dict[Union[str, Tuple[str, ...]], Tuple[float, float, float, float]] = {}
+        for hp_ids_importances, values in importances.items():
+            hp_names = [all_hp_names[hp_id] for hp_id in hp_ids_importances]
+            hp_names_key: Union[Tuple[str, ...], str]
             if len(hp_names) == 1:
-                hp_names = hp_names[0]
+                hp_names_key = hp_names[0]
             else:
-                hp_names = tuple(hp_names)
-            importances_[hp_names] = values
+                hp_names_key = tuple(hp_names)
+            importances_[hp_names_key] = values
 
         return importances_
@@ -883,7 +909,7 @@

Source code for deepcave.evaluators.fanova

     '''
     def marginal_mean_variance_for_values(self, dimlist, values_to_predict):
         """
-        Returns the marginal of selected parameters for specific values
+        Return the marginal of selected parameters for specific values
 
         Parameters
         ----------
@@ -906,7 +932,7 @@ 

Source code for deepcave.evaluators.fanova

 
     def get_most_important_pairwise_marginals(self, params=None, n=10):
         """
-        Returns the n most important pairwise marginals from the whole ConfigSpace.
+        Return the n most important pairwise marginals from the whole ConfigSpace.
 
         Parameters
         ----------
@@ -953,7 +979,7 @@ 

Source code for deepcave.evaluators.fanova

 
     def get_triple_marginals(self, params=None):
         """
-        Returns the n most important pairwise marginals from the whole ConfigSpace
+        Return the n most important pairwise marginals from the whole ConfigSpace
 
         Parameters
         ----------
diff --git a/development/_modules/deepcave/evaluators/footprint.html b/development/_modules/deepcave/evaluators/footprint.html
new file mode 100644
index 00000000..3b1a291c
--- /dev/null
+++ b/development/_modules/deepcave/evaluators/footprint.html
@@ -0,0 +1,1374 @@
+
+
+
+  
+    
+    
+    deepcave.evaluators.footprint — DeepCAVE Documentation 1.2 documentation
+    
+  
+  
+
+    
+  
+  
+  
+
+    
+      
+
+    
+    
+    
+    
+    
+    
+    
+    
+  
+
+    
+    
+    
+    
+    
+    
+    
+    
+
+    
+    
+  
+  
+    
+    
+
+    
+    
+    
+
+    
+
+ + + +

DeepCAVE Documentation

+
v1.2
+
+ + + + +
+ +
+ + + + + + +
+ +
+ +

Source code for deepcave.evaluators.footprint

+#  noqa: D400
+"""
+# Footprint
+
+This module provides utilities for creating a footprint of a run.
+It uses multidimensional scaling (MDS).
+It also provides utilities to get the surface and the points of the plot.
+
+
+## Classes
+    - Footprint: Can train and create a footprint of a run.
+"""
+
+from typing import List, Optional, Tuple, Union
+
+import numpy as np
+from ConfigSpace.hyperparameters import (
+    CategoricalHyperparameter,
+    Constant,
+    Hyperparameter,
+)
+from sklearn.ensemble import RandomForestRegressor
+from sklearn.manifold import MDS
+from tqdm import tqdm
+
+from deepcave.constants import BORDER_CONFIG_ID, RANDOM_CONFIG_ID
+from deepcave.runs import AbstractRun, Status
+from deepcave.runs.objective import Objective
+from deepcave.utils.configspace import sample_border_config, sample_random_config
+from deepcave.utils.logs import get_logger
+
+logger = get_logger(__name__)
+
+
+
+[docs] +class Footprint: + """ + Can train and create a footprint of a run. + + It uses multidimensional scaling (MDS). + Provides utilities to get the surface and the points of the plot. + + Properties + ---------- + run : AbstractRun + The AbstractRun used for the calculation of the footprint. + cs : ConfigurationSpace + The configuration space of the run. + """ + + def __init__(self, run: AbstractRun): + if run.configspace is None: + raise RuntimeError("The run needs to be initialized.") + + self.run = run + self.cs = run.configspace + + # Important parameters + is_categorical, depth = [], [] + for hp in self.cs.get_hyperparameters(): + if isinstance(hp, CategoricalHyperparameter): + is_categorical.append(True) + else: + is_categorical.append(False) + depth.append(self._get_depth(hp)) + + self._is_categorical = np.array(is_categorical) + self._depth = np.array(depth) + + # Global variables + self._distances: Optional[np.ndarray] = None + self._trained = False + self._reset() + + def _reset(self) -> None: + """Reset the footprint.""" + self._objective_model: Optional[RandomForestRegressor] = None + self._area_model: Optional[RandomForestRegressor] = None + self._config_ids: Optional[List[int]] = None + self._incumbent_id: Optional[int] = None + + # Those are used to fit the MDS (consists of random and border configs). + self._X: Optional[np.ndarray] = None + # Those are the fitted configs with shape (x, 2). + self._MDS_X: Optional[np.ndarray] = None + +
+[docs] + def calculate( + self, + objective: Objective, + budget: Union[int, float], + support_discretization: Optional[int] = 10, + rejection_rate: float = 0.01, + retries: int = 3, + exclude_configs: bool = False, + ) -> None: + """ + Calculate the distances and train the model. + + Parameters + ---------- + objective : Objective + Objective and color to show. + budget : Union[int, float] + All configurations with this budget are considered. + support_discretization : Optional[int], optional + Discretization steps for integer and float hyperparameter (HP) values. + Default is set to 10. + rejection_rate : float, optional + Rejection rate whether a configuration should be rejected or not. Internally, + the max distance is calculated and if a configuration has a distance smaller than + max distance * rejection_rate, the configuration is rejected. + Default is set to 0.01. + retries : int, optional + How many times to retry adding a new configuration. + Default is set to 3. + exclude_configs : bool, optional + Whether the configurations from the run should be excluded + in the multidimensional scaling (MDS). + This is particularly interesting if only the search space should be plotted. + Default is set to False. + """ + # Reset everything + self._reset() + self.cs.seed(0) + + # Get config rejection threshold + # If the distance between two configs is smaller than the threshold, the config + # is rejected + rejection_threshold = self._get_max_distance() * rejection_rate + + # Get encoded configs + data = self.run.get_encoded_data( + objective, budget, statuses=Status.SUCCESS, specific=False, include_config_ids=True + ) + hp_names = self.run.configspace.get_hyperparameter_names() + + # Make numpy arrays + X = data[hp_names].to_numpy() + Y = data[objective.name].to_numpy() + config_ids = data["config_id"].values.tolist() + + # Get the incumbent + incumbent_config, _ = self.run.get_incumbent(objective, budget) + self._incumbent_id = self.run.get_config_id(incumbent_config) + + # Reshape Y to 2D + Y = Y.reshape(-1, 1) + + # Init distances + self._init_distances(X, config_ids, exclude_configs=exclude_configs) + assert self._distances is not None + + border_generator = sample_border_config(self.cs) + random_generator = sample_random_config(self.cs, d=support_discretization) + + # Now the border and random configs are added + count_border = 0 + count_random = 0 + tries = 0 + logger.info("Starting to calculate distances and add border and random configurations...") + while True: + _configs = [] + _config_ids = [] + + try: + _configs += [next(border_generator)] + _config_ids += [BORDER_CONFIG_ID] + except StopIteration: + pass + + try: + _configs += [next(random_generator)] + _config_ids += [RANDOM_CONFIG_ID] + except StopIteration: + pass + + counter = 0 + for config, config_id in zip(_configs, _config_ids): + if config is None: + continue + + # Encode config + config_array = np.array(self.run.encode_config(config)) + rejected = self._update_distances(config_array, config_id, rejection_threshold) + if not rejected: + # Count + if config_id == BORDER_CONFIG_ID: + count_border += 1 + + if config_id == RANDOM_CONFIG_ID: + count_random += 1 + + counter += 1 + + # Abort criteria + # If there are no new configs + if counter == 0: + tries += 1 + else: + tries = 0 + + if tries >= retries: + break + + # Or if reach more than 4000 are reached (otherwise it takes too long) + if self._distances.shape[0] % 100 == 0: + logger.info(f"Found {self._distances.shape[0]} configurations...") + + if self._distances.shape[0] > 4000: + break + + logger.info(f"Added {count_border} border configs and {count_random} random configs.") + logger.info(f"Total configurations: {self._distances.shape[0]}.") + logger.info("Getting MDS data...") + + # Calculate MDS now to get 2D coordinates and set those points to reach them later. + MDS_X = self._get_mds() + self._MDS_X = MDS_X + + # But here's the catch: Get rid of border and random configs because + # the y values for them are not known. + # However, it makes no sense to train the RF if the configs are excluded + # which were evaluated. + if not exclude_configs: + self._train_on_objective(MDS_X[: len(X)], Y.ravel()) + self._trained = True + else: + self._trained = False + + # Train on areas can be done anytime. + self._train_on_areas()
+ + +
+[docs] + def get_surface( + self, details: float = 0.5, performance: bool = True + ) -> Tuple[List, List, List]: + """ + Get surface of the multidimensional scaling (MDS) plot. + + Parameters + ---------- + details : float, optional + Steps to create the meshgrid. By default 0.5. + performance : bool, optional + Whether to get the surface from the performance or the valid areas. + Default is set to True. + + Returns + ------- + Tuple[List, List, List] + x (1D), y (1D) and z (2D) arrays for heatmap. + + Raises + ------ + RuntimeError + If `calculate` was not called before. + RuntimeError + If evaluated configs weren't included. + """ + X = self._MDS_X + if X is None: + raise RuntimeError("You need to call `calculate` first.") + + if performance and not self._trained: + raise RuntimeError( + "You can not get the surface" "if you do not include evaluated configs." + ) + + # Create meshgrid + x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1 + y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1 + + num = int(20 * details) + 10 + x = np.linspace(x_min, x_max, num) + y = np.linspace(y_min, y_max, num) + x_mesh, y_mesh = np.meshgrid(x, y) + conc = np.c_[x_mesh.ravel(), y_mesh.ravel()] + + if performance: + model = self._objective_model + else: + model = self._area_model + + if model is None: + raise RuntimeError("You need to call `calculate` first.") + + z = model.predict(conc) + z = z.reshape(x_mesh.shape) + + return x.tolist(), y.tolist(), z.tolist()
+ + +
+[docs] + def get_points(self, category: str = "configs") -> Tuple[List[float], List[float], List[int]]: + """ + Return the points of the multidimensional scaling (MDS) plot. + + Parameters + ---------- + category : str, optional + Points of a specific category. Chose between `configs`, `borders`, `supports` + or `incumbents`. By default `configs`. + + Returns + ------- + Tuple[List[float], List[float], List[int]] + X, Y and config_ids as lists. + + Raises + ------ + RuntimeError + If category is not supported. + RuntimeError + If calculated wasn't called before. + """ + if category not in ["configs", "borders", "supports", "incumbents"]: + raise RuntimeError("Unknown category.") + + if self._MDS_X is None or self._config_ids is None: + raise RuntimeError("You need to call `calculate` first.") + + X = [] + Y = [] + config_ids = [] + for x, config_id in zip(self._MDS_X, self._config_ids): + if ( + (category == "configs" and config_id >= 0) + or (category == "borders" and config_id == BORDER_CONFIG_ID) + or (category == "incumbents" and config_id == self._incumbent_id) + or (category == "supports" and config_id == RANDOM_CONFIG_ID) + ): + x = x.tolist() + X += [x[0]] + Y += [x[1]] + config_ids += [config_id] + + return X, Y, config_ids
+ + + def _get_max_distance(self) -> float: + """ + Calculate the maximum distance between all configs. + + Basically, the number of Hyperparameters are just counted. + + Returns + ------- + float + Maximal distance between two configurations. + """ + # The number of hps is just counted + # Since X is normalized, 1 can just be added + max_distance = 0 + for hp in self.cs.get_hyperparameters(): + if isinstance(hp, CategoricalHyperparameter) or isinstance(hp, Constant): + continue + + max_distance += 1 + + return max_distance + + def _get_distance(self, x: np.ndarray, y: np.ndarray) -> float: + """ + Calculate distance between x and y. Both arrays must have the same length. + + Parameters + ---------- + x : np.ndarray + Configuration 1. + y : np.ndarray + Configuration 2. + + Returns + ------- + float + Distance from configuration 1 and configuration 2. + + Raises + ------ + RuntimeError + If calculate wasn't called first. + """ + if self._depth is None or self._is_categorical is None: + raise RuntimeError("You need to call `calculate` first.") + + d = np.abs(x - y) + d[np.isnan(d)] = 1 + d[np.logical_and(self._is_categorical, d != 0)] = 1 + d = np.sum(d / self._depth) + + return d + + def _get_distances(self, X: np.ndarray) -> np.ndarray: + """ + Get the distances between the configurations. + + Parameters + ---------- + X : np.ndarray + The configurations. + + Returns + ------- + np.ndarray + The calculated distances. + """ + n_configs = X.shape[0] + + # The distances are initiated + distances = np.zeros((n_configs, n_configs)) + + for i in tqdm(range(n_configs)): + for j in range(i + 1, n_configs): + d = self._get_distance(X[i, :], X[j, :]) + distances[i, j] = d + distances[j, i] = d + + return distances + + def _init_distances( + self, X: np.ndarray, config_ids: List[int], exclude_configs: bool = False + ) -> None: + """ + Initialize the distances. + + Parameters + ---------- + X : np.ndarray + Encoded data. + config_ids : List[int] + Corresponding configuration ids. + exclude_configs : bool, optional + Whether the passed X should be used or not. By default False. + """ + if not exclude_configs: + self._X = X.copy() + self._config_ids = config_ids + self._distances = self._get_distances(X) + logger.info(f"Added {len(config_ids)} configurations.") + else: + self._X = None + self._config_ids = [] + self._distances = np.zeros((0, 0)) + + def _update_distances( + self, + config: np.ndarray, + config_id: int, + rejection_threshold: Optional[float] = 0.0, + ) -> bool: + """ + Update the internal distance if the passed configuration is not rejected. + + Parameters + ---------- + config : np.ndarray + Configuration, which is tried to be added. + config_id : int + Corresponding configuration id. This is important for later identification + as the configuration might be a border or random configuration. + rejection_threshold : Optional[float], optional + Threshold for rejecting the configuration. By default 0.0. + + Returns + ------- + rejected : bool + Whether the configuration was rejected or not. + """ + X = self._X + + assert self._distances is not None + distances = self._distances + + if X is None: + X = np.array([[]]) + n_configs = 0 + else: + n_configs = X.shape[0] + + rejected = False + new_distances = np.zeros((n_configs + 1, n_configs + 1)) + + # In case X is not set + if n_configs == 0: + new_distances[0, 0] = 0 + else: + # Calculate distance to all configs + new_distances[:n_configs, :n_configs] = distances[:, :] + for j in range(n_configs): + d = self._get_distance(X[j, :], config) + if rejection_threshold is not None: + if d < rejection_threshold: + rejected = True + break + + # Add to new distances + new_distances[n_configs, j] = d + new_distances[j, n_configs] = d + + if not rejected: + # Add to X here + if X.shape[1] == 0: + X = np.array([config]) + else: + X = np.concatenate((X, np.array([config])), axis=0) + + self._X = X + # There is no += to a None, an Issue has already been created + if self._config_ids is not None: + self._config_ids += [config_id] + self._distances = new_distances + + return rejected + + def _get_depth(self, hp: Hyperparameter) -> int: + """ + Get depth (generations above) in configuration space of a given hyperparameter (HP). + + Parameters + ---------- + hp: Hyperparameter + name of Hyperparameter to inspect + + Returns + ------- + int + Depth of the Hyperparameter. + """ + parents = self.cs.get_parents_of(hp) + if not parents: + return 1 + + new_parents = parents + d = 1 + while new_parents: + d += 1 + old_parents = new_parents + new_parents = [] + for p in old_parents: + pp = self.cs.get_parents_of(p) + if pp: + new_parents.extend(pp) + else: + return d + + return d + + def _get_mds(self) -> np.ndarray: + """ + Perform multidimensional scaling (MDS) on the internal distances. + + Returns + ------- + np.ndarray + Numpy array with multidimensional scaling (MDS) coordinates in 2D. + + Raises + ------ + RuntimeError + When calculated wasn't called first. + """ + if self._distances is None: + raise RuntimeError("You need to call `calculate` first.") + + mds = MDS(n_components=2, dissimilarity="precomputed", random_state=0) + return mds.fit_transform(self._distances) + + def _train_on_objective(self, X: np.ndarray, Y: np.ndarray) -> None: + """ + Train the random forest on the performance. + + Parameters + ---------- + X : np.ndarray + Numpy array with multidimensional scaling (MDS) coordinates in 2D. + Y : np.ndarray + Numpy array with costs. + """ + logger.info("Training on objective...") + self._objective_model = RandomForestRegressor(random_state=0) + self._objective_model.fit(X, Y) + + def _train_on_areas(self) -> None: + """ + Train the random forest on the "valid" areas. + + Raises + ------ + RuntimeError + If calculated wasn't called first. + """ + if self._MDS_X is None: + raise RuntimeError("You need to call `calculate` first.") + + logger.info("Training on area...") + MDS_X = self._MDS_X + + # Basically, a grid has to be created here + x_min, x_max = MDS_X[:, 0].min() - 1, MDS_X[:, 0].max() + 1 + y_min, y_max = MDS_X[:, 1].min() - 1, MDS_X[:, 1].max() + 1 + + x = np.linspace(x_min, x_max, 20) + y = np.linspace(y_min, y_max, 20) + + X = [] + Y = [] + for x1, x2 in zip(x, x[1:]): + for y1, y2 in zip(y, y[1:]): + # Find center + center = [(x2 - x1) / 2 + x1, (y2 - y1) / 2 + y1] + value = 0 + for a, b in MDS_X: + # If it's in center add + if a >= x1 and a <= x2 and b >= y1 and b <= y2: + value = 1 + break + + X.append(center) + Y.append(value) + + X_array = np.array(X) + Y_array = np.array(Y) + + # Train the model + self._area_model = RandomForestRegressor(random_state=0) + self._area_model.fit(X_array, Y_array)
+ +
+ +
+ + + +
+
+ +
+ + +
+
+ + +
+
+ + + + + +
+
+ + \ No newline at end of file diff --git a/development/_modules/deepcave/evaluators/lpi.html b/development/_modules/deepcave/evaluators/lpi.html new file mode 100644 index 00000000..24d40079 --- /dev/null +++ b/development/_modules/deepcave/evaluators/lpi.html @@ -0,0 +1,1131 @@ + + + + + + + deepcave.evaluators.lpi — DeepCAVE Documentation 1.2 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +

DeepCAVE Documentation

+
v1.2
+
+ + + + +
+ +
+ + + + + + +
+ +
+ +

Source code for deepcave.evaluators.lpi

+#  noqa: D400
+"""
+# LPI
+
+This module provides utilities to calculate the local parameter importance (LPI).
+
+## Classes
+    - LPI: This class calculates the local parameter importance (LPI).
+"""
+
+from typing import Any, Dict, List, Optional, Tuple, Union
+
+import numpy as np
+from ConfigSpace import Configuration
+from ConfigSpace.c_util import change_hp_value, check_forbidden
+from ConfigSpace.exceptions import ForbiddenValueError
+from ConfigSpace.hyperparameters import CategoricalHyperparameter
+from ConfigSpace.util import impute_inactive_values
+
+from deepcave.constants import COMBINED_COST_NAME
+from deepcave.evaluators.epm.fanova_forest import FanovaForest
+from deepcave.runs import AbstractRun
+from deepcave.runs.objective import Objective
+
+
+# https://github.com/automl/ParameterImportance/blob/f4950593ee627093fc30c0847acc5d8bf63ef84b/pimp/evaluator/local_parameter_importance.py#L27
+
+[docs] +class LPI: + """ + Calculate the local parameter importance (LPI). + + Properties + ---------- + run : AbstractRun + The AbstractRun to get the importance from. + cs : ConfigurationSpace + The configuration space of the run. + hp_names : List[str] + The names of the Hyperparameters. + variances : Dict[Any, list] + The overall variances per tree. + importances : dict + The importances of the Hyperparameters. + continuous_neighbors : int + The number of neighbors chosen for continuous Hyperparameters. + incumbent : Configuration + The incumbent of the run. + default : Configuration + A configuration containing Hyperparameters with default values. + incumbent_array : numpy.ndarray + The internal vector representation of the incumbent. + seed : int + The seed. If not provided it will be random. + rs : RandomState + A random state with a given seed value. + """ + + def __init__(self, run: AbstractRun): + self.run = run + self.cs = run.configspace + self.hp_names = self.cs.get_hyperparameter_names() + self.variances: Optional[Dict[Any, List[Any]]] = None + self.importances: Optional[Dict[Any, Any]] = None + +
+[docs] + def calculate( + self, + objectives: Optional[Union[Objective, List[Objective]]] = None, + budget: Optional[Union[int, float]] = None, + continous_neighbors: int = 500, + n_trees: int = 10, + seed: int = 0, + ) -> None: + """ + Prepare the data and train a RandomForest model. + + Parameters + ---------- + objectives : Optional[Union[Objective, List[Objective]]], optional + Considered objectives. By default, None. If None, all objectives are considered. + budget : Optional[Union[int, float]], optional + Considered budget. By default, None. If None, the highest budget is chosen. + continuous_neighbors : int, optional + How many neighbors should be chosen for continuous hyperparameters (HPs). + By default, 500. + n_trees : int, optional + The number of trees for the fanova forest. + Default is 10. + seed : Optional[int], optional + The seed. By default None. If None, a random seed is chosen. + """ + if objectives is None: + objectives = self.run.get_objectives() + + if budget is None: + budget = self.run.get_highest_budget() + + # Set variables + self.continous_neighbors = continous_neighbors + self.incumbent, _ = self.run.get_incumbent(budget=budget) + self.default = self.cs.get_default_configuration() + self.incumbent_array = self.incumbent.get_array() + + self.seed = seed + self.rs = np.random.RandomState(seed) + + # Get data + df = self.run.get_encoded_data( + objectives=objectives, budget=budget, specific=True, include_combined_cost=True + ) + X = df[self.hp_names].to_numpy() + Y = df[COMBINED_COST_NAME].to_numpy() + + # Get model and train it + # Use same forest as for fanova + self._model = FanovaForest(self.cs, n_trees=n_trees, seed=seed) + self._model.train(X, Y) + + # Get neighborhood sampled on an unit-hypercube. + neighborhood = self._get_neighborhood() + + # The delta performance is needed from the default configuration and the incumbent + def_perf, def_var = self._predict_mean_var(self.default) + inc_perf, inc_var = self._predict_mean_var(self.incumbent) + delta = def_perf - inc_perf + + # These are used for plotting and hold the predictions for each neighbor of each parameter. + # That means performances holds the mean, variances the variance of the forest. + performances: Dict[str, List[np.ndarray]] = {} + variances: Dict[str, List[np.ndarray]] = {} + # These are used for importance and hold the corresponding importance/variance over + # neighbors. Only import if NOT quantifying importance via performance-variance across + # neighbors. + importances = {} + # Nested list of values per tree in random forest. + predictions: Dict[str, List[List[np.ndarray]]] = {} + + # Iterate over parameters + for hp_idx, hp_name in enumerate(self.incumbent.keys()): + if hp_name not in neighborhood: + continue + + performances[hp_name] = [] + variances[hp_name] = [] + predictions[hp_name] = [] + incumbent_added = False + incumbent_idx = 0 + + # Iterate over neighbors + for unit_neighbor, neighbor in zip(neighborhood[hp_name][0], neighborhood[hp_name][1]): + if not incumbent_added: + # Detect incumbent + if unit_neighbor > self.incumbent_array[hp_idx]: + performances[hp_name].append(inc_perf) + variances[hp_name].append(inc_var) + incumbent_added = True + else: + incumbent_idx += 1 + + # Create the neighbor-Configuration object + new_array = self.incumbent_array.copy() + new_array = change_hp_value(self.cs, new_array, hp_name, unit_neighbor, hp_idx) + new_config = impute_inactive_values(Configuration(self.cs, vector=new_array)) + + # Get the leaf values + x = np.array(new_config.get_array()) + leaf_values = self._model.get_leaf_values(x) + + # And the prediction/performance/variance + predictions[hp_name].append([np.mean(tree_pred) for tree_pred in leaf_values]) + performances[hp_name].append(np.mean(predictions[hp_name][-1])) + variances[hp_name].append(np.var(predictions[hp_name][-1])) + + if len(neighborhood[hp_name][0]) > 0: + neighborhood[hp_name][0] = np.insert( + neighborhood[hp_name][0], incumbent_idx, self.incumbent_array[hp_idx] + ) + neighborhood[hp_name][1] = np.insert( + neighborhood[hp_name][1], incumbent_idx, self.incumbent[hp_name] + ) + else: + neighborhood[hp_name][0] = np.array(self.incumbent_array[hp_idx]) + neighborhood[hp_name][1] = [self.incumbent[hp_name]] + + if not incumbent_added: + performances[hp_name].append(inc_perf) + variances[hp_name].append(inc_var) + + # After all neighbors are estimated, look at all performances except the incumbent + perf_before = performances[hp_name][:incumbent_idx] + perf_after = performances[hp_name][incumbent_idx + 1 :] + tmp_perf = perf_before + perf_after + + # Avoid division by zero + if delta == 0: + delta = 1 + + imp_over_mean = (np.mean(tmp_perf) - performances[hp_name][incumbent_idx]) / delta + imp_over_median = (np.median(tmp_perf) - performances[hp_name][incumbent_idx]) / delta + imp_over_max = (np.max(tmp_perf) - performances[hp_name][incumbent_idx]) / delta + + importances[hp_name] = np.array([imp_over_mean, imp_over_median, imp_over_max]) + + # Creating actual importance value (by normalizing over sum of vars) + num_trees = len(list(predictions.values())[0][0]) + hp_names = list(performances.keys()) + + overall_var_per_tree = {} + for hp_name in hp_names: + hp_variances = [] + for tree_idx in range(num_trees): + variance = np.var([neighbor[tree_idx] for neighbor in predictions[hp_name]]) + hp_variances += [variance] + + overall_var_per_tree[hp_name] = hp_variances + + # Sum up variances per tree across parameters + sum_var_per_tree = [ + sum([overall_var_per_tree[hp_name][tree_idx] for hp_name in hp_names]) + for tree_idx in range(num_trees) + ] + + # Normalize + overall_var_per_tree = { + p: [t / sum_var_per_tree[idx] for idx, t in enumerate(trees)] + for p, trees in overall_var_per_tree.items() + } + self.variances = overall_var_per_tree + self.importances = importances
+ + +
+[docs] + def get_importances(self, hp_names: List[str]) -> Dict[str, Tuple[float, float]]: + """ + Return the importances. + + Parameters + ---------- + hp_names : List[str] + Selected Hyperparameter names to get the importance scores from. + + Returns + ------- + importances : Dict[str, Tuple[float, float]] + Hyperparameter name and mean+var importance. + + Raises + ------ + RuntimeError + If the important scores are not calculated. + """ + if self.importances is None or self.variances is None: + raise RuntimeError("Importance scores must be calculated first.") + + importances: Dict[str, Tuple[float, float]] = {} + for hp_name in hp_names: + mean = 0 + std = 0 + + if hp_name in self.importances: + mean = self.importances[hp_name][0] + std = np.var(self.variances[hp_name]) + + # Use this to quantify importance via variance + # mean = np.mean(overall_var_per_tree[hp_name]) + + # Sometimes there is an ugly effect if default is better than + # incumbent. + if mean < 0: + mean = 0 + std = 0 + + importances[hp_name] = (mean, std) + + return importances
+ + + def _get_neighborhood(self) -> Dict[str, List[Union[np.ndarray, List[np.ndarray]]]]: + """ + Slight modification of ConfigSpace's get_one_exchange neighborhood. + + This orders the parameter values and samples more neighbors in one go. + Further each and every neighbor needs to be rigorously checked if it is forbidden or not. + + Returns + ------- + neighborhood : Dict[str, List[Union[np.ndarray, List[np.ndarray]]]] + The neighborhood. + """ + hp_names = self.cs.get_hyperparameter_names() + + neighborhood: Dict[str, List[Union[np.ndarray, List[np.ndarray]]]] = {} + for hp_idx, hp_name in enumerate(hp_names): + # Check if hyperparameter is active + if not np.isfinite(self.incumbent_array[hp_idx]): + continue + + hp_neighborhood = [] + checked_neighbors = [] # On unit cube + checked_neighbors_non_unit_cube = [] # Not on unit cube + hp = self.cs.get_hyperparameter(hp_name) + num_neighbors = hp.get_num_neighbors(self.incumbent[hp_name]) + + if num_neighbors == 0: + continue + elif np.isinf(num_neighbors): + if hp.log: + base = np.e + log_lower = np.log(hp.lower) / np.log(base) + log_upper = np.log(hp.upper) / np.log(base) + neighbors_range = np.logspace( + start=log_lower, + stop=log_upper, + num=self.continous_neighbors, + endpoint=True, + base=base, + ) + else: + neighbors_range = np.linspace(hp.lower, hp.upper, self.continous_neighbors) + neighbors = list(map(lambda x: hp._inverse_transform(x), neighbors_range)) + else: + neighbors = hp.get_neighbors(self.incumbent_array[hp_idx], self.rs) + + for neighbor in neighbors: + if neighbor in checked_neighbors: + continue + + new_array = self.incumbent_array.copy() + new_array = change_hp_value(self.cs, new_array, hp_name, neighbor, hp_idx) + + try: + new_config = Configuration(self.cs, vector=new_array) + hp_neighborhood.append(new_config) + new_config.is_valid_configuration() + check_forbidden(self.cs.forbidden_clauses, new_array) + + checked_neighbors.append(neighbor) + checked_neighbors_non_unit_cube.append(new_config[hp_name]) + except (ForbiddenValueError, ValueError): + pass + + sort_idx = list( + map(lambda x: x[0], sorted(enumerate(checked_neighbors), key=lambda y: y[1])) + ) + if isinstance(self.cs.get_hyperparameter(hp_name), CategoricalHyperparameter): + checked_neighbors_non_unit_cube_categorical = list( + np.array(checked_neighbors_non_unit_cube)[sort_idx] + ) + neighborhood[hp_name] = [ + np.array(checked_neighbors)[sort_idx], + checked_neighbors_non_unit_cube_categorical, + ] + else: + checked_neighbors_non_unit_cube_non_categorical = np.array( + checked_neighbors_non_unit_cube + )[sort_idx] + neighborhood[hp_name] = [ + np.array(checked_neighbors)[sort_idx], + checked_neighbors_non_unit_cube_non_categorical, + ] + + return neighborhood + + def _predict_mean_var(self, config: Configuration) -> Tuple[np.ndarray, np.ndarray]: + """ + Small wrapper to predict marginalized over instances. + + Parameter + --------- + config:Configuration + The self.incumbent of which the performance across the whole instance set is to be + estimated. + + Returns + ------- + mean: np.ndarray + The mean performance over the instance set. + var: np.ndarray + The variance over the instance set. If logged values are used, the variance might not + be able to be used. + """ + config = impute_inactive_values(config) + array = np.array([config.get_array()]) + mean, var = self._model.predict_marginalized(array) + + return mean.squeeze(), var.squeeze()
+ +
+ +
+ + + +
+
+ +
+ + +
+
+ + +
+
+ + + + + +
+
+ + \ No newline at end of file diff --git a/development/_modules/deepcave/layouts.html b/development/_modules/deepcave/layouts.html index 37786064..5ec88402 100644 --- a/development/_modules/deepcave/layouts.html +++ b/development/_modules/deepcave/layouts.html @@ -702,7 +702,14 @@

Source code for deepcave.layouts

-from abc import ABC, abstractmethod
+#  noqa: D400
+"""
+# Layout
+
+This module provides a foundation to create layouts.
+"""
+
+from abc import ABC, abstractmethod
 from typing import List, Union
 
 from dash.development.base_component import Component
@@ -714,18 +721,27 @@ 

Source code for deepcave.layouts

 
[docs] class Layout(ABC): + """ + A foundation for creating layouts. + + Properties + ---------- + logger : Logger + A logger for the class. + """ + def __init__(self) -> None: self.register_callbacks() self.logger = get_logger(self.__class__.__name__) @interactive - def register_callbacks(self) -> None: + def register_callbacks(self) -> None: # noqa: D102 pass
[docs] @abstractmethod - def __call__(self) -> Union[List[Component], Component]: + def __call__(self) -> Union[List[Component], Component]: # noqa: D102 pass
diff --git a/development/_modules/deepcave/layouts/not_found.html b/development/_modules/deepcave/layouts/not_found.html index a4f42193..a1ea3cdc 100644 --- a/development/_modules/deepcave/layouts/not_found.html +++ b/development/_modules/deepcave/layouts/not_found.html @@ -702,7 +702,16 @@

Source code for deepcave.layouts.not_found

-from typing import List
+#  noqa: D400
+"""
+# Not_Found
+
+This module defines a custom layout for displaying a "NotFound" page.
+
+## Classes
+    - NotFoundLayout: Define a custom "NotFound" layout.
+"""
+from typing import List
 
 from dash import html
 from dash.development.base_component import Component
@@ -713,13 +722,22 @@ 

Source code for deepcave.layouts.not_found

 
[docs] class NotFoundLayout(Layout): - def __init__(self, url) -> None: + """ + Define a custom "NotFound" layout. + + Properties + ---------- + url : str + The url that could not be reached. + """ + + def __init__(self, url: str) -> None: super().__init__() self.url = url
[docs] - def __call__(self) -> List[Component]: + def __call__(self) -> List[Component]: # noqa: D102 return [ html.H2("This page does not exists."), html.Div(f"Tried to reach {self.url}."), diff --git a/development/_modules/deepcave/layouts/sidebar.html b/development/_modules/deepcave/layouts/sidebar.html index 61120660..e79a536f 100644 --- a/development/_modules/deepcave/layouts/sidebar.html +++ b/development/_modules/deepcave/layouts/sidebar.html @@ -702,7 +702,19 @@

Source code for deepcave.layouts.sidebar

-from typing import Dict, List, Tuple, Union
+#  noqa: D400
+"""
+# SidebarLayout
+
+This module defines layout for the sidebar.
+
+Callbacks are registered and handled.
+
+## Classes
+    - SidebarLayout: Customize the Sidebar Layout.
+"""
+
+from typing import Dict, List, Tuple, Union
 
 import dash_bootstrap_components as dbc
 from dash import ALL, html
@@ -718,6 +730,19 @@ 

Source code for deepcave.layouts.sidebar

 
[docs] class SidebarLayout(Layout): + """ + Customize the Sidebar Layout. + + Callbacks are registered and handled. + + Properties + ---------- + plugins : Dict[str, List[Plugin]] + A dictionary of all categorized plugins. + nav_points : Dict[str, List[Tuple[str, str, str]]] + A dictionary with plugins attributes corresponding to their category. + """ + def __init__(self, categorized_plugins: Dict[str, List[Plugin]]) -> None: super().__init__() self.plugins = categorized_plugins @@ -731,13 +756,29 @@

Source code for deepcave.layouts.sidebar

 
         self.nav_points = nav_points
 
+
+[docs] def register_callbacks(self) -> None: + """Register the callbacks for the sidebar layout.""" # Update navigation items output = Output("navigation-items", "children") input = Input("on-page-load", "pathname") @app.callback(output, input) # type: ignore - def update_navigation_items(pathname): # type: ignore + def update_navigation_items(pathname: str) -> List[Component]: + """ + Update the navigation items. + + Parameters + ---------- + pathname : str + The pathname. + + Returns + ------- + List[Component] + The navigation items. + """ layouts = [] for category, points in self.nav_points.items(): layouts += [ @@ -749,7 +790,7 @@

Source code for deepcave.layouts.sidebar

                 ]
 
                 point_layouts = []
-                for (id, name, icon) in points:
+                for id, name, icon in points:
                     href = f"/plugins/{id}"
                     point_layouts += [
                         html.Li(
@@ -766,8 +807,6 @@ 

Source code for deepcave.layouts.sidebar

 
                 layouts += [html.Ul(className="nav flex-column", children=point_layouts)]
 
-            icon = {"data-feather": "file-text"}
-
             return html.Div(
                 className="position-sticky pt-3",
                 children=[
@@ -792,6 +831,7 @@ 

Source code for deepcave.layouts.sidebar

             State({"type": "cancel-job", "index": ALL}, "name"),
         )
         def delete_job(n_clicks, job_ids):  # type: ignore
+            """Delete the job from the queue."""
             for n_click, job_id in zip(n_clicks, job_ids):
                 if n_click is not None:
                     queue.delete_job(job_id)
@@ -801,6 +841,7 @@ 

Source code for deepcave.layouts.sidebar

 
         @app.callback(output, Trigger("global-update", "n_intervals"))  # type: ignore
         def update_queue_info() -> List[Component]:
+            """Update the information of the queue."""
             try:
                 all_jobs = [
                     queue.get_finished_jobs(),
@@ -812,7 +853,6 @@ 

Source code for deepcave.layouts.sidebar

 
                 collect = []
                 for jobs, status in zip(all_jobs, job_stati):
-
                     for job in jobs:
                         name = job.meta["display_name"]
                         job_id = job.id
@@ -873,11 +913,12 @@ 

Source code for deepcave.layouts.sidebar

 
                 return []
             except Exception:
-                return []
+                return []
+
[docs] - def __call__(self) -> Union[List[Component], Component]: + def __call__(self) -> Union[List[Component], Component]: # noqa: D102 return html.Nav( className="col-md-3 col-lg-2 d-md-block sidebar collapse", id="sidebarMenu", diff --git a/development/_modules/deepcave/plugins.html b/development/_modules/deepcave/plugins.html index 798146ec..4e1fb92c 100644 --- a/development/_modules/deepcave/plugins.html +++ b/development/_modules/deepcave/plugins.html @@ -702,7 +702,18 @@

Source code for deepcave.plugins

-from abc import ABC
+#  noqa: D400
+"""
+# Plugins
+
+This module provides a base class for all the available plugins.
+It provides different utilities to handle the plugins and check for compatibility in the runs.
+
+## Classes
+    - Plugin: Base class for all plugins.
+"""
+
+from abc import ABC
 from typing import Any, Callable, Dict, List, Optional, Tuple, Union
 
 import copy
@@ -737,24 +748,35 @@ 

Source code for deepcave.plugins

     """
     Base class for all plugins.
 
-    Attributes
+    Provides different utilities to handle the plugins and check for compatibility in the runs.
+
+    Properties
     ----------
-    id : int
-        Unique identifier for the plugin.
-    name : str
-        Name of the plugin. It is shown in the navigation and in the title.
-    description : str, optional
-        Description of the plugin. Displayed below the title.
-    icon : str, optional
-        FontAwesome icon. Shown in the navigation.
-    help : str, optional
-        Path to the help file.
-    button_caption : str, optional
-        Caption of the button. Shown only, if `StaticPlugin` is used.
-    activate_run_selection : bool, optional
+    inputs : List[Tuple[str, str, bool, Any]]
+        The registered inputs.
+    outputs : List[Tuple[str, str, bool]]
+        The registered outputs.
+    previous_inputs : Dict[str, Dict[str, str]]
+        The previous inputs.
+    raw_outputs : Optional[Dict[str, Any]]
+        The raw outputs.
+    activate_run_selection : bool
         Shows a dropdown to select a run in the inputs layout.
         This feature is useful if only one run could be viewed at a time.
         Moreover, it prevents the plugin to calculate results across all runs.
+    id : str
+        The unique identifier for the plugin.
+    runs : List[AbstractRun]
+        A list of the abstract runs.
+    groups : List[Group]
+        A list of the groups.
+    help : str
+        The path to the documentation.
+    name : str
+        The name of the plugin.
+        It is shown in the navigation and title.
+    button_caption : str
+        Caption of the button. Shown only, if `StaticPlugin` is used.
     """
 
     id: str
@@ -774,7 +796,7 @@ 

Source code for deepcave.plugins

         self.previous_inputs: Dict[str, Dict[str, str]] = {}
         self.raw_outputs: Optional[Dict[str, Any]] = None
 
-        # We have to call the output layout one time to register
+        # The output layout has to be called one time to register
         # the values
         # Problem: Inputs/Outputs can't be changed afterwards anymore.
 
@@ -794,7 +816,7 @@ 

Source code for deepcave.plugins

     @interactive
     def get_base_url(cls) -> str:
         """
-        Generates the url for the plugin.
+        Generate the url for the plugin.
 
         Returns
         -------
@@ -811,8 +833,9 @@ 

Source code for deepcave.plugins

     @staticmethod
     def check_run_compatibility(run: AbstractRun) -> bool:
         """
-        Checks if a run is compatible with this plugin. If a plugin is not compatible,
-        you can not select the run.
+        Check if a run is compatible with this plugin.
+
+        If a plugin is not compatible, you can not select the run.
 
         Note
         ----
@@ -835,7 +858,8 @@ 

Source code for deepcave.plugins

 [docs]
     def check_runs_compatibility(self, runs: List[AbstractRun]) -> None:
         """
-        This function is needed if all selected runs need something in common
+        Needed if all selected runs need something in common.
+
         (e.g. budget or objective). Since this function is called before the layout is created,
         it can be also used to set common values for the plugin.
 
@@ -862,8 +886,10 @@ 

Source code for deepcave.plugins

         type: Any = None,
     ) -> str:
         """
-        Registers an input variable for the plugin. It is important to register the inputs
-        because callbacks have to be defined before the server is started.
+        Register an input variable for the plugin.
+
+        It is important to register the inputs.
+        This is, because callbacks have to be defined before the server is started.
         After registering all inputs, an internal mapping is created.
 
         Parameters
@@ -871,7 +897,7 @@ 

Source code for deepcave.plugins

         id : str
             Specifies the id of the input.
         attributes : Union[str, List[str]], optional
-            Attributes which should be passed to the (dash) component, by default ("value",)
+            Attributes which should be passed to the (dash) component, by default ("value",).
         filter : bool, optional
             Specifies if the input is a filter. By default False.
         type : Any, optional
@@ -895,9 +921,9 @@ 

Source code for deepcave.plugins

             if key not in self.inputs:
                 self.inputs.append(key)
 
-        # We have to rearrange the inputs because `State`
-        # must follow all `Input`. Since all filters are `Input`, we have to
-        # shift them to the front.
+        # The inputs have to be rearranged, because `State`
+        # must follow all `Input`. Since all filters are `Input`, they have to
+        # be shifted to the front.
         self.inputs.sort(key=lambda x: x[2], reverse=True)
 
         return self.get_internal_input_id(id)
@@ -909,7 +935,7 @@

Source code for deepcave.plugins

         self, id: str, attributes: Union[str, List[str]] = "value", mpl: bool = False
     ) -> str:
         """
-        Registers an output variable for the plugin.
+        Register an output variable for the plugin.
 
         Parameters
         ----------
@@ -939,21 +965,35 @@ 

Source code for deepcave.plugins

         return self.get_internal_output_id(id)
+
+[docs] def get_internal_id(self, id: str) -> str: - return f"{self.id}-{id}" + """Get the internal id.""" + return f"{self.id}-{id}"
+ +
+[docs] def get_internal_input_id(self, id: str) -> str: - return f"{self.id}-{id}-input" + """Get the internal input id.""" + return f"{self.id}-{id}-input"
+ +
+[docs] def get_internal_output_id(self, id: str) -> str: - return f"{self.id}-{id}-output" + """Get the internal output id.""" + return f"{self.id}-{id}-output"
+
[docs] @interactive def register_callbacks(self) -> None: """ - Registers basic callbacks for the plugin. Following callbacks are registered: + Register basic callbacks for the plugin. + + Following callbacks are registered: - If inputs changes, the changes are pasted back. This is in particular interest if input dependencies are used. - Raw data dialog to display raw data. @@ -962,7 +1002,7 @@

Source code for deepcave.plugins

         Raises
         ------
         RuntimeError
-            _description_
+            If no run id is found.
         """
         from deepcave import app, c, run_handler
 
@@ -980,7 +1020,8 @@ 

Source code for deepcave.plugins

         if len(outputs) > 0:
 
             @app.callback(outputs, inputs)  # type: ignore
-            def plugin_input_update(pathname: str, *inputs_list: str) -> List[str]:
+            def plugin_input_update(pathname: str, *inputs_list: str) -> List[Optional[str]]:
+                """Update the input of the plugin."""
                 # Simple check if page was loaded for the first time
                 init = all(input is None for input in inputs_list)
 
@@ -996,10 +1037,10 @@ 

Source code for deepcave.plugins

                         # Overwrite/set the passed inputs
                         update_dict(inputs, passed_inputs)
 
-                        # Then we have to take care of the run_selection
+                        # Then the run_selection has to be taken care of
                         selected_run: Optional[AbstractRun] = None
                         if self.activate_run_selection:
-                            # If run_selection is active and we don't have an id, then
+                            # If run_selection is active and the id is not known, then
                             # the passed inputs have no use.
                             try:
                                 run_id = passed_inputs["run"]["value"]
@@ -1037,14 +1078,14 @@ 

Source code for deepcave.plugins

                             update_dict(inputs, new_inputs)
 
                         # Set not used inputs
-                        for (id, attribute, _, _) in self.inputs:
+                        for id, attribute, _, _ in self.inputs:
                             if id not in inputs:
                                 inputs[id] = {}
 
                             if attribute not in inputs[id]:
                                 inputs[id][attribute] = None
                     elif inputs is not None:
-                        # We have to update the options of the run selection here.
+                        # The options of the run selection have to be updated here.
                         # This is important if the user have added/removed runs.
                         if self.activate_run_selection:
                             run_value = inputs["run"]["value"]
@@ -1059,13 +1100,16 @@ 

Source code for deepcave.plugins

                             inputs["run"]["value"] = run_value
                 else:
                     # Map the list `inputs` to a dict.
-                    inputs = self._list_to_dict(inputs_list)  # type: ignore
+                    # inputs_list_as_list is necessary as new variable,
+                    # because inputs_list is a tuple and cant be passed to _list_to_dict.
+                    inputs_list_as_list = list(inputs_list)
+                    inputs = self._list_to_dict(inputs_list_as_list)
 
                     if len(self.previous_inputs) == 0:
                         self.previous_inputs = inputs.copy()
 
                     # Only work on copies.
-                    # We don't want the inputs dict to be changed by the user.
+                    # The inputs dict should not be changed by the user.
                     _previous_inputs = self.previous_inputs.copy()
                     _inputs = inputs.copy()
 
@@ -1079,9 +1123,9 @@ 

Source code for deepcave.plugins

 
                         # Reset everything if run name changed.
                         if _previous_run_id is not None and _previous_run_id != _run_id:
-                            # We can't use load_inputs here only
+                            # load_inputs cannot be used here, only
                             # because `run` would be removed.
-                            # Also: We want to keep the current run name.
+                            # Also: The current run name does not need to be kept.
                             update_dict(_inputs, self.load_inputs())
                             # Reset inputs
                             if "objective_id" in _inputs.keys():
@@ -1103,17 +1147,17 @@ 

Source code for deepcave.plugins

                         )
 
                         # Update dict
-                        # dict.update() remove keys, so we use our own method to do so
+                        # dict.update() removes keys, so our own method is used to do so
                         update_dict(inputs, user_dependencies_inputs)  # inplace operation
 
                 # Let's cast the inputs
                 inputs = self._cast_inputs(inputs)
 
                 # From dict to list
-                inputs_list = self._dict_to_list(inputs, input=True)  # type: ignore
+                inputs_list_from_dict = self._dict_to_list(inputs, input=True)
                 self.previous_inputs = inputs
 
-                return list(inputs_list)
+                return inputs_list_from_dict
 
         # Register modal for raw data here
         @app.callback(  # type: ignore
@@ -1125,6 +1169,7 @@ 

Source code for deepcave.plugins

             State(self.get_internal_id("raw_data"), "is_open"),
         )
         def toggle_raw_data_modal(n: Optional[int], is_open: bool) -> Tuple[bool, str]:
+            """Toggle the raw data modal."""
             code = ""
             if n:
                 if (out := self.raw_outputs) is not None:
@@ -1143,21 +1188,22 @@ 

Source code for deepcave.plugins

             Input(self.get_internal_id("show_help"), "n_clicks"),
             State(self.get_internal_id("help"), "is_open"),
         )
-        def toggle_help_modal(n: Optional[int], is_open: bool) -> Tuple[bool, str]:
+        def toggle_help_modal(n: Optional[int], is_open: bool) -> bool:
+            """Toggle the help modal."""
             if n:
                 return not is_open
-
             return is_open
 
         # Register callback to click on configurations
-        for (id, *_) in self.outputs:
+        for id, *_ in self.outputs:
             internal_id = self.get_internal_output_id(id)
 
             @app.callback(
                 Output(internal_id, "clickData"),
                 Input(internal_id, "clickData"),
-            )
-            def go_to_configuration(click_data):  # type: ignore
+            )  # type: ignore
+            def go_to_configuration(click_data: Any):
+                """Open link from hovertext."""
                 if click_data is not None:
                     # Get hovertext
                     try:
@@ -1179,7 +1225,7 @@ 

Source code for deepcave.plugins

         self, inputs: Dict[str, Dict[str, str]], last_inputs: Dict[str, Dict[str, str]]
     ) -> Tuple[bool, bool]:
         """
-        Checks if the inputs have changed.
+        Check if the inputs have changed.
 
         Parameters
         ----------
@@ -1197,11 +1243,10 @@ 

Source code for deepcave.plugins

         inputs_changed = False
         filters_changed = False
 
-        # If only filters changed, then we don't need to
+        # If only filters changed, there is no need to
         # calculate the results again.
         if last_inputs is not None:
-            for (id, attribute, filter, _) in self.inputs:
-
+            for id, attribute, filter, _ in self.inputs:
                 if self.activate_run_selection:
                     if id == "run":
                         continue
@@ -1217,26 +1262,44 @@ 

Source code for deepcave.plugins

     @interactive
     def _process_raw_outputs(
         self, inputs: Dict[str, Dict[str, str]], raw_outputs: Dict[str, Any]
-    ) -> Union[Any, List[Any]]:
+    ) -> Any:
+        """
+        Process the raw outputs and update the layout.
+
+        Parameters
+        ----------
+        inputs : Dict[str, Dict[str, str]]
+            The inputs for the passed runs.
+        raw_outputs : Dict[str, Any]
+            The raw outputs to process.
+
+        Returns
+        -------
+        Any
+            The processed outputs.
+        """
         from deepcave import c, run_handler
 
         # Use raw outputs to update our layout
         mpl_active = c.get("matplotlib-mode")
+        passed_runs: Union[List[AbstractRun], AbstractRun]
 
         if self.activate_run_selection:
             passed_runs = run_handler.get_run(inputs["run"]["value"])
             passed_outputs = raw_outputs[passed_runs.id]
         else:
-            passed_runs = self.all_runs  # type: ignore
+            passed_runs = self.all_runs
             passed_outputs = raw_outputs
 
         # Clean inputs
         cleaned_inputs = self._clean_inputs(inputs)
 
+        # passed runs could be a list, but load mpl outputs and load outputs do not
+        # accept lists, but expect single runs
         if mpl_active:
-            outputs = self.__class__.load_mpl_outputs(passed_runs, cleaned_inputs, passed_outputs)
+            outputs = self.__class__.load_mpl_outputs(passed_runs, cleaned_inputs, passed_outputs)  # type: ignore # noqa: E501
         else:
-            outputs = self.__class__.load_outputs(passed_runs, cleaned_inputs, passed_outputs)
+            outputs = self.__class__.load_outputs(passed_runs, cleaned_inputs, passed_outputs)  # type: ignore # noqa: E501
 
         logger.debug("Raw outputs processed successfully.")
 
@@ -1251,10 +1314,10 @@ 

Source code for deepcave.plugins

             if not isinstance(outputs, list):
                 outputs = [outputs]
 
-        # We have to add no_updates here for the mode we don't want
+        # no_updates has to be added here for the mode that is not wanted
         count_outputs = 0
         count_mpl_outputs = 0
-        for (_, _, mpl_mode) in self.outputs:
+        for _, _, mpl_mode in self.outputs:
             if mpl_mode:
                 count_mpl_outputs += 1
             else:
@@ -1273,8 +1336,9 @@ 

Source code for deepcave.plugins

     @interactive
     def _list_to_dict(self, values: List[str], input: bool = True) -> Dict[str, Dict[str, str]]:
         """
-        Maps the given values to a dict, regarding the sorting from
-        either self.inputs or self.outputs.
+        Map the given values to a dict.
+
+        Regarding the sorting from either self.inputs or self.outputs.
 
         Parameters
         ----------
@@ -1286,12 +1350,15 @@ 

Source code for deepcave.plugins

         Returns
         -------
         Dict[str, Dict[str, str]]
-            _description_
+            Dictionary containing the mapping information.
         """
+        # This is necessary, because of the conditional type of order
+        order: Union[List[Tuple[str, str, bool]], List[Tuple[str, str, bool, Any]]]
+
         if input:
             order = self.inputs
         else:
-            order = self.outputs  # type: ignore
+            order = self.outputs
 
         mapping: Dict[str, Any] = {}
         for value, (id, attribute, *_) in zip(values, order):
@@ -1307,8 +1374,9 @@ 

Source code for deepcave.plugins

         self, d: Dict[str, Dict[str, str]], input: bool = False
     ) -> List[Optional[str]]:
         """
-        Maps the given dict to a list, respecting the sorting from either
-        self.inputs or self.outputs.
+        Map the given dict to a list.
+
+        Respecting the sorting from either self.inputs or self.outputs.
 
         Parameters
         ----------
@@ -1324,13 +1392,16 @@ 

Source code for deepcave.plugins

         """
         from deepcave import c
 
+        # This is necessary, because of the conditional type of order
+        order: Union[List[Tuple[str, str, bool]], List[Tuple[str, str, bool, Any]]]
+
         if input:
             order = self.inputs
         else:
-            order = self.outputs  # type: ignore
+            order = self.outputs
 
         result: List[Optional[str]] = []
-        for (id, attribute, instance, *_) in order:
+        for id, attribute, instance, *_ in order:
             if not input:
                 # Instance is mlp_mode in case of outputs
                 # Simply ignore other outputs.
@@ -1346,28 +1417,33 @@ 

Source code for deepcave.plugins

         return result
 
     @interactive
-    def _dict_as_key(self, d: Dict[str, Any], remove_filters: bool = False) -> Optional[str]:
+    def _dict_as_key(self, d: Dict[str, Any], remove_filters: bool = False) -> str:
         """
-        Converts a dictionary to a key. Only ids from self.inputs are considered.
+        Convert a dictionary to a key. Only ids from self.inputs are considered.
 
         Parameters
         ----------
         d : Dict[str, Any]
             Dictionary to get the key from.
         remove_filters : bool, optional
-            Option wheather the filters should be included or not. By default False.
+            Option whether the filters should be included or not. By default False.
 
         Returns
         -------
         Optional[str]
             Key as string from the given dictionary. Returns none if `d` is not a dictionary.
+
+        Raises
+        ------
+        TypeError
+            If `d` is not a dictionary.
         """
         if not isinstance(d, dict):
-            return None
+            raise TypeError("d must be a dictionary.")
 
         new_d = copy.deepcopy(d)
         if remove_filters:
-            for (id, _, filter, _) in self.inputs:
+            for id, _, filter, _ in self.inputs:
                 if filter:
                     if id in new_d:
                         del new_d[id]
@@ -1376,8 +1452,10 @@ 

Source code for deepcave.plugins

 
     def _cast_inputs(self, inputs: Dict[str, Dict[str, str]]) -> Dict[str, Dict[str, str]]:
         """
-        Casts the inputs based on `self.inputs`. Background is that dash always casts integers/
-        booleans to strings. This method ensured that the correct types are returned.
+        Cast the inputs based on `self.inputs`.
+
+        Background is that dash always casts integers/booleans to strings.
+        This method ensures that the correct types are returned.
 
         Parameters
         ----------
@@ -1392,10 +1470,9 @@ 

Source code for deepcave.plugins

         casted_inputs: Dict[str, Dict[str, str]] = defaultdict(dict)
         for id, attributes in inputs.items():
             for attribute in attributes:
-
                 # Find corresponding input
                 type = None
-                for (id_, attribute_, _, type_) in self.inputs:
+                for id_, attribute_, _, type_ in self.inputs:
                     if id == id_ and attribute == attribute_:
                         type = type_
                         break
@@ -1410,8 +1487,9 @@ 

Source code for deepcave.plugins

 
     def _clean_inputs(self, inputs: Dict[str, Any]) -> Dict[str, Any]:
         """
-        Cleans the given inputs s.t. only the first value is used.
-        Also, boolean values are casted to booleans.
+        Clean the given inputs s.t. only the first value is used.
+
+        Also, boolean values are cast to booleans.
 
         Example
         -------
@@ -1425,16 +1503,19 @@ 

Source code for deepcave.plugins

 
         Parameters
         ----------
-        inputs (dict): Inputs to clean.
+        inputs : Dict[str, Any]
+            Inputs to clean.
 
-        Returns:
-            dict: Cleaned inputs.
+        Returns
+        -------
+        Dict[str, Any]
+            Cleaned inputs.
         """
         used_ids = []
         cleaned_inputs = {}
-        for (id, attribute, *_) in self.inputs:
-            # Since self.inputs is ordered, we use the first occuring attribute and add
-            # the id so it is not used again.
+        for id, attribute, *_ in self.inputs:
+            # Since self.inputs is ordered, the first occurring attribute is used and
+            # the id is added so it is not used again.
             if id not in used_ids:
                 i = inputs[id][attribute]
 
@@ -1449,23 +1530,47 @@ 

Source code for deepcave.plugins

 
         return cleaned_inputs
 
-    @property  # type: ignore
+    @property
     @interactive
     def runs(self) -> List[AbstractRun]:
+        """
+        Get the runs as a list.
+
+        Returns
+        -------
+        List[AbstractRun]
+            The list with the runs.
+        """
         from deepcave import run_handler
 
         return run_handler.get_runs()
 
-    @property  # type: ignore
+    @property
     @interactive
     def groups(self) -> List[Group]:
+        """
+        Get the groups as a list.
+
+        Returns
+        -------
+        List[Group]
+            The list with the groups.
+        """
         from deepcave import run_handler
 
         return run_handler.get_groups()
 
-    @property  # type: ignore
+    @property
     @interactive
     def all_runs(self) -> List[AbstractRun]:
+        """
+        Get all runs and include the groups as a list.
+
+        Returns
+        -------
+        List[AbstractRun]
+            The list with all runs and included groups.
+        """
         from deepcave import run_handler
 
         return run_handler.get_runs(include_groups=True)
@@ -1475,13 +1580,26 @@ 

Source code for deepcave.plugins

     @interactive
     def __call__(self, render_button: bool = False) -> List[Component]:
         """
-        Returns the components for the plugin. Basically, all blocks and elements of the plugin
-        are stacked-up here
+        Return the components for the plugin.
+
+        Basically, all blocks and elements of the plugin are stacked-up here.
+
+        Parameters
+        ----------
+        render_button : bool, optional
+            Whether to render the button or not. By default False.
 
         Returns
         -------
         List[Component]
             Layout as list of components.
+
+        Raises
+        ------
+        NotMergeableError
+            If runs are not compatible.
+        FileNotFoundError
+            If the help file can not be found.
         """
         from deepcave import c, notification
 
@@ -1563,7 +1681,7 @@ 

Source code for deepcave.plugins

             ],
         )
 
-        # We always have to render it because of the button.
+        # It always has to be rendered, because of the button.
         # Button tells us if the page was just loaded.
         components += [
             html.Div(
@@ -1579,7 +1697,27 @@ 

Source code for deepcave.plugins

             )
         ]
 
-        def register_in(a, b):  # type: ignore
+        def register_in(a: str, b: Union[List[str], str]) -> str:
+            """
+            Register the given input.
+
+            Note
+            ----
+            For more information, see 'register_input'.
+
+            Parameters
+            ----------
+            a : str
+                Specifies the id of the input.
+            b : Union[List[str], str]
+                Attributes which should be passed to the (dash) component, by default ("value",).
+
+            Returns
+            -------
+            str
+                Unique id for the input and plugin.
+                This is necessary because ids are defined globally.
+            """
             return self.register_input(a, b, filter=True)
 
         filter_layout = self.__class__.get_filter_layout(register_in)
@@ -1603,7 +1741,27 @@ 

Source code for deepcave.plugins

                 )
             ]
 
-        def register_out(a, b):  # type: ignore
+        def register_out(a: str, b: Union[List[str], str]) -> str:
+            """
+            Register the output.
+
+            Note
+            ----
+            For more information, see 'register_output'
+
+            Parameters
+            ----------
+            a : str
+                Specifies the id of the output.
+            b : Union[List[str], str]
+                Attribute.
+
+            Returns
+            -------
+            str
+                Unique id for the output and plugin.
+                This is necessary because ids are defined globally.
+            """
             return self.register_output(a, b, mpl=True)
 
         output_layout = self.__class__.get_mpl_output_layout(register_out)
@@ -1667,15 +1825,17 @@ 

Source code for deepcave.plugins

 [docs]
     @staticmethod
     @interactive
-    def get_run_input_layout(register: Callable[[str, Union[str, List[str]]], str]) -> Component:
+    def get_run_input_layout(register: Callable) -> Component:
         """
-        Generates the run selection input.
+        Generate the run selection input.
+
         This is only the case if `activate_run_selection` is True.
 
         Parameters
         ----------
-        register : Callable[[str, Union[str, List[str]]], str]
+        register : Callable
             The register method to register (user) variables.
+            For more information, see 'register_input'.
 
         Returns
         -------
@@ -1702,14 +1862,15 @@ 

Source code for deepcave.plugins

         check_run_compatibility: Callable[[AbstractRun], bool],
     ) -> Dict[str, Any]:
         """
-        Loads the options for `get_run_input_layout`.
+        Load the options for `get_run_input_layout`.
+
         Both runs and groups are displayed.
 
         Parameters
         ----------
-        runs : Dict[str, Run]
+        runs : List[AbstractRun]
             The runs to display.
-        groups : Dict[str, Group]
+        groups : List[Group]
             The groups to display.
         check_run_compatibility : Callable[[AbstractRun], bool]
             If a single run is compatible. If not, the run is not shown.
@@ -1719,7 +1880,6 @@ 

Source code for deepcave.plugins

         Dict[str, Any]
             Both runs and groups, separated by a separator.
         """
-
         labels = []
         values = []
         disabled = []
@@ -1759,7 +1919,8 @@ 

Source code for deepcave.plugins

     @interactive
     def get_selected_runs(self, inputs: Dict[str, Any]) -> List[AbstractRun]:
         """
-        Parses selected runs from inputs.
+        Parse selected runs from inputs.
+
         If self.activate_run_selection is set, return only selected run. Otherwise, return all
         possible runs.
 
@@ -1791,7 +1952,7 @@ 

Source code for deepcave.plugins

 
             # Also:
             # Remove `run` from inputs_key because
-            # we don't want the run names included.
+            # The runs name does not need to be included
             _inputs = inputs.copy()
             del _inputs["run"]
 
@@ -1805,6 +1966,7 @@ 

Source code for deepcave.plugins

     def load_inputs(self) -> Dict[str, Any]:
         """
         Load the content for the defined inputs in `get_input_layout` and `get_filter_layout`.
+
         This method is necessary to pre-load contents for the inputs. So, if the plugin is
         called for the first time or there are no results in the cache, the plugin gets its
         content from this method.
@@ -1826,7 +1988,9 @@ 

Source code for deepcave.plugins

         inputs: Dict[str, Any],
     ) -> Dict[str, Any]:
         """
-        Same as `load_inputs` but called after inputs have changed. Provides a lot of flexibility.
+        Load the content as in 'load_inputs' but called after inputs have changed.
+
+        Provides a lot of flexibility.
 
         Note
         ----
@@ -1835,7 +1999,7 @@ 

Source code for deepcave.plugins

 
         Parameters
         ----------
-        selected_run : Optional[Union[AbstractRun, List[AbstractRun]]], optional
+        run : Optional[Union[AbstractRun, List[AbstractRun]]], optional
             The selected run from the user. In case of `activate_run_selection`, only one run
             is passed. Defaults to None.
         previous_inputs : Dict[str, Any]
@@ -1854,14 +2018,15 @@ 

Source code for deepcave.plugins

 
[docs] @staticmethod - def get_input_layout(register: Callable[[str, Union[str, List[str]]], str]) -> List[Component]: + def get_input_layout(register: Callable) -> List[Component]: """ Layout for the input block. Parameters ---------- - register : Callable[[str, Union[str, List[str]]], str] + register : Callable The register method to register (user) variables. + For more information, see 'register_input'. Returns ------- @@ -1874,14 +2039,15 @@

Source code for deepcave.plugins

 
[docs] @staticmethod - def get_filter_layout(register: Callable[[str, Union[str, List[str]]], str]) -> List[Component]: + def get_filter_layout(register: Callable) -> List[Component]: """ Layout for the filter block. Parameters ---------- - register : Callable[[str, Union[str, List[str]]], str] + register : Callable The register method to register (user) variables. + For more information, see 'register_input'. Returns ------- @@ -1894,16 +2060,15 @@

Source code for deepcave.plugins

 
[docs] @staticmethod - def get_output_layout( - register: Callable[[str, Union[str, List[str]]], str] - ) -> Optional[Union[Component, List[Component]]]: + def get_output_layout(register: Callable) -> Optional[Union[Component, List[Component]]]: """ Layout for the output block. Parameters ---------- - register : Callable[[str, Union[str, List[str]]], str] + register : Callable The register method to register outputs. + For more information, see 'register_input'. Returns ------- @@ -1916,20 +2081,19 @@

Source code for deepcave.plugins

 
[docs] @staticmethod - def get_mpl_output_layout( - register: Callable[[str, Union[str, List[str]]], str] - ) -> Optional[Union[Component, List[Component]]]: + def get_mpl_output_layout(register: Callable) -> Optional[Union[Component, List[Component]]]: """ Layout for the matplotlib output block. Parameters ---------- - register : Callable[[str, Union[str, List[str]]], str] + register : Callable The register method to register outputs. + For more information, see 'register_input'. Returns ------- - Union[Component, List[Component]] + Optional[Union[Component, List[Component]]] Layout for the matplotlib output block. """ return None
@@ -1944,12 +2108,14 @@

Source code for deepcave.plugins

         outputs: Dict[str, Union[str, Dict[str, str]]],
     ) -> Union[Component, List[Component]]:
         """
-        Reads in the raw data and prepares them for the layout.
+        Read in the raw data and prepare them for the layout.
 
         Note
         ----
         The passed `inputs` are cleaned and therefore differs compared to `load_inputs` or
-        `load_dependency_inputs`. Please see `_clean_inputs` for more information.
+        `load_dependency_inputs`.
+        Inputs are cleaned s.t. only the first value is used.
+        Also, boolean values are casted to booleans.
 
         Parameters
         ----------
@@ -1979,12 +2145,13 @@ 

Source code for deepcave.plugins

         outputs: Dict[str, Union[str, Dict[str, str]]],
     ) -> Union[Component, List[Component]]:
         """
-        Reads in the raw data and prepares them for the layout.
+        Read in the raw data and prepare them for the layout.
 
         Note
         ----
         The passed `inputs` are cleaned and therefore differs compared to `load_inputs` or
-        `load_dependency_inputs`. Please see `_clean_inputs` for more information.
+        `load_dependency_inputs`. Inputs are cleaned s.t. only the first value is used.
+        Also, boolean values are casted to booleans.
 
         Parameters
         ----------
@@ -2010,7 +2177,7 @@ 

Source code for deepcave.plugins

     @staticmethod
     def process(run: AbstractRun, inputs: Dict[str, Any]) -> Dict[str, Any]:
         """
-        Returns raw data based on a run and input data.
+        Return raw data based on a run and input data.
 
         Warning
         -------
@@ -2019,7 +2186,8 @@ 

Source code for deepcave.plugins

         Note
         ----
         The passed `inputs` are cleaned and therefore differs compared to `load_inputs` or
-        `load_dependency_inputs`. Please see `_clean_inputs` for more information.
+        `load_dependency_inputs`. Inputs are cleaned s.t. only the first value is used.
+        Also, boolean values are casted to booleans.
 
         Parameters
         ----------
@@ -2043,7 +2211,8 @@ 

Source code for deepcave.plugins

         cls, runs: Union[AbstractRun, List[AbstractRun]], inputs: Dict[str, Any]
     ) -> Union[Dict[str, Any], Dict[str, Dict[str, Any]]]:
         """
-        Checks whether run selection is active and accepts either one or multiple runs at once.
+        Check whether run selection is active and accepts either one or multiple runs at once.
+
         Calls `process` internally.
 
         Parameters
@@ -2088,7 +2257,8 @@ 

Source code for deepcave.plugins

 [docs]
     def generate_inputs(self, **kwargs: Any) -> Dict[str, Any]:
         """
-        Generates inputs for the `process` and `load_outputs` required for api mode.
+        Generate inputs for the `process` and `load_outputs` required for api mode.
+
         The arguments are validated against the input schema.
 
         Note
@@ -2104,11 +2274,17 @@ 

Source code for deepcave.plugins

         -------
         Dict[str, Any]
             The inputs for the run.
+
+        Raises
+        ------
+        ValueError
+            If an unknown input is passed.
+            If an input is missing.
         """
         mapping = {}
-        for (id, attribute, *_) in self.inputs:
-            # Since `self.inputs` is ordered, we use the first occuring attribute and add
-            # the id so it is not used again.
+        for id, attribute, *_ in self.inputs:
+            # Since `self.inputs` is ordered, the first occurring attribute is used and
+            # the id is added, so it is not used again.
             if id not in mapping:
                 mapping[id] = attribute
 
diff --git a/development/_modules/deepcave/plugins/dynamic.html b/development/_modules/deepcave/plugins/dynamic.html
index 32e22b4d..de67c98e 100644
--- a/development/_modules/deepcave/plugins/dynamic.html
+++ b/development/_modules/deepcave/plugins/dynamic.html
@@ -702,8 +702,20 @@
               

Source code for deepcave.plugins.dynamic

-from abc import ABC
-from typing import List
+#  noqa: D400
+"""
+# Dynamic
+
+This module provides a plugin class for a dynamic plugin.
+
+Register and handle callbacks.
+
+## Classes
+    - DynamicPlugin: This class provides a dynamic plugin object.
+"""
+
+from abc import ABC
+from typing import Any, List
 
 from dash.dependencies import Input, Output
 from dash.development.base_component import Component
@@ -715,6 +727,27 @@ 

Source code for deepcave.plugins.dynamic

 
[docs] class DynamicPlugin(Plugin, ABC): + """ + Provide a dynamic plugin object. + + Register and handle callbacks. + + Properties + ---------- + outputs : List[Tuple[str, str, bool]] + The registered outputs. + inputs : List[Tuple[str, str, bool, Any]] + The registered inputs. + id : str + The identifier of the Plugin. + logger : Logger + The logger for debugging information. + use_cache : bool + Defines whether to use the cache. + raw_outputs : Dict[str, Any] + A dictionary of the raw outputs. + """ + use_cache = True def __init__(self) -> None: @@ -724,6 +757,15 @@

Source code for deepcave.plugins.dynamic

 [docs]
     @interactive
     def register_callbacks(self) -> None:
+        """
+        Register basic callbacks for the plugin.
+
+        Following callbacks are registered:
+        - If inputs changes, the changes are pasted back.
+          This is in particular interest if input dependencies are used.
+        - Raw data dialog to display raw data.
+        - Callback to be redirected to the config if clicked on it.
+        """
         super().register_callbacks()
         from deepcave import app, c, rc
 
@@ -736,15 +778,26 @@ 

Source code for deepcave.plugins.dynamic

             inputs.append(Input(self.get_internal_input_id(id), attribute))
 
         # Register updates from inputs
-        @app.callback(outputs, inputs)
-        def plugin_output_update(_, *inputs_list):  # type: ignore
+        @app.callback(outputs, inputs)  # type: ignore
+        def plugin_output_update(_: Any, *inputs_list: str) -> Any:
             """
-            Parameters:
-                *inputs_list: Values from user.
+            Update the outputs.
+
+            Parameters
+            ----------
+            *inputs_list
+                Input values from user.
+
+            Returns
+            -------
+            Any
+                The raw outputs.
             """
             # Map the list `inputs_list` to a dict s.t.
             # it's easier to access them.
-            inputs = self._list_to_dict(inputs_list, input=True)
+            inputs = self._list_to_dict(list(inputs_list), input=True)
+            # The Optional[str] would need tobe changed to a str as return type annotation
+            # of the function _dict_as_key.
             inputs_key = self._dict_as_key(inputs, remove_filters=True)
             cleaned_inputs = self._clean_inputs(inputs)
             runs = self.get_selected_runs(inputs)
@@ -777,6 +830,16 @@ 

Source code for deepcave.plugins.dynamic

 [docs]
     @interactive
     def __call__(self) -> List[Component]:  # type: ignore
+        """
+        Return the components for the plugin.
+
+        Basically, all blocks and elements of the plugin are stacked-up here.
+
+        Returns
+        -------
+        List[Component]
+            Layout as list of components.
+        """
         return super().__call__(False)
diff --git a/development/_modules/deepcave/plugins/hyperparameter/importances.html b/development/_modules/deepcave/plugins/hyperparameter/importances.html index 40a2557e..fdc15420 100644 --- a/development/_modules/deepcave/plugins/hyperparameter/importances.html +++ b/development/_modules/deepcave/plugins/hyperparameter/importances.html @@ -702,17 +702,33 @@

Source code for deepcave.plugins.hyperparameter.importances

-import dash_bootstrap_components as dbc
+#  noqa: D400
+"""
+# Importances
+
+This module provides a plugin for the visualization of the importances.
+
+Provided utilities include getting input and output layout (filtered or non-filtered),
+processing the data and loading the outputs. Also provides a matplotlib version.
+
+## Classes
+    - Importances: This class provides a plugin for the visualization of the importances.
+"""
+
+from typing import Any, Callable, Dict, List, Optional, Union
+
+import dash_bootstrap_components as dbc
 import numpy as np
 import plotly.graph_objs as go
+from ConfigSpace import ConfigurationSpace, Constant
 from dash import dcc, html
 from dash.exceptions import PreventUpdate
-from ConfigSpace import ConfigurationSpace, Constant
 
 from deepcave.config import Config
 from deepcave.evaluators.fanova import fANOVA as GlobalEvaluator
 from deepcave.evaluators.lpi import LPI as LocalEvaluator
 from deepcave.plugins.static import StaticPlugin
+from deepcave.runs import AbstractRun
 from deepcave.utils.cast import optional_int
 from deepcave.utils.layout import get_checklist_options, get_select_options, help_button
 from deepcave.utils.styled_plot import plt
@@ -722,6 +738,13 @@ 

Source code for deepcave.plugins.hyperparameter.importances

[docs] class Importances(StaticPlugin): + """ + Provide a plugin for the visualization of the importances. + + Provided utilities include getting input/output layout, data processing + and loading outputs. Also provides a matplotlib version. + """ + id = "importances" name = "Importances" icon = "far fa-star" @@ -731,7 +754,21 @@

Source code for deepcave.plugins.hyperparameter.importances

[docs] @staticmethod - def get_input_layout(register): + def get_input_layout(register: Callable) -> List[Any]: + """ + Get the layout for the input block. + + Parameters + ---------- + register : Callable + Method to register (user) variables. + The register_input function is located in the Plugin superclass. + + Returns + ------- + List[Any] + Layout for the input block. + """ return [ html.Div( [ @@ -782,7 +819,21 @@

Source code for deepcave.plugins.hyperparameter.importances

[docs] @staticmethod - def get_filter_layout(register): + def get_filter_layout(register: Callable) -> List[html.Div]: + """ + Get the layout for the filter block. + + Parameters + ---------- + register : Callable + Method to register (user) variables. + The register_input function is located in the Plugin superclass. + + Returns + ------- + List[html.Div] + Layout for the filter block. + """ return [ html.Div( [ @@ -816,7 +867,19 @@

Source code for deepcave.plugins.hyperparameter.importances

[docs] - def load_inputs(self): + def load_inputs(self) -> Dict[str, Dict[str, Any]]: + """ + Load the content for the defined inputs in 'get_input_layout' and 'get_filter_layout'. + + This method is necessary to pre-load contents for the inputs. + If the plugin is called for the first time, or there are no results in the cache, + the plugin gets its content from this method. + + Returns + ------- + Dict[str, Dict[str, Any]] + Content to be filled. + """ method_labels = ["Local Parameter Importance (local)", "fANOVA (global)"] method_values = ["local", "global"] @@ -834,8 +897,28 @@

Source code for deepcave.plugins.hyperparameter.importances

[docs] - def load_dependency_inputs(self, run, _, inputs): - # Prepare objetives + def load_dependency_inputs(self, run, _: Any, inputs: Dict[str, Any]) -> Dict[str, Any]: # type: ignore # noqa: E501 + """ + Work like 'load_inputs' but called after inputs have changed. + + Note + ---- + Only the changes have to be returned. + The returned dictionary will be merged with the inputs. + + Parameters + ---------- + run + The selected run. + inputs : Dict[str, Any] + Current content of the inputs. + + Returns + ------- + Dict[str, Any] + A dictionary with the changes. + """ + # Prepare objectives objective_names = run.get_objective_names() objective_ids = run.get_objective_ids() objective_options = get_select_options(objective_names, objective_ids) @@ -890,7 +973,38 @@

Source code for deepcave.plugins.hyperparameter.importances

[docs] @staticmethod - def process(run, inputs): + def process(run: AbstractRun, inputs: Dict[str, Any]) -> Dict[str, Any]: + """ + Return raw data based on the run and input data. + + Warning + ------- + The returned data must be JSON serializable. + + Note + ---- + The passed inputs are cleaned and therefore differ + compared to 'load_inputs' or 'load_dependency_inputs'. + Please see '_clean_inputs' for more information. + + Parameters + ---------- + run : AbstractRun + The run to process. + inputs : Dict[str, Any] + The input data. + + Returns + ------- + Dict[str, Any] + A serialzied dictionary. + + Raises + ------ + RuntimeError + If the number of trees is not specified. + If the method is not found. + """ objective = run.get_objective(inputs["objective_id"]) method = inputs["method"] n_trees = inputs["n_trees"] @@ -898,14 +1012,15 @@

Source code for deepcave.plugins.hyperparameter.importances

if n_trees is None: raise RuntimeError("Please specify the number of trees.") - # Handle constant values in fANOVA: As the fANOVA implementation relies on pyrfr and pyrfr cannot be applied - # to constant hyperparameters (see https://github.com/automl/fanova/issues/81), as a workaround we remove - # constant hyperparameters before calculation. - # Note: This will break if there are conditions or forbiddens including constant hyperparameters. + # Handle constant values in fANOVA: As the fANOVA implementation relies on pyrfr + # and pyrfr cannot be applied to constant hyperparameters + # (see https://github.com/automl/fanova/issues/81), as a workaround constant + # hyperparameters are removed before calculation. + # Note: This will break if there are conditions or forbiddens including + # constant hyperparameters. hp_dict = run.configspace.get_hyperparameters_dict() if method == "global" and any([type(v) == Constant for v in hp_dict.values()]): - hp_dict_wo_const = { - k: v for k, v in hp_dict.items() if type(v) != Constant} + hp_dict_wo_const = {k: v for k, v in hp_dict.items() if type(v) != Constant} configspace_wo_const = ConfigurationSpace() for k in hp_dict_wo_const.keys(): configspace_wo_const.add_hyperparameter(hp_dict_wo_const[k]) @@ -915,14 +1030,17 @@

Source code for deepcave.plugins.hyperparameter.importances

configs_wo_const = [] for n in range(len(run.configs)): - configs_wo_const.append({k: v for k,v in run.configs[n].items() if k in hp_dict_wo_const.keys()}) - run.configs = configs_wo_const + configs_wo_const.append( + {k: v for k, v in run.configs[n].items() if k in hp_dict_wo_const.keys()} + ) + run.configs = dict(enumerate(configs_wo_const)) hp_names = run.configspace.get_hyperparameter_names() budgets = run.get_budgets(include_combined=True) + evaluator: Optional[Union[LocalEvaluator, GlobalEvaluator]] = None if method == "local": - # Intiatize the evaluator + # Initialize the evaluator evaluator = LocalEvaluator(run) elif method == "global": evaluator = GlobalEvaluator(run) @@ -932,25 +1050,63 @@

Source code for deepcave.plugins.hyperparameter.importances

# Collect data data = {} for budget_id, budget in enumerate(budgets): + assert isinstance(budget, (int, float)) evaluator.calculate(objective, budget, n_trees=n_trees, seed=0) importances = evaluator.get_importances(hp_names) data[budget_id] = importances - return data
+ return data # type: ignore
[docs] @staticmethod - def get_output_layout(register): + def get_output_layout(register: Callable) -> dcc.Graph: + """ + Get the layout for the output block. + + Parameters + ---------- + register : Callable + Method to register outputs. + The register_input function is located in the Plugin superclass. + + Returns + ------- + dcc.Graph + Layout for the output block. + """ return dcc.Graph(register("graph", "figure"), style={"height": Config.FIGURE_HEIGHT})
[docs] @staticmethod - def load_outputs(run, inputs, outputs): + def load_outputs(run, inputs, outputs) -> go.Figure: # type: ignore + """ + Read in raw data and prepare for layout. + + Note + ---- + The passed inputs are cleaned and therefore differ + compared to 'load_inputs' or 'load_dependency_inputs'. + Please see '_clean_inputs' for more information. + + Parameters + ---------- + run + The selected run. + inputs + Input and filter values from the user. + outputs + Raw output from the run. + + Returns + ------- + go.figure + The figure of the importances. + """ # First selected, should always be shown first selected_hp_names = inputs["hyperparameter_names"] selected_budget_ids = inputs["budget_ids"] @@ -1030,7 +1186,21 @@

Source code for deepcave.plugins.hyperparameter.importances

[docs] @staticmethod - def get_mpl_output_layout(register): + def get_mpl_output_layout(register: Callable) -> html.Img: + """ + Get the layout for the matplotlib output block. + + Parameters + ---------- + register : Callable + Method to register outputs. + The register_input function is located in the Plugin superclass. + + Returns + ------- + html.Img + The layout for the matplotlib output block. + """ return html.Img( id=register("graph", "src"), className="img-fluid", @@ -1040,7 +1210,23 @@

Source code for deepcave.plugins.hyperparameter.importances

[docs] @staticmethod - def load_mpl_outputs(run, inputs, outputs): + def load_mpl_outputs(run, inputs: Dict[str, Any], outputs): # type: ignore + """ + Read the raw data and prepare it for the layout. + + Parameters + ---------- + run + The selected run. + inputs : Dict[str, Any] + Input and filter values from the user. + outputs + Raw output from the run. + + Returns + ------- + The rendered matplotlib figure of the importances. + """ # First selected, should always be shown first selected_hp_names = inputs["hyperparameter_names"] selected_budget_ids = inputs["budget_ids"] @@ -1086,7 +1272,7 @@

Source code for deepcave.plugins.hyperparameter.importances

hp_name = "..." + hp_name[-18:] x_labels += [hp_name] - x = np.arange(len(x_labels)) + x_values = np.arange(len(x_labels)) plt.figure() for budget_id, values in data.items(): @@ -1098,10 +1284,10 @@

Source code for deepcave.plugins.hyperparameter.importances

budget = run.get_budget(budget_id, human=True) plt.bar( - x, + x_values, y, yerr=y_err, - color=plt.get_color(budget_id), + color=plt.get_color(budget_id), # type: ignore label=budget, error_kw=dict(lw=1, capsize=2, capthick=1), ) @@ -1109,10 +1295,10 @@

Source code for deepcave.plugins.hyperparameter.importances

plt.legend(title="Budgets") # Rotate x ticks - plt.xticks(x, x_labels, rotation=90) + plt.xticks(x_values, x_labels, rotation=90) plt.ylabel("Importance") - return plt.render()
+ return plt.render() # type: ignore
diff --git a/development/_modules/deepcave/plugins/hyperparameter/pdp.html b/development/_modules/deepcave/plugins/hyperparameter/pdp.html index 948fc0bf..706ee95d 100644 --- a/development/_modules/deepcave/plugins/hyperparameter/pdp.html +++ b/development/_modules/deepcave/plugins/hyperparameter/pdp.html @@ -702,7 +702,28 @@

Source code for deepcave.plugins.hyperparameter.pdp

-import dash_bootstrap_components as dbc
+#  noqa: D400
+"""
+# PartialDependencies
+
+This module provides utilities for generating Partial Dependency Plots (PDP).
+
+Provided utilities include getting input and output layout (filtered or non-filtered),
+processing the data and loading the outputs.
+
+## Classes
+    - PartialDependencies: Generate a Partial Dependency Plot (PDP).
+
+## Constants
+    GRID_POINTS_PER_AXIS : int
+    SAMPLES_PER_HP : int
+    MAX_SAMPLES : int
+    MAX_SHOWN_SAMPLES : int
+"""
+
+from typing import Any, Callable, Dict, List
+
+import dash_bootstrap_components as dbc
 import numpy as np
 import plotly.graph_objs as go
 from dash import dcc, html
@@ -724,6 +745,13 @@ 

Source code for deepcave.plugins.hyperparameter.pdp

[docs] class PartialDependencies(StaticPlugin): + """ + Generate Partial Dependency Plots (PDP). + + Provided utilities include getting input and output layout (filtered or non-filtered), + processing the data and loading the outputs. + """ + id = "pdp" name = "Partial Dependencies" icon = "fas fa-grip-lines" @@ -733,7 +761,21 @@

Source code for deepcave.plugins.hyperparameter.pdp

[docs] @staticmethod - def get_input_layout(register): + def get_input_layout(register: Callable) -> List[dbc.Row]: + """ + Get the layout for the input block. + + Parameters + ---------- + register : Callable + Method to register (user) variables. + The register_input function is located in the Plugin superclass. + + Returns + ------- + List[dbc.Row] + The layout for the input block. + """ return [ dbc.Row( [ @@ -798,7 +840,21 @@

Source code for deepcave.plugins.hyperparameter.pdp

[docs] @staticmethod - def get_filter_layout(register): + def get_filter_layout(register: Callable) -> List[Any]: + """ + Get the layout for the filter block. + + Parameters + ---------- + register : Callable + Method to register (user) variables. + The register_input function is located in the Plugin superclass. + + Returns + ------- + List[Any] + The layout for the filter block. + """ return [ dbc.Row( [ @@ -838,7 +894,19 @@

Source code for deepcave.plugins.hyperparameter.pdp

[docs] - def load_inputs(self): + def load_inputs(self) -> Dict[str, Dict[str, Any]]: + """ + Load the content for the defined inputs in 'get_input_layout' and 'get_filter_layout'. + + This method is necessary to pre-load contents for the inputs. + If the plugin is called for the first time, or there are no results in the cache, + the plugin gets its content from this method. + + Returns + ------- + Dict[str, Dict[str, Any]] + Content to be filled. + """ return { "show_confidence": {"options": get_select_options(binary=True), "value": "true"}, "show_ice": {"options": get_select_options(binary=True), "value": "true"}, @@ -847,7 +915,30 @@

Source code for deepcave.plugins.hyperparameter.pdp

[docs] - def load_dependency_inputs(self, run, previous_inputs, inputs): + def load_dependency_inputs(self, run, previous_inputs, inputs) -> Dict[str, Any]: # type: ignore # noqa: E501 + """ + Work like 'load_inputs' but called after inputs have changed. + + Note + ---- + Only the changes have to be returned. The returned dictionary + will be merged with the inputs. + + Parameters + ---------- + run + The selected run. + inputs + Current content of the inputs. + previous_inputs + Previous content of the inputs. + Not used in this specific function. + + Returns + ------- + Dict[str, Any] + Dictionary with the changes. + """ objective_names = run.get_objective_names() objective_ids = run.get_objective_ids() objective_options = get_select_options(objective_names, objective_ids) @@ -862,7 +953,6 @@

Source code for deepcave.plugins.hyperparameter.pdp

objective_value = inputs["objective_id"]["value"] budget_value = inputs["budget_id"]["value"] hp1_value = inputs["hyperparameter_name_1"]["value"] - hp2_value = inputs["hyperparameter_name_2"]["value"] if objective_value is None: objective_value = objective_ids[0] @@ -885,7 +975,37 @@

Source code for deepcave.plugins.hyperparameter.pdp

[docs] @staticmethod - def process(run, inputs): + def process(run, inputs) -> Dict[str, Any]: # type: ignore + """ + Return raw data based on a run and the input data. + + Warning + ------- + The returned data must be JSON serializable. + + Note + ---- + The passed inputs are cleaned and therefore differ + compared to 'load_inputs' or 'load_dependency_inputs'. + Please see '_clean_inputs' for more information. + + Parameters + ---------- + run + The run to process. + inputs + The input data. + + Returns + ------- + Dict[str, Any] + A serialized dictionary. + + Raises + ------ + RuntimeError + If the objective is None. + """ # Surrogate hp_names = run.configspace.get_hyperparameter_names() objective = run.get_objective(inputs["objective_id"]) @@ -917,7 +1037,7 @@

Source code for deepcave.plugins.hyperparameter.pdp

selected_hyperparameters += [hp2] num_samples = SAMPLES_PER_HP * len(X) - # We limit the samples to max 10k + # The samples are limited to max 10k if num_samples > MAX_SAMPLES: num_samples = MAX_SAMPLES @@ -933,7 +1053,7 @@

Source code for deepcave.plugins.hyperparameter.pdp

x = pdp.x_pdp.tolist() y = pdp.y_pdp.tolist() - # We have to cut the ICE curves because it's too much data + # The ICE curves have to be cut because it's too much data x_ice = pdp._ice.x_ice.tolist() y_ice = pdp._ice.y_ice.tolist() @@ -953,12 +1073,53 @@

Source code for deepcave.plugins.hyperparameter.pdp

[docs] @staticmethod - def get_output_layout(register): + def get_output_layout(register: Callable) -> dcc.Graph: + """ + Get the layout for the output block. + + Parameters + ---------- + register : Callable + Method to register outputs. + The register_input function is located in the Plugin superclass. + + Returns + ------- + dcc.Graph + Layout for the output block. + """ return dcc.Graph(register("graph", "figure"), style={"height": Config.FIGURE_HEIGHT})
+
+[docs] @staticmethod - def get_pdp_figure(run, inputs, outputs, show_confidence, show_ice, title=None): + def get_pdp_figure( # type: ignore + run, inputs, outputs, show_confidence, show_ice, title=None + ) -> go.Figure: + """ + Create a figure of the Partial Dependency Plot (PDP). + + Parameters + ---------- + run + The selected run. + inputs + Input and filter values from the user. + outputs + Raw output from the run. + show_confidence + Whether to show confidence in the plot. + show_ice + Whether to show ice curves in the plot. + title + Title of the plot. + + Returns + ------- + go.Figure + The figure of the Partial Dependency Plot (PDP). + """ # Parse inputs hp1_name = inputs["hyperparameter_name_1"] hp1_idx = run.configspace.get_idx_by_hyperparameter_name(hp1_name) @@ -1041,7 +1202,7 @@

Source code for deepcave.plugins.hyperparameter.pdp

"yaxis": { "title": objective_name, }, - "title": title + "title": title, } ) else: @@ -1068,19 +1229,43 @@

Source code for deepcave.plugins.hyperparameter.pdp

xaxis=dict(tickvals=x_tickvals, ticktext=x_ticktext, title=hp1_name), yaxis=dict(tickvals=y_tickvals, ticktext=y_ticktext, title=hp2_name), margin=Config.FIGURE_MARGIN, - title=title + title=title, ) ) figure = go.Figure(data=traces, layout=layout) save_image(figure, "pdp.pdf") - return figure + return figure
+
[docs] @staticmethod - def load_outputs(run, inputs, outputs): + def load_outputs(run, inputs, outputs): # type: ignore + """ + Read the raw data and prepare it for the layout. + + Note + ---- + The passed inputs are cleaned and therefore differ + compared to 'load_inputs' or 'load_dependency_inputs'. + Please see '_clean_inputs' for more information. + + Parameters + ---------- + run + The selected run. + inputs + Input and filter values from the user. + outputs + Raw output from the run. + + Returns + ------- + go.Figure + The figure of the Partial Dependency Plot (PDP). + """ show_confidence = inputs["show_confidence"] show_ice = inputs["show_ice"] diff --git a/development/_modules/deepcave/plugins/hyperparameter/symbolic_explanations.html b/development/_modules/deepcave/plugins/hyperparameter/symbolic_explanations.html index e1b25795..c8d7cdf7 100644 --- a/development/_modules/deepcave/plugins/hyperparameter/symbolic_explanations.html +++ b/development/_modules/deepcave/plugins/hyperparameter/symbolic_explanations.html @@ -853,7 +853,7 @@

Source code for deepcave.plugins.hyperparameter.symbolic_explanations

), dcc.Slider( id=register("parsimony", "value", type=int), - marks=dict([i, str(10**i)] for i in range(-8, 1)), + marks=dict((i, str(10**i)) for i in range(-8, 1)), min=-8, max=0, step=1, @@ -1165,10 +1165,10 @@

Source code for deepcave.plugins.hyperparameter.symbolic_explanations

f"{objective.name} = " f"{convert_symb(symb_model, n_decimals=3, hp_names=selected_hyperparameters)}" ) - except: + except Exception as e: conv_expr = ( "Conversion of the expression failed. Please try another seed or increase " - "the parsimony hyperparameter." + f"the parsimony hyperparameter: {e}" ) if len(conv_expr) > 150: diff --git a/development/_modules/deepcave/plugins/objective/configuration_cube.html b/development/_modules/deepcave/plugins/objective/configuration_cube.html index d85943f1..589dd232 100644 --- a/development/_modules/deepcave/plugins/objective/configuration_cube.html +++ b/development/_modules/deepcave/plugins/objective/configuration_cube.html @@ -702,7 +702,19 @@

Source code for deepcave.plugins.objective.configuration_cube

-from typing import Dict, Tuple
+#  noqa: D400
+"""
+# ConfigurationCube
+
+This module provides utilities for visualizing and creating a configuration cube.
+
+The configuration cube displays configurations and their score on the objective.
+
+## Classes
+    - ConfigurationCube: A plugin for visualizing a configuration cube.
+"""
+
+from typing import Any, Callable, Dict, List, Tuple
 
 import dash_bootstrap_components as dbc
 import numpy as np
@@ -713,7 +725,7 @@ 

Source code for deepcave.plugins.objective.configuration_cube

from deepcave.config import Config from deepcave.plugins.dynamic import DynamicPlugin -from deepcave.runs import Status +from deepcave.runs import AbstractRun, Status from deepcave.utils.compression import deserialize, serialize from deepcave.utils.layout import ( get_checklist_options, @@ -734,6 +746,8 @@

Source code for deepcave.plugins.objective.configuration_cube

[docs] class ConfigurationCube(DynamicPlugin): + """A plugin for visualizing a configuration cube.""" + id = "ccube" name = "Configuration Cube" icon = "fas fa-cube" @@ -743,7 +757,21 @@

Source code for deepcave.plugins.objective.configuration_cube

[docs] @staticmethod - def get_input_layout(register): + def get_input_layout(register: Callable) -> List[dbc.Row]: + """ + Get the layout for the input block. + + Parameters + ---------- + register : Callable + Method to register (user) variables. + The register_input function is located in the Plugin superclass. + + Returns + ------- + List[dbc.Row] + Layouts for the input block. + """ return [ dbc.Row( [ @@ -783,7 +811,21 @@

Source code for deepcave.plugins.objective.configuration_cube

[docs] @staticmethod - def get_filter_layout(register): + def get_filter_layout(register: Callable) -> List[html.Div]: + """ + Get the layout for the filter block. + + Parameters + ---------- + register : Callable + Method to register (user) variables. + The register_input function is located in the Plugin superclass. + + Returns + ------- + List[html.Div] + Layouts for the filter block. + """ return [ html.Div( [ @@ -812,7 +854,19 @@

Source code for deepcave.plugins.objective.configuration_cube

[docs] - def load_inputs(self): + def load_inputs(self) -> Dict[str, Any]: + """ + Load the content for the defined inputs in 'get_input_layout' and 'get_filter_layout'. + + This method is necessary to pre-load contents for the inputs. + So, if the plugin is called for the first time or there are no results in the cache, + the plugin gets its content from this method. + + Returns + ------- + Dict[str, Any] + The content to be filled. + """ return { "n_configs": {"min": 0, "max": 0, "marks": get_slider_marks(), "value": 0}, "hyperparameter_names": {"options": get_checklist_options(), "value": []}, @@ -821,8 +875,30 @@

Source code for deepcave.plugins.objective.configuration_cube

[docs] - def load_dependency_inputs(self, run, _, inputs): - # Prepare objetives + def load_dependency_inputs(self, run, _, inputs) -> Dict[str, Any]: # type: ignore + """ + Work like 'load_inputs' but called after inputs have changed. + + It is restricted to three Hyperparameters. + + Note + ---- + Only the changes have to be returned. + The returned dictionary will be merged with the inputs. + + Parameters + ---------- + run + The selected run. + inputs + Current content of the inputs. + + Returns + ------- + Dict[str, Any] + The dictionary with the changes. + """ + # Prepare objectives objective_names = run.get_objective_names() objective_ids = run.get_objective_ids() objective_options = get_select_options(objective_names, objective_ids) @@ -887,7 +963,32 @@

Source code for deepcave.plugins.objective.configuration_cube

[docs] @staticmethod - def process(run, inputs): + def process(run: AbstractRun, inputs: Dict[str, Any]) -> Dict[str, str]: + """ + Return raw data based on the run and input data. + + Warning + ------- + The returned data must be JSON serializable. + + Note + ---- + The passed inputs are cleaned and therefore differs compared to 'load_inputs' + or 'load_dependency_inputs'. + Please see '_clean_inputs' for more information. + + Parameters + ---------- + run : AbstractRun + The selected run. + inputs : Dict[str, Any] + The input data. + + Returns + ------- + Dict[str, str] + The serialized dictionary. + """ budget = run.get_budget(inputs["budget_id"]) objective = run.get_objective(inputs["objective_id"]) @@ -900,14 +1001,51 @@

Source code for deepcave.plugins.objective.configuration_cube

[docs] @staticmethod - def get_output_layout(register): + def get_output_layout(register: Callable) -> Tuple[dcc.Graph,]: + """ + Get the layout for the output block. + + Parameters + ---------- + register : Callable + Method to register output. + The register_output function is located in the Plugin superclass. + + Returns + ------- + Tuple[dcc.Graph,] + Layout for the output block. + """ return (dcc.Graph(register("graph", "figure"), style={"height": Config.FIGURE_HEIGHT}),)
[docs] @staticmethod - def load_outputs(run, inputs, outputs): + def load_outputs(run, inputs, outputs) -> go.Figure: # type: ignore + """ + Read in the raw data and prepares them for the layout. + + Note + ---- + The passed inputs are cleaned and therefore differs compared to 'load_inputs' + or 'load_dependency_inputs'. + Please see '_clean_inputs' for more information. + + Parameters + ---------- + run + The selected run. + inputs + Input and filter values from the user. + outputs + Raw output from the run. + + Returns + ------- + go.Figure + The output figure. + """ df = deserialize(outputs["df"], dtype=pd.DataFrame) hp_names = inputs["hyperparameter_names"] n_configs = inputs["n_configs"] @@ -943,7 +1081,7 @@

Source code for deepcave.plugins.objective.configuration_cube

# Transforms data to values values = np.transpose(np.array(data)).tolist() - # Now we want to filter duplicates + # Now the duplicates are filtered filtered_data: Dict[Tuple[int, float], Tuple] = {} for config_id, cost, v in zip(config_ids, costs, values): v = tuple(v) # Make hashable @@ -961,7 +1099,7 @@

Source code for deepcave.plugins.objective.configuration_cube

if old_cost > cost: continue - # Otherwise we have to replace + # Otherwise it is replaced del filtered_data[old_key] filtered_data[key] = v diff --git a/development/_modules/deepcave/plugins/objective/cost_over_time.html b/development/_modules/deepcave/plugins/objective/cost_over_time.html index 0d2743d7..927534ea 100644 --- a/development/_modules/deepcave/plugins/objective/cost_over_time.html +++ b/development/_modules/deepcave/plugins/objective/cost_over_time.html @@ -702,7 +702,20 @@

Source code for deepcave.plugins.objective.cost_over_time

-from typing import List
+#  noqa: D400
+"""
+# CostOverTime
+
+This module provides utilities for visualizing the cost over time.
+
+Visualized changes can be regarding to number of configurations or time.
+It includes a corresponding plugin class.
+
+## Classes
+    - CostOverTime: A plugin to provide a visualization for the cost over time.
+"""
+
+from typing import Any, Callable, Dict, List
 
 import dash_bootstrap_components as dbc
 import numpy as np
@@ -724,6 +737,17 @@ 

Source code for deepcave.plugins.objective.cost_over_time

[docs] class CostOverTime(DynamicPlugin): + """ + A plugin to provide a visualization for the cost over time. + + Properties + ---------- + objective_options : List[Dict[str, Any]] + A list of dictionaries of the objective options. + budget_options : List[Dict[str, Any]] + A list of dictionaries of the budget options. + """ + id = "cost_over_time" name = "Cost Over Time" icon = "fas fa-chart-line" @@ -732,6 +756,27 @@

Source code for deepcave.plugins.objective.cost_over_time

[docs] def check_runs_compatibility(self, runs: List[AbstractRun]) -> None: + """ + Check if the runs are compatible. + + This function is needed if all selected runs need something in common + (e.g. budget or objective). + Since this function is called before the layout is created, + it can be also used to set common values for the plugin. + + Parameters + ---------- + runs : List[AbstractRun] + A list containing the selected runs. + + Raises + ------ + NotMergeableError + If the meta data of the runs are not equal. + If the configuration spaces of the runs are not equal. + If the budgets of the runs are not equal. + If the objective of the runs are not equal. + """ check_equality(runs, objectives=True, budgets=True) # Set some attributes here @@ -749,7 +794,21 @@

Source code for deepcave.plugins.objective.cost_over_time

[docs] @staticmethod - def get_input_layout(register): + def get_input_layout(register: Callable) -> List[dbc.Row]: + """ + Get the layout for the input block. + + Parameters + ---------- + register : Callable + Method to register (user) variables. + The register_input function is located in the Plugin superclass. + + Returns + ------- + List[dbc.Row] + Layouts for the input block. + """ return [ dbc.Row( [ @@ -785,7 +844,21 @@

Source code for deepcave.plugins.objective.cost_over_time

[docs] @staticmethod - def get_filter_layout(register): + def get_filter_layout(register: Callable) -> List[Any]: + """ + Get the layout for the filter block. + + Parameters + ---------- + register : Callable + Method to register (user) variables. + The register_input function is located in the Plugin superclass. + + Returns + ------- + List[Any] + Layouts for the filter block. + """ return [ html.Div( [ @@ -826,7 +899,19 @@

Source code for deepcave.plugins.objective.cost_over_time

[docs] - def load_inputs(self): + def load_inputs(self) -> Dict[str, Any]: + """ + Load the content for the defined inputs in 'get_input_layout' and 'get_filter_layout'. + + This method is necessary to pre-load contents for the inputs. + So, if the plugin is called for the first time or there are no results in the cache, + the plugin gets its content from this method. + + Returns + ------- + Dict[str, Any] + The content to be filled. + """ return { "objective_id": { "options": self.objective_options, @@ -852,7 +937,32 @@

Source code for deepcave.plugins.objective.cost_over_time

[docs] @staticmethod - def process(run, inputs): + def process(run, inputs) -> Dict[str, Any]: # type: ignore + """ + Return raw data based on a run and input data. + + Warning + ------- + The returned data must be JSON serializable. + + Note + ---- + The passed inputs are cleaned and therefore differs compared to 'load_inputs' + or 'load_dependency_inputs'. + Please see '_clean_inputs' for more information. + + Parameters + ---------- + run : AbstractRun + The selected run to process. + inputs : Dict[str, Any] + The input data. + + Returns + ------- + Dict[str, Any] + A serialized dictionary. + """ budget = run.get_budget(inputs["budget_id"]) objective = run.get_objective(inputs["objective_id"]) @@ -872,14 +982,51 @@

Source code for deepcave.plugins.objective.cost_over_time

[docs] @staticmethod - def get_output_layout(register): + def get_output_layout(register: Callable) -> dcc.Graph: + """ + Get the layout for the output block. + + Parameters + ---------- + register : Callable + Method to register outputs. + The register_output function is located in the Plugin superclass. + + Returns + ------- + dcc.Graph + The layouts for the output block. + """ return dcc.Graph(register("graph", "figure"), style={"height": Config.FIGURE_HEIGHT})
[docs] @staticmethod - def load_outputs(runs, inputs, outputs): + def load_outputs(runs, inputs, outputs) -> go.Figure: # type: ignore + """ + Read in the raw data and prepare them for the layout. + + Note + ---- + The passed inputs are cleaned and therefore differs compared to 'load_inputs' + or 'load_dependency_inputs'. + Please see '_clean_inputs' for more information. + + Parameters + ---------- + runs : + The selected runs. + inputs : + The input and filter values from the user. + outputs : + The raw outputs from the runs. + + Returns + ------- + go.Figure + The output figure. + """ show_runs = inputs["show_runs"] show_groups = inputs["show_groups"] objective = None @@ -905,9 +1052,9 @@

Source code for deepcave.plugins.objective.cost_over_time

y_err = np.array(outputs[run.id]["costs_std"]) y_upper = list(y + y_err) y_lower = list(y - y_err) - y = list(y) + y_list = list(y) - hovertext = "" + hovertext = None hoverinfo = "skip" symbol = None mode = "lines" @@ -920,7 +1067,7 @@

Source code for deepcave.plugins.objective.cost_over_time

traces.append( go.Scatter( x=x, - y=y, + y=y_list, name=run.name, line_shape="hv", line=dict(color=get_color(idx)), diff --git a/development/_modules/deepcave/plugins/objective/parallel_coordinates.html b/development/_modules/deepcave/plugins/objective/parallel_coordinates.html index ed1def79..5360003e 100644 --- a/development/_modules/deepcave/plugins/objective/parallel_coordinates.html +++ b/development/_modules/deepcave/plugins/objective/parallel_coordinates.html @@ -702,7 +702,20 @@

Source code for deepcave.plugins.objective.parallel_coordinates

-from collections import defaultdict
+#  noqa: D400
+
+"""
+# ParallelCoordinates
+
+This module provides utilities for visualizing the parallel coordinates.
+
+## Classes
+    - ParallelCoordinates : Can be used for visualizing the parallel coordinates.
+"""
+
+from typing import Any, Callable, Dict, List
+
+from collections import defaultdict
 
 import dash_bootstrap_components as dbc
 import numpy as np
@@ -726,6 +739,8 @@ 

Source code for deepcave.plugins.objective.parallel_coordinates

[docs] class ParallelCoordinates(StaticPlugin): + """Can be used for visualizing the parallel coordinates.""" + id = "parallel_coordinates" name = "Parallel Coordinates" icon = "far fa-map" @@ -735,7 +750,21 @@

Source code for deepcave.plugins.objective.parallel_coordinates

[docs] @staticmethod - def get_input_layout(register): + def get_input_layout(register: Callable) -> List[Any]: + """ + Get the layout for the input block. + + Parameters + ---------- + register : Callable + Method to regsiter (user) variables. + The register_input function is located in the Plugin superclass. + + Returns + ------- + List[Any] + The layouts for the input block. + """ return [ dbc.Row( [ @@ -790,7 +819,21 @@

Source code for deepcave.plugins.objective.parallel_coordinates

[docs] @staticmethod - def get_filter_layout(register): + def get_filter_layout(register: Callable) -> List[Any]: + """ + Get the layout for the filter block. + + Parameters + ---------- + register : Callable + Method to register (user) variables. + The register_input function is located in the Plugin superclass. + + Returns + ------- + List[Any] + The layouts for the filter block. + """ return [ dbc.Row( [ @@ -834,7 +877,19 @@

Source code for deepcave.plugins.objective.parallel_coordinates

[docs] - def load_inputs(self): + def load_inputs(self) -> Dict[str, Dict[str, Any]]: + """ + Load the content for the defined inputs in 'get_input_layout' and 'get_filter_layout'. + + This method is necessary to pre-load contents for the inputs. + So, if the plugin is called for the first time or there are no results in the cache, + the plugin gets its content from this method. + + Returns + ------- + Dict[str, Dict[str, Any]] + Content to be filled. + """ return { "show_important_only": {"options": get_select_options(binary=True), "value": "true"}, "show_unsuccessful": {"options": get_select_options(binary=True), "value": "false"}, @@ -846,8 +901,28 @@

Source code for deepcave.plugins.objective.parallel_coordinates

[docs] - def load_dependency_inputs(self, run, _, inputs): - # Prepare objetives + def load_dependency_inputs(self, run, _, inputs) -> Dict[str, Any]: # type: ignore + """ + Work like 'load_inputs' but called after inputs have changed. + + Note + ---- + Only the changes have to be returned. + The returned dictionary will be merged with the inputs. + + Parameters + ---------- + run + The selected run. + inputs + Current content of the inputs. + + Returns + ------- + Dict[str, Any] + The dictionary with the changes. + """ + # Prepare objectives objective_names = run.get_objective_names() objective_ids = run.get_objective_ids() objective_options = get_select_options(objective_names, objective_ids) @@ -906,18 +981,43 @@

Source code for deepcave.plugins.objective.parallel_coordinates

[docs] @staticmethod - def process(run, inputs): + def process(run, inputs) -> Dict[str, Any]: # type: ignore + """ + Return raw data based on a run and input data. + + Warning + ------- + The returned data must be JSON serializable. + + Note + ---- + The passed inputs are cleaned and therefore differs compared to 'load_inputs' + or 'load_dependency_inputs'. + Please see '_clean_inputs' for more information. + + Parameters + ---------- + run : AbstractRun + The run to process. + inputs : Dict[str, Any] + The input data. + + Returns + ------- + Dict[str, Any] + The serialized dictionary. + """ budget = run.get_budget(inputs["budget_id"]) objective = run.get_objective(inputs["objective_id"]) df = serialize(run.get_encoded_data(objective, budget)) - result = {"df": df} + result: Dict[str, Any] = {"df": df} if inputs["show_important_only"]: # Let's run a quick fANOVA here evaluator = fANOVA(run) evaluator.calculate(objective, budget, n_trees=10, seed=0) - importances = evaluator.get_importances() - importances = {u: v[0] for u, v in importances.items()} + importances_dict = evaluator.get_importances() + importances = {u: v[0] for u, v in importances_dict.items()} important_hp_names = sorted(importances, key=lambda key: importances[key], reverse=True) result["important_hp_names"] = important_hp_names @@ -927,14 +1027,51 @@

Source code for deepcave.plugins.objective.parallel_coordinates

[docs] @staticmethod - def get_output_layout(register): + def get_output_layout(register: Callable) -> dcc.Graph: + """ + Get the layout for the output block. + + Parameters + ---------- + register : Callable + Method to register outputs. + The register_output function is located in the Plugin superclass. + + Returns + ------- + dcc.Graph + The layouts for the output block. + """ return dcc.Graph(register("graph", "figure"), style={"height": Config.FIGURE_HEIGHT})
[docs] @staticmethod - def load_outputs(run, inputs, outputs): + def load_outputs(run, inputs, outputs) -> go.Figure: # type: ignore + """ + Read in the raw data and prepare them for the layout. + + Note + ---- + The passed inputs are cleaned and therefore differs compared to 'load_inputs' + or 'load_dependency_inputs'. + Please see '_clean_inputs' for more information. + + Parameters + ---------- + run + The selected run. + inputs + The inputs and filter values fromt the user. + outputs + Raw output from the run. + + Returns + ------- + go.Figure + The output figure. + """ objective = run.get_objective(inputs["objective_id"]) objective_name = objective.name @@ -964,7 +1101,7 @@

Source code for deepcave.plugins.objective.parallel_coordinates

if b: objective_values += [value] - data = defaultdict(dict) + data: defaultdict = defaultdict(dict) for hp_name in hp_names: values = [] for hp_v, objective_v in zip(df[hp_name].values, df[objective_name].values): diff --git a/development/_modules/deepcave/plugins/objective/pareto_front.html b/development/_modules/deepcave/plugins/objective/pareto_front.html index c9d8f3d3..73705bcd 100644 --- a/development/_modules/deepcave/plugins/objective/pareto_front.html +++ b/development/_modules/deepcave/plugins/objective/pareto_front.html @@ -702,7 +702,19 @@

Source code for deepcave.plugins.objective.pareto_front

-from typing import List, Union
+#  noqa: D400
+"""
+# ParetoFront
+
+This module provides utilities for creating a visualization of the Pareto Front.
+
+It includes the corresponding Pareto Front plugin.
+
+## Classes
+    - ParetoFront: Generate an interactive Pareto Front visualization.
+"""
+
+from typing import Any, Callable, Dict, List, Literal, Union
 
 import dash_bootstrap_components as dbc
 import numpy as np
@@ -711,7 +723,7 @@ 

Source code for deepcave.plugins.objective.pareto_front

from deepcave.config import Config from deepcave.plugins.dynamic import DynamicPlugin -from deepcave.runs import Status, check_equality +from deepcave.runs import AbstractRun, Status, check_equality from deepcave.utils.layout import get_select_options, help_button from deepcave.utils.styled_plot import plt from deepcave.utils.styled_plotty import ( @@ -724,6 +736,17 @@

Source code for deepcave.plugins.objective.pareto_front

[docs] class ParetoFront(DynamicPlugin): + """ + Generate an interactive Pareto Front visualization. + + Properties + ---------- + objective_options : List[Dict[str, Any]] + A list of the objective options. + budget_options : List[Dict[str, Any]] + A list of the budget options. + """ + id = "pareto_front" name = "Pareto Front" icon = "fas fa-wind" @@ -731,7 +754,28 @@

Source code for deepcave.plugins.objective.pareto_front

[docs] - def check_runs_compatibility(self, runs): + def check_runs_compatibility(self, runs: List[AbstractRun]) -> None: + """ + Check if the runs are compatible. + + This function is needed if all selected runs need something in common + (e.g. budget or objective). + Since this function is called before the layout is created, + it can be also used to set common values for the plugin. + + Parameters + ---------- + runs : List[AbstractRun] + A list containing the selected runs. + + Raises + ------ + NotMergeableError + If the meta data of the runs are not equal. + If the configuration spaces of the runs are not equal. + If the budgets of the runs are not equal. + If the objective of the runs are not equal. + """ check_equality(runs, objectives=True, budgets=True) # Set some attributes here @@ -749,7 +793,21 @@

Source code for deepcave.plugins.objective.pareto_front

[docs] @staticmethod - def get_input_layout(register): + def get_input_layout(register: Callable) -> List[Any]: + """ + Get layout for the input block. + + Parameters + ---------- + register : Callable + Method to register (user) variables. + The register_input function is located in the Plugin superclass. + + Returns + ------- + List[Any] + The layouts for the input block. + """ return [ dbc.Row( [ @@ -799,7 +857,21 @@

Source code for deepcave.plugins.objective.pareto_front

[docs] @staticmethod - def get_filter_layout(register): + def get_filter_layout(register: Callable) -> List[Any]: + """ + Get the layout for the filter block. + + Parameters + ---------- + register : Callable + Method to register (user) variables. + The register_input function is located in the Plugin superclass. + + Returns + ------- + List[Any] + The layouts for the filter block. + """ return [ html.Div( [ @@ -845,7 +917,19 @@

Source code for deepcave.plugins.objective.pareto_front

[docs] - def load_inputs(self): + def load_inputs(self) -> Dict[str, Dict[str, Any]]: + """ + Load the content for the defined inputs in 'get_input_layout' and 'get_filter_layout'. + + This method is necessary to pre-load contents for the inputs. + So, if the plugin is called for the first time or there are no results in the cache, + the plugin gets its content from this method. + + Returns + ------- + Dict[str, Dict[str, Any]] + The content to be filled. + """ return { "objective_id_1": { "options": self.objective_options, @@ -868,7 +952,32 @@

Source code for deepcave.plugins.objective.pareto_front

[docs] @staticmethod - def process(run, inputs): + def process(run, inputs) -> Dict[str, Any]: # type: ignore + """ + Return raw data based on a run and input data. + + Warning + ------- + The returned data must be JSON serializable. + + Note + ---- + The passed inputs are cleaned and therefore differs compared to 'load_inputs' + or 'load_dependency_inputs'. + Please see '_clean_inputs' for more information. + + Parameters + ---------- + run : AbstractRun + The run to process. + inputs : Dict[str, Any] + The input data. + + Returns + ------- + Dict[str, Any] + The serialized dictionary. + """ # Get budget budget = run.get_budget(inputs["budget_id"]) @@ -892,15 +1001,14 @@

Source code for deepcave.plugins.objective.pareto_front

points = points[sorted_idx] config_ids = config_ids[sorted_idx] - is_front: Union[List, np.ndarray] = np.ones(points.shape[0], dtype=bool) + is_front: np.ndarray = np.ones(points.shape[0], dtype=bool) for point_idx, costs in enumerate(points): - if is_front[point_idx]: # Keep any point with a lower/upper cost # This loop is a little bit complicated than # is_front[is_front] = np.any(points[is_front] < c, axis=1) # because objectives can be optimized in different directions. - # We therefore have to check for each objective separately. + # Therefore it has to be checked for each objective separately. select = None for idx, (objective, cost) in enumerate(zip([objective_1, objective_2], costs)): if objective.optimize == "upper": @@ -928,14 +1036,51 @@

Source code for deepcave.plugins.objective.pareto_front

[docs] @staticmethod - def get_output_layout(register): + def get_output_layout(register: Callable) -> dcc.Graph: + """ + Get the layout for the output block. + + Parameters + ---------- + register : Callable + Method to register outputs. + The register_output function is located in the Plugin superclass. + + Returns + ------- + dcc.Graph + The layout for the output block. + """ return dcc.Graph(register("graph", "figure"), style={"height": Config.FIGURE_HEIGHT})
[docs] @staticmethod - def load_outputs(runs, inputs, outputs): + def load_outputs(runs, inputs, outputs) -> go.Figure: # type: ignore + """ + Read in the raw data and prepare them for the layout. + + Note + ---- + The passed inputs are cleaned and therefore differs compared to 'load_inputs' + or 'load_dependency_inputs'. + Please see '_clean_inputs' for more information. + + Parameters + ---------- + runs : + The selected runs. + inputs : + The input and filter values from the user. + outputs : + Raw outputs from the runs. + + Returns + ------- + go.Figure + The output figure. + """ show_all = inputs["show_all"] traces = [] @@ -982,7 +1127,7 @@

Source code for deepcave.plugins.objective.pareto_front

) ) - # Check if we need hv or vh + # Check if hv or vh is needed objective_1 = run.get_objective(inputs["objective_id_1"]) objective_2 = run.get_objective(inputs["objective_id_2"]) optimize1 = objective_1.optimize @@ -1031,7 +1176,21 @@

Source code for deepcave.plugins.objective.pareto_front

[docs] @staticmethod - def get_mpl_output_layout(register): + def get_mpl_output_layout(register: Callable) -> html.Img: + """ + Get the layout for the matplotlib output block. + + Parameters + ---------- + register : Callable + Method to register outputs. + The register_output function is located in the Plugin superclass. + + Returns + ------- + html.Img + The layout for the matplotlib output block. + """ return html.Img( id=register("graph", "src"), className="img-fluid", @@ -1041,7 +1200,29 @@

Source code for deepcave.plugins.objective.pareto_front

[docs] @staticmethod - def load_mpl_outputs(runs, inputs, outputs): + def load_mpl_outputs(runs, inputs, outputs): # type: ignore + """ + Read in the raw data and prepare them for the layout. + + Note + ---- + The passed inputs are cleaned and therefore differs compared to 'load_inputs' + or 'load_dependency_inputs'. + Please see '_clean_inputs' for more information. + + Parameters + ---------- + runs : + The selected runs. + inputs : + Input and filter values from the user. + outputs : + Raw outputs from the runs. + + Returns + ------- + The rendered matplotlib figure. + """ show_all = inputs["show_all"] == "true" plt.figure() @@ -1069,18 +1250,20 @@

Source code for deepcave.plugins.objective.pareto_front

x += [points[point_idx][0]] y += [points[point_idx][1]] - color = plt.get_color(idx) # , alpha=0.1) - color_pareto = plt.get_color(idx) + # , alpha=0.1) + color = plt.get_color(idx) # type: ignore + color_pareto = plt.get_color(idx) # type: ignore if show_all: plt.scatter(x, y, color=color, marker="o", alpha=0.1, s=3) - # Check if we need hv or vh + # Check if hv or vh is needed objective_1 = run.get_objective(inputs["objective_id_1"]) objective_2 = run.get_objective(inputs["objective_id_2"]) optimize1 = objective_1.optimize optimize2 = objective_2.optimize + line_shape: Union[Literal["post"], Literal["pre"], Literal["mid"]] if optimize1 == optimize2: if objective_1.optimize == "lower": line_shape = "post" @@ -1104,7 +1287,7 @@

Source code for deepcave.plugins.objective.pareto_front

plt.legend() - return plt.render()
+ return plt.render() # type: ignore
diff --git a/development/_modules/deepcave/plugins/static.html b/development/_modules/deepcave/plugins/static.html index 98be767d..cf4ff7dc 100644 --- a/development/_modules/deepcave/plugins/static.html +++ b/development/_modules/deepcave/plugins/static.html @@ -702,8 +702,21 @@

Source code for deepcave.plugins.static

-from abc import ABC
-from typing import Any, Callable, Dict, List
+#  noqa: D400
+"""
+# Static
+
+This module provides a plugin class for a static plugin.
+
+It provides an Enum used for the plugin state.
+
+## Classes
+    - PluginState: An Enum to define the state of the Plugin.
+    - StaticPlugin: This class provides a static plugin object.
+"""
+
+from abc import ABC
+from typing import Any, Callable, Dict, List, Optional, Tuple
 
 import traceback
 from enum import Enum
@@ -724,6 +737,8 @@ 

Source code for deepcave.plugins.static

 
[docs] class PluginState(Enum): + """An Enum to define the state of the Plugin.""" + UNSET = -1 READY = 0 NEEDS_PROCESSING = 1 @@ -734,7 +749,26 @@

Source code for deepcave.plugins.static

 
 def _process(
     process: Callable[[AbstractRun, Any], None], run: AbstractRun, inputs: Dict[str, Any]
-) -> Any:
+) -> None:
+    """
+    Process the run with the input data if possible.
+
+    Return raw data based on a run and input data.
+
+    Parameters
+    ----------
+    process : Callable[[AbstractRun, Any], None]
+        The process function.
+    run : AbstractRun
+        The run.
+    inputs : Dict[str, Any]
+        The inputs as a dictionary.
+
+    Raises
+    ------
+    Exception
+        If the process function fails.
+    """
     try:
         return process(run, inputs)
     except Exception:
@@ -746,7 +780,29 @@ 

Source code for deepcave.plugins.static

 [docs]
 class StaticPlugin(Plugin, ABC):
     """
+    Provide a static plugin object.
+
     Calculation with queue. Made for time-consuming tasks.
+    Register and handle callbacks.
+
+    Properties
+    ----------
+    outputs : List[Tuple[str, str, bool]]
+        The plugin specific outputs.
+    inputs : List[Tuple[str, str, bool, Any]]
+        The plugin specific inputs.
+    id : str
+        The plugin id.
+    raw_outputs : dict[str, Any]
+        The raw outputs of a run.
+    logger : Logger
+        The logger for the plugin.
+    name : str
+        The name of the plugin.
+    process : Callable
+        Return raw data based on a run and input data.
+    button_caption : str
+        The caption for the button.
     """
 
     def __init__(self) -> None:
@@ -754,8 +810,9 @@ 

Source code for deepcave.plugins.static

         self._setup()
 
     def _setup(self) -> None:
+        """Set up the plugin."""
         self._state = PluginState.UNSET  # Set in the main loop to track what's going on right now
-        self._previous_state = None  # Used for updating status
+        self._previous_state: Optional[PluginState] = None  # Used for updating status
         self._refresh_required = True
         self._reset_button = False
         self._blocked = False
@@ -764,6 +821,7 @@ 

Source code for deepcave.plugins.static

 [docs]
     @interactive
     def register_callbacks(self) -> None:
+        """Register different callbacks."""
         super().register_callbacks()
         self._callback_inputs_changed()
         self._callback_loop_update_status_label()
@@ -772,6 +830,7 @@ 

Source code for deepcave.plugins.static

 
     @interactive
     def _callback_inputs_changed(self) -> None:
+        """Handle callback if the inputs changed."""
         from deepcave import app, c, queue, rc, run_handler
 
         # Plugin specific outputs
@@ -789,13 +848,13 @@ 

Source code for deepcave.plugins.static

             inputs.append(Input(self.get_internal_input_id(id), attribute))
 
         # Register updates from inputs
-        @app.callback(outputs, inputs)
-        def plugin_process(n_clicks, _, *inputs_list):  # type: ignore
+        @app.callback(outputs, inputs)  # type: ignore
+        def plugin_process(n_clicks: int, _: Any, *inputs_list: str) -> Optional[Any]:
+            """Register updates from inputs."""
             self._blocked = True
-
             # Map the list `inputs_list` to a dict s.t.
             # it's easier to access them.
-            inputs = self._list_to_dict(inputs_list, input=True)
+            inputs = self._list_to_dict(list(inputs_list), input=True)
             inputs_key = self._dict_as_key(inputs, remove_filters=True)
             cleaned_inputs = self._clean_inputs(inputs)
             last_inputs = c.get("last_inputs", self.id)
@@ -810,7 +869,7 @@ 

Source code for deepcave.plugins.static

             raw_outputs = {}
             raw_outputs_available = True
             for run in runs:
-                raw_outputs[run.id] = rc.get(run, self.id, inputs_key)
+                raw_outputs[run.id] = rc.get(run, self.id, inputs_key)  # same problem
 
                 if raw_outputs[run.id] is None:
                     raw_outputs_available = False
@@ -837,11 +896,11 @@ 

Source code for deepcave.plugins.static

                 if button_pressed and self._state != PluginState.PROCESSING:
                     self.logger.debug("Button pressed.")
 
-                    # Check if we need to process
+                    # Check if processing is needed
                     for run in runs:
-                        job_id = self._get_job_id(run.id, inputs_key)
+                        job_id = self._get_job_id(run.id, inputs_key)  # same problem
 
-                        # We already got our results or it was already processed
+                        # Results are already achieved or it was already processed
                         if raw_outputs[run.id] is not None or queue.is_processed(job_id):
                             continue
 
@@ -882,6 +941,7 @@ 

Source code for deepcave.plugins.static

                             run = run_handler.get_run(job_run_id)
 
                             # Save results in cache
+                            # Same optional string problem
                             rc.set(run, job_plugin_id, job_inputs_key, job_run_outputs)
                             self.logger.debug(f"Job {job_id} cached.")
 
@@ -933,8 +993,16 @@ 

Source code for deepcave.plugins.static

         # Interval should not always run the main callback the whole time
         # Especially not if it's blocked because PreventUpdate
         # prevent output updates from previous callback calls.
-        @app.callback(output, inputs)
-        def plugin_check_blocked(_, data):  # type: ignore
+        @app.callback(output, inputs)  # type: ignore
+        def plugin_check_blocked(_: Any, data: Any) -> Any:
+            """
+            Check if blocked.
+
+            Raises
+            ------
+            PreventUpdate
+                If '_blocked' is True.
+            """
             if self._blocked:
                 raise PreventUpdate
 
@@ -954,15 +1022,16 @@ 

Source code for deepcave.plugins.static

 
         # Update status label
         # Register updates from inputs
-        @app.callback(output, input)
-        def plugin_update_status(_):  # type: ignore
+        @app.callback(output, input)  # type: ignore
+        def plugin_update_status(_: Any) -> Tuple[List[Any], Optional[Any], bool]:
+            """Update the status of the plugin."""
             button_text = [html.Span(self.button_caption)]
 
             if self._state == PluginState.UNSET:
                 # Disable and reset button
                 return button_text, None, True
 
-            # Important so we don't update the button every time (would result in an ugly spinner)
+            # Important so the button is not updated every time (would result in an ugly spinner)
             if self._previous_state == self._state:
                 raise PreventUpdate
 
@@ -973,8 +1042,8 @@ 

Source code for deepcave.plugins.static

                 self._previous_state == PluginState.PROCESSING
                 and self._state == PluginState.NEEDS_PROCESSING
             ):
-                # However: We have to unset the previous state so if we really change the inputs
-                # the visualizes will be updated.
+                # However: The previous state has to be unset, so if the inputs are really changed
+                # the visualizer will be updated.
                 self._previous_state = PluginState.UNSET
                 raise PreventUpdate
 
@@ -1003,12 +1072,37 @@ 

Source code for deepcave.plugins.static

             return button_text, button, disabled
 
     def _get_job_id(self, run_name: str, inputs_key: str) -> str:
+        """
+        Get the job id.
+
+        Parameters
+        ----------
+        run_name : str
+            The name of the run.
+        inputs_key : str
+            The inputs key.
+
+        Returns
+        -------
+        str
+            The job id.
+        """
         return f"{run_name}-{inputs_key}"
 
 
[docs] @interactive def __call__(self) -> List[Component]: # type: ignore + """ + Return the components for the plugin. + + Basically, all blocks and elements of the plugin are stacked-up here. + + Returns + ------- + List[Component] + Layout as list of components. + """ from deepcave.config import Config self._setup() diff --git a/development/_modules/deepcave/plugins/summary/configurations.html b/development/_modules/deepcave/plugins/summary/configurations.html index c5caf969..4465fe1d 100644 --- a/development/_modules/deepcave/plugins/summary/configurations.html +++ b/development/_modules/deepcave/plugins/summary/configurations.html @@ -702,7 +702,21 @@

Source code for deepcave.plugins.summary.configurations

-from collections import defaultdict
+#  noqa: D400
+"""
+# Configurations
+
+This module provides utilities to visualize the characteristics of a configuration within a run.
+
+The module provides a corresponding dynamic plugin.
+
+## Classes
+    - Configurations: Visualize the characteristics of a configuration.
+"""
+
+from typing import Any, Callable, Dict, List, Union
+
+from collections import defaultdict
 
 import dash_bootstrap_components as dbc
 import pandas as pd
@@ -727,6 +741,8 @@ 

Source code for deepcave.plugins.summary.configurations

[docs] class Configurations(DynamicPlugin): + """Visualize the characteristics of a configuration.""" + id = "configurations" name = "Configurations" icon = "fas fa-sliders-h" @@ -739,14 +755,14 @@

Source code for deepcave.plugins.summary.configurations

@staticmethod def get_link(run: AbstractRun, config_id: int) -> str: """ - Creates a link to a specific configuration. + Create a link to a specific configuration. Parameters ---------- run : AbstractRun - Selected run. + The selected run. config_id : int - Configuration, which should be visited. + Configuration which should be visited. Returns ------- @@ -767,7 +783,21 @@

Source code for deepcave.plugins.summary.configurations

[docs] @staticmethod - def get_input_layout(register): + def get_input_layout(register: Callable) -> List[html.Div]: + """ + Get the layout for the input block. + + Parameters + ---------- + register : Callable + Method to register (user) variables. + The register_input function is located in the Plugin superclass. + + Returns + ------- + List[html.Div] + The layouts for the input block. + """ return [ html.Div( [ @@ -780,7 +810,19 @@

Source code for deepcave.plugins.summary.configurations

[docs] - def load_inputs(self): + def load_inputs(self) -> Dict[str, Any]: + """ + Load the content for the defined inputs in 'get_input_layout' and 'get_filter_layout'. + + This method is necessary to pre-load contents for the inputs. + So, if the plugin is called for the first time or there are no results in the cache, + the plugin gets its content from this method. + + Returns + ------- + Dict[str, Any] + The content to be filled + """ return { "config_id": {"min": 0, "max": 0, "marks": get_slider_marks(), "value": 0}, }
@@ -788,7 +830,32 @@

Source code for deepcave.plugins.summary.configurations

[docs] - def load_dependency_inputs(self, run, previous_inputs, inputs): + def load_dependency_inputs( # type: ignore + self, run, previous_inputs: Dict[str, Any], inputs: Dict[str, Any] + ) -> Dict[str, Any]: + """ + Work like 'load_inputs' but called after inputs have changed. + + Note + ---- + Only the changes have to be returned. + The returned dictionary will be merged with the inputs. + + Parameters + ---------- + run : + The selected run. + previous_inputs : + Previous content of the inputs. + Not used in this specific function + inputs : Dict[str, Any] + The current content of the inputs. + + Returns + ------- + Dict[str, Any] + A dictionary with the changes. + """ # Get selected values config_id_value = inputs["config_id"]["value"] configs = run.get_configs() @@ -808,7 +875,32 @@

Source code for deepcave.plugins.summary.configurations

[docs] @staticmethod - def process(run, inputs): + def process(run, inputs) -> Dict[str, Any]: # type: ignore + """ + Return raw data based on a run and input data. + + Warning + ------- + The returned data must be JSON serializable. + + Note + ---- + The passed inputs are cleaned and therefore differs compared to 'load_inputs' + or 'load_dependency_inputs'. + Please see '_clean_inputs' for more information. + + Parameters + ---------- + run : + The selected run. + inputs : + The input data. + + Returns + ------- + Dict[str, Any] + A serialized dictionary. + """ selected_config_id = int(inputs["config_id"]) origin = run.get_origin(selected_config_id) objectives = run.get_objectives() @@ -827,8 +919,8 @@

Source code for deepcave.plugins.summary.configurations

str(original_run.path) + f" (Configuration ID: {original_config_id})" ] - performances = {} - performances_table_data = {"Budget": []} + performances: Dict[str, Dict[Union[int, float], float]] = {} + performances_table_data: Dict[str, List[Any]] = {"Budget": []} for objective_id, objective in enumerate(objectives): if objective.name not in performances: performances[objective.name] = {} @@ -855,20 +947,20 @@

Source code for deepcave.plugins.summary.configurations

# Let's start with the configspace X = [] - cs_table_data = {"Hyperparameter": [], "Value": []} - for config_id, config in run.get_configs().items(): - x = run.encode_config(config) + cs_table_data: Dict[str, List[Any]] = {"Hyperparameter": [], "Value": []} + for config_id, configuration in run.get_configs().items(): + x = run.encode_config(configuration) highlight = 0 if config_id == selected_config_id: highlight = 1 - for k, v in config.items(): + for k, v in configuration.items(): # Add accurate data for our table here cs_table_data["Hyperparameter"] += [k] cs_table_data["Value"] += [v] - # We simply add highlight as a new column + # Highlight is simply added as a new column x += [highlight] # And add it to the lists @@ -891,7 +983,23 @@

Source code for deepcave.plugins.summary.configurations

[docs] @staticmethod - def get_output_layout(register): + def get_output_layout( + register: Callable, + ) -> List[Any]: + """ + Get the layout for the output block. + + Parameters + ---------- + register : Callable + Method used to register outputs. + The register_input function is located in the Plugin superclass. + + Returns + ------- + List[Any] + The layouts for the outputs. + """ return [ html.Div(id=register("overview_table", "children"), className="mb-3"), html.Hr(), @@ -938,7 +1046,24 @@

Source code for deepcave.plugins.summary.configurations

@staticmethod - def _get_objective_figure(_, outputs, run): + def _get_objective_figure( + _: Any, outputs: Dict[str, Dict[str, Dict[Any, Any]]], run: AbstractRun + ) -> go.Figure: + """ + Get the figure for the visualization of the objectives. + + Parameters + ---------- + outputs : Dict[str, Dict[str, Dict[Any, Any]]] + Raw outputs from the run. + run : AbstractRun + The selected run. + + Returns + ------- + go.Figure + The figure of the objectives. + """ objective_data = [] for i, (metric, values) in enumerate(outputs["performances"].items()): trace_kwargs = { @@ -954,12 +1079,12 @@

Source code for deepcave.plugins.summary.configurations

trace = go.Scatter(**trace_kwargs) objective_data.append(trace) - layout_kwargs = { + layout_kwargs: Dict[str, Any] = { "margin": Config.FIGURE_MARGIN, "xaxis": {"title": "Budget", "domain": [0.05 * len(run.get_objectives()), 1]}, } - # We create an axis for each objective now + # An axis is created for each objective now for id, objective in enumerate(run.get_objectives()): yaxis = "yaxis" if id > 0: @@ -990,9 +1115,25 @@

Source code for deepcave.plugins.summary.configurations

return objective_figure @staticmethod - def _get_configspace_figure(inputs, outputs, run): - df = outputs["cs_df"] - df = deserialize(df, dtype=pd.DataFrame) + def _get_configspace_figure( + inputs: Any, outputs: Dict[str, str], run: AbstractRun + ) -> go.Figure: + """ + Get the figure for the visualization of the configuration space. + + Parameters + ---------- + outputs : Dict[str, str] + Raw outputs from the run. + run : AbstractRun + The selected run. + + Returns + ------- + go.Figure + The figure of the configuration space. + """ + df = deserialize(outputs["cs_df"], dtype=pd.DataFrame) highlighted = df["highlighted"].values hp_names = run.configspace.get_hyperparameter_names() @@ -1000,7 +1141,7 @@

Source code for deepcave.plugins.summary.configurations

# Get highlighted column highlighted_df = df[df["highlighted"] == 1] - data = defaultdict(dict) + data: defaultdict = defaultdict(dict) for hp_name in hp_names: data[hp_name]["values"] = df[hp_name].values data[hp_name]["label"] = hp_name @@ -1038,7 +1179,30 @@

Source code for deepcave.plugins.summary.configurations

[docs] @staticmethod - def load_outputs(run, inputs, outputs): + def load_outputs(run, inputs, outputs) -> List[Any]: # type: ignore + """ + Read in the raw data and prepare them for the layout. + + Note + ---- + The passed inputs are cleaned and therefore differs compared to 'load_inputs' + or 'load_dependency_inputs'. + Please see '_clean_inputs' for more information. + + Parameters + ---------- + run + The selected run. + inputs + Input and filter values from the user. + outputs + Raw output from the run. + + Returns + ------- + List[Any] + A list of the created tables containing output information. + """ config_id = inputs["config_id"] config = run.get_config(config_id) diff --git a/development/_modules/deepcave/plugins/summary/footprint.html b/development/_modules/deepcave/plugins/summary/footprint.html index a16f46d7..1bfa604a 100644 --- a/development/_modules/deepcave/plugins/summary/footprint.html +++ b/development/_modules/deepcave/plugins/summary/footprint.html @@ -702,7 +702,21 @@

Source code for deepcave.plugins.summary.footprint

-import dash_bootstrap_components as dbc
+# noqa: D400
+"""
+# FootPrint
+
+This module provides utilities to visualize a configuration footprint.
+
+The module contains a static plugin class for defining the footprint.
+
+## Classes
+    - FootPrint: A static plugin for the footprint of a configuration.
+"""
+
+from typing import Any, Callable, Dict, List
+
+import dash_bootstrap_components as dbc
 import plotly.graph_objs as go
 from dash import dcc, html
 
@@ -721,6 +735,12 @@ 

Source code for deepcave.plugins.summary.footprint

[docs] class FootPrint(StaticPlugin): + """ + Visualize the footprint of a configuration. + + A static plugin for the footprint. + """ + id = "footprint" name = "Configuration Footprint" icon = "fas fa-shoe-prints" @@ -730,7 +750,21 @@

Source code for deepcave.plugins.summary.footprint

[docs] @staticmethod - def get_input_layout(register): + def get_input_layout(register: Callable) -> List[Any]: + """ + Get the layout for the input block. + + Parameters + ---------- + register : Callable + Method to register (user) variables. + The register_input function is located in the Plugin superclass. + + Returns + ------- + List[Any] + The layouts for the input block. + """ return [ dbc.Row( [ @@ -786,8 +820,22 @@

Source code for deepcave.plugins.summary.footprint

[docs] @staticmethod - def get_filter_layout(register): - return ( + def get_filter_layout(register: Callable) -> List[dbc.Row]: + """ + Get layout for the filter block. + + Parameters + ---------- + register : Callable + Method to register (user) variables. + The register_input function is located in the Plugin superclass. + + Returns + ------- + List[dbc.Row] + The layouts for the filter block. + """ + return [ dbc.Row( [ dbc.Col( @@ -810,14 +858,26 @@

Source code for deepcave.plugins.summary.footprint

], md=6, ), - ], - ), - )
+ ] + ) + ]
[docs] - def load_inputs(self): + def load_inputs(self) -> Dict[str, Dict[str, Any]]: + """ + Load the content for the defined inputs in 'get_input_layout' and 'get_filter_layout'. + + This method is necessary to pre-load contents for the inputs. + So, if the plugin is called for the first time or there are no results in the cache, + the plugin gets its content from this method. + + Returns + ------- + Dict[str, Dict[str, Any]] + The content to be filled. + """ return { "details": {"value": 0.5}, "show_borders": {"options": get_select_options(binary=True), "value": "true"}, @@ -827,8 +887,31 @@

Source code for deepcave.plugins.summary.footprint

[docs] - def load_dependency_inputs(self, run, previous_inputs, inputs): - # Prepare objetives + def load_dependency_inputs(self, run, previous_inputs, inputs) -> Dict[str, Any]: # type: ignore # noqa: E501 + """ + Work like 'load_inputs' but called after inputs have changed. + + Note + ---- + Only the changes have to be returned. + The returned dictionary will be merged with the inputs. + + Parameters + ---------- + run : + The selected run. + previous_inputs : + Previous content of the inputs. + Not used in this specific function. + inputs : + Current content of the inputs. + + Returns + ------- + Dict[str, Any] + The dictionary with the changes. + """ + # Prepare objectives objective_names = run.get_objective_names() objective_ids = run.get_objective_ids() objective_options = get_select_options(objective_names, objective_ids) @@ -862,7 +945,32 @@

Source code for deepcave.plugins.summary.footprint

[docs] @staticmethod - def process(run, inputs): + def process(run, inputs) -> Dict[str, Any]: # type: ignore + """ + Return raw data based on a run and input data. + + Warning + ------- + The returned data must be JSON serializable. + + Note + ---- + The passed inputs are cleaned and therefore differs compared to 'load_inputs' + or 'load_dependency_inputs'. + Please see '_clean_inputs' for more information. + + Parameters + ---------- + run + The selected run. + inputs + The input data. + + Returns + ------- + Dict[str, Any] + A serialized dictionary. + """ budget = run.get_budget(inputs["budget_id"]) objective = run.get_objective(inputs["objective_id"]) details = inputs["details"] @@ -891,7 +999,21 @@

Source code for deepcave.plugins.summary.footprint

[docs] @staticmethod - def get_output_layout(register): + def get_output_layout(register: Callable) -> dbc.Tabs: + """ + Get the layout for the output block. + + Parameters + ---------- + register : Callable + Method for registering outputs. + The register_output function is located in the Plugin superclass. + + Returns + ------- + dbc.Tabs + The layout for the output block. + """ return dbc.Tabs( [ dbc.Tab( @@ -913,7 +1035,30 @@

Source code for deepcave.plugins.summary.footprint

[docs] @staticmethod - def load_outputs(run, inputs, outputs): + def load_outputs(run, inputs, outputs) -> List[Any]: # type: ignore + """ + Read in the raw data and prepare them for the layout. + + Note + ---- + The passed inputs are cleaned and therefore differs compared to 'load_inputs' + or 'load_dependency_inputs'. + Please see '_clean_inputs' for more information. + + Parameters + ---------- + run + The selected run. + inputs + Input and filter values from the user. + outputs + Raw output from the run. + + Returns + ------- + List[Any] + The plotly figure of the footprint performance and area. + """ objective = run.get_objective(inputs["objective_id"]) show_borders = inputs["show_borders"] show_supports = inputs["show_supports"] @@ -1005,7 +1150,21 @@

Source code for deepcave.plugins.summary.footprint

[docs] @staticmethod - def get_mpl_output_layout(register): + def get_mpl_output_layout(register: Callable) -> List[dbc.Tabs]: + """ + Get the layout for the matplotlib output block. + + Parameters + ---------- + register : Callable + Method to register the outputs. + The register_output function is located in the Plugin superclass. + + Returns + ------- + List[dbc.Tabs] + The layout for the output block. + """ return [ dbc.Tabs( [ @@ -1025,7 +1184,29 @@

Source code for deepcave.plugins.summary.footprint

[docs] @staticmethod - def load_mpl_outputs(run, inputs, outputs): + def load_mpl_outputs(run, inputs, outputs): # type: ignore + """ + Read in the raw data and prepare them for the layout. + + Note + ---- + The passed inputs are cleaned and therefore differs compared to 'load_inputs' + or 'load_dependency_inputs'. + Please see '_clean_inputs' for more information. + + Parameters + ---------- + run + The selected run. + inputs + Input and filter values from the user. + outputs + Raw outputs from the run. + + Returns + ------- + The rendered matplotlib figure of the footprint + """ objective = run.get_objective(inputs["objective_id"]) show_borders = inputs["show_borders"] show_supports = inputs["show_supports"] @@ -1070,13 +1251,13 @@

Source code for deepcave.plugins.summary.footprint

size = 10 marker_symbol = "^" - color = plt.get_color(color_id) + color = plt.get_color(color_id) # type: ignore plt.scatter(x, y, marker=marker_symbol, s=size, label=name, c=color) plt.axis("off") plt.legend(loc="lower right") - images += [plt.render()] + images += [plt.render()] # type: ignore return images
diff --git a/development/_modules/deepcave/plugins/summary/overview.html b/development/_modules/deepcave/plugins/summary/overview.html index 2f6c2e6f..0daf5e5c 100644 --- a/development/_modules/deepcave/plugins/summary/overview.html +++ b/development/_modules/deepcave/plugins/summary/overview.html @@ -702,7 +702,23 @@

Source code for deepcave.plugins.summary.overview

-import dash_bootstrap_components as dbc
+# noqa: D400
+"""
+# Overview
+
+This module provides utilities for visualizing an overview of the selected runs.
+
+It holds the most important information, e.g. meta data, objectives and statistics.
+
+The module includes a dynamic plugin for the overview.
+
+## Classes
+    - Overview: Visualize an overall overview of the selected run.
+"""
+
+from typing import Any, Callable, Dict, List
+
+import dash_bootstrap_components as dbc
 import numpy as np
 import plotly.graph_objs as go
 from ConfigSpace.hyperparameters import (
@@ -729,6 +745,8 @@ 

Source code for deepcave.plugins.summary.overview

[docs] class Overview(DynamicPlugin): + """Visualize an overall overview of the selected run.""" + id = "overview" name = "Overview" icon = "fas fa-search" @@ -739,7 +757,21 @@

Source code for deepcave.plugins.summary.overview

[docs] @staticmethod - def get_output_layout(register): + def get_output_layout(register: Callable) -> List[Any]: + """ + Get the layout for the output block. + + Parameters + ---------- + register : Callable + Method to register the outputs. + The register_input function is located in the Plugin superclass. + + Returns + ------- + List[Any] + The layouts for the output block. + """ return [ html.Div( id=register("card", "children"), @@ -782,7 +814,26 @@

Source code for deepcave.plugins.summary.overview

[docs] @staticmethod - def load_outputs(run, *_): + def load_outputs(run, *_: Any) -> List[Any]: # type: ignore + """ + Read in the raw data and prepare them for the layout. + + Note + ---- + The passed inputs are cleaned and therefore differs compared to 'load_inputs' + or 'load_dependency_inputs'. + Please see '_clean_inputs' for more information. + + Parameters + ---------- + run + The selected run. + + Returns + ------- + List[Any] + A list of the created tables of the overview. + """ # Get best cost across all objectives, highest budget incumbent, _ = run.get_incumbent() config_id = run.get_config_id(incumbent) @@ -853,7 +904,7 @@

Source code for deepcave.plugins.summary.overview

) # Meta - meta = {"Attribute": [], "Value": []} + meta: Dict[str, List[str]] = {"Attribute": [], "Value": []} for k, v in run.get_meta().items(): if k == "objectives": continue @@ -865,7 +916,7 @@

Source code for deepcave.plugins.summary.overview

meta["Value"].append(str(v)) # Objectives - objectives = {"Name": [], "Bounds": []} + objectives: Dict[str, List[str]] = {"Name": [], "Bounds": []} for objective in run.get_objectives(): objectives["Name"].append(objective.name) objectives["Bounds"].append(f"[{objective.lower}, {objective.upper}]") @@ -874,8 +925,13 @@

Source code for deepcave.plugins.summary.overview

budgets = run.get_budgets(include_combined=False) # Statistics - status_statistics = {} - status_details = {"Configuration ID": [], "Budget": [], "Status": [], "Error": []} + status_statistics: Dict[float, Dict[Status, int]] = {} + status_details: Dict[str, List[Any]] = { + "Configuration ID": [], + "Budget": [], + "Status": [], + "Error": [], + } for budget in budgets: budget = round(budget, 2) if budget not in status_statistics: @@ -952,8 +1008,8 @@

Source code for deepcave.plugins.summary.overview

str(round(count / len_trials * 100, 2)) + "%" for count in status_budget.values() ] status_budget_values_text = "/".join(status_budget_values) - status_budget_keys_text = [str(key) for key in status_budget.keys()] - status_budget_keys_text = "/".join(status_budget_keys_text) + status_budget_keys_text_list = [str(key) for key in status_budget.keys()] + status_budget_keys_text = "/".join(status_budget_keys_text_list) status_text = f""" Taking all evaluated trials into account, {successful_trials_rate}% have been successful. @@ -994,7 +1050,7 @@

Source code for deepcave.plugins.summary.overview

config_statistics["Z_labels"] = z_labels # Prepare configspace table - configspace = { + configspace: Dict[str, List] = { "Hyperparameter": [], "Possible Values": [], "Default": [], @@ -1002,7 +1058,6 @@

Source code for deepcave.plugins.summary.overview

} for hp_name, hp in run.configspace.get_hyperparameters_dict().items(): - log = False value = None if ( @@ -1021,12 +1076,12 @@

Source code for deepcave.plugins.summary.overview

value = str(hp.value) default = str(hp.default_value) - log = str(log) + log_str = str(log) configspace["Hyperparameter"].append(hp_name) configspace["Possible Values"].append(value) configspace["Default"].append(default) - configspace["Log"].append(log) + configspace["Log"].append(log_str) stats_data = [] for budget, stats in status_statistics.items(): diff --git a/development/_modules/deepcave/runs.html b/development/_modules/deepcave/runs.html index 82493f6f..1b6a8481 100644 --- a/development/_modules/deepcave/runs.html +++ b/development/_modules/deepcave/runs.html @@ -702,7 +702,19 @@

Source code for deepcave.runs

-from abc import ABC, abstractmethod
+#  noqa: D400
+"""
+# AbstractRun
+
+This module provides utilities to create and handle an abstract run.
+
+It provides functions to get information of the run, as well as the used objectives.
+
+## Classes
+    - AbstractRun: Create a new run.
+"""
+
+from abc import ABC, abstractmethod
 from typing import Any, Dict, Iterator, List, Optional, Tuple, Union
 
 from pathlib import Path
@@ -734,6 +746,37 @@ 

Source code for deepcave.runs

 
[docs] class AbstractRun(ABC): + """ + Create a new run. + + Provide functions to get information of the run, as well as the used objectives. + + Properties + ---------- + name : str + The name of the run. + path : Optional[Path] + The path to the run. + logger : Logger + The logger for the run. + meta: Dict[str, Any] + Contains the run's meta information. + configspace: ConfigSpace.ConfigurationSpace + The configuration space of the run. + configs: Dict[int, Configuration] + Contains the configurations. + origins: Dict[int, str] + The origin of the configuration. + models: Dict[int, Optional[Union[str, "torch.nn.Module"]]] + Contains the modules. + history: List[Trial] + The history of Trials. + trial_keys: Dict[Tuple[str, int], int] + Contains config_id, budget and the corresponding trial_id. + models_dir : Path + The directory of the model. + """ + prefix: str def __init__(self, name: str) -> None: @@ -744,22 +787,46 @@

Source code for deepcave.runs

         # objects created by reset
         self.reset()
 
+
+[docs] def reset(self) -> None: + """ + Reset the run to default values / empties. + + Clear the initial data and configurations of the object. + """ self.meta: Dict[str, Any] = {} self.configspace: ConfigSpace.ConfigurationSpace - self.configs: Dict[int, Configuration] = {} - self.origins: Dict[int, str] = {} - self.models: Dict[int, Optional[Union[str, "torch.nn.Module"]]] = {} + self.configs: Dict[int, Union[Configuration, Dict[Any, Any]]] = {} + self.origins: Dict[int, Optional[str]] = {} + self.models: Dict[ # type: ignore + int, Optional[Union[str, "torch.nn.Module"]] # noqa: F821 + ] = {} self.history: List[Trial] = [] - self.trial_keys: Dict[Tuple[str, int], int] = {} # (config_id, budget) -> trial_id + self.trial_keys: Dict[ + Tuple[int, Union[int, float, None]], int + ] = {} # (config_id, budget) -> trial_id # Cached data - self._highest_budget: Dict[int, Union[int, float]] = {} # config_id -> budget + self._highest_budget: Dict[int, Union[int, float]] = {} # config_id -> budget
+ def _update_highest_budget( self, config_id: int, budget: Union[int, float], status: Status ) -> None: + """ + Update the highest budget. + + Parameters + ---------- + config_id : int + The identificator of the configuration. + budget : Union[int, float] + The new highest budget. + status : Status + The status of the run. + """ if status == Status.SUCCESS: # Update highest budget if config_id not in self._highest_budget: @@ -772,7 +839,9 @@

Source code for deepcave.runs

     @abstractmethod
     def hash(self) -> str:
         """
-        Hash of the current run. If hash changes, cache has to be cleared. This ensures that
+        Hash of the current run.
+
+        If hash changes, cache has to be cleared. This ensures that
         the cache always holds the latest results of the run.
 
         Returns
@@ -786,7 +855,9 @@ 

Source code for deepcave.runs

     @abstractmethod
     def id(self) -> str:
         """
-        Hash of the file. This is used to identify the file.
+        Hash of the file.
+
+        This is used to identify the file.
         In contrast to `hash`, this hash should not be changed throughout the run.
 
         Returns
@@ -798,42 +869,149 @@ 

Source code for deepcave.runs

 
     @property
     def latest_change(self) -> float:
+        """
+        Get the latest change.
+
+        Returns
+        -------
+        float
+            The latest change.
+        """
         return 0
 
+
+[docs] @staticmethod - def get_trial_key(config_id: int, budget: Union[int, float]): - return (config_id, budget) + def get_trial_key( + config_id: int, budget: Union[int, float, None] + ) -> Tuple[int, Union[int, float, None]]: + """ + Get the trial key. + + It is obtained through the assembly of configuration and budget. + + Parameters + ---------- + config_id : int + The identificator of the configuration. + budget : Union[int, float, None] + The budget of the Trial. + + Returns + ------- + Tuple[int, Union[int, float, None]] + Tuple representing the trial key, consisting of configuration id and the budget. + """ + return (config_id, budget)
+ - def get_trial(self, trial_key) -> Optional[Trial]: +
+[docs] + def get_trial(self, trial_key: Tuple[int, int]) -> Optional[Trial]: + """ + Get the trial with the responding key if existing. + + Parameters + ---------- + trial_key : Tuple[int, int] + The key for the desired trial. + + Returns + ------- + Optional[Trial] + The trial object. + """ if trial_key not in self.trial_keys: return None - return self.history[self.trial_keys[trial_key]] + return self.history[self.trial_keys[trial_key]]
+ +
+[docs] def get_trials(self) -> Iterator[Trial]: - yield from self.history + """ + Get an iterator of all stored trials. + + Returns + ------- + Iterator[Trial] + An iterator over all stored trials. + """ + yield from self.history
+ +
+[docs] def get_meta(self) -> Dict[str, Any]: - return self.meta.copy() + """ + Get a shallow copy of the meta information. + + Returns + ------- + Dict[str, Any] + A shallow copy of the meta information dictionary. + """ + return self.meta.copy()
+ +
+[docs] def empty(self) -> bool: - return len(self.history) == 0 + """ + Check if the run's history is empty. + + Returns + ------- + bool + True if run history is empty, False otherwise. + """ + return len(self.history) == 0
- def get_origin(self, config_id: int) -> str: - return self.origins[config_id] +
+[docs] + def get_origin(self, config_id: int) -> Optional[str]: + """ + Get the origin, given a config id. + + Parameters + ---------- + config_id : int + The identificator of the configuration. + + Returns + ------- + Optional[str] + An origin string corresponding to the given configuration id. + """ + return self.origins[config_id]
+ + +
+[docs] def get_objectives(self) -> List[Objective]: + """ + Get a list of all objectives corresponding to the run. + + Returns + ------- + List[Objective] + A list containing all objectives associated with the run. + """ objectives = [] for d in self.meta["objectives"].copy(): objective = Objective.from_json(d) objectives += [objective] - return objectives + return objectives
+
[docs] def get_objective(self, id: Union[str, int]) -> Optional[Objective]: - """Returns the objective based on the id or the name. + """ + Return the objective based on the id or the name. Parameters ---------- @@ -842,10 +1020,9 @@

Source code for deepcave.runs

 
         Returns
         -------
-        Objective
-            The objective object.
+        Optional[Objective]
+            The objective.
         """
-
         objectives = self.get_objectives()
         if type(id) == int:
             return objectives[id]
@@ -862,7 +1039,7 @@ 

Source code for deepcave.runs

 [docs]
     def get_objective_id(self, objective: Union[Objective, str]) -> int:
         """
-        Returns the id of the objective if it is found.
+        Return the id of the objective if it is found.
 
         Parameters
         ----------
@@ -891,17 +1068,40 @@ 

Source code for deepcave.runs

         raise RuntimeError("Objective was not found.")
+
+[docs] def get_objective_ids(self) -> List[int]: - return list(range(len(self.get_objectives()))) + """ + Get the ids of the objectives. + + Returns + ------- + List[int] + A list of the ids of the objectives. + """ + return list(range(len(self.get_objectives())))
+
[docs] def get_objective_name(self, objectives: Optional[List[Objective]] = None) -> str: """ Get the cost name of given objective names. + Returns "Combined Cost" if multiple objective names were involved. - """ + Parameters + ---------- + objectives : Optional[List[Objective]] + A list of the objectives. + By default, None. + + Returns + ------- + str + The name of the objective. + Returns "Combined Cost" if multiple objective names were involved. + """ available_objective_names = self.get_objective_names() if objectives is None: @@ -914,27 +1114,41 @@

Source code for deepcave.runs

         return COMBINED_COST_NAME
+
+[docs] def get_objective_names(self) -> List[str]: - return [obj.name for obj in self.get_objectives()] + """ + Get the names of the objectives. + + Returns + ------- + List[str] + A list containing the names of the objectives. + """ + return [obj.name for obj in self.get_objectives()]
+
[docs] - def get_configs(self, budget: Union[int, float] = None) -> Dict[int, Configuration]: + def get_configs(self, budget: Optional[Union[int, float]] = None) -> Dict[int, Configuration]: """ - Get configurations of the run. Optionally, only configurations which were evaluated + Get configurations of the run. + + Optionally, only configurations which were evaluated on the passed budget are considered. Parameters ---------- - budget : Union[int, float], optional - Considered budget. By default None (all configurations are included). + budget : Optiona[Union[int, float]] + Considered budget. + By default, None (all configurations are included). Returns ------- Dict[int, Configuration] Configuration id and the configuration. """ - # Include all configs if we have combined budget + # Include all configs if budget is a combined budget if budget == COMBINED_BUDGET: budget = None @@ -954,11 +1168,42 @@

Source code for deepcave.runs

         return configs
+
+[docs] def get_config(self, id: int) -> Configuration: + """ + Retrieve the configuration with the corresponding id. + + Parameters + ---------- + id : int + The id of the configuration. + + Returns + ------- + Configuration + The corresponding Configuration. + """ config = Configuration(self.configspace, self.configs[id]) - return config + return config
+ +
+[docs] def get_config_id(self, config: Union[Configuration, Dict]) -> Optional[int]: + """ + Get the id of the configuration. + + Parameters + ---------- + config : Union[Configuration, Dict] + The configuration for which to find the id. + + Returns + ------- + Optional[int] + The configuration id. + """ if isinstance(config, Configuration): config = config.get_dictionary() @@ -967,62 +1212,112 @@

Source code for deepcave.runs

             if c == config:
                 return id
 
-        return None
+        return None
+ + +
+[docs] + def get_num_configs(self, budget: Optional[Union[int, float]] = None) -> int: + """ + Count the number of configurations stored in this run with a specific budget. + + Parameters + ---------- + budget : Optional[Union[int, float]] + The budget for which to count the configurations. + If not provided, counts all configurations. + Default is None. + + Returns + ------- + int + The number of all configurations with a given budget. + If budget is None, counts all configurations. + """ + return len(self.get_configs(budget=budget))
- def get_num_configs(self, budget: Union[int, float] = None) -> int: - return len(self.get_configs(budget=budget))
[docs] - def get_budget(self, id: Union[int, str], human=False) -> float: + def get_budget(self, id: Union[int, str], human: bool = False) -> Union[int, float]: """ - Gets the budget given an id. + Get the budget given an id. Parameters ---------- id : Union[int, str] - Id of the wanted budget. If id is a string, it is converted to an integer. + The id of the wanted budget. + If id is a string, it is converted to an integer. + human : bool, optional + Make the output more readable. + By default False. Returns ------- - float - Budget. + float, int + The budget. + + Raises + ------ + TypeError + If the budget with this id is invalid. """ budgets = self.get_budgets(human=human) - return budgets[int(id)]
+ return budgets[int(id)] # type: ignore
+
+[docs] def get_budget_ids(self, include_combined: bool = True) -> List[int]: + """ + Get the corresponding ids for the budgets. + + Parameters + ---------- + include_combined : bool, optional + If False, cut last id of budget ids. + By default True. + + Returns + ------- + List[int] + A list of the budget ids. + """ budget_ids = list(range(len(self.get_budgets()))) if not include_combined: budget_ids = budget_ids[:-1] - return budget_ids + return budget_ids
+
[docs] def get_budgets( self, human: bool = False, include_combined: bool = True - ) -> List[Union[int, float]]: + ) -> List[Union[int, float, str]]: """ - Returns the budgets from the meta data. + Return the budgets from the meta data. Parameters ---------- human : bool, optional - Make the output better readable. By default False. + Make the output more readable. + By default False. + include_combined : bool, optional + If True, include the combined budget. + By default True. Returns ------- - List[Union[int, float]] - List of budgets. + List[Union[int, float, str]] + List of budgets. In a readable form, if human is True. """ budgets = self.meta["budgets"].copy() if include_combined and len(budgets) > 1 and COMBINED_BUDGET not in budgets: budgets += [COMBINED_BUDGET] if human: - readable_budgets = [] + readable_budgets: List[Union[str, float]] = [] for b in budgets: if b == COMBINED_BUDGET: readable_budgets += ["Combined"] @@ -1038,10 +1333,17 @@

Source code for deepcave.runs

 [docs]
     def get_highest_budget(self, config_id: Optional[int] = None) -> Optional[Union[int, float]]:
         """
-        Returns the highest found budget for a config id. If no config id is specified then
+        Return the highest found budget for a config id.
+
+        If no config id is specified then
         the highest available budget is returned.
         Moreover, if no budget is available None is returned.
 
+        Parameters
+        ----------
+        config_id : Optional[int]
+            The config id for which the highest budget is returned.
+
         Returns
         -------
         Optional[Union[int, float]]
@@ -1059,13 +1361,16 @@ 

Source code for deepcave.runs

 
     def _process_costs(self, costs: List[float]) -> List[float]:
         """
-        Processes the costs to get rid of NaNs. NaNs are replaced by the worst value of the
+        Process the costs to get rid of NaNs.
+
+        NaNs are replaced by the worst value of the
         objective.
 
         Parameters
         ----------
         costs : List[float]
-            Costs, which should be processed. Must be the same length as the number of objectives.
+            Costs, which should be processed.
+            Must be the same length as the number of objectives.
 
         Returns
         -------
@@ -1085,28 +1390,30 @@ 

Source code for deepcave.runs

 [docs]
     def get_costs(self, config_id: int, budget: Optional[Union[int, float]] = None) -> List[float]:
         """
-        Returns the costs of a configuration. In case of multi-objective, multiple costs are
+        Return the costs of a configuration.
+
+        In case of multi-objective, multiple costs are
         returned.
 
         Parameters
         ----------
         config_id : int
             Configuration id to get the costs for.
-        budget : Optional[Union[int, float]], optional
-            Budget to get the costs from the configuration id for. By default None. If budget is
+        budget : Optional[Union[int, float]]
+            Budget to get the costs from the configuration id for. By default, None. If budget is
             None, the highest budget is chosen.
 
+        Returns
+        -------
+        List[float]
+            List of costs from the associated configuration.
+
         Raises
         ------
         ValueError
             If the configuration id is not found.
         RuntimeError
             If the budget was not evaluated for the passed config id.
-
-        Returns
-        -------
-        List[float]
-            List of costs from the associated configuration.
         """
         if budget is None:
             budget = self.get_highest_budget()
@@ -1129,15 +1436,17 @@ 

Source code for deepcave.runs

         statuses: Optional[Union[Status, List[Status]]] = None,
     ) -> Dict[int, List[float]]:
         """
-        Get all costs in the history with their config ids. Only configs from the given budget
+        Get all costs in the history with their config ids.
+
+        Only configs from the given budget
         and statuses are returned.
 
         Parameters
         ----------
-        budget : Optional[Union[int, float]], optional
+        budget : Optional[Union[int, float]]
             Budget to select the costs. If no budget is given, the highest budget is chosen.
-            By default None.
-        statuses : Optional[Union[Status, List[Status]]], optional
+            By default, None.
+        statuses : Optional[Union[Status, List[Status]]]
             Only selected stati are considered. If no status is given, all stati are considered.
             By default None.
 
@@ -1149,7 +1458,7 @@ 

Source code for deepcave.runs

         if budget is None:
             budget = self.get_highest_budget()
 
-        # In case of COMBINED_BUDGET, we only keep the costs of the highest found budget
+        # In case of COMBINED_BUDGET, only the costs of the highest found budget are kept
         highest_evaluated_budget = {}
 
         results = {}
@@ -1166,7 +1475,7 @@ 

Source code for deepcave.runs

                     highest_evaluated_budget[trial.config_id] = trial.budget
 
                 latest_budget = highest_evaluated_budget[trial.config_id]
-                # We only keep the highest budget
+                # Only the highest budget is kept
                 if trial.budget >= latest_budget:
                     results[trial.config_id] = trial.costs
             else:
@@ -1183,25 +1492,25 @@ 

Source code for deepcave.runs

 [docs]
     def get_status(self, config_id: int, budget: Optional[Union[int, float]] = None) -> Status:
         """
-        Returns the status of a configuration.
+        Return the status of a configuration.
 
         Parameters
         ----------
         config_id : int
             Configuration id to get the status for.
-        budget : Optional[Union[int, float]], optional
-            Budget to get the status from the configuration id for. By default None. If budget is
+        budget : Optional[Union[int, float]]
+            Budget to get the status from the configuration id for. By default, None. If budget is
             None, the highest budget is chosen.
 
-        Raises
-        ------
-        ValueError
-            If the configuration id is not found.
-
         Returns
         -------
         Status
             Status of the configuration.
+
+        Raises
+        ------
+        ValueError
+            If the configuration id is not found.
         """
         if budget == COMBINED_BUDGET:
             return Status.NOT_EVALUATED
@@ -1214,7 +1523,7 @@ 

Source code for deepcave.runs

 
         trial_key = self.get_trial_key(config_id, budget)
 
-        # Unfortunately, we have to iterate through the history to find the status
+        # Unfortunately, it is necessary to iterate through the history to find the status
         # TODO: Cache the stati
         for trial in self.history:
             if trial_key == trial.get_key():
@@ -1232,16 +1541,16 @@ 

Source code for deepcave.runs

         statuses: Optional[Union[Status, List[Status]]] = None,
     ) -> Tuple[Configuration, float]:
         """
-        Returns the incumbent with its normalized cost.
+        Return the incumbent with its normalized cost.
 
         Parameters
         ----------
-        objectives : Optional[Union[Objective, List[Objective]]], optional
-            Considerd objectives. By default None. If None, all objectives are considered.
-        budget : Optional[Union[int, float]], optional
-            Considered budget. By default None. If None, the highest budget is chosen.
-        statuses : Optional[Union[Status, List[Status]]], optional
-            Considered statuses. By default None. If None, all stati are considered.
+        objectives : Optional[Union[Objective, List[Objective]]]
+            Considered objectives. By default, None. If None, all objectives are considered.
+        budget : Optional[Union[int, float]]
+            Considered budget. By default, None. If None, the highest budget is chosen.
+        statuses : Optional[Union[Status, List[Status]]]
+            Considered statuses. By default, None. If None, all stati are considered.
 
         Returns
         -------
@@ -1280,16 +1589,18 @@ 

Source code for deepcave.runs

         self, costs: List[float], objectives: Optional[Union[Objective, List[Objective]]] = None
     ) -> float:
         """
-        Calculates one cost value from multiple costs.
-        Normalizes the costs first and weight every cost the same.
+        Calculate one cost value from multiple costs.
+
+        Normalizes the costs first and weigh every cost the same.
         The lower the normalized cost, the better.
 
         Parameters
         ----------
         costs : List[float]
-            The costs, which should be merged. Must be the same length as the original number of objectives.
-        objectives : Optional[List[Objective]], optional
-            The considered objectives to the costs. By default None.
+            The costs, which should be merged. Must be the same length as the original number of
+            objectives.
+        objectives : Optional[List[Objective]]
+            The considered objectives to the costs. By default, None.
             If None, all objectives are considered. The passed objectives can differ from the
             original number objectives.
 
@@ -1297,6 +1608,12 @@ 

Source code for deepcave.runs

         -------
         float
             Merged costs.
+
+        Raises
+        ------
+        RuntimeError
+            If the number of costs is different from the original number of objectives.
+            If the objective was not found.
         """
         # Get rid of NaN values
         costs = self._process_costs(costs)
@@ -1334,8 +1651,8 @@ 

Source code for deepcave.runs

             b = objective.upper - objective.lower
             normalized_cost = a / b
 
-            # We optimize the lower
-            # So we need to flip the normalized cost
+            # The lower is optimized
+            # So the normalized cost needs to be flipped
             if objective.optimize == "upper":
                 normalized_cost = 1 - normalized_cost
 
@@ -1351,14 +1668,30 @@ 

Source code for deepcave.runs

         return cost
- def get_model(self, config_id: int) -> Optional["torch.nn.Module"]: +
+[docs] + def get_model(self, config_id: int) -> Optional["torch.nn.Module"]: # type: ignore # noqa: F821 + """ + Get a model associated with the configuration id. + + Parameters + ---------- + config_id : int + The configuration id. + + Returns + ------- + Optional["torch.nn.Module] + A model for the provided configuration id. + """ import torch - filename = self.models_dir / f"{str(config_id)}.pth" + filename = self.models_dir / f"{str(config_id)}.pth" # type: ignore if not filename.exists(): return None - return torch.load(filename) + return torch.load(filename)
+
[docs] @@ -1366,29 +1699,30 @@

Source code for deepcave.runs

         self, objective: Objective, budget: Optional[Union[int, float]] = None
     ) -> Tuple[List[float], List[float], List[float], List[int], List[int]]:
         """
-        Calculates the trajectory of the given objective and budget.
+        Calculate the trajectory of the given objective and budget.
 
         Parameters
         ----------
         objective : Objective
             Objective to calculate the trajectory for.
-        budget : Optional[Union[int, float]], optional
+        budget : Optional[Union[int, float]]
             Budget to calculate the trajectory for. If no budget is given, then the highest budget
             is chosen. By default None.
 
         Returns
         -------
-        times : List[float]
-            Times of the trajectory.
-        costs_mean : List[float]
-            Costs of the trajectory.
-        costs_std : List[float]
-            Standard deviation of the costs of the trajectory. This is particularly useful for
-            grouped runs.
-        ids : List[int]
-            The "global" ids of the selected trials.
-        config_ids : List[int]
-            Config ids of the selected trials.
+        Tuple[List[float], List[float], List[float], List[int], List[int]]
+            times : List[float]
+                Times of the trajectory.
+            costs_mean : List[float]
+                Costs of the trajectory.
+            costs_std : List[float]
+                Standard deviation of the costs of the trajectory. This is particularly useful for
+                grouped runs.
+            ids : List[int]
+                The "global" ids of the selected trials.
+            config_ids : List[int]
+                Config ids of the selected trials.
         """
         if budget is None:
             budget = self.get_highest_budget()
@@ -1417,7 +1751,7 @@ 

Source code for deepcave.runs

         for id, _ in order:
             trial = self.history[id]
 
-            # We want to use all budgets
+            # All budgets should should be used
             if budget != COMBINED_BUDGET:
                 # Only consider selected/last budget
                 if trial.budget != budget:
@@ -1437,7 +1771,7 @@ 

Source code for deepcave.runs

                 current_cost = cost
 
                 costs_mean.append(cost)
-                costs_std.append(0)
+                costs_std.append(0.0)
                 times.append(trial.end_time)
                 ids.append(id)
                 config_ids.append(trial.config_id)
@@ -1451,14 +1785,16 @@ 

Source code for deepcave.runs

         self, config: Union[int, Dict[Any, Any], Configuration], specific: bool = False
     ) -> List:
         """
-        Encodes a given config (id) to a normalized list.
-        If a config is passed, no look-up has to be done.
+        Encode a given configuration (id) to a normalized list.
+
+        If a configuration is passed, no look-up has to be done.
 
         Parameters
         ----------
         config : Union[int, Dict[Any, Any], Configuration]
-            Either the config id, config as dict, or Configuration itself.
-        specific : bool, optional
+            Either the configuration id, as configuration as dict,
+            or a Configuration itself.
+        specific : bool
             Use specific encoding for fanova tree, by default False.
 
         Returns
@@ -1495,13 +1831,29 @@ 

Source code for deepcave.runs

         return x
+
+[docs] def encode_configs(self, configs: List[Configuration]) -> np.ndarray: - X = [] + """ + Encode a list of configurations into a corresponding numpy array. + + Parameters + ---------- + configs : List[Configuration] + A list containing the configurations to be encoded. + + Returns + ------- + np.ndarray + A numpy array with the encoded configurations. + """ + x_set = [] for config in configs: x = self.encode_config(config) - X.append(x) + x_set.append(x) + + return np.array(x_set)
- return np.array(X)
[docs] @@ -1513,30 +1865,30 @@

Source code for deepcave.runs

         specific: bool = False,
         include_config_ids: bool = False,
         include_combined_cost: bool = False,
-    ) -> Tuple[pd.DataFrame, pd.DataFrame]:
+    ) -> pd.DataFrame:
         """
-        Encodes configurations to process them further. After the configurations are encoded,
+        Encode configurations to process them further.
+
+        After the configurations are encoded,
         they can be used in model prediction.
 
         Parameters
         ----------
-        objectives : Optional[Union[Objective, List[Objective]]], optional
+        objectives : Optional[Union[Objective, List[Objective]]]
             Which objectives should be considered. If None, all objectives are
-            considered. By default None.
-        budget : Optional[List[Status]], optional
-            Which budget should be considered. By default None. If None, only the highest budget
+            considered. By default, None.
+        budget : Optional[List[Status]]
+            Which budget should be considered. By default, None. If None, only the highest budget
             is considered.
-        statuses : Optional[Union[Status, List[Status]]], optional
-            Which statuses should be considered. By default None. If None, all statuses are
+        statuses : Optional[Union[Status, List[Status]]]
+            Which statuses should be considered. By default, None. If None, all statuses are
             considered.
-        encode_y : bool, optional
-            Whether y should be normalized too. By default False.
-        specific : bool, optional
+        specific : bool
             Whether a specific encoding should be used. This encoding is compatible with pyrfr.
             A wrapper for pyrfr is implemented in ``deepcave.evaluators.epm``.
             By default False.
-        include_config_ids : bool, optional
-            Whether to include config ids. By default False.
+        include_config_ids : bool
+            Whether to include configuration ids. By default, False.
         include_combined_cost : bool, optional
             Whether to include combined cost. Note that the combined cost is calculated by the
             passed objectives only. By default False.
@@ -1550,16 +1902,15 @@ 

Source code for deepcave.runs

         Raises
         ------
         ValueError
-            If a hyperparameter is not supported.
+            If a hyperparameter (HP) is not supported.
         """
-
         if objectives is None:
             objectives = self.get_objectives()
 
         if isinstance(objectives, Objective):
             objectives = [objectives]
 
-        X, Y = [], []
+        x_set, y_set = [], []
         config_ids = []
 
         results = self.get_all_costs(budget, statuses)
@@ -1577,17 +1928,17 @@ 

Source code for deepcave.runs

             if include_combined_cost:
                 y += [self.merge_costs(costs, objectives)]
 
-            X.append(x)
-            Y.append(y)
+            x_set.append(x)
+            y_set.append(y)
             config_ids.append(config_id)
 
-        X = np.array(X)  # type: ignore
-        Y = np.array(Y)  # type: ignore
-        config_ids = np.array(config_ids).reshape(-1, 1)  # type: ignore
+        x_set_array = np.array(x_set)
+        y_set_array = np.array(y_set)
+        config_ids_array = np.array(config_ids).reshape(-1, 1)
 
         # Imputation: Easiest case is to replace all nans with -1
-        # However, since Stefan used different values for inactives
-        # we also have to use different inactives to be compatible
+        # However, since Stefan used different values for inactive hyperparameters,
+        # Also different inactive hyperparameters have to be used, to be compatible
         # with the random forests.
         # https://github.com/automl/SMAC3/blob/a0c89502f240c1205f83983c8f7c904902ba416d/smac/epm/base_rf.py#L45
         if specific:
@@ -1614,10 +1965,10 @@ 

Source code for deepcave.runs

                             raise ValueError("Hyperparameter not supported.")
 
                 if conditional[idx] is True:
-                    nonfinite_mask = ~np.isfinite(X[:, idx])
-                    X[nonfinite_mask, idx] = impute_values[idx]
+                    non_finite_mask = ~np.isfinite(x_set_array[:, idx])
+                    x_set_array[non_finite_mask, idx] = impute_values[idx]
 
-        # Now we create dataframes for both values and labels
+        # Now dataframes are created for both values and labels
         # [CONFIG_ID, HP1, HP2, ..., HPn, OBJ1, OBJ2, ..., OBJm, COMBINED_COST]
         if include_config_ids:
             columns = ["config_id"]
@@ -1631,9 +1982,9 @@ 

Source code for deepcave.runs

             columns += [COMBINED_COST_NAME]
 
         if include_config_ids:
-            data = np.concatenate((config_ids, X, Y), axis=1)
+            data: np.ndarray = np.concatenate((config_ids_array, x_set_array, y_set_array), axis=1)
         else:
-            data = np.concatenate((X, Y), axis=1)
+            data = np.concatenate((x_set_array, y_set_array), axis=1)
 
         data = pd.DataFrame(data=data, columns=columns)
 
@@ -1652,28 +2003,37 @@ 

Source code for deepcave.runs

     budgets: bool = True,
 ) -> Dict[str, Any]:
     """
-    Checks the passed runs on equality based on the selected runs and returns the requested
-    attributes.
+    Check the passed runs on equality based on the selected runs.
+
+    Return the requested attributes.
 
     Parameters
     ----------
     runs : list[AbstractRun]
         Runs to check for equality.
     meta : bool, optional
-        Meta-Data excluding objectives and budgets, by default True
+        Meta-Data excluding objectives and budgets, by default True.
     configspace : bool, optional
-        ConfigSpace, by default True
+        Wheter to include the configuration space, by default True.
     objectives : bool, optional
-        Objectives, by default True
+        Wheter to include the objectives, by default True.
     budgets : bool, optional
-        Budgets, by default True
+        Whether to include the budgets, by default True.
 
     Returns
     -------
     Dict[str, Any]
         Dictionary containing the checked attributes.
+
+    Raises
+    ------
+    NotMergeableError
+        If the meta data of the runs are not equal.
+        If the configuration spaces of the runs are not equal.
+        If the budgets of the runs are not equal.
+        If the objective of the runs are not equal.
     """
-    result = {}
+    result: Dict[str, Any] = {}
 
     if len(runs) == 0:
         return result
@@ -1736,6 +2096,7 @@ 

Source code for deepcave.runs

             for o1_, o2_ in zip(o1, o2):
                 o1_.merge(o2_)
 
+        assert o1 is not None
         serialized_objectives = [o.to_json() for o in o1]
         result["objectives"] = serialized_objectives
         if meta:
diff --git a/development/_modules/deepcave/runs/converters/bohb.html b/development/_modules/deepcave/runs/converters/bohb.html
index b7e23567..4a2db247 100644
--- a/development/_modules/deepcave/runs/converters/bohb.html
+++ b/development/_modules/deepcave/runs/converters/bohb.html
@@ -702,7 +702,20 @@
               

Source code for deepcave.runs.converters.bohb

-from pathlib import Path
+# noqa: D400
+"""
+# BOHBRun
+
+This module provides utilities for managing and processing data concerning a BOHB
+(Bayesian Optimization and Hyperparameter Bandits) run.
+
+## Classes
+    - BOHBRun: Create a BOHB Run.
+"""
+
+from typing import Any, Dict, Union
+
+from pathlib import Path
 
 from deepcave.runs import Status
 from deepcave.runs.objective import Objective
@@ -713,11 +726,31 @@ 

Source code for deepcave.runs.converters.bohb

[docs] class BOHBRun(Run): + """ + Create a BOHB (Bayesian Optimization and Hyperparameter Bandits) run. + + Properties + ---------- + path : Path + The path to the run. + """ + prefix = "BOHB" _initial_order = 2 @property - def hash(self): + def hash(self) -> str: + """ + Get the hash of the current run. + + If the hash changes, the cache has to be cleared. + This ensures that the cache always holds the latest results of the run. + + Returns + ------- + str + The hash of the run. + """ if self.path is None: return "" @@ -725,7 +758,15 @@

Source code for deepcave.runs.converters.bohb

return file_to_hash(self.path / "results.json") @property - def latest_change(self): + def latest_change(self) -> Union[float, int]: + """ + Get the timestamp of the latest change. + + Returns + ------- + Union[float, int] + The latest change. + """ if self.path is None: return 0 @@ -734,7 +775,19 @@

Source code for deepcave.runs.converters.bohb

[docs] @classmethod - def from_path(cls, path): + def from_path(cls, path: Union[Path, str]) -> "BOHBRun": + """ + Create a new BOHB run from a given path and add a new trial to it. + + Parameters + ---------- + path : Union[Path, str] + The pathname to base the run on. + + Returns + ------- + The BOHB run + """ path = Path(path) # Read configspace @@ -743,7 +796,7 @@

Source code for deepcave.runs.converters.bohb

configspace = cs_json.read((path / "configspace.json").read_text()) # Read objectives - # We have to define it ourselves, because we don't know the type of the objective + # It has to be defined here, because the type of the objective is not known # Only lock lower objective = Objective("Cost", lower=0) @@ -771,25 +824,31 @@

Source code for deepcave.runs.converters.bohb

budget = bohb_run.budget if bohb_run.info is None: - status = "CRASHED" + status_string = "CRASHED" else: - status = bohb_run.info["state"] + status_string = bohb_run.info["state"] config = config_mapping[bohb_run.config_id]["config"] - origin = None - additional = {} + additional: Dict[str, Any] = {} + status: Status # QUEUED, RUNNING, CRASHED, REVIEW, TERMINATED, COMPLETED, SUCCESS - if "SUCCESS" in status or "TERMINATED" in status or "COMPLETED" in status: + if ( + "SUCCESS" in status_string + or "TERMINATED" in status_string + or "COMPLETED" in status_string + ): status = Status.SUCCESS - elif "RUNNING" in status or "QUEUED" in status or "REVIEW" in status: - continue + elif ( + "RUNNING" in status_string or "QUEUED" in status_string or "REVIEW" in status_string + ): + status = status_string # type: ignore else: status = Status.CRASHED if status != Status.SUCCESS: - # We don't want cost included which are failed + # Costs which failed, should not be included cost = None run.add( @@ -799,7 +858,6 @@

Source code for deepcave.runs.converters.bohb

start_time=starttime, end_time=endtime, status=status, - origin=origin, additional=additional, ) diff --git a/development/_modules/deepcave/runs/converters/deepcave.html b/development/_modules/deepcave/runs/converters/deepcave.html index e7a68475..8ac8a477 100644 --- a/development/_modules/deepcave/runs/converters/deepcave.html +++ b/development/_modules/deepcave/runs/converters/deepcave.html @@ -702,7 +702,19 @@

Source code for deepcave.runs.converters.deepcave

-from pathlib import Path
+#  noqa: D400
+"""
+# DeepCAVE
+
+This module defines the DeepCAVE run object.
+
+## Classes
+    - DeepCAVERun: Create a DeepCAVE run and provide handling utilities.
+"""
+
+from typing import Union
+
+from pathlib import Path
 
 from deepcave.runs.run import Run
 from deepcave.utils.hash import file_to_hash
@@ -711,11 +723,31 @@ 

Source code for deepcave.runs.converters.deepcave

[docs] class DeepCAVERun(Run): + """ + Create a DeepCAVE run and provide handling utilities. + + Properties + ---------- + path : Path + The path the run. + """ + prefix = "DeepCAVE" _initial_order = 1 @property - def hash(self): + def hash(self) -> str: + """ + Hash of the current run. + + If the hash changes, the cache has to be cleared. + This ensures that the cache always holds the latest results of the run. + + Returns + ------- + str + The hash of the run. + """ if self.path is None: return "" @@ -723,7 +755,15 @@

Source code for deepcave.runs.converters.deepcave

return file_to_hash(self.path / "history.jsonl") @property - def latest_change(self): + def latest_change(self) -> Union[float, int]: + """ + Get the timestamp of the latest change. + + Returns + ------- + Union[float, int] + The latest change. + """ if self.path is None: return 0 @@ -732,7 +772,19 @@

Source code for deepcave.runs.converters.deepcave

[docs] @classmethod - def from_path(cls, path): + def from_path(cls, path: Path) -> "DeepCAVERun": + """ + Get a DeepCAVE run from a given path. + + Parameters + ---------- + path : Path + The path to base the run on. + + Returns + ------- + The DeepCAVE run. + """ return DeepCAVERun(path.stem, path=Path(path))
diff --git a/development/_modules/deepcave/runs/converters/smac3v1.html b/development/_modules/deepcave/runs/converters/smac3v1.html index 41da4921..028fcef1 100644 --- a/development/_modules/deepcave/runs/converters/smac3v1.html +++ b/development/_modules/deepcave/runs/converters/smac3v1.html @@ -702,7 +702,21 @@

Source code for deepcave.runs.converters.smac3v1

-import json
+#  noqa: D400
+"""
+# SMAC3v1Run
+
+This module provides utilities to create a SMAC3v1
+(Sequential Model-based Algorithm Configuration) run.
+
+Version 1.4 is used.
+
+## Classes
+    - SMAC3v1Run: Define a SMAC3v1 run object.
+"""
+from typing import Optional, Union
+
+import json
 from pathlib import Path
 
 import numpy as np
@@ -716,11 +730,33 @@ 

Source code for deepcave.runs.converters.smac3v1

[docs] class SMAC3v1Run(Run): + """ + Define a SMAC3v1 (Sequential Model-based Algorithm Configuration) run object. + + Version 1.4 is used. + + Properties + ---------- + path : Path + The path to the run. + """ + prefix = "SMAC3v1" _initial_order = 2 @property - def hash(self): + def hash(self) -> str: + """ + Hash of the current run. + + If the hash changes, the cache has to be cleared. + This ensures that the cache always holds the latest results of the run. + + Returns + ------- + str + The hash of the run. + """ if self.path is None: return "" @@ -728,7 +764,15 @@

Source code for deepcave.runs.converters.smac3v1

return file_to_hash(self.path / "runhistory.json") @property - def latest_change(self): + def latest_change(self) -> Union[float, int]: + """ + Get the timestamp of the latest change. + + Returns + ------- + Union[float, int] + The latest change. + """ if self.path is None: return 0 @@ -737,9 +781,25 @@

Source code for deepcave.runs.converters.smac3v1

[docs] @classmethod - def from_path(cls, path): + def from_path(cls, path: Union[Path, str]) -> "SMAC3v1Run": """ Based on working_dir/run_name/*, return a new trials object. + + Parameters + ---------- + path : Union[Path, str] + The path to base the run on. + + Returns + ------- + A SMAC3v1 run. + + Raises + ------ + RuntimeError + Instances are not supported. + RuntimeError + Multiple Seeds are not supported. """ path = Path(path) @@ -750,7 +810,7 @@

Source code for deepcave.runs.converters.smac3v1

configspace = cs_json.read(f.read()) # Read objectives - # We have to define it ourselves, because we don't know the type of the objective + # It has to be defined here, because the type of the objective is not known # Only lock lower objective1 = Objective("Cost", lower=0) objective2 = Objective("Time", lower=0) @@ -777,7 +837,7 @@

Source code for deepcave.runs.converters.smac3v1

name=path.stem, configspace=configspace, objectives=[objective1, objective2], meta=meta ) - # We have to set the path manually + # The path has to be set manually run._path = path # Iterate over the runhistory @@ -836,7 +896,7 @@

Source code for deepcave.runs.converters.smac3v1

status = Status.CRASHED if status != Status.SUCCESS: - # We don't want cost included which are failed + # Costs which failed, should not be included cost = None time = None else: @@ -845,7 +905,7 @@

Source code for deepcave.runs.converters.smac3v1

# Round budget budget = np.round(budget, 2) - origin = None + origin: Optional[str] = None if config_id in config_origins: origin = config_origins[config_id] diff --git a/development/_modules/deepcave/runs/converters/smac3v2.html b/development/_modules/deepcave/runs/converters/smac3v2.html index 5641bda9..48f49659 100644 --- a/development/_modules/deepcave/runs/converters/smac3v2.html +++ b/development/_modules/deepcave/runs/converters/smac3v2.html @@ -702,7 +702,22 @@

Source code for deepcave.runs.converters.smac3v2

-import json
+#  noqa: D400
+"""
+# SMAC3v2Run
+
+This module provides utilities to create a SMAC3v2
+(Sequential Model-based Algorithm Configuration) run.
+
+Version 2.0.0 is used.
+
+## Classes
+    - SMAC3v2Run: Define a SMAC3v2 run object.
+"""
+
+from typing import Union
+
+import json
 from pathlib import Path
 
 import numpy as np
@@ -716,11 +731,33 @@ 

Source code for deepcave.runs.converters.smac3v2

[docs] class SMAC3v2Run(Run): + """ + Define a SMAC3v2 (Sequential Model-based Algorithm Configuration) run object. + + Version 2.0.0 is used. + + Properties + ---------- + path : Path + The path to the run. + """ + prefix = "SMAC3v2" _initial_order = 2 @property - def hash(self): + def hash(self) -> str: + """ + Hash of the current run. + + If the hash changes, the cache has to be cleared. + This ensures that the cache always holds the latest results of the run. + + Returns + ------- + str + The hash of the run. + """ if self.path is None: return "" @@ -728,7 +765,15 @@

Source code for deepcave.runs.converters.smac3v2

return file_to_hash(self.path / "runhistory.json") @property - def latest_change(self): + def latest_change(self) -> Union[float, int]: + """ + Get the timestamp of the latest change. + + Returns + ------- + Union[float, int] + The latest change. + """ if self.path is None: return 0 @@ -737,9 +782,25 @@

Source code for deepcave.runs.converters.smac3v2

[docs] @classmethod - def from_path(cls, path): + def from_path(cls, path: Union[Path, str]) -> "SMAC3v2Run": """ Based on working_dir/run_name/*, return a new trials object. + + Parameters + ---------- + path : Union[Path, str] + The path to base the trial object on. + + Returns + ------- + The SMAC3v2 run. + + Raises + ------ + RuntimeError + Instances are not supported. + RuntimeError + Multiple Seeds are not supported. """ path = Path(path) @@ -768,11 +829,9 @@

Source code for deepcave.runs.converters.smac3v2

meta["run_objectives"] = meta.pop("objectives") # Let's create a new run object - run = SMAC3v2Run( - name=path.stem, configspace=configspace, objectives=obj_list, meta=meta - ) + run = SMAC3v2Run(name=path.stem, configspace=configspace, objectives=obj_list, meta=meta) - # We have to set the path manually + # The path has to be set manually run._path = path # Iterate over the runhistory @@ -832,7 +891,7 @@

Source code for deepcave.runs.converters.smac3v2

status = Status.CRASHED if status != Status.SUCCESS: - # We don't want cost included which are failed + # Costs which failed, should not be included cost = [None] * len(cost) if isinstance(cost, list) else None time = None else: diff --git a/development/_modules/deepcave/runs/exceptions.html b/development/_modules/deepcave/runs/exceptions.html index f8775ad5..56f0538e 100644 --- a/development/_modules/deepcave/runs/exceptions.html +++ b/development/_modules/deepcave/runs/exceptions.html @@ -702,9 +702,24 @@

Source code for deepcave.runs.exceptions

+# noqa: D400
+"""
+# Exceptions
+
+This module provides utilities for different errors concerning the runs.
+
+Exceptions will be raised, if a directory is not a valid run,
+as well as if runs are not mergeable.
+
+## Classes
+    - NotValidRunError: Raised if directory is not a valid run.
+    - NotMergeableError: Raised if two or more runs are not mergeable.
+"""
+
+
 
[docs] -class NotValidRunError(Exception): +class NotValidRunError(Exception): """Raised if directory is not a valid run.""" pass
@@ -714,7 +729,7 @@

Source code for deepcave.runs.exceptions

 
[docs] class NotMergeableError(Exception): - """Raised if two or more runs are not mergeable""" + """Raised if two or more runs are not mergeable.""" pass
diff --git a/development/_modules/deepcave/runs/group.html b/development/_modules/deepcave/runs/group.html index 8e513b23..a013e982 100644 --- a/development/_modules/deepcave/runs/group.html +++ b/development/_modules/deepcave/runs/group.html @@ -702,7 +702,18 @@

Source code for deepcave.runs.group

-from typing import Dict, List, Tuple
+#  noqa: D400
+"""
+# Group
+
+This module provides utilities for grouping and managing a group of runs.
+Utilities include getting attributes of the grouped runs, as well as the group itself.
+
+## Classes
+    - Group: Can group and manage a group of runs.
+"""
+
+from typing import Any, Dict, Iterator, List, Optional, Tuple
 
 from copy import deepcopy
 
@@ -715,6 +726,37 @@ 

Source code for deepcave.runs.group

 
[docs] class Group(AbstractRun): + """ + Can group and manage a group of runs. + + Utilities include getting attributes of the grouped runs, as well as the group itself. + + Properties + ---------- + runs : List[AbstractRun] + A list of the runs. + meta : Dict[str, Any] + Contains budgets, objectives and their attributes. + configspace : ConfigurationSpace + The configuration space of the runs. + objectives : Objective + The objectives of the runs. + budgets : List[Union[int, float]] + The budgets of the runs. + configs : Dict[int, Any] + A dictionary of the configurations and their ids as key. + origins : Dict[int, str] + The origins of the configurations and their ids as key. + trial_keys : Dict[Tuple[str, int], int] + The keys of the trial. + history : List[Trial] + The trial history. + prefix : str + The prefix for the id of the group. + name : str + The name for the id of the group. + """ + prefix = "group" def __init__(self, name: str, runs: List[AbstractRun]): @@ -733,7 +775,7 @@

Source code for deepcave.runs.group

             self.objectives = attributes["objectives"]
             self.budgets = attributes["budgets"]
 
-            # We need new config ids
+            # New config ids are needed
             current_config_id = 0
 
             # Key: new_config_id; Value: (run_id, config_id)
@@ -775,7 +817,7 @@ 

Source code for deepcave.runs.group

                     # Update config id
                     trial.config_id = new_config_id
 
-                    # Now we add it to the history
+                    # Now it is added to the history
                     trial_key = trial.get_key()
                     if trial_key not in self.trial_keys:
                         self.trial_keys[trial_key] = len(self.history)
@@ -792,28 +834,58 @@ 

Source code for deepcave.runs.group

         except Exception as e:
             raise NotMergeableError(f"Runs can not be merged: {e}")
 
-    def __iter__(self):
+
+[docs] + def __iter__(self: "Group") -> Iterator[str]: + """Allow to iterate over the object.""" for run in self.runs: - yield run.name + yield run.name
+ @property def hash(self) -> str: + """ + Sorted hashes of the group. + + Returns + ------- + str + The sorted hash of the group. + """ hashes = [] for run in self.runs: hashes += [run.hash] - # We sort hashes now because we don't want to be dependent on the order + # Hashes are sorted now, so there is no dependence on the order hashes = sorted(hashes) return string_to_hash("-".join(hashes)) @property def id(self) -> str: - # Groups do not have a path, therefore we use the name. + """ + Get the hash as id of the group. + + In contrast to hash, this hash should not be changed throughout the run. + + Returns + ------- + str + The hash of the group. + """ + # Groups do not have a path, therefore the name is used. return string_to_hash(f"{self.prefix}:{self.name}") @property - def latest_change(self) -> int: - latest_change = 0 + def latest_change(self) -> float: + """ + Get the latest change made to the grouped runs. + + Returns + ------- + float + The latest change. + """ + latest_change = 0.0 for run in self.runs: if run.latest_change > latest_change: latest_change = run.latest_change @@ -822,48 +894,160 @@

Source code for deepcave.runs.group

 
     @property
     def run_paths(self) -> List[str]:
+        """Get the path of the runs in the group."""
         return [str(run.path) for run in self.runs]
 
     @property
     def run_names(self) -> List[str]:
+        """
+        Get the names of the runs in the group.
+
+        Returns
+        -------
+        List[str]
+            A list of the names of the runs in the group.
+        """
         return [run.name for run in self.runs]
 
+
+[docs] def get_runs(self) -> List[AbstractRun]: - return self.runs + """ + Get the runs in the group. - def get_new_config_id(self, run_id: int, original_config_id: int) -> int: - return self._new_config_mapping[(run_id, original_config_id)] + Returns + ------- + List[AbstractRun] + A list of the grouped runs. + """ + return self.runs
- def get_original_config_id(self, config_id: int) -> id: - return self._original_config_mapping[config_id][1] +
+[docs] + def get_new_config_id(self, run_id: int, original_config_id: int) -> int: + """ + Get a new identificator for a configuration. + + Parameters + ---------- + run_id : int + The id of the run. + original_config_id : int + The original identificator of a configuration. + + Returns + ------- + int + The new identificator of a configuration. + """ + return self._new_config_mapping[(run_id, original_config_id)]
+ + +
+[docs] + def get_original_config_id(self, config_id: int) -> int: + """ + Get the original identificator of a configuration. + + Parameters + ---------- + config_id : int + The identificator of a configuration. + + Returns + ------- + int + The original identificator of a configuration. + """ + return self._original_config_mapping[config_id][1]
+ + +
+[docs] def get_original_run(self, config_id: int) -> AbstractRun: + """ + Get the original run. + + Parameters + ---------- + config_id : int + The identificator of the configuration. + + Returns + ------- + AbstractRun + The original run. + """ run_id = self._original_config_mapping[config_id][0] - return self.runs[run_id] + return self.runs[run_id]
+ - def get_model(self, config_id): +
+[docs] + def get_model(self, config_id: int) -> Optional[Any]: + """ + Get the model given the configuration id. + + Parameters + ---------- + config_id : int + The identificator of the configuration. + + Returns + ------- + Optional[Any] + The model. + """ run_id, config_id = self._original_config_mapping[config_id] - return self.runs[run_id].get_model(config_id) + return self.runs[run_id].get_model(config_id)
+ + # Types dont match superclass
[docs] - def get_trajectory(self, *args, **kwargs): + def get_trajectory(self, *args, **kwargs): # type: ignore + """ + Calculate the trajectory of the given objective and budget. + + This includes the times, the mean costs, and the standard deviation of the costs. + + Parameters + ---------- + *args + Should be the objective to calculate the trajectory from. + **kwargs + Should be the budget to calculate the trajectory for. + + Returns + ------- + times : List[float] + Times of the trajectory. + costs_mean : List[float] + Costs of the trajectory. + costs_std : List[float] + Standard deviation of the costs of the trajectory. + ids : List[int] + The "global" ids of the selected trial. + config_ids : List[int] + The configuration ids of the selected trials. + """ # Cache costs run_costs = [] run_times = [] - # All x values on which we need y values + # All x values on which y values are needed all_times = [] for _, run in enumerate(self.runs): times, costs_mean, _, _, _ = run.get_trajectory(*args, **kwargs) - # Cache s.t. we don't calculate it multiple times + # Cache s.t. calculate it is not calculated multiple times run_costs.append(costs_mean) run_times.append(times) # Add all times - # We want to calculate standard deviation on all times + # Standard deviation needs to be calculated on all times for time in times: if time not in all_times: all_times.append(time) @@ -885,11 +1069,11 @@

Source code for deepcave.runs.group

             all_costs.append(y)
 
         # Make numpy arrays
-        all_costs = np.array(all_costs)
+        all_costs_array = np.array(all_costs)
 
         times = all_times
-        costs_mean = np.mean(all_costs, axis=1)
-        costs_std = np.std(all_costs, axis=1)
+        costs_mean = np.mean(all_costs_array, axis=1)
+        costs_std = np.std(all_costs_array, axis=1)
 
         return times, list(costs_mean), list(costs_std), [], []
diff --git a/development/_modules/deepcave/runs/handler.html b/development/_modules/deepcave/runs/handler.html index 8ff34184..6a6d10f3 100644 --- a/development/_modules/deepcave/runs/handler.html +++ b/development/_modules/deepcave/runs/handler.html @@ -702,9 +702,21 @@

Source code for deepcave.runs.handler

-from typing import Dict, List, Optional, Type, Union
+#  noqa: D400
+"""
+# Handler
+
+This module provides utilities to handle a run.
+
+It can retrieve working directories, run paths, run names, as well as groups of runs.
+It provides utilities to update and remove runs as well as groups of runs.
+
+# Classes
+    - RunHandler: Handle the runs.
+"""
+
+from typing import Dict, List, Optional, Type, Union
 
-import logging
 import time
 from pathlib import Path
 
@@ -712,15 +724,39 @@ 

Source code for deepcave.runs.handler

 from deepcave.runs import AbstractRun
 from deepcave.runs.group import Group
 from deepcave.runs.run import Run
+from deepcave.utils.cache import Cache
 from deepcave.utils.logs import get_logger
+from deepcave.utils.run_caches import RunCaches
 
 
 
[docs] class RunHandler: """ - Handles the runs. Based on the meta data in the cache, automatically selects the right converter + Handle the runs. + + Based on the meta data in the cache, automatically selects the right converter and switches to the right (plugin) cache. + + Provides utilities to retrieve working directories, run paths, run names, and groups of runs. + Also update and remove runs as well a groups of runs. + + Properties + ---------- + c : Cache + The cache containing information about a run(s). + rc : RunCaches + The caches for the selected runs. + logger : Logger + The logger for the run handler. + available_run_yfes : List[Type[Run]] + A list of the available converters. + runs : Dict[str, AbstractRun] + A dictionary of runs with their path as key. + groups : Dict[str, Group] + A dictionary of the groups. + available_run_classes : List[Type[Run]] + Contains the available run classes. """ def __init__(self, config: Config, cache: "Cache", run_cache: "RunCaches") -> None: @@ -745,7 +781,7 @@

Source code for deepcave.runs.handler

 [docs]
     def set_working_directory(self, working_directory: Union[Path, str]) -> None:
         """
-        Sets the working directoy to the meta cache.
+        Set the working directory to the meta cache.
 
         Parameters
         ----------
@@ -759,26 +795,39 @@ 

Source code for deepcave.runs.handler

 [docs]
     def get_working_directory(self) -> Path:
         """
-        Returns the current working directory in the cache.
+        Return the current working directory in the cache.
 
         Returns
         -------
         Path
             Path of the working directory.
+
+        Raises
+        ------
+        AssertionError
+            If the working directory is not a string or a Path, an error is thrown.
         """
-        return Path(self.c.get("working_dir"))
+ working_dir = self.c.get("working_dir") + assert isinstance( + working_dir, (str, Path) + ), "Working directory of cache must be a string or a Path like." + return Path(working_dir)
[docs] def get_available_run_paths(self) -> Dict[str, str]: """ - Returns the available run paths from the current directory. + Return the available run paths from the current directory. Returns ------- Dict[str, str] Run path as key and run name as value. + + Exceptions + ---------- + FileNotFoundError """ runs = {} working_dir = self.get_working_directory() @@ -806,21 +855,30 @@

Source code for deepcave.runs.handler

 [docs]
     def get_selected_run_paths(self) -> List[str]:
         """
-        Returns the selected run paths from the cache.
+        Return the selected run paths from the cache.
 
         Returns
         -------
-        Dict[str, str]
+        List[str]
             Run paths as a list.
+
+        Raises
+        ------
+        AssertionError.
+            If the selected run paths are not a list, an error is thrown.
         """
-        return self.c.get("selected_run_paths")
+ selected_run_paths = self.c.get("selected_run_paths") + assert isinstance( + selected_run_paths, list + ), "The selected run paths of the cache must be a list." + return selected_run_paths
[docs] def get_selected_run_names(self) -> List[str]: """ - Returns the run names of the selected runs. + Return the run names of the selected runs. Returns ------- @@ -834,7 +892,7 @@

Source code for deepcave.runs.handler

 [docs]
     def get_run_name(self, run_path: Union[Path, str]) -> str:
         """
-        Returns the stem of the path.
+        Return the stem of the path.
 
         Parameters
         ----------
@@ -849,14 +907,36 @@ 

Source code for deepcave.runs.handler

         return Path(run_path).stem
+
+[docs] def get_selected_groups(self) -> Dict[str, List[str]]: - return self.c.get("groups") + """ + Get the selected groups. + + Returns + ------- + Dict[str, List[str]] + Dictionary with the selected groups. + + Raises + ------ + AssertionError + If groups in cache is not a dictionary, an error is thrown. + """ + selected_groups = self.c.get("groups") + assert isinstance( + selected_groups, dict + ), "The groups aquired from the cache must be a dictionary." + return selected_groups
+
[docs] def add_run(self, run_path: str) -> bool: """ - Adds a run path to the cache. If run path is already in cache, do nothing. + Add a run path to the cache. + + If run path is already in cache, do nothing. Parameters ---------- @@ -882,30 +962,44 @@

Source code for deepcave.runs.handler

 
[docs] def remove_run(self, run_path: str) -> None: - """Removes a run path from the cache. If run path is not in cache, do nothing. + """ + Remove a run path from the cache. + + If run path is not in cache, do nothing. Parameters ---------- run_path : str Path of a run. + + Raises + ------ + TypeError + If `selected_run_paths` or `groups` is None, an error is thrown. """ selected_run_paths = self.c.get("selected_run_paths") + if selected_run_paths is None: + raise TypeError("Selected run paths can not be None.") + if run_path in selected_run_paths: selected_run_paths.remove(run_path) self.c.set("selected_run_paths", value=selected_run_paths) - # We have to check the groups here because the removed run_path may + # The groups have to be checked here because the removed run_path may # still be included groups = {} - for group_name, run_paths in self.c.get("groups").items(): + group_it = self.c.get("groups") + if group_it is None: + raise TypeError("Groups can not be None.") + for group_name, run_paths in group_it.items(): if run_path in run_paths: run_paths.remove(run_path) groups[group_name] = run_paths self.c.set("groups", value=groups) - # We also remove last inputs here + # Last inputs are also removed here self.c.set("last_inputs", value={}) self.update_runs()
@@ -913,8 +1007,7 @@

Source code for deepcave.runs.handler

 
[docs] def update(self) -> None: - """Updates the internal run and group instances but only if a hash changed.""" - + """Update the internal run and group instances but only if a hash changed.""" update_required = False for run_path in list(self.runs.keys()): run = self.runs[run_path] @@ -936,17 +1029,17 @@

Source code for deepcave.runs.handler

 [docs]
     def update_runs(self) -> bool:
         """
-        Loads selected runs and update cache if files changed.
-
-        Raises
-        ------
-        NotValidRunError
-            If directory can not be transformed into a run, an error is thrown.
+        Load selected runs and update cache if files changed.
 
         Returns
         -------
         bool
             True if all selected runs could be loaded, False otherwise.
+
+        Raises
+        ------
+        NotValidRunError
+            If directory can not be transformed into a run, an error is thrown.
         """
         runs: Dict[str, AbstractRun] = {}  # run_path: Run
         success = True
@@ -978,15 +1071,26 @@ 

Source code for deepcave.runs.handler

         self, run_path: str, class_hint: Optional[Type[Run]] = None
     ) -> Optional[AbstractRun]:
         """
-        Loads the run from `self.runs` or creates a new one.
+        Load the run from `self.runs` or create a new one.
+
+        Parameters
+        ----------
+        run_path : str
+            The path of the run.
+        class_hint : Optional[Type[Run]], optional
+            A hint/suggestion of what the Type of the Run is.
+            Default is None.
+
+        Returns
+        -------
+        Optional[AbstractRun]
+            The Run added to the cache.
 
         Raises
         ------
         NotValidRunError
             If directory can not be transformed into a run, an error is thrown.
-
         """
-
         # Try to get run from current runs
         if run_path in self.runs:
             run = self.runs[run_path]
@@ -1012,7 +1116,8 @@ 

Source code for deepcave.runs.handler

                 run = run_class.from_path(Path(run_path))
                 t2 = time.perf_counter()
                 self.logger.debug(
-                    f'Run "{Path(run_path).stem}" was successfully loaded (took {round(t2 - t1, 2)} seconds).'
+                    f'Run "{Path(run_path).stem}" was successfully loaded (took {round(t2 - t1, 2)}'
+                    f" seconds)."
                 )
             except KeyboardInterrupt:
                 # Pass KeyboardInterrupt through try-except, so it can actually interrupt.
@@ -1036,21 +1141,32 @@ 

Source code for deepcave.runs.handler

 
 
[docs] - def update_groups(self, groups: Optional[Dict[str, str]] = None) -> None: + def update_groups(self, groups: Optional[Dict[str, List[str]]] = None) -> None: """ - Loads chosen groups. If `groups` is passed, it is used to instantiate the groups and + Load chosen groups. + + If `groups` is passed, it is used to instantiate the groups and saved to the cache. Otherwise, `groups` is loaded from the cache. + Parameters + ---------- + groups : Optional[Dict[str, str]], optional + A dictionary with the groups. + Default is None. + Raises ------ NotMergeableError If runs can not be merged, an error is thrown. - + TypeError + If `groups` is None, an error is thrown. """ instantiated_groups = {} if groups is None: groups = self.c.get("groups") - + # This check is necessary because groups could still be None + if groups is None: + raise TypeError("Groups can not be None.") # Add grouped runs for group_name, run_paths in groups.items(): runs = [] @@ -1080,7 +1196,7 @@

Source code for deepcave.runs.handler

 [docs]
     def get_run(self, run_id: str) -> AbstractRun:
         """
-        Looks inside `self.runs` and `self.groups` and if the run id is found, returns the run.
+        Look inside `self.runs` and `self.groups` and if the run id is found, returns the run.
 
         Parameters
         ----------
@@ -1090,7 +1206,7 @@ 

Source code for deepcave.runs.handler

         Returns
         -------
         AbstractRun
-            Run
+            Run.
 
         Raises
         ------
@@ -1109,7 +1225,7 @@ 

Source code for deepcave.runs.handler

 [docs]
     def get_groups(self) -> List[Group]:
         """
-        Returns instantiated grouped runs.
+        Return instantiated grouped runs.
 
         Returns
         -------
@@ -1122,15 +1238,17 @@ 

Source code for deepcave.runs.handler

 
 
[docs] - def get_runs(self, include_groups=False) -> List[AbstractRun]: + def get_runs(self, include_groups: bool = False) -> List[AbstractRun]: """ - Returns the runs from the internal cache. The runs are already loaded and ready to use. + Return the runs from the internal cache. + + The runs are already loaded and ready to use. Optional, if `include_groups` is set to True, the groups are also included. Parameters ---------- include_groups : bool, optional - Includes the groups, by default False + Includes the groups, by default False. Returns ------- diff --git a/development/_modules/deepcave/runs/objective.html b/development/_modules/deepcave/runs/objective.html index f7c537dc..a96c0617 100644 --- a/development/_modules/deepcave/runs/objective.html +++ b/development/_modules/deepcave/runs/objective.html @@ -702,7 +702,18 @@

Source code for deepcave.runs.objective

-from typing import Any, Dict, Optional, Union
+#  noqa: D400
+"""
+# Objective
+
+This module provides utilities to convert and create objectives.
+It also provides functions for merging and comparing objectives.
+
+## Classes
+    - Objective: Convert and create objectives.
+"""
+
+from typing import Any, Dict, Optional, Union
 
 from dataclasses import dataclass
 
@@ -715,6 +726,25 @@ 

Source code for deepcave.runs.objective

 [docs]
 @dataclass
 class Objective:
+    """
+    Convert, create and merge objectives.
+
+    Properties
+    ----------
+    lower : Optional[Union[int, float]]
+        The lower bound of the objective.
+    upper : Optional[Union[int, float]]
+        The upper bound of the objective.
+    optimize : str
+        Define whether to optimize lower or upper.
+    lock_lower : bool
+        Whether to lock the lower bound.
+    lock_upper : bool
+        Whether to lock the upper bound.
+    name : str
+        The name of the objective.
+    """
+
     name: str
     lower: Optional[Union[int, float]] = None
     upper: Optional[Union[int, float]] = None
@@ -724,6 +754,8 @@ 

Source code for deepcave.runs.objective

 [docs]
     def __post_init__(self) -> None:
         """
+        Check if bounds should be locked.
+
         Lock the lower bound if lower is not None.
         Lock the upper bound if upper is not None.
 
@@ -751,7 +783,17 @@ 

Source code for deepcave.runs.objective

         self.lock_upper = lock_upper
+
+[docs] def to_json(self) -> Dict[str, Any]: + """ + Convert objectives attributes to a dictionary in a JSON friendly format. + + Returns + ------- + Dict[str, Any] + A dictionary in a JSON friendly format with the objects attributes. + """ return { "name": self.name, "lower": self.lower, @@ -759,10 +801,26 @@

Source code for deepcave.runs.objective

             "lock_lower": self.lock_lower,
             "lock_upper": self.lock_upper,
             "optimize": self.optimize,
-        }
+        }
+ +
+[docs] @staticmethod def from_json(d: Dict[str, Any]) -> "Objective": + """ + Create an objective from a JSON friendly dictionary format. + + Parameters + ---------- + d : Dict[str, Any] + A dictionary in a JSON friendly format containing the attributes. + + Returns + ------- + Objective + An objective created from the provided data. + """ objective = Objective( name=d["name"], lower=d["lower"], @@ -773,44 +831,96 @@

Source code for deepcave.runs.objective

         objective.lock_lower = d["lock_lower"]
         objective.lock_upper = d["lock_upper"]
 
-        return objective
+        return objective
+ +
+[docs] def __eq__(self, other: Any) -> bool: + """ + Compare if two instances are equal based on their attributes. + + Parameters + ---------- + other : Any + The other instance to compare. + + Returns + ------- + bool + True if equal, else False. + """ attributes = ["name", "lock_lower", "lock_upper", "optimize"] for a in attributes: if getattr(self, a) != getattr(other, a): return False - return True + return True
+ +
+[docs] def merge(self, other: Any) -> None: + """ + Merge two Objectives over their attributes. + + Parameters + ---------- + other : Any + The other Objective to merge. + + Raises + ------ + NotMergeableError + If parts of the two Objectives are not mergeable. + ValueError + If the lower bound of one Objective is None. + If the upper bound of one Objective is None. + """ if not isinstance(other, Objective): raise NotMergeableError("Objective can only be merged with another Objective.") attributes = ["name", "lock_lower", "lock_upper", "optimize"] for attribute in attributes: if getattr(self, attribute) != getattr(other, attribute): - raise NotMergeableError(f"Objective {attribute} is not mergeable.") + raise NotMergeableError(f"Objective {attribute} can not be merged.") + + if self.lower is None or other.lower is None: + raise ValueError("The lower bound of one Objective is None.") + if self.upper is None or other.upper is None: + raise ValueError("The upper bound of one Objective is None.") if self.lock_lower and self.lock_lower == other.lock_lower: if self.lower != other.lower: - raise NotMergeableError(f"Objective {other.name}'s lower bound is not mergeable.") + raise NotMergeableError(f"Objective {other.name}'s lower bound can not be merged.") else: - if self.lower > other.lower: # type: ignore + if self.lower > other.lower: self.lower = other.lower if self.lock_upper and self.lock_upper == other.lock_upper: if self.upper != other.upper: - raise NotMergeableError(f"Objective {other.name}'s upper bound is not mergeable.") + raise NotMergeableError(f"Objective {other.name}'s upper bound can not be merged.") else: - if self.upper < other.upper: # type: ignore - self.upper = other.upper + if self.upper < other.upper: + self.upper = other.upper
- def get_worst_value(self) -> float: + +
+[docs] + def get_worst_value(self) -> Optional[Union[int, float]]: + """ + Get the worst value based on the optimization setting. + + Returns + ------- + float + The worst value based on the optimization setting. + """ if self.optimize == "lower": - return self.upper # type: ignore + return self.upper else: - return self.lower # type: ignore
+ return self.lower
+
diff --git a/development/_modules/deepcave/runs/recorder.html b/development/_modules/deepcave/runs/recorder.html new file mode 100644 index 00000000..de31904f --- /dev/null +++ b/development/_modules/deepcave/runs/recorder.html @@ -0,0 +1,1032 @@ + + + + + + + deepcave.runs.recorder — DeepCAVE Documentation 1.2 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +

DeepCAVE Documentation

+
v1.2
+
+ + + + +
+ +
+ + + + + + +
+ +
+ +

Source code for deepcave.runs.recorder

+#  noqa: D400
+"""
+# Recorder
+
+This module provides utilities to record information.
+
+## Classes
+    - Recorder: Define a Recorder for recording information.
+"""
+
+from typing import Any, Dict, List, Optional, Tuple, Union
+
+import time
+from pathlib import Path
+
+import ConfigSpace
+import numpy as np
+from ConfigSpace import Configuration
+from typing_extensions import Self
+
+from deepcave.runs import Status
+from deepcave.runs.converters.deepcave import DeepCAVERun
+from deepcave.runs.objective import Objective
+
+
+
+[docs] +class Recorder: + """ + Define a Recorder for recording information. + + Properties + ---------- + path : Path + The path to the recorded information. + last_trial_id : tuple[Any, Optional[float]] + The last id containing the configuration and the budget. + start_time : float + The current time in seconds since the epoch. + start_times : Dict[Any, Any] + A dictionary containing the start times with their id as key. + models : Dict[Any, Any| + The models used with their id as key. + origins : Dict[Any, Any] + The origins with their id as key. + additionals : Dict[Any, Any] + Additional information with the id as key. + run : DeepCAVERun + The deepcave run container. + """ + + def __init__( + self, + configspace: ConfigSpace.ConfigurationSpace, + objectives: Optional[List[Objective]] = None, + meta: Optional[Dict[str, Any]] = None, + save_path: str = "logs", + prefix: str = "run", + overwrite: bool = False, + ): + """ + All objectives follow the scheme the lower the better. + + Parameters + ---------- + save_path : str, otpional + The path to the recording. + Default is "logs". + configspace : ConfigSpace.ConfigurationSpace + The configuration space. + objectives Optional[List[Objective]], optional + The objectives of the run. + Default is None. + prefix ; str, optional + Name of the trial. If not given, trial_x will be used. + Default is "run". + overwrite : bool, optional + Uses the prefix as name and overwrites the file. + Default is False. + """ + if objectives is None: + objectives = [] + if meta is None: + meta = {} + + self.path: Path + self._set_path(save_path, prefix, overwrite) + + # Set variables + self.last_trial_id: Optional[ + Tuple[Union[Dict[Any, Any], Configuration], Optional[float]] + ] = None + self.start_time = time.time() + self.start_times: Dict[ + Tuple[Union[Dict[Any, Any], Configuration], Optional[float]], float + ] = {} + self.models: Dict[ + Tuple[Union[Dict[Any, Any], Configuration], Optional[float]], Optional[Any] + ] = {} + self.origins: Dict[ + Tuple[Union[Dict[Any, Any], Configuration], Optional[float]], Optional[str] + ] = {} + self.additionals: Dict[ + Tuple[Union[Dict[Any, Any], Configuration], Optional[float]], Dict[Any, Any] + ] = {} + + # Define trials container + self.run = DeepCAVERun( + self.path.stem, configspace=configspace, objectives=objectives, meta=meta + ) + + def __enter__(self) -> Self: + return self + + def __exit__(self, type, value, traceback) -> None: # type: ignore + pass + + def _set_path( + self, path: Union[str, Path], prefix: str = "run", overwrite: bool = False + ) -> None: + """ + Set the path. + + Parameters + ---------- + path : Union[str, Path] + The path to set. + prefix, optional + The prefix for the path. + Default is "run". + overwrite, optional + To determine whether to overwrite an existing folder. + Default is False. + """ + # Make sure the word is interpreted as folder + path = Path(path) + path.mkdir(parents=True, exist_ok=True) + + if not overwrite: + new_idx = 0 + for file in path.iterdir(): + if not file.name.startswith(f"{prefix}_"): + continue + idx = file.name.split("_")[-1] + if idx.isnumeric(): + idx_int = int(idx) + if idx_int > new_idx: + new_idx = idx_int + + # And increase the id + new_idx += 1 + self.path = path / f"{prefix}_{new_idx}" + else: + self.path = path / f"{prefix}" + +
+[docs] + def start( + self, + config: Configuration, + budget: Optional[float] = None, + model: Optional[Any] = None, + origin: Optional[str] = None, + additional: Optional[dict] = None, + start_time: Optional[float] = None, + ) -> None: + """ + Start recording the information. + + Parameters + ---------- + config : Configuration + Holds the configuration settings. + budget : Optional[float], optional + The budget. + Default is None. + model : Optional[Any], optional + The model used. + Default is None. + origin : Optional[str], optional + The origin. + Default is None. + additional : Optional[dict], optional + Additional information. + Default is None. + start_time : Optional[float], optional + The start time. + Default is None. + """ + if additional is None: + additional = {} + + id: Tuple[Union[Dict[Any, Any], Configuration], Optional[float]] = (config, budget) + + if start_time is None: + start_time = time.time() - self.start_time + + # Start timer + self.start_times[id] = start_time + self.models[id] = model + self.origins[id] = origin + self.additionals[id] = additional + + self.last_trial_id = id
+ + +
+[docs] + def end( + self, + costs: float = np.inf, + status: Status = Status.SUCCESS, + config: Optional[Union[dict, Configuration]] = None, + budget: Optional[float] = np.inf, + additional: Optional[dict] = None, + end_time: Optional[float] = None, + ) -> None: + """ + End the recording and add it to the trial history. + + In case of multi-processing, config+budget should be passed. + If it can't be passed, it can't be matched correctly. + + Parameters + ---------- + costs : float, optional + The costs. + Default is np.inf. + status : Status, optional + The status. + Default is Status.Success. + config : Union[dict, Configuration], optional + The configuration. + Default is None. + budget : float, optional + The budget. + Default is np.inf. + additional : Optional[dict], optional + Additional information. + Default is None. + end_time : Optional[float], optional + The end time. + Default is None. + + Raises + ------ + AssertionError + If no trial was started yet. + """ + if additional is None: + additional = {} + + if config is not None: + id = (config, budget) + else: + assert self.last_trial_id is not None, "No trial started yet." + id = self.last_trial_id + config, budget = id[0], id[1] + + model = self.models[id] + start_additional = self.additionals[id].copy() + start_additional.update(additional) + start_time = self.start_times[id] + + if end_time is None: + end_time = time.time() - self.start_time + + assert budget is not None + + # Add to trial history + self.run.add( + costs=costs, + config=config, + budget=budget, + start_time=start_time, + end_time=end_time, + status=status, + model=model, + additional=start_additional, + ) + + # Clean the dicts + self.start_times.pop(id) + self.models.pop(id) + self.origins.pop(id) + self.additionals.pop(id) + + # And save the results + self.run.save(self.path)
+
+ +
+ +
+ + + +
+
+ +
+ + +
+
+ + +
+
+ + + + + +
+
+ + \ No newline at end of file diff --git a/development/_modules/deepcave/runs/run.html b/development/_modules/deepcave/runs/run.html index d9b3c4f2..85b28c11 100644 --- a/development/_modules/deepcave/runs/run.html +++ b/development/_modules/deepcave/runs/run.html @@ -702,7 +702,17 @@

Source code for deepcave.runs.run

-from abc import ABC, abstractmethod
+#  noqa: D400
+"""
+# Run
+
+This module provides utilities to create a new run and get its attributes.
+
+## Classes
+    - Run: Create a new run.
+"""
+
+from abc import ABC, abstractmethod
 from typing import Any, Dict, List, Optional, Union
 
 import json
@@ -724,26 +734,36 @@ 

Source code for deepcave.runs.run

 [docs]
 class Run(AbstractRun, ABC):
     """
-    Creates a new run.
+    Create a new run and get its attributes.
+
     If path is given, runs are loaded from the path.
 
-    Parameters
+    Properties
     ----------
-    name : str
-        Name of the run.
-    configspace : ConfigSpace, optional
-        Configuration space of the run. Should be None if `path` is used. By default None.
-    objectives : Union[Objective, List[Objective]], optional
-        Objectives of the run. Should be None if `path` is used. By default None
-    meta : Dict[str, Any], optional
-        Meta data of the run. Should be None if `path` is used. By default None.
-    path : Optional[Union[str, Path]], optional
-        If a path is specified, the run is loaded from there. By default None.
-
-    Raises
-    ------
-    RuntimeError
-        If no configuration space is provided or found.
+    configspace : ConfigurationSpace
+        The configuration space of the run.
+    path : Optional[Union[str, Path]]
+        The path of a run to be loaded.
+    meta : Dict[str, Any]
+        Contains serialized objectives and budgets.
+    prefix : str
+        The prefix for the id.
+    meta_fn : Path
+        The path to the meta data.
+    configspace_fn : Path
+        The path to the configuration space file.
+    configs_fn : Path
+        The path to the configurations file.
+    origins_fn : Path
+        The path to the origins file.
+    history_fn : Path
+        The path to the history file.
+    models_dir : Path
+        The path to the models directory.
+    configs : Dict[int, Configuration]
+        Containing the configurations.
+    models : Dict[int, Optional[Union[str, "torch.nn.Module"]]]
+        Contains the models.
     """
 
     prefix = "run"
@@ -752,10 +772,10 @@ 

Source code for deepcave.runs.run

     def __init__(
         self,
         name: str,
-        configspace: ConfigSpace = None,
-        objectives: Union[Objective, List[Objective]] = None,
-        meta: Dict[str, Any] = None,
-        path: Optional[Union[str, Path]] = None,
+        configspace: Optional[ConfigSpace.ConfigurationSpace] = None,
+        objectives: Optional[Union[Objective, List[Objective]]] = None,
+        meta: Optional[Dict[str, Any]] = None,
+        path: Optional[Path] = None,
     ) -> None:
         super(Run, self).__init__(name)
 
@@ -766,7 +786,8 @@ 

Source code for deepcave.runs.run

 
         # Reset and load configspace/path
         self.reset()
-        self.configspace = configspace
+        if configspace is not None:
+            self.configspace = configspace
         self.path = path
         if self.path is not None:
             self.load()
@@ -797,24 +818,54 @@ 

Source code for deepcave.runs.run

     def from_path(cls, path: Path) -> "Run":
         """
         Based on a path, return a new Run object.
+
+        Parameters
+        ----------
+        path : Path
+            The path to get the run from.
+
+        Returns
+        -------
+        "Run"
+            The run loaded from the path.
         """
         pass
@property def id(self) -> str: + """ + Get a hash as id. + + Returns + ------- + str + The hashed id. + """ return string_to_hash(f"{self.prefix}:{self.path}") @property def path(self) -> Optional[Path]: + """ + Return the path of the run if it exists. + + Returns + ------- + Optional[Path] + The path of the run. + """ return self._path @path.setter - def path(self, value: Optional[Union[str, Path]]): + def path(self, value: Optional[Union[str, Path]]) -> None: """ - If path is changed, also change the filenames of all created files. - """ + Set the paths of the run and the JSON files. + Parameters + ---------- + value : Optional[Union[str, Path]] + The path for the directory. + """ if value is None: self._path = None return @@ -833,7 +884,7 @@

Source code for deepcave.runs.run

 [docs]
     def exists(self) -> bool:
         """
-        Checks if the run exists based on the internal path.
+        Check if the run exists based on the internal path.
 
         Returns
         -------
@@ -865,12 +916,13 @@ 

Source code for deepcave.runs.run

         start_time: float = 0.0,
         end_time: float = 0.0,
         status: Status = Status.SUCCESS,
-        origin: str = None,
-        model: Union[str, "torch.nn.Module"] = None,  # type: ignore
+        origin: Optional[str] = None,
+        model: Union[str, "torch.nn.Module"] = None,  # type: ignore # noqa: F821
         additional: Optional[Dict] = None,
     ) -> None:
         """
-        Adds a trial to the run.
+        Add a trial to the run.
+
         If combination of config and budget already exists, it will be overwritten.
         Not successful runs are added with `None` costs.
 
@@ -881,17 +933,17 @@ 

Source code for deepcave.runs.run

         config : Union[Dict, Configuration]
             The corresponding configuration.
         start_time : float, optional
-            Start time. By default 0.0
+            Start time. By default, 0.0
         end_time : float, optional
-            End time. By default 0.0
+            End time. By default, 0.0
         status : Status, optional
-            Status of the trial. By default Status.SUCCESS
+            Status of the trial. By default, Status.SUCCESS
         origin : str, optional
-            Origin of the trial. By default None
-        model : Union[str, &quot;torch.nn.Module&quot;], optional
-            Model of the trial. By default None
+            Origin of the trial. By default, None
+        model : Union[str, "torch.nn.Module"], optional
+            Model of the trial. By default, None
         additional : Optional[Dict], optional
-            Additional information of the trial. By default None.
+            Additional information of the trial. By default, None.
             Following information is used by DeepCAVE:
             * traceback
 
@@ -899,6 +951,8 @@ 

Source code for deepcave.runs.run

         ------
         RuntimeError
             If number of costs does not match number of objectives.
+        ValueError
+            If config id is None.
         """
         if additional is None:
             additional = {}
@@ -922,12 +976,12 @@ 

Source code for deepcave.runs.run

             # If cost is none, replace it later with the highest cost
             if cost is not None:
                 # Update bounds here
-                if not objective.lock_lower:
-                    if cost < objective.lower:  # type: ignore
+                if not objective.lock_lower and objective.lower is not None:
+                    if cost < objective.lower:
                         objective.lower = cost
 
-                if not objective.lock_upper:
-                    if cost > objective.upper:  # type: ignore
+                if not objective.lock_upper and objective.upper is not None:
+                    if cost > objective.upper:
                         objective.upper = cost
 
             updated_objectives += [objective.to_json()]
@@ -938,11 +992,14 @@ 

Source code for deepcave.runs.run

             config = config.get_dictionary()
 
         if config not in self.configs.values():
-            config_id = len(self.configs)
-            self.configs[config_id] = config
-            self.origins[config_id] = origin
+            config_id_len = len(self.configs)
+            self.configs[config_id_len] = config
+            self.origins[config_id_len] = origin
 
         config_id = self.get_config_id(config)
+        if config_id is None:
+            raise ValueError("Config id is None.")
+
         trial = Trial(
             config_id=config_id,
             budget=budget,
@@ -969,14 +1026,29 @@ 

Source code for deepcave.runs.run

         self._update_highest_budget(config_id, budget, status)
 
         # Update models
-        # Problem: We don't want to have the model in the cache.
-        # Therefore, we first keep the model as it is,
+        # Problem: The model should not be in the cache.
+        # Therefore, first the model is kept as it is,
         # but remove it from the dict and save it to the disk later on.
         if model is not None:
             self.models[config_id] = model
- def save(self, path: Optional[Union[str, Path]] = None): +
+[docs] + def save(self, path: Union[str, Path]) -> None: + """ + Save the run and its information. + + Parameters + ---------- + path : Optional[Union[str, Path]] + The path in which to save the trials. + + Raises + ------ + RuntimeError + If the path is not specified. + """ if path is None: raise RuntimeError("Please specify a path to save the trials.") @@ -1001,7 +1073,7 @@

Source code for deepcave.runs.run

 
         # Models
         if len(self.models) > 0:
-            # We import torch here because we don't want to have it as requirement.
+            # torch is imported here, because it is not wanted as requirement.
             import torch
 
             # Iterate over models and save them if they are a module.
@@ -1017,9 +1089,27 @@ 

Source code for deepcave.runs.run

                         raise RuntimeError("Unknown model type.")
 
                 # Remove from dict
-                del self.models[config_id]
+                del self.models[config_id]
+ +
+[docs] def load(self, path: Optional[Union[str, Path]] = None) -> None: + """ + Load the run. + + Parameters + ---------- + path : Optional[Union[str, Path]], optional + The path where to load the run from. + Default is None. + + Raises + ------ + RuntimeError + If the path is None. + If the trials were not found. + """ self.reset() if path is None and self.path is None: @@ -1059,6 +1149,7 @@

Source code for deepcave.runs.run

 
                 # Update highest budget
                 self._update_highest_budget(trial.config_id, trial.budget, trial.status)
+
diff --git a/development/_modules/deepcave/runs/status.html b/development/_modules/deepcave/runs/status.html index de46b8c3..bce65080 100644 --- a/development/_modules/deepcave/runs/status.html +++ b/development/_modules/deepcave/runs/status.html @@ -702,12 +702,43 @@

Source code for deepcave.runs.status

-from enum import IntEnum
+# noqa: D400
+"""
+# Status
+
+This module provides the information about the status of a run.
+
+A utility to convert a string text to a simpler, lower case text format is provided.
+
+## Classes
+    - Status: Represent the status of a run as an Enum.
+
+## Constants
+    SUCCESS: int
+    TIMEOUT: int
+    MEMORYOUT: int
+    CRASHED: int
+    ABORTED: int
+    NOT_EVALUATED: int
+"""
+
+from enum import IntEnum
 
 
 
[docs] class Status(IntEnum): + """ + Represent the status of a run as an Enum. + + A utility to convert a string text to a simpler, lower case text format is provided. + + Properties + ---------- + name : str + The status name. + """ + SUCCESS = 1 TIMEOUT = 2 MEMORYOUT = 3 @@ -715,8 +746,19 @@

Source code for deepcave.runs.status

     ABORTED = 5
     NOT_EVALUATED = 6
 
+
+[docs] def to_text(self) -> str: + """ + Convert name to simpler, lower case text format. + + Returns + ------- + str + The converted name in lower case with spaces added + """ return self.name.lower().replace("_", " ")
+
diff --git a/development/_modules/deepcave/runs/trial.html b/development/_modules/deepcave/runs/trial.html index 9334c87c..e5468bda 100644 --- a/development/_modules/deepcave/runs/trial.html +++ b/development/_modules/deepcave/runs/trial.html @@ -702,7 +702,18 @@

Source code for deepcave.runs.trial

-from typing import Any, Dict, List, Tuple, Union
+#  noqa: D400
+"""
+# Trial
+
+This module provides the trial object.
+Utilities for handling the trial are provided.
+
+## Classes
+    - Trial: This class provides the trial object itself and multiple handling utilities.
+"""
+
+from typing import Any, Dict, List, Tuple, Union
 
 from dataclasses import dataclass
 
@@ -713,6 +724,27 @@ 

Source code for deepcave.runs.trial

 [docs]
 @dataclass
 class Trial:
+    """
+    Provide the trial object itself and multiple handling utilities.
+
+    Properties
+    ----------
+    status : Status
+        The status of the trial.
+    config_id : int
+        The identificator of the configuration.
+    budget : Union[int, float]
+        The budget for the trial.
+    costs : List[float]
+        A list of the costs of the trial.
+    start_time : float
+        The start time of the trial.
+    end_time : float
+        The end time of the trial.
+    additional : Dict[str, Any]
+        A dictionary of additional information of the trial.
+    """
+
     config_id: int
     budget: Union[int, float]
     costs: List[float]
@@ -721,18 +753,43 @@ 

Source code for deepcave.runs.trial

     status: Status
     additional: Dict[str, Any]
 
+
+[docs] def __post_init__(self) -> None: + """Set the status.""" if isinstance(self.status, int): self.status = Status(self.status) - assert isinstance(self.status, Status) + assert isinstance(self.status, Status)
- def get_key(self) -> Tuple[int, int]: + +
+[docs] + def get_key(self) -> Tuple[int, Union[int, float, None]]: + """ + Generate a key based on the configuration id and the budget. + + Returns + ------- + Tupel[int, int] + A Tuple representing a unique key based on the configuration id and the budget. + """ from deepcave.runs import AbstractRun - return AbstractRun.get_trial_key(self.config_id, self.budget) + return AbstractRun.get_trial_key(self.config_id, self.budget)
+ +
+[docs] def to_json(self) -> List[Any]: + """ + Convert trial object to JSON-compatible representation. + + Returns + ------- + List[Any] + A JSON-compatible list with the Trials attributes. + """ return [ self.config_id, self.budget, @@ -742,6 +799,7 @@

Source code for deepcave.runs.trial

             self.status,
             self.additional,
         ]
+
diff --git a/development/_modules/deepcave/utils/cache.html b/development/_modules/deepcave/utils/cache.html index 2cd841b1..ea62fce7 100644 --- a/development/_modules/deepcave/utils/cache.html +++ b/development/_modules/deepcave/utils/cache.html @@ -702,10 +702,21 @@

Source code for deepcave.utils.cache

-from typing import Any, Dict, Optional
+#  noqa: D400
+"""
+# Cache
+
+This module provides utilities to handle the cache.
+
+This includes reading, writing, set and get utilities, as well as clearing the cache.
+The cache handles a json file.
+
+## Classes
+    - Cache: Cache handles a json file.
+"""
+from typing import Any, Dict, Optional
 
 import json
-import logging
 from copy import deepcopy
 from pathlib import Path
 
@@ -720,14 +731,15 @@ 

Source code for deepcave.utils.cache

 [docs]
 class Cache:
     """
-    Cache handles a json file. Decided not to use flask_caching
-    since code is easier to change to our needs.
+    Cache handles a json file.
+
+    Decided not to use flask_caching since code is easier to change to our needs.
     """
 
     def __init__(
         self,
         filename: Optional[Path] = None,
-        defaults: Dict = None,
+        defaults: Optional[Dict] = None,
         debug: bool = False,
         write_file: bool = True,
     ) -> None:
@@ -742,6 +754,17 @@ 

Source code for deepcave.utils.cache

         self._setup(filename, write_file)
 
     def _setup(self, filename: Optional[Path], write_file: bool = True) -> None:
+        """
+        Initialize the setup.
+
+        Parameters
+        ----------
+        filename : Optional[Path]
+            The filename to be set.
+        write_file : bool, optional
+            Define whether do write the content of cache into a file.
+            Default is True.
+        """
         self._data = {}
         self._filename = filename
 
@@ -753,7 +776,7 @@ 

Source code for deepcave.utils.cache

 
[docs] def read(self) -> None: - """Reads content from a file and load into cache as dictionary.""" + """Read content from a file and load into cache as dictionary.""" if self._filename is None or not self._filename.exists(): return @@ -779,11 +802,27 @@

Source code for deepcave.utils.cache

 
 
[docs] - def set(self, *keys, value: Any, write_file: bool = True) -> None: + def set(self, *keys: str, value: Any, write_file: bool = True) -> None: """ Set a value from a chain of keys. + E.g. set("a", "b", "c", value=4) creates following dictionary: {"a": {"b": {"c": 4}}} + + Parameters + ---------- + *keys : str + The keys to set the value from. + value : Any + The value to be set. + write_file : bool, optional + Whether to write the constant of the cache into a file. + Default is True. + + Raises + ------ + RuntimeError + If the type of the key is not a string. """ name = "(empty)" if self._filename is not None: @@ -810,7 +849,17 @@

Source code for deepcave.utils.cache

 
[docs] def set_dict(self, d: Dict, write_file: bool = True) -> None: - """Updates cache to a specific value""" + """ + Update cache to a specific value. + + Parameters + ---------- + d : Dict + The dictionary to be set. + write_file : bool, optional + Whether to write the constant of the cache into a file. + Default is True. + """ self._data.update(d) if write_file: @@ -819,8 +868,20 @@

Source code for deepcave.utils.cache

 
 
[docs] - def get(self, *keys) -> Optional[Any]: - """Retrieve value for a specific key""" + def get(self, *keys: str) -> Optional[Any]: + """ + Retrieve value for a specific key. + + Parameters + ---------- + *keys : str + The key to retrieve the value from. + + Returns + ------- + Optional[Any] + The value of the key. + """ d = deepcopy(self._data) for key in keys: if key not in d: @@ -833,8 +894,20 @@

Source code for deepcave.utils.cache

 
 
[docs] - def has(self, *keys) -> bool: - """Check whether cache has specific key""" + def has(self, *keys: str) -> bool: + """ + Check whether cache has specific key. + + Parameters + ---------- + *keys : str + The key to check for. + + Returns + ------- + bool + Whether cache has specific key. + """ d = self._data for key in keys: if key not in d: @@ -847,11 +920,20 @@

Source code for deepcave.utils.cache

 
[docs] def clear(self, write_file: bool = True) -> None: - """Clear all cache and reset to defaults""" + """ + Clear all cache and reset to defaults. + + Parameters + ---------- + write_file : bool, optional + Whether to write the constant of the cache into a file. + Default is True. + """ filename = self._filename - if filename is not None and filename.exists(): - self._filename.unlink() + if self._filename is not None: + if self._filename.exists(): + self._filename.unlink() self._setup(filename, write_file=write_file)
diff --git a/development/_modules/deepcave/utils/cast.html b/development/_modules/deepcave/utils/cast.html new file mode 100644 index 00000000..ac1575ef --- /dev/null +++ b/development/_modules/deepcave/utils/cast.html @@ -0,0 +1,772 @@ + + + + + + + deepcave.utils.cast — DeepCAVE Documentation 1.2 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +

DeepCAVE Documentation

+
v1.2
+
+ + + + +
+ +
+ + + + + + +
+ +
+ +

Source code for deepcave.utils.cast

+#  noqa: D400
+"""
+# Cast
+
+This module provides a utility to convert any value to an int if possible.
+"""
+from typing import Any, Optional
+
+
+
+[docs] +def optional_int(value: Any) -> Optional[int]: + """ + Convert a value to an int if possible. + + Parameters + ---------- + value : Any + The value to be turned into an int. + + Returns + ------- + Optional[int] + The converted int value. + If not possible, return None. + """ + if value is None: + return None + + return int(value)
+ +
+ +
+ + + +
+
+ +
+ + +
+
+ + +
+
+ + + + + +
+
+ + \ No newline at end of file diff --git a/development/_modules/deepcave/utils/compression.html b/development/_modules/deepcave/utils/compression.html index 5b651b9f..392d19d7 100644 --- a/development/_modules/deepcave/utils/compression.html +++ b/development/_modules/deepcave/utils/compression.html @@ -702,7 +702,22 @@

Source code for deepcave.utils.compression

-from typing import Dict, List, TypeVar, Union
+#  noqa: D400
+"""
+# Compression
+
+This module provides utilities for serializing and deserializing a dataframe from/to a string.
+
+## Classes
+    - Encoder: This class defines a custom JSON Encoder.
+
+## Constants
+    - JSON_DENSE_SEPARATORS: Tuple(str, str)
+    - JSON_DEFAULT_SEPARATORS: Tuple(str, str)
+    - TYPE: TypeVar
+"""
+
+from typing import Any, Dict, List, TypeVar, Union
 
 import json
 
@@ -719,10 +734,35 @@ 

Source code for deepcave.utils.compression

 def serialize(data: Union[Dict, List, pd.DataFrame]) -> str:
     """
     Serialize a dataframe to a string.
+
+    Parameters
+    ----------
+    data : Union[Dict, List, pd.DataFrame]
+        The dataframe to be serialized.
+
+    Returns
+    -------
+    str
+        The serialized object as a JSON formatted string.
     """
 
     class Encoder(json.JSONEncoder):
-        def default(self, obj):
+        """Define a custom JSON Encoder."""
+
+        def default(self, obj: Any) -> Any:
+            """
+            Return the object as list if np.ndarray.
+
+            Parameters
+            ----------
+            obj : Any
+                The object to be converted.
+
+            Returns
+            -------
+            Any
+                The converted object.
+            """
             if isinstance(obj, np.ndarray):
                 return obj.tolist()
             return json.JSONEncoder.default(self, obj)
@@ -740,6 +780,19 @@ 

Source code for deepcave.utils.compression

 def deserialize(string: str, dtype: TYPE = pd.DataFrame) -> TYPE:
     """
     Deserialize a dataframe from a string.
+
+    Parameters
+    ----------
+    string : str
+        The string to be deserialized.
+    dtype : TYPE, optional
+        The type of the object.
+        Default is pd.DataFrame.
+
+    Returns
+    -------
+    TYPE
+        The deserialized object.
     """
     if dtype == pd.DataFrame:
         return pd.DataFrame.from_dict(json.loads(string))
diff --git a/development/_modules/deepcave/utils/configs.html b/development/_modules/deepcave/utils/configs.html
index 0a57d50f..403e4dfb 100644
--- a/development/_modules/deepcave/utils/configs.html
+++ b/development/_modules/deepcave/utils/configs.html
@@ -702,7 +702,14 @@
               

Source code for deepcave.utils.configs

-from typing import Optional
+#  noqa: D400
+"""
+# Configs
+
+This module provides a utility for parsing the configurations from a filename.
+"""
+
+from typing import Optional
 
 import importlib
 import os
@@ -716,7 +723,9 @@ 

Source code for deepcave.utils.configs

 [docs]
 def parse_config(filename: Optional[str] = None) -> Config:
     """
-    Parses the config given the filename. Both relative and absolute paths are possible.
+    Parse the config given the filename.
+
+    Both relative and absolute paths are possible.
 
     Parameters
     ----------
@@ -755,7 +764,7 @@ 

Source code for deepcave.utils.configs

             script_dir = path.stem  # That's the path without the script name
             module_name = p.stem  # That's the script name without the extension
 
-            # Now we add to sys path
+            # Now it is added to sys path
             sys.path.append(str(path))
 
             module = importlib.import_module(f"{script_dir}.{module_name}")
diff --git a/development/_modules/deepcave/utils/configspace.html b/development/_modules/deepcave/utils/configspace.html
index 71b61bb4..791e188a 100644
--- a/development/_modules/deepcave/utils/configspace.html
+++ b/development/_modules/deepcave/utils/configspace.html
@@ -702,10 +702,14 @@
               

Source code for deepcave.utils.configspace

-from typing import Generator, Iterator, List, Optional
+#  noqa: D400
+"""
+# ConfigSpace
 
-import random
-from itertools import islice, product
+This module samples random as well as border configurations.
+"""
+
+from typing import Iterator, Optional
 
 import numpy as np
 from ConfigSpace.configuration_space import Configuration, ConfigurationSpace
@@ -722,12 +726,12 @@ 

Source code for deepcave.utils.configspace

 [docs]
 def sample_border_config(configspace: ConfigurationSpace) -> Iterator[Configuration]:
     """
-    Generates border configurations from the configuration space.
+    Generate border configurations from the configuration space.
 
     Parameters
     ----------
     configspace : ConfigurationSpace
-        The configspace from which the hyperparameters are drawn from.
+        The configuration space from which the hyperparameters are drawn from.
 
     Yields
     ------
@@ -756,12 +760,12 @@ 

Source code for deepcave.utils.configspace

             config[hp_name] = value
 
         try:
-            config = deactivate_inactive_hyperparameters(config, configspace)
-            config.is_valid_configuration()
+            configuration = deactivate_inactive_hyperparameters(config, configspace)
+            configuration.is_valid_configuration()
         except Exception:
             continue
 
-        yield config
+ yield configuration
@@ -771,7 +775,7 @@

Source code for deepcave.utils.configspace

     configspace: ConfigurationSpace, d: Optional[int] = None
 ) -> Iterator[Configuration]:
     """
-    Generates random configurations from the configuration space.
+    Generate random configurations from the configuration space.
 
     Parameters
     ----------
@@ -779,8 +783,8 @@ 

Source code for deepcave.utils.configspace

         The configspace from which the hyperparameters are drawn from.
     d : Optional[int], optional
         The possible hyperparameter values can be reduced by this argument as the range gets
-        discretized. For example, an integer or float hyperparameter has only four possible values
-        if d=4. By default None (no discretization is done).
+        discretized. For example, an integer or float hyperparameter has only four possible
+        values if d=4. By default, None (no discretization is done).
 
     Yields
     ------
@@ -796,7 +800,7 @@ 

Source code for deepcave.utils.configspace

     rng = np.random.RandomState(0)
 
     while True:
-        config = {}
+        config_dict = {}
 
         # Iterates over the hyperparameters to get considered values
         for hp_name, hp in zip(
@@ -826,15 +830,15 @@ 

Source code for deepcave.utils.configspace

 
             # Get a random choice
             value = rng.choice(values)
-            config[hp_name] = value
+            config_dict[hp_name] = value
 
         try:
-            config = deactivate_inactive_hyperparameters(config, configspace)
-            config.is_valid_configuration()
+            configuration = deactivate_inactive_hyperparameters(config_dict, configspace)
+            configuration.is_valid_configuration()
         except Exception:
             continue
 
-        yield config
+ yield configuration
diff --git a/development/_modules/deepcave/utils/dash.html b/development/_modules/deepcave/utils/dash.html index 3f403fb2..819e6dcf 100644 --- a/development/_modules/deepcave/utils/dash.html +++ b/development/_modules/deepcave/utils/dash.html @@ -702,16 +702,35 @@

Source code for deepcave.utils.dash

-import dash_bootstrap_components as dbc
+#  noqa: D400
+"""
+# Dash
+
+This module provides utilities to return and flash alerts.
+"""
+
+import dash_bootstrap_components as dbc
 
 
 
[docs] -def flash(message: str, category: str = "info"): +def flash(message: str, category: str = "info") -> dbc.Alert: """ Flask style flash-message with Alerts. - """ + Parameters + ---------- + message : str + The message to be displayed. + category : str, optional + The category of the alert. + Default is "info". + + Returns + ------- + dbc.Alert + The alert object. + """ return dbc.Alert( message, id=f"alert_{hash(message)}", @@ -723,8 +742,24 @@

Source code for deepcave.utils.dash

 
 
 
-def alert(message: str):
-    return flash(message, "danger")
+
+[docs] +def alert(message: str) -> dbc.Alert: + """ + Return an alert message. + + Parameters + ---------- + message : str + The message of the alert. + + Returns + ------- + dbc.Alert + The alert object. + """ + return flash(message, "danger")
+
diff --git a/development/_modules/deepcave/utils/data_structures.html b/development/_modules/deepcave/utils/data_structures.html index 3dfb289d..6662093b 100644 --- a/development/_modules/deepcave/utils/data_structures.html +++ b/development/_modules/deepcave/utils/data_structures.html @@ -702,14 +702,21 @@

Source code for deepcave.utils.data_structures

-from typing import Dict
+#  noqa: D400
+"""
+# Data Structures
+
+This module can be used for updating one dictionary with another dictionary inplace.
+"""
+
+from typing import Dict
 
 
 
[docs] def update_dict(a: Dict[str, Dict], b: Dict[str, Dict]) -> None: """ - Updates dictionary a with dictionary b inplace. + Update dictionary a with dictionary b inplace. Parameters ---------- diff --git a/development/_modules/deepcave/utils/docs.html b/development/_modules/deepcave/utils/docs.html new file mode 100644 index 00000000..70a89463 --- /dev/null +++ b/development/_modules/deepcave/utils/docs.html @@ -0,0 +1,817 @@ + + + + + + + deepcave.utils.docs — DeepCAVE Documentation 1.2 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +

DeepCAVE Documentation

+
v1.2
+
+ + + + +
+ +
+ + + + + + +
+ +
+ +

Source code for deepcave.utils.docs

+#  noqa: D400
+"""
+# Docs
+
+This module provides a function to convert reStructuredText (RST) to MarkDown (MD).
+"""
+
+from __future__ import annotations
+
+import re
+from pathlib import Path
+
+
+
+[docs] +def rst_to_md(filename: str | Path) -> str: + """ + Convert a subset of reStructuredText (RST) to MarkDown (MD). + + Parameters + ---------- + filename : str | Path + The path to the reStructuredText (RST) file. + + Returns + ------- + str + The converted data in MarkDown (MD) format. + """ + if isinstance(filename, Path): + filename = str(filename) + + with open(filename, "r") as file: + data = file.read() + + # Remove reference + result = re.finditer(r":ref:`(.*?)<(.*?)>`", data) + for match in result: + a = match.group(0) + b = f"``{match.group(1)}``" + data = data.replace(a, b) + + # Remove terms + result = re.finditer(r":term:`(.*?) <(.*?)>`", data) + for match in result: + a = match.group(0) + b = f"``{match.group(1)}``" + data = data.replace(a, b) + + # Changing links + result = re.finditer(r"`(.*?) <(.*?)>`_", data) + for match in result: + a = match.group(0) + b = f"[{match.group(1)}]({match.group(1)})" + data = data.replace(a, b) + + # Remove images + result = re.finditer(r".. image::(.*?)\n", data) + for match in result: + a = match.group(0) + data = data.replace(a, "") + + # Remove notes/warnings (not the best implementation but sufficient for now) + data = data.replace(".. note::", "#### Note\n-----") + data = data.replace(".. note ::", "#### Note\n-----") + data = data.replace(".. warning::", "#### Warning\n-----") + data = data.replace(".. warning ::", "#### Warning\n-----") + data = data.replace(".. code::", "#### Code\n-----") + data = data.replace(".. code ::", "#### Code\n-----") + + # Remove last \n + if data.endswith("\n"): + data = data[:-2] + + return data
+ +
+ +
+ + + +
+
+ +
+ + +
+
+ + +
+
+ + + + + +
+
+ + \ No newline at end of file diff --git a/development/_modules/deepcave/utils/files.html b/development/_modules/deepcave/utils/files.html new file mode 100644 index 00000000..8606d973 --- /dev/null +++ b/development/_modules/deepcave/utils/files.html @@ -0,0 +1,773 @@ + + + + + + + deepcave.utils.files — DeepCAVE Documentation 1.2 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +

DeepCAVE Documentation

+
v1.2
+
+ + + + +
+ +
+ + + + + + +
+ +
+ +

Source code for deepcave.utils.files

+#  noqa: D400
+"""
+# Files
+
+This module provides a utility to create directories from a filename.
+"""
+
+from typing import Union
+
+from pathlib import Path
+
+
+
+[docs] +def make_dirs(filename: Union[str, Path], parents: bool = True) -> None: + """ + Create a directory. + + Parameters + ---------- + filename : Union[str, Path] + The name and path of the file. + parents : bool, optional + Whether intermediate directories should be created. + Default is True. + """ + path = Path(filename) + if path.suffix != "": # Is file + path = path.parent + + path.mkdir(exist_ok=True, parents=parents)
+ +
+ +
+ + + +
+
+ +
+ + +
+
+ + +
+
+ + + + + +
+
+ + \ No newline at end of file diff --git a/development/_modules/deepcave/utils/hash.html b/development/_modules/deepcave/utils/hash.html new file mode 100644 index 00000000..24b80a8d --- /dev/null +++ b/development/_modules/deepcave/utils/hash.html @@ -0,0 +1,796 @@ + + + + + + + deepcave.utils.hash — DeepCAVE Documentation 1.2 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +

DeepCAVE Documentation

+
v1.2
+
+ + + + +
+ +
+ + + + + + +
+ +
+ +

Source code for deepcave.utils.hash

+#  noqa: D400
+"""
+# Hash
+
+This module provides utilities to convert strings and files to hash.
+"""
+
+import hashlib
+from pathlib import Path
+
+
+
+[docs] +def string_to_hash(string: str) -> str: + """ + Convert a string to a hash. + + Parameters + ---------- + string : str + The string to be converted to hash. + + Returns + ------- + str + The hash object. + """ + hash_object = hashlib.md5(string.encode()) + return hash_object.hexdigest()
+ + + +
+[docs] +def file_to_hash(filename: Path) -> str: + """ + Convert a file to a hash. + + Parameters + ---------- + filename : Path + The path to the file to be converted. + + Returns + ------- + str + The hash object. + """ + hash = hashlib.md5() + with Path(filename).open("rb") as f: + while chunk := f.read(4082): + hash.update(chunk) + + return hash.hexdigest()
+ +
+ +
+ + + +
+
+ +
+ + +
+
+ + +
+
+ + + + + +
+
+ + \ No newline at end of file diff --git a/development/_modules/deepcave/utils/layout.html b/development/_modules/deepcave/utils/layout.html index 58692229..97891012 100644 --- a/development/_modules/deepcave/utils/layout.html +++ b/development/_modules/deepcave/utils/layout.html @@ -702,7 +702,15 @@

Source code for deepcave.utils.layout

-from typing import Any, Dict, List, Optional
+#  noqa: D400
+"""
+# Layout
+
+This module provides utilities to customize the layout.
+
+This includes a help button, slider marks, select/checklist/radio options.
+"""
+from typing import Any, Dict, List, Optional, Union
 
 import uuid
 
@@ -713,7 +721,26 @@ 

Source code for deepcave.utils.layout

 from deepcave.utils.hash import string_to_hash
 
 
-def help_button(text: str, placement="top"):
+
+[docs] +def help_button(text: str, placement: str = "top") -> html.Span: + """ + Generate button with help icon. + + Displays popover when hovered over that contains the provided text. + + Parameters + ---------- + text : str + The text that will be displayed in the popover. + placement : str, optional + The placement of the button, default is Top. + + Returns + ------- + html.Span + An html structure, that wraps the icon and the popover. + """ id = "help-button-" + string_to_hash(text) id += str(uuid.uuid1()) @@ -727,19 +754,46 @@

Source code for deepcave.utils.layout

                 placement=placement,
             ),
         ]
-    )
+    )
+ -def render_table(df): +def render_table(df: pd.DataFrame) -> None: # noqa: D103 pass +
+[docs] def get_slider_marks( - strings: Optional[List[Dict[str, Any]]] = None, steps=10, access_all=False -) -> Dict[int, str]: + strings: Optional[List[Any]] = None, + steps: int = 10, + access_all: bool = False, +) -> Dict[int, Dict[str, str]]: + """ + Generate a dictionary containing slider marks. + + The slider marks are based on the provided list of dictionaries. + + Parameters + ---------- + strings : Optional[List[Dict[str, Any]]], optional + List of dictionaries containing information about the marks. + Default value is None. + steps : int, optional + Number of steps or marks on the slider. + Default is 10. + access_all : bool, optional + Indicates whether to create marks for all items. + Default is False. + + Returns + ------- + Dict[int, Dict[str, str]] + Contains information about the positions and labels of the marks. + """ marks = {} if strings is None: - marks[0] = {"label": str("None")} + marks[0] = {"label": "None"} return marks if len(strings) < steps: @@ -755,19 +809,51 @@

Source code for deepcave.utils.layout

     # Also include the last mark
     marks[len(strings) - 1] = {"label": str(strings[-1])}
 
-    return marks
+    return marks
+
[docs] def get_select_options( - labels=None, values=None, disabled=None, binary=False + labels: Any = None, + values: Any = None, + disabled: Union[List[bool], None] = None, + binary: bool = False, ) -> List[Dict[str, Any]]: """ - If values are none use labels as values. - If both are none return empty list. - """ + Get dictionaries of the selected options. + If values are none use labels as values. If both are none return empty list. + + Parameters + ---------- + labels : Any, optional + To specify the labels of the options. + If labels are None, use values als labels. + Default is None. + values : Any, optional + To specify the values corresponding to the options. + If values are None, use labels as values. + Default is None + disabled : Union[List[Bool], None], optional + A list containing information whether each option should be disabled or not. + Default is None. + binary : bool, optional + Define whether to return two dictionaries with binary choices. + Only when both values and labels are None. + Default is False. + + Returns + ------- + List[Dict[str, Any]] + A list of dictionaries of the selected options. + + Raises + ------ + ValueError + If the labels and values do not have the same length. + """ if labels is None and values is None: if binary: return [{"label": "Yes", "value": True}, {"label": "No", "value": False}] @@ -794,17 +880,114 @@

Source code for deepcave.utils.layout

 
 
 
-def get_checklist_options(labels=None, values=None, binary=False):
-    return get_select_options(labels=labels, values=values, binary=binary)
+
+[docs] +def get_checklist_options( + labels: Any = None, values: Any = None, binary: bool = False +) -> List[Dict[str, Any]]: + """ + Get a list of dictionaries of checklist options. + + Parameters + ---------- + labels : Any, optional + To specify the labels of the options. + If labels are None, use values als labels. + Default is None. + values : Any, optional + To specify the values corresponding to the options. + If values are None, use labels as values. + Default is None + binary : bool, optional + Define whether to return two dictionaries with binary choices. + Only when both values and labels are None. + Default is False. + + Returns + ------- + List[Dict[str, Any]] + A list of dictionaries of the checklist options. + + Raises + ------ + ValueError + If the labels and values do not have the same length. + """ + return get_select_options(labels=labels, values=values, binary=binary)
+ + +
+[docs] +def get_radio_options( + labels: Any = None, values: Any = None, binary: Any = False +) -> List[Dict[str, Any]]: + """ + Get a list of dictionaries of radio options. -def get_radio_options(labels=None, values=None, binary=False): - return get_select_options(labels=labels, values=values, binary=binary) + Parameters + ---------- + labels : Any, optional + To specify the labels of the options. + If labels are None, use values als labels. + Default is None. + values : Any, optional + To specify the values corresponding to the options. + If values are None, use labels as values. + Default is None + binary : bool, optional + Define whether to return two dictionaries with binary choices. + Only when both values and labels are None. + Default is False. + Returns + ------- + List[Dict[str, Any]] + A list of dictionaries of the radio options. + Raises + ------ + ValueError + If the labels and values do not have the same length. + """ + return get_select_options(labels=labels, values=values, binary=binary)
+ + + +
+[docs] def create_table( - output: Dict[str, str], fixed=False, head=True, striped=True, mb=True + output: Dict[str, List[str]], + fixed: bool = False, + head: bool = True, + striped: bool = True, + mb: bool = True, ) -> dbc.Table: + """ + Create a table from the given data. + + Parameters + ---------- + output : Dict[str, List[str]] + Containing the information for the table. + fixed : bool, optional + Indicates whether the table has a fixed layout. + Default is False. + head : bool, optional + Indicates whether the head will be included. + Default is True. + striped : bool, optional + Indicates whether the rows will be striped. + Default is True. + mb : bool, optional + Indicates whether the table has a margin. + Default is True. + + Returns + ------- + dbc.Table + The created dash bootstrap component (DBC) table. + """ className = "" if not head: className += "exclude-head " @@ -813,7 +996,8 @@

Source code for deepcave.utils.layout

     className += "mb-0" if not mb else ""
     df = pd.DataFrame(output)
 
-    return dbc.Table.from_dataframe(df, striped=striped, bordered=True, className=className)
+    return dbc.Table.from_dataframe(df, striped=striped, bordered=True, className=className)
+
diff --git a/development/_modules/deepcave/utils/logs.html b/development/_modules/deepcave/utils/logs.html new file mode 100644 index 00000000..020c3608 --- /dev/null +++ b/development/_modules/deepcave/utils/logs.html @@ -0,0 +1,781 @@ + + + + + + + deepcave.utils.logs — DeepCAVE Documentation 1.2 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +

DeepCAVE Documentation

+
v1.2
+
+ + + + +
+ +
+ + + + + + +
+ +
+ +

Source code for deepcave.utils.logs

+#  noqa: D400
+"""
+# Logs
+
+This module sets up and gets the logging configuration.
+"""
+
+import logging
+import logging.config
+from pathlib import Path
+
+import yaml
+
+import deepcave
+
+path = Path() / deepcave.__file__
+with (path.parent / "utils" / "logging.yml").open("r") as stream:
+    config = yaml.load(stream, Loader=yaml.FullLoader)
+
+logging.config.dictConfig(config)
+
+
+
+[docs] +def get_logger(logger_name: str) -> logging.Logger: + """ + Get the logger corresponding to the logger name. + + Parameters + ---------- + logger_name : str + The name of the logger. + + Returns + ------- + logging.Logger + The logger corresponding to the logger name. + """ + return logging.getLogger(logger_name)
+ +
+ +
+ + + +
+
+ +
+ + +
+
+ + +
+
+ + + + + +
+
+ + \ No newline at end of file diff --git a/development/_modules/deepcave/utils/notification.html b/development/_modules/deepcave/utils/notification.html new file mode 100644 index 00000000..f4caecc9 --- /dev/null +++ b/development/_modules/deepcave/utils/notification.html @@ -0,0 +1,811 @@ + + + + + + + deepcave.utils.notification — DeepCAVE Documentation 1.2 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +

DeepCAVE Documentation

+
v1.2
+
+ + + + +
+ +
+ + + + + + +
+ +
+ +

Source code for deepcave.utils.notification

+#  noqa: D400
+"""
+# Notification
+
+This module provides utilities for creating, updating and resetting notifications.
+
+## Classes
+    - Notification: Can create, update and reset a notification.
+"""
+from typing import Optional, Tuple
+
+
+
+[docs] +class Notification: + """Can create, update and reset a notification.""" + + def __init__(self) -> None: + self._update_required = False + self._message: Optional[str] = None + self._color: Optional[str] = None + +
+[docs] + def reset(self) -> None: + """Reset the notification.""" + self._update_required = False + self._message = None + self._color = None
+ + +
+[docs] + def update(self, message: str, color: str = "danger") -> None: + """ + Update the notification. + + Parameters + ---------- + message : str + The message of the notification. + color : str, optional + The color of the notification. + Default is "danger". + """ + self._update_required = True + self._message = message + self._color = color
+ + +
+[docs] + def get_latest(self) -> Optional[Tuple[str, str]]: + """ + Retrieve the latest notification and reset. + + Returns + ------- + Optional[Tuple[str, str]] + The latest notification + """ + if self._update_required and self._message is not None and self._color is not None: + result = (self._message, self._color) + self.reset() + + return result + + return None
+
+ +
+ +
+ + + +
+
+ +
+ + +
+
+ + +
+
+ + + + + +
+
+ + \ No newline at end of file diff --git a/development/_modules/deepcave/utils/run_caches.html b/development/_modules/deepcave/utils/run_caches.html index 8e24feca..73edf6e9 100644 --- a/development/_modules/deepcave/utils/run_caches.html +++ b/development/_modules/deepcave/utils/run_caches.html @@ -702,13 +702,25 @@

Source code for deepcave.utils.run_caches

-from typing import Any, Dict, Iterator, Optional, Union
+#  noqa: D400
+"""
+# RunCaches
+
+This module defines a class for holding the caches for selected runs.
+
+Utilities provided include updating, getting, setting and clearing.
+
+## Classes
+    - RunCaches: Hold the caches for the selected runs.
+"""
+
+from typing import Any, Dict, Optional
 
 import shutil
 
+from deepcave.config import Config
 from deepcave.runs import AbstractRun
 from deepcave.utils.cache import Cache
-from deepcave.utils.hash import string_to_hash
 from deepcave.utils.logs import get_logger
 
 
@@ -716,11 +728,20 @@ 

Source code for deepcave.utils.run_caches

 [docs]
 class RunCaches:
     """
-    Holds the caches for the selected runs. The caches are used for the plugins to store the
+    Hold the caches for the selected runs.
+
+    The caches are used for the plugins to store the
     raw outputs so that raw outputs must not be calculated again.
 
     Each input has its own cache. This change was necessary because it ensures that not all data
-    are loaded if they are not needed.
+    is loaded if not needed.
+
+    Properties
+    ----------
+    cache_dir : Path
+        The path to the cache directory of the run.
+    logger : Logger
+        The logger for the run cache.
     """
 
     def __init__(self, config: "Config"):
@@ -732,7 +753,8 @@ 

Source code for deepcave.utils.run_caches

 [docs]
     def update(self, run: AbstractRun) -> bool:
         """
-        Updates the cache for the given run. If the cache does not exists it will be created.
+        Update the cache for the given run. If the cache does not exists it will be created.
+
         If the run hash is different from the saved variant the cache will be reset.
 
         Parameters
@@ -797,9 +819,9 @@ 

Source code for deepcave.utils.run_caches

 
 
[docs] - def get(self, run: AbstractRun, plugin_id: str, inputs_key: str) -> Dict[str, Any]: + def get(self, run: AbstractRun, plugin_id: str, inputs_key: str) -> Optional[Dict[str, Any]]: """ - Returns the raw outputs for the given run, plugin and inputs key. + Return the raw outputs for the given run, plugin and inputs key. Parameters ---------- @@ -812,8 +834,13 @@

Source code for deepcave.utils.run_caches

 
         Returns
         -------
-        Dict[str, Any]
+        Optional[Dict[str, Any]]
             Raw outputs for the given run, plugin and inputs key.
+
+        Raises
+        ------
+        AssertionError
+            If the outputs of the cache are not a dict.
         """
         filename = self.cache_dir / run.id / plugin_id / f"{inputs_key}.json"
 
@@ -821,14 +848,17 @@ 

Source code for deepcave.utils.run_caches

             return None
 
         cache = Cache(filename, debug=self._debug, write_file=False)
-        return cache.get("outputs")
+ outputs = cache.get("outputs") + assert isinstance(outputs, dict), "Outputs of cache must be a dict." + return outputs
[docs] def set(self, run: AbstractRun, plugin_id: str, inputs_key: str, value: Any) -> None: """ - Sets the value for the given run, plugin and inputs key. + Set the value for the given run, plugin and inputs key. + Since each input key has it's own cache, only necessary data are loaded. Parameters @@ -850,18 +880,14 @@

Source code for deepcave.utils.run_caches

 
[docs] def clear_run(self, run: AbstractRun) -> None: - """ - Removes all caches for the given run. - """ + """Remove all caches for the given run.""" shutil.rmtree(self.cache_dir / run.id)
[docs] def clear(self) -> None: - """ - Removes all caches. - """ + """Remove all caches.""" try: shutil.rmtree(self.cache_dir) except Exception: diff --git a/development/_modules/deepcave/utils/styled_plot.html b/development/_modules/deepcave/utils/styled_plot.html index 4b023b7a..06fcbf18 100644 --- a/development/_modules/deepcave/utils/styled_plot.html +++ b/development/_modules/deepcave/utils/styled_plot.html @@ -702,18 +702,38 @@

Source code for deepcave.utils.styled_plot

-from distutils.spawn import find_executable
+#  noqa: D400
+"""
+# StyledPlot
 
-import matplotlib
+This module provides utilities to customize functions from the matplotlib.
+Plots can be created and different parameters of the plots can be defined.
+
+## Classes
+    - StyledPlot: Overwrites default settings from matplotlib.pyplot.
+
+## Constants
+    FIG_WIDTH: float
+    FIG_HEIGHT: float
+"""
+
+from typing import Any, Dict, Optional, Union
 
-matplotlib.use("Agg")
 import base64
 import io
+from distutils.spawn import find_executable
+from pathlib import Path
 
+import matplotlib
 import matplotlib.pyplot as plt
+import numpy as np
+from numpy.typing import ArrayLike
 
 from deepcave.utils.logs import get_logger
 
+matplotlib.use("Agg")
+
+
 # IEEETrans double column standard
 FIG_WIDTH = 252.0 / 72.27  # 1pt is 1/72.27 inches
 FIG_HEIGHT = FIG_WIDTH / 1.618  # golden ratio
@@ -727,10 +747,17 @@ 

Source code for deepcave.utils.styled_plot

 class StyledPlot:
     """
     Overwrites default settings from matplotlib.pyplot.
+
     If a function is not overwritten, the default function will be used.
+
+    Properties
+    ----------
+    plt : Module("matplotlib.pyplot")
+        The matplotlib plot.
+        The style used is seaborn.
     """
 
-    def __init__(self):
+    def __init__(self) -> None:
         plt.style.use("seaborn-v0_8")
 
         # Set MatPlotLib defaults
@@ -753,7 +780,29 @@ 

Source code for deepcave.utils.styled_plot

 
         self.plt = plt
 
-    def figure(self, cols=1, rows=1, dpi=200):
+
+[docs] + def figure(self, cols: int = 1, rows: int = 1, dpi: int = 200) -> plt.Figure: + """ + Create a new figure using the input values. + + Parameters + ---------- + cols : int, optional + The number of the columns. + Default is 1. + rows : int, optional + The number of the rows. + Default is 1. + dpi : int, optional + The dots per inches (dpi). + Default is 200. + + Returns + ------- + plt.Figure + The figure created with the input information. + """ # Clean all self.plt.cla() self.plt.clf() @@ -761,14 +810,36 @@

Source code for deepcave.utils.styled_plot

         f = self.plt.figure(figsize=(FIG_WIDTH * cols, FIG_HEIGHT * rows), dpi=dpi)
         f.tight_layout()
 
-        return f
+        return f
+ - def save_figure(self, filename): +
+[docs] + def save_figure(self, filename: Union[str, Path]) -> None: + """ + Save the figure/plot at the given filename. + + Parameters + ---------- + filename : Union[str, Path] + The name of the file the plot will be saved at. + """ self.plt.savefig(filename, dpi=400, bbox_inches="tight") - self.plt.close() + self.plt.close()
- def render(self): - # Ccreate a virtual file which matplotlib can use to save the figure + +
+[docs] + def render(self) -> str: + """ + Render the Styled Plot for displaying. + + Returns + ------- + str + The rendered plot. + """ + # Create a virtual file which matplotlib can use to save the figure buffer = io.BytesIO() self.plt.savefig(buffer, dpi=400, bbox_inches="tight") buffer.seek(0) @@ -776,26 +847,76 @@

Source code for deepcave.utils.styled_plot

         # Display any kind of image taken from
         # https://github.com/plotly/dash/issues/71
         encoded_image = base64.b64encode(buffer.read())
-        return "data:image/png;base64,{}".format(encoded_image.decode())
+        return "data:image/png;base64,{}".format(encoded_image.decode())
+ - def xlim(self, xmin, xmax): +
+[docs] + def xlim(self, xmin: Union[float, int], xmax: Union[float, int]) -> None: + """ + Set the x-axis limits with a margin of a matplotlib plot. + + Parameters + ---------- + xmin : Union[float, int] + The lower x-axis limit. + xmax : Union[float, int] + The upper x-axis limit. + """ xmin_with_margin = xmin - 0.05 * (xmax - xmin) xmax_with_margin = xmax + 0.05 * (xmax - xmin) - self.plt.xlim(xmin_with_margin, xmax_with_margin) + self.plt.xlim(xmin_with_margin, xmax_with_margin)
+ - def ylim(self, ymin, ymax, margin=True): +
+[docs] + def ylim(self, ymin: Union[float, int], ymax: Union[float, int], margin: bool = True) -> None: + """ + Set the y-axis limit of a matplotlib plot. + + Parameters + ---------- + ymin : Union[float, int] + The lower y-axis limit. + ymax : Union[float, int] + The upper y-axis limit. + margin : bool, optional + Determines whether a margin should be added to the limits. + Default is True. + """ if margin: ymin_with_margin = ymin - 0.05 * (ymax - ymin) ymax_with_margin = ymax + 0.05 * (ymax - ymin) self.plt.ylim(ymin_with_margin, ymax_with_margin) else: - self.plt.ylim(ymin, ymax) + self.plt.ylim(ymin, ymax)
+ # def grid(self): # pass - # #self.plt.grid(b=True, color='black', linestyle='--', linewidth=0.5, axis='y', zorder=0, alpha=0.5) + # # self.plt.grid(b=True, color='black', linestyle='--', linewidth=0.5, axis='y', zorder=0, + # # alpha=0.5) + +
+[docs] + def boxplot( + self, values: np.ndarray, positions: ArrayLike, color: str, widths: float = 0.5 + ) -> None: + """ + Create a boxplot on a matplotlib plot. - def boxplot(self, values, positions, color, widths=0.5): + Parameters + ---------- + values : np.ndarray + Values to create the boxplot. + positions : ArrayLike + The position of the boxplot. + color : str + The color of the boxes as well as other elements in the plot. + widths : float, optional + The width of the boxes. + Default is 0.5. + """ bp = self.plt.boxplot(values, positions=positions, patch_artist=True, widths=widths) for box in bp["boxes"]: @@ -820,10 +941,39 @@

Source code for deepcave.utils.styled_plot

                 markeredgecolor="none",
                 color=color,
                 alpha=0.5,
-            )
+            )
+ - def legend(self, cols=1, loc=None, title=None, outside=False): - kwargs = { +
+[docs] + def legend( + self, + cols: int = 1, + loc: Optional[str] = None, + title: Optional[str] = None, + outside: bool = False, + ) -> None: + """ + Customize and add a legend to a matplot plot. + + Customize the placement and appearance of the legend. + + Parameters + ---------- + cols : int, optional + The number of the columns. + Default is 1 + loc : Optional[str], optional + The location of the legend. + Default is None. + title : Optional[str], optional + The title for the legend. + Default is None. + outside : bool, optional + Determines if a legend is placed outside of plot area. + Default is False. + """ + kwargs: Dict[str, Any] = { "ncol": cols, "columnspacing": 0.8, "labelspacing": 0, @@ -850,32 +1000,45 @@

Source code for deepcave.utils.styled_plot

             legend.get_frame().set_edgecolor("white")
         else:
             legend.get_frame().set_linewidth(0.5)
-            legend.get_frame().set_edgecolor("gray")
+            legend.get_frame().set_edgecolor("gray")
+ + +
+[docs] + def get_color(self, id: int) -> str: + """ + Get the color from color palette based on the given id. + + Parameters + ---------- + id : int + id for retrieving a specific color. - def get_color(self, id): + Returns + ------- + str + The color from the color palette. + """ import seaborn as sns pal = sns.color_palette() hex_codes = pal.as_hex() + return hex_codes[id % len(hex_codes)]
- return hex_codes[id % len(hex_codes)]
[docs] - def __getattr__(self, name): - """ - Make sure we access self.plt directly. - """ - + def __getattr__(self, name: str) -> Any: + """Make sure self.plt is accessed directly.""" try: return self.__getattribute__(name) - except: + except AttributeError: return self.plt.__getattribute__(name)
-plt = StyledPlot() +plot = StyledPlot()
diff --git a/development/_modules/deepcave/utils/styled_plotty.html b/development/_modules/deepcave/utils/styled_plotty.html index 65279bdb..f1c27799 100644 --- a/development/_modules/deepcave/utils/styled_plotty.html +++ b/development/_modules/deepcave/utils/styled_plotty.html @@ -702,7 +702,15 @@

Source code for deepcave.utils.styled_plotty

-from typing import Any, Callable, List, Optional, Tuple, Union
+# noqa: D400
+"""
+# Styled Plotty
+
+This module provides utilities for styling and customizing different plots with plotly.
+For this, it uses plotly as well as dash.
+"""
+
+from typing import Any, Callable, List, Optional, Tuple, Union
 
 import itertools
 import re
@@ -721,6 +729,7 @@ 

Source code for deepcave.utils.styled_plotty

from deepcave import interactive
 from deepcave.constants import CONSTANT_VALUE, NAN_LABEL, NAN_VALUE
+from deepcave.runs import AbstractRun
 from deepcave.utils.logs import get_logger
 
 logger = get_logger(__name__)
@@ -731,24 +740,25 @@ 

Source code for deepcave.utils.styled_plotty

@interactive
 def save_image(figure: go.Figure, name: str) -> None:
     """
-    Saves a plotly figure as an image.
+    Save a plotly figure as an image.
 
     Parameters
     ----------
-    fig : go.Figure
+    figure : go.Figure
         Plotly figure.
     name : str
-        Name of the image with extension. Will be automatically saved to the cache.
+        Name of the image with extension.
+        Will be automatically saved to the cache.
     """
-    from deepcave.config import Config
+    from deepcave import config
 
-    if not Config.SAVE_IMAGES:
+    if not config.SAVE_IMAGES:
         return
 
     ratio = 16 / 9
     width = 500
     height = int(width / ratio)
-    path = Config.CACHE_DIR / "figures" / name
+    path = config.CACHE_DIR / "figures" / name
 
     figure.write_image(path, width=width, height=height)
     logger.info(f"Saved figure {name} to {path}.")
@@ -759,10 +769,27 @@

Source code for deepcave.utils.styled_plotty

[docs]
 def hex_to_rgb(hex_string: str) -> Tuple[int, int, int]:
     """
-    Converts a hex_string to a tuple of rgb values.
+    Convert a hex_string to a tuple of rgb values.
+
     Requires format including #, e.g.:
     #000000
     #ff00ff
+
+    Parameters
+    ----------
+    hex_string : str
+        The hex string to be converted.
+
+    Returns
+    -------
+    Tuple[int, int, int]
+        A Tuple of the converted RGB values
+
+    Raises
+    ------
+    ValueError
+        If the hex string is longer than 7.
+        If there are invalid characters in the hex string.
     """
     if len(hex_string) != 7:
         raise ValueError(f"Invalid length for #{hex_string}")
@@ -781,7 +808,19 @@ 

Source code for deepcave.utils.styled_plotty

[docs]
 def get_color(id_: int, alpha: float = 1) -> Union[str, Tuple[float, float, float, float]]:
     """
-    Using Plotly palette for the first 10 ids and Alphabet palette for the next 26, currently 36 colors are possible.
+    Get an RGBA Color, currently (Plotly version 5.3.1) there are 10 possible colors.
+
+    Parameters
+    ----------
+    id_ : int
+        ID for retrieving a specific color.
+    alpha : float, optional
+        Alpha value for the color, by default 1.
+
+    Returns
+    -------
+    Union[str, Tuple[float, float, float, float]]
+        The color from the color palette.
     """
     if id_ < 10:
         color = px.colors.qualitative.Plotly[id_]
@@ -795,19 +834,27 @@ 

Source code for deepcave.utils.styled_plotty

 [docs]
-def get_discrete_heatmap(x, y, values: List[Any], labels: List[Any]):
+def get_discrete_heatmap(
+    x: List[Union[float, int]], y: List[int], values: List[Any], labels: List[Any]
+) -> go.Heatmap:
     """
     Generate a discrete colorscale from a (nested) list or numpy array of values.
 
     Parameters
     ----------
-    values : _type_
-        _description_
+    x : List[Union[float, int]]
+        List of values that present the x-axis of the heatmap.
+    y : List[int]
+         List of values that present the y-axis of the heatmap.
+    values : List[Any]
+        Contains the data values for the heatmap.
+    labels : List[Any]
+        Contains the labels corresponding to the values.
 
     Returns
     -------
-    _type_
-        _description_
+    go.Heatmap
+        A Plotly Heatmap object corresponding to the input.
     """
     flattened_values = list(itertools.chain(*values))
     flattened_labels = list(itertools.chain(*labels))
@@ -827,8 +874,8 @@ 

Source code for deepcave.utils.styled_plotty

unique_sorted_values += [unique_values[idx]]
         unique_sorted_labels += [unique_labels[idx]]
 
-    # Now we give them new ids and we want to create new z values
-    # For that we need a mapping from old to new
+    # Now they are given new ids, and new z values should be created
+    # For that a mapping from old to new is needed
     mapping = {}
     v = []
     for new, old in enumerate(unique_sorted_values):
@@ -840,8 +887,11 @@ 

Source code for deepcave.utils.styled_plotty

for i2, v2 in enumerate(v1):
             z[i1][i2] = mapping[v2]
 
-    n_intervals = v + [len(v)]
-    n_intervals = [(i - n_intervals[0]) / (n_intervals[-1] - n_intervals[0]) for i in n_intervals]
+    n_intervals_int = v + [len(v)]
+    n_intervals = [
+        (i - n_intervals_int[0]) / (n_intervals_int[-1] - n_intervals_int[0])
+        for i in n_intervals_int
+    ]
     colors = [get_color(i) for i in range(len(n_intervals))]
 
     discrete_colorscale = []
@@ -851,12 +901,12 @@ 

Source code for deepcave.utils.styled_plotty

tickvals = [np.mean(n_intervals[k : k + 2]) for k in range(len(n_intervals) - 1)]
     ticktext = unique_sorted_labels
 
-    x = [str(i) for i in x]
-    y = [str(i) for i in y]
+    x_str = [str(i) for i in x]
+    y_str = [str(i) for i in y]
 
     return go.Heatmap(
-        x=x,
-        y=y,
+        x=x_str,
+        y=y_str,
         z=z,
         showscale=True,
         colorscale=discrete_colorscale,
@@ -872,7 +922,9 @@ 

Source code for deepcave.utils.styled_plotty

[docs]
 def prettify_label(label: Union[str, float, int]) -> str:
     """
-    Takes a label and prettifies it. E.g. floats are shortened.
+    Take a label and prettifies it.
+
+    E.g. floats are shortened.
 
     Parameters
     ----------
@@ -912,9 +964,11 @@ 

Source code for deepcave.utils.styled_plotty

include_nan: bool = True,
 ) -> Tuple[List, List]:
     """
-    Generates tick data for both tickvals and ticktext. The background is that
-    you might have encoded data but you don't want to show all of them.
-    With this function, only 6 (default) values are shown. This behaviour is
+    Generate tick data for both tickvals and ticktext.
+
+    The background is that
+    you might have encoded data, but you don't want to show all of them.
+    With this function, only 6 (default) values are shown. This behavior is
     ignored if `hp` is categorical.
 
     Parameters
@@ -922,9 +976,9 @@ 

Source code for deepcave.utils.styled_plotty

    hp : Hyperparameter
         Hyperparameter to generate ticks from.
     additional_values : Optional[List], optional
-        Additional values, which are forced in addition. By default None.
+        Additional values, which are forced in addition. By default, None.
     ticks : int, optional
-        Number of ticks, by default 6
+        Number of ticks, by default 4
     include_nan : bool, optional
         Whether "nan" as tick should be included. By default True.
 
@@ -933,8 +987,8 @@ 

Source code for deepcave.utils.styled_plotty

    Tuple[List, List]
         tickvals and ticktext.
     """
-
     # This is basically the inverse of `encode_config`.
+    tickvals: List[Union[float, int]]
     if isinstance(hp, CategoricalHyperparameter):
         ticktext = hp.choices
         if len(ticktext) == 1:
@@ -951,7 +1005,7 @@ 

Source code for deepcave.utils.styled_plotty

min_v = 0
         max_v = 1
 
-        values = [min_v]
+        values: List[Union[float, int]] = [min_v]
 
         # Get values for each tick
         factors = [i / (ticks - 1) for i in range(1, ticks - 1)]
@@ -969,7 +1023,7 @@ 

Source code for deepcave.utils.styled_plotty

for value in values:
             inverse_values += [hp._transform_scalar(value)]
 
-        # Integers are rounded, so we map then back
+        # Integers are rounded, they are mapped
         if isinstance(hp, IntegerHyperparameter):
             for label in inverse_values:
                 value = hp._inverse_transform(label)
@@ -979,7 +1033,7 @@ 

Source code for deepcave.utils.styled_plotty

ticktext += [label]
 
             if additional_values is not None:
-                # Now we add additional values
+                # Now add additional values are added
                 for value in additional_values:
                     if not (value is None or np.isnan(value) or value == NAN_VALUE):
                         label = hp._transform_scalar(value)
@@ -994,7 +1048,7 @@ 

Source code for deepcave.utils.styled_plotty

ticktext += [label]
 
             if additional_values is not None:
-                # Now we add additional values
+                # Now additional values are added
                 for value in additional_values:
                     if (
                         not (value is None or np.isnan(value) or value == NAN_VALUE)
@@ -1019,9 +1073,11 @@ 

Source code for deepcave.utils.styled_plotty

values: List, labels: List, forced: Optional[List[bool]] = None, ticks: int = 6
 ) -> Tuple[List, List]:
     """
-    Generates tick data for both values and labels. The background is that
-    you might have encoded data but you don't want to show all of them.
-    With this function, only 6 (default) values are shown. This behaviour is
+    Generate tick data for both values and labels.
+
+    The background is that
+    you might have encoded data, but you don't want to show all of them.
+    With this function, only 6 (default) values are shown. This behavior is
     ignored if `values` is a list of strings.
 
     Parameters
@@ -1030,9 +1086,9 @@ 

Source code for deepcave.utils.styled_plotty

        List of values.
     labels : List
         List of labels. Must be the same size as `values`.
-    forced : List[bool], optional
+    forced : Optional[List[bool]], optional
         List of booleans. If True, displaying the particular tick is enforced.
-        Independent from `ticks`.
+        Independent of `ticks`.
     ticks : int, optional
         Number of ticks and labels to show. By default 6.
 
@@ -1040,6 +1096,11 @@ 

Source code for deepcave.utils.styled_plotty

    -------
     Tuple[List, List]
         Returns tickvals and ticktext as list.
+
+    Raises
+    ------
+    RuntimeError
+        If values contain both strings and non-strings.
     """
     assert len(values) == len(labels)
 
@@ -1061,9 +1122,9 @@ 

Source code for deepcave.utils.styled_plotty

tickvals = []
     ticktext = []
 
-    # If we have less than x values, we also show them
+    # If there are less than x values, they are also shown
     if return_all or len(unique_values) <= ticks:
-        # Make sure we don't have multiple (same) labels for the same value
+        # Make sure there are no multiple (same) labels for the same value
         for value, label in zip(unique_values, unique_labels):
             tickvals.append(value)
             ticktext.append(label)
@@ -1073,8 +1134,8 @@ 

Source code for deepcave.utils.styled_plotty

tickvals.append(values[idx])
             ticktext.append(labels[idx])
 
-        # After we added min and max values, we want to add
-        # intermediate values too
+        # After min and max values are added,
+        # intermediate values should be added too
         min_v = np.min(values)
         max_v = np.max(values)
 
@@ -1104,7 +1165,27 @@ 

Source code for deepcave.utils.styled_plotty

def get_hovertext_from_config(run: "AbstractRun", config_id: int) -> str:
+
+[docs] +def get_hovertext_from_config(run: AbstractRun, config_id: int) -> str: + """ + Generate hover text with metrics for a configuration. + + The method gets information about a given configuration, including a link, its objectives, + budget, costs and hyperparameters. + + Parameters + ---------- + run : AbstractRun + The run instance + config_id : int + The id of the configuration + + Returns + ------- + str + The hover text string containing the configuration information. + """ if config_id < 0: return "" @@ -1121,6 +1202,7 @@

Source code for deepcave.utils.styled_plotty

budget = run.get_highest_budget(config_id)
     costs = run.get_costs(config_id, budget)
 
+    assert budget is not None
     string += f"<b>Objectives</b> (on highest found budget {round(budget, 2)})<br>"
     for objective, cost in zip(objectives, costs):
         string += f"{objective.name}: {cost}<br>"
@@ -1131,10 +1213,29 @@ 

Source code for deepcave.utils.styled_plotty

for k, v in config.items():
         string += f"{k}: {v}<br>"
 
-    return string
+    return string
+ +
+[docs] def generate_config_code(register: Callable, variables: List[str]) -> List[Component]: + """ + Generate HTML components to display code. + + Parameters + ---------- + register : Callable + A Callable for registering Dash components. + The register_input function is located in the Plugin class. + variables : List[str] + A List of variable names. + + Returns + ------- + List[Component] + A List of Dash components. + """ code = """ from ConfigSpace.configuration_space import ConfigurationSpace, Configuration from ConfigSpace.read_and_write import cs_json @@ -1193,7 +1294,8 @@

Source code for deepcave.utils.styled_plotty

]
 
     components = components[1 : len(components) - 1]
-    return components
+    return components
+
diff --git a/development/_modules/deepcave/utils/symbolic_regression.html b/development/_modules/deepcave/utils/symbolic_regression.html index 663ca5c6..2cce83c8 100644 --- a/development/_modules/deepcave/utils/symbolic_regression.html +++ b/development/_modules/deepcave/utils/symbolic_regression.html @@ -709,7 +709,7 @@

Source code for deepcave.utils.symbolic_regression

This module provides utilities for running symbolic regression with gplearn. """ -from typing import List, Union +from typing import List, Optional, Union import numpy as np import sympy @@ -724,22 +724,26 @@

Source code for deepcave.utils.symbolic_regression

[docs] -def exp(x): +def exp(x: Union[float, np.ndarray]) -> Union[float, np.ndarray]: """ Get a safe exp function with a maximum value of 100000 to avoid overflow. Parameters ---------- - x : float + x : Union[float, np.ndarray] The value to calculate the exponential of. Returns ------- - float + Union[float, np.ndarray] The safe exponential of x. """ with np.errstate(all="ignore"): - max_value = np.full(shape=x.shape, fill_value=100000) + max_value: Union[float, np.ndarray] + if isinstance(x, np.ndarray): + max_value = np.full(shape=x.shape, fill_value=100000) + else: + max_value = 100000.0 return np.minimum(np.exp(x), max_value)
@@ -766,11 +770,10 @@

Source code for deepcave.utils.symbolic_regression

[docs] def convert_symb( - symb: SymbolicRegressor, n_decimals: int = None, hp_names: list = None -) -> sympy.core.expr: + symb: SymbolicRegressor, n_decimals: Optional[int] = None, hp_names: Optional[List[str]] = None +) -> str: """ - Convert a fitted symbolic regression to a simplified and potentially rounded mathematical - expression. + Convert a fitted symbolic regression to a simplified and rounded mathematical expression. Warning: eval is used in this function, thus it should not be used on unsanitized input (see https://docs.sympy.org/latest/modules/core.html?highlight=eval#module-sympy.core.sympify). @@ -786,7 +789,7 @@

Source code for deepcave.utils.symbolic_regression

Returns ------- - SymbolicRegressor + str Converted mathematical expression. """ # sqrt is protected function in gplearn, always returning sqrt(abs(x)) @@ -838,8 +841,8 @@

Source code for deepcave.utils.symbolic_regression

symb_conv = symb_conv.subs(X1, hp1) else: raise ValueError( - f"Numer of hyperparameters to be explained by symbolic explanations must not " - f"be larger than 2" + "Numer of hyperparameters to be explained by symbolic explanations must not " + "be larger than 2" ) # Simplify the formula @@ -860,7 +863,7 @@

Source code for deepcave.utils.symbolic_regression

if isinstance(a, sympy.core.numbers.Float): symb_simpl = symb_simpl.subs(a, round(a, n_decimals)) - return symb_simpl
+ return str(symb_simpl)
diff --git a/development/_modules/deepcave/utils/url.html b/development/_modules/deepcave/utils/url.html new file mode 100644 index 00000000..b3b84630 --- /dev/null +++ b/development/_modules/deepcave/utils/url.html @@ -0,0 +1,807 @@ + + + + + + + deepcave.utils.url — DeepCAVE Documentation 1.2 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +

DeepCAVE Documentation

+
v1.2
+
+ + + + +
+ +
+ + + + + + +
+ +
+ +

Source code for deepcave.utils.url

+#  noqa: D400
+"""
+# URL
+
+This module creates and parses an URL according to its input information.
+"""
+
+from typing import Any, Dict, Optional
+
+import json
+import urllib
+
+
+
+[docs] +def create_url(pathname: str, inputs: Dict[str, Any]) -> str: + """ + Create an URL with the given pathname and inputs. + + Parameters + ---------- + pathname : str + The name of the path for the URL. + inputs : Dict[str, Any] + A dictionary containing the input parameters for the URL. + + Returns + ------- + str + The URL. + + """ + string = json.dumps(inputs) + converted_string = urllib.parse.quote(string) + + return f"{pathname}/?inputs={converted_string}"
+ + + +
+[docs] +def parse_url(pathname: str) -> Optional[Dict[str, Any]]: + """ + Parse the URL and extract input information if possible. + + Parameters + ---------- + pathname : str + The name of the URL. + + Returns + ------- + Optional[Dict[str, Any]] + A dictionary with the extracted inputs if available. + Otherwise return None. + """ + url = urllib.parse.urlparse(pathname) + query = urllib.parse.parse_qs(url.query) + + if "inputs" in query: + string = query["inputs"][0] + + return json.loads(string) + + return None
+ +
+ +
+ + + +
+
+ +
+ + +
+
+ + +
+
+ + + + + +
+
+ + \ No newline at end of file diff --git a/development/_modules/deepcave/utils/util.html b/development/_modules/deepcave/utils/util.html new file mode 100644 index 00000000..ee9d4092 --- /dev/null +++ b/development/_modules/deepcave/utils/util.html @@ -0,0 +1,856 @@ + + + + + + + deepcave.utils.util — DeepCAVE Documentation 1.2 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +

DeepCAVE Documentation

+
v1.2
+
+ + + + +
+ +
+ + + + + + +
+ +
+ +

Source code for deepcave.utils.util

+#  noqa: D400
+"""
+# Util
+
+This module provides utilities for string generation and shortening.
+It also provides a function to get the difference between now and a given timestamp.
+"""
+from typing import Any
+
+import datetime
+import random
+import string
+
+
+
+[docs] +def get_random_string(length: int) -> str: + """ + Get a random string with a specific length. + + Parameters + ---------- + length : int + The length of the string. + + Returns + ------- + str + The random string with the given length. + + Raises + ------ + ValueError + If the length is smaller 0. + """ + if length < 0: + raise ValueError("Length has to be greater than 0") + letters = string.ascii_lowercase + return "".join(random.choice(letters) for _ in range(length))
+ + + +
+[docs] +def short_string(value: Any, length: int = 30, *, mode: str = "prefix") -> str: + """ + Shorten the given string. + + Cut either at prefix or at suffix if necessary. + + Parameters + ---------- + value : Any + The value or string to shorten. + length : int, optional + The length of the returned string. + Default is 30. + mode : str, optional + Define how to shorten the string. + Default is "prefix". + + Returns + ------- + str + The shortened string. + + Raises + ------ + ValueError + If the given mode is unknown. + """ + value = str(value) + if len(value) <= length: + return value + + cut_length = length - 3 # For 3 dots (...) + if mode == "prefix": + return f"...{value[-cut_length:]}" + elif mode == "suffix": + return f"{value[:cut_length]}..." + raise ValueError(f"Unknown mode '{mode}'")
+ + + +
+[docs] +def get_latest_change(st_mtime: int) -> str: + """ + Get the difference between now and a given timestamp. + + Parameters + ---------- + st_mtime : int + A timestamp to calculate the difference from. + + Returns + ------- + str + A string containing the passed time. + """ + t = datetime.datetime.fromtimestamp(st_mtime) + s_diff = (datetime.datetime.now() - t).seconds + d_diff = (datetime.datetime.now() - t).days + + if s_diff < 60: + return "Some seconds ago" + elif s_diff < 3600: + return f"{int(s_diff / 60)} minutes ago" + elif s_diff < 86400: + return f"{int(s_diff / 60 / 60)} hours ago" + elif d_diff < 7: + return f"{d_diff} days ago" + else: + return t.strftime("%Y/%m/%d")
+ +
+ +
+ + + +
+
+ +
+ + +
+
+ + +
+
+ + + + + +
+
+ + \ No newline at end of file diff --git a/development/_modules/index.html b/development/_modules/index.html index bd6a16ac..5b0bf8ae 100644 --- a/development/_modules/index.html +++ b/development/_modules/index.html @@ -707,6 +707,8 @@

All modules for which code is available

  • deepcave.evaluators.epm.random_forest_surrogate
  • deepcave.evaluators.epm.utils
  • deepcave.evaluators.fanova
  • +
  • deepcave.evaluators.footprint
  • +
  • deepcave.evaluators.lpi
  • deepcave.layouts
  • deepcave.utils.cache
  • +
  • deepcave.utils.cast
  • deepcave.utils.compression
  • deepcave.utils.configs
  • deepcave.utils.configspace
  • deepcave.utils.dash
  • deepcave.utils.data_structures
  • +
  • deepcave.utils.docs
  • +
  • deepcave.utils.files
  • +
  • deepcave.utils.hash
  • deepcave.utils.layout
  • +
  • deepcave.utils.logs
  • +
  • deepcave.utils.notification
  • deepcave.utils.run_caches
  • deepcave.utils.styled_plot
  • deepcave.utils.styled_plotty
  • deepcave.utils.symbolic_regression
  • +
  • deepcave.utils.url
  • +
  • deepcave.utils.util
  • diff --git a/development/_sources/examples/api/importances.rst.txt b/development/_sources/examples/api/importances.rst.txt index 99bf5b43..9188f987 100644 --- a/development/_sources/examples/api/importances.rst.txt +++ b/development/_sources/examples/api/importances.rst.txt @@ -24,7 +24,7 @@ Importances This example shows how to use the plugin Importances. Note that other plugins use the same interfaces and can be used in the same fashion. -.. GENERATED FROM PYTHON SOURCE LINES 8-38 +.. GENERATED FROM PYTHON SOURCE LINES 8-39 .. code-block:: Python @@ -49,7 +49,7 @@ Note that other plugins use the same interfaces and can be used in the same fash budget_ids=budget_ids, method="global", n_hps=3, - n_trees=10 + n_trees=10, ) # Note: Filter variables are not considered. outputs = plugin.generate_outputs(run, inputs) @@ -57,9 +57,10 @@ Note that other plugins use the same interfaces and can be used in the same fash # Finally, you can load the figure. Here, the filter variables play a role. # Alternatively: Use the matplotlib output (`load_mpl_outputs`) if available. figure = plugin.load_outputs(run, inputs, outputs) # plotly.go figure - figure.write_image("examples/api/importances.png", scale=2.) + figure.write_image("examples/api/importances.png", scale=2.0) # figure.show() + .. _sphx_glr_download_examples_api_importances.py: .. only:: html diff --git a/development/_sources/examples/api/parallel_coordinates.rst.txt b/development/_sources/examples/api/parallel_coordinates.rst.txt index b355f295..5c3f7fd6 100644 --- a/development/_sources/examples/api/parallel_coordinates.rst.txt +++ b/development/_sources/examples/api/parallel_coordinates.rst.txt @@ -57,7 +57,7 @@ Note that other plugins use the same interfaces and can be used in the same fash # Finally, you can load the figure. Here, the filter variables play a role. # Alternatively: Use the matplotlib output (`load_mpl_outputs`) if available. figure = plugin.load_outputs(run, inputs, outputs) # plotly.go figure - figure.write_image("examples/api/parallel_coordinates.png", scale=2.) + figure.write_image("examples/api/parallel_coordinates.png", scale=2.0) # figure.show() diff --git a/development/_sources/examples/api/pdp.rst.txt b/development/_sources/examples/api/pdp.rst.txt index 4e8ab866..1adc5ca4 100644 --- a/development/_sources/examples/api/pdp.rst.txt +++ b/development/_sources/examples/api/pdp.rst.txt @@ -57,7 +57,7 @@ Note that other plugins use the same interfaces and can be used in the same fash # Alternatively: Use the matplotlib output (`load_mpl_outputs`) if available. figure = plugin.load_outputs(run, inputs, outputs) # plotly.go figure figure.write_image("examples/api/pdp.png") - #figure.show() + # figure.show() .. _sphx_glr_download_examples_api_pdp.py: diff --git a/development/api.html b/development/api.html index b30466ab..2d124ad3 100644 --- a/development/api.html +++ b/development/api.html @@ -723,19 +723,19 @@

    API References

    deepcave.runs

    -

    +

    # AbstractRun

    deepcave.plugins

    -

    +

    # Plugins

    deepcave.layouts

    -

    +

    # Layout

    deepcave.evaluators

    -

    +

    # evaluators

    deepcave.utils

    -

    +

    # utils

    diff --git a/development/api/deepcave.evaluators.epm.fanova_forest.html b/development/api/deepcave.evaluators.epm.fanova_forest.html index 141f01fb..b79de81d 100644 --- a/development/api/deepcave.evaluators.epm.fanova_forest.html +++ b/development/api/deepcave.evaluators.epm.fanova_forest.html @@ -745,11 +745,21 @@

    deepcave.evaluators.epm.fanova_forest

    +

    # FanovaForest

    +

    The module provides utilities for creating a fANOVA forest.

    +

    It includes a FanovaForest wrapper for pyrfr. +fANOVA can be used for analyzing the importances of Hyperparameters.

    +
    +
    ## Classes
      +
    • FanovaForest: A fANOVA forest wrapper for pyrfr.

    • +
    +
    +

    Classes

    - +

    FanovaForest(configspace[, n_trees, ...])

    A fanova forest wrapper for pyrfr.

    A fANOVA forest wrapper for pyrfr.

    @@ -757,18 +767,60 @@
    class deepcave.evaluators.epm.fanova_forest.FanovaForest(configspace, n_trees=10, ratio_features=1.0, min_samples_split=0, min_samples_leaf=0, max_depth=64, max_nodes=1048576, eps_purity=1e-08, bootstrapping=True, instance_features=None, pca_components=2, cutoffs=(-inf, inf), seed=0)[source]

    Bases: RandomForest

    -

    A fanova forest wrapper for pyrfr.

    +

    A fANOVA forest wrapper for pyrfr.

    +
    +

    Properties

    +
    +
    cutoffsTuple[float, float]

    The cutoffs of the model.

    +
    +
    percentilesNDArray[floating]

    The percentiles of the data points Y.

    +
    +
    all_midpointsList

    All midpoints tree wise for the whole forest.

    +
    +
    all_sizesList

    All interval sizes tree wise for the whole forest.

    +
    +
    boundsList[Tuple[float, float]

    Stores feature bounds.

    +
    +
    trees_total_variancesList

    The total variances of the trees.

    +
    +
    trees_total_varianceAny

    The total variance of a tree.

    +
    +
    trees_variance_fractionsDict

    The variance fractions of the trees.

    +
    +
    V_U_totalDict[Tuple[int, …], List[Any]]

    Store variance-related information across all trees.

    +
    +
    V_U_individualDict[Tuple[int, …], List[Any]]

    Store variance-related information for individual subsets.

    +
    +
    n_paramsint

    The number of Hyperparameters to sample.

    +
    +
    compute_marginals(hp_ids, depth=1)[source]
    -

    Returns the marginal of selected parameters.

    +

    Return the marginal of selected Hyperparameters.

    Parameters:
    -

    hp_ids (List[int]) – Contains the indices of the configspace for the selected parameters (starts with 0).

    +
      +
    • hp_ids (Union[List[int], Tuple[int, ...]]) – Contains the indices of the configspace for the selected Hyperparameters +(starts with 0).

    • +
    • depth (int) – The depth of the marginalization. +Default value is 1.

    • +
    +
    +
    Return type:
    +

    Tuple[Dict[Tuple[int, ...], List[Any]], Dict[Tuple[int, ...], List[Any]]]

    +
    +
    Returns:
    +

      +
    • Tuple[Dict[Tuple[int, …], List[Any]],

    • +
    • Dict[Tuple[int, …], List[Any]], – The marginal of selected Hyperparameters.

    • +
    +

    +

    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 D!14dQ delta 2184 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 E0qU11oB#j- literal 23597 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 diff --git a/development/.doctrees/api/deepcave.runs.handler.doctree b/development/.doctrees/api/deepcave.runs.handler.doctree index 1e1ca43d556d9ab1ddca52c0951dc15f987161ea..5eb72abdc7a2d0a37377a93113acf922ef6d7a8f 100644 GIT binary patch literal 85722 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 DRq^i% literal 63500 zcmdsg3zQ^RdEP!|W_M=atKAW+(MY`lv9s1Z^g4^Q5<18d=*gn2guvPry*1r6Q&rn9 zx~lhK48a(IRxS`|8-p;BWQ4+rOe|vw<0KZ(1H|!hLc%j}qR1SO39;ii*m0a=?0o-y z)V;U5s=8{XcXx=+(QNgt`}psF|Np<=|KCTwbNEB6|IaG+U%16@Id0>`tW~WxnpNBH zhU=@%N~dl&g6`?=-e2v$y*m|-wyooSv(v8F-Eb9hR2;WfZQG6R{oQagWe?n%KP$?w z^X*FDHXBiKXV@8W*4^Koaz?}9zzu4)_A1<2we42LI%dzdI}Lx8VH>^5;T3_w7)Q@?qaF0dBqRoB_#OgI~z3!SyjWca!{ zr&+h>(4U6go;%)bADz1yoxJJBdta*_K%_rswcNSH{?E33bmpQv)^z5bRpGGPsM;qq zu5pGs7lU|bHyHJD{C_F_--G}6Qb)jxw#&$$3Wr*j+wO*w^=7qGv#%>9HrNd>gIPY4Bwm(e;LDTQl>sI^Z4G<8p zKO7e-3{9EUUU$Q7+OINLWh&lvWB5;1K2>Qp7Tm?@66@b|36z%E zE2`i=y#g{x^UdnX9zr42YunA^J?YGfk$NQ-8HF9P7TZ?K(F%rd-jAVf&U^chD1Mi& zPgFE*xNkUexO7+y%V9At_!k3kn2*fiy=)w&U?DcP>_!!0R6YUQq&NMlB{nTbcwG&G z+_q|3ozBOEN^8>7Ra*T-x>my$G5W$at&`nwq;+xzOzGOX>7ucD41@bo*y;4q96>Lk zI^A$rss-(0)}l;x%WZU>-wxN|S8%e08Eh>z8g9UE`$VheR@|WbAbWk>YB##4!chzs zw}q+GPPiU<*ksW?z}g9{_M#nh!@fGq%*#hGNvvqIa>r^6K^OWp9$t`c7_>p}>Vs~l z4jhf{BhIArC75t(;^C}Orp)g{riVbs`(t{3TK*2Vr5LC2q&G@RzpWFTE@_hBLxSLM z_)*N_P&F1@C3i0o(=7y*oOklT(|8Sd0(fKsj5SmgHFifdd2rOWZs zdZuvnM7_4($Akt2THk8hzTG}%Ghx0TWd-taz$O9&vvPF$O~M9F8S!DjFh_-#X;yNI zX<5l_Bx}~*JSvxkT~>udK)t=dfsE>AdQd4Q>Ve`ycv>Yf{>X=>mN1Jr=y`%6)l(w-Y`0LEizdORHFCMc3>Z))|b zRk~p7o#1t8c062N;#Pi~o>V1Q#wszjBV2vF8y@D?Z;Ibvy|HPlX#Gc{5No z)^NCq=wRc`ejAgf$=6%seD!Xj6xpFs)}eTB^tn81diM_Zp?W=0%}HKQE%l@JzHDl@ zGinJ{)olQgnhU>38-$mop;nu zZuF|m3EuAj|700nb7P2M^bW=Q3 zL_v_*t#-Y)fJAut9CbUNC91y`r<%);;)u5kIV_4zAi@H*>V{)v8-TtMATm*ZIMNSr zi>b~T3D+-lYBi>zoT{;M(5w(&1HbG2S2W3z-vj*5UZ|Wzbcu+bjQ9(#Pf`lxUo-YF z3xOX0lHTQ%qhRN*U$hV?+Fv5~idp6TM|j7M2+Miv%zw{5Os(MA@^v7K>@Ia#x4uo5asY~yzO8G_ZGZA z6Jr9|Qj+sfkHb9<$q+BgYUeD*4CV0P_JdGLI*V>&FRxRCamK@yM3R!|UBt-LnMwCf z1nXCz&}b5{B&WzbA0iZ9h3I@4bL7+rl(2Kn@u%7u2^Mp!JoV_PvM`6Tw z7m8+04<`EsTD>!OA@3_-f)0t)$a!}V)y#+S{;kHUGl6!(?Y;7haAgwuQ3Up&pQ}MI zM?c+ZNOt7x`*! z+p3OD!hC%h-*NmS)%}LhqbA@{L zhrDNhfPc`P@o-IPN`v>5tRof$?}eFK6>gQ}+Vz%W`L3@MycT_sI`v{~U z;??TCS*${6qV$7zp4J1AJ?tD0H^-zvF({r{`JwUEagG)zywCLE4%y3RsXttj`(S_X zF`o4|S*_mV_$Ovdy-#Rq;ktu1g366Z@1ozTOIz2P;*>s+M5<7_O;ku%I`28HSs{l? z(XP9v-LXq9)T&k!P6b>MXrB*a04H~5>pUiVT?4@wHu0bO^)PsR4D&Q4$Wh80=FJf zR6z{)c*tKWg6_^ukZvQqpFot7ocd%NAzJnR2TG+Fhc~cc$rNlh(s%aHCv}zBR%oO% zErs_eh=-`jiCBV)>_R^Rl0qSgt<)%DO~EWV#d$iyy|#E%Oe|mXJnIni;f#I{x`=&R zh_36u8_gNMPY8Cq(UgyyW%3N)v~ViiC|=6n+mJ(qy!8*S~*^GDvP*lXn4_U1e;U0Bbe^0 z2*ay>d!Hp1oF$+0l7rDcuQaJi@j(^AJwE6Y=)mB7(0`BGxDWbmJefXds%%Q1G@n+` zj4fjHlKHSKAE$B1jFzfy8*$WT`=mlM%c(NB|o~%koek>@E7BhWDMGt6K#|oBzF!V=? zp=Sz@|EvhdB;NbKRA^Ev6lT6`JbuA#Y?v$9wSsk?#9_|LqK0?#unDpH4ex}v0VQ(I z;nb;|bNJt~tOLc}mlf%n9ET|?lz$wy-ifV=hi;+sTXq!&Dg${_P7OT0CO36DQZ0RIjyey(v~OU7qxAc?VFe007t9&eu5|x5hh{2?7~z zy_PX4y)R_E#rhWsP$8MmY+d43X||*l&MqWytDHQPJSX5*#`z4~O7A&teLp=h+{&KL zHEz9%P#!`M#bVw4cY29xmyK92h~X6?75|rAY&c7ZXs?Uf75lv8Z)K}Li2=}+(v-(S zaP`Tks+F|QOLkd6N+UvzbJN5-#yWF5zwyS{dmt7_{=meK1+*$ksBH~*Doi1#3K!ewsH3fdVb6_tzx#_6xb;KHd`lFy^>a}%L% zJxMWbuFzPCT{zQJXi^$A2voM`a~+=t)MmHaZ~~>>uxg}Q@P&k;&6W<5LbT!hVp~7T z%(_*fU*7ZDLQFI%h>rEn5jPj=l-Tw58Wc*{^+w713?2_?d*9SaV_{}NS1iu`ORfQW1sx6V5bBPQIN9Zxn-MX@*xJ^^kA$sl33*dgY@JXAU1 z{b~Pv(yu384tV%S4qDh78f|NpKNVNEtTU&JY&jL`w2=zsAM~3s*nwNOU)yds+q8L{ zpH6_QRXUD!eVjw!XqAp9M98s(tQuUCz%?c==0v+uZ%8VznW%ccr%=zur27gK${O|j zq8F~UPvFWN?fkE|7nNs;T!}Rf8{e}xo8B0cK31*4WNjvh=SY~JFdoMIM6R%6*R8Q8 zvIRxVPw`ek`}W>3*IJ1eFv-mAYuq;=VuwfybCXxd>8K5eL}R{>v#Co@KAYM2aE?n={E z<20(|EuuP~CN}4ZR!+*T0Tdd+)tq%1CLtTZp&R6{Pc9{t!|P2rlZiE0WNantGZ?u> zbm)wS$1W(sIqAclPlYC>QbDJ)!(+FR2GGEkrry}V)xwA96d>Oe8XXOtE**E=ic|6( zd2CHyh{1wo7TeUD7%WppN;u#uK?%rQp>7K7ei;fS1k5Pez|L_O!w8rSvo6a?OZ-xV z-5jedQ*!0O&>I63tWCibyt+MworEh}inLHgL z0g_GfABv-mrL=mq07t!FLgxGt0@T{ z;#8jj(Hu9j?>QZ}9W3iW0<|y1_?K?qh*S|-`aTuPKNZo2O@2N^EX&Ze6yc4Ow~Fh3 zS%gH!^*?9)$?l5Sr9)jAFxLwNb2pBf(wj}P;QlBT%FlgeV`AnVSTDAiv^zIB%P=Io z(Jb3M2{N**m<-xp&_ACH+7izS4RfYy%czJ1jD?~i60WNuOo)oG*)Ah0LhpH09i5_e~< zm;I9yn@Ug?tBx_zCnZy@3q?cRsH*Uh6&DS`U?fCBb|f*AvCE8#r01J5Z)4qTRwy|i zPgeYYcf_>9;gWZvDBO=#;Wl=OF5PU~Y~eD09Cy|C)2x2AqykT>;cjNb;p%4Zowkoq zkqJ+lo2Gkoj+hF5gm%W^#tho9a}TcC znPz)=_=Yf1yWhkzBs1A^GY`;=eO8Fo)cwB*Hp=7`1%7g{QM3oCVW%oN_<=pg|8k@R&uhd zP>)4KZzl>RMD!?G2T9pm;Ix~XdT(Z$ja8McHewUpWsI!!th$R+G@f@k>W(}dvfi6#49{UH^~&-ZQY z*rK-GFaNp4Z{{XXx1q$_Pv@eIPR{F6)z=hs$~u4MLuH z%w@3<2U}KSS3j^lJ;IdGF((C}3YAe>))X{Jdu?i2%)4dVdwxDN2<)yYb}uPH5FL0C z4s-NdaqrzlxF^BeuTr5&sgjt3vtt8$2piEJE(~`bLCBq7b>l-ty20S}BPfv-`_*s; zbvGx@cn8bc-<>G{uYa#d*W?I2Lxu8>&?tk~*%$FKfU7wEwcKRs@UvimA`Yv`*u_E= zUq%v(+8D5!QuV1f0anM>lwXLINH-&Tf4py@SpJ|uY)v_{J35SxcPA5*GV%TbV@rA` zH1Q@`DJ0&RtxFg!ZI?95*@Xm*mh+1e-2@oTSe^l+={<+hJ2y%g&7M{sjHV4HXC6kg zR?aMp79A16TjP6By>LX(!%sw}y;hcH7Ne-^vMJPsVDv9URjp_kEf|!rX1z2Rt-9@9 zPaIeYFq-!<8AdC5dtmgXpnq^M`fk+5Ve}z9^@Guz^v{9(!GZq!Q5y&SHl9q-pCXkK^XJh7Epjf|4)l2ijX)mAf0YjT zE8NA3Dq(9d`pFFih zY%4U<*?>@dmQgCLG)LKm1d5b)R*hl;iu?xX4Kq+Az2_+M@92qb#9&Y78b$7F+x6x# z_T9u{(6RrgPgKpz#)}tg2tZXkh1EZH&_D6K(wNF95u%=?OxE_zd?J-nVNOzoVBzMd zs+IH!2%QlL5ny$J0WIp9CzWFFir?R|H{uA#U?y|D2k=2qD~1ES6a0Iqm!fEvSy5+c z2q1~;rFZ8p)N=qw4W3sbs?QR-)sL@eBb5wk6^%WRb`&%Z4${5>wQ)%MCOnytR#zj5 zWA$5TR4>eUwd5+`(*|O29`Jg{L1v#QE(vYt-``W8Wwa`eJu9y3Rjaf&(WxLNf!cQ`wQS=u@&Ci3vF-#1-|K7&T_hU&Ig{RztKTgsb0=EOv|NNs4bl z5xz-W^;Rl0DHRoVA{*zD@Q6EMuqPq928NI?6D%$pu|p!J@dE%;35xntg{T(?Lmoh( zgo7cJtOqFKaZ~dUgF4>cbDaILSVgAQjftYX=H)jTQR!Ki0V2I8P8p8ZoqLu;Q6B0U*Py@9M)8ZPx>dWKPW5U|9$1oqU&=3X7V{`baJM z78S~`MMDRg4V!@}?-Mv>5#45g-m3krldJaQi{q>IuR21RR*9QBBPS-@j4YI6KYK4; zKQ62AeoB<^^?Tlm8nnO3?Aes_H1}vmS|?{vzxh#g43F~|jM-nIjw~#p&9=Ijd;f@X z;W~U+fPFeWTuTikEjS#v+Kuih=Xp<)ZRZOi?+Ov|5ogjF5$lG3kw8p1>9;URohVzK zpjmBJ%G4kd0-t?F-8{TZLMKis|F=x$#5A2r^h*h?$MQ)pjKrgmL}%)gjOELTMM`RR zA>oBdz@Vfx!3%p9^k#Ws^qzZR*KUzs7<)R`Uf7K|^LyrF`H77z+c&#P^UV@lnCgkw zCi-hT6AMe%E#GrRX7k414Y9$5tQ`nQ>&~58sIJen8{3>a1!?a9>iLN!+0|NzZ6}RuAsi8k=QrWE0k=yvbI z0xe_I?ZAqyWfUuNiEwU>~r_$3$e;F2li_4eN=FA!7=#|Ae>U~-hQvJ}y ztxM^gU})@C2TC<8LqcdIA6J@ClWusTyb{sk5WeIj{O%tMF@lTrk`^Q4 zaCpi&9R-bUeIwIQ?s`YpAkxCD)u@)(1#DP)^#cnZ;q^=N9h}i_)K1bxhgQk4e5X`# ztj3}(ZZ1R^X>b)P{dxshqeG)iP|p1Im8m-znBAf)7?@rMeW2**+9FJo9{N5iG%0lw zlVrAseg@IeJw!<|I=VNrXZg_4LDaDnbaVve3ZWxXYvBc_qN4)|#AKqQ+o{sLOM?s@ z-ICBm3OXVg$cc`w%2BJ>sV4=$5IT}(Oo?PKIudJz2oE~Vs<~F^J+u~v^-&PX(a}fg ziS5*5Pv;sPUCXB+aZz_MkTjbUB#FwGjg>C#nK>od{F2UB(;9K&D$pjQmvZ$dma1(1 zvlydv(Jq9go{6doKfKbgR5UILkZOa*(u8%Mp4YJ}#z%N@$!YmhvH0Ibd?~z`^HmhZ zq;Oi_E0A)3_;<5gc^p;rIDg^-anXvgBSB3yv~QYiTTnfEDZ8!TjkneRu5eC5x(k=M zYV{??opf}f3iYg7DOvTtNS!%LfcRx;YMpXnxFWL$7e5WM2ZxI{ZHK95xOgX?Ok5nZ z9TFa2kk%J-bxN`qVC+*uZ2F?)-?+1BRefOHrf)YmD)!kf#UotT*e%~J%lGXnE&<18 zMW1d4XCEHp;5l&N1{+s@H>zX4b&Tgxr*ukhz;pXJzMwo^((4v?kH_{&a%UC#@Uk@e zv2>r%X_Bq}c4!;u!S6X*Z8I#CFr3 z<-F&$cEfEw?MQ7)c%xX*D8vG>{&*CHG94WH4tTX$x7I+bpq_J|XZ%n(EpoVtmRbSxEhFQK9@&uMpM1_kMn!C`oqSznIyxe9rsxs3TLh zN0@9^y3S{frHwyExkApnCfljb`@c#cCewNUOeP0nPC0Yle=nhlSU$P5K{8NCY%`Tc zE^SCFU&wiv=t_xXuk-Hx8tBd1;7RYf^FDN*bl%z1xpv<73AYxetC;8B|CpVsdD(9J z<-M4g2*&^H?8J1bQUhu&)3)Sv4}MH1h-X?%8~kjPvTu2@u;vLe>sX~Sy1Jv5|$Sy@upcJvlCll0wg+W>^U7%c_iM^la&12 zx%3X*%4y3Jn7A*ym8`&oXeEDO!pUxH34sYtLb}z?7`Z%!dIA$l5xvW(GiNC<0*Ym#v)E;x^zoly1U|nz!G>K`I6((Esg?al;!X6N=A5Ixa_qle(xDmqD>C^PdG+gXqLUglmuX41 z=}6}cD#_HV6u165l+)b$A=X0D7VGFtr>0o&>$k-C+vUopj(6^5gh8R!t}5vtW}YQ*XF;52JKnbrS<^~fx%Pstk2 z(yf_SMmdeu!@P+Cyxx_{i*&9VS6#+=ZW^J?z{{nXtkb*C5yOOcNgp;LpA5W^F(_oe zOu}QW%fQRWVn#i?kl0fyVWhH634xcNqUNl?3%%!omye-meAfhfI@f`hS1BM}@LK$7 zQ}(cNty;6&v%o61ibt*LWrto8mR1Rz1N@VM$F`VmFj^J{Ku=Q!;4_(0Tqwx$>8Psk zLn{#*Cx4TDX**6;U%f9=x6hIvJDwt4nt>%FA`XKpB6}R!Pl4#cIkMkFZQPOl0iH}p z){sT%$)-y)kuNr&O2%R?{~h9S9#?iBcSiM#>*2Iw?%Ap!{o-&zo$ZzQuQ!X{(t63p1+gJdoC&R zgd@2Fg)#x}GS+B!q3+0$BqfhIl3Q8ZNsc7FF;MNm9m#kLnW%=XfNko-DGi8`q~!!+ zf5)=+cO;{4q6ugo{Z>}w^)aSpS`n!fw^O0~N^#vi?T*d1-q&h4C0vuncN6j8A4Ypwb*S#XrAT+#2p-Bmg2a{qkD#&4E*&g=IbL<`ZAH2! zNAd&}%0H6Y7vLk8QS3_T{UZDaauZ~@YSSo|)}$5KdFBZcHLp z$c?vm3q3NJYnGhiF-hUO+q&n;H_U%M>cxMIdcmHS*b8T4??_BJ*M~c$KQ=>-(TwoN z5U_YTVpW&k-&Gmdvc{~;U^#n`VekDcVld`R;EFVM7Q&fEch_WzXgK0GJM9W?Jev-8 zu=sP$3fv|Z!`scpw(a}fw|A$);h-5N*f^lqoeA zx2YWn*W&_;01-RC8*anRU!B0M`Lo!&*$C`L6+3GYBJbFK_jH#Z!wN^5ouJhTx(A#s z2g1=syJ5F2TxWrrMiI-har&y>!jBES!7^Goil1ZRXQy4muT2527@M~$N9ipbr}u^1 z7n;og8`o?t`Ht1$CLecYG&=S235vaUk+K;VD7vk3rCG1rxSkA^P4E;ikf`(U`)ZGbyvyHROYk*gbyc7lbOYi4{G&lj36%WPj> zS&9k<9DS<<-Ea%%u~y44tEC%G#@@uL@P@`=NH_C(6%DfVh31P`;czSU!3U!pu&9PU zb;C_HoS5rai#9l3#qTvXcHo_d8%&z*YPo8+AR}nTWsDuEG#d-(COG0&A*J?$djgS( za5G&hS5`^k8W)1KsoJTx@DXkyd|)g~kjMIH=(ezwXz4{IwS2o%ZI(~eNtm|UCtBF* zT-Hl6DX9eIW3KOV;oO3cl=!q|5*-m#u9Hdu1>1M2E4|4Lasg`7!bk0PGr+Q9;A1FApg1oavk8x5>^Xi*jSuHUgfoPde zkS5c{A!d&tGxd3V`P~mrf&|CL-6f~OofYIdTDGyvv{tsNRWh-R>}^yt8D3gB<_7Il zxYlkQ>mKOL<5pH?PHeJ(TipgVcx5KF5Ua5DS+pwEhd`72usAd-+gLeu2xf=VH zy=&>u6KnD3Df;vD5dJ(ve;ymgpC{?hGuRvKJx714IAr6w^oKrU?$Kw?J^B)(M_+36 z=<_TdeZIw`Tdh61_1dHR%{;pQ%%d~a9-X=N=oE=Zr%XKBx#7{y4v#`#9)-p_;U-;a z*eGtQxKKS31B@(BA=@bPadFX8cs{5Il&n7AtVMdrvhIi_M!83g8b@WTtk8C&eoS-i zfacYm@w&tt;0jpoO0xqz(8lGXm1d26IrIU5Vckt4{WQeyf$l+Ap_bK#J%cp+&^z8> jWWbH&4N)>voegfIQtMPnRTs%7j8$ol5$2eW`0W1!-*iBX diff --git a/development/.doctrees/api/deepcave.runs.objective.doctree b/development/.doctrees/api/deepcave.runs.objective.doctree index 0c99661b64121171e742f715f91d63bc1799bb98..4435eccd0a137e0fe69fbc8e5c00946eed15a9c6 100644 GIT binary patch literal 37646 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 delta 453 zcmXw#-z$Sr7{{G6XWP3UCP|HL%>{-?lCtE&jr>UBMkKw~^0d6$?6tC@EGhJ|wdYI{ zB1$Mf+Kp>}fRsM~|A1V$a^=}@E>6$+e80~*&-Z-3^P>i_Ci1zedoj+j&C-o~ybZG! z%{dBn-~bPpz-vrmhz*#6ogJ9Bj)*QBExfC&#&4?!`<1k!kvEc@gD5_`0{Ep=iV{J^ zHs(?cC9Wpa`Ggt=i4v!5uN)4s&tA*n1n+z5aM|8qhGV+o0NIEaWA#>ivNv}}7 zYaLND?Eeqpry+v9YH}&2CpAq?r1~WIh8Z6N~q-|5nZu75GfEg?^5|AP^VYZ@N!T9p%jsUt#!mlP?_IPOu;3BA8VG diff --git a/development/.doctrees/api/deepcave.runs.run.doctree b/development/.doctrees/api/deepcave.runs.run.doctree index 70caef9be079f92f3fcbe5780d149bb27ba9ef8d..bfbe9614e98541d8727848746f6e4a5bfc84d33f 100644 GIT binary patch literal 62699 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 C*RY8I literal 47298 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 Mw7pP_oCXX3AHwbByZ`_I diff --git a/development/.doctrees/api/deepcave.runs.status.doctree b/development/.doctrees/api/deepcave.runs.status.doctree index dcd6fe372295b7a8bf008d95a682bb7e45e702a3..1e911c337d206f158333fd9f2ab98b829c80786a 100644 GIT binary patch literal 13961 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 delta 1311 zcmbtU+iMeF5O$B|wr!d=ZDZ41Ol!4?X=BwYfG0#FI52+S^sS_7=5bNsk`WMoO8Os&36iGPzPVGpZGj z=5sh*ds>Ao1b~+gK@JCdTQJgIkE**yJy?Rc6~erGx5s6;3fic4WK=7FK!MNPcY|;Z z97zE_!)~#NadBFl5K+Rrf&bTSvBM0RSMa7cgu#FlnWvM%ZA^I1Fqp>2o|ym$;`JGh zN`1co2>jOJ!^!$4_Y{QSIfMrk!n%liRz~(;AnQDRI2p6(Y+yGF!Rp%ZEbKEODuw>x zpRf2mRosd_YQ0G~R3UsT32i1JHnc@-6GT03`o_rO`8pQn5B(+o zhwmyoZk6Ci?$8j9nl X-d${*;o06Pho8{+a%Hx6{XXR<2LhF? diff --git a/development/.doctrees/api/deepcave.runs.trial.doctree b/development/.doctrees/api/deepcave.runs.trial.doctree index c216bd824c059f7f5cdd6a1e9faaef77c7311504..d5e29c4673ea6feddaa69a4bff3900ba20d23901 100644 GIT binary patch literal 23383 zcmd5^dyE~|S>LtydDpw^wPTai-eiIkcHQiQxK5L9EjLa=332K~i4!VpGoHP7c4x-- z&fMOaYwxy1O;J;9=@42nX$wt3m5LBT4G7Xkg;wPsgrE|XLP4OQDy1k;sjb8xNL1nR z`_5y|nYoX>ce811$#-YYoX7Wl=X;&+obx?B{QSe`2KYZV9oIcS+*oodl`yKfamvOj zQMp-j!z6t!J^GRKsdS!=H=HYR)NGX9lntOp+4HNFh8w0AQZ_}^6TccS$@ZhMTTc8a z%$j?{-iSAPA)WWe*>K_~RoD2$_E%iDUUn|KOO0k2FC`7%sissNwTI5S8w5uCO3$PM zx{6zxL!%9wqF;<%ia3$P!`<0mR7%f+wI7T6! zheM|(p2jN8x_()8%9k4M8r5mC(ZpG&PpLQU9rE^ghrQk2EPG(ti)!vNa0%VU@|CD@ zY54&lc>k#u47nycOb8}`GByJ65vkkY#apnJE1NJsGh zcKn~i|D%KkDADja@bhe_?)Z(A9jZl@X4QSS)n>Sqy-j>wZ1>R{Ig_ML)4Ri4)Ht5; zZU!YWJ>wv}v)*v(o&g{mJz|~JlXy_S%lSe__X=W(j+~Cj(6}c-(+@63^#pW{6StB? zQMK%pJ$L!h&BTks<##N-Yw6B=mN(vce7WkcF4uV}3YTL)aTn{DF=yS4GfLCU#LJw^ zmg<`;G!u9U*R5!+EqO2#g9>#Z{T?9^-Y|ROtmns;pq*83M3;R?kCk|?#XGm6)c|s^ zRC)rk;U}08Yb|P6o)cEUi|a;3Ft2J~SrVLo@XhL7Pr)O7O@W80I=$PV!#JC+xNCk0 z%%ae)`ruimEtI%}L2fA2u`wkzqawR_Y4>| zTD4|1@#|Gr6PNT6r@5dfDW0LkZRCb7>7fypm$1n-Yloo2q;zIB2v;6Fz}W_ zJkBOoo7JkDbR^(7QMQF@k8}BY69}c*+xr+-!3Wu!GL|Op)!vB~@7=)!+tus~#_)M`=Sy)GrM@KO=gyTAPBV$(X07HlHc!In!mP1_(jkK9v1EKs z*^KdKgF<;X=5h)Dc)#=IC|vW`ZNIW$tu`y`Zn9vNVY}i5D^8q7VkdshU9gsxmX4N6 zj|#(Km;+%q`qFPuZ^K1^G8HqDtT&=&-QXediIn0fCb-Y}9Yd2VekJkJ(h|$3>m>m!ft5IdM1yI1byAfS!Dd+Aac{^>IXfu6r1y&w3UAf37$2!r* z%@O=?^5S{xyqvuAn7#9A`tZQ#4}bXtp64@&H%#IAqg)W@AvJsIZdie7w>RJ-8ql&k z`T#+QHD(6(%Wc3D)>bu`85|gpT6vfwlV&m>9H4L918wJ2!4u>_v0e4el#SFk7eSHK zH62GxMX;YbITTFePd9bNMt~q3rd2S;0|su!UykaRD&U^ekd5^RfA#tDG0q5 zyL)#=u^nV@ydy0nrwRU!LQ;?hT6uWil+<~Uqud8|y3_vupfq3aCSs%*e?dS0vn{IK1^>}XeU@3w9oU_)4`wfZ!q z!>8zr9s5|=C(TAKPVsa77!Bx7t;t zc+4PojrWKtL$Hh@KiW9cQnw|Hm96I6f7GP?T83+T>pcOET!hf^LD?k1z^9nM=gfGX zlwU29GWZIWC}hStGDS?JZ_&xq_}eXD9V1u;pkvhkRxtiecNq6^7%9+HbKwycA`R@m z-kj}j@|ZbrLin?x%-J2!h7qDMASQt{gQZv(yY0l>>Q4ZF2{*bna%>?OSvY=c1YE3hz&G%ELOAC==fh02%`t~Q9|zX1(h zppkfV`$#;zQ%H;mJKY8a^9zZBtf;~Fwhw+~r@$|1_o597#jnIpMgxt?)7wYom$r{e zFOC7biAQ-6C=FdZQ_&)BdX2n>SD|s>YG|*)Fm-Id5!1QsyI0Cl1#afFdV~vB_M(QN z@V5$L(DGKTIuF}owc2)%0eeZP>Q~a>?*L%7at;>oMqs}{6gR;Z>Qs{?c$TYDZ1Z5N z3g#w-CV+tzQKI}3o{e;0HcPkA8)0K>2s?ATCBQ1#NmM4XCUF|P1dw>~$FPj&A9PIu z`FW!BY(`!{|Lar&SIzK{U@sGM3sG$f%P%JlJ$p zRx#YruN8PSn8N6pN!!<Gzo+Tx<5PZEbK;F-t4{kwEB9MYO#G-Ju zb3PamNrqDX0)2I}b$N!!MNPhirbg66PF_B4a?OaF1jhiEn7rfkMEn-qMX)Lq2`(7} zxjsB;PblG1 zapS$JfKm9m?lx$5lZz}F7NbbZ)WB{rXT4DZ`{}{|WV8!j7jr)Z_412qXa!4I6|i|> zn5`A-alYg(oyAtHEW_SzwlS-=1pTa~GU-Yqv{?89eL;^+Kn3zJ5Sc+^Kt9e&TvhmM zzH3?;xf`;&&{XodYSxzbT zNrQKA`s9^tQ8cjKCh4dRWAWqzi4b<&Owv#Bu072ocW28uu!$cgoJX*4A10WVvXfwg zUb2d)*lh5)Oe@P6D>}(FMu{fO*}e#4Fb?)OgGV{^!EN}XrVocz=$wnNT>M#&wc5{E zicM&YUf5)g*rZoNfopoMui=mTf!}1JG0>`x#@*~JF$Xb`plQ!cMAJY_B+ZRxq~l`c z3@&;iMBwfmre(oet42<8f%BC7Oea3NDIR0}O|FQ1)in7;Uoe4DyK=Fe`Z?1 zRov9(i-zO3`+-C87LDHvZ{0+^)tO)*OqUuO#y{)_Mw5R^pw$;Rt+rM|f~Gz54^2Z` z{<({XF2Fty<9x?C$vCGhif(BQge_zBlF)&wRyDLmpyRLmB8kC16M*}#I7#yCGhu+M z7$;Yzr{k4=##SstWA?%_xAsOVuucy(HO$}d2WFFn_JCgBL*rglkf3YNEJRb$mW7t# zrpUtt;3LjL%H?S!7M(HJf_cn{k~Ar1ktWN;kkEj=Id29VO#=2&G;Xfu*=U$Us~AYW z>G5vrXFSC^G)^z9b67e&ooNKF>0U`g`u2VxH5q0Kl$qm{*;?la3iiw}MD(@{bBBu4 z<=6#)hwgi|ihPg8k>lm;pm z>$!Wb9|#nO(a61U*zxVqQ^CBw#u~HF_k)?qmHR;3&vDvr&6Q#fdge-+HqDjYo8i1< zn;5|e7Q5Rzd=M~-lpV9}I!@}@bgtR9=Z{+R?RIs==>%*?dQk<(5av48S;}>n<_;wo zz>DBe@CiVm7J4$g5q#1pV+Z)a`A+BMX@cMzX3fdMz+%BzDAm01PhELoK6nLv2mgYf zT$nSz%_z5Vzm;{xo_(u#?emn9d-%b3OhWCF^y_$zH;<&;WY9)31V)LL)*2W)?v*~eKv>@LtzyyAv}2C-#B;Tr(iq3Fqc@FGAC{s2GuiTz`gw7+r_ ze34r4(DIk)>3`8z@G?D(45N)aI=~8?_A6=dW$Lm617mTnHWd^(A>7}ToCN3bPtiC} zS#uj<`f(TjE{wH^+hvC?TFN!UPXSnQwxrjFC5Zf0rB%`DPl=dfqb=-33 zOoR(v9HwzL;)ncxmvJ0t{{S|E2I%1Lz{LTwu&Ak7=`{6 zV``iq>WZ_uQMA>G+xMcUZfnQ9nCG^M&Z4QYP1NRaZR;ix$!bv8BofGxD2gp2SRk?8 za$g(R*sR!4wdr^v)Q?RZf@_3HyvTW_<><$~=mZmfg8uYz0P|4rt~R3=qQk-6qI2S= zEw++^pA=PZ>7mzIQB_HpTKsnPN`gOurZRMwW^SAw%eS1DXR(DFQQXK?N2i|!5Ns4& z%*h)38olyURpxsbEs9%$nCUQ5k5j66QJj&##`egM>U{<^L1aU@TtCyr_86y_)2+GEzD{7QHprbMZZsUpR=NE!>;&j zYa1><_K&?%TwivqX6S#Q>29A>cD!FrmdTNB`nKRcAhvNRD4|6+2aH5Zx*0^iqA@RY zsoaeJ;#Iev>6}m9-Oqk|Kd7l0pQA>-&-gUv+pV7Cdz$!>_X={3v*Z#SuH|)&nB9AN z2GDe4g)@}96DHhN;pfn*Gq+}z!}8Nmbb*n!@6)T|2oz~e?cHV`?V;e^e3B8j9Xw|M zOr@rAZjWbSv;F4_jXJ9*6U*RzXx8ooR|hQlpuuBk)H7txE~PS0n9~62WsM4a9dr zN>87sr{}Y$PvYrX@G1WLY5w~g{P#Ec?`Qb$3-n83^k%sHNn{6c6uxnnUv{)pE`J7B zTbDl@OuGE)U7MhdX-U0nx0j>1%W<~!i>YxIJz6Q(~-mtSF%kFOA~ zzaSR!8n_mh|0MvsQ!f8^(3f!ezlSI7@+;LUuA=-7+PfA{@S zcp2w6b17@AB(ffQ{E;(=4bWPN$4&VGwCK^46A^ke<%7KHj=Jl2^@Ez4w`0_(_jw!Vhq7pcUfL@2LPX}M z4^b_{e|o5A$V?BmUq4-pYPztb;M#iU@8#4ldgoMX+R+Z)Ij}cya|(?*>l72W;QeUU zk9SUk_KBM5!4^^L>JD;m8Mh5x_cw(!76K{S-On} z%W2=mgQf4ngZ(r;aSxV1?Su!b(O{*zzR|#~JL%R!=^O+NsrEo^kIs&&s}jIZ-&D|D zwmGM+wh7d|DYVr0vhywFHi5kTli#N0uKgD>!n~LfhCgkSFi7PfL-`tzdGCbY4ql`L zdW#9q@aHPz^k*}RqocACN>U*~B9DUeR8z=r*qM{F)Q#Q(yCG>fVO-^&hmGl3NAd}g zx^Xx`;)H5?dVrNw9k+tlCXF}9rpnC*C5E)KG?05#iAV>@#^ja;vR=+$8%w0ITx;;V zYZU~7pLD8CTy0VNinvMDOzO=fJ>yLy^US)4m*V0eUMdKjVgtHX$IFBmkS;4;!fQ#s zHXBvEP1036N+d~NaovuRs<3@)QIsGJgll{`J;)|0m1fwi*&B4aDn-c@Wh<;BF;|T; zbjIlKkSKAhE-$gkT-*Gr2_VOCvVlx)d4}yl952Gb(W-md1?_gRlIK*j*I_o}Zs72X z*h^QHhS_k%U2U$TzbVSnLs^c{uj|xMG7j38UBU=?e5U*m1hU-_S1f6-h>bUswZ(fD z`OU?{`H!~SXhaR0r$oe^7`j@EWM|0ZGcCw$^fJtQN!e`SOQDP4RmcFF68&lzRO`d} z4~52TFW~@2i#?F2$}^ozR-JIYi3F0MI9(atg`B5sf5RUPF|AS^FHyv=Qd4$``uL54-D!a19! zUl-M5w^@m7WMo0Dy~v^z#V*b)>6V;J%87m1M-oiVpVM~5k11yv5TWd3XgI3m0y4G- z$ixWjav{UFNmFy#|S4vVQ0uVB#`5-xBKlFfJ! zfg18Vy>IUvo2t8Y8$@v-l4VXXB+ROV-vK*G2D{Nql6t(dyo}-)xj8Aj=Tg*IUryNp zs>uOBO&d8RF+B-SMB~;MZ~y7zpyyO$tz77yN_6)>rMictI>fS<+{TjcCTn~QNdK~z z)T$V49653zMLfmX7@Gx8*6d6?GX!MXlxu8nycs6WhVA+5UKRhrzeAL1CuMtLTdyF$lGvzl&G98kHSM+S#&)^cH1IpO80DnUfH$FClT;HJ)OZ=gpOR;2O9mD$|im ztr+%^s)(Dbg?fICm=_mQgfvnf+)F8Vrnc%i=16m8^dWg~ zEbPz0{?a6?)F9V8N1QgY1vPqMvIh7}oi%pnWP+pXf?o#!{bebh3 zaJ&>kP+LW^$XwMM3WZti@m#fWH7f6EU#@?C$ARqLfns0s3rs&WYdLC?_Cr=VWW=h1 z0l{jp>7)0{^5?)4&!mq*OW=+>^bNQzrmVoE*!E=#Hdj266?4{}@WXPoSs_tcr&h@8 N3L7BRrHHjG{Xff^lokL0 delta 1647 zcma)6Uuaup6yN>Yn}1Dg%%7!cZtjxWlBBVne=rjFFiLA-3Z#%eonlj!MZo5Us& zDs)?siqqS6$+-jnjQwFCsHmF-_b|ljiw}DdCJerFsses1y7o} zTzJj7?3{-P@Y)O%aeOq1OD?Z$da&Ud4?A^dSzFLvTF}a1ppjZOmW(9G`U_a@NMl#W z*$A8g`;-B@b=f2~RtyUhf%7;NQ1H)=UK^aH6z^fZN5TE>y$n9a?;cmN?k?Ei9f<0u z@Urg&9`}S8<#^w-Pb?2*Q};mwqVNrt{+i1J~)_8J*@ysw|F3x;TPnQRUE=))%HpPDj+sx8X51?8S?_3xk*WSfbA z%uU+OL=rPTRps|0z4*UKZ>Pdrq_^lEGI(_P(+*KoS)VRoan^y{q&`hh+jwRE#_%|`sKdrdh)e%-cEcrjnf8E{2(!vky!ii25_9KcT_(@&Z> z*U@Szca-KvwPNsn1mnW}hM_ynKvA177^X|mC?X^EyI9Pd&ck?6>1Tj=OxdrDiY(@B z90PTXZvMOfo`(8!kH=#KK@KyFT} zRE)xoE*Gq96JEHYJ59~=+HBF_&*KNty@T+jsR_O^CBUZM%tdO%IODtTNEu~# zDcuvIIrd-g@RlajGO@srFd{rGHkmrPbx>I}*K~tgO kZU#YJSiw;fixk|INZ$MJG(RE`{K@A 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 literal 28692 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 U))M6!D^rgkohJdD#=^}10|U_bD*ylh diff --git a/development/.doctrees/api/deepcave.utils.cast.doctree b/development/.doctrees/api/deepcave.utils.cast.doctree index 892106dc7c18581ea384f67a3226f9e7ed51b299..3b0223dba6448efae03fea79b33f00f53e18fa7c 100644 GIT binary patch literal 9755 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 g>poRnGEI( z*`CnJv5YRvR)%JiXR!K6Npb-}enClQeqLfud}dyWMp3 diff --git a/development/.doctrees/api/deepcave.utils.compression.doctree b/development/.doctrees/api/deepcave.utils.compression.doctree index eed74c339424a259a8338152a5a73e45dbbfdf06..1d69ee0cccde779071495c7a2fb1e29e6612471b 100644 GIT binary patch literal 19485 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 QwQ$@V7CttHDmA|Rf3!?+t^fc4 delta 3003 zcma)8X>3$g6rOiyI-P;imNH#u??R^=rA^DyfE0m{LadUY2}09O+kx9FosKh8uqYN{ zAXHz~_B;tF2pT{Hl-8P%7+LBbjZ1>^ONEfQgcu{y#E20*=e;-6PCF8R%zbw`=iKw1 z<-2qEfOM%nWmn1z^);g@n;CpMb1|G{^I&1xR>qshPNw}L&EVbK&P8uK55l#kJh+(d zHfvjOBYjg7;m&j5w|epiarQK-KU=0rrf@S)ZBaPDR&N*MSJ0DkX_&5I{4!~z zs2bpz>nY!dx_eM}AW_$s#Mp7$dd3gJZCg_sKN1)J2R3Be8NWktjXr(~{FyEd^4~GY znf#n=4F@)N_H_HZf{L)h)y%4y{5-$FFE;Z_axo0m6~K448D^!IS7-rY{7>-Y=FkU0 zXCi1}mkb6S_aAZGH7y#h3hb^KfZsA^!b-F>c60(iz3t+(1dClu*(iOMz}v0{_L*wMCC;OOpO;{jl;W?fg(5F>yC0L? zoaA<4B+qS$9l>6Ak?ojv;{-@@_`F+j?8gJytmeH#;pgarpJK8Q^5nCy1kZRn^HsSS zttRu21)EE9m6^p%&4`yiWE37L^7TWknB`gPvF9H0hkffeJg}-vQM<@0o4bNr zyMh7i@VMXtLqn*~(9p5fABh+m3~h!dv0Jfk=jjG;XOqXU$>76D8yTaoL9^)N2jh0^ zXlAu$rlD<$jW+H6c&mw3Uxxmd*`#IA z{)UQ8Xj>QgfWxz&Z< zS5Qe#?P(XPkK$EYS~>%fj@TL=uI^(|3BIXrVj&4U^LN1eSy?8Z*df8l{6f<%ybf*_ ztY;rGSXb++l5s5taY)E|tX~sYX`I3Knqv$kaMsqcuT}m2Bcy-y?)o}IjT2xE>1CSY zi-e4G9ChQ>ZR+$#{c05>6D8jtP1uLU0;2C|2bK(!@Apa8q#_3$FIY`|y#c$IfXa z8f1JJcGkSK5VZ=>vaV&HrX@VnwtS+5K~>`dR!f#D`*otMCNoZRVFxDT8ribBH`o#F>Io*k2I2&|D~1t>c#UR2vy<`J z>o^+_r_}MZI-a31PrRWn-c-l4G*WX#rLkY{-77IZIM%naNn#%v$39qf-B@~vj2^@x zB3pz0?f_9+1pmFH$3(!{<$FENLbxH+diaOWFtAn2{yI)K&D~LQt!TaW?kJ Ing^wS0R(HSp8x;= diff --git a/development/.doctrees/api/deepcave.utils.configs.doctree b/development/.doctrees/api/deepcave.utils.configs.doctree index 7a2f332346cef9b19378f53c72f2453119321298..708b54eb3a834d39801d95395e1434c2ad113954 100644 GIT binary patch delta 2550 zcmb_eZERCj81|g*_G7GDyHD1x?cKVvj&+@&j7fy@A<4*e@}Ve@Ioi>2da|vf9~g$f zFyJJqL3l48{xC+w7z`Tc!VFP1qC#TC_y^>Nm>}^z_uh6b$j1-=+|&E^ z{dk`DJny;Z>z;!VX;eC7nlmn~pfocIZ<|Jq3Uha-BQPk{`Ym30S$wEJwmGRVQ;))` zGkKQ1%5G(c;%82_1hyC*V5=_QrqPIctRcyCz7$D&2oxG2CHd^^ky9>>wzGR8!-e^b0q zVdn&`N!=BC9krCV!);r5rs`JQn~L}K;s~UY3jYqh_~!V&E4AuNKNe5Gy%ci|w2eY3`iOAXv-WiFme^*=FW}qQC9PNws$NH4l*+sQ=?8k2G zH9LjSw90%gykG65�h0dTt%mWZ`_EYgJ7XeMxoA!q^~Sw2)4Cr^Yq!E+88b2!9$M z_p5)s#!I(qT`Q=M^;XUF(LE0b?aP^S=%E5=2lJpUzYE%t2SUS>h2$M4*f2O<+dy%- zRJ&U&8yx{Dgq^H_jV`anjtSKr$MI+|-x3?|N-2En3X)2=UfPaAcgk!2n@bL$+UbgXmY8-mg;3h-q>qFL>JVvw>I z#;AR&wU6Q?jLKf}0;X$*Hm_9^?PGT;BNuZo;jR(*>oqPb3%G>t%jK*30NI(}zU>di z1-crRm)|*xP722wI>=#>&a59L05)$xB~=IOycP40V)}b=*st~(6)wqFMnTRK%YJyz zyOi!X2z499c4Z1EZdWN(;Gndwbih-Ns7CG?)=HkRcDGy3F98sF~QcW#2wwTh>j3 z#AHNKG#7!LOJGKY2QfzR0rmhvCupKCphlM<51J5-OvDKIg7HB;-@Uip226RmU%zwC zcYeQf&hPs=(f38KecZnPqtr3`28*qm$=&#XZ4KOqUfVKQjVEk_(2WWEEUd#yM*|eF z-Er8tl?53e>tlm>(bileWrwyrH;@};TKb7G*2;7*)|U0SovL#pZYO=pg$=<+E17SQZ-31@uAJRTJh$;I!jx>-Eby-~{bJGc@eV}yad;fty)x!J)zV`|#6}$VbOP7S-;-#KXOLU* zlRztKb&=J_DOz<>w?;D~{rORims5o5B12&~pB>mdkkxjvX}vY%AqG3SGf?1$F6ti3bYzgfU%WxzqO;7`W zp|<1NI>mWOOe@G|g!*HyZ;ahnrdK*=>`Ⓢa6NG?eX{VTDYs~DA8Fk=tFqFoPsH; zC+T4HrtzbAM2_Ar?t_1r|Qw%!S9k%j75H#E3;pkLGP z^(3B)H9!)tQP$h5wiLgZa+?WWJlnbe;$lO6luQ9sJe2rO9K+)auzi$E<>!W_p9yG{u!L z4O%T5>f@u^hVvT#kT6v#moH?^J-*cRJOroyX&MLEJvH940W7~-r_L_>(V93Ts+y)x rL3Ivhw&ul&0{vlg;dr&cq6EjMaVC|96&Ptd;0O>c9-I2O?NRs_RuYW6 diff --git a/development/.doctrees/api/deepcave.utils.configspace.doctree b/development/.doctrees/api/deepcave.utils.configspace.doctree index 8b8204ab538ade21fdb06f591c1e9fb1bf5ed7a1..50e100b8740e8ba4165492b55c5f4ed15602b259 100644 GIT binary patch delta 4759 zcmb7Idu&tZ73W^RVmt3R58~Lqi4(_;ofl0Ac|abdO$iK!iqHl`!6XhhA9)cc>tHbG z9vzv?s&Gt)Dq6_I26U8%BG{@?LAy#V?Fyl5JC%aa)NPdtE7dmb^#|;n?_S4t424C? z_ucP)=R4jwqhZr%RXE6?bHjOd3ct&8iSlc3y3`7?!KM2R zlK%<{r2;r*s1x3X&kR$-SvZ~Ys&odKpz+*2+@e9Us3#mX-Wf$HT8gY$)rwCt_^c5f}=L`o{u@yvf)Uv#N!SCX?`YMd@b3A$&<(^$J%gOqa@z zBL5@E|5!YKccMVJVBRjAgOmDv_}JWHQ3B$8zGJ zv%s6AgFw=^t z+%(v8E3%%a1BjF+o<0~rcdjq%Q3D;Fl`fLAM7bI6m4@M^jI<<$QHlt6^PUyGwCzjt zpiH!(izc$n>+?P4s1OEHRRuJprNC2Fwa}HnOl;@Jvf7kmOK{?MS(Mzc(P|atbD*_u z7T0sCq;D!zYhlXT*{Z_@kM=SD=;pv!n03($GukOQ66opg>+cEgk*{$hVCYkboJC-> z5(EzkfQ|wSY_X>6Fn>I;2CCC?5Lp$REHKeqxal)R?t>nq)XExBv;$`HwMq2~78m@n z*y$`*7KJ#CZ(=1lMQ*N=P~5BxHrUF==eZvFs*!+B*_fRs`*J$j09S1tnEy^SmO_ht zn|M;u`vg%~*)h0duN04ovDY+%E>DDo0f~;xMF@m&0Y?}|NMMx`@&Lfs9d+V|96-4W z_cxT`1pxilUs9vv`s9Y7pOs)kV3Pw^dDK+e)SAo`bv1oiW05G%!==C%me)rZ`SGisiv7bVZ8|yB&3pR9tQRoUmEhUr2AS5<{QP z_0ap|p`=I*(Zc9Zj^W*krsVW2v+@?`7DrOgijw)_hzK)n`DGz}B=L_RVaPDNiH&U= z353~34K9;<1Hm434ZkeeE=+>U)hXWEk^fgIPP91?&Eyg-RwN^dF`wD zsL6I0DxhjSNspL$kl!1y##4%ozz&aHxQwF>?pX50W1PQ(T|>_PScH@~)y#Z^+-|qU zV^%ZsVHAMO--gbzeDSgX%W8_mi=3zZD|w!WH_H}_Gn^6}-t4r?gw)E;EBtQ3Qm;q6 zsciq)yC_MGjPr2ME5+BL2oTz-o-H2ib5v-8lu!%B{f+Wh__{A(4WrQe*Nj~-I-gR8eo=?KGZ2f)TT0~pfZWzmS&Ic= zvaURmi(SOU##GEoE`GC;deK|+M>TAz2s=Fm6ko!VbSz0NSnV)XlT*~LLWm}ycn#S) zsH}cm=;9~UBDM~mX>hz9YbBHevzqT>KBPpl1@yA%i6V2Ur;3C)K##a zrfAkkQ<6?AigWs!iJ6r(aVD$I+xk)BT63)=AIQ+R{;I#g3DJMy^%1eFU*h2O^_n0Y9I4<7}Axy~uvBED&H z2oT$rx)R|(kA&?;UA15Wsj=Ls@-XNyXL$u~nZ%e$);-KJ*x?AVF*C_y#**NuoY0?P z!(+!D;(8~1QEw8FM?$3igd)v28)?|S7bP`NG+0?3->S#R#)V5uTanhusd(>!t&^~d zY!SJwD^Od!twqE(+BucMM~yj2Cgt0Sny7Z|D<})L*jEYxI-aC9QhxYOQ>EzF#e!G9 zcT|qah_8$6ZIA8sR)C{zwv&pXB?qqMS<9KlaRZ3C*{(y zTcpF3v{UJ+%+a3eC|p}&7mlN5HvU0~9TjhCeon~w2jSeNW*VMurlv+sDoRJSFt(|g zLSQ_m8b z#k3t%Z`4ZqB8v7Ic$@x0g6}5CcSg0xa`MoNG+7z3L7Z+;o2*F5;za?zR+5J|?@C+2 zie4&$qv&xKpeKtShrZdT&GK$FH-`PB7Dm>DBMIoilYv#&*Tt4sFH;7KAKg1zQd0jeT;vVpUR= zV#NTR$-jnAO{>_Sz;5=lA^0|>7DmlAIBU#W4mVRw@U?l5ydCNJaF@~tJCatK#0t(P zZOD+L@<3=Xv}G_fpu`|HZuuX39qwA(>=azjErtfU%=A-aeGRJfi{Z&K8D5dA*crGe zpJpde^>0`V3RCPj?#Qf28&_<~hl+h2LyjYYBba9N9mdr`RQ-x~H1>SVqnH%4lGG7X zKwn1#Yr=iu!B8Yj=m~RDa>7;v`xX}2KF4-g`Lzcs_R5^f3_M?(9U8t(WGgm7> z+HQ6d($hDmOvH)5fgh!pOUk!+X{)5X4UfwXaqqj@y^}M}N9DnAZ%_aB(AK^fm%*7) zm3&e8o$^7uaw+PEKPQ*MHBY)}SXrv5hPeZ+nWd6)hb)tcmf=>mXpv@|+xiuRai$;E zII2SvjMJFa!2B?pRhdr4e@2zheGIOzE-@=)plLFYSv8P4-HW>%r^V2gon}&S6^3WC z>rLG_>lDZ?WLwiZa3vy)Bb-_0#^CJ>M7#K?o;i*`8%!MrKpDRzQ6z?!N{fIrECvd;5p8Z^$ zC240cmcL~2&*qVPDgRaLaomrZh3mRw%6YQ&ml4t z<6j^VKMt0{s>QpA9&yq~1UKIaErq_EhY#S@68|?jiH*bNWid2Su5^pR=S45Ebl6bt z%jBt&FriEzvdCLjF9S%e8HDx4EzC_s)x1n4D!~s%OkPxSdSd%y>Z7u9+Ey(}2?GgE z!tLTMu+E+do6Bu7e^lkJhhw(Z_J87CL_kMEgImIp7!TrUGzHBxG!X9I+Pk$oc0jo( zjDQg?f*L&>*UY>Liosu7DwRmEvGy5O0_W_Nrg5aUqb3JjDmGe*Rn;=QP~vhWsS6{1 zhP${0Kk-*6@`8t_!Hq{N*)F=YRkzGe;<9l@ANxAuv_WT}0#-WnU?Px&#>#S@V#kO_ z=0}Li$`8R8PCq+DfW!mTn3M46<$JO1By2STTU-kf5=^q{f>1X%tY8;NZIur7T@|Vp zE&?jV!bfxvsHO`6zTY39KuQ&Rz5fWc{^f>sZGnGU2w}giQ#;@qJ<3;d$Wg65c{e7 zvuk;^3&Cr5jL;O_jiLJ{v@LZ@XBdpu6dU+C`qtsY81>oNML6Zlv1mE>WvDK5)Fz(Rt9Y_#TTy($d$jm>*A<>DS<4&{)8-SvU7^l3dnE97PO0xM4noZM; zmM_KlS45si5!B}K(!1nZdC}d4hUr97E$Q4ua^2o~OEYiXS)ez#Bg}fVIzv*Z_PkYl zdq%baQiI2m?*UaI`wJNUv5#glXd%a5X2tU%f#Tt|3+qBQ-0erE#vu zwDRRfu6fEAZL5K+r=mn?Jb-AS(AFdc<036uO$)&FS_e$pmNw6+YfUJYKZUGR&d3k5 z%2^yqLOF9oRjmt4?ssc{faCNkHSsJ#6)s;XfwXdmxB_?KClTaKPy4h1mM#Bdk#lEg z+i-X&d26q;Cs14EY})1Q3HOGEw?!bg&Wko`sB=lr#V-`pY!nd+=9GBazQ2v&T3xkt zI4(~&&_T^WsS@7=lPhh@=h*28ieAW0DjFVu_g1*1H{-$`n)NlXClgJ9l=jDbg0UJ9CUj;U>wK}6kYr~phXtiHzHeo(3 zzUJ^TvioNI1kg2?SspW z`PusjuV_*9EC|?;&FT=(!n!6Go5XuMnCK4$ns@Gt=6yng-I$jC5KX)rTQa*FBjqA9 zCv;=`bjKMD+-`u=z8tOF8qtiMVOFT!e}1+bw+T1O8l_o;o~$)yx2dvHBrML+J2SoD zQ8j^IHWx~pjL_*WTF=*D#^#&Q^?WVO?jSclHW1AS)i?LmdPl)kJ8mY`i zru>f|VC?YJh3~X5Rxu^5{fEK5$czHNL8(Jgxi7RmOda14{z}2=U~EV!!5=K}98%j_ fjRUv^o24W0Wm{V2Al3CfG*E}YyQa+RzsLR$M`ck} diff --git a/development/.doctrees/api/deepcave.utils.dash.doctree b/development/.doctrees/api/deepcave.utils.dash.doctree index 6175b0bfbf4d3527d16f9d6a936be611dbaf12cf..9996a7affb0067d911a7bb3ef4a944a52a8bba3d 100644 GIT binary patch literal 15732 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 delta 1388 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 diff --git a/development/.doctrees/api/deepcave.utils.docs.doctree b/development/.doctrees/api/deepcave.utils.docs.doctree index 9769f1c08e659ef3e2f7ed5ea8f7cebbbd5742e5..f2d504047a7544f5beca56bd13460f95e0ee1fff 100644 GIT binary patch literal 9950 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 Mg>K~A*GG=A-+6)x-2eap diff --git a/development/.doctrees/api/deepcave.utils.doctree b/development/.doctrees/api/deepcave.utils.doctree index feddd9dd9983cd9aa3dae2a8439e774aa4a525f9..987777ef62c8e1fdd5675242be53ba932874478f 100644 GIT binary patch literal 35114 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 Nx*q~*rqV1<{XdFnvLXNg literal 20984 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 diff --git a/development/.doctrees/api/deepcave.utils.files.doctree b/development/.doctrees/api/deepcave.utils.files.doctree index 5db276c61403c66832c41bf189889a8cabb25f45..bb0b9e3e4b017761ca2ce36ed071cfcff7568330 100644 GIT binary patch literal 11764 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 N^3?57Xc9M8{|7R0j(Pw9 delta 447 zcmXv~OG^S#6z-~boIyotRnt^NLu$Gx2&0H<6ZAripiM+fVI2mXM4g3Tltf@+37#n; zB5K_t#9hnQwekltLXlCXhZ6*?0Dm!bzzzU;?h40b`v+!?l)Kh_ecxm%x8Z{`xIa!KS z^P*D#1aNLyfbH5|$%GJ8$W?CygjN7Gm(mmpB%HQ{6M{MkK@NoCSawbET|(Q<&fl&+ z&lcUILpV#r5bcO` Yd=4#(Iil$MIh>brSO|M-58-w857LH^D*ylh diff --git a/development/.doctrees/api/deepcave.utils.hash.doctree b/development/.doctrees/api/deepcave.utils.hash.doctree index 32b35cf844a00ed37b8836ea82994d8079b69404..cf34b664e5f5b7c7fc6457b6ac78891e642e9478 100644 GIT binary patch literal 14205 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 delta 1870 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 Dj8v!u literal 20163 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 OYaSaua!$f_^Zx)=Q^1%2 diff --git a/development/.doctrees/api/deepcave.utils.logs.doctree b/development/.doctrees/api/deepcave.utils.logs.doctree index f649a0e3eef0dd43f7585d34eb77de9d8024b48d..4a06b15ce465d763b9f1982928ebaceca3ac371b 100644 GIT binary patch literal 9533 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 diff --git a/development/.doctrees/api/deepcave.utils.notification.doctree b/development/.doctrees/api/deepcave.utils.notification.doctree index ed90ac4889141e85b15511978c8d0c9eb490fef5..a156e5e7d401977da1452518b791bd8de7c9508b 100644 GIT binary patch literal 20202 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 diff --git a/development/.doctrees/api/deepcave.utils.run_caches.doctree b/development/.doctrees/api/deepcave.utils.run_caches.doctree index 2995a4c42308f90e020ca3b309cc4f2a8231f0f9..3d2cd3cfa70d7a1a841932ef1c52a8f5ea743488 100644 GIT binary patch literal 34790 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 YMz>Dlv`(dF>NE~Wl}TnzcXjFi0nks9o&W#< diff --git a/development/.doctrees/api/deepcave.utils.styled_plot.doctree b/development/.doctrees/api/deepcave.utils.styled_plot.doctree index 8f9b0133507fe680d918b197c8dbf4939eb119bd..ac8054f7ea84c786696bee7f3e07d5f67c0a0120 100644 GIT binary patch literal 62515 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 hqJ()gIF(QG0NFPGo!{|D**8l36z*Kyg0XHC zLEBAB3-xYA&uyd)sqKp=*-^}@Daz7S)+2J_hINw&gTVQ<_?FJX;~(E39h zu6Y|I`aTR?kH8<^V-j6}KiyX=+X(_pT*Plki8^z}%$Tp52_A!``NvA$qG9?ejR@2m zkZDnZS7Y(p*k@9JpnOuIU%`@OP3y@|yUC|H#58#G6U8x$1!hF-Bzg== z_lC-hN0Q?y-E5cm9w~-3Xerz2q)BuKptU~&m&z)n!8u-A*2oQVW{*sC>uae=Ry1@ zR$>QW*xyci1^f$td?UR3A@Hq%^Kw7N4QE;#8XQlW^afvkG!KP6zM#Z{a66#w6EOF{ z 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 z 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 literal 61458 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 YX6hbaQP%Vq2_h%zWETX4@_w25f6$+iRR910 diff --git a/development/.doctrees/api/deepcave.utils.symbolic_regression.doctree b/development/.doctrees/api/deepcave.utils.symbolic_regression.doctree index f8caa0a3b5178bd89ef56d3ce126e3a8f8f8012a..44427d7eb56c39ee319479df64e8756eabac8d43 100644 GIT binary patch delta 1394 zcmZ`(Z)j6j6o2=G_iif9YS%wYOss7kY0?*~RXbS=aTS~XHH~eOR!h-zHoV>0^iSG3 zVOuLh*`#Roys~{7(+`ER!H`GU*q=|8eH$A?4CthSFw`PN#y*Xb-TP9Ltes!pyZ4;) z`~A*6=iK|?Hu?J(BG1V4Pvf`b%L=K*Ipr)8TczQlD3cR7v-?fH^<-C7#++@fEW6Ef z;GC_%7<~PPg;9l(!UK0^6`8yw~q9?N*^U^VV-*#%zH zLfly2whN!t7UIqJy}(p_*iz+XA&Vq=FX$iY9!;JFU!|_mL0v01mlySn!^xWSN!4w+ zY+i)tn{u$8jB@vXmBT_A;SD#iENw_F#fCr$o>PmBhJcH}=fdT~=~hbSv8cTcms;Cl zQ5aQ4JFGd`0w=A7c?HKis&TsQB>bF1EDMC){*nq}D7*s?MT+6RKzKGvQjgz6ii&@f zB}w}uIHjrD5*JA+*CVBnQjqMg!2b49c%BdG7M`oovW);IFWdjufzmvoeNFj6jPVA1 zqTOR#lqG3uh%=HwJy*~aj(0mSt=h>Q^Z3h|yNENJY(q!?y>dqaLuJzw4H32;-z5MCd-Yt&bc%mGpkGt$Ipzut!sC9 zVb~IIn3Hk7@oEPIDRwtUcZfLl8~3nlVkNehboM(pV63amE^upvQ;p<;LU?);E@j+YPQwBz5AhZJ8FmhTTn;(O5HD& z&!3c4{GhKwHnYHofr?D29%o9G%9aWi#L^48=%pQ3YD#dd-)akql4J+tL6e=V;}`u^ zDf1T~NG7SpiUTRol5%Mp;rqn|K delta 1124 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 delta 2860 zcmbtWTWlLu5ZzsS?bxyNqBThqKhl=iZXRk&Lt6uFC=>~hf+8wW#p}kK#N>MAIK~f= zd=L{91d*0UGFzGoXutSqD}+K&giuQriI09(AdqNL2``D?3W^XCDRb}o6}wK0_^@^F z+_`h-%*>hDE3^F7BjPLK$)oK{Vy|HAC$4^Q84vS)aI@VnkV7zMjNAH2E3uI_Vj#|b zSQH=Shv8dsdtWj=m55lasdUn6O~}bqWGIu2`4V!P#O3jb-)hY%Jex>IC*pD}_(XIh z9Ypmm&tvhaPzWYXGnN?Ij%J3*IINl;v<_xSCt)HuY#yk$s1`IVk0s><(LjTF^A-L* z7_4#fXVJfHuu$U_KR^Sg;lFAQdJKa6rxOBqpa)Qa}o$Gg3ILzg=*Z{KZ_isHSK< z7L7+Rcm)(&I5fcN2Dku64RE>pi~g=0cC{Xrbe#az$SIu3TTw)w<6z0{;LXrycl*w% zLSjl&YZ6o4%rh-Q9>Can@#ha|G^>~=#lXW_tGnBjjJ$xzG_s;v*m7Ks#xW1J)*Ou5zax$*Xk&EOK`J$g(Rt+=-)GB5f)1;^Ic4k;6ZkoDwe0E1jQ=Qd9 z+0CAi%YFO@GxRqt20JZ}-*a~Vq!RHDnmrge;I1P#N)E5H!|(9$8@8Iq)mLoA>WNSLv%-9C_Mflowq_!CAFnH{4Bpn8tKL=sE+eCwTf(5g=N-$$^ z(cWV%1gs5i+S;I@PORXCgCB&II+rlW!+J+&6D5W+jhWEFE6>wcT=33LV-^7^$M9rR zj=1kadc9DuZ43nYVdLIMe#r~+Y$E3SF{zd0Qr?HP`feL?OF2!w&XGP_NiPIMUB6YZ z{NcSZZB$OnlxWg47ELrh)|2mND3UyqBn8VDNfon9lQz6+T8y_+mq))`@d$QEycv>0 z<Fh>VQ6_mfi3^r-A2oGF>S;A4)*!epPsJnpRrC~Z zhB)*Hz4DPo>Q*mpplT~^BGjuuIR8*ScohxhGlT_a_OnL&8j2Yk3N>)&ezL+S z&{c&3U!uj5eqv;HXgkT4x0Cv^%$Bzn;vZ+LDU+|8cn67~u>;ZjJ~r z-|XDwBlk8*);EP~L!%{`FM;bVPyL-H2__b)oOjPDy2wC_ zP7`?*XJ-_bZE&H%E{@@D6fQL!6o+wj0>ArQ(9+l2SOAyYK`OQ{z6X^L@)r0^S0p$Bs*(vIH@cn&pvPaDk!%-8`TYhz!A?5j63 KynL(gIsRWYQu_4( diff --git a/development/.doctrees/api/deepcave.utils.util.doctree b/development/.doctrees/api/deepcave.utils.util.doctree index e9533585f3c5500fe93e5f0ca70d292bda86d08c..d93dfffa7c4bb464b3eb6933f620159940f02a74 100644 GIT binary patch literal 24633 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 delta 2643 zcmcguZA@Eb6z;uux23GGLgC6RZDDNCvX!tUOJV6{wP zo-WvHZIhmX32S}n@JJ@rUs{?T8HPElr})@tYbrht*v9Qc=wooSmnGnaZHFpO5G;8R zK9g%;qU56V8bs|IrIYYxO)Z?XZ&Ket`z%a#d*LU0i*yQRUCpqobU=NTdGv=MBJEZ} zTX#%5t7Qi8z*@Hi(DQJhoJ}zg`;>V*C4Brvs8H*+=_pNN;1>ep#*>Dhsm#i35ra+V z&w5d+2C3kJ*9TX<+v`+Op}1q3o;y8fn10;s2ZG4{J^H_zPpT4=3f&hU9XXO7O(f#O znVkk4^ZEAa+e7IT8%#dYL%O~rhk6J*yckIfDHIEbQkih*&`>;`4u`@q1T`FsnV}1r zvOh$6?QL4T%7XS5)7}!Yki8{me!NiFIbL?YwzKeZgra@k@&DbZikN=GJ#+i?LSC3&E zB8Ki+3d|sefLYC@{)Junllosq6Y)#V)9-Yn{z@H#c4uALT#@dI&|OB|MIlY0^tF)0 z1d)C7^LY0x&eB94LUWe`4F&g=b!!Tdj29$oZO@>q>;j3Cp5M=kVrgB$>j(>wwOzpH~P$oQ>6^8u6n5oZg@QNxa5Ru4ZgdV;*wW}uUtWUo=iGatgQy8%TX%+&KB$! zO?Jp|sj8WNu5GS?xz;KHM5|l?!j924j4>+9inl9THFu0giko*K4ne`9PD<{7XHgGD zUBsfu>RH6|ju)|Lh+4nwEyZXomfTX0VU*R7s1Lp0jzn=9lL~r4;bAJsWKo1}ZH#Et zDZ^H6gWyq-!5%WOG9uD$QzRy}n~#|@M~|suHPMn%pT;FMh*B+NwKDZEp8DXlc8}VN zQWV;|ykNU)y&A@o1K*jnnR~kVS?>X`X4x?lPiLMo~k diff --git a/development/.doctrees/environment.pickle b/development/.doctrees/environment.pickle index 08b0c002f2dfb66892055dec3cbf872bbafd3bfb..dcf4062575501410b92420b41ae6039dc65c96b6 100644 GIT binary patch literal 4112609 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

    diff --git a/development/api/deepcave.evaluators.epm.html b/development/api/deepcave.evaluators.epm.html index 2fed9609..58122df3 100644 --- a/development/api/deepcave.evaluators.epm.html +++ b/development/api/deepcave.evaluators.epm.html @@ -696,9 +696,19 @@
    +
    + On this page +
    @@ -720,20 +730,35 @@

    deepcave.evaluators.epm

    +

    # epm

    +
    +

    ## Modules

    +
    +
    fanova_forest

    The module provides utilities for creating a fANOVA forest.

    +
    +
    random_forest

    This module can be used for training and using a Random Forest Regression model.

    +
    +
    random_forest_surrogate

    This module provides a RandomForest Surrogate model.

    +
    +
    utils

    This module provides a utility to get the types +as well as the bounds of the Hyperparameters.

    +
    +
    +

    Modules

    - + - + - + - +

    deepcave.evaluators.epm.fanova_forest

    # FanovaForest

    deepcave.evaluators.epm.random_forest

    # RandomForest

    deepcave.evaluators.epm.random_forest_surrogate

    # RandomForest Surrogate

    deepcave.evaluators.epm.utils

    # Utils

    diff --git a/development/api/deepcave.evaluators.epm.random_forest.html b/development/api/deepcave.evaluators.epm.random_forest.html index e0563cad..eedf7f45 100644 --- a/development/api/deepcave.evaluators.epm.random_forest.html +++ b/development/api/deepcave.evaluators.epm.random_forest.html @@ -711,6 +711,15 @@ -
  • - - - - random() - - - -
  • @@ -772,6 +772,18 @@

    deepcave.evaluators.epm.random_forest

    +

    # RandomForest

    +

    This module can be used for training and using a Random Forest Regression model.

    +

    A pyrfr wrapper is used for simplification.

    +
    +
    ## Classes
      +
    • RandomForest: A random forest wrapper for pyrfr.

    • +
    +
    +
    ## Constants

    VERY_SMALL_NUMBER : float +PYRFR_MAPPING : Dict[str, str]

    +
    +

    Classes

    @@ -782,29 +794,71 @@
    -class deepcave.evaluators.epm.random_forest.RandomForest(configspace, n_trees=16, ratio_features=0.8333333333333334, min_samples_split=3, min_samples_leaf=3, max_depth=1048576, max_nodes=1048576, eps_purity=1e-08, bootstrapping=True, instance_features=None, pca_components=2, log_y=False, seed=0)
    +class deepcave.evaluators.epm.random_forest.RandomForest(configspace, n_trees=16, ratio_features=0.8333333333333334, min_samples_split=3, min_samples_leaf=3, max_depth=1048576, max_nodes=1048576, eps_purity=1e-08, bootstrapping=True, instance_features=None, pca_components=2, log_y=False, seed=0)[source]

    Bases: object

    -

    A random forest wrapper for pyrfr. This is handy because we only need to pass the configspace +

    A random forest wrapper for pyrfr.

    +

    This is handy because only the configuration space needs to be passed. and have a working version without specifying e.g. types and bounds.

    Note

    This wrapper also supports instances.

    +
    +
    csConfigurationSpace

    The configuration space.

    +
    +
    log_ybool

    Whether y should be treated as a logarithmic transformation.

    +
    +
    seedint

    The seed. If not provided, it is random.

    +
    +
    typesList[int]

    The types of the Hyperparameters.

    +
    +
    boundsList[Tuple[float, float]]

    The bounds of the Hyperparameters.

    +
    +
    n_paramsint

    The number of Hyperparameters in the configuration space.

    +
    +
    n_featuresint

    The number of features.

    +
    +
    pca_componentsint

    The number of components to keep for the principal component analysis (PCA).

    +
    +
    pcaPCA

    The principal component analysis (PCA) object.

    +
    +
    scalerMinMaxScaler

    A MinMaxScaler to scale the features.

    +
    +
    instance_featuresndarray

    The instance features.

    +
    +
    +
    +
    +get_leaf_values(x)[source]
    +

    Get the leaf values of the model.

    +
    +
    Parameters:
    +

    x (np.ndarray) – Input data array.

    +
    +
    Returns:
    +

    The leaf values of the model.

    +
    +
    Return type:
    +

    regression.binary_rss_forest

    +
    +
    +
    +
    -predict(X)
    +predict(X)[source]

    Predict means and variances for a given X.

    Parameters:

    X (np.ndarray [n_samples, n_features (config + instance features)]) – Training samples.

    Return type:
    -

    Tuple[ndarray, Optional[ndarray]]

    +

    Tuple[ndarray, ndarray]

    Returns:

    • means (np.ndarray [n_samples, n_objectives]) – Predictive mean.

    • -
    • vars (Optional[np.ndarray] [n_samples, n_objectives] or [n_samples, n_samples]) – Predictive variance or standard deviation.

    • +
    • vars (np.ndarray [n_samples, n_objectives] or [n_samples, n_samples]) – Predictive variance or standard deviation.

    @@ -813,9 +867,9 @@
    -predict_marginalized(X)
    -

    Predict mean and variance marginalized over all instances. -Returns the predictive mean and variance marginalised over all +predict_marginalized(X)[source] +

    Predict mean and variance marginalized over all instances.

    +

    Return the predictive mean and variance marginalized over all instances for a set of configurations.

    Parameters:
    @@ -836,8 +890,9 @@
    -train(X, Y)
    -

    Trains the random forest on X and Y. Transforms X if PCA is applied. +train(X, Y)[source] +

    Train the random forest on X and Y.

    +

    Transform X if principal component analysis (PCA) is applied. Afterwards, _train is called.

    Parameters:
    @@ -855,11 +910,6 @@
    -
    -
    -deepcave.evaluators.epm.random_forest.random() x in the interval [0, 1).
    -
    -
    diff --git a/development/api/deepcave.evaluators.epm.random_forest_surrogate.html b/development/api/deepcave.evaluators.epm.random_forest_surrogate.html index 1bd5a912..036e6a03 100644 --- a/development/api/deepcave.evaluators.epm.random_forest_surrogate.html +++ b/development/api/deepcave.evaluators.epm.random_forest_surrogate.html @@ -745,6 +745,15 @@

    deepcave.evaluators.epm.random_forest_surrogate

    +

    # RandomForest Surrogate

    +

    This module provides a RandomForest Surrogate model.

    +

    Mean and standard deviation values can be predicted for a given input with this module.

    +
    +
    ## Classes
      +
    • RandomForestSurrogate: Random forest surrogate for the pyPDP package.

    • +
    +
    +

    Classes

    @@ -758,19 +767,20 @@ class deepcave.evaluators.epm.random_forest_surrogate.RandomForestSurrogate(configspace, seed=None)[source]

    Bases: SurrogateModel

    Random forest surrogate for the pyPDP package.

    +

    Predict deviations and fit the model.

    predict(X)[source]
    -

    Calculate mean and sigma of predictions

    +

    Predict the deviations.

    Parameters:
    -

    X (ndarray) – input data shaped [NxK] for N samples and K parameters

    +

    X (np.ndarray) – The data points on which to predict.

    -
    Return type:
    -

    Tuple[ndarray, ndarray]

    +
    Returns:
    +

    The means and standard deviation.

    -
    Returns:
    -

    means, stds

    +
    Return type:
    +

    Tuple[np.ndarray, np.ndarray]

    diff --git a/development/api/deepcave.evaluators.epm.utils.html b/development/api/deepcave.evaluators.epm.utils.html index 8efd58a2..bc5f1c4e 100644 --- a/development/api/deepcave.evaluators.epm.utils.html +++ b/development/api/deepcave.evaluators.epm.utils.html @@ -734,22 +734,41 @@

    deepcave.evaluators.epm.utils

    +

    # Utils

    +

    This module provides a utility to get the types +as well as the bounds of the Hyperparameters.

    Functions

    - +

    get_types(config_space[, instance_features])

    Return the types of the hyperparameters and the bounds of the hyperparameters and instance features.

    Return the types of the Hyperparameters.

    deepcave.evaluators.epm.utils.get_types(config_space, instance_features=None)[source]
    -

    Return the types of the hyperparameters and the bounds of the -hyperparameters and instance features.

    +

    Return the types of the Hyperparameters.

    +

    Also return the bounds of the Hyperparameters and instance features.

    +
    Parameters:
    +
      +
    • config_space (ConfigurationSpace) – The configuration space.

    • +
    • instance_features (Optional[np.ndarray], optional) – The instance features. +Default is None.

    • +
    +
    +
    Returns:
    +

    The types of the Hyperparameters, as well as the bounds and instance features.

    +
    Return type:
    -

    Tuple[List[int], List[Tuple[float, float]]]

    +

    Tuple[List[int], List[Tuple[float, float]]]

    +
    +
    Raises:
    +
      +
    • ValueError – Inactive parameters not supported for Beta and Normal Hyperparameters.

    • +
    • TypeError – If the Hyperparameter Type is unknown.

    • +
    diff --git a/development/api/deepcave.evaluators.fanova.html b/development/api/deepcave.evaluators.fanova.html index 3d65c715..44b8ac81 100644 --- a/development/api/deepcave.evaluators.fanova.html +++ b/development/api/deepcave.evaluators.fanova.html @@ -754,11 +754,20 @@

    deepcave.evaluators.fanova

    +

    # fANOVA

    +

    This module provides a tool for assessing the importance of an algorithms Hyperparameters.

    +

    Utilities provide calculation of the data wrt the budget and train the forest on the encoded data.

    +
    +
    ## Classes
      +
    • fANOVA: Calculate and provide midpoints and sizes.

    • +
    +
    +

    Classes

    - +

    fANOVA(run)

    Calculate and provide midpoints and sizes from the forest's split values in order to get the marginals.

    Calculate and provide midpoints and sizes.

    @@ -766,12 +775,26 @@
    class deepcave.evaluators.fanova.fANOVA(run)[source]

    Bases: object

    -

    Calculate and provide midpoints and sizes from the forest’s -split values in order to get the marginals.

    +

    Calculate and provide midpoints and sizes.

    +

    They are generated from the forest’s split values in order to get the marginals.

    +
    +

    Properties

    +
    +
    runAbstractRun

    The Abstract Run used for the calculation.

    +
    +
    csConfigurationSpace

    The configuration space of the run.

    +
    +
    hpsList[Hyperparameters]

    The Hyperparameters of the configuration space.

    +
    +
    hp_namesList[str]

    The corresponding names of the Hyperparameters.

    +
    +
    n_treesint

    The number of trees.

    +
    +
    calculate(objectives=None, budget=None, n_trees=16, seed=0)[source]
    -

    Get the data with respect to budget and trains the forest on the encoded data.

    +

    Get the data with respect to budget and train the forest on the encoded data.

    Note

    Right now, only n_trees is used. It can be further specified if needed.

    @@ -779,7 +802,7 @@
    Parameters:
      -
    • objectives (Optional[Union[Objective, List[Objective]]], optional) – Considerd objectives. By default None. If None, all objectives are considered.

    • +
    • objectives (Optional[Union[Objective, List[Objective]]], optional) – Considered objectives. By default None. If None, all objectives are considered.

    • budget (Optional[Union[int, float]], optional) – Considered budget. By default None. If None, the highest budget is chosen.

    • n_trees (int, optional) – How many trees should be used. By default 16.

    • seed (int) – Random seed. By default 0.

    • @@ -794,7 +817,7 @@
      get_importances(hp_names=None, depth=1, sort=True)[source]
      -

      Returns the importance scores from the passed hyperparameter names.

      +

      Return the importance scores from the passed Hyperparameter names.

      Warning

      Using a depth higher than 1 might take much longer.

      @@ -802,14 +825,14 @@
      Parameters:
        -
      • hp_names (Optional[List[str]]) – Selected hyperparameter names to get the importance scores from. If None, all -hyperparameters of the configspace are used.

      • +
      • hp_names (Optional[List[str]]) – Selected Hyperparameter names to get the importance scores from. If None, all +Hyperparameters of the configuration space are used.

      • depth (int, optional) – How often dimensions should be combined. By default 1.

      • -
      • sort (bool, optional) – Whether the hyperparameters should be sorted by importance. By default True.

      • +
      • sort (bool, optional) – Whether the Hyperparameters should be sorted by importance. By default True.

      Returns:
      -

      Dictionary with hyperparameter names and the corresbonding importance scores. +

      Dictionary with Hyperparameter names and the corresponding importance scores. The values are tuples of the form (mean individual, var individual, mean total, var total). Note that individual and total are the same if depth is 1.

      @@ -822,6 +845,7 @@
      +
    diff --git a/development/api/deepcave.evaluators.footprint.html b/development/api/deepcave.evaluators.footprint.html index 16d89d42..bce48925 100644 --- a/development/api/deepcave.evaluators.footprint.html +++ b/development/api/deepcave.evaluators.footprint.html @@ -696,9 +696,52 @@ @@ -720,14 +763,122 @@

    deepcave.evaluators.footprint

    +

    # Footprint

    +

    This module provides utilities for creating a footprint of a run. +It uses multidimensional scaling (MDS). +It also provides utilities to get the surface and the points of the plot.

    +
    +
    ## Classes
      +
    • Footprint: Can train and create a footprint of a run.

    • +
    +
    +

    Classes

    - - + +

    Footprint(run)

    Footprint(run)

    Can train and create a footprint of a run.

    +
    +
    +class deepcave.evaluators.footprint.Footprint(run)[source]
    +

    Bases: object

    +

    Can train and create a footprint of a run.

    +

    It uses multidimensional scaling (MDS). +Provides utilities to get the surface and the points of the plot.

    +
    +

    Properties

    +
    +
    runAbstractRun

    The AbstractRun used for the calculation of the footprint.

    +
    +
    csConfigurationSpace

    The configuration space of the run.

    +
    +
    +
    +
    +calculate(objective, budget, support_discretization=10, rejection_rate=0.01, retries=3, exclude_configs=False)[source]
    +

    Calculate the distances and train the model.

    +
    +
    Parameters:
    +
      +
    • objective (Objective) – Objective and color to show.

    • +
    • budget (Union[int, float]) – All configurations with this budget are considered.

    • +
    • support_discretization (Optional[int], optional) – Discretization steps for integer and float hyperparameter (HP) values. +Default is set to 10.

    • +
    • rejection_rate (float, optional) – Rejection rate whether a configuration should be rejected or not. Internally, +the max distance is calculated and if a configuration has a distance smaller than +max distance * rejection_rate, the configuration is rejected. +Default is set to 0.01.

    • +
    • retries (int, optional) – How many times to retry adding a new configuration. +Default is set to 3.

    • +
    • exclude_configs (bool, optional) – Whether the configurations from the run should be excluded +in the multidimensional scaling (MDS). +This is particularly interesting if only the search space should be plotted. +Default is set to False.

    • +
    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +get_points(category='configs')[source]
    +

    Return the points of the multidimensional scaling (MDS) plot.

    +
    +
    Parameters:
    +

    category (str, optional) – Points of a specific category. Chose between configs, borders, supports +or incumbents. By default configs.

    +
    +
    Returns:
    +

    X, Y and config_ids as lists.

    +
    +
    Return type:
    +

    Tuple[List[float], List[float], List[int]]

    +
    +
    Raises:
    +
      +
    • RuntimeError – If category is not supported.

    • +
    • RuntimeError – If calculated wasn’t called before.

    • +
    +
    +
    +
    + +
    +
    +get_surface(details=0.5, performance=True)[source]
    +

    Get surface of the multidimensional scaling (MDS) plot.

    +
    +
    Parameters:
    +
      +
    • details (float, optional) – Steps to create the meshgrid. By default 0.5.

    • +
    • performance (bool, optional) – Whether to get the surface from the performance or the valid areas. +Default is set to True.

    • +
    +
    +
    Returns:
    +

    x (1D), y (1D) and z (2D) arrays for heatmap.

    +
    +
    Return type:
    +

    Tuple[List, List, List]

    +
    +
    Raises:
    +
      +
    • RuntimeError – If calculate was not called before.

    • +
    • RuntimeError – If evaluated configs weren’t included.

    • +
    +
    +
    +
    + +
    +
    +
    diff --git a/development/api/deepcave.evaluators.html b/development/api/deepcave.evaluators.html index f7cdad23..c1ba5de7 100644 --- a/development/api/deepcave.evaluators.html +++ b/development/api/deepcave.evaluators.html @@ -696,9 +696,19 @@
    +
    + On this page +
    @@ -720,20 +730,32 @@

    deepcave.evaluators

    +

    # evaluators

    +
    +

    ## Modules

    +
    +
    fanova

    This module provides a tool for assessing the importance of an algorithms Hyperparameters.

    +
    +
    footprint

    This module provides utilities for creating a footprint of a run.

    +
    +
    lpi

    This module provides utilities to calculate the local parameter importance (LPI).

    +
    +
    +

    Modules

    - + - + - + - +

    deepcave.evaluators.epm

    # epm

    deepcave.evaluators.fanova

    # fANOVA

    deepcave.evaluators.footprint

    # Footprint

    deepcave.evaluators.lpi

    # LPI

    diff --git a/development/api/deepcave.evaluators.lpi.html b/development/api/deepcave.evaluators.lpi.html index fd7dcfd9..0cdfd207 100644 --- a/development/api/deepcave.evaluators.lpi.html +++ b/development/api/deepcave.evaluators.lpi.html @@ -703,13 +703,33 @@
    diff --git a/development/api/deepcave.layouts.sidebar.html b/development/api/deepcave.layouts.sidebar.html index f809311a..f2e22d00 100644 --- a/development/api/deepcave.layouts.sidebar.html +++ b/development/api/deepcave.layouts.sidebar.html @@ -720,6 +720,15 @@
    +
  • + + + + SidebarLayout.register_callbacks() + + + +
  • @@ -745,11 +754,20 @@

    deepcave.layouts.sidebar

    +

    # SidebarLayout

    +

    This module defines layout for the sidebar.

    +

    Callbacks are registered and handled.

    +
    +
    ## Classes
      +
    • SidebarLayout: Customize the Sidebar Layout.

    • +
    +
    +

    Classes

    - +

    SidebarLayout(categorized_plugins)

    Customize the Sidebar Layout.

    @@ -757,6 +775,16 @@
    class deepcave.layouts.sidebar.SidebarLayout(categorized_plugins)[source]

    Bases: Layout

    +

    Customize the Sidebar Layout.

    +

    Callbacks are registered and handled.

    +
    +

    Properties

    +
    +
    pluginsDict[str, List[Plugin]]

    A dictionary of all categorized plugins.

    +
    +
    nav_pointsDict[str, List[Tuple[str, str, str]]]

    A dictionary with plugins attributes corresponding to their category.

    +
    +
    __call__()[source]
    @@ -768,6 +796,18 @@
    +
    +
    +register_callbacks()[source]
    +

    Register the callbacks for the sidebar layout.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    diff --git a/development/api/deepcave.plugins.budget.html b/development/api/deepcave.plugins.budget.html index 63bbaccf..0dfcb238 100644 --- a/development/api/deepcave.plugins.budget.html +++ b/development/api/deepcave.plugins.budget.html @@ -696,9 +696,19 @@
    +
    + On this page +
    @@ -720,6 +730,14 @@

    deepcave.plugins.budget

    +

    # budget

    +
    +

    ## Modules

    +
    +
    budget_correlation

    This module provides utilities to visualize budget correlations.

    +
    +
    +

    Modules

    diff --git a/development/api/deepcave.plugins.dynamic.html b/development/api/deepcave.plugins.dynamic.html index b8eb2028..1dc42133 100644 --- a/development/api/deepcave.plugins.dynamic.html +++ b/development/api/deepcave.plugins.dynamic.html @@ -754,11 +754,20 @@

    deepcave.plugins.dynamic

    +

    # Dynamic

    +

    This module provides a plugin class for a dynamic plugin.

    +

    Register and handle callbacks.

    +
    +
    ## Classes
      +
    • DynamicPlugin: This class provides a dynamic plugin object.

    • +
    +
    +

    Classes

    - +

    DynamicPlugin()

    Provide a dynamic plugin object.

    @@ -766,11 +775,29 @@
    class deepcave.plugins.dynamic.DynamicPlugin[source]

    Bases: Plugin, ABC

    +

    Provide a dynamic plugin object.

    +

    Register and handle callbacks.

    +
    +

    Properties

    +
    +
    outputsList[Tuple[str, str, bool]]

    The registered outputs.

    +
    +
    inputsList[Tuple[str, str, bool, Any]]

    The registered inputs.

    +
    +
    idstr

    The identifier of the Plugin.

    +
    +
    loggerLogger

    The logger for debugging information.

    +
    +
    use_cachebool

    Defines whether to use the cache.

    +
    +
    raw_outputsDict[str, Any]

    A dictionary of the raw outputs.

    +
    +
    __call__()[source]
    -

    Returns the components for the plugin. Basically, all blocks and elements of the plugin -are stacked-up here

    +

    Return the components for the plugin.

    +

    Basically, all blocks and elements of the plugin are stacked-up here.

    Returns:

    Layout as list of components.

    @@ -784,21 +811,24 @@
    register_callbacks()[source]
    -

    Registers basic callbacks for the plugin. Following callbacks are registered: -- If inputs changes, the changes are pasted back. This is in particular -interest if input dependencies are used. -- Raw data dialog to display raw data. -- Callback to be redirected to the config if clicked on it.

    +

    Register basic callbacks for the plugin.

    -
    Raises:
    -

    RuntimeError – _description_

    -
    -
    Return type:
    -

    None

    +
    Return type:
    +

    None

    +

    Following callbacks are registered: +- If inputs changes, the changes are pasted back.

    +
    +

    This is in particular interest if input dependencies are used.

    +
    +
      +
    • Raw data dialog to display raw data.

    • +
    • Callback to be redirected to the config if clicked on it.

    • +
    +
    diff --git a/development/api/deepcave.plugins.html b/development/api/deepcave.plugins.html index 4e756769..f6509de8 100644 --- a/development/api/deepcave.plugins.html +++ b/development/api/deepcave.plugins.html @@ -712,136 +712,109 @@ @@ -988,6 +979,15 @@

    deepcave.plugins

    +

    # Plugins

    +

    This module provides a base class for all the available plugins. +It provides different utilities to handle the plugins and check for compatibility in the runs.

    +
    +
    ## Classes
      +
    • Plugin: Base class for all plugins.

    • +
    +
    +

    Classes

    @@ -1001,96 +1001,70 @@ class deepcave.plugins.Plugin[source]

    Bases: Layout, ABC

    Base class for all plugins.

    -
    -
    -id
    -

    Unique identifier for the plugin.

    -
    -
    Type:
    -

    int

    +

    Provides different utilities to handle the plugins and check for compatibility in the runs.

    +
    +

    Properties

    +
    +
    inputsList[Tuple[str, str, bool, Any]]

    The registered inputs.

    -
    -
    - -
    -
    -name
    -

    Name of the plugin. It is shown in the navigation and in the title.

    -
    -
    Type:
    -

    str

    +
    outputsList[Tuple[str, str, bool]]

    The registered outputs.

    -
    -
    - -
    -
    -description
    -

    Description of the plugin. Displayed below the title.

    -
    -
    Type:
    -

    str, optional

    +
    previous_inputsDict[str, Dict[str, str]]

    The previous inputs.

    -
    -
    - -
    -
    -icon
    -

    FontAwesome icon. Shown in the navigation.

    -
    -
    Type:
    -

    str, optional

    +
    raw_outputsOptional[Dict[str, Any]]

    The raw outputs.

    -
    -
    - -
    -
    -help
    -

    Path to the help file.

    -
    -
    Type:
    -

    str, optional

    +
    activate_run_selectionbool

    Shows a dropdown to select a run in the inputs layout. +This feature is useful if only one run could be viewed at a time. +Moreover, it prevents the plugin to calculate results across all runs.

    -
    -
    - -
    -
    -button_caption
    -

    Caption of the button. Shown only, if StaticPlugin is used.

    -
    -
    Type:
    -

    str, optional

    +
    idstr

    The unique identifier for the plugin.

    +
    +
    runsList[AbstractRun]

    A list of the abstract runs.

    +
    +
    groupsList[Group]

    A list of the groups.

    +
    +
    helpstr

    The path to the documentation.

    +
    +
    namestr

    The name of the plugin. +It is shown in the navigation and title.

    +
    +
    button_captionstr

    Caption of the button. Shown only, if StaticPlugin is used.

    -
    - -
    -
    -activate_run_selection
    -

    Shows a dropdown to select a run in the inputs layout. -This feature is useful if only one run could be viewed at a time. -Moreover, it prevents the plugin to calculate results across all runs.

    +
    +
    +__call__(render_button=False)[source]
    +

    Return the components for the plugin.

    +

    Basically, all blocks and elements of the plugin are stacked-up here.

    -
    Type:
    -

    bool, optional

    +
    Parameters:
    +

    render_button (bool, optional) – Whether to render the button or not. By default False.

    +
    +
    Returns:
    +

    Layout as list of components.

    +
    +
    Return type:
    +

    List[Component]

    +
    +
    Raises:
    +
      +
    • NotMergeableError – If runs are not compatible.

    • +
    • FileNotFoundError – If the help file can not be found.

    • +
    -
    -
    -__call__(render_button=False)[source]
    -

    Returns the components for the plugin. Basically, all blocks and elements of the plugin -are stacked-up here

    +
    +
    +property all_runs: List[AbstractRun]
    +

    Get all runs and include the groups as a list.

    Returns:
    -

    Layout as list of components.

    +

    The list with all runs and included groups.

    Return type:
    -

    List[Component]

    +

    List[AbstractRun]

    @@ -1098,8 +1072,8 @@
    static check_run_compatibility(run)[source]
    -

    Checks if a run is compatible with this plugin. If a plugin is not compatible, -you can not select the run.

    +

    Check if a run is compatible with this plugin.

    +

    If a plugin is not compatible, you can not select the run.

    Note

    This function is only called if activate_run_selection is True.

    @@ -1120,8 +1094,8 @@
    check_runs_compatibility(runs)[source]
    -

    This function is needed if all selected runs need something in common -(e.g. budget or objective). Since this function is called before the layout is created, +

    Needed if all selected runs need something in common.

    +

    (e.g. budget or objective). Since this function is called before the layout is created, it can be also used to set common values for the plugin.

    Parameters:
    @@ -1139,8 +1113,8 @@
    generate_inputs(**kwargs)[source]
    -

    Generates inputs for the process and load_outputs required for api mode. -The arguments are validated against the input schema.

    +

    Generate inputs for the process and load_outputs required for api mode.

    +

    The arguments are validated against the input schema.

    Note

    Arguments are only available at runtime. Therefore, no api can be shown beforehand.

    @@ -1155,14 +1129,18 @@
    Return type:

    Dict[str, Any]

    +
    Raises:
    +

    ValueError – If an unknown input is passed. + If an input is missing.

    +
    classmethod generate_outputs(runs, inputs)[source]
    -

    Checks whether run selection is active and accepts either one or multiple runs at once. -Calls process internally.

    +

    Check whether run selection is active and accepts either one or multiple runs at once.

    +

    Calls process internally.

    Parameters:
      @@ -1184,7 +1162,7 @@
      classmethod get_base_url(cls)[source]
      -

      Generates the url for the plugin.

      +

      Generate the url for the plugin.

      Returns:

      Url for the plugin as string.

      @@ -1201,7 +1179,8 @@

      Layout for the filter block.

      Parameters:
      -

      register (Callable[[str, Union[str, List[str]]], str]) – The register method to register (user) variables.

      +

      register (Callable) – The register method to register (user) variables. +For more information, see ‘register_input’.

      Returns:

      Layouts for the filter block.

      @@ -1218,7 +1197,8 @@

      Layout for the input block.

      Parameters:
      -

      register (Callable[[str, Union[str, List[str]]], str]) – The register method to register (user) variables.

      +

      register (Callable) – The register method to register (user) variables. +For more information, see ‘register_input’.

      Returns:

      Layouts for the input block.

      @@ -1229,19 +1209,53 @@
      +
      +
      +get_internal_id(id)[source]
      +

      Get the internal id.

      +
      +
      Return type:
      +

      str

      +
      +
      +
      + +
      +
      +get_internal_input_id(id)[source]
      +

      Get the internal input id.

      +
      +
      Return type:
      +

      str

      +
      +
      +
      + +
      +
      +get_internal_output_id(id)[source]
      +

      Get the internal output id.

      +
      +
      Return type:
      +

      str

      +
      +
      +
      +
      static get_mpl_output_layout(register)[source]

      Layout for the matplotlib output block.

      Parameters:
      -

      register (Callable[[str, Union[str, List[str]]], str]) – The register method to register outputs.

      +

      register (Callable) – The register method to register outputs. +For more information, see ‘register_input’.

      Returns:

      Layout for the matplotlib output block.

      Return type:
      -

      Union[Component, List[Component]]

      +

      Optional[Union[Component, List[Component]]]

      @@ -1252,7 +1266,8 @@

      Layout for the output block.

      Parameters:
      -

      register (Callable[[str, Union[str, List[str]]], str]) – The register method to register outputs.

      +

      register (Callable) – The register method to register outputs. +For more information, see ‘register_input’.

      Returns:

      Layouts for the output block.

      @@ -1266,11 +1281,12 @@
      static get_run_input_layout(register)[source]
      -

      Generates the run selection input. -This is only the case if activate_run_selection is True.

      +

      Generate the run selection input.

      +

      This is only the case if activate_run_selection is True.

      Parameters:
      -

      register (Callable[[str, Union[str, List[str]]], str]) – The register method to register (user) variables.

      +

      register (Callable) – The register method to register (user) variables. +For more information, see ‘register_input’.

      Returns:

      The layout of the run selection input.

      @@ -1284,8 +1300,8 @@
      get_selected_runs(inputs)[source]
      -

      Parses selected runs from inputs. -If self.activate_run_selection is set, return only selected run. Otherwise, return all +

      Parse selected runs from inputs.

      +

      If self.activate_run_selection is set, return only selected run. Otherwise, return all possible runs.

      Parameters:
      @@ -1303,10 +1319,25 @@
      +
      +
      +property groups: List[Group]
      +

      Get the groups as a list.

      +
      +
      Returns:
      +

      The list with the groups.

      +
      +
      Return type:
      +

      List[Group]

      +
      +
      +
      +
      load_dependency_inputs(run, previous_inputs, inputs)[source]
      -

      Same as load_inputs but called after inputs have changed. Provides a lot of flexibility.

      +

      Load the content as in ‘load_inputs’ but called after inputs have changed.

      +

      Provides a lot of flexibility.

      Note

      Only the changes have to be returned. The returned dictionary will be merged with the @@ -1315,7 +1346,7 @@

      Parameters:
        -
      • selected_run (Optional[Union[AbstractRun, List[AbstractRun]]], optional) – The selected run from the user. In case of activate_run_selection, only one run +

      • run (Optional[Union[AbstractRun, List[AbstractRun]]], optional) – The selected run from the user. In case of activate_run_selection, only one run is passed. Defaults to None.

      • previous_inputs (Dict[str, Any]) – Previous content of the inputs.

      • inputs (Dict[str, Any]) – Current content of the inputs.

      • @@ -1333,8 +1364,8 @@
        load_inputs()[source]
        -

        Load the content for the defined inputs in get_input_layout and get_filter_layout. -This method is necessary to pre-load contents for the inputs. So, if the plugin is +

        Load the content for the defined inputs in get_input_layout and get_filter_layout.

        +

        This method is necessary to pre-load contents for the inputs. So, if the plugin is called for the first time or there are no results in the cache, the plugin gets its content from this method.

        @@ -1350,11 +1381,12 @@
        static load_mpl_outputs(runs, inputs, outputs)[source]
        -

        Reads in the raw data and prepares them for the layout.

        +

        Read in the raw data and prepare them for the layout.

        Note

        The passed inputs are cleaned and therefore differs compared to load_inputs or -load_dependency_inputs. Please see _clean_inputs for more information.

        +load_dependency_inputs. Inputs are cleaned s.t. only the first value is used. +Also, boolean values are casted to booleans.

        Parameters:
        @@ -1378,11 +1410,13 @@
        static load_outputs(runs, inputs, outputs)[source]
        -

        Reads in the raw data and prepares them for the layout.

        +

        Read in the raw data and prepare them for the layout.

        Note

        The passed inputs are cleaned and therefore differs compared to load_inputs or -load_dependency_inputs. Please see _clean_inputs for more information.

        +load_dependency_inputs. +Inputs are cleaned s.t. only the first value is used. +Also, boolean values are casted to booleans.

        Parameters:
        @@ -1406,13 +1440,13 @@
        static load_run_inputs(runs, groups, check_run_compatibility)[source]
        -

        Loads the options for get_run_input_layout. -Both runs and groups are displayed.

        +

        Load the options for get_run_input_layout.

        +

        Both runs and groups are displayed.

        Parameters:
          -
        • runs (Dict[str, Run]) – The runs to display.

        • -
        • groups (Dict[str, Group]) – The groups to display.

        • +
        • runs (List[AbstractRun]) – The runs to display.

        • +
        • groups (List[Group]) – The groups to display.

        • check_run_compatibility (Callable[[AbstractRun], bool]) – If a single run is compatible. If not, the run is not shown.

        @@ -1428,7 +1462,7 @@
        static process(run, inputs)[source]
        -

        Returns raw data based on a run and input data.

        +

        Return raw data based on a run and input data.

        Warning

        The returned data must be JSON serializable.

        @@ -1436,7 +1470,8 @@

        Note

        The passed inputs are cleaned and therefore differs compared to load_inputs or -load_dependency_inputs. Please see _clean_inputs for more information.

        +load_dependency_inputs. Inputs are cleaned s.t. only the first value is used. +Also, boolean values are casted to booleans.

        Parameters:
        @@ -1457,14 +1492,15 @@
        register_callbacks()[source]
        -

        Registers basic callbacks for the plugin. Following callbacks are registered: +

        Register basic callbacks for the plugin.

        +

        Following callbacks are registered: - If inputs changes, the changes are pasted back. This is in particular interest if input dependencies are used. - Raw data dialog to display raw data. - Callback to be redirected to the config if clicked on it.

        Raises:
        -

        RuntimeError – _description_

        +

        RuntimeError – If no run id is found.

        Return type:

        None

        @@ -1475,14 +1511,15 @@
        register_input(id, attributes='value', filter=False, type=None)[source]
        -

        Registers an input variable for the plugin. It is important to register the inputs -because callbacks have to be defined before the server is started. +

        Register an input variable for the plugin.

        +

        It is important to register the inputs. +This is, because callbacks have to be defined before the server is started. After registering all inputs, an internal mapping is created.

        Parameters:
        • id (str) – Specifies the id of the input.

        • -
        • attributes (Union[str, List[str]], optional) – Attributes which should be passed to the (dash) component, by default (“value”,)

        • +
        • attributes (Union[str, List[str]], optional) – Attributes which should be passed to the (dash) component, by default (“value”,).

        • filter (bool, optional) – Specifies if the input is a filter. By default False.

        • type (Any, optional) – Type to which the first attribute should be casted to. By default str.

        @@ -1499,7 +1536,7 @@
        register_output(id, attributes='value', mpl=False)[source]
        -

        Registers an output variable for the plugin.

        +

        Register an output variable for the plugin.

        Parameters:
          @@ -1517,28 +1554,43 @@
        +
        +
        +property runs: List[AbstractRun]
        +

        Get the runs as a list.

        +
        +
        Returns:
        +

        The list with the runs.

        +
        +
        Return type:
        +

        List[AbstractRun]

        +
        +
        +
        + +

        Modules

    - + - + - + - + - + - +

    deepcave.plugins.budget

    # budget

    deepcave.plugins.dynamic

    # Dynamic

    deepcave.plugins.hyperparameter

    # hyperparameter

    deepcave.plugins.objective

    # objective

    deepcave.plugins.static

    # Static

    deepcave.plugins.summary

    # summary

    diff --git a/development/api/deepcave.plugins.hyperparameter.html b/development/api/deepcave.plugins.hyperparameter.html index ed70f6ac..2049980c 100644 --- a/development/api/deepcave.plugins.hyperparameter.html +++ b/development/api/deepcave.plugins.hyperparameter.html @@ -696,9 +696,19 @@
    +
    + On this page +
    @@ -720,14 +730,26 @@

    deepcave.plugins.hyperparameter

    +

    # hyperparameter

    +
    +

    ## Modules

    +
    +
    importances

    This module provides a plugin for the visualization of the importances.

    +
    +
    pdp

    This module provides utilities for generating Partial Dependency Plots (PDP).

    +
    +
    symbolic_explanations

    This module provides utilities for generating symbolic explanations.

    +
    +
    +

    Modules

    - + - + diff --git a/development/api/deepcave.plugins.hyperparameter.importances.html b/development/api/deepcave.plugins.hyperparameter.importances.html index 1d8b2b4c..e8cd0ca7 100644 --- a/development/api/deepcave.plugins.hyperparameter.importances.html +++ b/development/api/deepcave.plugins.hyperparameter.importances.html @@ -817,11 +817,21 @@

    deepcave.plugins.hyperparameter.importances

    +

    # Importances

    +

    This module provides a plugin for the visualization of the importances.

    +

    Provided utilities include getting input and output layout (filtered or non-filtered), +processing the data and loading the outputs. Also provides a matplotlib version.

    +
    +
    ## Classes
      +
    • Importances: This class provides a plugin for the visualization of the importances.

    • +
    +
    +

    Classes

    deepcave.plugins.hyperparameter.importances

    # Importances

    deepcave.plugins.hyperparameter.pdp

    # PartialDependencies

    deepcave.plugins.hyperparameter.symbolic_explanations

    # SymbolicExplanations

    - +

    Importances()

    Provide a plugin for the visualization of the importances.

    @@ -829,19 +839,23 @@
    class deepcave.plugins.hyperparameter.importances.Importances[source]

    Bases: StaticPlugin

    +

    Provide a plugin for the visualization of the importances.

    +

    Provided utilities include getting input/output layout, data processing +and loading outputs. Also provides a matplotlib version.

    static get_filter_layout(register)[source]
    -

    Layout for the filter block.

    +

    Get the layout for the filter block.

    Parameters:
    -

    register (Callable[[str, Union[str, List[str]]], str]) – The register method to register (user) variables.

    +

    register (Callable) – Method to register (user) variables. +The register_input function is located in the Plugin superclass.

    Returns:
    -

    Layouts for the filter block.

    +

    Layout for the filter block.

    Return type:
    -

    List[Component]

    +

    List[html.Div]

    @@ -849,16 +863,17 @@
    static get_input_layout(register)[source]
    -

    Layout for the input block.

    +

    Get the layout for the input block.

    Parameters:
    -

    register (Callable[[str, Union[str, List[str]]], str]) – The register method to register (user) variables.

    +

    register (Callable) – Method to register (user) variables. +The register_input function is located in the Plugin superclass.

    Returns:
    -

    Layouts for the input block.

    +

    Layout for the input block.

    Return type:
    -

    List[Component]

    +

    List[Any]

    @@ -866,16 +881,17 @@
    static get_mpl_output_layout(register)[source]
    -

    Layout for the matplotlib output block.

    +

    Get the layout for the matplotlib output block.

    Parameters:
    -

    register (Callable[[str, Union[str, List[str]]], str]) – The register method to register outputs.

    +

    register (Callable) – Method to register outputs. +The register_input function is located in the Plugin superclass.

    Returns:
    -

    Layout for the matplotlib output block.

    +

    The layout for the matplotlib output block.

    Return type:
    -

    Union[Component, List[Component]]

    +

    html.Img

    @@ -883,16 +899,17 @@
    static get_output_layout(register)[source]
    -

    Layout for the output block.

    +

    Get the layout for the output block.

    Parameters:
    -

    register (Callable[[str, Union[str, List[str]]], str]) – The register method to register outputs.

    +

    register (Callable) – Method to register outputs. +The register_input function is located in the Plugin superclass.

    Returns:
    -

    Layouts for the output block.

    +

    Layout for the output block.

    Return type:
    -

    Union[Component, List[Component]]

    +

    dcc.Graph

    @@ -900,23 +917,21 @@
    load_dependency_inputs(run, _, inputs)[source]
    -

    Same as load_inputs but called after inputs have changed. Provides a lot of flexibility.

    +

    Work like ‘load_inputs’ but called after inputs have changed.

    Note

    -

    Only the changes have to be returned. The returned dictionary will be merged with the -inputs.

    +

    Only the changes have to be returned. +The returned dictionary will be merged with the inputs.

    Parameters:
      -
    • selected_run (Optional[Union[AbstractRun, List[AbstractRun]]], optional) – The selected run from the user. In case of activate_run_selection, only one run -is passed. Defaults to None.

    • -
    • previous_inputs (Dict[str, Any]) – Previous content of the inputs.

    • +
    • run – The selected run.

    • inputs (Dict[str, Any]) – Current content of the inputs.

    Returns:
    -

    Dictionary with the changes.

    +

    A dictionary with the changes.

    Return type:

    Dict[str, Any]

    @@ -927,16 +942,16 @@
    load_inputs()[source]
    -

    Load the content for the defined inputs in get_input_layout and get_filter_layout. -This method is necessary to pre-load contents for the inputs. So, if the plugin is -called for the first time or there are no results in the cache, the plugin gets its -content from this method.

    +

    Load the content for the defined inputs in ‘get_input_layout’ and ‘get_filter_layout’.

    +

    This method is necessary to pre-load contents for the inputs. +If the plugin is called for the first time, or there are no results in the cache, +the plugin gets its content from this method.

    Returns:

    Content to be filled.

    Return type:
    -

    Dict[str, Any]

    +

    Dict[str, Dict[str, Any]]

    @@ -944,27 +959,17 @@
    static load_mpl_outputs(run, inputs, outputs)[source]
    -

    Reads in the raw data and prepares them for the layout.

    -
    -

    Note

    -

    The passed inputs are cleaned and therefore differs compared to load_inputs or -load_dependency_inputs. Please see _clean_inputs for more information.

    -
    +

    Read the raw data and prepare it for the layout.

    Parameters:
      -
    • runs (Union[AbstractRun, Dict[str, AbstractRun]]) – All selected runs. If activate_run_selection is set, only the selected run is -returned.

    • -
    • inputs (Dict[str, Dict[str, str]]) – Input and filter values from the user.

    • -
    • outputs (Dict[str, Union[str, Dict[str, str]]]) – Raw outputs from the runs. If activate_run_selection is set, -a Dict[str, str] is returned.

    • +
    • run – The selected run.

    • +
    • inputs (Dict[str, Any]) – Input and filter values from the user.

    • +
    • outputs – Raw output from the run.

    -
    Returns:
    -

    The components must be in the same position as defined in get_output_layout.

    -
    -
    Return type:
    -

    Union[Component, List[Component]]

    +
    Return type:
    +

    The rendered matplotlib figure of the importances.

    @@ -972,27 +977,26 @@
    static load_outputs(run, inputs, outputs)[source]
    -

    Reads in the raw data and prepares them for the layout.

    +

    Read in raw data and prepare for layout.

    Note

    -

    The passed inputs are cleaned and therefore differs compared to load_inputs or -load_dependency_inputs. Please see _clean_inputs for more information.

    +

    The passed inputs are cleaned and therefore differ +compared to ‘load_inputs’ or ‘load_dependency_inputs’. +Please see ‘_clean_inputs’ for more information.

    Parameters:
      -
    • runs (Union[AbstractRun, Dict[str, AbstractRun]]) – All selected runs. If activate_run_selection is set, only the selected run is -returned.

    • -
    • inputs (Dict[str, Dict[str, str]]) – Input and filter values from the user.

    • -
    • outputs (Dict[str, Union[str, Dict[str, str]]]) – Raw outputs from the runs. If activate_run_selection is set, -a Dict[str, str] is returned.

    • +
    • run – The selected run.

    • +
    • inputs – Input and filter values from the user.

    • +
    • outputs – Raw output from the run.

    Returns:
    -

    The components must be in the same position as defined in get_output_layout.

    +

    The figure of the importances.

    Return type:
    -

    Union[Component, List[Component]]

    +

    go.figure

    @@ -1000,29 +1004,34 @@
    static process(run, inputs)[source]
    -

    Returns raw data based on a run and input data.

    +

    Return raw data based on the run and input data.

    Warning

    The returned data must be JSON serializable.

    Note

    -

    The passed inputs are cleaned and therefore differs compared to load_inputs or -load_dependency_inputs. Please see _clean_inputs for more information.

    +

    The passed inputs are cleaned and therefore differ +compared to ‘load_inputs’ or ‘load_dependency_inputs’. +Please see ‘_clean_inputs’ for more information.

    Parameters:
    • run (AbstractRun) – The run to process.

    • -
    • inputs (Dict[str, Any]) – Input data.

    • +
    • inputs (Dict[str, Any]) – The input data.

    Returns:
    -

    Serialized dictionary.

    +

    A serialzied dictionary.

    Return type:

    Dict[str, Any]

    +
    Raises:
    +

    RuntimeError – If the number of trees is not specified. + If the method is not found.

    +
    diff --git a/development/api/deepcave.plugins.hyperparameter.pdp.html b/development/api/deepcave.plugins.hyperparameter.pdp.html index f15a9916..2bec353b 100644 --- a/development/api/deepcave.plugins.hyperparameter.pdp.html +++ b/development/api/deepcave.plugins.hyperparameter.pdp.html @@ -738,6 +738,15 @@ +
  • + + + + PartialDependencies.get_pdp_figure() + + + +
  • @@ -799,11 +808,26 @@

    deepcave.plugins.hyperparameter.pdp

    +

    # PartialDependencies

    +

    This module provides utilities for generating Partial Dependency Plots (PDP).

    +

    Provided utilities include getting input and output layout (filtered or non-filtered), +processing the data and loading the outputs.

    +
    +
    ## Classes
      +
    • PartialDependencies: Generate a Partial Dependency Plot (PDP).

    • +
    +
    +
    ## Constants

    GRID_POINTS_PER_AXIS : int +SAMPLES_PER_HP : int +MAX_SAMPLES : int +MAX_SHOWN_SAMPLES : int

    +
    +

    Classes

    - +

    PartialDependencies()

    Generate Partial Dependency Plots (PDP).

    @@ -811,19 +835,23 @@
    class deepcave.plugins.hyperparameter.pdp.PartialDependencies[source]

    Bases: StaticPlugin

    +

    Generate Partial Dependency Plots (PDP).

    +

    Provided utilities include getting input and output layout (filtered or non-filtered), +processing the data and loading the outputs.

    static get_filter_layout(register)[source]
    -

    Layout for the filter block.

    +

    Get the layout for the filter block.

    Parameters:
    -

    register (Callable[[str, Union[str, List[str]]], str]) – The register method to register (user) variables.

    +

    register (Callable) – Method to register (user) variables. +The register_input function is located in the Plugin superclass.

    Returns:
    -

    Layouts for the filter block.

    +

    The layout for the filter block.

    Return type:
    -

    List[Component]

    +

    List[Any]

    @@ -831,16 +859,17 @@
    static get_input_layout(register)[source]
    -

    Layout for the input block.

    +

    Get the layout for the input block.

    Parameters:
    -

    register (Callable[[str, Union[str, List[str]]], str]) – The register method to register (user) variables.

    +

    register (Callable) – Method to register (user) variables. +The register_input function is located in the Plugin superclass.

    Returns:
    -

    Layouts for the input block.

    +

    The layout for the input block.

    Return type:
    -

    List[Component]

    +

    List[dbc.Row]

    @@ -848,16 +877,41 @@
    static get_output_layout(register)[source]
    -

    Layout for the output block.

    +

    Get the layout for the output block.

    Parameters:
    -

    register (Callable[[str, Union[str, List[str]]], str]) – The register method to register outputs.

    +

    register (Callable) – Method to register outputs. +The register_input function is located in the Plugin superclass.

    Returns:
    -

    Layouts for the output block.

    +

    Layout for the output block.

    Return type:
    -

    Union[Component, List[Component]]

    +

    dcc.Graph

    +
    +
    +
    + +
    +
    +static get_pdp_figure(run, inputs, outputs, show_confidence, show_ice, title=None)[source]
    +

    Create a figure of the Partial Dependency Plot (PDP).

    +
    +
    Parameters:
    +
      +
    • run – The selected run.

    • +
    • inputs – Input and filter values from the user.

    • +
    • outputs – Raw output from the run.

    • +
    • show_confidence – Whether to show confidence in the plot.

    • +
    • show_ice – Whether to show ice curves in the plot.

    • +
    • title – Title of the plot.

    • +
    +
    +
    Returns:
    +

    The figure of the Partial Dependency Plot (PDP).

    +
    +
    Return type:
    +

    go.Figure

    @@ -865,19 +919,19 @@
    load_dependency_inputs(run, previous_inputs, inputs)[source]
    -

    Same as load_inputs but called after inputs have changed. Provides a lot of flexibility.

    +

    Work like ‘load_inputs’ but called after inputs have changed.

    Note

    -

    Only the changes have to be returned. The returned dictionary will be merged with the -inputs.

    +

    Only the changes have to be returned. The returned dictionary +will be merged with the inputs.

    Parameters:
      -
    • selected_run (Optional[Union[AbstractRun, List[AbstractRun]]], optional) – The selected run from the user. In case of activate_run_selection, only one run -is passed. Defaults to None.

    • -
    • previous_inputs (Dict[str, Any]) – Previous content of the inputs.

    • -
    • inputs (Dict[str, Any]) – Current content of the inputs.

    • +
    • run – The selected run.

    • +
    • inputs – Current content of the inputs.

    • +
    • previous_inputs – Previous content of the inputs. +Not used in this specific function.

    Returns:
    @@ -892,16 +946,16 @@
    load_inputs()[source]
    -

    Load the content for the defined inputs in get_input_layout and get_filter_layout. -This method is necessary to pre-load contents for the inputs. So, if the plugin is -called for the first time or there are no results in the cache, the plugin gets its -content from this method.

    +

    Load the content for the defined inputs in ‘get_input_layout’ and ‘get_filter_layout’.

    +

    This method is necessary to pre-load contents for the inputs. +If the plugin is called for the first time, or there are no results in the cache, +the plugin gets its content from this method.

    Returns:

    Content to be filled.

    Return type:
    -

    Dict[str, Any]

    +

    Dict[str, Dict[str, Any]]

    @@ -909,27 +963,26 @@
    static load_outputs(run, inputs, outputs)[source]
    -

    Reads in the raw data and prepares them for the layout.

    +

    Read the raw data and prepare it for the layout.

    Note

    -

    The passed inputs are cleaned and therefore differs compared to load_inputs or -load_dependency_inputs. Please see _clean_inputs for more information.

    +

    The passed inputs are cleaned and therefore differ +compared to ‘load_inputs’ or ‘load_dependency_inputs’. +Please see ‘_clean_inputs’ for more information.

    Parameters:
      -
    • runs (Union[AbstractRun, Dict[str, AbstractRun]]) – All selected runs. If activate_run_selection is set, only the selected run is -returned.

    • -
    • inputs (Dict[str, Dict[str, str]]) – Input and filter values from the user.

    • -
    • outputs (Dict[str, Union[str, Dict[str, str]]]) – Raw outputs from the runs. If activate_run_selection is set, -a Dict[str, str] is returned.

    • +
    • run – The selected run.

    • +
    • inputs – Input and filter values from the user.

    • +
    • outputs – Raw output from the run.

    Returns:
    -

    The components must be in the same position as defined in get_output_layout.

    +

    The figure of the Partial Dependency Plot (PDP).

    Return type:
    -

    Union[Component, List[Component]]

    +

    go.Figure

    @@ -937,29 +990,33 @@
    static process(run, inputs)[source]
    -

    Returns raw data based on a run and input data.

    +

    Return raw data based on a run and the input data.

    Warning

    The returned data must be JSON serializable.

    Note

    -

    The passed inputs are cleaned and therefore differs compared to load_inputs or -load_dependency_inputs. Please see _clean_inputs for more information.

    +

    The passed inputs are cleaned and therefore differ +compared to ‘load_inputs’ or ‘load_dependency_inputs’. +Please see ‘_clean_inputs’ for more information.

    Parameters:
      -
    • run (AbstractRun) – The run to process.

    • -
    • inputs (Dict[str, Any]) – Input data.

    • +
    • run – The run to process.

    • +
    • inputs – The input data.

    Returns:
    -

    Serialized dictionary.

    +

    A serialized dictionary.

    Return type:

    Dict[str, Any]

    +
    Raises:
    +

    RuntimeError – If the objective is None.

    +
    diff --git a/development/api/deepcave.plugins.objective.configuration_cube.html b/development/api/deepcave.plugins.objective.configuration_cube.html index 33f24cfa..46beb662 100644 --- a/development/api/deepcave.plugins.objective.configuration_cube.html +++ b/development/api/deepcave.plugins.objective.configuration_cube.html @@ -799,11 +799,20 @@

    deepcave.plugins.objective.configuration_cube

    +

    # ConfigurationCube

    +

    This module provides utilities for visualizing and creating a configuration cube.

    +

    The configuration cube displays configurations and their score on the objective.

    +
    +
    ## Classes
      +
    • ConfigurationCube: A plugin for visualizing a configuration cube.

    • +
    +
    +

    Classes

    - +

    ConfigurationCube()

    A plugin for visualizing a configuration cube.

    @@ -811,19 +820,21 @@
    class deepcave.plugins.objective.configuration_cube.ConfigurationCube[source]

    Bases: DynamicPlugin

    +

    A plugin for visualizing a configuration cube.

    static get_filter_layout(register)[source]
    -

    Layout for the filter block.

    +

    Get the layout for the filter block.

    Parameters:
    -

    register (Callable[[str, Union[str, List[str]]], str]) – The register method to register (user) variables.

    +

    register (Callable) – Method to register (user) variables. +The register_input function is located in the Plugin superclass.

    Returns:

    Layouts for the filter block.

    Return type:
    -

    List[Component]

    +

    List[html.Div]

    @@ -831,16 +842,17 @@
    static get_input_layout(register)[source]
    -

    Layout for the input block.

    +

    Get the layout for the input block.

    Parameters:
    -

    register (Callable[[str, Union[str, List[str]]], str]) – The register method to register (user) variables.

    +

    register (Callable) – Method to register (user) variables. +The register_input function is located in the Plugin superclass.

    Returns:

    Layouts for the input block.

    Return type:
    -

    List[Component]

    +

    List[dbc.Row]

    @@ -848,16 +860,17 @@
    static get_output_layout(register)[source]
    -

    Layout for the output block.

    +

    Get the layout for the output block.

    Parameters:
    -

    register (Callable[[str, Union[str, List[str]]], str]) – The register method to register outputs.

    +

    register (Callable) – Method to register output. +The register_output function is located in the Plugin superclass.

    Returns:
    -

    Layouts for the output block.

    +

    Layout for the output block.

    Return type:
    -

    Union[Component, List[Component]]

    +

    Tuple[dcc.Graph,]

    @@ -865,23 +878,22 @@
    load_dependency_inputs(run, _, inputs)[source]
    -

    Same as load_inputs but called after inputs have changed. Provides a lot of flexibility.

    +

    Work like ‘load_inputs’ but called after inputs have changed.

    +

    It is restricted to three Hyperparameters.

    Note

    -

    Only the changes have to be returned. The returned dictionary will be merged with the -inputs.

    +

    Only the changes have to be returned. +The returned dictionary will be merged with the inputs.

    Parameters:
      -
    • selected_run (Optional[Union[AbstractRun, List[AbstractRun]]], optional) – The selected run from the user. In case of activate_run_selection, only one run -is passed. Defaults to None.

    • -
    • previous_inputs (Dict[str, Any]) – Previous content of the inputs.

    • -
    • inputs (Dict[str, Any]) – Current content of the inputs.

    • +
    • run – The selected run.

    • +
    • inputs – Current content of the inputs.

    Returns:
    -

    Dictionary with the changes.

    +

    The dictionary with the changes.

    Return type:

    Dict[str, Any]

    @@ -892,13 +904,13 @@
    load_inputs()[source]
    -

    Load the content for the defined inputs in get_input_layout and get_filter_layout. -This method is necessary to pre-load contents for the inputs. So, if the plugin is -called for the first time or there are no results in the cache, the plugin gets its -content from this method.

    +

    Load the content for the defined inputs in ‘get_input_layout’ and ‘get_filter_layout’.

    +

    This method is necessary to pre-load contents for the inputs. +So, if the plugin is called for the first time or there are no results in the cache, +the plugin gets its content from this method.

    Returns:
    -

    Content to be filled.

    +

    The content to be filled.

    Return type:

    Dict[str, Any]

    @@ -909,27 +921,26 @@
    static load_outputs(run, inputs, outputs)[source]
    -

    Reads in the raw data and prepares them for the layout.

    +

    Read in the raw data and prepares them for the layout.

    Note

    -

    The passed inputs are cleaned and therefore differs compared to load_inputs or -load_dependency_inputs. Please see _clean_inputs for more information.

    +

    The passed inputs are cleaned and therefore differs compared to ‘load_inputs’ +or ‘load_dependency_inputs’. +Please see ‘_clean_inputs’ for more information.

    Parameters:
      -
    • runs (Union[AbstractRun, Dict[str, AbstractRun]]) – All selected runs. If activate_run_selection is set, only the selected run is -returned.

    • -
    • inputs (Dict[str, Dict[str, str]]) – Input and filter values from the user.

    • -
    • outputs (Dict[str, Union[str, Dict[str, str]]]) – Raw outputs from the runs. If activate_run_selection is set, -a Dict[str, str] is returned.

    • +
    • run – The selected run.

    • +
    • inputs – Input and filter values from the user.

    • +
    • outputs – Raw output from the run.

    Returns:
    -

    The components must be in the same position as defined in get_output_layout.

    +

    The output figure.

    Return type:
    -

    Union[Component, List[Component]]

    +

    go.Figure

    @@ -937,28 +948,29 @@
    static process(run, inputs)[source]
    -

    Returns raw data based on a run and input data.

    +

    Return raw data based on the run and input data.

    Warning

    The returned data must be JSON serializable.

    Note

    -

    The passed inputs are cleaned and therefore differs compared to load_inputs or -load_dependency_inputs. Please see _clean_inputs for more information.

    +

    The passed inputs are cleaned and therefore differs compared to ‘load_inputs’ +or ‘load_dependency_inputs’. +Please see ‘_clean_inputs’ for more information.

    Parameters:
      -
    • run (AbstractRun) – The run to process.

    • -
    • inputs (Dict[str, Any]) – Input data.

    • +
    • run (AbstractRun) – The selected run.

    • +
    • inputs (Dict[str, Any]) – The input data.

    Returns:
    -

    Serialized dictionary.

    +

    The serialized dictionary.

    Return type:
    -

    Dict[str, Any]

    +

    Dict[str, str]

    diff --git a/development/api/deepcave.plugins.objective.cost_over_time.html b/development/api/deepcave.plugins.objective.cost_over_time.html index 56a1d543..173f46fc 100644 --- a/development/api/deepcave.plugins.objective.cost_over_time.html +++ b/development/api/deepcave.plugins.objective.cost_over_time.html @@ -799,11 +799,21 @@

    deepcave.plugins.objective.cost_over_time

    +

    # CostOverTime

    +

    This module provides utilities for visualizing the cost over time.

    +

    Visualized changes can be regarding to number of configurations or time. +It includes a corresponding plugin class.

    +
    +
    ## Classes
      +
    • CostOverTime: A plugin to provide a visualization for the cost over time.

    • +
    +
    +

    Classes

    - +

    CostOverTime()

    A plugin to provide a visualization for the cost over time.

    @@ -811,18 +821,32 @@
    class deepcave.plugins.objective.cost_over_time.CostOverTime[source]

    Bases: DynamicPlugin

    +

    A plugin to provide a visualization for the cost over time.

    +
    +

    Properties

    +
    +
    objective_optionsList[Dict[str, Any]]

    A list of dictionaries of the objective options.

    +
    +
    budget_optionsList[Dict[str, Any]]

    A list of dictionaries of the budget options.

    +
    +
    check_runs_compatibility(runs)[source]
    -

    This function is needed if all selected runs need something in common -(e.g. budget or objective). Since this function is called before the layout is created, +

    Check if the runs are compatible.

    +

    This function is needed if all selected runs need something in common +(e.g. budget or objective). +Since this function is called before the layout is created, it can be also used to set common values for the plugin.

    Parameters:
    -

    runs (List[AbstractRun]) – Selected runs.

    +

    runs (List[AbstractRun]) – A list containing the selected runs.

    Raises:
    -

    NotMergeableError – If runs are not compatible, an error is thrown.

    +

    NotMergeableError – If the meta data of the runs are not equal. + If the configuration spaces of the runs are not equal. + If the budgets of the runs are not equal. + If the objective of the runs are not equal.

    Return type:

    None

    @@ -833,16 +857,17 @@
    static get_filter_layout(register)[source]
    -

    Layout for the filter block.

    +

    Get the layout for the filter block.

    Parameters:
    -

    register (Callable[[str, Union[str, List[str]]], str]) – The register method to register (user) variables.

    +

    register (Callable) – Method to register (user) variables. +The register_input function is located in the Plugin superclass.

    Returns:

    Layouts for the filter block.

    Return type:
    -

    List[Component]

    +

    List[Any]

    @@ -850,16 +875,17 @@
    static get_input_layout(register)[source]
    -

    Layout for the input block.

    +

    Get the layout for the input block.

    Parameters:
    -

    register (Callable[[str, Union[str, List[str]]], str]) – The register method to register (user) variables.

    +

    register (Callable) – Method to register (user) variables. +The register_input function is located in the Plugin superclass.

    Returns:

    Layouts for the input block.

    Return type:
    -

    List[Component]

    +

    List[dbc.Row]

    @@ -867,16 +893,17 @@
    static get_output_layout(register)[source]
    -

    Layout for the output block.

    +

    Get the layout for the output block.

    Parameters:
    -

    register (Callable[[str, Union[str, List[str]]], str]) – The register method to register outputs.

    +

    register (Callable) – Method to register outputs. +The register_output function is located in the Plugin superclass.

    Returns:
    -

    Layouts for the output block.

    +

    The layouts for the output block.

    Return type:
    -

    Union[Component, List[Component]]

    +

    dcc.Graph

    @@ -884,13 +911,13 @@
    load_inputs()[source]
    -

    Load the content for the defined inputs in get_input_layout and get_filter_layout. -This method is necessary to pre-load contents for the inputs. So, if the plugin is -called for the first time or there are no results in the cache, the plugin gets its -content from this method.

    +

    Load the content for the defined inputs in ‘get_input_layout’ and ‘get_filter_layout’.

    +

    This method is necessary to pre-load contents for the inputs. +So, if the plugin is called for the first time or there are no results in the cache, +the plugin gets its content from this method.

    Returns:
    -

    Content to be filled.

    +

    The content to be filled.

    Return type:

    Dict[str, Any]

    @@ -901,27 +928,26 @@
    static load_outputs(runs, inputs, outputs)[source]
    -

    Reads in the raw data and prepares them for the layout.

    +

    Read in the raw data and prepare them for the layout.

    Note

    -

    The passed inputs are cleaned and therefore differs compared to load_inputs or -load_dependency_inputs. Please see _clean_inputs for more information.

    +

    The passed inputs are cleaned and therefore differs compared to ‘load_inputs’ +or ‘load_dependency_inputs’. +Please see ‘_clean_inputs’ for more information.

    Parameters:
      -
    • runs (Union[AbstractRun, Dict[str, AbstractRun]]) – All selected runs. If activate_run_selection is set, only the selected run is -returned.

    • -
    • inputs (Dict[str, Dict[str, str]]) – Input and filter values from the user.

    • -
    • outputs (Dict[str, Union[str, Dict[str, str]]]) – Raw outputs from the runs. If activate_run_selection is set, -a Dict[str, str] is returned.

    • +
    • runs – The selected runs.

    • +
    • inputs – The input and filter values from the user.

    • +
    • outputs – The raw outputs from the runs.

    Returns:
    -

    The components must be in the same position as defined in get_output_layout.

    +

    The output figure.

    Return type:
    -

    Union[Component, List[Component]]

    +

    go.Figure

    @@ -929,25 +955,26 @@
    static process(run, inputs)[source]
    -

    Returns raw data based on a run and input data.

    +

    Return raw data based on a run and input data.

    Warning

    The returned data must be JSON serializable.

    Note

    -

    The passed inputs are cleaned and therefore differs compared to load_inputs or -load_dependency_inputs. Please see _clean_inputs for more information.

    +

    The passed inputs are cleaned and therefore differs compared to ‘load_inputs’ +or ‘load_dependency_inputs’. +Please see ‘_clean_inputs’ for more information.

    Parameters:
      -
    • run (AbstractRun) – The run to process.

    • -
    • inputs (Dict[str, Any]) – Input data.

    • +
    • run (AbstractRun) – The selected run to process.

    • +
    • inputs (Dict[str, Any]) – The input data.

    Returns:
    -

    Serialized dictionary.

    +

    A serialized dictionary.

    Return type:

    Dict[str, Any]

    @@ -955,6 +982,7 @@
    +
    diff --git a/development/api/deepcave.plugins.objective.html b/development/api/deepcave.plugins.objective.html index 7d8fcb56..ce4e1e96 100644 --- a/development/api/deepcave.plugins.objective.html +++ b/development/api/deepcave.plugins.objective.html @@ -696,9 +696,19 @@
    +
    + On this page +
    @@ -720,20 +730,34 @@

    deepcave.plugins.objective

    +

    # objective

    +
    +

    ## Modules

    +
    +
    configuration_cube

    This module provides utilities for visualizing and creating a configruation cube.

    +
    +
    cost_over_time

    This module provides utilities for visualizing the cost over time.

    +
    +
    parallel_coordinates

    This module provides utilities for visualizing the parallel coordinates.

    +
    +
    pareto_front

    This module provides utilities for creating a visualization of the Pareto Front.

    +
    +
    +

    Modules

    - + - + - + - +

    deepcave.plugins.objective.configuration_cube

    # ConfigurationCube

    deepcave.plugins.objective.cost_over_time

    # CostOverTime

    deepcave.plugins.objective.parallel_coordinates

    # ParallelCoordinates

    deepcave.plugins.objective.pareto_front

    # ParetoFront

    diff --git a/development/api/deepcave.plugins.objective.parallel_coordinates.html b/development/api/deepcave.plugins.objective.parallel_coordinates.html index 05f317b7..78322958 100644 --- a/development/api/deepcave.plugins.objective.parallel_coordinates.html +++ b/development/api/deepcave.plugins.objective.parallel_coordinates.html @@ -799,11 +799,19 @@

    deepcave.plugins.objective.parallel_coordinates

    +

    # ParallelCoordinates

    +

    This module provides utilities for visualizing the parallel coordinates.

    +
    +
    ## Classes
      +
    • ParallelCoordinates : Can be used for visualizing the parallel coordinates.

    • +
    +
    +

    Classes

    - +

    ParallelCoordinates()

    Can be used for visualizing the parallel coordinates.

    @@ -811,19 +819,21 @@
    class deepcave.plugins.objective.parallel_coordinates.ParallelCoordinates[source]

    Bases: StaticPlugin

    +

    Can be used for visualizing the parallel coordinates.

    static get_filter_layout(register)[source]
    -

    Layout for the filter block.

    +

    Get the layout for the filter block.

    Parameters:
    -

    register (Callable[[str, Union[str, List[str]]], str]) – The register method to register (user) variables.

    +

    register (Callable) – Method to register (user) variables. +The register_input function is located in the Plugin superclass.

    Returns:
    -

    Layouts for the filter block.

    +

    The layouts for the filter block.

    Return type:
    -

    List[Component]

    +

    List[Any]

    @@ -831,16 +841,17 @@
    static get_input_layout(register)[source]
    -

    Layout for the input block.

    +

    Get the layout for the input block.

    Parameters:
    -

    register (Callable[[str, Union[str, List[str]]], str]) – The register method to register (user) variables.

    +

    register (Callable) – Method to regsiter (user) variables. +The register_input function is located in the Plugin superclass.

    Returns:
    -

    Layouts for the input block.

    +

    The layouts for the input block.

    Return type:
    -

    List[Component]

    +

    List[Any]

    @@ -848,16 +859,17 @@
    static get_output_layout(register)[source]
    -

    Layout for the output block.

    +

    Get the layout for the output block.

    Parameters:
    -

    register (Callable[[str, Union[str, List[str]]], str]) – The register method to register outputs.

    +

    register (Callable) – Method to register outputs. +The register_output function is located in the Plugin superclass.

    Returns:
    -

    Layouts for the output block.

    +

    The layouts for the output block.

    Return type:
    -

    Union[Component, List[Component]]

    +

    dcc.Graph

    @@ -865,23 +877,21 @@
    load_dependency_inputs(run, _, inputs)[source]
    -

    Same as load_inputs but called after inputs have changed. Provides a lot of flexibility.

    +

    Work like ‘load_inputs’ but called after inputs have changed.

    Note

    -

    Only the changes have to be returned. The returned dictionary will be merged with the -inputs.

    +

    Only the changes have to be returned. +The returned dictionary will be merged with the inputs.

    Parameters:
      -
    • selected_run (Optional[Union[AbstractRun, List[AbstractRun]]], optional) – The selected run from the user. In case of activate_run_selection, only one run -is passed. Defaults to None.

    • -
    • previous_inputs (Dict[str, Any]) – Previous content of the inputs.

    • -
    • inputs (Dict[str, Any]) – Current content of the inputs.

    • +
    • run – The selected run.

    • +
    • inputs – Current content of the inputs.

    Returns:
    -

    Dictionary with the changes.

    +

    The dictionary with the changes.

    Return type:

    Dict[str, Any]

    @@ -892,16 +902,16 @@
    load_inputs()[source]
    -

    Load the content for the defined inputs in get_input_layout and get_filter_layout. -This method is necessary to pre-load contents for the inputs. So, if the plugin is -called for the first time or there are no results in the cache, the plugin gets its -content from this method.

    +

    Load the content for the defined inputs in ‘get_input_layout’ and ‘get_filter_layout’.

    +

    This method is necessary to pre-load contents for the inputs. +So, if the plugin is called for the first time or there are no results in the cache, +the plugin gets its content from this method.

    Returns:

    Content to be filled.

    Return type:
    -

    Dict[str, Any]

    +

    Dict[str, Dict[str, Any]]

    @@ -909,27 +919,26 @@
    static load_outputs(run, inputs, outputs)[source]
    -

    Reads in the raw data and prepares them for the layout.

    +

    Read in the raw data and prepare them for the layout.

    Note

    -

    The passed inputs are cleaned and therefore differs compared to load_inputs or -load_dependency_inputs. Please see _clean_inputs for more information.

    +

    The passed inputs are cleaned and therefore differs compared to ‘load_inputs’ +or ‘load_dependency_inputs’. +Please see ‘_clean_inputs’ for more information.

    Parameters:
      -
    • runs (Union[AbstractRun, Dict[str, AbstractRun]]) – All selected runs. If activate_run_selection is set, only the selected run is -returned.

    • -
    • inputs (Dict[str, Dict[str, str]]) – Input and filter values from the user.

    • -
    • outputs (Dict[str, Union[str, Dict[str, str]]]) – Raw outputs from the runs. If activate_run_selection is set, -a Dict[str, str] is returned.

    • +
    • run – The selected run.

    • +
    • inputs – The inputs and filter values fromt the user.

    • +
    • outputs – Raw output from the run.

    Returns:
    -

    The components must be in the same position as defined in get_output_layout.

    +

    The output figure.

    Return type:
    -

    Union[Component, List[Component]]

    +

    go.Figure

    @@ -937,25 +946,26 @@
    static process(run, inputs)[source]
    -

    Returns raw data based on a run and input data.

    +

    Return raw data based on a run and input data.

    Warning

    The returned data must be JSON serializable.

    Note

    -

    The passed inputs are cleaned and therefore differs compared to load_inputs or -load_dependency_inputs. Please see _clean_inputs for more information.

    +

    The passed inputs are cleaned and therefore differs compared to ‘load_inputs’ +or ‘load_dependency_inputs’. +Please see ‘_clean_inputs’ for more information.

    Parameters:
    • run (AbstractRun) – The run to process.

    • -
    • inputs (Dict[str, Any]) – Input data.

    • +
    • inputs (Dict[str, Any]) – The input data.

    Returns:
    -

    Serialized dictionary.

    +

    The serialized dictionary.

    Return type:

    Dict[str, Any]

    diff --git a/development/api/deepcave.plugins.objective.pareto_front.html b/development/api/deepcave.plugins.objective.pareto_front.html index 5542e506..09f60913 100644 --- a/development/api/deepcave.plugins.objective.pareto_front.html +++ b/development/api/deepcave.plugins.objective.pareto_front.html @@ -817,11 +817,20 @@

    deepcave.plugins.objective.pareto_front

    +

    # ParetoFront

    +

    This module provides utilities for creating a visualization of the Pareto Front.

    +

    It includes the corresponding Pareto Front plugin.

    +
    +
    ## Classes
      +
    • ParetoFront: Generate an interactive Pareto Front visualization.

    • +
    +
    +

    Classes

    - +

    ParetoFront()

    Generate an interactive Pareto Front visualization.

    @@ -829,18 +838,35 @@
    class deepcave.plugins.objective.pareto_front.ParetoFront[source]

    Bases: DynamicPlugin

    +

    Generate an interactive Pareto Front visualization.

    +
    +

    Properties

    +
    +
    objective_optionsList[Dict[str, Any]]

    A list of the objective options.

    +
    +
    budget_optionsList[Dict[str, Any]]

    A list of the budget options.

    +
    +
    check_runs_compatibility(runs)[source]
    -

    This function is needed if all selected runs need something in common -(e.g. budget or objective). Since this function is called before the layout is created, +

    Check if the runs are compatible.

    +

    This function is needed if all selected runs need something in common +(e.g. budget or objective). +Since this function is called before the layout is created, it can be also used to set common values for the plugin.

    Parameters:
    -

    runs (List[AbstractRun]) – Selected runs.

    +

    runs (List[AbstractRun]) – A list containing the selected runs.

    Raises:
    -

    NotMergeableError – If runs are not compatible, an error is thrown.

    +

    NotMergeableError – If the meta data of the runs are not equal. + If the configuration spaces of the runs are not equal. + If the budgets of the runs are not equal. + If the objective of the runs are not equal.

    +
    +
    Return type:
    +

    None

    @@ -848,16 +874,17 @@
    static get_filter_layout(register)[source]
    -

    Layout for the filter block.

    +

    Get the layout for the filter block.

    Parameters:
    -

    register (Callable[[str, Union[str, List[str]]], str]) – The register method to register (user) variables.

    +

    register (Callable) – Method to register (user) variables. +The register_input function is located in the Plugin superclass.

    Returns:
    -

    Layouts for the filter block.

    +

    The layouts for the filter block.

    Return type:
    -

    List[Component]

    +

    List[Any]

    @@ -865,16 +892,17 @@
    static get_input_layout(register)[source]
    -

    Layout for the input block.

    +

    Get layout for the input block.

    Parameters:
    -

    register (Callable[[str, Union[str, List[str]]], str]) – The register method to register (user) variables.

    +

    register (Callable) – Method to register (user) variables. +The register_input function is located in the Plugin superclass.

    Returns:
    -

    Layouts for the input block.

    +

    The layouts for the input block.

    Return type:
    -

    List[Component]

    +

    List[Any]

    @@ -882,16 +910,17 @@
    static get_mpl_output_layout(register)[source]
    -

    Layout for the matplotlib output block.

    +

    Get the layout for the matplotlib output block.

    Parameters:
    -

    register (Callable[[str, Union[str, List[str]]], str]) – The register method to register outputs.

    +

    register (Callable) – Method to register outputs. +The register_output function is located in the Plugin superclass.

    Returns:
    -

    Layout for the matplotlib output block.

    +

    The layout for the matplotlib output block.

    Return type:
    -

    Union[Component, List[Component]]

    +

    html.Img

    @@ -899,16 +928,17 @@
    static get_output_layout(register)[source]
    -

    Layout for the output block.

    +

    Get the layout for the output block.

    Parameters:
    -

    register (Callable[[str, Union[str, List[str]]], str]) – The register method to register outputs.

    +

    register (Callable) – Method to register outputs. +The register_output function is located in the Plugin superclass.

    Returns:
    -

    Layouts for the output block.

    +

    The layout for the output block.

    Return type:
    -

    Union[Component, List[Component]]

    +

    dcc.Graph

    @@ -916,16 +946,16 @@
    load_inputs()[source]
    -

    Load the content for the defined inputs in get_input_layout and get_filter_layout. -This method is necessary to pre-load contents for the inputs. So, if the plugin is -called for the first time or there are no results in the cache, the plugin gets its -content from this method.

    +

    Load the content for the defined inputs in ‘get_input_layout’ and ‘get_filter_layout’.

    +

    This method is necessary to pre-load contents for the inputs. +So, if the plugin is called for the first time or there are no results in the cache, +the plugin gets its content from this method.

    Returns:
    -

    Content to be filled.

    +

    The content to be filled.

    Return type:
    -

    Dict[str, Any]

    +

    Dict[str, Dict[str, Any]]

    @@ -933,27 +963,23 @@
    static load_mpl_outputs(runs, inputs, outputs)[source]
    -

    Reads in the raw data and prepares them for the layout.

    +

    Read in the raw data and prepare them for the layout.

    Note

    -

    The passed inputs are cleaned and therefore differs compared to load_inputs or -load_dependency_inputs. Please see _clean_inputs for more information.

    +

    The passed inputs are cleaned and therefore differs compared to ‘load_inputs’ +or ‘load_dependency_inputs’. +Please see ‘_clean_inputs’ for more information.

    Parameters:
      -
    • runs (Union[AbstractRun, Dict[str, AbstractRun]]) – All selected runs. If activate_run_selection is set, only the selected run is -returned.

    • -
    • inputs (Dict[str, Dict[str, str]]) – Input and filter values from the user.

    • -
    • outputs (Dict[str, Union[str, Dict[str, str]]]) – Raw outputs from the runs. If activate_run_selection is set, -a Dict[str, str] is returned.

    • +
    • runs – The selected runs.

    • +
    • inputs – Input and filter values from the user.

    • +
    • outputs – Raw outputs from the runs.

    -
    Returns:
    -

    The components must be in the same position as defined in get_output_layout.

    -
    -
    Return type:
    -

    Union[Component, List[Component]]

    +
    Return type:
    +

    The rendered matplotlib figure.

    @@ -961,27 +987,26 @@
    static load_outputs(runs, inputs, outputs)[source]
    -

    Reads in the raw data and prepares them for the layout.

    +

    Read in the raw data and prepare them for the layout.

    Note

    -

    The passed inputs are cleaned and therefore differs compared to load_inputs or -load_dependency_inputs. Please see _clean_inputs for more information.

    +

    The passed inputs are cleaned and therefore differs compared to ‘load_inputs’ +or ‘load_dependency_inputs’. +Please see ‘_clean_inputs’ for more information.

    Parameters:
      -
    • runs (Union[AbstractRun, Dict[str, AbstractRun]]) – All selected runs. If activate_run_selection is set, only the selected run is -returned.

    • -
    • inputs (Dict[str, Dict[str, str]]) – Input and filter values from the user.

    • -
    • outputs (Dict[str, Union[str, Dict[str, str]]]) – Raw outputs from the runs. If activate_run_selection is set, -a Dict[str, str] is returned.

    • +
    • runs – The selected runs.

    • +
    • inputs – The input and filter values from the user.

    • +
    • outputs – Raw outputs from the runs.

    Returns:
    -

    The components must be in the same position as defined in get_output_layout.

    +

    The output figure.

    Return type:
    -

    Union[Component, List[Component]]

    +

    go.Figure

    @@ -989,25 +1014,26 @@
    static process(run, inputs)[source]
    -

    Returns raw data based on a run and input data.

    +

    Return raw data based on a run and input data.

    Warning

    The returned data must be JSON serializable.

    Note

    -

    The passed inputs are cleaned and therefore differs compared to load_inputs or -load_dependency_inputs. Please see _clean_inputs for more information.

    +

    The passed inputs are cleaned and therefore differs compared to ‘load_inputs’ +or ‘load_dependency_inputs’. +Please see ‘_clean_inputs’ for more information.

    Parameters:
    • run (AbstractRun) – The run to process.

    • -
    • inputs (Dict[str, Any]) – Input data.

    • +
    • inputs (Dict[str, Any]) – The input data.

    Returns:
    -

    Serialized dictionary.

    +

    The serialized dictionary.

    Return type:

    Dict[str, Any]

    @@ -1015,6 +1041,7 @@
    +
    diff --git a/development/api/deepcave.plugins.static.html b/development/api/deepcave.plugins.static.html index 82295315..b5457120 100644 --- a/development/api/deepcave.plugins.static.html +++ b/development/api/deepcave.plugins.static.html @@ -763,14 +763,24 @@

    deepcave.plugins.static

    +

    # Static

    +

    This module provides a plugin class for a static plugin.

    +

    It provides an Enum used for the plugin state.

    +
    +
    ## Classes
      +
    • PluginState: An Enum to define the state of the Plugin.

    • +
    • StaticPlugin: This class provides a static plugin object.

    • +
    +
    +

    Classes

    - + - +

    PluginState(value)

    An enumeration.

    An Enum to define the state of the Plugin.

    StaticPlugin()

    Calculation with queue.

    Provide a static plugin object.

    @@ -778,19 +788,41 @@
    class deepcave.plugins.static.PluginState(value)[source]

    Bases: Enum

    -

    An enumeration.

    +

    An Enum to define the state of the Plugin.

    class deepcave.plugins.static.StaticPlugin[source]

    Bases: Plugin, ABC

    -

    Calculation with queue. Made for time-consuming tasks.

    +

    Provide a static plugin object.

    +

    Calculation with queue. Made for time-consuming tasks. +Register and handle callbacks.

    +
    +

    Properties

    +
    +
    outputsList[Tuple[str, str, bool]]

    The plugin specific outputs.

    +
    +
    inputsList[Tuple[str, str, bool, Any]]

    The plugin specific inputs.

    +
    +
    idstr

    The plugin id.

    +
    +
    raw_outputsdict[str, Any]

    The raw outputs of a run.

    +
    +
    loggerLogger

    The logger for the plugin.

    +
    +
    namestr

    The name of the plugin.

    +
    +
    processCallable

    Return raw data based on a run and input data.

    +
    +
    button_captionstr

    The caption for the button.

    +
    +
    __call__()[source]
    -

    Returns the components for the plugin. Basically, all blocks and elements of the plugin -are stacked-up here

    +

    Return the components for the plugin.

    +

    Basically, all blocks and elements of the plugin are stacked-up here.

    Returns:

    Layout as list of components.

    @@ -804,21 +836,15 @@
    register_callbacks()[source]
    -

    Registers basic callbacks for the plugin. Following callbacks are registered: -- If inputs changes, the changes are pasted back. This is in particular -interest if input dependencies are used. -- Raw data dialog to display raw data. -- Callback to be redirected to the config if clicked on it.

    +

    Register different callbacks.

    -
    Raises:
    -

    RuntimeError – _description_

    -
    -
    Return type:
    -

    None

    +
    Return type:
    +

    None

    +
    diff --git a/development/api/deepcave.plugins.summary.configurations.html b/development/api/deepcave.plugins.summary.configurations.html index cc21c3ea..bb9515ec 100644 --- a/development/api/deepcave.plugins.summary.configurations.html +++ b/development/api/deepcave.plugins.summary.configurations.html @@ -799,11 +799,20 @@

    deepcave.plugins.summary.configurations

    +

    # Configurations

    +

    This module provides utilities to visualize the characteristics of a configuration within a run.

    +

    The module provides a corresponding dynamic plugin.

    +
    +
    ## Classes
      +
    • Configurations: Visualize the characteristics of a configuration.

    • +
    +
    +

    Classes

    - +

    Configurations()

    Visualize the characteristics of a configuration.

    @@ -811,19 +820,21 @@
    class deepcave.plugins.summary.configurations.Configurations[source]

    Bases: DynamicPlugin

    +

    Visualize the characteristics of a configuration.

    static get_input_layout(register)[source]
    -

    Layout for the input block.

    +

    Get the layout for the input block.

    Parameters:
    -

    register (Callable[[str, Union[str, List[str]]], str]) – The register method to register (user) variables.

    +

    register (Callable) – Method to register (user) variables. +The register_input function is located in the Plugin superclass.

    Returns:
    -

    Layouts for the input block.

    +

    The layouts for the input block.

    Return type:
    -

    List[Component]

    +

    List[html.Div]

    @@ -831,12 +842,12 @@
    -

    Creates a link to a specific configuration.

    +

    Create a link to a specific configuration.

    Parameters:
      -
    • run (AbstractRun) – Selected run.

    • -
    • config_id (int) – Configuration, which should be visited.

    • +
    • run (AbstractRun) – The selected run.

    • +
    • config_id (int) – Configuration which should be visited.

    Returns:
    @@ -851,16 +862,17 @@
    static get_output_layout(register)[source]
    -

    Layout for the output block.

    +

    Get the layout for the output block.

    Parameters:
    -

    register (Callable[[str, Union[str, List[str]]], str]) – The register method to register outputs.

    +

    register (Callable) – Method used to register outputs. +The register_input function is located in the Plugin superclass.

    Returns:
    -

    Layouts for the output block.

    +

    The layouts for the outputs.

    Return type:
    -

    Union[Component, List[Component]]

    +

    List[Any]

    @@ -868,23 +880,23 @@
    load_dependency_inputs(run, previous_inputs, inputs)[source]
    -

    Same as load_inputs but called after inputs have changed. Provides a lot of flexibility.

    +

    Work like ‘load_inputs’ but called after inputs have changed.

    Note

    -

    Only the changes have to be returned. The returned dictionary will be merged with the -inputs.

    +

    Only the changes have to be returned. +The returned dictionary will be merged with the inputs.

    Parameters:
      -
    • selected_run (Optional[Union[AbstractRun, List[AbstractRun]]], optional) – The selected run from the user. In case of activate_run_selection, only one run -is passed. Defaults to None.

    • -
    • previous_inputs (Dict[str, Any]) – Previous content of the inputs.

    • -
    • inputs (Dict[str, Any]) – Current content of the inputs.

    • +
    • run – The selected run.

    • +
    • previous_inputs (Dict[str, Any]) – Previous content of the inputs. +Not used in this specific function

    • +
    • inputs (Dict[str, Any]) – The current content of the inputs.

    Returns:
    -

    Dictionary with the changes.

    +

    A dictionary with the changes.

    Return type:

    Dict[str, Any]

    @@ -895,13 +907,13 @@
    load_inputs()[source]
    -

    Load the content for the defined inputs in get_input_layout and get_filter_layout. -This method is necessary to pre-load contents for the inputs. So, if the plugin is -called for the first time or there are no results in the cache, the plugin gets its -content from this method.

    +

    Load the content for the defined inputs in ‘get_input_layout’ and ‘get_filter_layout’.

    +

    This method is necessary to pre-load contents for the inputs. +So, if the plugin is called for the first time or there are no results in the cache, +the plugin gets its content from this method.

    Returns:
    -

    Content to be filled.

    +

    The content to be filled

    Return type:

    Dict[str, Any]

    @@ -912,27 +924,26 @@
    static load_outputs(run, inputs, outputs)[source]
    -

    Reads in the raw data and prepares them for the layout.

    +

    Read in the raw data and prepare them for the layout.

    Note

    -

    The passed inputs are cleaned and therefore differs compared to load_inputs or -load_dependency_inputs. Please see _clean_inputs for more information.

    +

    The passed inputs are cleaned and therefore differs compared to ‘load_inputs’ +or ‘load_dependency_inputs’. +Please see ‘_clean_inputs’ for more information.

    Parameters:
      -
    • runs (Union[AbstractRun, Dict[str, AbstractRun]]) – All selected runs. If activate_run_selection is set, only the selected run is -returned.

    • -
    • inputs (Dict[str, Dict[str, str]]) – Input and filter values from the user.

    • -
    • outputs (Dict[str, Union[str, Dict[str, str]]]) – Raw outputs from the runs. If activate_run_selection is set, -a Dict[str, str] is returned.

    • +
    • run – The selected run.

    • +
    • inputs – Input and filter values from the user.

    • +
    • outputs – Raw output from the run.

    Returns:
    -

    The components must be in the same position as defined in get_output_layout.

    +

    A list of the created tables containing output information.

    Return type:
    -

    Union[Component, List[Component]]

    +

    List[Any]

    @@ -940,25 +951,26 @@
    static process(run, inputs)[source]
    -

    Returns raw data based on a run and input data.

    +

    Return raw data based on a run and input data.

    Warning

    The returned data must be JSON serializable.

    Note

    -

    The passed inputs are cleaned and therefore differs compared to load_inputs or -load_dependency_inputs. Please see _clean_inputs for more information.

    +

    The passed inputs are cleaned and therefore differs compared to ‘load_inputs’ +or ‘load_dependency_inputs’. +Please see ‘_clean_inputs’ for more information.

    Parameters:
      -
    • run (AbstractRun) – The run to process.

    • -
    • inputs (Dict[str, Any]) – Input data.

    • +
    • run – The selected run.

    • +
    • inputs – The input data.

    Returns:
    -

    Serialized dictionary.

    +

    A serialized dictionary.

    Return type:

    Dict[str, Any]

    diff --git a/development/api/deepcave.plugins.summary.footprint.html b/development/api/deepcave.plugins.summary.footprint.html index ce3b28e9..f8dcd9c9 100644 --- a/development/api/deepcave.plugins.summary.footprint.html +++ b/development/api/deepcave.plugins.summary.footprint.html @@ -817,11 +817,20 @@

    deepcave.plugins.summary.footprint

    +

    # FootPrint

    +

    This module provides utilities to visualize a configuration footprint.

    +

    The module contains a static plugin class for defining the footprint.

    +
    +
    ## Classes
      +
    • FootPrint: A static plugin for the footprint of a configuration.

    • +
    +
    +

    Classes

    - +

    FootPrint()

    Visualize the footprint of a configuration.

    @@ -829,19 +838,22 @@
    class deepcave.plugins.summary.footprint.FootPrint[source]

    Bases: StaticPlugin

    +

    Visualize the footprint of a configuration.

    +

    A static plugin for the footprint.

    static get_filter_layout(register)[source]
    -

    Layout for the filter block.

    +

    Get layout for the filter block.

    Parameters:
    -

    register (Callable[[str, Union[str, List[str]]], str]) – The register method to register (user) variables.

    +

    register (Callable) – Method to register (user) variables. +The register_input function is located in the Plugin superclass.

    Returns:
    -

    Layouts for the filter block.

    +

    The layouts for the filter block.

    Return type:
    -

    List[Component]

    +

    List[dbc.Row]

    @@ -849,16 +861,17 @@
    static get_input_layout(register)[source]
    -

    Layout for the input block.

    +

    Get the layout for the input block.

    Parameters:
    -

    register (Callable[[str, Union[str, List[str]]], str]) – The register method to register (user) variables.

    +

    register (Callable) – Method to register (user) variables. +The register_input function is located in the Plugin superclass.

    Returns:
    -

    Layouts for the input block.

    +

    The layouts for the input block.

    Return type:
    -

    List[Component]

    +

    List[Any]

    @@ -866,16 +879,17 @@
    static get_mpl_output_layout(register)[source]
    -

    Layout for the matplotlib output block.

    +

    Get the layout for the matplotlib output block.

    Parameters:
    -

    register (Callable[[str, Union[str, List[str]]], str]) – The register method to register outputs.

    +

    register (Callable) – Method to register the outputs. +The register_output function is located in the Plugin superclass.

    Returns:
    -

    Layout for the matplotlib output block.

    +

    The layout for the output block.

    Return type:
    -

    Union[Component, List[Component]]

    +

    List[dbc.Tabs]

    @@ -883,16 +897,17 @@
    static get_output_layout(register)[source]
    -

    Layout for the output block.

    +

    Get the layout for the output block.

    Parameters:
    -

    register (Callable[[str, Union[str, List[str]]], str]) – The register method to register outputs.

    +

    register (Callable) – Method for registering outputs. +The register_output function is located in the Plugin superclass.

    Returns:
    -

    Layouts for the output block.

    +

    The layout for the output block.

    Return type:
    -

    Union[Component, List[Component]]

    +

    dbc.Tabs

    @@ -900,23 +915,23 @@
    load_dependency_inputs(run, previous_inputs, inputs)[source]
    -

    Same as load_inputs but called after inputs have changed. Provides a lot of flexibility.

    +

    Work like ‘load_inputs’ but called after inputs have changed.

    Note

    -

    Only the changes have to be returned. The returned dictionary will be merged with the -inputs.

    +

    Only the changes have to be returned. +The returned dictionary will be merged with the inputs.

    Parameters:
      -
    • selected_run (Optional[Union[AbstractRun, List[AbstractRun]]], optional) – The selected run from the user. In case of activate_run_selection, only one run -is passed. Defaults to None.

    • -
    • previous_inputs (Dict[str, Any]) – Previous content of the inputs.

    • -
    • inputs (Dict[str, Any]) – Current content of the inputs.

    • +
    • run – The selected run.

    • +
    • previous_inputs – Previous content of the inputs. +Not used in this specific function.

    • +
    • inputs – Current content of the inputs.

    Returns:
    -

    Dictionary with the changes.

    +

    The dictionary with the changes.

    Return type:

    Dict[str, Any]

    @@ -927,16 +942,16 @@
    load_inputs()[source]
    -

    Load the content for the defined inputs in get_input_layout and get_filter_layout. -This method is necessary to pre-load contents for the inputs. So, if the plugin is -called for the first time or there are no results in the cache, the plugin gets its -content from this method.

    +

    Load the content for the defined inputs in ‘get_input_layout’ and ‘get_filter_layout’.

    +

    This method is necessary to pre-load contents for the inputs. +So, if the plugin is called for the first time or there are no results in the cache, +the plugin gets its content from this method.

    Returns:
    -

    Content to be filled.

    +

    The content to be filled.

    Return type:
    -

    Dict[str, Any]

    +

    Dict[str, Dict[str, Any]]

    @@ -944,27 +959,23 @@
    static load_mpl_outputs(run, inputs, outputs)[source]
    -

    Reads in the raw data and prepares them for the layout.

    +

    Read in the raw data and prepare them for the layout.

    Note

    -

    The passed inputs are cleaned and therefore differs compared to load_inputs or -load_dependency_inputs. Please see _clean_inputs for more information.

    +

    The passed inputs are cleaned and therefore differs compared to ‘load_inputs’ +or ‘load_dependency_inputs’. +Please see ‘_clean_inputs’ for more information.

    Parameters:
      -
    • runs (Union[AbstractRun, Dict[str, AbstractRun]]) – All selected runs. If activate_run_selection is set, only the selected run is -returned.

    • -
    • inputs (Dict[str, Dict[str, str]]) – Input and filter values from the user.

    • -
    • outputs (Dict[str, Union[str, Dict[str, str]]]) – Raw outputs from the runs. If activate_run_selection is set, -a Dict[str, str] is returned.

    • +
    • run – The selected run.

    • +
    • inputs – Input and filter values from the user.

    • +
    • outputs – Raw outputs from the run.

    -
    Returns:
    -

    The components must be in the same position as defined in get_output_layout.

    -
    -
    Return type:
    -

    Union[Component, List[Component]]

    +
    Return type:
    +

    The rendered matplotlib figure of the footprint

    @@ -972,27 +983,26 @@
    static load_outputs(run, inputs, outputs)[source]
    -

    Reads in the raw data and prepares them for the layout.

    +

    Read in the raw data and prepare them for the layout.

    Note

    -

    The passed inputs are cleaned and therefore differs compared to load_inputs or -load_dependency_inputs. Please see _clean_inputs for more information.

    +

    The passed inputs are cleaned and therefore differs compared to ‘load_inputs’ +or ‘load_dependency_inputs’. +Please see ‘_clean_inputs’ for more information.

    Parameters:
      -
    • runs (Union[AbstractRun, Dict[str, AbstractRun]]) – All selected runs. If activate_run_selection is set, only the selected run is -returned.

    • -
    • inputs (Dict[str, Dict[str, str]]) – Input and filter values from the user.

    • -
    • outputs (Dict[str, Union[str, Dict[str, str]]]) – Raw outputs from the runs. If activate_run_selection is set, -a Dict[str, str] is returned.

    • +
    • run – The selected run.

    • +
    • inputs – Input and filter values from the user.

    • +
    • outputs – Raw output from the run.

    Returns:
    -

    The components must be in the same position as defined in get_output_layout.

    +

    The plotly figure of the footprint performance and area.

    Return type:
    -

    Union[Component, List[Component]]

    +

    List[Any]

    @@ -1000,25 +1010,26 @@
    static process(run, inputs)[source]
    -

    Returns raw data based on a run and input data.

    +

    Return raw data based on a run and input data.

    Warning

    The returned data must be JSON serializable.

    Note

    -

    The passed inputs are cleaned and therefore differs compared to load_inputs or -load_dependency_inputs. Please see _clean_inputs for more information.

    +

    The passed inputs are cleaned and therefore differs compared to ‘load_inputs’ +or ‘load_dependency_inputs’. +Please see ‘_clean_inputs’ for more information.

    Parameters:
      -
    • run (AbstractRun) – The run to process.

    • -
    • inputs (Dict[str, Any]) – Input data.

    • +
    • run – The selected run.

    • +
    • inputs – The input data.

    Returns:
    -

    Serialized dictionary.

    +

    A serialized dictionary.

    Return type:

    Dict[str, Any]

    diff --git a/development/api/deepcave.plugins.summary.html b/development/api/deepcave.plugins.summary.html index d94b7b5f..7766c67b 100644 --- a/development/api/deepcave.plugins.summary.html +++ b/development/api/deepcave.plugins.summary.html @@ -696,9 +696,19 @@
    +
    + On this page +
    @@ -720,17 +730,29 @@

    deepcave.plugins.summary

    +

    # summary

    +
    +

    ## Modules

    +
    +
    configurations

    This module provides utilities to visualize the characteristics of a configuration within a run.

    +
    +
    footprint

    This module provides utilities to visualize a configuration footprint.

    +
    +
    overview

    This module provides utilities for visualizing an overview of the selected run.

    +
    +
    +

    Modules

    - + - + - +

    deepcave.plugins.summary.configurations

    # Configurations

    deepcave.plugins.summary.footprint

    # FootPrint

    deepcave.plugins.summary.overview

    # Overview

    diff --git a/development/api/deepcave.plugins.summary.overview.html b/development/api/deepcave.plugins.summary.overview.html index 595a1ad1..7d2d30dd 100644 --- a/development/api/deepcave.plugins.summary.overview.html +++ b/development/api/deepcave.plugins.summary.overview.html @@ -754,11 +754,21 @@

    deepcave.plugins.summary.overview

    +

    # Overview

    +

    This module provides utilities for visualizing an overview of the selected runs.

    +

    It holds the most important information, e.g. meta data, objectives and statistics.

    +

    The module includes a dynamic plugin for the overview.

    +
    +
    ## Classes
      +
    • Overview: Visualize an overall overview of the selected run.

    • +
    +
    +

    Classes

    - +

    Overview()

    Visualize an overall overview of the selected run.

    @@ -766,19 +776,21 @@
    class deepcave.plugins.summary.overview.Overview[source]

    Bases: DynamicPlugin

    +

    Visualize an overall overview of the selected run.

    static get_output_layout(register)[source]
    -

    Layout for the output block.

    +

    Get the layout for the output block.

    Parameters:
    -

    register (Callable[[str, Union[str, List[str]]], str]) – The register method to register outputs.

    +

    register (Callable) – Method to register the outputs. +The register_input function is located in the Plugin superclass.

    Returns:
    -

    Layouts for the output block.

    +

    The layouts for the output block.

    Return type:
    -

    Union[Component, List[Component]]

    +

    List[Any]

    @@ -786,27 +798,22 @@
    static load_outputs(run, *_)[source]
    -

    Reads in the raw data and prepares them for the layout.

    +

    Read in the raw data and prepare them for the layout.

    Note

    -

    The passed inputs are cleaned and therefore differs compared to load_inputs or -load_dependency_inputs. Please see _clean_inputs for more information.

    +

    The passed inputs are cleaned and therefore differs compared to ‘load_inputs’ +or ‘load_dependency_inputs’. +Please see ‘_clean_inputs’ for more information.

    Parameters:
    -
      -
    • runs (Union[AbstractRun, Dict[str, AbstractRun]]) – All selected runs. If activate_run_selection is set, only the selected run is -returned.

    • -
    • inputs (Dict[str, Dict[str, str]]) – Input and filter values from the user.

    • -
    • outputs (Dict[str, Union[str, Dict[str, str]]]) – Raw outputs from the runs. If activate_run_selection is set, -a Dict[str, str] is returned.

    • -
    +

    run – The selected run.

    Returns:
    -

    The components must be in the same position as defined in get_output_layout.

    +

    A list of the created tables of the overview.

    Return type:
    -

    Union[Component, List[Component]]

    +

    List[Any]

    diff --git a/development/api/deepcave.runs.converters.bohb.html b/development/api/deepcave.runs.converters.bohb.html index 7203a5aa..071affee 100644 --- a/development/api/deepcave.runs.converters.bohb.html +++ b/development/api/deepcave.runs.converters.bohb.html @@ -729,6 +729,15 @@
  • +
  • + + + + BOHBRun.latest_change + + + +
  • @@ -754,11 +763,20 @@

    deepcave.runs.converters.bohb

    +

    # BOHBRun

    +

    This module provides utilities for managing and processing data concerning a BOHB +(Bayesian Optimization and Hyperparameter Bandits) run.

    +
    +
    ## Classes
      +
    • BOHBRun: Create a BOHB Run.

    • +
    +
    +

    Classes

    - +

    BOHBRun(name[, configspace, objectives, ...])

    Create a BOHB (Bayesian Optimization and Hyperparameter Bandits) run.

    @@ -766,20 +784,36 @@
    class deepcave.runs.converters.bohb.BOHBRun(name, configspace=None, objectives=None, meta=None, path=None)[source]

    Bases: Run

    +

    Create a BOHB (Bayesian Optimization and Hyperparameter Bandits) run.

    +
    +

    Properties

    +
    +
    pathPath

    The path to the run.

    +
    +
    classmethod from_path(path)[source]
    -

    Based on a path, return a new Run object.

    +

    Create a new BOHB run from a given path and add a new trial to it.

    +
    +
    Parameters:
    +

    path (Union[Path, str]) – The pathname to base the run on.

    +
    +
    Return type:
    +

    The BOHB run

    +
    +
    -property hash
    -

    Hash of the current run. If hash changes, cache has to be cleared. This ensures that -the cache always holds the latest results of the run.

    +property hash: str +

    Get the hash of the current run.

    +

    If the hash changes, the cache has to be cleared. +This ensures that the cache always holds the latest results of the run.

    Returns:
    -

    hash – Hash of the run.

    +

    The hash of the run.

    Return type:

    str

    @@ -787,6 +821,21 @@
    +
    +
    +property latest_change: float | int
    +

    Get the timestamp of the latest change.

    +
    +
    Returns:
    +

    The latest change.

    +
    +
    Return type:
    +

    Union[float, int]

    +
    +
    +
    + +
    diff --git a/development/api/deepcave.runs.converters.deepcave.html b/development/api/deepcave.runs.converters.deepcave.html index d5062a8f..f0896157 100644 --- a/development/api/deepcave.runs.converters.deepcave.html +++ b/development/api/deepcave.runs.converters.deepcave.html @@ -729,6 +729,15 @@ +
  • + + + + DeepCAVERun.latest_change + + + +
  • @@ -754,11 +763,19 @@

    deepcave.runs.converters.deepcave

    +

    # DeepCAVE

    +

    This module defines the DeepCAVE run object.

    +
    +
    ## Classes
      +
    • DeepCAVERun: Create a DeepCAVE run and provide handling utilities.

    • +
    +
    +

    Classes

    - +

    DeepCAVERun(name[, configspace, objectives, ...])

    Create a DeepCAVE run and provide handling utilities.

    @@ -766,20 +783,36 @@
    class deepcave.runs.converters.deepcave.DeepCAVERun(name, configspace=None, objectives=None, meta=None, path=None)[source]

    Bases: Run

    +

    Create a DeepCAVE run and provide handling utilities.

    +
    +

    Properties

    +
    +
    pathPath

    The path the run.

    +
    +
    classmethod from_path(path)[source]
    -

    Based on a path, return a new Run object.

    +

    Get a DeepCAVE run from a given path.

    +
    +
    Parameters:
    +

    path (Path) – The path to base the run on.

    +
    +
    Return type:
    +

    The DeepCAVE run.

    +
    +
    -property hash
    -

    Hash of the current run. If hash changes, cache has to be cleared. This ensures that -the cache always holds the latest results of the run.

    +property hash: str +

    Hash of the current run.

    +

    If the hash changes, the cache has to be cleared. +This ensures that the cache always holds the latest results of the run.

    Returns:
    -

    hash – Hash of the run.

    +

    The hash of the run.

    Return type:

    str

    @@ -787,6 +820,21 @@
    +
    +
    +property latest_change: float | int
    +

    Get the timestamp of the latest change.

    +
    +
    Returns:
    +

    The latest change.

    +
    +
    Return type:
    +

    Union[float, int]

    +
    +
    +
    + +
    diff --git a/development/api/deepcave.runs.converters.html b/development/api/deepcave.runs.converters.html index 955af4b7..bdb45162 100644 --- a/development/api/deepcave.runs.converters.html +++ b/development/api/deepcave.runs.converters.html @@ -696,9 +696,19 @@
    +
    + On this page +
    @@ -720,20 +730,37 @@

    deepcave.runs.converters

    +

    # converters

    +
    +

    ## Modules

    +
    +
    bohb

    This module provides utilities for managing and processing data concerning a BOHB +(Bayesian Optimization and Hyperparameter Bandits) run.

    +
    +
    deepcave

    This module defines the DeepCAVE run object.

    +
    +
    smac3v1

    This module provides utilities to create a SMAC3v1 +(Sequential Model-based Algorithm Configuration) run.

    +
    +
    smac3v2

    This module provides utilities to create a SMAC3v2 +(Sequential Model-based Algorithm Configuration) run.

    +
    +
    +

    Modules

    - + - + - + - +

    deepcave.runs.converters.bohb

    # BOHBRun

    deepcave.runs.converters.deepcave

    # DeepCAVE

    deepcave.runs.converters.smac3v1

    # SMAC3v1Run

    deepcave.runs.converters.smac3v2

    # SMAC3v2Run

    diff --git a/development/api/deepcave.runs.converters.smac3v1.html b/development/api/deepcave.runs.converters.smac3v1.html index 9b8c3b2f..fc6a4175 100644 --- a/development/api/deepcave.runs.converters.smac3v1.html +++ b/development/api/deepcave.runs.converters.smac3v1.html @@ -729,6 +729,15 @@ +
  • + + + + SMAC3v1Run.latest_change + + + +
  • @@ -754,11 +763,21 @@

    deepcave.runs.converters.smac3v1

    +

    # SMAC3v1Run

    +

    This module provides utilities to create a SMAC3v1 +(Sequential Model-based Algorithm Configuration) run.

    +

    Version 1.4 is used.

    +
    +
    ## Classes
      +
    • SMAC3v1Run: Define a SMAC3v1 run object.

    • +
    +
    +

    Classes

    - +

    SMAC3v1Run(name[, configspace, objectives, ...])

    Define a SMAC3v1 (Sequential Model-based Algorithm Configuration) run object.

    @@ -766,20 +785,43 @@
    class deepcave.runs.converters.smac3v1.SMAC3v1Run(name, configspace=None, objectives=None, meta=None, path=None)[source]

    Bases: Run

    +

    Define a SMAC3v1 (Sequential Model-based Algorithm Configuration) run object.

    +

    Version 1.4 is used.

    +
    +

    Properties

    +
    +
    pathPath

    The path to the run.

    +
    +
    classmethod from_path(path)[source]

    Based on working_dir/run_name/*, return a new trials object.

    +
    +
    Parameters:
    +

    path (Union[Path, str]) – The path to base the run on.

    +
    +
    Return type:
    +

    A SMAC3v1 run.

    +
    +
    Raises:
    +
      +
    • RuntimeError – Instances are not supported.

    • +
    • RuntimeError – Multiple Seeds are not supported.

    • +
    +
    +
    -property hash
    -

    Hash of the current run. If hash changes, cache has to be cleared. This ensures that -the cache always holds the latest results of the run.

    +property hash: str +

    Hash of the current run.

    +

    If the hash changes, the cache has to be cleared. +This ensures that the cache always holds the latest results of the run.

    Returns:
    -

    hash – Hash of the run.

    +

    The hash of the run.

    Return type:

    str

    @@ -787,6 +829,21 @@
    +
    +
    +property latest_change: float | int
    +

    Get the timestamp of the latest change.

    +
    +
    Returns:
    +

    The latest change.

    +
    +
    Return type:
    +

    Union[float, int]

    +
    +
    +
    + +
    diff --git a/development/api/deepcave.runs.converters.smac3v2.html b/development/api/deepcave.runs.converters.smac3v2.html index d3e1a112..54943f87 100644 --- a/development/api/deepcave.runs.converters.smac3v2.html +++ b/development/api/deepcave.runs.converters.smac3v2.html @@ -729,6 +729,15 @@ +
  • + + + + SMAC3v2Run.latest_change + + + +
  • @@ -754,11 +763,21 @@

    deepcave.runs.converters.smac3v2

    +

    # SMAC3v2Run

    +

    This module provides utilities to create a SMAC3v2 +(Sequential Model-based Algorithm Configuration) run.

    +

    Version 2.0.0 is used.

    +
    +
    ## Classes
      +
    • SMAC3v2Run: Define a SMAC3v2 run object.

    • +
    +
    +

    Classes

    - +

    SMAC3v2Run(name[, configspace, objectives, ...])

    Define a SMAC3v2 (Sequential Model-based Algorithm Configuration) run object.

    @@ -766,20 +785,43 @@
    class deepcave.runs.converters.smac3v2.SMAC3v2Run(name, configspace=None, objectives=None, meta=None, path=None)[source]

    Bases: Run

    +

    Define a SMAC3v2 (Sequential Model-based Algorithm Configuration) run object.

    +

    Version 2.0.0 is used.

    +
    +

    Properties

    +
    +
    pathPath

    The path to the run.

    +
    +
    classmethod from_path(path)[source]

    Based on working_dir/run_name/*, return a new trials object.

    +
    +
    Parameters:
    +

    path (Union[Path, str]) – The path to base the trial object on.

    +
    +
    Return type:
    +

    The SMAC3v2 run.

    +
    +
    Raises:
    +
      +
    • RuntimeError – Instances are not supported.

    • +
    • RuntimeError – Multiple Seeds are not supported.

    • +
    +
    +
    -property hash
    -

    Hash of the current run. If hash changes, cache has to be cleared. This ensures that -the cache always holds the latest results of the run.

    +property hash: str +

    Hash of the current run.

    +

    If the hash changes, the cache has to be cleared. +This ensures that the cache always holds the latest results of the run.

    Returns:
    -

    hash – Hash of the run.

    +

    The hash of the run.

    Return type:

    str

    @@ -787,6 +829,21 @@
    +
    +
    +property latest_change: float | int
    +

    Get the timestamp of the latest change.

    +
    +
    Returns:
    +

    The latest change.

    +
    +
    Return type:
    +

    Union[float, int]

    +
    +
    +
    + +
    diff --git a/development/api/deepcave.runs.exceptions.html b/development/api/deepcave.runs.exceptions.html index 2e773178..db54a7d9 100644 --- a/development/api/deepcave.runs.exceptions.html +++ b/development/api/deepcave.runs.exceptions.html @@ -743,11 +743,22 @@

    deepcave.runs.exceptions

    +

    # Exceptions

    +

    This module provides utilities for different errors concerning the runs.

    +

    Exceptions will be raised, if a directory is not a valid run, +as well as if runs are not mergeable.

    +
    +
    ## Classes
      +
    • NotValidRunError: Raised if directory is not a valid run.

    • +
    • NotMergeableError: Raised if two or more runs are not mergeable.

    • +
    +
    +

    Exceptions

    - + @@ -758,7 +769,7 @@
    exception deepcave.runs.exceptions.NotMergeableError[source]

    Bases: Exception

    -

    Raised if two or more runs are not mergeable

    +

    Raised if two or more runs are not mergeable.

    diff --git a/development/api/deepcave.runs.group.html b/development/api/deepcave.runs.group.html index 101f60d9..833c0cc0 100644 --- a/development/api/deepcave.runs.group.html +++ b/development/api/deepcave.runs.group.html @@ -711,6 +711,60 @@ @@ -763,11 +844,20 @@

    deepcave.runs.group

    +

    # Group

    +

    This module provides utilities for grouping and managing a group of runs. +Utilities include getting attributes of the grouped runs, as well as the group itself.

    +
    +
    ## Classes
      +
    • Group: Can group and manage a group of runs.

    • +
    +
    +

    Classes

    NotMergeableError

    Raised if two or more runs are not mergeable

    Raised if two or more runs are not mergeable.

    NotValidRunError

    Raised if directory is not a valid run.

    - +

    Group(name, runs)

    Can group and manage a group of runs.

    @@ -775,26 +865,149 @@
    class deepcave.runs.group.Group(name, runs)[source]

    Bases: AbstractRun

    +

    Can group and manage a group of runs.

    +

    Utilities include getting attributes of the grouped runs, as well as the group itself.

    +
    +

    Properties

    +
    +
    runsList[AbstractRun]

    A list of the runs.

    +
    +
    metaDict[str, Any]

    Contains budgets, objectives and their attributes.

    +
    +
    configspaceConfigurationSpace

    The configuration space of the runs.

    +
    +
    objectivesObjective

    The objectives of the runs.

    +
    +
    budgetsList[Union[int, float]]

    The budgets of the runs.

    +
    +
    configsDict[int, Any]

    A dictionary of the configurations and their ids as key.

    +
    +
    originsDict[int, str]

    The origins of the configurations and their ids as key.

    +
    +
    trial_keysDict[Tuple[str, int], int]

    The keys of the trial.

    +
    +
    historyList[Trial]

    The trial history.

    +
    +
    prefixstr

    The prefix for the id of the group.

    +
    +
    namestr

    The name for the id of the group.

    +
    +
    +
    +
    +__iter__()[source]
    +

    Allow to iterate over the object.

    +
    +
    Return type:
    +

    Iterator[str]

    +
    +
    +
    + +
    +
    +get_model(config_id)[source]
    +

    Get the model given the configuration id.

    +
    +
    Parameters:
    +

    config_id (int) – The identificator of the configuration.

    +
    +
    Returns:
    +

    The model.

    +
    +
    Return type:
    +

    Optional[Any]

    +
    +
    +
    + +
    +
    +get_new_config_id(run_id, original_config_id)[source]
    +

    Get a new identificator for a configuration.

    +
    +
    Parameters:
    +
      +
    • run_id (int) – The id of the run.

    • +
    • original_config_id (int) – The original identificator of a configuration.

    • +
    +
    +
    Returns:
    +

    The new identificator of a configuration.

    +
    +
    Return type:
    +

    int

    +
    +
    +
    + +
    +
    +get_original_config_id(config_id)[source]
    +

    Get the original identificator of a configuration.

    +
    +
    Parameters:
    +

    config_id (int) – The identificator of a configuration.

    +
    +
    Returns:
    +

    The original identificator of a configuration.

    +
    +
    Return type:
    +

    int

    +
    +
    +
    + +
    +
    +get_original_run(config_id)[source]
    +

    Get the original run.

    +
    +
    Parameters:
    +

    config_id (int) – The identificator of the configuration.

    +
    +
    Returns:
    +

    The original run.

    +
    +
    Return type:
    +

    AbstractRun

    +
    +
    +
    + +
    +
    +get_runs()[source]
    +

    Get the runs in the group.

    +
    +
    Returns:
    +

    A list of the grouped runs.

    +
    +
    Return type:
    +

    List[AbstractRun]

    +
    +
    +
    +
    get_trajectory(*args, **kwargs)[source]
    -

    Calculates the trajectory of the given objective and budget.

    +

    Calculate the trajectory of the given objective and budget.

    +

    This includes the times, the mean costs, and the standard deviation of the costs.

    Parameters:
      -
    • objective (Objective) – Objective to calculate the trajectory for.

    • -
    • budget (Optional[Union[int, float]], optional) – Budget to calculate the trajectory for. If no budget is given, then the highest budget -is chosen. By default None.

    • +
    • *args – Should be the objective to calculate the trajectory from.

    • +
    • **kwargs – Should be the budget to calculate the trajectory for.

    Returns:

    • times (List[float]) – Times of the trajectory.

    • costs_mean (List[float]) – Costs of the trajectory.

    • -
    • costs_std (List[float]) – Standard deviation of the costs of the trajectory. This is particularly useful for -grouped runs.

    • -
    • ids (List[int]) – The “global” ids of the selected trials.

    • -
    • config_ids (List[int]) – Config ids of the selected trials.

    • +
    • costs_std (List[float]) – Standard deviation of the costs of the trajectory.

    • +
    • ids (List[int]) – The “global” ids of the selected trial.

    • +
    • config_ids (List[int]) – The configuration ids of the selected trials.

    @@ -804,11 +1017,10 @@
    property hash: str
    -

    Hash of the current run. If hash changes, cache has to be cleared. This ensures that -the cache always holds the latest results of the run.

    +

    Sorted hashes of the group.

    Returns:
    -

    hash – Hash of the run.

    +

    The sorted hash of the group.

    Return type:

    str

    @@ -819,11 +1031,11 @@
    property id: str
    -

    Hash of the file. This is used to identify the file. -In contrast to hash, this hash should not be changed throughout the run.

    +

    Get the hash as id of the group.

    +

    In contrast to hash, this hash should not be changed throughout the run.

    Returns:
    -

    Hash of the run.

    +

    The hash of the group.

    Return type:

    str

    @@ -831,6 +1043,41 @@
    +
    +
    +property latest_change: float
    +

    Get the latest change made to the grouped runs.

    +
    +
    Returns:
    +

    The latest change.

    +
    +
    Return type:
    +

    float

    +
    +
    +
    + +
    +
    +property run_names: List[str]
    +

    Get the names of the runs in the group.

    +
    +
    Returns:
    +

    A list of the names of the runs in the group.

    +
    +
    Return type:
    +

    List[str]

    +
    +
    +
    + +
    +
    +property run_paths: List[str]
    +

    Get the path of the runs in the group.

    +
    + +
    diff --git a/development/api/deepcave.runs.handler.html b/development/api/deepcave.runs.handler.html index 18088d3f..6a5c6a90 100644 --- a/development/api/deepcave.runs.handler.html +++ b/development/api/deepcave.runs.handler.html @@ -765,6 +765,15 @@ +
  • + + + + RunHandler.get_selected_groups() + + + +
  • @@ -871,11 +880,21 @@

    deepcave.runs.handler

    +

    # Handler

    +

    This module provides utilities to handle a run.

    +

    It can retrieve working directories, run paths, run names, as well as groups of runs. +It provides utilities to update and remove runs as well as groups of runs.

    +
    +
    # Classes
      +
    • RunHandler: Handle the runs.

    • +
    +
    +

    Classes

    - +

    RunHandler(config, cache, run_cache)

    Handles the runs.

    Handle the runs.

    @@ -883,12 +902,34 @@
    class deepcave.runs.handler.RunHandler(config, cache, run_cache)[source]

    Bases: object

    -

    Handles the runs. Based on the meta data in the cache, automatically selects the right converter +

    Handle the runs.

    +

    Based on the meta data in the cache, automatically selects the right converter and switches to the right (plugin) cache.

    +

    Provides utilities to retrieve working directories, run paths, run names, and groups of runs. +Also update and remove runs as well a groups of runs.

    +
    +

    Properties

    +
    +
    cCache

    The cache containing information about a run(s).

    +
    +
    rcRunCaches

    The caches for the selected runs.

    +
    +
    loggerLogger

    The logger for the run handler.

    +
    +
    available_run_yfesList[Type[Run]]

    A list of the available converters.

    +
    +
    runsDict[str, AbstractRun]

    A dictionary of runs with their path as key.

    +
    +
    groupsDict[str, Group]

    A dictionary of the groups.

    +
    +
    available_run_classesList[Type[Run]]

    Contains the available run classes.

    +
    +
    add_run(run_path)[source]
    -

    Adds a run path to the cache. If run path is already in cache, do nothing.

    +

    Add a run path to the cache.

    +

    If run path is already in cache, do nothing.

    Parameters:

    run_path (str) – Path of a run.

    @@ -905,13 +946,19 @@
    get_available_run_paths()[source]
    -

    Returns the available run paths from the current directory.

    +

    Return the available run paths from the current directory.

    -
    Returns:
    -

    Run path as key and run name as value.

    +
    Return type:
    +

    Dict[str, str]

    -
    Return type:
    -

    Dict[str, str]

    +
    Returns:
    +

      +
    • Dict[str, str] – Run path as key and run name as value.

    • +
    • Exceptions

    • +
    • ———-

    • +
    • FileNotFoundError

    • +
    +

    @@ -919,7 +966,7 @@
    get_groups()[source]
    -

    Returns instantiated grouped runs.

    +

    Return instantiated grouped runs.

    Returns:

    Instances of grouped runs.

    @@ -933,13 +980,13 @@
    get_run(run_id)[source]
    -

    Looks inside self.runs and self.groups and if the run id is found, returns the run.

    +

    Look inside self.runs and self.groups and if the run id is found, returns the run.

    Parameters:

    run_id (str) – Internal id of the run. Referred to run.id.

    Returns:
    -

    Run

    +

    Run.

    Return type:

    AbstractRun

    @@ -953,7 +1000,7 @@
    get_run_name(run_path)[source]
    -

    Returns the stem of the path.

    +

    Return the stem of the path.

    Parameters:

    run_path (Union[Path, str]) – Path, which should be converted to a name.

    @@ -970,11 +1017,12 @@
    get_runs(include_groups=False)[source]
    -

    Returns the runs from the internal cache. The runs are already loaded and ready to use. +

    Return the runs from the internal cache.

    +

    The runs are already loaded and ready to use. Optional, if include_groups is set to True, the groups are also included.

    Parameters:
    -

    include_groups (bool, optional) – Includes the groups, by default False

    +

    include_groups (bool, optional) – Includes the groups, by default False.

    Returns:

    Instances of runs.

    @@ -985,10 +1033,27 @@
    +
    +
    +get_selected_groups()[source]
    +

    Get the selected groups.

    +
    +
    Returns:
    +

    Dictionary with the selected groups.

    +
    +
    Return type:
    +

    Dict[str, List[str]]

    +
    +
    Raises:
    +

    AssertionError – If groups in cache is not a dictionary, an error is thrown.

    +
    +
    +
    +
    get_selected_run_names()[source]
    -

    Returns the run names of the selected runs.

    +

    Return the run names of the selected runs.

    Returns:

    List of run names of the selected runs.

    @@ -1002,13 +1067,16 @@
    get_selected_run_paths()[source]
    -

    Returns the selected run paths from the cache.

    +

    Return the selected run paths from the cache.

    Returns:

    Run paths as a list.

    Return type:
    -

    Dict[str, str]

    +

    List[str]

    +
    +
    Raises:
    +

    AssertionError. – If the selected run paths are not a list, an error is thrown.

    @@ -1016,7 +1084,7 @@
    get_working_directory()[source]
    -

    Returns the current working directory in the cache.

    +

    Return the current working directory in the cache.

    Returns:

    Path of the working directory.

    @@ -1024,19 +1092,26 @@
    Return type:

    Path

    +
    Raises:
    +

    AssertionError – If the working directory is not a string or a Path, an error is thrown.

    +
    remove_run(run_path)[source]
    -

    Removes a run path from the cache. If run path is not in cache, do nothing.

    +

    Remove a run path from the cache.

    +

    If run path is not in cache, do nothing.

    Parameters:

    run_path (str) – Path of a run.

    -
    Return type:
    -

    None

    +
    Raises:
    +

    TypeError – If selected_run_paths or groups is None, an error is thrown.

    +
    +
    Return type:
    +

    None

    @@ -1044,7 +1119,7 @@
    set_working_directory(working_directory)[source]
    -

    Sets the working directoy to the meta cache.

    +

    Set the working directory to the meta cache.

    Parameters:

    working_directory (Union[Path, str]) – Directory to be set.

    @@ -1058,7 +1133,7 @@
    update()[source]
    -

    Updates the internal run and group instances but only if a hash changed.

    +

    Update the internal run and group instances but only if a hash changed.

    Return type:

    None

    @@ -1069,14 +1144,22 @@
    update_groups(groups=None)[source]
    -

    Loads chosen groups. If groups is passed, it is used to instantiate the groups and +

    Load chosen groups.

    +

    If groups is passed, it is used to instantiate the groups and saved to the cache. Otherwise, groups is loaded from the cache.

    -
    Raises:
    -

    NotMergeableError – If runs can not be merged, an error is thrown.

    +
    Parameters:
    +

    groups (Optional[Dict[str, str]], optional) – A dictionary with the groups. +Default is None.

    -
    Return type:
    -

    None

    +
    Raises:
    +
      +
    • NotMergeableError – If runs can not be merged, an error is thrown.

    • +
    • TypeError – If groups is None, an error is thrown.

    • +
    +
    +
    Return type:
    +

    None

    @@ -1084,13 +1167,23 @@
    update_run(run_path, class_hint=None)[source]
    -

    Loads the run from self.runs or creates a new one.

    +

    Load the run from self.runs or create a new one.

    -
    Raises:
    -

    NotValidRunError – If directory can not be transformed into a run, an error is thrown.

    +
    Parameters:
    +
      +
    • run_path (str) – The path of the run.

    • +
    • class_hint (Optional[Type[Run]], optional) – A hint/suggestion of what the Type of the Run is. +Default is None.

    • +
    -
    Return type:
    -

    Optional[AbstractRun]

    +
    Returns:
    +

    The Run added to the cache.

    +
    +
    Return type:
    +

    Optional[AbstractRun]

    +
    +
    Raises:
    +

    NotValidRunError – If directory can not be transformed into a run, an error is thrown.

    @@ -1098,20 +1191,21 @@
    update_runs()[source]
    -

    Loads selected runs and update cache if files changed.

    +

    Load selected runs and update cache if files changed.

    -
    Raises:
    -

    NotValidRunError – If directory can not be transformed into a run, an error is thrown.

    +
    Returns:
    +

    True if all selected runs could be loaded, False otherwise.

    -
    Returns:
    -

    True if all selected runs could be loaded, False otherwise.

    +
    Return type:
    +

    bool

    -
    Return type:
    -

    bool

    +
    Raises:
    +

    NotValidRunError – If directory can not be transformed into a run, an error is thrown.

    +
    diff --git a/development/api/deepcave.runs.html b/development/api/deepcave.runs.html index 685d63bf..db9ad500 100644 --- a/development/api/deepcave.runs.html +++ b/development/api/deepcave.runs.html @@ -711,6 +711,15 @@
  • @@ -898,11 +1051,20 @@

    deepcave.runs

    +

    # AbstractRun

    +

    This module provides utilities to create and handle an abstract run.

    +

    It provides functions to get information of the run, as well as the used objectives.

    +
    +
    ## Classes
      +
    • AbstractRun: Create a new run.

    • +
    +
    +

    Functions

    - +

    check_equality(runs[, meta, configspace, ...])

    Checks the passed runs on equality based on the selected runs and returns the requested attributes.

    Check the passed runs on equality based on the selected runs.

    @@ -910,7 +1072,7 @@ - +

    AbstractRun(name)

    Create a new run.

    @@ -918,16 +1080,59 @@
    class deepcave.runs.AbstractRun(name)[source]

    Bases: ABC

    +

    Create a new run.

    +

    Provide functions to get information of the run, as well as the used objectives.

    +
    +

    Properties

    +
    +
    namestr

    The name of the run.

    +
    +
    pathOptional[Path]

    The path to the run.

    +
    +
    loggerLogger

    The logger for the run.

    +
    +
    meta: Dict[str, Any]

    Contains the run’s meta information.

    +
    +
    configspace: ConfigSpace.ConfigurationSpace

    The configuration space of the run.

    +
    +
    configs: Dict[int, Configuration]

    Contains the configurations.

    +
    +
    origins: Dict[int, str]

    The origin of the configuration.

    +
    +
    models: Dict[int, Optional[Union[str, “torch.nn.Module”]]]

    Contains the modules.

    +
    +
    history: List[Trial]

    The history of Trials.

    +
    +
    trial_keys: Dict[Tuple[str, int], int]

    Contains config_id, budget and the corresponding trial_id.

    +
    +
    models_dirPath

    The directory of the model.

    +
    +
    +
    +
    +empty()[source]
    +

    Check if the run’s history is empty.

    +
    +
    Returns:
    +

    True if run history is empty, False otherwise.

    +
    +
    Return type:
    +

    bool

    +
    +
    +
    +
    encode_config(config, specific=False)[source]
    -

    Encodes a given config (id) to a normalized list. -If a config is passed, no look-up has to be done.

    +

    Encode a given configuration (id) to a normalized list.

    +

    If a configuration is passed, no look-up has to be done.

    Parameters:
      -
    • config (Union[int, Dict[Any, Any], Configuration]) – Either the config id, config as dict, or Configuration itself.

    • -
    • specific (bool, optional) – Use specific encoding for fanova tree, by default False.

    • +
    • config (Union[int, Dict[Any, Any], Configuration]) – Either the configuration id, as configuration as dict, +or a Configuration itself.

    • +
    • specific (bool) – Use specific encoding for fanova tree, by default False.

    Returns:
    @@ -939,17 +1144,35 @@
    +
    +
    +encode_configs(configs)[source]
    +

    Encode a list of configurations into a corresponding numpy array.

    +
    +
    Parameters:
    +

    configs (List[Configuration]) – A list containing the configurations to be encoded.

    +
    +
    Returns:
    +

    A numpy array with the encoded configurations.

    +
    +
    Return type:
    +

    np.ndarray

    +
    +
    +
    +
    get_all_costs(budget=None, statuses=None)[source]
    -

    Get all costs in the history with their config ids. Only configs from the given budget +

    Get all costs in the history with their config ids.

    +

    Only configs from the given budget and statuses are returned.

    Parameters:
      -
    • budget (Optional[Union[int, float]], optional) – Budget to select the costs. If no budget is given, the highest budget is chosen. -By default None.

    • -
    • statuses (Optional[Union[Status, List[Status]]], optional) – Only selected stati are considered. If no status is given, all stati are considered. +

    • budget (Optional[Union[int, float]]) – Budget to select the costs. If no budget is given, the highest budget is chosen. +By default, None.

    • +
    • statuses (Optional[Union[Status, List[Status]]]) – Only selected stati are considered. If no status is given, all stati are considered. By default None.

    @@ -965,16 +1188,42 @@
    get_budget(id, human=False)[source]
    -

    Gets the budget given an id.

    +

    Get the budget given an id.

    +
    +
    Parameters:
    +
      +
    • id (Union[int, str]) – The id of the wanted budget. +If id is a string, it is converted to an integer.

    • +
    • human (bool, optional) – Make the output more readable. +By default False.

    • +
    +
    +
    Returns:
    +

    The budget.

    +
    +
    Return type:
    +

    float, int

    +
    +
    Raises:
    +

    TypeError – If the budget with this id is invalid.

    +
    +
    +
    + +
    +
    +get_budget_ids(include_combined=True)[source]
    +

    Get the corresponding ids for the budgets.

    Parameters:
    -

    id (Union[int, str]) – Id of the wanted budget. If id is a string, it is converted to an integer.

    +

    include_combined (bool, optional) – If False, cut last id of budget ids. +By default True.

    Returns:
    -

    Budget.

    +

    A list of the budget ids.

    Return type:
    -

    float

    +

    List[int]

    @@ -982,16 +1231,55 @@
    get_budgets(human=False, include_combined=True)[source]
    -

    Returns the budgets from the meta data.

    +

    Return the budgets from the meta data.

    +
    +
    Parameters:
    +
      +
    • human (bool, optional) – Make the output more readable. +By default False.

    • +
    • include_combined (bool, optional) – If True, include the combined budget. +By default True.

    • +
    +
    +
    Returns:
    +

    List of budgets. In a readable form, if human is True.

    +
    +
    Return type:
    +

    List[Union[int, float, str]]

    +
    +
    +
    + +
    +
    +get_config(id)[source]
    +

    Retrieve the configuration with the corresponding id.

    Parameters:
    -

    human (bool, optional) – Make the output better readable. By default False.

    +

    id (int) – The id of the configuration.

    Returns:
    -

    List of budgets.

    +

    The corresponding Configuration.

    Return type:
    -

    List[Union[int, float]]

    +

    Configuration

    +
    +
    +
    + +
    +
    +get_config_id(config)[source]
    +

    Get the id of the configuration.

    +
    +
    Parameters:
    +

    config (Union[Configuration, Dict]) – The configuration for which to find the id.

    +
    +
    Returns:
    +

    The configuration id.

    +
    +
    Return type:
    +

    Optional[int]

    @@ -999,11 +1287,13 @@
    get_configs(budget=None)[source]
    -

    Get configurations of the run. Optionally, only configurations which were evaluated +

    Get configurations of the run.

    +

    Optionally, only configurations which were evaluated on the passed budget are considered.

    Parameters:
    -

    budget (Union[int, float], optional) – Considered budget. By default None (all configurations are included).

    +

    budget (Optiona[Union[int, float]]) – Considered budget. +By default, None (all configurations are included).

    Returns:

    Configuration id and the configuration.

    @@ -1017,50 +1307,51 @@
    get_costs(config_id, budget=None)[source]
    -

    Returns the costs of a configuration. In case of multi-objective, multiple costs are +

    Return the costs of a configuration.

    +

    In case of multi-objective, multiple costs are returned.

    Parameters:
    • config_id (int) – Configuration id to get the costs for.

    • -
    • budget (Optional[Union[int, float]], optional) – Budget to get the costs from the configuration id for. By default None. If budget is +

    • budget (Optional[Union[int, float]]) – Budget to get the costs from the configuration id for. By default, None. If budget is None, the highest budget is chosen.

    +
    Returns:
    +

    List of costs from the associated configuration.

    +
    +
    Return type:
    +

    List[float]

    +
    Raises:
    • ValueError – If the configuration id is not found.

    • RuntimeError – If the budget was not evaluated for the passed config id.

    -
    Returns:
    -

    List of costs from the associated configuration.

    -
    -
    Return type:
    -

    List[float]

    -
    get_encoded_data(objectives=None, budget=None, statuses=None, specific=False, include_config_ids=False, include_combined_cost=False)[source]
    -

    Encodes configurations to process them further. After the configurations are encoded, +

    Encode configurations to process them further.

    +

    After the configurations are encoded, they can be used in model prediction.

    Parameters:
      -
    • objectives (Optional[Union[Objective, List[Objective]]], optional) – Which objectives should be considered. If None, all objectives are -considered. By default None.

    • -
    • budget (Optional[List[Status]], optional) – Which budget should be considered. By default None. If None, only the highest budget +

    • objectives (Optional[Union[Objective, List[Objective]]]) – Which objectives should be considered. If None, all objectives are +considered. By default, None.

    • +
    • budget (Optional[List[Status]]) – Which budget should be considered. By default, None. If None, only the highest budget is considered.

    • -
    • statuses (Optional[Union[Status, List[Status]]], optional) – Which statuses should be considered. By default None. If None, all statuses are +

    • statuses (Optional[Union[Status, List[Status]]]) – Which statuses should be considered. By default, None. If None, all statuses are considered.

    • -
    • encode_y (bool, optional) – Whether y should be normalized too. By default False.

    • -
    • specific (bool, optional) – Whether a specific encoding should be used. This encoding is compatible with pyrfr. +

    • specific (bool) – Whether a specific encoding should be used. This encoding is compatible with pyrfr. A wrapper for pyrfr is implemented in deepcave.evaluators.epm. By default False.

    • -
    • include_config_ids (bool, optional) – Whether to include config ids. By default False.

    • +
    • include_config_ids (bool) – Whether to include configuration ids. By default, False.

    • include_combined_cost (bool, optional) – Whether to include combined cost. Note that the combined cost is calculated by the passed objectives only. By default False.

    @@ -1073,7 +1364,7 @@

    pd.DataFrame

    Raises:
    -

    ValueError – If a hyperparameter is not supported.

    +

    ValueError – If a hyperparameter (HP) is not supported.

    @@ -1081,15 +1372,19 @@
    get_highest_budget(config_id=None)[source]
    -

    Returns the highest found budget for a config id. If no config id is specified then +

    Return the highest found budget for a config id.

    +

    If no config id is specified then the highest available budget is returned. Moreover, if no budget is available None is returned.

    -
    Returns:
    -

    The highest budget or None if no budget was specified.

    +
    Parameters:
    +

    config_id (Optional[int]) – The config id for which the highest budget is returned.

    -
    Return type:
    -

    Optional[Union[int, float]]

    +
    Returns:
    +

    The highest budget or None if no budget was specified.

    +
    +
    Return type:
    +

    Optional[Union[int, float]]

    @@ -1097,13 +1392,13 @@
    get_incumbent(objectives=None, budget=None, statuses=None)[source]
    -

    Returns the incumbent with its normalized cost.

    +

    Return the incumbent with its normalized cost.

    Parameters:
      -
    • objectives (Optional[Union[Objective, List[Objective]]], optional) – Considerd objectives. By default None. If None, all objectives are considered.

    • -
    • budget (Optional[Union[int, float]], optional) – Considered budget. By default None. If None, the highest budget is chosen.

    • -
    • statuses (Optional[Union[Status, List[Status]]], optional) – Considered statuses. By default None. If None, all stati are considered.

    • +
    • objectives (Optional[Union[Objective, List[Objective]]]) – Considered objectives. By default, None. If None, all objectives are considered.

    • +
    • budget (Optional[Union[int, float]]) – Considered budget. By default, None. If None, the highest budget is chosen.

    • +
    • statuses (Optional[Union[Status, List[Status]]]) – Considered statuses. By default, None. If None, all stati are considered.

    Returns:
    @@ -1118,19 +1413,70 @@
    +
    +
    +get_meta()[source]
    +

    Get a shallow copy of the meta information.

    +
    +
    Returns:
    +

    A shallow copy of the meta information dictionary.

    +
    +
    Return type:
    +

    Dict[str, Any]

    +
    +
    +
    + +
    +
    +get_model(config_id)[source]
    +

    Get a model associated with the configuration id.

    +
    +
    Parameters:
    +

    config_id (int) – The configuration id.

    +
    +
    Returns:
    +

    A model for the provided configuration id.

    +
    +
    Return type:
    +

    Optional[“torch.nn.Module]

    +
    +
    +
    + +
    +
    +get_num_configs(budget=None)[source]
    +

    Count the number of configurations stored in this run with a specific budget.

    +
    +
    Parameters:
    +

    budget (Optional[Union[int, float]]) – The budget for which to count the configurations. +If not provided, counts all configurations. +Default is None.

    +
    +
    Returns:
    +

    The number of all configurations with a given budget. +If budget is None, counts all configurations.

    +
    +
    Return type:
    +

    int

    +
    +
    +
    +
    get_objective(id)[source]
    -

    Returns the objective based on the id or the name.

    +

    Return the objective based on the id or the name.

    Parameters:

    id (Union[str, int]) – The id or name of the objective.

    Returns:
    -

    The objective object.

    +

    The objective.

    Return type:
    -

    Objective

    +

    Optional[Objective]

    @@ -1138,7 +1484,7 @@
    get_objective_id(objective)[source]
    -

    Returns the id of the objective if it is found.

    +

    Return the id of the objective if it is found.

    Parameters:

    objective (Union[Objective, str]) – The objective or objective name for which the id is returned.

    @@ -1155,14 +1501,81 @@
    +
    +
    +get_objective_ids()[source]
    +

    Get the ids of the objectives.

    +
    +
    Returns:
    +

    A list of the ids of the objectives.

    +
    +
    Return type:
    +

    List[int]

    +
    +
    +
    +
    get_objective_name(objectives=None)[source]
    -

    Get the cost name of given objective names. +

    Get the cost name of given objective names.

    +

    Returns “Combined Cost” if multiple objective names were involved.

    +
    +
    Parameters:
    +

    objectives (Optional[List[Objective]]) – A list of the objectives. +By default, None.

    +
    +
    Returns:
    +

    The name of the objective. Returns “Combined Cost” if multiple objective names were involved.

    +
    +
    Return type:
    +

    str

    +
    +
    +
    + +
    +
    +get_objective_names()[source]
    +

    Get the names of the objectives.

    +
    Returns:
    +

    A list containing the names of the objectives.

    +
    +
    Return type:
    +

    List[str]

    +
    +
    +
    + +
    +
    +get_objectives()[source]
    +

    Get a list of all objectives corresponding to the run.

    +
    +
    Returns:
    +

    A list containing all objectives associated with the run.

    +
    +
    Return type:
    +

    List[Objective]

    +
    +
    +
    + +
    +
    +get_origin(config_id)[source]
    +

    Get the origin, given a config id.

    +
    +
    Parameters:
    +

    config_id (int) – The identificator of the configuration.

    +
    +
    Returns:
    +

    An origin string corresponding to the given configuration id.

    +
    Return type:
    -

    str

    +

    Optional[str]

    @@ -1170,23 +1583,23 @@
    get_status(config_id, budget=None)[source]
    -

    Returns the status of a configuration.

    +

    Return the status of a configuration.

    Parameters:
    • config_id (int) – Configuration id to get the status for.

    • -
    • budget (Optional[Union[int, float]], optional) – Budget to get the status from the configuration id for. By default None. If budget is +

    • budget (Optional[Union[int, float]]) – Budget to get the status from the configuration id for. By default, None. If budget is None, the highest budget is chosen.

    -
    Raises:
    -

    ValueError – If the configuration id is not found.

    +
    Returns:
    +

    Status of the configuration.

    -
    Returns:
    -

    Status of the configuration.

    +
    Return type:
    +

    Status

    -
    Return type:
    -

    Status

    +
    Raises:
    +

    ValueError – If the configuration id is not found.

    @@ -1194,36 +1607,94 @@
    get_trajectory(objective, budget=None)[source]
    -

    Calculates the trajectory of the given objective and budget.

    +

    Calculate the trajectory of the given objective and budget.

    Parameters:
    • objective (Objective) – Objective to calculate the trajectory for.

    • -
    • budget (Optional[Union[int, float]], optional) – Budget to calculate the trajectory for. If no budget is given, then the highest budget +

    • budget (Optional[Union[int, float]]) – Budget to calculate the trajectory for. If no budget is given, then the highest budget is chosen. By default None.

    -
    Return type:
    -

    Tuple[List[float], List[float], List[float], List[int], List[int]]

    +
    Returns:
    +

    +
    timesList[float]

    Times of the trajectory.

    -
    Returns:
    -

      -
    • times (List[float]) – Times of the trajectory.

    • -
    • costs_mean (List[float]) – Costs of the trajectory.

    • -
    • costs_std (List[float]) – Standard deviation of the costs of the trajectory. This is particularly useful for -grouped runs.

    • -
    • ids (List[int]) – The “global” ids of the selected trials.

    • -
    • config_ids (List[int]) – Config ids of the selected trials.

    • -
    +
    costs_meanList[float]

    Costs of the trajectory.

    +
    +
    costs_stdList[float]

    Standard deviation of the costs of the trajectory. This is particularly useful for +grouped runs.

    +
    +
    idsList[int]

    The “global” ids of the selected trials.

    +
    +
    config_idsList[int]

    Config ids of the selected trials.

    +
    +

    +
    Return type:
    +

    Tuple[List[float], List[float], List[float], List[int], List[int]]

    +
    +
    +
    + +
    +
    +get_trial(trial_key)[source]
    +

    Get the trial with the responding key if existing.

    +
    +
    Parameters:
    +

    trial_key (Tuple[int, int]) – The key for the desired trial.

    +
    +
    Returns:
    +

    The trial object.

    +
    +
    Return type:
    +

    Optional[Trial]

    +
    +
    +
    + +
    +
    +static get_trial_key(config_id, budget)[source]
    +

    Get the trial key.

    +

    It is obtained through the assembly of configuration and budget.

    +
    +
    Parameters:
    +
      +
    • config_id (int) – The identificator of the configuration.

    • +
    • budget (Union[int, float, None]) – The budget of the Trial.

    • +
    +
    +
    Returns:
    +

    Tuple representing the trial key, consisting of configuration id and the budget.

    +
    +
    Return type:
    +

    Tuple[int, Union[int, float, None]]

    +
    +
    +
    + +
    +
    +get_trials()[source]
    +

    Get an iterator of all stored trials.

    +
    +
    Returns:
    +

    An iterator over all stored trials.

    +
    +
    Return type:
    +

    Iterator[Trial]

    +
    abstract property hash: str
    -

    Hash of the current run. If hash changes, cache has to be cleared. This ensures that +

    Hash of the current run.

    +

    If hash changes, cache has to be cleared. This ensures that the cache always holds the latest results of the run.

    Returns:
    @@ -1238,7 +1709,8 @@
    abstract property id: str
    -

    Hash of the file. This is used to identify the file. +

    Hash of the file.

    +

    This is used to identify the file. In contrast to hash, this hash should not be changed throughout the run.

    Returns:
    @@ -1250,17 +1722,32 @@
    +
    +
    +property latest_change: float
    +

    Get the latest change.

    +
    +
    Returns:
    +

    The latest change.

    +
    +
    Return type:
    +

    float

    +
    +
    +
    +
    merge_costs(costs, objectives=None)[source]
    -

    Calculates one cost value from multiple costs. -Normalizes the costs first and weight every cost the same. +

    Calculate one cost value from multiple costs.

    +

    Normalizes the costs first and weigh every cost the same. The lower the normalized cost, the better.

    Parameters:
      -
    • costs (List[float]) – The costs, which should be merged. Must be the same length as the original number of objectives.

    • -
    • objectives (Optional[List[Objective]], optional) – The considered objectives to the costs. By default None. +

    • costs (List[float]) – The costs, which should be merged. Must be the same length as the original number of +objectives.

    • +
    • objectives (Optional[List[Objective]]) – The considered objectives to the costs. By default, None. If None, all objectives are considered. The passed objectives can differ from the original number objectives.

    @@ -1271,24 +1758,41 @@
    Return type:

    float

    +
    Raises:
    +

    RuntimeError – If the number of costs is different from the original number of objectives. + If the objective was not found.

    +
    +
    +
    +reset()[source]
    +

    Reset the run to default values / empties.

    +

    Clear the initial data and configurations of the object.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    deepcave.runs.check_equality(runs, meta=False, configspace=True, objectives=True, budgets=True)[source]
    -

    Checks the passed runs on equality based on the selected runs and returns the requested -attributes.

    +

    Check the passed runs on equality based on the selected runs.

    +

    Return the requested attributes.

    Parameters:
    • runs (list[AbstractRun]) – Runs to check for equality.

    • -
    • meta (bool, optional) – Meta-Data excluding objectives and budgets, by default True

    • -
    • configspace (bool, optional) – ConfigSpace, by default True

    • -
    • objectives (bool, optional) – Objectives, by default True

    • -
    • budgets (bool, optional) – Budgets, by default True

    • +
    • meta (bool, optional) – Meta-Data excluding objectives and budgets, by default True.

    • +
    • configspace (bool, optional) – Wheter to include the configuration space, by default True.

    • +
    • objectives (bool, optional) – Wheter to include the objectives, by default True.

    • +
    • budgets (bool, optional) – Whether to include the budgets, by default True.

    Returns:
    @@ -1297,6 +1801,12 @@
    Return type:

    Dict[str, Any]

    +
    Raises:
    +

    NotMergeableError – If the meta data of the runs are not equal. + If the configuration spaces of the runs are not equal. + If the budgets of the runs are not equal. + If the objective of the runs are not equal.

    +
    @@ -1304,31 +1814,31 @@ - + - + - + - + - + - + - + - + - +

    deepcave.runs.converters

    # converters

    deepcave.runs.exceptions

    # Exceptions

    deepcave.runs.group

    # Group

    deepcave.runs.handler

    # Handler

    deepcave.runs.objective

    # Objective

    deepcave.runs.recorder

    # Recorder

    deepcave.runs.run

    # Run

    deepcave.runs.status

    # Status

    deepcave.runs.trial

    # Trial

    diff --git a/development/api/deepcave.runs.objective.html b/development/api/deepcave.runs.objective.html index e0ca6776..4b2f2257 100644 --- a/development/api/deepcave.runs.objective.html +++ b/development/api/deepcave.runs.objective.html @@ -711,6 +711,15 @@
  • @@ -745,11 +790,20 @@

    deepcave.runs.objective

    +

    # Objective

    +

    This module provides utilities to convert and create objectives. +It also provides functions for merging and comparing objectives.

    +
    +
    ## Classes
      +
    • Objective: Convert and create objectives.

    • +
    +
    +

    Classes

    - +

    Objective(name[, lower, upper, optimize])

    Convert, create and merge objectives.

    @@ -757,10 +811,45 @@
    class deepcave.runs.objective.Objective(name, lower=None, upper=None, optimize='lower')[source]

    Bases: object

    +

    Convert, create and merge objectives.

    +
    +

    Properties

    +
    +
    lowerOptional[Union[int, float]]

    The lower bound of the objective.

    +
    +
    upperOptional[Union[int, float]]

    The upper bound of the objective.

    +
    +
    optimizestr

    Define whether to optimize lower or upper.

    +
    +
    lock_lowerbool

    Whether to lock the lower bound.

    +
    +
    lock_upperbool

    Whether to lock the upper bound.

    +
    +
    namestr

    The name of the objective.

    +
    +
    +
    +
    +__eq__(other)[source]
    +

    Compare if two instances are equal based on their attributes.

    +
    +
    Parameters:
    +

    other (Any) – The other instance to compare.

    +
    +
    Returns:
    +

    True if equal, else False.

    +
    +
    Return type:
    +

    bool

    +
    +
    +
    +
    __post_init__()[source]
    -

    Lock the lower bound if lower is not None. +

    Check if bounds should be locked.

    +

    Lock the lower bound if lower is not None. Lock the upper bound if upper is not None.

    Raises:
    @@ -772,6 +861,73 @@
    +
    +
    +static from_json(d)[source]
    +

    Create an objective from a JSON friendly dictionary format.

    +
    +
    Parameters:
    +

    d (Dict[str, Any]) – A dictionary in a JSON friendly format containing the attributes.

    +
    +
    Returns:
    +

    An objective created from the provided data.

    +
    +
    Return type:
    +

    Objective

    +
    +
    +
    + +
    +
    +get_worst_value()[source]
    +

    Get the worst value based on the optimization setting.

    +
    +
    Returns:
    +

    The worst value based on the optimization setting.

    +
    +
    Return type:
    +

    float

    +
    +
    +
    + +
    +
    +merge(other)[source]
    +

    Merge two Objectives over their attributes.

    +
    +
    Parameters:
    +

    other (Any) – The other Objective to merge.

    +
    +
    Raises:
    +
      +
    • NotMergeableError – If parts of the two Objectives are not mergeable.

    • +
    • ValueError – If the lower bound of one Objective is None. + If the upper bound of one Objective is None.

    • +
    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +to_json()[source]
    +

    Convert objectives attributes to a dictionary in a JSON friendly format.

    +
    +
    Returns:
    +

    A dictionary in a JSON friendly format with the objects attributes.

    +
    +
    Return type:
    +

    Dict[str, Any]

    +
    +
    +
    + +
    diff --git a/development/api/deepcave.runs.recorder.html b/development/api/deepcave.runs.recorder.html index 8dfdced5..b70888de 100644 --- a/development/api/deepcave.runs.recorder.html +++ b/development/api/deepcave.runs.recorder.html @@ -696,9 +696,43 @@ @@ -720,14 +754,108 @@

    deepcave.runs.recorder

    +

    # Recorder

    +

    This module provides utilities to record information.

    +
    +
    ## Classes
      +
    • Recorder: Define a Recorder for recording information.

    • +
    +
    +

    Classes

    - - + +

    Recorder(configspace[, objectives, meta, ...])

    Recorder(configspace[, objectives, meta, ...])

    Define a Recorder for recording information.

    +
    +
    +class deepcave.runs.recorder.Recorder(configspace, objectives=None, meta=None, save_path='logs', prefix='run', overwrite=False)[source]
    +

    Bases: object

    +

    Define a Recorder for recording information.

    +
    +

    Properties

    +
    +
    pathPath

    The path to the recorded information.

    +
    +
    last_trial_idtuple[Any, Optional[float]]

    The last id containing the configuration and the budget.

    +
    +
    start_timefloat

    The current time in seconds since the epoch.

    +
    +
    start_timesDict[Any, Any]

    A dictionary containing the start times with their id as key.

    +
    +
    modelsDict[Any, Any|

    The models used with their id as key.

    +
    +
    originsDict[Any, Any]

    The origins with their id as key.

    +
    +
    additionalsDict[Any, Any]

    Additional information with the id as key.

    +
    +
    runDeepCAVERun

    The deepcave run container.

    +
    +
    +
    +
    +end(costs=inf, status=Status.SUCCESS, config=None, budget=inf, additional=None, end_time=None)[source]
    +

    End the recording and add it to the trial history.

    +

    In case of multi-processing, config+budget should be passed. +If it can’t be passed, it can’t be matched correctly.

    +
    +
    Parameters:
    +
      +
    • costs (float, optional) – The costs. +Default is np.inf.

    • +
    • status (Status, optional) – The status. +Default is Status.Success.

    • +
    • config (Union[dict, Configuration], optional) – The configuration. +Default is None.

    • +
    • budget (float, optional) – The budget. +Default is np.inf.

    • +
    • additional (Optional[dict], optional) – Additional information. +Default is None.

    • +
    • end_time (Optional[float], optional) – The end time. +Default is None.

    • +
    +
    +
    Raises:
    +

    AssertionError – If no trial was started yet.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +start(config, budget=None, model=None, origin=None, additional=None, start_time=None)[source]
    +

    Start recording the information.

    +
    +
    Parameters:
    +
      +
    • config (Configuration) – Holds the configuration settings.

    • +
    • budget (Optional[float], optional) – The budget. +Default is None.

    • +
    • model (Optional[Any], optional) – The model used. +Default is None.

    • +
    • origin (Optional[str], optional) – The origin. +Default is None.

    • +
    • additional (Optional[dict], optional) – Additional information. +Default is None.

    • +
    • start_time (Optional[float], optional) – The start time. +Default is None.

    • +
    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +
    diff --git a/development/api/deepcave.runs.run.html b/development/api/deepcave.runs.run.html index 03a95871..c37a7f82 100644 --- a/development/api/deepcave.runs.run.html +++ b/development/api/deepcave.runs.run.html @@ -747,6 +747,33 @@ +
  • + + + + Run.load() + + + +
  • +
  • + + + + Run.path + + + +
  • +
  • + + + + Run.save() + + + +
  • @@ -772,11 +799,19 @@

    deepcave.runs.run

    +

    # Run

    +

    This module provides utilities to create a new run and get its attributes.

    +
    +
    ## Classes
      +
    • Run: Create a new run.

    • +
    +
    +

    Classes

    - +

    Run(name[, configspace, objectives, meta, path])

    Creates a new run.

    Create a new run and get its attributes.

    @@ -784,45 +819,62 @@
    class deepcave.runs.run.Run(name, configspace=None, objectives=None, meta=None, path=None)[source]

    Bases: AbstractRun, ABC

    -

    Creates a new run. -If path is given, runs are loaded from the path.

    -
    -
    Parameters:
    -
      -
    • name (str) – Name of the run.

    • -
    • configspace (ConfigSpace, optional) – Configuration space of the run. Should be None if path is used. By default None.

    • -
    • objectives (Union[Objective, List[Objective]], optional) – Objectives of the run. Should be None if path is used. By default None

    • -
    • meta (Dict[str, Any], optional) – Meta data of the run. Should be None if path is used. By default None.

    • -
    • path (Optional[Union[str, Path]], optional) – If a path is specified, the run is loaded from there. By default None.

    • -
    +

    Create a new run and get its attributes.

    +

    If path is given, runs are loaded from the path.

    +
    +

    Properties

    +
    +
    configspaceConfigurationSpace

    The configuration space of the run.

    -
    Raises:
    -

    RuntimeError – If no configuration space is provided or found.

    +
    pathOptional[Union[str, Path]]

    The path of a run to be loaded.

    +
    +
    metaDict[str, Any]

    Contains serialized objectives and budgets.

    +
    +
    prefixstr

    The prefix for the id.

    +
    +
    meta_fnPath

    The path to the meta data.

    +
    +
    configspace_fnPath

    The path to the configuration space file.

    +
    +
    configs_fnPath

    The path to the configurations file.

    +
    +
    origins_fnPath

    The path to the origins file.

    +
    +
    history_fnPath

    The path to the history file.

    +
    +
    models_dirPath

    The path to the models directory.

    +
    +
    configsDict[int, Configuration]

    Containing the configurations.

    +
    +
    modelsDict[int, Optional[Union[str, “torch.nn.Module”]]]

    Contains the models.

    add(costs, config, budget=inf, start_time=0.0, end_time=0.0, status=Status.SUCCESS, origin=None, model=None, additional=None)[source]
    -

    Adds a trial to the run. -If combination of config and budget already exists, it will be overwritten. +

    Add a trial to the run.

    +

    If combination of config and budget already exists, it will be overwritten. Not successful runs are added with None costs.

    Parameters:
    • costs (Union[List[float], float]) – Costs of the run. In case of multi-objective, a list of costs is expected.

    • config (Union[Dict, Configuration]) – The corresponding configuration.

    • -
    • start_time (float, optional) – Start time. By default 0.0

    • -
    • end_time (float, optional) – End time. By default 0.0

    • -
    • status (Status, optional) – Status of the trial. By default Status.SUCCESS

    • -
    • origin (str, optional) – Origin of the trial. By default None

    • -
    • model (Union[str, &quot;torch.nn.Module&quot;], optional) – Model of the trial. By default None

    • -
    • additional (Optional[Dict], optional) – Additional information of the trial. By default None. +

    • start_time (float, optional) – Start time. By default, 0.0

    • +
    • end_time (float, optional) – End time. By default, 0.0

    • +
    • status (Status, optional) – Status of the trial. By default, Status.SUCCESS

    • +
    • origin (str, optional) – Origin of the trial. By default, None

    • +
    • model (Union[str, "torch.nn.Module"], optional) – Model of the trial. By default, None

    • +
    • additional (Optional[Dict], optional) – Additional information of the trial. By default, None. Following information is used by DeepCAVE: * traceback

    Raises:
    -

    RuntimeError – If number of costs does not match number of objectives.

    +
      +
    • RuntimeError – If number of costs does not match number of objectives.

    • +
    • ValueError – If config id is None.

    • +
    Return type:

    None

    @@ -833,7 +885,7 @@
    exists()[source]
    -

    Checks if the run exists based on the internal path.

    +

    Check if the run exists based on the internal path.

    Returns:

    If run exists.

    @@ -849,8 +901,14 @@ abstract classmethod from_path(path)[source]

    Based on a path, return a new Run object.

    +
    Parameters:
    +

    path (Path) – The path to get the run from.

    +
    +
    Returns:
    +

    The run loaded from the path.

    +
    Return type:
    -

    Run

    +

    “Run”

    @@ -858,11 +916,10 @@
    property id: str
    -

    Hash of the file. This is used to identify the file. -In contrast to hash, this hash should not be changed throughout the run.

    +

    Get a hash as id.

    Returns:
    -

    Hash of the run.

    +

    The hashed id.

    Return type:

    str

    @@ -870,6 +927,57 @@
    +
    +
    +load(path=None)[source]
    +

    Load the run.

    +
    +
    Parameters:
    +

    path (Optional[Union[str, Path]], optional) – The path where to load the run from. +Default is None.

    +
    +
    Raises:
    +

    RuntimeError – If the path is None. + If the trials were not found.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +property path: Path | None
    +

    Return the path of the run if it exists.

    +
    +
    Returns:
    +

    The path of the run.

    +
    +
    Return type:
    +

    Optional[Path]

    +
    +
    +
    + +
    +
    +save(path)[source]
    +

    Save the run and its information.

    +
    +
    Parameters:
    +

    path (Optional[Union[str, Path]]) – The path in which to save the trials.

    +
    +
    Raises:
    +

    RuntimeError – If the path is not specified.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    diff --git a/development/api/deepcave.runs.status.html b/development/api/deepcave.runs.status.html index 9ae597d3..630c6523 100644 --- a/development/api/deepcave.runs.status.html +++ b/development/api/deepcave.runs.status.html @@ -710,6 +710,17 @@ + @@ -734,11 +745,27 @@

    deepcave.runs.status

    +

    # Status

    +

    This module provides the information about the status of a run.

    +

    A utility to convert a string text to a simpler, lower case text format is provided.

    +
    +
    ## Classes
      +
    • Status: Represent the status of a run as an Enum.

    • +
    +
    +
    ## Constants

    SUCCESS: int +TIMEOUT: int +MEMORYOUT: int +CRASHED: int +ABORTED: int +NOT_EVALUATED: int

    +
    +

    Classes

    - +

    Status(value)

    An enumeration.

    Represent the status of a run as an Enum.

    @@ -746,7 +773,29 @@
    class deepcave.runs.status.Status(value)[source]

    Bases: IntEnum

    -

    An enumeration.

    +

    Represent the status of a run as an Enum.

    +

    A utility to convert a string text to a simpler, lower case text format is provided.

    +
    +

    Properties

    +
    +
    namestr

    The status name.

    +
    +
    +
    +
    +to_text()[source]
    +

    Convert name to simpler, lower case text format.

    +
    +
    Returns:
    +

    The converted name in lower case with spaces added

    +
    +
    Return type:
    +

    str

    +
    +
    +
    + +
    diff --git a/development/api/deepcave.runs.trial.html b/development/api/deepcave.runs.trial.html index b8a76758..33884494 100644 --- a/development/api/deepcave.runs.trial.html +++ b/development/api/deepcave.runs.trial.html @@ -710,6 +710,35 @@ + @@ -734,11 +763,20 @@

    deepcave.runs.trial

    +

    # Trial

    +

    This module provides the trial object. +Utilities for handling the trial are provided.

    +
    +
    ## Classes
      +
    • Trial: This class provides the trial object itself and multiple handling utilities.

    • +
    +
    +

    Classes

    - +

    Trial(config_id, budget, costs, start_time, ...)

    Provide the trial object itself and multiple handling utilities.

    @@ -746,6 +784,65 @@
    class deepcave.runs.trial.Trial(config_id, budget, costs, start_time, end_time, status, additional)[source]

    Bases: object

    +

    Provide the trial object itself and multiple handling utilities.

    +
    +

    Properties

    +
    +
    statusStatus

    The status of the trial.

    +
    +
    config_idint

    The identificator of the configuration.

    +
    +
    budgetUnion[int, float]

    The budget for the trial.

    +
    +
    costsList[float]

    A list of the costs of the trial.

    +
    +
    start_timefloat

    The start time of the trial.

    +
    +
    end_timefloat

    The end time of the trial.

    +
    +
    additionalDict[str, Any]

    A dictionary of additional information of the trial.

    +
    +
    +
    +
    +__post_init__()[source]
    +

    Set the status.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +get_key()[source]
    +

    Generate a key based on the configuration id and the budget.

    +
    +
    Returns:
    +

    A Tuple representing a unique key based on the configuration id and the budget.

    +
    +
    Return type:
    +

    Tupel[int, int]

    +
    +
    +
    + +
    +
    +to_json()[source]
    +

    Convert trial object to JSON-compatible representation.

    +
    +
    Returns:
    +

    A JSON-compatible list with the Trials attributes.

    +
    +
    Return type:
    +

    List[Any]

    +
    +
    +
    + +
    diff --git a/development/api/deepcave.utils.cache.html b/development/api/deepcave.utils.cache.html index 1b9c0170..c1487706 100644 --- a/development/api/deepcave.utils.cache.html +++ b/development/api/deepcave.utils.cache.html @@ -799,6 +799,16 @@

    deepcave.utils.cache

    +

    # Cache

    +

    This module provides utilities to handle the cache.

    +

    This includes reading, writing, set and get utilities, as well as clearing the cache. +The cache handles a json file.

    +
    +
    ## Classes
      +
    • Cache: Cache handles a json file.

    • +
    +
    +

    Classes

    @@ -811,15 +821,19 @@
    class deepcave.utils.cache.Cache(filename=None, defaults=None, debug=False, write_file=True)[source]

    Bases: object

    -

    Cache handles a json file. Decided not to use flask_caching -since code is easier to change to our needs.

    +

    Cache handles a json file.

    +

    Decided not to use flask_caching since code is easier to change to our needs.

    clear(write_file=True)[source]
    -

    Clear all cache and reset to defaults

    +

    Clear all cache and reset to defaults.

    -
    Return type:
    -

    None

    +
    Parameters:
    +

    write_file (bool, optional) – Whether to write the constant of the cache into a file. +Default is True.

    +
    +
    Return type:
    +

    None

    @@ -827,10 +841,16 @@
    get(*keys)[source]
    -

    Retrieve value for a specific key

    +

    Retrieve value for a specific key.

    +
    Parameters:
    +

    *keys (str) – The key to retrieve the value from.

    +
    +
    Returns:
    +

    The value of the key.

    +
    Return type:
    -

    Optional[Any]

    +

    Optional[Any]

    @@ -838,10 +858,16 @@
    has(*keys)[source]
    -

    Check whether cache has specific key

    +

    Check whether cache has specific key.

    +
    Parameters:
    +

    *keys (str) – The key to check for.

    +
    +
    Returns:
    +

    Whether cache has specific key.

    +
    Return type:
    -

    bool

    +

    bool

    @@ -849,7 +875,7 @@
    read()[source]
    -

    Reads content from a file and load into cache as dictionary.

    +

    Read content from a file and load into cache as dictionary.

    Return type:

    None

    @@ -860,10 +886,21 @@
    set(*keys, value, write_file=True)[source]
    -

    Set a value from a chain of keys. -E.g. set(“a”, “b”, “c”, value=4) creates following dictionary: +

    Set a value from a chain of keys.

    +

    E.g. set(“a”, “b”, “c”, value=4) creates following dictionary: {“a”: {“b”: {“c”: 4}}}

    +
    Parameters:
    +
      +
    • *keys (str) – The keys to set the value from.

    • +
    • value (Any) – The value to be set.

    • +
    • write_file (bool, optional) – Whether to write the constant of the cache into a file. +Default is True.

    • +
    +
    +
    Raises:
    +

    RuntimeError – If the type of the key is not a string.

    +
    Return type:

    None

    @@ -873,10 +910,17 @@
    set_dict(d, write_file=True)[source]
    -

    Updates cache to a specific value

    +

    Update cache to a specific value.

    -
    Return type:
    -

    None

    +
    Parameters:
    +
      +
    • d (Dict) – The dictionary to be set.

    • +
    • write_file (bool, optional) – Whether to write the constant of the cache into a file. +Default is True.

    • +
    +
    +
    Return type:
    +

    None

    diff --git a/development/api/deepcave.utils.cast.html b/development/api/deepcave.utils.cast.html index 0d4969a9..aefb94c3 100644 --- a/development/api/deepcave.utils.cast.html +++ b/development/api/deepcave.utils.cast.html @@ -696,9 +696,23 @@
    +
    + On this page +
    @@ -720,14 +734,34 @@

    deepcave.utils.cast

    +

    # Cast

    +

    This module provides a utility to convert any value to an int if possible.

    Functions

    - - + +

    optional_int(value)

    optional_int(value)

    Convert a value to an int if possible.

    +
    +
    +deepcave.utils.cast.optional_int(value)[source]
    +

    Convert a value to an int if possible.

    +
    +
    Parameters:
    +

    value (Any) – The value to be turned into an int.

    +
    +
    Returns:
    +

    The converted int value. +If not possible, return None.

    +
    +
    Return type:
    +

    Optional[int]

    +
    +
    +
    +
    diff --git a/development/api/deepcave.utils.compression.html b/development/api/deepcave.utils.compression.html index 3a4c972e..55e26f00 100644 --- a/development/api/deepcave.utils.compression.html +++ b/development/api/deepcave.utils.compression.html @@ -743,6 +743,20 @@

    deepcave.utils.compression

    +

    # Compression

    +

    This module provides utilities for serializing and deserializing a dataframe from/to a string.

    +
    +
    ## Classes
      +
    • Encoder: This class defines a custom JSON Encoder.

    • +
    +
    +
    ## Constants
      +
    • JSON_DENSE_SEPARATORS: Tuple(str, str)

    • +
    • JSON_DEFAULT_SEPARATORS: Tuple(str, str)

    • +
    • TYPE: TypeVar

    • +
    +
    +

    Functions

    @@ -759,8 +773,18 @@ deepcave.utils.compression.deserialize(string, dtype=<class 'pandas.core.frame.DataFrame'>)[source]

    Deserialize a dataframe from a string.

    +
    Parameters:
    +
      +
    • string (str) – The string to be deserialized.

    • +
    • dtype (TYPE, optional) – The type of the object. +Default is pd.DataFrame.

    • +
    +
    +
    Returns:
    +

    The deserialized object.

    +
    Return type:
    -

    TypeVar(TYPE)

    +

    TYPE

    @@ -770,8 +794,14 @@ deepcave.utils.compression.serialize(data)[source]

    Serialize a dataframe to a string.

    +
    Parameters:
    +

    data (Union[Dict, List, pd.DataFrame]) – The dataframe to be serialized.

    +
    +
    Returns:
    +

    The serialized object as a JSON formatted string.

    +
    Return type:
    -

    str

    +

    str

    diff --git a/development/api/deepcave.utils.configs.html b/development/api/deepcave.utils.configs.html index 63b98250..3404b404 100644 --- a/development/api/deepcave.utils.configs.html +++ b/development/api/deepcave.utils.configs.html @@ -734,18 +734,21 @@

    deepcave.utils.configs

    +

    # Configs

    +

    This module provides a utility for parsing the configurations from a filename.

    Functions

    - +

    parse_config([filename])

    Parses the config given the filename.

    Parse the config given the filename.

    deepcave.utils.configs.parse_config(filename=None)[source]
    -

    Parses the config given the filename. Both relative and absolute paths are possible.

    +

    Parse the config given the filename.

    +

    Both relative and absolute paths are possible.

    Parameters:

    filename (Optional[str], optional) – Location of the config. Must be a python file. diff --git a/development/api/deepcave.utils.configspace.html b/development/api/deepcave.utils.configspace.html index 098c84f5..3e892d0a 100644 --- a/development/api/deepcave.utils.configspace.html +++ b/development/api/deepcave.utils.configspace.html @@ -743,24 +743,26 @@

    deepcave.utils.configspace

    +

    # ConfigSpace

    +

    This module samples random as well as border configurations.

    Functions

    - + - +

    sample_border_config(configspace)

    Generates border configurations from the configuration space.

    Generate border configurations from the configuration space.

    sample_random_config(configspace[, d])

    Generates random configurations from the configuration space.

    Generate random configurations from the configuration space.

    deepcave.utils.configspace.sample_border_config(configspace)[source]
    -

    Generates border configurations from the configuration space.

    +

    Generate border configurations from the configuration space.

    Parameters:
    -

    configspace (ConfigurationSpace) – The configspace from which the hyperparameters are drawn from.

    +

    configspace (ConfigurationSpace) – The configuration space from which the hyperparameters are drawn from.

    Yields:

    Iterator[Configuration] – Border configurations.

    @@ -774,14 +776,14 @@
    deepcave.utils.configspace.sample_random_config(configspace, d=None)[source]
    -

    Generates random configurations from the configuration space.

    +

    Generate random configurations from the configuration space.

    Parameters:
    • configspace (ConfigurationSpace) – The configspace from which the hyperparameters are drawn from.

    • d (Optional[int], optional) – The possible hyperparameter values can be reduced by this argument as the range gets -discretized. For example, an integer or float hyperparameter has only four possible values -if d=4. By default None (no discretization is done).

    • +discretized. For example, an integer or float hyperparameter has only four possible +values if d=4. By default, None (no discretization is done).

    Yields:
    diff --git a/development/api/deepcave.utils.dash.html b/development/api/deepcave.utils.dash.html index f587731e..e280b183 100644 --- a/development/api/deepcave.utils.dash.html +++ b/development/api/deepcave.utils.dash.html @@ -702,6 +702,15 @@
    + +
    +
    +deepcave.utils.styled_plotty.get_hovertext_from_config(run, config_id)[source]
    +

    Generate hover text with metrics for a configuration.

    +

    The method gets information about a given configuration, including a link, its objectives, +budget, costs and hyperparameters.

    +
    +
    Parameters:
    +
      +
    • run (AbstractRun) – The run instance

    • +
    • config_id (int) – The id of the configuration

    • +
    +
    +
    Returns:
    +

    The hover text string containing the configuration information.

    +
    +
    Return type:
    +

    str

    @@ -861,16 +929,17 @@
    deepcave.utils.styled_plotty.get_hyperparameter_ticks(hp, additional_values=None, ticks=4, include_nan=True)[source]
    -

    Generates tick data for both tickvals and ticktext. The background is that -you might have encoded data but you don’t want to show all of them. -With this function, only 6 (default) values are shown. This behaviour is +

    Generate tick data for both tickvals and ticktext.

    +

    The background is that +you might have encoded data, but you don’t want to show all of them. +With this function, only 6 (default) values are shown. This behavior is ignored if hp is categorical.

    Parameters:
    • hp (Hyperparameter) – Hyperparameter to generate ticks from.

    • -
    • additional_values (Optional[List], optional) – Additional values, which are forced in addition. By default None.

    • -
    • ticks (int, optional) – Number of ticks, by default 6

    • +
    • additional_values (Optional[List], optional) – Additional values, which are forced in addition. By default, None.

    • +
    • ticks (int, optional) – Number of ticks, by default 4

    • include_nan (bool, optional) – Whether “nan” as tick should be included. By default True.

    @@ -886,17 +955,18 @@
    deepcave.utils.styled_plotty.get_hyperparameter_ticks_from_values(values, labels, forced=None, ticks=6)[source]
    -

    Generates tick data for both values and labels. The background is that -you might have encoded data but you don’t want to show all of them. -With this function, only 6 (default) values are shown. This behaviour is +

    Generate tick data for both values and labels.

    +

    The background is that +you might have encoded data, but you don’t want to show all of them. +With this function, only 6 (default) values are shown. This behavior is ignored if values is a list of strings.

    Parameters:
    • values (List) – List of values.

    • labels (List) – List of labels. Must be the same size as values.

    • -
    • forced (List[bool], optional) – List of booleans. If True, displaying the particular tick is enforced. -Independent from ticks.

    • +
    • forced (Optional[List[bool]], optional) – List of booleans. If True, displaying the particular tick is enforced. +Independent of ticks.

    • ticks (int, optional) – Number of ticks and labels to show. By default 6.

    @@ -906,19 +976,32 @@
    Return type:

    Tuple[List, List]

    +
    Raises:
    +

    RuntimeError – If values contain both strings and non-strings.

    +
    deepcave.utils.styled_plotty.hex_to_rgb(hex_string)[source]
    -

    Converts a hex_string to a tuple of rgb values. -Requires format including #, e.g.: +

    Convert a hex_string to a tuple of rgb values.

    +

    Requires format including #, e.g.: #000000 #ff00ff

    +
    Parameters:
    +

    hex_string (str) – The hex string to be converted.

    +
    +
    Returns:
    +

    A Tuple of the converted RGB values

    +
    Return type:
    -

    Tuple[int, int, int]

    +

    Tuple[int, int, int]

    +
    +
    Raises:
    +

    ValueError – If the hex string is longer than 7. + If there are invalid characters in the hex string.

    @@ -926,7 +1009,8 @@
    deepcave.utils.styled_plotty.prettify_label(label)[source]
    -

    Takes a label and prettifies it. E.g. floats are shortened.

    +

    Take a label and prettifies it.

    +

    E.g. floats are shortened.

    Parameters:

    label (Union[str, float, int]) – Label, which should be prettified.

    @@ -943,12 +1027,13 @@
    deepcave.utils.styled_plotty.save_image(figure, name)[source]
    -

    Saves a plotly figure as an image.

    +

    Save a plotly figure as an image.

    Parameters:
      -
    • fig (go.Figure) – Plotly figure.

    • -
    • name (str) – Name of the image with extension. Will be automatically saved to the cache.

    • +
    • figure (go.Figure) – Plotly figure.

    • +
    • name (str) – Name of the image with extension. +Will be automatically saved to the cache.

    Return type:
    diff --git a/development/api/deepcave.utils.symbolic_regression.html b/development/api/deepcave.utils.symbolic_regression.html index 05832de9..31558bd0 100644 --- a/development/api/deepcave.utils.symbolic_regression.html +++ b/development/api/deepcave.utils.symbolic_regression.html @@ -758,7 +758,7 @@ - + @@ -771,8 +771,7 @@
    deepcave.utils.symbolic_regression.convert_symb(symb, n_decimals=None, hp_names=None)[source]
    -

    Convert a fitted symbolic regression to a simplified and potentially rounded mathematical -expression.

    +

    Convert a fitted symbolic regression to a simplified and rounded mathematical expression.

    Warning: eval is used in this function, thus it should not be used on unsanitized input (see https://docs.sympy.org/latest/modules/core.html?highlight=eval#module-sympy.core.sympify).

    @@ -787,7 +786,7 @@

    Converted mathematical expression.

    Return type:
    -

    SymbolicRegressor

    +

    str

    @@ -798,13 +797,13 @@

    Get a safe exp function with a maximum value of 100000 to avoid overflow.

    Parameters:
    -

    x (float) – The value to calculate the exponential of.

    +

    x (Union[float, np.ndarray]) – The value to calculate the exponential of.

    Returns:

    The safe exponential of x.

    Return type:
    -

    float

    +

    Union[float, np.ndarray]

    diff --git a/development/api/deepcave.utils.url.html b/development/api/deepcave.utils.url.html index e2879331..30bacdf6 100644 --- a/development/api/deepcave.utils.url.html +++ b/development/api/deepcave.utils.url.html @@ -696,9 +696,32 @@
    +
    + On this page +
    @@ -720,27 +743,57 @@

    deepcave.utils.url

    +

    # URL

    +

    This module creates and parses an URL according to its input information.

    Functions

    convert_symb(symb[, n_decimals, hp_names])

    Convert a fitted symbolic regression to a simplified and potentially rounded mathematical expression.

    Convert a fitted symbolic regression to a simplified and rounded mathematical expression.

    exp(x)

    Get a safe exp function with a maximum value of 100000 to avoid overflow.

    - - + + - - + +

    create_url(pathname, inputs)

    -
    rtype:
    -

    str

    -
    -
    -

    create_url(pathname, inputs)

    Create an URL with the given pathname and inputs.

    parse_url(pathname)

    -
    rtype:
    -

    Optional[Dict[str, Any]]

    -
    -
    -

    parse_url(pathname)

    Parse the URL and extract input information if possible.

    +
    +
    +deepcave.utils.url.create_url(pathname, inputs)[source]
    +

    Create an URL with the given pathname and inputs.

    +
    +
    Parameters:
    +
      +
    • pathname (str) – The name of the path for the URL.

    • +
    • inputs (Dict[str, Any]) – A dictionary containing the input parameters for the URL.

    • +
    +
    +
    Returns:
    +

    The URL.

    +
    +
    Return type:
    +

    str

    +
    +
    +
    + +
    +
    +deepcave.utils.url.parse_url(pathname)[source]
    +

    Parse the URL and extract input information if possible.

    +
    +
    Parameters:
    +

    pathname (str) – The name of the URL.

    +
    +
    Returns:
    +

    A dictionary with the extracted inputs if available. +Otherwise return None.

    +
    +
    Return type:
    +

    Optional[Dict[str, Any]]

    +
    +
    +
    +
    diff --git a/development/api/deepcave.utils.util.html b/development/api/deepcave.utils.util.html index 7026b4ac..b630fad2 100644 --- a/development/api/deepcave.utils.util.html +++ b/development/api/deepcave.utils.util.html @@ -696,9 +696,41 @@ @@ -720,35 +752,87 @@

    deepcave.utils.util

    +

    # Util

    +

    This module provides utilities for string generation and shortening. +It also provides a function to get the difference between now and a given timestamp.

    Functions

    - - + + + + + + + + + +

    get_latest_change(st_mtime)

    -
    rtype:
    -

    str

    +

    get_latest_change(st_mtime)

    Get the difference between now and a given timestamp.

    get_random_string(length)

    Get a random string with a specific length.

    short_string(value[, length, mode])

    Shorten the given string.

    +
    +
    +deepcave.utils.util.get_latest_change(st_mtime)[source]
    +

    Get the difference between now and a given timestamp.

    +
    +
    Parameters:
    +

    st_mtime (int) – A timestamp to calculate the difference from.

    +
    +
    Returns:
    +

    A string containing the passed time.

    +
    +
    Return type:
    +

    str

    -

    - -

    get_random_string(length)

    -

    -
    rtype:
    -

    str

    +
    + +
    +
    +deepcave.utils.util.get_random_string(length)[source]
    +

    Get a random string with a specific length.

    +
    +
    Parameters:
    +

    length (int) – The length of the string.

    +
    +
    Returns:
    +

    The random string with the given length.

    +
    +
    Return type:
    +

    str

    +
    +
    Raises:
    +

    ValueError – If the length is smaller 0.

    -

    - -

    short_string(value[, length, mode])

    -

    -
    rtype:
    -

    str

    +
    + +
    +
    +deepcave.utils.util.short_string(value, length=30, *, mode='prefix')[source]
    +

    Shorten the given string.

    +

    Cut either at prefix or at suffix if necessary.

    +
    +
    Parameters:
    +
      +
    • value (Any) – The value or string to shorten.

    • +
    • length (int, optional) – The length of the returned string. +Default is 30.

    • +
    • mode (str, optional) – Define how to shorten the string. +Default is “prefix”.

    • +
    +
    +
    Returns:
    +

    The shortened string.

    +
    +
    Return type:
    +

    str

    +
    +
    Raises:
    +

    ValueError – If the given mode is unknown.

    -

    - - - +
    +
    diff --git a/development/examples/api/importances.html b/development/examples/api/importances.html index a9d93654..1cb95eef 100644 --- a/development/examples/api/importances.html +++ b/development/examples/api/importances.html @@ -747,7 +747,7 @@ budget_ids=budget_ids, method="global", n_hps=3, - n_trees=10 + n_trees=10, ) # Note: Filter variables are not considered. outputs = plugin.generate_outputs(run, inputs) @@ -755,7 +755,7 @@ # Finally, you can load the figure. Here, the filter variables play a role. # Alternatively: Use the matplotlib output (`load_mpl_outputs`) if available. figure = plugin.load_outputs(run, inputs, outputs) # plotly.go figure - figure.write_image("examples/api/importances.png", scale=2.) + figure.write_image("examples/api/importances.png", scale=2.0) # figure.show() diff --git a/development/examples/api/parallel_coordinates.html b/development/examples/api/parallel_coordinates.html index 9ca83768..560c91c2 100644 --- a/development/examples/api/parallel_coordinates.html +++ b/development/examples/api/parallel_coordinates.html @@ -755,7 +755,7 @@ # Finally, you can load the figure. Here, the filter variables play a role. # Alternatively: Use the matplotlib output (`load_mpl_outputs`) if available. figure = plugin.load_outputs(run, inputs, outputs) # plotly.go figure - figure.write_image("examples/api/parallel_coordinates.png", scale=2.) + figure.write_image("examples/api/parallel_coordinates.png", scale=2.0) # figure.show() diff --git a/development/examples/api/pdp.html b/development/examples/api/pdp.html index 82be54ff..fe4328fa 100644 --- a/development/examples/api/pdp.html +++ b/development/examples/api/pdp.html @@ -755,7 +755,7 @@ # Alternatively: Use the matplotlib output (`load_mpl_outputs`) if available. figure = plugin.load_outputs(run, inputs, outputs) # plotly.go figure figure.write_image("examples/api/pdp.png") - #figure.show() + # figure.show()

    _

    @@ -746,10 +748,18 @@

    _

    @@ -758,13 +768,15 @@

    A

    @@ -778,9 +790,9 @@

    B

    @@ -791,7 +803,13 @@

    C

  • Cache (class in deepcave.utils.cache)
  • calculate() (deepcave.evaluators.fanova.fANOVA method) + +
  • check_equality() (in module deepcave.runs)
  • check_run_compatibility() (deepcave.plugins.Plugin static method) @@ -823,6 +841,10 @@

    C

  • convert_symb() (in module deepcave.utils.symbolic_regression)
  • CostOverTime (class in deepcave.plugins.objective.cost_over_time) +
  • +
  • create_table() (in module deepcave.utils.layout) +
  • +
  • create_url() (in module deepcave.utils.url)
  • @@ -1054,6 +1076,8 @@

    D

  • module
  • + +
    • deepcave.runs.converters.deepcave @@ -1061,8 +1085,6 @@

      D

    • module
    - -
    • deepcave.runs.converters.smac3v1 @@ -1274,8 +1296,6 @@

      D

  • DeepCAVERun (class in deepcave.runs.converters.deepcave) -
  • -
  • description (deepcave.plugins.Plugin attribute)
  • deserialize() (in module deepcave.utils.compression)
  • @@ -1287,10 +1307,16 @@

    D

    E

      -
    • help (deepcave.plugins.Plugin attribute) +
    • help_button() (in module deepcave.utils.layout)
    • hex_to_rgb() (in module deepcave.utils.styled_plotty)
    • @@ -1521,13 +1643,9 @@

      H

      I

        -
      • icon (deepcave.plugins.Plugin attribute) -
      • -
      • id (deepcave.plugins.Plugin attribute) +
      • id (deepcave.runs.AbstractRun property)
          -
        • (deepcave.runs.AbstractRun property) -
        • (deepcave.runs.group.Group property)
        • (deepcave.runs.run.Run property) @@ -1543,7 +1661,25 @@

          I

          L

        • load_run_inputs() (deepcave.plugins.Plugin static method) +
        • +
        • LPI (class in deepcave.evaluators.lpi)
        • @@ -1629,6 +1767,10 @@

          L

          M

            +
          • make_dirs() (in module deepcave.utils.files) +
          • +
          • merge() (deepcave.runs.objective.Objective method) +
          • merge_costs() (deepcave.runs.AbstractRun method)
          • @@ -1768,9 +1910,9 @@

            M

            N

            @@ -1805,8 +1949,12 @@

            P

          • ParetoFront (class in deepcave.plugins.objective.pareto_front)
          • parse_config() (in module deepcave.utils.configs) +
          • +
          • parse_url() (in module deepcave.utils.url)
          • PartialDependencies (class in deepcave.plugins.hyperparameter.pdp) +
          • +
          • path (deepcave.runs.run.Run property)
          • Plugin (class in deepcave.plugins)
          • @@ -1819,11 +1967,11 @@

            P

          • predict_marginalized() (deepcave.evaluators.epm.random_forest.RandomForest method) -
          • -
          • prettify_label() (in module deepcave.utils.styled_plotty)
            • @@ -1792,6 +1934,8 @@

              O

              +
            • short_string() (in module deepcave.utils.util) +
            • SidebarLayout (class in deepcave.layouts.sidebar)
            • SMAC @@ -1919,10 +2087,14 @@

              S

            • SMAC3v1Run (class in deepcave.runs.converters.smac3v1)
            • SMAC3v2Run (class in deepcave.runs.converters.smac3v2) +
            • +
            • start() (deepcave.runs.recorder.Recorder method)
            • StaticPlugin (class in deepcave.plugins.static)
            • Status (class in deepcave.runs.status) +
            • +
            • string_to_hash() (in module deepcave.utils.hash)
            • StyledPlot (class in deepcave.utils.styled_plot)
            • @@ -1934,10 +2106,18 @@

              S

              T

              @@ -1949,13 +2129,15 @@

              U

            • update() (deepcave.runs.handler.RunHandler method)
            • -
            • update_dict() (in module deepcave.utils.data_structures) -
            • +

              X

              + + +
              + +

              Y

              + + +
              + diff --git a/development/objects.inv b/development/objects.inv index b75e31f816c33f71f427dc2338eeb19e330fae71..50698a2ee34886bf70d83f808e57c3ebaeb22fac 100644 GIT binary patch delta 5837 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 X)~}+4UGO(U(m_H|JLdlbC{IRha8){k delta 5168 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 diff --git a/development/searchindex.js b/development/searchindex.js index f18422af..e840cfce 100644 --- a/development/searchindex.js +++ b/development/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["api", "api/deepcave.evaluators", "api/deepcave.evaluators.epm", "api/deepcave.evaluators.epm.fanova_forest", "api/deepcave.evaluators.epm.random_forest", "api/deepcave.evaluators.epm.random_forest_surrogate", "api/deepcave.evaluators.epm.utils", "api/deepcave.evaluators.fanova", "api/deepcave.evaluators.footprint", "api/deepcave.evaluators.lpi", "api/deepcave.layouts", "api/deepcave.layouts.not_found", "api/deepcave.layouts.sidebar", "api/deepcave.plugins", "api/deepcave.plugins.budget", "api/deepcave.plugins.dynamic", "api/deepcave.plugins.hyperparameter", "api/deepcave.plugins.hyperparameter.importances", "api/deepcave.plugins.hyperparameter.pdp", "api/deepcave.plugins.hyperparameter.symbolic_explanations", "api/deepcave.plugins.objective", "api/deepcave.plugins.objective.configuration_cube", "api/deepcave.plugins.objective.cost_over_time", "api/deepcave.plugins.objective.parallel_coordinates", "api/deepcave.plugins.objective.pareto_front", "api/deepcave.plugins.static", "api/deepcave.plugins.summary", "api/deepcave.plugins.summary.configurations", "api/deepcave.plugins.summary.footprint", "api/deepcave.plugins.summary.overview", "api/deepcave.runs", "api/deepcave.runs.converters", "api/deepcave.runs.converters.bohb", "api/deepcave.runs.converters.deepcave", "api/deepcave.runs.converters.smac3v1", "api/deepcave.runs.converters.smac3v2", "api/deepcave.runs.exceptions", "api/deepcave.runs.group", "api/deepcave.runs.handler", "api/deepcave.runs.objective", "api/deepcave.runs.recorder", "api/deepcave.runs.run", "api/deepcave.runs.status", "api/deepcave.runs.trial", "api/deepcave.utils", "api/deepcave.utils.cache", "api/deepcave.utils.cast", "api/deepcave.utils.compression", "api/deepcave.utils.configs", "api/deepcave.utils.configspace", "api/deepcave.utils.dash", "api/deepcave.utils.data_structures", "api/deepcave.utils.docs", "api/deepcave.utils.files", "api/deepcave.utils.hash", "api/deepcave.utils.layout", "api/deepcave.utils.logs", "api/deepcave.utils.notification", "api/deepcave.utils.run_caches", "api/deepcave.utils.styled_plot", "api/deepcave.utils.styled_plotty", "api/deepcave.utils.symbolic_regression", "api/deepcave.utils.url", "api/deepcave.utils.util", "converters", "examples/api/importances", "examples/api/index", "examples/api/parallel_coordinates", "examples/api/pdp", "examples/api/sg_execution_times", "examples/index", "examples/record/digits_sklearn", "examples/record/index", "examples/record/minimal", "examples/record/mnist_pytorch", "examples/record/sg_execution_times", "examples/sg_execution_times", "faq", "getting_started", "glossary", "index", "installation", "plugins/budget_correlation", "plugins/configuration_cube", "plugins/configuration_footprint", "plugins/configurations", "plugins/cost_over_time", "plugins/importances", "plugins/index", "plugins/overview", "plugins/parallel_coordinates", "plugins/pareto_front", "plugins/partial_dependencies", "plugins/symbolic_explanations", "redis", "sg_execution_times"], "filenames": ["api.rst", "api/deepcave.evaluators.rst", "api/deepcave.evaluators.epm.rst", "api/deepcave.evaluators.epm.fanova_forest.rst", "api/deepcave.evaluators.epm.random_forest.rst", "api/deepcave.evaluators.epm.random_forest_surrogate.rst", "api/deepcave.evaluators.epm.utils.rst", "api/deepcave.evaluators.fanova.rst", "api/deepcave.evaluators.footprint.rst", "api/deepcave.evaluators.lpi.rst", "api/deepcave.layouts.rst", "api/deepcave.layouts.not_found.rst", "api/deepcave.layouts.sidebar.rst", "api/deepcave.plugins.rst", "api/deepcave.plugins.budget.rst", "api/deepcave.plugins.dynamic.rst", "api/deepcave.plugins.hyperparameter.rst", "api/deepcave.plugins.hyperparameter.importances.rst", "api/deepcave.plugins.hyperparameter.pdp.rst", "api/deepcave.plugins.hyperparameter.symbolic_explanations.rst", "api/deepcave.plugins.objective.rst", "api/deepcave.plugins.objective.configuration_cube.rst", "api/deepcave.plugins.objective.cost_over_time.rst", "api/deepcave.plugins.objective.parallel_coordinates.rst", "api/deepcave.plugins.objective.pareto_front.rst", "api/deepcave.plugins.static.rst", "api/deepcave.plugins.summary.rst", "api/deepcave.plugins.summary.configurations.rst", "api/deepcave.plugins.summary.footprint.rst", "api/deepcave.plugins.summary.overview.rst", "api/deepcave.runs.rst", "api/deepcave.runs.converters.rst", "api/deepcave.runs.converters.bohb.rst", "api/deepcave.runs.converters.deepcave.rst", "api/deepcave.runs.converters.smac3v1.rst", "api/deepcave.runs.converters.smac3v2.rst", "api/deepcave.runs.exceptions.rst", "api/deepcave.runs.group.rst", "api/deepcave.runs.handler.rst", "api/deepcave.runs.objective.rst", "api/deepcave.runs.recorder.rst", "api/deepcave.runs.run.rst", "api/deepcave.runs.status.rst", "api/deepcave.runs.trial.rst", "api/deepcave.utils.rst", "api/deepcave.utils.cache.rst", "api/deepcave.utils.cast.rst", "api/deepcave.utils.compression.rst", "api/deepcave.utils.configs.rst", "api/deepcave.utils.configspace.rst", "api/deepcave.utils.dash.rst", "api/deepcave.utils.data_structures.rst", "api/deepcave.utils.docs.rst", "api/deepcave.utils.files.rst", "api/deepcave.utils.hash.rst", "api/deepcave.utils.layout.rst", "api/deepcave.utils.logs.rst", "api/deepcave.utils.notification.rst", "api/deepcave.utils.run_caches.rst", "api/deepcave.utils.styled_plot.rst", "api/deepcave.utils.styled_plotty.rst", "api/deepcave.utils.symbolic_regression.rst", "api/deepcave.utils.url.rst", "api/deepcave.utils.util.rst", "converters.rst", "examples/api/importances.rst", "examples/api/index.rst", "examples/api/parallel_coordinates.rst", "examples/api/pdp.rst", "examples/api/sg_execution_times.rst", "examples/index.rst", "examples/record/digits_sklearn.rst", "examples/record/index.rst", "examples/record/minimal.rst", "examples/record/mnist_pytorch.rst", "examples/record/sg_execution_times.rst", "examples/sg_execution_times.rst", "faq.rst", "getting_started.rst", "glossary.rst", "index.rst", "installation.rst", "plugins/budget_correlation.rst", "plugins/configuration_cube.rst", "plugins/configuration_footprint.rst", "plugins/configurations.rst", "plugins/cost_over_time.rst", "plugins/importances.rst", "plugins/index.rst", "plugins/overview.rst", "plugins/parallel_coordinates.rst", "plugins/pareto_front.rst", "plugins/partial_dependencies.rst", "plugins/symbolic_explanations.rst", "redis.rst", "sg_execution_times.rst"], "titles": ["API References", "deepcave.evaluators", "deepcave.evaluators.epm", "deepcave.evaluators.epm.fanova_forest", "deepcave.evaluators.epm.random_forest", "deepcave.evaluators.epm.random_forest_surrogate", "deepcave.evaluators.epm.utils", "deepcave.evaluators.fanova", "deepcave.evaluators.footprint", "deepcave.evaluators.lpi", "deepcave.layouts", "deepcave.layouts.not_found", "deepcave.layouts.sidebar", "deepcave.plugins", "deepcave.plugins.budget", "deepcave.plugins.dynamic", "deepcave.plugins.hyperparameter", "deepcave.plugins.hyperparameter.importances", "deepcave.plugins.hyperparameter.pdp", "deepcave.plugins.hyperparameter.symbolic_explanations", "deepcave.plugins.objective", "deepcave.plugins.objective.configuration_cube", "deepcave.plugins.objective.cost_over_time", "deepcave.plugins.objective.parallel_coordinates", "deepcave.plugins.objective.pareto_front", "deepcave.plugins.static", "deepcave.plugins.summary", "deepcave.plugins.summary.configurations", "deepcave.plugins.summary.footprint", "deepcave.plugins.summary.overview", "deepcave.runs", "deepcave.runs.converters", "deepcave.runs.converters.bohb", "deepcave.runs.converters.deepcave", "deepcave.runs.converters.smac3v1", "deepcave.runs.converters.smac3v2", "deepcave.runs.exceptions", "deepcave.runs.group", "deepcave.runs.handler", "deepcave.runs.objective", "deepcave.runs.recorder", "deepcave.runs.run", "deepcave.runs.status", "deepcave.runs.trial", "deepcave.utils", "deepcave.utils.cache", "deepcave.utils.cast", "deepcave.utils.compression", "deepcave.utils.configs", "deepcave.utils.configspace", "deepcave.utils.dash", "deepcave.utils.data_structures", "deepcave.utils.docs", "deepcave.utils.files", "deepcave.utils.hash", "deepcave.utils.layout", "deepcave.utils.logs", "deepcave.utils.notification", "deepcave.utils.run_caches", "deepcave.utils.styled_plot", "deepcave.utils.styled_plotty", "deepcave.utils.symbolic_regression", "deepcave.utils.url", "deepcave.utils.util", "Converters", "Importances", "API", "Parallel Coordinates", "Partial Dependencies", "Computation times", "Examples", "Multi-Layer Perceptron via Sklearn", "Record", "Record Minimal Run", "Multi-Layer Perceptron via PyTorch", "Computation times", "Computation times", "Frequently Asked Questions", "Getting Started", "Glossary", "Home", "Installation", "Budget Correlation", "Configuration Cube", "Configuration Footprint", "Configurations", "Cost Over Time", "Importances", "Plugins", "Overview", "Parallel Coordinates", "Pareto Front", "Partial Dependencies", "Symbolic Explanations", "Install Redis Server", "Computation times"], "terms": {"modul": [1, 2, 10, 13, 14, 16, 19, 20, 26, 30, 31, 41, 44, 61], "class": [3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 30, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 43, 45, 47, 48, 57, 58, 59, 64, 70, 72, 74, 78], "fanovaforest": 3, "configspac": [3, 4, 5, 7, 30, 32, 33, 34, 35, 41, 64, 65, 67, 71, 73, 74], "n_tree": [3, 4, 7, 65], "10": [3, 60, 65, 71, 74, 80, 90], "ratio_featur": [3, 4], "1": [3, 4, 7, 9, 60, 67, 68, 71, 73, 74, 78, 82], "0": [3, 4, 7, 9, 41, 64, 65, 67, 68, 69, 71, 73, 74, 75, 76, 82, 95], "min_samples_split": [3, 4], "min_samples_leaf": [3, 4], "max_depth": [3, 4], "64": [3, 74], "max_nod": [3, 4], "1048576": [3, 4], "eps_pur": [3, 4], "1e": [3, 4, 74], "08": [3, 4], "bootstrap": [3, 4], "true": [3, 4, 7, 13, 30, 38, 45, 58, 60, 67, 68, 71, 74, 81, 82, 84], "instance_featur": [3, 4, 6], "none": [3, 4, 5, 6, 7, 13, 15, 17, 18, 19, 21, 22, 23, 25, 27, 28, 30, 32, 33, 34, 35, 37, 38, 39, 41, 45, 48, 49, 51, 55, 58, 60, 61, 71, 73, 74], "pca_compon": [3, 4], "2": [3, 4, 65, 67, 74, 81, 82, 83, 94], "cutoff": 3, "inf": [3, 41], "seed": [3, 4, 5, 7, 71, 73, 74], "sourc": [3, 5, 6, 7, 10, 11, 12, 13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39, 41, 42, 43, 45, 47, 48, 49, 50, 51, 55, 58, 59, 60, 61, 65, 67, 68, 70, 71, 73, 74, 88], "base": [3, 4, 5, 7, 10, 11, 12, 13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39, 41, 42, 43, 45, 58, 59, 86, 89], "randomforest": [3, 4], "A": [3, 4, 19, 30, 76, 78, 79, 80, 86, 91], "fanova": [3, 30, 87, 90], "forest": [3, 4, 5, 7], "wrapper": [3, 4, 30], "pyrfr": [3, 4, 30, 87], "compute_margin": 3, "hp_id": 3, "depth": [3, 7], "return": [3, 4, 5, 6, 7, 10, 11, 12, 13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 30, 32, 33, 34, 35, 37, 38, 39, 41, 45, 47, 48, 49, 51, 55, 58, 60, 61, 64, 71, 74], "margin": [3, 4, 7], "select": [3, 7, 13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 30, 37, 38, 58, 64, 78, 80, 82, 83, 85, 86, 89, 90, 91], "paramet": [3, 4, 5, 7, 13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 30, 37, 38, 41, 48, 49, 51, 58, 60, 61, 74, 79], "list": [3, 6, 7, 10, 11, 12, 13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 30, 37, 38, 41, 55, 60, 61, 82, 85], "int": [3, 6, 7, 13, 19, 27, 30, 37, 49, 60, 61, 74], "contain": [3, 30, 48], "indic": [3, 84, 89, 90], "start": [3, 13, 41, 71, 73, 74, 77, 81, 88], "16": [4, 7, 74], "8333333333333334": 4, "3": [4, 65, 67, 69, 74, 75, 81, 83], "log_i": 4, "fals": [4, 13, 30, 38, 45, 55, 67, 68, 74], "object": [4, 7, 13, 19, 30, 32, 33, 34, 35, 37, 38, 41, 43, 45, 58, 59, 64, 67, 71, 73, 74, 79, 82, 83, 84, 86, 88, 90, 91, 92, 93], "random": [4, 5, 7, 9, 49, 73, 74], "thi": [4, 13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 30, 32, 33, 34, 35, 37, 41, 49, 58, 60, 61, 64, 65, 66, 67, 68, 70, 71, 73, 74, 78, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 94], "i": [4, 7, 13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 30, 36, 37, 38, 39, 41, 45, 48, 49, 58, 59, 60, 61, 64, 74, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94], "handi": [4, 89], "becaus": [4, 13, 58, 85], "we": [4, 59, 74, 81, 82, 84, 87, 88, 89, 90], "onli": [4, 7, 13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 30, 38, 49, 58, 60, 81, 83, 85, 90], "need": [4, 7, 13, 22, 24, 45, 58, 64, 81, 82, 84, 86, 88], "pass": [4, 7, 13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 30, 38, 90], "have": [4, 13, 17, 18, 19, 21, 23, 27, 28, 60, 64, 66, 70, 72, 77, 78, 80, 81, 82, 83, 84, 85, 86, 88, 89, 94], "work": [4, 19, 38, 64, 80, 81, 88, 94], "version": 4, "without": 4, "specifi": [4, 7, 13, 30, 41, 83, 86, 90], "e": [4, 13, 22, 24, 45, 60, 64, 77, 80, 85, 93], "g": [4, 13, 22, 24, 45, 60, 64, 77, 80, 85], "type": [4, 5, 6, 7, 10, 11, 12, 13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 30, 32, 33, 34, 35, 37, 38, 39, 41, 45, 47, 48, 49, 51, 55, 58, 60, 61, 74, 84], "bound": [4, 6, 39, 84, 89], "also": [4, 13, 22, 24, 38, 78, 80, 85, 86, 88, 89], "support": [4, 30, 64, 80, 86], "instanc": [4, 6, 38], "predict": [4, 5, 30], "x": [4, 5, 9, 60, 61, 71, 74, 84, 86, 89, 90], "mean": [4, 5, 7, 82, 86], "varianc": [4, 7], "given": [4, 30, 37, 41, 48, 58, 61, 83, 84, 91], "np": [4, 73, 74], "ndarrai": [4, 5], "n_sampl": 4, "n_featur": 4, "config": [4, 13, 15, 25, 30, 37, 38, 41, 58, 64, 71, 73, 74, 77, 78, 88, 89], "featur": [4, 6, 13, 86, 90], "train": [4, 7, 19, 74, 82, 88], "sampl": [4, 5, 84], "tupl": [4, 5, 6, 7, 30, 60], "option": [4, 7, 13, 17, 18, 21, 23, 27, 28, 30, 37, 38, 41, 45, 48, 49, 60, 61, 78, 84, 86], "n_object": 4, "var": [4, 7], "standard": [4, 30, 37, 86], "deviat": [4, 30, 37, 86], "predict_margin": 4, "over": [4, 83, 84, 85, 88, 89, 91], "all": [4, 7, 13, 15, 17, 18, 21, 22, 23, 24, 25, 27, 28, 29, 30, 38, 45, 58, 60, 70, 82, 83, 84, 86, 90, 95], "marginalis": 4, "set": [4, 13, 17, 18, 21, 22, 23, 24, 27, 28, 29, 38, 45, 58, 59, 61, 77], "configur": [4, 30, 41, 48, 49, 78, 79, 82, 86, 90, 91], "shape": [4, 5], "y": [4, 30, 60, 71, 74, 86, 89], "transform": [4, 38, 74], "pca": 4, "appli": [4, 87, 93], "afterward": 4, "_train": 4, "call": [4, 10, 11, 12, 13, 17, 18, 19, 21, 22, 23, 24, 27, 28], "input": [4, 5, 13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 58, 61, 64, 65, 67, 68, 88], "data": [4, 5, 7, 13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 30, 38, 41, 47, 58, 60, 64, 71, 74, 78, 80, 88, 89, 93], "point": [4, 82, 83, 84, 88], "target": [4, 71], "valu": [4, 7, 13, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 30, 38, 42, 45, 49, 55, 58, 60, 61, 73, 77, 82, 83, 84, 85, 86, 89, 90, 93], "must": [4, 13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 30, 48, 58, 60, 78], "match": [4, 41], "number": [4, 19, 30, 41, 60, 61, 78, 82, 83, 86, 89, 90], "name": [4, 7, 13, 30, 32, 33, 34, 35, 37, 38, 39, 41, 48, 59, 60, 61, 71, 73, 74, 78, 89, 91], "constructor": 4, "interv": [4, 9], "randomforestsurrog": 5, "surrogatemodel": 5, "surrog": 5, "pypdp": 5, "packag": [5, 81], "calcul": [5, 7, 13, 25, 30, 37, 58, 61, 77, 87, 88, 90], "sigma": 5, "nxk": 5, "n": [5, 76, 81], "k": 5, "std": 5, "function": [6, 10, 11, 12, 13, 19, 22, 24, 30, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 60, 61, 62, 63, 74], "get_typ": 6, "config_spac": 6, "hyperparamet": [6, 7, 30, 49, 60, 65, 68, 71, 73, 74, 79, 80, 83, 84, 85, 87, 88, 90, 92, 93], "float": [6, 7, 30, 37, 41, 49, 60, 61], "run": [7, 13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 58, 61, 64, 65, 67, 68, 70, 72, 74, 75, 78, 80, 81, 82, 84, 85, 86, 88, 89, 91, 94, 95], "provid": [7, 13, 17, 18, 19, 21, 23, 27, 28, 41, 61, 64, 80, 82, 84, 85, 88, 89, 90, 93], "midpoint": 7, "size": [7, 60, 73], "from": [7, 13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 30, 38, 41, 45, 47, 48, 49, 58, 59, 60, 64, 65, 67, 68, 69, 71, 73, 74, 75, 76, 78, 80, 81, 84, 85, 89, 90, 95], "": [7, 58, 74, 77, 80, 84, 85, 88, 89], "split": [7, 89], "order": [7, 83, 90], "get": [7, 13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 30, 45, 49, 58, 61, 66, 70, 71, 72, 81, 84, 89, 94], "budget": [7, 13, 22, 24, 30, 37, 41, 43, 64, 71, 73, 74, 79, 80, 83, 84, 85, 87, 88, 89, 90], "respect": [7, 83, 85, 92, 93], "encod": [7, 30, 60], "right": [7, 38, 64, 90, 91], "now": [7, 74, 81, 84, 94], "us": [7, 13, 15, 19, 22, 24, 25, 30, 37, 38, 41, 45, 48, 55, 58, 59, 60, 61, 64, 65, 66, 67, 68, 70, 71, 72, 73, 74, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 88, 89], "It": [7, 13, 77, 84, 88], "can": [7, 13, 22, 24, 30, 38, 49, 64, 65, 66, 67, 68, 70, 71, 72, 73, 77, 78, 80, 81, 82, 83, 84, 85, 86, 88, 89, 90, 91], "further": [7, 30, 78, 82, 89, 90], "union": [7, 10, 12, 13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 30, 37, 38, 41, 60, 61], "considerd": [7, 30], "By": [7, 13, 30, 37, 41, 48, 49, 60, 90], "default": [7, 13, 17, 18, 21, 23, 27, 28, 30, 37, 38, 41, 45, 48, 49, 59, 60, 89, 90], "If": [7, 13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 30, 32, 33, 34, 35, 37, 38, 39, 41, 48, 55, 58, 59, 60, 61, 66, 70, 80, 81, 82, 83, 86, 88, 89, 91, 94], "ar": [7, 13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 30, 36, 38, 41, 48, 49, 55, 58, 60, 64, 65, 67, 68, 74, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "consid": [7, 30, 65, 67, 68, 81, 82, 89, 90, 91, 94], "highest": [7, 30, 37, 82, 83, 89, 90], "chosen": [7, 30, 37, 38, 83, 91], "how": [7, 65, 66, 67, 68, 70, 71, 72, 73, 74, 82, 83, 84, 85, 86, 87, 89, 91, 92, 93, 94], "mani": [7, 74, 80, 83, 86, 88, 89, 90], "tree": [7, 30, 88, 90], "should": [7, 13, 27, 30, 37, 38, 41, 58, 60, 61, 78, 79, 82, 88, 91], "get_import": 7, "hp_name": [7, 61], "sort": 7, "import": [7, 13, 66, 67, 68, 69, 70, 71, 73, 74, 82, 84, 85, 88, 89, 90, 91, 95], "score": [7, 71, 82, 83, 84, 90], "higher": [7, 77, 82], "than": [7, 19, 86, 91], "might": [7, 60, 77, 82, 85, 88], "take": [7, 60, 86, 88], "much": [7, 82, 84, 86, 87, 88], "longer": [7, 82, 88], "str": [7, 13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 30, 32, 33, 34, 35, 37, 38, 41, 47, 48, 51, 55, 58, 60, 61], "often": [7, 85, 89], "dimens": 7, "combin": [7, 30, 41, 78, 79, 80, 83, 85, 86, 90], "bool": [7, 13, 30, 38, 41, 45, 58, 60], "whether": [7, 13, 30, 45, 60, 82, 86, 89], "dictionari": [7, 13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 30, 45, 51], "corresbond": 7, "The": [7, 13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 30, 37, 38, 41, 48, 49, 58, 60, 61, 64, 74, 78, 79, 80, 81, 82, 83, 84, 85, 86, 88, 89, 90, 93], "form": 7, "individu": [7, 91], "total": [7, 69, 75, 76, 95], "note": [7, 30, 65, 67, 68, 84], "same": [7, 13, 17, 18, 21, 22, 23, 24, 27, 28, 29, 30, 60, 65, 67, 68, 82, 83, 84, 88, 90], "dict": [7, 13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 30, 38, 41, 51, 55, 58, 74], "rais": [7, 13, 15, 19, 22, 24, 25, 30, 36, 38, 39, 41, 48, 74], "runtimeerror": [7, 13, 15, 19, 25, 30, 38, 39, 41, 48, 74], "zero": 7, "abc": [10, 13, 15, 25, 30, 41], "abstract": [10, 30, 41], "__call__": [10, 11, 12, 13, 15, 25], "self": [10, 11, 12, 13, 38, 59, 74, 80], "compon": [10, 11, 12, 13, 15, 17, 18, 21, 22, 23, 24, 25, 27, 28, 29], "notfoundlayout": 11, "url": [11, 13, 80], "sidebarlayout": 12, "categorized_plugin": 12, "layout": [13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29], "id": [13, 30, 37, 38, 41, 58, 60, 85, 89], "uniqu": [13, 64], "identifi": [13, 30, 37, 41, 90], "shown": [13, 60, 84], "navig": 13, "titl": [13, 80], "descript": 13, "displai": [13, 15, 25, 60, 83, 85, 86, 88, 89], "below": 13, "icon": 13, "fontawesom": 13, "help": [13, 77, 80, 83, 90], "path": [13, 32, 33, 34, 35, 38, 41, 48, 64, 65, 67, 68, 74, 78, 81, 94], "file": [13, 30, 37, 38, 41, 45, 48, 64, 69, 75, 76, 77, 78, 81, 88, 94, 95], "button_capt": 13, "caption": 13, "button": [13, 80, 84, 88], "staticplugin": [13, 17, 18, 19, 23, 25, 28], "activate_run_select": [13, 17, 18, 21, 22, 23, 24, 27, 28, 29], "show": [13, 60, 65, 67, 68, 71, 73, 74, 83, 86, 88, 89, 90, 91, 92, 93], "dropdown": 13, "one": [13, 17, 18, 21, 23, 27, 28, 30, 38, 77, 80, 83, 84, 89, 92, 93], "could": [13, 38, 48, 77, 82, 89, 90], "view": [13, 83, 84, 85, 86, 89, 90], "time": [13, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 30, 37, 41, 64, 71, 73, 74, 80, 83, 84, 88], "moreov": [13, 30, 80], "prevent": 13, "result": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 30, 32, 33, 34, 35, 37, 58, 64, 70, 72, 74, 80, 86, 88], "across": [13, 89], "render_button": 13, "basic": [13, 15, 25, 83, 88], "block": [13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 85, 88], "element": [13, 15, 25], "stack": [13, 15, 25, 89], "up": [13, 15, 25, 30], "here": [13, 15, 25, 65, 67, 68, 73, 82, 83, 84, 85, 89, 90], "static": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 88], "check_run_compat": 13, "check": [13, 30, 41, 45, 81, 82, 88, 89, 94], "compat": [13, 22, 24, 30], "you": [13, 60, 64, 65, 66, 67, 68, 70, 72, 77, 78, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 94], "abstractrun": [13, 17, 18, 21, 22, 23, 24, 27, 28, 29, 30, 37, 38, 41, 58], "One": [13, 82, 86, 90], "group": [13, 30, 38, 78, 80, 85, 86, 89, 90], "check_runs_compat": [13, 22, 24], "someth": [13, 22, 24, 81, 84, 94], "common": [13, 22, 24], "sinc": [13, 22, 24, 45, 58, 81, 85, 86, 88], "befor": [13, 22, 24, 77, 87, 88], "creat": [13, 22, 24, 27, 38, 41, 45, 58, 64, 81, 88], "notmergeableerror": [13, 22, 24, 36, 38], "an": [13, 22, 24, 25, 30, 38, 42, 49, 60, 66, 70, 71, 72, 79, 80, 82, 83, 88, 89, 93], "error": [13, 22, 24, 38, 89], "thrown": [13, 22, 24, 38], "generate_input": [13, 65, 67, 68], "kwarg": [13, 37, 74], "gener": [13, 19, 49, 60, 80, 82, 84, 88, 89], "process": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 30, 64, 71, 80, 81, 82, 84, 88], "load_output": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 65, 67, 68], "requir": [13, 60, 88, 94], "api": [13, 65, 67, 68, 69, 80, 95], "mode": [13, 66, 70, 80, 81, 94], "argument": [13, 49, 78], "valid": [13, 36, 74, 78, 84], "against": 13, "schema": 13, "avail": [13, 30, 38, 64, 65, 67, 68, 81, 85, 94], "runtim": 13, "therefor": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 64, 80, 89], "beforehand": 13, "ani": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 30, 41, 45, 55, 58, 78, 80, 88], "addit": [13, 41, 43, 60, 88], "keyword": 13, "classmethod": [13, 32, 33, 34, 35, 41], "generate_output": [13, 65, 67, 68], "activ": [13, 71, 74, 81], "accept": [13, 78], "either": [13, 30, 48], "multipl": [13, 30, 74, 80, 82, 83, 86, 90, 91, 92, 93], "onc": [13, 78], "intern": [13, 38, 41], "real": 13, "filter": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 65, 67, 68, 83, 88, 90], "necessari": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 58], "output": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 30, 58, 65, 67, 68, 74, 88], "first": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 30, 60, 81, 82, 84, 90, 94], "kei": [13, 38, 45, 58], "get_base_url": 13, "cl": 13, "string": [13, 30, 47, 60], "get_filter_layout": [13, 17, 18, 21, 22, 23, 24, 27, 28], "regist": [13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 88], "callabl": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29], "method": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 64, 65], "user": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 88], "variabl": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 65, 67, 68], "get_input_layout": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28], "get_mpl_output_layout": [13, 17, 24, 28], "matplotlib": [13, 17, 24, 28, 59, 65, 67, 68, 80], "get_output_layout": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29], "get_run_input_layout": 13, "case": [13, 17, 18, 19, 21, 23, 27, 28, 30, 41, 77, 83], "get_selected_run": 13, "pars": [13, 48], "otherwis": [13, 38, 80, 86], "possibl": [13, 48, 49, 60, 80, 81, 84, 86, 88, 89], "preventupd": 13, "load_dependency_input": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29], "previous_input": [13, 17, 18, 19, 21, 23, 27, 28], "load_input": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29], "after": [13, 17, 18, 19, 21, 23, 27, 28, 30, 64, 78, 85, 88], "chang": [13, 15, 17, 18, 19, 21, 23, 25, 27, 28, 30, 32, 33, 34, 35, 37, 38, 41, 45, 58, 64, 78, 80, 85, 86, 88, 89, 90, 92, 93], "lot": [13, 17, 18, 21, 23, 27, 28, 84], "flexibl": [13, 17, 18, 21, 23, 27, 28, 80], "merg": [13, 17, 18, 19, 21, 23, 27, 28, 30, 38], "selected_run": [13, 17, 18, 21, 23, 27, 28], "In": [13, 17, 18, 21, 23, 27, 28, 30, 37, 41, 78, 85, 86, 88, 89], "previou": [13, 17, 18, 19, 21, 23, 27, 28, 82], "content": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 45, 77], "current": [13, 17, 18, 19, 21, 23, 27, 28, 30, 32, 33, 34, 35, 37, 38, 60, 64, 88], "load": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 38, 41, 45, 48, 58, 65, 67, 68], "defin": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 71, 74], "pre": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28], "so": [13, 17, 18, 21, 22, 23, 24, 27, 28, 58, 64, 70, 72, 77, 82, 83, 84, 88, 90], "cach": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 30, 32, 33, 34, 35, 37, 38, 58, 60, 80, 84, 88], "its": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 30, 58, 79, 82, 84, 88], "fill": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28], "load_mpl_output": [13, 17, 24, 28, 65, 67, 68], "read": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 45], "raw": [13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 58, 80, 88], "prepar": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29], "them": [13, 17, 18, 21, 22, 23, 24, 27, 28, 29, 30, 60, 78, 84, 90], "clean": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 88], "differ": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 30, 58, 81, 83, 84, 87, 90], "compar": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 83, 86], "pleas": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 78, 80, 93], "see": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 61, 70, 72, 78, 81, 82, 83, 84, 85, 86, 89, 90, 91, 93, 94], "_clean_input": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29], "more": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 36, 71, 74, 82, 84, 85, 88, 89, 93], "inform": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 41, 82, 84, 85, 88, 94], "posit": [13, 17, 18, 21, 22, 23, 24, 27, 28, 29], "load_run_input": 13, "both": [13, 48, 55, 60, 64, 78, 88, 91], "singl": [13, 85, 87], "separ": 13, "json": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 45], "serializ": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28], "serial": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 47], "register_callback": [13, 15, 25], "callback": [13, 15, 25], "follow": [13, 15, 25, 30, 41, 45, 64, 70, 72, 78, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 92, 94], "past": [13, 15, 25], "back": [13, 15, 25, 80, 82], "particular": [13, 15, 25, 60, 83], "interest": [13, 15, 25], "depend": [13, 15, 19, 25, 30, 66, 69, 70, 82, 93, 95], "dialog": [13, 15, 25], "redirect": [13, 15, 25, 78, 91], "click": [13, 15, 25, 90, 91], "_description_": [13, 15, 25, 60], "register_input": [13, 19], "attribut": [13, 30], "server": [13, 77, 78], "map": [13, 83, 88], "which": [13, 27, 30, 38, 49, 58, 60, 78, 79, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91], "dash": [13, 80], "cast": 13, "global": [13, 30, 37, 65], "register_output": 13, "mpl": 13, "registr": 13, "dynamicplugin": [15, 21, 22, 24, 27, 29], "_": [17, 21, 23, 29], "partialdepend": [18, 68], "symbolicexplan": 19, "util": [19, 74], "symbol": [19, 61], "explan": 19, "includ": [19, 30, 38, 60, 78, 79, 86, 87], "leverag": 19, "obtain": [19, 93], "formula": [19, 93], "plot": [19, 80, 83, 89, 91, 93], "constant": [19, 73, 87], "grid_points_per_axi": 19, "samples_per_hp": 19, "max_sampl": 19, "max_shown_sampl": 19, "locat": [19, 48], "superclass": 19, "dbc": 19, "row": 19, "html": [19, 61], "detail": [19, 84, 88, 89, 90, 91], "dcc": 19, "graph": [19, 85, 86], "like": [19, 78, 80, 81, 82, 84, 86, 90, 94], "Not": [19, 41], "specif": [19, 27, 30, 45, 74, 85, 86, 88, 91], "figur": [19, 60, 65, 67, 68, 88], "partial": [19, 66, 69, 70, 93, 95], "pdp": [19, 68, 69, 95], "explain": 19, "smaller": 19, "wa": [19, 30, 38, 58, 64, 77, 81, 82, 83, 84, 85, 88, 89, 90, 94], "optim": [19, 39, 64, 71, 73, 74, 79, 80, 82, 83, 84, 86, 89, 90, 91, 93], "els": [19, 74], "comparison": [19, 86, 91], "go": [19, 60, 65, 67, 68, 71, 73, 74], "configurationcub": 21, "costovertim": 22, "parallelcoordin": [23, 67], "paretofront": 24, "pluginst": 25, "enum": 25, "enumer": [25, 42], "queue": [25, 77, 78, 88], "made": 25, "consum": 25, "task": [25, 74], "get_link": 27, "config_id": [27, 30, 37, 43], "link": [27, 85, 89], "visit": 27, "encode_config": 30, "normal": [30, 74], "look": [30, 38, 66, 70, 78, 83, 88], "ha": [30, 32, 33, 34, 35, 37, 45, 49, 58, 74, 78, 88, 91], "done": [30, 49, 84, 88], "itself": [30, 82], "get_all_cost": 30, "status": 30, "cost": [30, 37, 41, 43, 71, 73, 74, 78, 84, 88, 91], "histori": [30, 64], "statu": [30, 41, 43, 74, 85, 89], "stati": [30, 74], "get_budget": 30, "human": [30, 80], "want": [30, 60, 66, 70, 78, 81, 86, 91], "convert": [30, 38, 60, 61, 65, 67, 68, 78, 80, 84], "integ": [30, 49], "include_combin": 30, "meta": [30, 32, 33, 34, 35, 38, 41, 64, 93], "make": [30, 59, 64, 66, 70, 77, 78, 80, 81, 82, 85, 90, 94], "better": [30, 79, 82, 86, 91], "readabl": 30, "get_config": 30, "were": [30, 83, 85, 89], "evalu": [30, 82, 83, 84, 85, 86, 89, 90], "get_cost": 30, "multi": [30, 41, 70, 72, 75, 81, 88, 95], "valueerror": 30, "found": [30, 38, 41, 74, 78, 81, 84, 94], "associ": [30, 78, 82, 83, 85, 89], "get_encoded_data": 30, "include_config_id": 30, "include_combined_cost": 30, "thei": [30, 58, 82, 83, 89, 90], "model": [30, 41, 74, 88, 93], "encode_i": 30, "too": [30, 77, 86], "implement": [30, 87, 88], "epm": 30, "df": 30, "datafram": [30, 47], "column": [30, 89], "hp1": 30, "hp2": 30, "hpn": 30, "obj1": 30, "obj2": 30, "objm": 30, "combined_cost": 30, "pd": 30, "get_highest_budget": 30, "get_incumb": 30, "incumb": [30, 84], "get_object": 30, "get_objective_id": [30, 65, 67, 68], "objective_id": [30, 65, 67, 68], "get_objective_nam": 30, "involv": 30, "get_statu": 30, "get_trajectori": [30, 37], "trajectori": [30, 37], "costs_mean": [30, 37], "costs_std": [30, 37], "particularli": [30, 37], "trial": [30, 34, 35, 37, 41, 64, 78, 82, 83, 85, 89, 90, 92, 93], "properti": [30, 32, 33, 34, 35, 37, 41], "hash": [30, 32, 33, 34, 35, 37, 38, 41, 58, 64], "clear": [30, 32, 33, 34, 35, 37, 45, 58, 82], "ensur": [30, 32, 33, 34, 35, 37, 58], "alwai": [30, 32, 33, 34, 35, 37], "hold": [30, 32, 33, 34, 35, 37, 58], "latest": [30, 32, 33, 34, 35, 37, 61, 64, 89], "contrast": [30, 37, 41, 86, 88], "throughout": [30, 37, 41, 85], "merge_cost": 30, "weight": [30, 74], "everi": [30, 80], "lower": [30, 39, 71, 73, 74, 82, 84], "length": 30, "origin": [30, 41, 85], "check_equ": 30, "equal": [30, 86], "request": [30, 88], "exclud": 30, "bohbrun": 32, "from_path": [32, 33, 34, 35, 41, 64, 65, 67, 68], "new": [32, 33, 34, 35, 38, 41, 64, 88], "deepcaverun": [33, 65, 67, 68], "smac3v1run": 34, "working_dir": [34, 35], "run_nam": [34, 35], "smac3v2run": 35, "two": [36, 79, 84, 88, 91, 92, 93], "mergeabl": 36, "notvalidrunerror": [36, 38], "directori": [36, 38, 78, 80, 88], "arg": 37, "runhandl": 38, "run_cach": 38, "handl": [38, 45], "automat": [38, 60, 64, 78, 80], "switch": 38, "plugin": [38, 58, 65, 67, 68, 77, 80, 82, 83, 84, 85, 86, 87, 89, 90, 91, 92, 93], "add_run": 38, "run_path": 38, "add": [38, 41, 64, 74, 78, 81, 88, 90], "alreadi": [38, 41, 82, 84, 88], "do": [38, 70, 72, 77, 80, 81, 82, 83, 84, 88, 90, 92, 93, 94], "noth": 38, "get_available_run_path": 38, "get_group": 38, "instanti": [38, 65, 67, 68], "groupedrun": 38, "get_run": 38, "run_id": [38, 71, 74], "insid": [38, 64, 81, 94], "refer": [38, 88, 89], "get_run_nam": 38, "stem": 38, "include_group": 38, "readi": [38, 88], "get_selected_run_nam": 38, "get_selected_run_path": 38, "get_working_directori": 38, "remove_run": 38, "remov": [38, 58, 87, 90], "set_working_directori": 38, "working_directori": 38, "directoi": 38, "updat": [38, 45, 51, 58, 77, 88, 89], "update_group": 38, "save": [38, 58, 60, 70, 72, 80, 88], "update_run": 38, "class_hint": 38, "upper": [39, 71, 73, 74], "__post_init__": 39, "lock": 39, "space": [41, 49, 82, 83, 84, 86], "start_tim": [41, 43, 74], "end_tim": [41, 43, 74], "success": [41, 74, 89], "exist": [41, 58, 84, 86], "overwritten": [41, 59], "ad": [41, 51, 78, 81, 94], "expect": [41, 89], "correspond": 41, "end": [41, 65, 67, 68, 71, 73, 74, 85, 88, 89], "quot": [41, 78], "torch": [41, 74], "nn": [41, 74], "traceback": 41, "doe": [41, 58, 82, 83, 84, 86, 88, 90, 92, 93], "intenum": 42, "filenam": [45, 48, 81, 94], "debug": 45, "write_fil": 45, "decid": [45, 79, 86], "flask_cach": 45, "code": [45, 65, 67, 68, 70, 71, 73, 74, 80], "easier": 45, "our": [45, 80, 88], "reset": [45, 58], "retriev": 45, "chain": 45, "b": [45, 51, 86, 91], "c": [45, 73, 74, 81], "4": [45, 49, 60, 64, 74, 81, 94], "set_dict": 45, "d": [45, 49], "write": [45, 64], "deseri": 47, "dtype": 47, "panda": 47, "core": [47, 61, 79], "frame": 47, "typevar": 47, "parse_config": 48, "rel": [48, 78], "absolut": [48, 78], "python": [48, 65, 67, 68, 70, 71, 73, 74, 80, 81, 85], "inherit": [48, 64, 78], "sample_border_config": 49, "border": [49, 84], "configurationspac": [49, 71, 73, 74], "drawn": 49, "yield": 49, "iter": 49, "sample_random_config": 49, "reduc": 49, "rang": [49, 71, 74, 82, 90], "discret": [49, 60], "For": [49, 79, 82, 88, 90, 91, 92, 93], "exampl": [49, 65, 66, 67, 68, 69, 71, 72, 73, 74, 75, 76, 79, 82, 88, 89, 90, 91, 92, 93, 95], "four": [49, 85], "flash": 50, "messag": 50, "categori": 50, "info": 50, "flask": 50, "style": 50, "alert": 50, "update_dict": 51, "inplac": 51, "get_select_opt": 55, "label": [55, 60, 90], "disabl": [55, 91], "binari": 55, "empti": 55, "runcach": 58, "store": 58, "again": [58, 90], "each": [58, 84], "own": [58, 82, 88], "clear_run": 58, "plugin_id": 58, "inputs_kei": 58, "_dict_as_kei": 58, "variant": 58, "styledplot": 59, "overwrit": 59, "pyplot": 59, "__getattr__": 59, "sure": [59, 64, 77, 78, 81, 82], "access": [59, 80, 81, 85, 94], "plt": 59, "directli": [59, 64, 66, 70, 72, 80, 81, 86, 88], "get_color": 60, "id_": 60, "alpha": [60, 68, 73], "plotli": [60, 65, 67, 68], "palett": 60, "alphabet": 60, "next": [60, 64, 81, 84, 88, 89], "26": 60, "36": 60, "color": [60, 82, 83], "get_discrete_heatmap": 60, "colorscal": 60, "nest": 60, "numpi": [60, 73, 74], "arrai": 60, "_type_": 60, "get_hyperparameter_tick": 60, "hp": 60, "additional_valu": 60, "tick": 60, "include_nan": 60, "tickval": 60, "ticktext": 60, "background": [60, 84], "don": 60, "t": [60, 74], "With": [60, 90], "6": [60, 81, 94, 95], "behaviour": [60, 90], "ignor": [60, 74], "categor": [60, 90], "forc": 60, "nan": 60, "get_hyperparameter_ticks_from_valu": 60, "boolean": 60, "enforc": 60, "independ": 60, "hex_to_rgb": 60, "hex_str": 60, "rgb": 60, "format": [60, 64, 70, 71, 72], "000000": 60, "ff00ff": 60, "prettify_label": 60, "prettifi": 60, "shorten": 60, "save_imag": 60, "imag": [60, 78], "fig": 60, "extens": 60, "Will": 60, "regress": [61, 93], "gplearn": 61, "convert_symb": 61, "symb": 61, "n_decim": 61, "fit": [61, 71, 74], "simplifi": 61, "potenti": [61, 74], "round": [61, 74], "mathemat": 61, "express": 61, "warn": 61, "eval": 61, "thu": 61, "unsanit": 61, "http": [61, 80, 81, 94], "doc": 61, "sympi": 61, "org": [61, 80], "highlight": 61, "sympifi": 61, "symbolicregressor": 61, "regressor": 61, "find": [61, 79, 82, 84, 85, 89, 90, 91], "decim": 61, "replac": 61, "x0": 61, "x1": 61, "exp": 61, "safe": 61, "maximum": 61, "100000": 61, "avoid": [61, 78], "overflow": 61, "exponenti": 61, "get_function_set": 61, "_function": 61, "deepcav": [64, 65, 66, 67, 68, 70, 71, 72, 73, 74, 77, 78, 80, 81, 88, 94], "interpret": [64, 78], "folder": [64, 81, 94], "put": 64, "correctli": 64, "nativ": [64, 80], "smac": [64, 79, 80], "v1": 64, "v2": 64, "bohb": [64, 80], "auto": 64, "sklearn": [64, 70, 72, 75, 95], "pytorch": [64, 70, 72, 75, 95], "observ": 64, "system": 64, "allow": [64, 80, 83, 90, 93], "monitor": 64, "finish": [64, 77], "regularli": 64, "disk": 64, "long": [64, 86], "To": [64, 70, 72, 77, 84, 86, 89, 91, 93], "three": [64, 88], "latest_chang": 64, "when": [64, 77, 82, 83, 84, 86, 88, 89], "available_convert": 64, "your": [64, 70, 72, 73, 77, 78, 80, 81, 82, 84, 85, 86, 88, 89, 90, 94], "branch": [64, 88], "py": [64, 65, 67, 68, 69, 71, 73, 74, 75, 78, 88, 95], "did": [64, 89, 90], "fail": 64, "download": [65, 67, 68, 70, 71, 73, 74, 81, 94], "full": [65, 67, 68, 71, 73, 74, 80, 89], "other": [65, 67, 68, 71, 74, 78, 84, 85, 86], "interfac": [65, 67, 68, 80, 88], "fashion": [65, 67, 68], "pathlib": [65, 67, 68], "__name__": [65, 67, 68, 71, 74], "__main__": [65, 67, 68, 71, 74], "log": [65, 67, 68, 70, 71, 72, 73, 74, 89], "minim": [65, 67, 68, 70, 72, 75, 79, 88, 95], "run_2": [65, 67, 68], "budget_id": [65, 67, 68], "get_budget_id": [65, 67, 68], "hyperparameter_nam": [65, 67], "get_hyperparameter_nam": [65, 67], "n_hp": [65, 67], "final": [65, 67, 68, 82, 83, 90], "plai": [65, 67, 68], "role": [65, 67, 68], "altern": [65, 67, 68], "write_imag": [65, 67, 68], "png": [65, 67, 68], "scale": [65, 67, 89], "jupyt": [65, 67, 68, 70, 71, 73, 74], "notebook": [65, 67, 68, 70, 71, 73, 74], "ipynb": [65, 67, 68, 71, 73, 74], "interact": [66, 70, 78, 80, 81, 94], "overview": [66, 70, 84], "wai": [66, 70, 82, 86, 88, 89, 90], "parallel": [66, 69, 70, 95], "coordin": [66, 69, 70, 95], "parallel_coordin": [67, 69, 95], "show_important_onli": 67, "show_unsuccess": 67, "hide_hp": 67, "hyperparameter_name_1": 68, "hyperparameter_name_2": 68, "beta": [68, 73], "show_confid": 68, "show_ic": 68, "00": [69, 75, 76, 95], "000": [69, 75, 76, 95], "execut": [69, 75, 76, 80, 95], "mem": [69, 75, 76, 95], "mb": [69, 75, 76, 95], "incorpor": [70, 72, 74, 82], "idea": [70, 72], "automl": [70, 72, 80, 81, 86, 88], "layer": [70, 72, 75, 95], "perceptron": [70, 72, 75, 95], "via": [70, 72, 75, 78, 95], "examples_python": 70, "zip": 70, "examples_jupyt": 70, "advanc": [71, 74], "record": [71, 74, 75, 80, 95], "neural_network": 71, "mlpclassifi": 71, "model_select": 71, "train_test_split": 71, "uniformfloathyperparamet": [71, 73, 74], "categoricalhyperparamet": [71, 74], "uniformintegerhyperparamet": [71, 74], "dataset": [71, 74], "load_digit": 71, "def": [71, 74], "get_dataset": 71, "digit": 71, "x_train": 71, "x_test": 71, "y_train": 71, "y_test": 71, "stratifi": 71, "random_st": 71, "get_configspac": [71, 74], "num_neurons_layer1": [71, 74], "5": [71, 74, 89, 90], "100": [71, 73, 74], "num_neurons_layer2": [71, 74], "choic": [71, 74, 86], "logist": 71, "tanh": [71, 74], "relu": [71, 74], "solver": 71, "sgd": 71, "adam": [71, 74], "batch_siz": [71, 74], "learning_r": [71, 74], "0001": [71, 74], "add_hyperparamet": [71, 73, 74], "accuraci": [71, 73, 74, 79, 92, 93], "20": [71, 73, 82], "30": [71, 82], "40": [71, 73, 82], "50": 71, "60": [71, 73], "70": [71, 82], "80": 71, "90": 71, "num_config": [71, 74], "200": 71, "num_run": [71, 74], "save_path": [71, 73, 74], "digits_sklearn": [71, 75, 95], "r": [71, 73, 74], "sample_configur": [71, 73, 74], "clf": 71, "max_it": 71, "hidden_layer_s": 71, "learning_rate_init": 71, "goe": 73, "uniform": [73, 74], "low": [73, 82, 88, 89, 91], "high": [73, 82, 83, 84, 86, 89, 90], "statuss": 74, "strenght": 74, "inspect": [74, 83], "boundargu": 74, "o": 74, "re": [74, 90], "f": 74, "dataload": 74, "random_split": 74, "torchvis": 74, "torchmetr": 74, "mnist": 74, "pytorch_lightn": 74, "pl": 74, "num_work": 74, "mnistmodel": 74, "lightningmodul": 74, "__init__": 74, "dropout_r": 74, "super": 74, "elif": 74, "sigmoid": 74, "data_dir": 74, "join": 74, "getcwd": 74, "num_class": 74, "dim": 74, "28": 74, "channel": 74, "width": 74, "height": 74, "compos": 74, "totensor": 74, "1307": 74, "3081": 74, "multiclass": 74, "prepare_data": 74, "setup": 74, "stage": 74, "assign": 74, "val": 74, "mnist_ful": 74, "mnist_train": 74, "mnist_val": 74, "20000": 74, "40000": 74, "test": [74, 81], "mnist_test": 74, "train_dataload": 74, "val_dataload": 74, "test_dataload": 74, "training_step": 74, "batch": 74, "batch_idx": 74, "logit": 74, "loss": [74, 79], "nll_loss": 74, "validation_step": 74, "pred": 74, "argmax": 74, "val_loss": 74, "prog_bar": 74, "val_acc": 74, "test_step": 74, "configure_optim": 74, "lr": 74, "mlp": 74, "num_neuron": 74, "32": 74, "sequenti": 74, "flatten": 74, "linear": [74, 89], "dropout": 74, "forward": 74, "log_softmax": 74, "cnn": 74, "conv1": 74, "conv2d": 74, "in_channel": 74, "out_channel": 74, "kernel_s": 74, "stride": 74, "pad": 74, "maxpool2d": 74, "conv2": 74, "fulli": [74, 82], "connect": 74, "out": [74, 89], "7": [74, 82], "9": [74, 81], "256": 74, "sub": [74, 80], "add_condit": 74, "equalscondit": 74, "max_epoch": 74, "8": 74, "n_epoch": 74, "linspac": 74, "num": 74, "1000": 74, "mnist_pytorch": [74, 75, 95], "seed_everyth": 74, "epoch": [74, 79], "trainer": 74, "acceler": 74, "cpu": 74, "devic": 74, "num_sanity_val_step": 74, "No": [74, 82, 90], "saniti": [74, 82, 88, 89], "determinist": 74, "min_epoch": 74, "accuracy_": 74, "loss_": 74, "just": [74, 90], "some": [74, 77, 84, 88, 89], "later": 74, "crash": [74, 85, 89, 90], "05": 74, "chanc": 74, "memoryout": 74, "timeout": 74, "elapsed_tim": 74, "what": [77, 82, 84, 89, 90], "wrong": 77, "instal": [77, 78], "redi": 77, "my": [77, 91], "machin": [77, 79, 80], "fastest": 77, "issu": 77, "slow": 77, "circl": 77, "increas": [77, 84, 85, 92, 93], "refresh": [77, 78], "rate": [77, 78, 92, 93], "refresh_r": 77, "step": [78, 81], "command": [78, 81], "addition": [78, 93], "sever": 78, "open": 78, "n_worker": 78, "local": 78, "gui": 78, "browser": 78, "been": [78, 84, 85, 89], "worker": [78, 81], "custom": [78, 80], "ip": 78, "port": 78, "howev": [78, 82, 86, 89], "enclos": 78, "reserv": 78, "hit": [78, 84], "enter": 78, "dashboard": [78, 80], "main": [78, 79], "page": [78, 87, 92, 94], "analyz": [78, 80, 82, 83, 85, 90], "action": 78, "collect": [78, 80, 93], "easili": 78, "bo": 79, "bayesian": 79, "black": 79, "box": [79, 89], "algorithm": [79, 84], "weigh": 79, "explor": [79, 80, 84], "exploit": 79, "minimum": 79, "tool": [79, 80], "arbitrari": [79, 82], "learn": [79, 80, 92, 93], "consist": 79, "aggress": 79, "race": 79, "mechan": 79, "effici": [79, 80, 91], "perform": [79, 80, 82, 86, 88, 90, 91, 93], "metric": [79, 85], "maxim": [79, 80], "wherea": 79, "limit": [79, 90], "anyth": 79, "most": [79, 84, 87, 88, 89, 90], "frequent": 79, "neural": [79, 82], "network": [79, 82], "restrict": 79, "subset": 79, "visual": [80, 83, 85, 86, 88, 90], "analysi": [80, 88, 90], "especi": [80, 85], "problem": [80, 81, 90, 91], "framework": 80, "program": 80, "top": [80, 90], "entir": [80, 89], "divers": 80, "insight": [80, 84, 88, 90], "bring": 80, "loop": 80, "power": 80, "modular": 80, "structur": 80, "extend": 80, "effortlessli": 80, "complet": [80, 88, 90], "written": 80, "while": [80, 85, 88, 93], "detect": 80, "larg": [80, 87], "area": 80, "asynchron": 80, "expens": 80, "integr": 80, "document": 80, "understand": [80, 84, 88, 89], "public": 80, "give": [80, 83, 85, 88, 94], "research": 80, "project": 80, "cite": 80, "realml": 80, "icml": 80, "22": 80, "workshop": 80, "paper": [80, 93], "misc": 80, "sass": 80, "realml2022": 80, "autom": 80, "author": 80, "ren\u00e9": 80, "bergman": 80, "eddi": 80, "biedenkapp": 80, "andr\u00e9": 80, "hutter": 80, "frank": 80, "lindauer": 80, "mariu": 80, "doi": 80, "48550": 80, "arxiv": 80, "2206": 80, "03493": 80, "ab": 80, "publish": 80, "year": 80, "2022": 80, "copyright": 80, "perpetu": 80, "non": 80, "exclus": 80, "licens": 80, "brew": [81, 94], "sudo": [81, 94], "apt": [81, 94], "linux": [81, 94], "section": [81, 85, 89], "exten": 81, "instruct": 81, "bash": 81, "script": 81, "servic": 81, "webserv": 81, "window": 81, "recommend": [81, 88], "anaconda": 81, "swig": 81, "environ": 81, "conda": 81, "pip": 81, "contribut": 81, "github": 81, "dev": 81, "git": 81, "clone": 81, "com": 81, "try": [81, 82, 84, 89, 94], "usr": [81, 94], "sbin": [81, 94], "simpli": [81, 85, 94], "expand": [81, 94], "export": [81, 94], "bashrc": [81, 94], "admin": [81, 94], "root": [81, 94], "tar": [81, 94], "gz": [81, 94], "mkdir": [81, 94], "p": [81, 94], "vendor": [81, 94], "cd": [81, 94], "wget": [81, 94], "io": [81, 94], "releas": [81, 94], "xzvf": [81, 94], "rm": [81, 94], "pwd": [81, 94], "m1": 81, "disable_spr": 81, "objc_disable_initialize_fork_safeti": 81, "ye": [81, 90], "bash_profil": 81, "enabl": [81, 90, 91], "representit": 82, "gain": [82, 86], "knowledg": [82, 84], "about": [82, 84, 85, 89, 93], "well": [82, 84, 89, 90], "know": [82, 84, 85, 86, 89, 90], "good": [82, 84, 86, 91], "enough": 82, "infer": [82, 84], "would": [82, 86, 88, 89], "conversli": 82, "realli": [82, 90], "converg": [82, 86], "reach": [82, 86, 90], "still": [82, 84], "continu": 82, "till": 82, "between": [82, 84, 86, 87, 89, 93], "capabl": [82, 84, 85, 86, 87, 89, 91, 92, 93], "answer": [82, 83, 84, 85, 86, 87, 89, 90, 91, 92, 93], "question": [82, 83, 84, 85, 86, 87, 89, 90, 91, 92, 93], "fair": [82, 89], "represent": [82, 84], "cover": [82, 84], "wish": [82, 83, 90], "commun": [82, 83], "through": [82, 83, 84, 90], "heatmap": [82, 83, 89], "thing": 82, "perfectli": 82, "trace": 82, "ll": [82, 84, 89], "mid": 82, "slowli": 82, "drop": 82, "There": [82, 84, 88], "great": 82, "certain": [82, 83, 85, 86, 89, 90], "extra": 82, "resourc": [82, 84], "determin": [82, 85, 86, 90], "less": 82, "faster": [82, 86], "lowest": 82, "achiev": [82, 84, 86, 90], "least": 82, "rather": 82, "context": 82, "dynam": [82, 88, 90], "text": 82, "veri": [82, 83, 88], "strong": 82, "relationship": 82, "69": 82, "39": 82, "moder": 82, "29": 82, "weak": 82, "01": 82, "19": 82, "neglig": 82, "natur": 83, "mai": [83, 90], "dimension": [83, 84, 88], "investig": 83, "2d": [83, 84], "3d": 83, "slice": 83, "under": [83, 84, 87, 89, 90, 92], "slider": 83, "where": [83, 84, 85, 91], "move": 83, "along": [83, 89, 90], "chose": 83, "hyperparamt": [83, 90], "1d": 83, "grid": 83, "evid": 83, "influenc": [83, 84, 86, 87, 88], "anoth": 83, "tend": [83, 90], "prefer": [83, 84, 90, 91], "correl": 83, "known": 84, "dure": [84, 89, 93], "These": [84, 89, 90], "stop": 84, "invest": 84, "comput": [84, 91], "favor": 84, "let": [84, 85, 89, 90], "briefli": 84, "mention": [84, 86], "variou": [84, 90], "kind": [84, 88], "concern": 84, "best": [84, 86, 89, 91], "red": 84, "triangl": 84, "orang": 84, "unevalu": 84, "purpl": 84, "edg": 84, "min": 84, "max": 84, "scalar": 84, "around": 84, "those": [84, 90], "address": 84, "repres": 84, "reduct": 84, "md": 84, "attempt": 84, "preserv": 84, "distanc": 84, "spaceto": 84, "Of": 84, "cours": 84, "perfect": [84, 86, 89], "begin": 84, "talk": 84, "share": [84, 90], "axi": [84, 86, 89, 90], "co": 84, "ordin": 84, "swap": 84, "benefici": 84, "firm": 84, "grasp": 84, "perhap": 84, "mous": 84, "tell": [84, 85, 87], "possibli": 84, "noisi": 84, "rest": 84, "colour": [84, 89], "represnt": 84, "estim": 84, "region": 84, "resolut": 84, "gridsiz": 84, "nice": [84, 85, 89], "quit": [84, 90], "ideal": [84, 89], "blob": 84, "small": 84, "cluster": 84, "focus": 84, "scatter": 84, "part": [85, 89], "applic": 85, "come": 85, "hand": [85, 90], "tabl": 85, "why": [85, 89], "concret": 85, "deploy": 85, "crucial": 85, "somehow": 85, "wise": [85, 88], "goal": [86, 88], "peak": 86, "conveni": 86, "logarithm": 86, "adition": 86, "As": [86, 87], "abov": [86, 90], "line": [86, 89, 90], "wors": 86, "spread": 86, "construct": [87, 92], "reli": 87, "cannot": 87, "workaround": 87, "break": 87, "condit": 87, "forbidden": 87, "analys": 88, "aspect": 88, "easi": [88, 90], "serv": [88, 89], "deeper": 88, "suit": 88, "trigger": 88, "act": 88, "immedi": 88, "describ": [88, 93], "quick": 88, "soon": 88, "decis": 88, "viewabl": 88, "side": 88, "bar": [88, 89, 90], "upon": 88, "design": 88, "adapt": 88, "happi": 88, "receiv": 88, "pull": 88, "statist": 89, "unsuccess": [89, 90], "On": 89, "regard": 89, "summari": 89, "notabl": 89, "tri": 89, "last": [89, 90], "alloc": 89, "barplot": 89, "occur": 89, "tab": 89, "reciev": 89, "accord": [89, 90], "exit": 89, "progress": 89, "scenario": 89, "mostli": 89, "span": 89, "not_evalu": 89, "face": 89, "onward": 89, "balanc": 89, "breif": 89, "lastli": [89, 90], "being": 89, "v": 89, "trend": 90, "left": 90, "ones": 90, "place": 90, "spine": 90, "home": 90, "lead": 90, "incom": 90, "arrang": 90, "instead": 90, "crowd": 90, "manag": 90, "caus": 90, "overwhelm": 90, "draw": 90, "drag": 90, "togeth": 90, "relev": 90, "sens": 90, "sometim": 90, "similar": [90, 92, 93], "situat": 91, "due": 91, "suitabl": 91, "choos": 91, "slightli": 91, "decreas": [92, 93], "behavior": [92, 93], "explicit": 93, "quantifi": 93, "relat": 93, "effect": 93, "captur": 93, "mac": 94, "galleri": 95}, "objects": {"deepcave": [[1, 0, 0, "-", "evaluators"], [10, 0, 0, "-", "layouts"], [13, 0, 0, "-", "plugins"], [30, 0, 0, "-", "runs"], [44, 0, 0, "-", "utils"]], "deepcave.evaluators": [[2, 0, 0, "-", "epm"], [7, 0, 0, "-", "fanova"], [8, 0, 0, "-", "footprint"], [9, 0, 0, "-", "lpi"]], "deepcave.evaluators.epm": [[3, 0, 0, "-", "fanova_forest"], [4, 0, 0, "-", "random_forest"], [5, 0, 0, "-", "random_forest_surrogate"], [6, 0, 0, "-", "utils"]], "deepcave.evaluators.epm.fanova_forest": [[3, 1, 1, "", "FanovaForest"]], "deepcave.evaluators.epm.fanova_forest.FanovaForest": [[3, 2, 1, "", "compute_marginals"]], "deepcave.evaluators.epm.random_forest": [[4, 1, 1, "", "RandomForest"], [4, 3, 1, "", "random"]], "deepcave.evaluators.epm.random_forest.RandomForest": [[4, 2, 1, "", "predict"], [4, 2, 1, "", "predict_marginalized"], [4, 2, 1, "", "train"]], "deepcave.evaluators.epm.random_forest_surrogate": [[5, 1, 1, "", "RandomForestSurrogate"]], "deepcave.evaluators.epm.random_forest_surrogate.RandomForestSurrogate": [[5, 2, 1, "", "predict"]], "deepcave.evaluators.epm.utils": [[6, 3, 1, "", "get_types"]], "deepcave.evaluators.fanova": [[7, 1, 1, "", "fANOVA"]], "deepcave.evaluators.fanova.fANOVA": [[7, 2, 1, "", "calculate"], [7, 2, 1, "", "get_importances"]], "deepcave.evaluators.lpi": [[9, 3, 1, "", "random"]], "deepcave.layouts": [[10, 1, 1, "", "Layout"], [11, 0, 0, "-", "not_found"], [12, 0, 0, "-", "sidebar"]], "deepcave.layouts.Layout": [[10, 2, 1, "", "__call__"]], "deepcave.layouts.not_found": [[11, 1, 1, "", "NotFoundLayout"]], "deepcave.layouts.not_found.NotFoundLayout": [[11, 2, 1, "", "__call__"]], "deepcave.layouts.sidebar": [[12, 1, 1, "", "SidebarLayout"]], "deepcave.layouts.sidebar.SidebarLayout": [[12, 2, 1, "", "__call__"]], "deepcave.plugins": [[13, 1, 1, "", "Plugin"], [14, 0, 0, "-", "budget"], [15, 0, 0, "-", "dynamic"], [16, 0, 0, "-", "hyperparameter"], [20, 0, 0, "-", "objective"], [25, 0, 0, "-", "static"], [26, 0, 0, "-", "summary"]], "deepcave.plugins.Plugin": [[13, 2, 1, "", "__call__"], [13, 4, 1, "", "activate_run_selection"], [13, 4, 1, "", "button_caption"], [13, 2, 1, "", "check_run_compatibility"], [13, 2, 1, "", "check_runs_compatibility"], [13, 4, 1, "", "description"], [13, 2, 1, "", "generate_inputs"], [13, 2, 1, "", "generate_outputs"], [13, 2, 1, "", "get_base_url"], [13, 2, 1, "", "get_filter_layout"], [13, 2, 1, "", "get_input_layout"], [13, 2, 1, "", "get_mpl_output_layout"], [13, 2, 1, "", "get_output_layout"], [13, 2, 1, "", "get_run_input_layout"], [13, 2, 1, "", "get_selected_runs"], [13, 4, 1, "", "help"], [13, 4, 1, "", "icon"], [13, 4, 1, "", "id"], [13, 2, 1, "", "load_dependency_inputs"], [13, 2, 1, "", "load_inputs"], [13, 2, 1, "", "load_mpl_outputs"], [13, 2, 1, "", "load_outputs"], [13, 2, 1, "", "load_run_inputs"], [13, 4, 1, "", "name"], [13, 2, 1, "", "process"], [13, 2, 1, "", "register_callbacks"], [13, 2, 1, "", "register_input"], [13, 2, 1, "", "register_output"]], "deepcave.plugins.dynamic": [[15, 1, 1, "", "DynamicPlugin"]], "deepcave.plugins.dynamic.DynamicPlugin": [[15, 2, 1, "", "__call__"], [15, 2, 1, "", "register_callbacks"]], "deepcave.plugins.hyperparameter": [[17, 0, 0, "-", "importances"], [18, 0, 0, "-", "pdp"], [19, 0, 0, "-", "symbolic_explanations"]], "deepcave.plugins.hyperparameter.importances": [[17, 1, 1, "", "Importances"]], "deepcave.plugins.hyperparameter.importances.Importances": [[17, 2, 1, "", "get_filter_layout"], [17, 2, 1, "", "get_input_layout"], [17, 2, 1, "", "get_mpl_output_layout"], [17, 2, 1, "", "get_output_layout"], [17, 2, 1, "", "load_dependency_inputs"], [17, 2, 1, "", "load_inputs"], [17, 2, 1, "", "load_mpl_outputs"], [17, 2, 1, "", "load_outputs"], [17, 2, 1, "", "process"]], "deepcave.plugins.hyperparameter.pdp": [[18, 1, 1, "", "PartialDependencies"]], "deepcave.plugins.hyperparameter.pdp.PartialDependencies": [[18, 2, 1, "", "get_filter_layout"], [18, 2, 1, "", "get_input_layout"], [18, 2, 1, "", "get_output_layout"], [18, 2, 1, "", "load_dependency_inputs"], [18, 2, 1, "", "load_inputs"], [18, 2, 1, "", "load_outputs"], [18, 2, 1, "", "process"]], "deepcave.plugins.hyperparameter.symbolic_explanations": [[19, 1, 1, "", "SymbolicExplanations"]], "deepcave.plugins.hyperparameter.symbolic_explanations.SymbolicExplanations": [[19, 2, 1, "", "get_input_layout"], [19, 2, 1, "", "get_output_layout"], [19, 2, 1, "", "load_dependency_inputs"], [19, 2, 1, "", "load_inputs"], [19, 2, 1, "", "load_outputs"], [19, 2, 1, "", "process"]], "deepcave.plugins.objective": [[21, 0, 0, "-", "configuration_cube"], [22, 0, 0, "-", "cost_over_time"], [23, 0, 0, "-", "parallel_coordinates"], [24, 0, 0, "-", "pareto_front"]], "deepcave.plugins.objective.configuration_cube": [[21, 1, 1, "", "ConfigurationCube"]], "deepcave.plugins.objective.configuration_cube.ConfigurationCube": [[21, 2, 1, "", "get_filter_layout"], [21, 2, 1, "", "get_input_layout"], [21, 2, 1, "", "get_output_layout"], [21, 2, 1, "", "load_dependency_inputs"], [21, 2, 1, "", "load_inputs"], [21, 2, 1, "", "load_outputs"], [21, 2, 1, "", "process"]], "deepcave.plugins.objective.cost_over_time": [[22, 1, 1, "", "CostOverTime"]], "deepcave.plugins.objective.cost_over_time.CostOverTime": [[22, 2, 1, "", "check_runs_compatibility"], [22, 2, 1, "", "get_filter_layout"], [22, 2, 1, "", "get_input_layout"], [22, 2, 1, "", "get_output_layout"], [22, 2, 1, "", "load_inputs"], [22, 2, 1, "", "load_outputs"], [22, 2, 1, "", "process"]], "deepcave.plugins.objective.parallel_coordinates": [[23, 1, 1, "", "ParallelCoordinates"]], "deepcave.plugins.objective.parallel_coordinates.ParallelCoordinates": [[23, 2, 1, "", "get_filter_layout"], [23, 2, 1, "", "get_input_layout"], [23, 2, 1, "", "get_output_layout"], [23, 2, 1, "", "load_dependency_inputs"], [23, 2, 1, "", "load_inputs"], [23, 2, 1, "", "load_outputs"], [23, 2, 1, "", "process"]], "deepcave.plugins.objective.pareto_front": [[24, 1, 1, "", "ParetoFront"]], "deepcave.plugins.objective.pareto_front.ParetoFront": [[24, 2, 1, "", "check_runs_compatibility"], [24, 2, 1, "", "get_filter_layout"], [24, 2, 1, "", "get_input_layout"], [24, 2, 1, "", "get_mpl_output_layout"], [24, 2, 1, "", "get_output_layout"], [24, 2, 1, "", "load_inputs"], [24, 2, 1, "", "load_mpl_outputs"], [24, 2, 1, "", "load_outputs"], [24, 2, 1, "", "process"]], "deepcave.plugins.static": [[25, 1, 1, "", "PluginState"], [25, 1, 1, "", "StaticPlugin"]], "deepcave.plugins.static.StaticPlugin": [[25, 2, 1, "", "__call__"], [25, 2, 1, "", "register_callbacks"]], "deepcave.plugins.summary": [[27, 0, 0, "-", "configurations"], [28, 0, 0, "-", "footprint"], [29, 0, 0, "-", "overview"]], "deepcave.plugins.summary.configurations": [[27, 1, 1, "", "Configurations"]], "deepcave.plugins.summary.configurations.Configurations": [[27, 2, 1, "", "get_input_layout"], [27, 2, 1, "", "get_link"], [27, 2, 1, "", "get_output_layout"], [27, 2, 1, "", "load_dependency_inputs"], [27, 2, 1, "", "load_inputs"], [27, 2, 1, "", "load_outputs"], [27, 2, 1, "", "process"]], "deepcave.plugins.summary.footprint": [[28, 1, 1, "", "FootPrint"]], "deepcave.plugins.summary.footprint.FootPrint": [[28, 2, 1, "", "get_filter_layout"], [28, 2, 1, "", "get_input_layout"], [28, 2, 1, "", "get_mpl_output_layout"], [28, 2, 1, "", "get_output_layout"], [28, 2, 1, "", "load_dependency_inputs"], [28, 2, 1, "", "load_inputs"], [28, 2, 1, "", "load_mpl_outputs"], [28, 2, 1, "", "load_outputs"], [28, 2, 1, "", "process"]], "deepcave.plugins.summary.overview": [[29, 1, 1, "", "Overview"]], "deepcave.plugins.summary.overview.Overview": [[29, 2, 1, "", "get_output_layout"], [29, 2, 1, "", "load_outputs"]], "deepcave.runs": [[30, 1, 1, "", "AbstractRun"], [30, 3, 1, "", "check_equality"], [31, 0, 0, "-", "converters"], [36, 0, 0, "-", "exceptions"], [37, 0, 0, "-", "group"], [38, 0, 0, "-", "handler"], [39, 0, 0, "-", "objective"], [40, 0, 0, "-", "recorder"], [41, 0, 0, "-", "run"], [42, 0, 0, "-", "status"], [43, 0, 0, "-", "trial"]], "deepcave.runs.AbstractRun": [[30, 2, 1, "", "encode_config"], [30, 2, 1, "", "get_all_costs"], [30, 2, 1, "", "get_budget"], [30, 2, 1, "", "get_budgets"], [30, 2, 1, "", "get_configs"], [30, 2, 1, "", "get_costs"], [30, 2, 1, "", "get_encoded_data"], [30, 2, 1, "", "get_highest_budget"], [30, 2, 1, "", "get_incumbent"], [30, 2, 1, "", "get_objective"], [30, 2, 1, "", "get_objective_id"], [30, 2, 1, "", "get_objective_name"], [30, 2, 1, "", "get_status"], [30, 2, 1, "", "get_trajectory"], [30, 5, 1, "", "hash"], [30, 5, 1, "", "id"], [30, 2, 1, "", "merge_costs"]], "deepcave.runs.converters": [[32, 0, 0, "-", "bohb"], [33, 0, 0, "-", "deepcave"], [34, 0, 0, "-", "smac3v1"], [35, 0, 0, "-", "smac3v2"]], "deepcave.runs.converters.bohb": [[32, 1, 1, "", "BOHBRun"]], "deepcave.runs.converters.bohb.BOHBRun": [[32, 2, 1, "", "from_path"], [32, 5, 1, "", "hash"]], "deepcave.runs.converters.deepcave": [[33, 1, 1, "", "DeepCAVERun"]], "deepcave.runs.converters.deepcave.DeepCAVERun": [[33, 2, 1, "", "from_path"], [33, 5, 1, "", "hash"]], "deepcave.runs.converters.smac3v1": [[34, 1, 1, "", "SMAC3v1Run"]], "deepcave.runs.converters.smac3v1.SMAC3v1Run": [[34, 2, 1, "", "from_path"], [34, 5, 1, "", "hash"]], "deepcave.runs.converters.smac3v2": [[35, 1, 1, "", "SMAC3v2Run"]], "deepcave.runs.converters.smac3v2.SMAC3v2Run": [[35, 2, 1, "", "from_path"], [35, 5, 1, "", "hash"]], "deepcave.runs.exceptions": [[36, 6, 1, "", "NotMergeableError"], [36, 6, 1, "", "NotValidRunError"]], "deepcave.runs.group": [[37, 1, 1, "", "Group"]], "deepcave.runs.group.Group": [[37, 2, 1, "", "get_trajectory"], [37, 5, 1, "", "hash"], [37, 5, 1, "", "id"]], "deepcave.runs.handler": [[38, 1, 1, "", "RunHandler"]], "deepcave.runs.handler.RunHandler": [[38, 2, 1, "", "add_run"], [38, 2, 1, "", "get_available_run_paths"], [38, 2, 1, "", "get_groups"], [38, 2, 1, "", "get_run"], [38, 2, 1, "", "get_run_name"], [38, 2, 1, "", "get_runs"], [38, 2, 1, "", "get_selected_run_names"], [38, 2, 1, "", "get_selected_run_paths"], [38, 2, 1, "", "get_working_directory"], [38, 2, 1, "", "remove_run"], [38, 2, 1, "", "set_working_directory"], [38, 2, 1, "", "update"], [38, 2, 1, "", "update_groups"], [38, 2, 1, "", "update_run"], [38, 2, 1, "", "update_runs"]], "deepcave.runs.objective": [[39, 1, 1, "", "Objective"]], "deepcave.runs.objective.Objective": [[39, 2, 1, "", "__post_init__"]], "deepcave.runs.run": [[41, 1, 1, "", "Run"]], "deepcave.runs.run.Run": [[41, 2, 1, "", "add"], [41, 2, 1, "", "exists"], [41, 2, 1, "", "from_path"], [41, 5, 1, "", "id"]], "deepcave.runs.status": [[42, 1, 1, "", "Status"]], "deepcave.runs.trial": [[43, 1, 1, "", "Trial"]], "deepcave.utils": [[45, 0, 0, "-", "cache"], [46, 0, 0, "-", "cast"], [47, 0, 0, "-", "compression"], [48, 0, 0, "-", "configs"], [49, 0, 0, "-", "configspace"], [50, 0, 0, "-", "dash"], [51, 0, 0, "-", "data_structures"], [52, 0, 0, "-", "docs"], [53, 0, 0, "-", "files"], [54, 0, 0, "-", "hash"], [55, 0, 0, "-", "layout"], [56, 0, 0, "-", "logs"], [57, 0, 0, "-", "notification"], [58, 0, 0, "-", "run_caches"], [59, 0, 0, "-", "styled_plot"], [60, 0, 0, "-", "styled_plotty"], [61, 0, 0, "-", "symbolic_regression"], [62, 0, 0, "-", "url"], [63, 0, 0, "-", "util"]], "deepcave.utils.cache": [[45, 1, 1, "", "Cache"]], "deepcave.utils.cache.Cache": [[45, 2, 1, "", "clear"], [45, 2, 1, "", "get"], [45, 2, 1, "", "has"], [45, 2, 1, "", "read"], [45, 2, 1, "", "set"], [45, 2, 1, "", "set_dict"], [45, 2, 1, "", "write"]], "deepcave.utils.compression": [[47, 3, 1, "", "deserialize"], [47, 3, 1, "", "serialize"]], "deepcave.utils.configs": [[48, 3, 1, "", "parse_config"]], "deepcave.utils.configspace": [[49, 3, 1, "", "sample_border_config"], [49, 3, 1, "", "sample_random_config"]], "deepcave.utils.dash": [[50, 3, 1, "", "flash"]], "deepcave.utils.data_structures": [[51, 3, 1, "", "update_dict"]], "deepcave.utils.layout": [[55, 3, 1, "", "get_select_options"]], "deepcave.utils.run_caches": [[58, 1, 1, "", "RunCaches"]], "deepcave.utils.run_caches.RunCaches": [[58, 2, 1, "", "clear"], [58, 2, 1, "", "clear_run"], [58, 2, 1, "", "get"], [58, 2, 1, "", "set"], [58, 2, 1, "", "update"]], "deepcave.utils.styled_plot": [[59, 1, 1, "", "StyledPlot"]], "deepcave.utils.styled_plot.StyledPlot": [[59, 2, 1, "", "__getattr__"]], "deepcave.utils.styled_plotty": [[60, 3, 1, "", "get_color"], [60, 3, 1, "", "get_discrete_heatmap"], [60, 3, 1, "", "get_hyperparameter_ticks"], [60, 3, 1, "", "get_hyperparameter_ticks_from_values"], [60, 3, 1, "", "hex_to_rgb"], [60, 3, 1, "", "prettify_label"], [60, 3, 1, "", "save_image"]], "deepcave.utils.symbolic_regression": [[61, 3, 1, "", "convert_symb"], [61, 3, 1, "", "exp"], [61, 3, 1, "", "get_function_set"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:function", "4": "py:attribute", "5": "py:property", "6": "py:exception"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "function", "Python function"], "4": ["py", "attribute", "Python attribute"], "5": ["py", "property", "Python property"], "6": ["py", "exception", "Python exception"]}, "titleterms": {"api": [0, 66, 70], "refer": 0, "deepcav": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63], "evalu": [1, 2, 3, 4, 5, 6, 7, 8, 9], "epm": [2, 3, 4, 5, 6], "fanova_forest": 3, "random_forest": 4, "random_forest_surrog": 5, "util": [6, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63], "fanova": 7, "footprint": [8, 28, 84], "lpi": 9, "layout": [10, 11, 12, 55], "not_found": 11, "sidebar": 12, "plugin": [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 88], "budget": [14, 82], "dynam": 15, "hyperparamet": [16, 17, 18, 19], "import": [17, 65, 87], "pdp": 18, "symbolic_explan": 19, "object": [20, 21, 22, 23, 24, 39, 85, 89], "configuration_cub": 21, "cost_over_tim": 22, "parallel_coordin": 23, "pareto_front": 24, "static": 25, "summari": [26, 27, 28, 29], "configur": [27, 83, 84, 85, 89], "overview": [29, 85, 89], "run": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 73], "convert": [31, 32, 33, 34, 35, 64], "bohb": 32, "smac3v1": 34, "smac3v2": 35, "except": 36, "group": 37, "handler": 38, "record": [40, 70, 72, 73], "statu": 42, "trial": 43, "cach": 45, "cast": 46, "compress": 47, "config": 48, "configspac": 49, "dash": 50, "data_structur": 51, "doc": 52, "file": 53, "hash": 54, "log": 56, "notif": 57, "run_cach": 58, "styled_plot": 59, "styled_plotti": 60, "symbolic_regress": 61, "url": 62, "custom": [64, 88], "parallel": [67, 90], "coordin": [67, 90], "partial": [68, 92], "depend": [68, 92], "comput": [69, 75, 76, 95], "time": [69, 75, 76, 86, 95], "exampl": 70, "multi": [71, 74], "layer": [71, 74], "perceptron": [71, 74], "via": [71, 74], "sklearn": 71, "minim": 73, "pytorch": 74, "frequent": 77, "ask": 77, "question": 77, "get": 78, "start": 78, "glossari": 79, "home": 80, "featur": 80, "citat": 80, "instal": [81, 94], "redi": [81, 94], "server": [81, 94], "mac": 81, "relat": 81, "correl": 82, "option": [82, 90], "interpret": [82, 86], "cube": 83, "perform": 84, "plot": [84, 90], "coverag": 84, "code": 85, "cost": 86, "over": 86, "input": 86, "filter": 86, "structur": 88, "type": 88, "quick": 89, "inform": 89, "meta": 89, "status": 89, "space": 89, "us": 90, "pareto": 91, "front": 91, "symbol": 93, "explan": 93}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "sphinx": 60}, "alltitles": {"API References": [[0, "api-references"]], "deepcave.evaluators": [[1, "module-deepcave.evaluators"]], "deepcave.evaluators.epm": [[2, "module-deepcave.evaluators.epm"]], "deepcave.evaluators.epm.fanova_forest": [[3, "module-deepcave.evaluators.epm.fanova_forest"]], "deepcave.evaluators.epm.random_forest": [[4, "module-deepcave.evaluators.epm.random_forest"]], "deepcave.evaluators.epm.random_forest_surrogate": [[5, "module-deepcave.evaluators.epm.random_forest_surrogate"]], "deepcave.evaluators.epm.utils": [[6, "module-deepcave.evaluators.epm.utils"]], "deepcave.evaluators.fanova": [[7, "module-deepcave.evaluators.fanova"]], "deepcave.evaluators.footprint": [[8, "module-deepcave.evaluators.footprint"]], "deepcave.evaluators.lpi": [[9, "module-deepcave.evaluators.lpi"]], "deepcave.layouts": [[10, "module-deepcave.layouts"]], "deepcave.layouts.not_found": [[11, "module-deepcave.layouts.not_found"]], "deepcave.layouts.sidebar": [[12, "module-deepcave.layouts.sidebar"]], "deepcave.plugins": [[13, "module-deepcave.plugins"]], "deepcave.plugins.budget": [[14, "module-deepcave.plugins.budget"]], "deepcave.plugins.dynamic": [[15, "module-deepcave.plugins.dynamic"]], "deepcave.plugins.hyperparameter": [[16, "module-deepcave.plugins.hyperparameter"]], "deepcave.plugins.hyperparameter.importances": [[17, "module-deepcave.plugins.hyperparameter.importances"]], "deepcave.plugins.hyperparameter.pdp": [[18, "module-deepcave.plugins.hyperparameter.pdp"]], "deepcave.plugins.hyperparameter.symbolic_explanations": [[19, "module-deepcave.plugins.hyperparameter.symbolic_explanations"]], "deepcave.plugins.objective": [[20, "module-deepcave.plugins.objective"]], "deepcave.plugins.objective.configuration_cube": [[21, "module-deepcave.plugins.objective.configuration_cube"]], "deepcave.plugins.objective.cost_over_time": [[22, "module-deepcave.plugins.objective.cost_over_time"]], "deepcave.plugins.objective.parallel_coordinates": [[23, "module-deepcave.plugins.objective.parallel_coordinates"]], "deepcave.plugins.objective.pareto_front": [[24, "module-deepcave.plugins.objective.pareto_front"]], "deepcave.plugins.static": [[25, "module-deepcave.plugins.static"]], "deepcave.plugins.summary": [[26, "module-deepcave.plugins.summary"]], "deepcave.plugins.summary.configurations": [[27, "module-deepcave.plugins.summary.configurations"]], "deepcave.plugins.summary.footprint": [[28, "module-deepcave.plugins.summary.footprint"]], "deepcave.plugins.summary.overview": [[29, "module-deepcave.plugins.summary.overview"]], "deepcave.runs": [[30, "module-deepcave.runs"]], "deepcave.runs.converters": [[31, "module-deepcave.runs.converters"]], "deepcave.runs.converters.bohb": [[32, "module-deepcave.runs.converters.bohb"]], "deepcave.runs.converters.deepcave": [[33, "module-deepcave.runs.converters.deepcave"]], "deepcave.runs.converters.smac3v1": [[34, "module-deepcave.runs.converters.smac3v1"]], "deepcave.runs.converters.smac3v2": [[35, "module-deepcave.runs.converters.smac3v2"]], "deepcave.runs.exceptions": [[36, "module-deepcave.runs.exceptions"]], "deepcave.runs.group": [[37, "module-deepcave.runs.group"]], "deepcave.runs.handler": [[38, "module-deepcave.runs.handler"]], "deepcave.runs.objective": [[39, "module-deepcave.runs.objective"]], "deepcave.runs.recorder": [[40, "module-deepcave.runs.recorder"]], "deepcave.runs.run": [[41, "module-deepcave.runs.run"]], "deepcave.runs.status": [[42, "module-deepcave.runs.status"]], "deepcave.runs.trial": [[43, "module-deepcave.runs.trial"]], "deepcave.utils": [[44, "module-deepcave.utils"]], "deepcave.utils.cache": [[45, "module-deepcave.utils.cache"]], "deepcave.utils.cast": [[46, "module-deepcave.utils.cast"]], "deepcave.utils.compression": [[47, "module-deepcave.utils.compression"]], "deepcave.utils.configs": [[48, "module-deepcave.utils.configs"]], "deepcave.utils.configspace": [[49, "module-deepcave.utils.configspace"]], "deepcave.utils.dash": [[50, "module-deepcave.utils.dash"]], "deepcave.utils.data_structures": [[51, "module-deepcave.utils.data_structures"]], "deepcave.utils.docs": [[52, "module-deepcave.utils.docs"]], "deepcave.utils.files": [[53, "module-deepcave.utils.files"]], "deepcave.utils.hash": [[54, "module-deepcave.utils.hash"]], "deepcave.utils.layout": [[55, "module-deepcave.utils.layout"]], "deepcave.utils.logs": [[56, "module-deepcave.utils.logs"]], "deepcave.utils.notification": [[57, "module-deepcave.utils.notification"]], "deepcave.utils.run_caches": [[58, "module-deepcave.utils.run_caches"]], "deepcave.utils.styled_plot": [[59, "module-deepcave.utils.styled_plot"]], "deepcave.utils.styled_plotty": [[60, "module-deepcave.utils.styled_plotty"]], "deepcave.utils.symbolic_regression": [[61, "module-deepcave.utils.symbolic_regression"]], "deepcave.utils.url": [[62, "module-deepcave.utils.url"]], "deepcave.utils.util": [[63, "module-deepcave.utils.util"]], "Converters": [[64, "converters"]], "Custom Converter": [[64, "custom-converter"]], "Importances": [[65, "importances"], [87, "importances"]], "API": [[66, "api"], [70, "api"]], "Parallel Coordinates": [[67, "parallel-coordinates"], [90, "parallel-coordinates"]], "Partial Dependencies": [[68, "partial-dependencies"], [92, "partial-dependencies"]], "Computation times": [[69, "computation-times"], [75, "computation-times"], [76, "computation-times"], [95, "computation-times"]], "Examples": [[70, "examples"]], "Record": [[70, "record"], [72, "record"]], "Multi-Layer Perceptron via Sklearn": [[71, "multi-layer-perceptron-via-sklearn"]], "Record Minimal Run": [[73, "record-minimal-run"]], "Multi-Layer Perceptron via PyTorch": [[74, "multi-layer-perceptron-via-pytorch"]], "Frequently Asked Questions": [[77, "frequently-asked-questions"]], "Getting Started": [[78, "getting-started"]], "Glossary": [[79, "glossary"]], "Home": [[80, "home"]], "Features": [[80, "features"]], "Citation": [[80, "citation"]], "Installation": [[81, "installation"]], "Redis Server": [[81, "id1"]], "Mac Related": [[81, "mac-related"]], "Budget Correlation": [[82, "budget-correlation"]], "Options": [[82, "options"], [90, "options"]], "Correlation Interpretation": [[82, "correlation-interpretation"]], "Configuration Cube": [[83, "configuration-cube"]], "Configuration Footprint": [[84, "configuration-footprint"]], "Performance plot": [[84, "performance-plot"]], "Coverage plot": [[84, "coverage-plot"]], "Configurations": [[85, "configurations"]], "Overview": [[85, "overview"], [89, "overview"]], "Objectives": [[85, "objectives"], [89, "objectives"]], "Configuration": [[85, "configuration"]], "Code": [[85, "code"]], "Cost Over Time": [[86, "cost-over-time"]], "Inputs and Filters": [[86, "inputs-and-filters"]], "Interpretation": [[86, "interpretation"]], "Plugins": [[88, "plugins"]], "Plugin Structure": [[88, "plugin-structure"]], "Plugin Types": [[88, "plugin-types"]], "Custom Plugin": [[88, "custom-plugin"]], "Quick Information": [[89, "quick-information"]], "Meta": [[89, "meta"]], "Statuses": [[89, "statuses"]], "Configuration Space": [[89, "configuration-space"]], "Using the plot": [[90, "using-the-plot"]], "Pareto Front": [[91, "pareto-front"]], "Symbolic Explanations": [[93, "symbolic-explanations"]], "Install Redis Server": [[94, "install-redis-server"]]}, "indexentries": {"deepcave.evaluators": [[1, "module-deepcave.evaluators"]], "module": [[1, "module-deepcave.evaluators"], [2, "module-deepcave.evaluators.epm"], [3, "module-deepcave.evaluators.epm.fanova_forest"], [4, "module-deepcave.evaluators.epm.random_forest"], [5, "module-deepcave.evaluators.epm.random_forest_surrogate"], [6, "module-deepcave.evaluators.epm.utils"], [7, "module-deepcave.evaluators.fanova"], [8, "module-deepcave.evaluators.footprint"], [9, "module-deepcave.evaluators.lpi"], [10, "module-deepcave.layouts"], [11, "module-deepcave.layouts.not_found"], [12, "module-deepcave.layouts.sidebar"], [13, "module-deepcave.plugins"], [14, "module-deepcave.plugins.budget"], [15, "module-deepcave.plugins.dynamic"], [16, "module-deepcave.plugins.hyperparameter"], [17, "module-deepcave.plugins.hyperparameter.importances"], [18, "module-deepcave.plugins.hyperparameter.pdp"], [19, "module-deepcave.plugins.hyperparameter.symbolic_explanations"], [20, "module-deepcave.plugins.objective"], [21, "module-deepcave.plugins.objective.configuration_cube"], [22, "module-deepcave.plugins.objective.cost_over_time"], [23, "module-deepcave.plugins.objective.parallel_coordinates"], [24, "module-deepcave.plugins.objective.pareto_front"], [25, "module-deepcave.plugins.static"], [26, "module-deepcave.plugins.summary"], [27, "module-deepcave.plugins.summary.configurations"], [28, "module-deepcave.plugins.summary.footprint"], [29, "module-deepcave.plugins.summary.overview"], [30, "module-deepcave.runs"], [31, "module-deepcave.runs.converters"], [32, "module-deepcave.runs.converters.bohb"], [33, "module-deepcave.runs.converters.deepcave"], [34, "module-deepcave.runs.converters.smac3v1"], [35, "module-deepcave.runs.converters.smac3v2"], [36, "module-deepcave.runs.exceptions"], [37, "module-deepcave.runs.group"], [38, "module-deepcave.runs.handler"], [39, "module-deepcave.runs.objective"], [40, "module-deepcave.runs.recorder"], [41, "module-deepcave.runs.run"], [42, "module-deepcave.runs.status"], [43, "module-deepcave.runs.trial"], [44, "module-deepcave.utils"], [45, "module-deepcave.utils.cache"], [46, "module-deepcave.utils.cast"], [47, "module-deepcave.utils.compression"], [48, "module-deepcave.utils.configs"], [49, "module-deepcave.utils.configspace"], [50, "module-deepcave.utils.dash"], [51, "module-deepcave.utils.data_structures"], [52, "module-deepcave.utils.docs"], [53, "module-deepcave.utils.files"], [54, "module-deepcave.utils.hash"], [55, "module-deepcave.utils.layout"], [56, "module-deepcave.utils.logs"], [57, "module-deepcave.utils.notification"], [58, "module-deepcave.utils.run_caches"], [59, "module-deepcave.utils.styled_plot"], [60, "module-deepcave.utils.styled_plotty"], [61, "module-deepcave.utils.symbolic_regression"], [62, "module-deepcave.utils.url"], [63, "module-deepcave.utils.util"]], "deepcave.evaluators.epm": [[2, "module-deepcave.evaluators.epm"]], "fanovaforest (class in deepcave.evaluators.epm.fanova_forest)": [[3, "deepcave.evaluators.epm.fanova_forest.FanovaForest"]], "compute_marginals() (deepcave.evaluators.epm.fanova_forest.fanovaforest method)": [[3, "deepcave.evaluators.epm.fanova_forest.FanovaForest.compute_marginals"]], "deepcave.evaluators.epm.fanova_forest": [[3, "module-deepcave.evaluators.epm.fanova_forest"]], "randomforest (class in deepcave.evaluators.epm.random_forest)": [[4, "deepcave.evaluators.epm.random_forest.RandomForest"]], "deepcave.evaluators.epm.random_forest": [[4, "module-deepcave.evaluators.epm.random_forest"]], "predict() (deepcave.evaluators.epm.random_forest.randomforest method)": [[4, "deepcave.evaluators.epm.random_forest.RandomForest.predict"]], "predict_marginalized() (deepcave.evaluators.epm.random_forest.randomforest method)": [[4, "deepcave.evaluators.epm.random_forest.RandomForest.predict_marginalized"]], "random() (in module deepcave.evaluators.epm.random_forest)": [[4, "deepcave.evaluators.epm.random_forest.random"]], "train() (deepcave.evaluators.epm.random_forest.randomforest method)": [[4, "deepcave.evaluators.epm.random_forest.RandomForest.train"]], "randomforestsurrogate (class in deepcave.evaluators.epm.random_forest_surrogate)": [[5, "deepcave.evaluators.epm.random_forest_surrogate.RandomForestSurrogate"]], "deepcave.evaluators.epm.random_forest_surrogate": [[5, "module-deepcave.evaluators.epm.random_forest_surrogate"]], "predict() (deepcave.evaluators.epm.random_forest_surrogate.randomforestsurrogate method)": [[5, "deepcave.evaluators.epm.random_forest_surrogate.RandomForestSurrogate.predict"]], "deepcave.evaluators.epm.utils": [[6, "module-deepcave.evaluators.epm.utils"]], "get_types() (in module deepcave.evaluators.epm.utils)": [[6, "deepcave.evaluators.epm.utils.get_types"]], "calculate() (deepcave.evaluators.fanova.fanova method)": [[7, "deepcave.evaluators.fanova.fANOVA.calculate"]], "deepcave.evaluators.fanova": [[7, "module-deepcave.evaluators.fanova"]], "fanova (class in deepcave.evaluators.fanova)": [[7, "deepcave.evaluators.fanova.fANOVA"]], "get_importances() (deepcave.evaluators.fanova.fanova method)": [[7, "deepcave.evaluators.fanova.fANOVA.get_importances"]], "deepcave.evaluators.footprint": [[8, "module-deepcave.evaluators.footprint"]], "deepcave.evaluators.lpi": [[9, "module-deepcave.evaluators.lpi"]], "random() (in module deepcave.evaluators.lpi)": [[9, "deepcave.evaluators.lpi.random"]], "layout (class in deepcave.layouts)": [[10, "deepcave.layouts.Layout"]], "__call__() (deepcave.layouts.layout method)": [[10, "deepcave.layouts.Layout.__call__"]], "deepcave.layouts": [[10, "module-deepcave.layouts"]], "notfoundlayout (class in deepcave.layouts.not_found)": [[11, "deepcave.layouts.not_found.NotFoundLayout"]], "__call__() (deepcave.layouts.not_found.notfoundlayout method)": [[11, "deepcave.layouts.not_found.NotFoundLayout.__call__"]], "deepcave.layouts.not_found": [[11, "module-deepcave.layouts.not_found"]], "sidebarlayout (class in deepcave.layouts.sidebar)": [[12, "deepcave.layouts.sidebar.SidebarLayout"]], "__call__() (deepcave.layouts.sidebar.sidebarlayout method)": [[12, "deepcave.layouts.sidebar.SidebarLayout.__call__"]], "deepcave.layouts.sidebar": [[12, "module-deepcave.layouts.sidebar"]], "plugin (class in deepcave.plugins)": [[13, "deepcave.plugins.Plugin"]], "__call__() (deepcave.plugins.plugin method)": [[13, "deepcave.plugins.Plugin.__call__"]], "activate_run_selection (deepcave.plugins.plugin attribute)": [[13, "deepcave.plugins.Plugin.activate_run_selection"]], "button_caption (deepcave.plugins.plugin attribute)": [[13, "deepcave.plugins.Plugin.button_caption"]], "check_run_compatibility() (deepcave.plugins.plugin static method)": [[13, "deepcave.plugins.Plugin.check_run_compatibility"]], "check_runs_compatibility() (deepcave.plugins.plugin method)": [[13, "deepcave.plugins.Plugin.check_runs_compatibility"]], "deepcave.plugins": [[13, "module-deepcave.plugins"]], "description (deepcave.plugins.plugin attribute)": [[13, "deepcave.plugins.Plugin.description"]], "generate_inputs() (deepcave.plugins.plugin method)": [[13, "deepcave.plugins.Plugin.generate_inputs"]], "generate_outputs() (deepcave.plugins.plugin class method)": [[13, "deepcave.plugins.Plugin.generate_outputs"]], "get_base_url() (deepcave.plugins.plugin class method)": [[13, "deepcave.plugins.Plugin.get_base_url"]], "get_filter_layout() (deepcave.plugins.plugin static method)": [[13, "deepcave.plugins.Plugin.get_filter_layout"]], "get_input_layout() (deepcave.plugins.plugin static method)": [[13, "deepcave.plugins.Plugin.get_input_layout"]], "get_mpl_output_layout() (deepcave.plugins.plugin static method)": [[13, "deepcave.plugins.Plugin.get_mpl_output_layout"]], "get_output_layout() (deepcave.plugins.plugin static method)": [[13, "deepcave.plugins.Plugin.get_output_layout"]], "get_run_input_layout() (deepcave.plugins.plugin static method)": [[13, "deepcave.plugins.Plugin.get_run_input_layout"]], "get_selected_runs() (deepcave.plugins.plugin method)": [[13, "deepcave.plugins.Plugin.get_selected_runs"]], "help (deepcave.plugins.plugin attribute)": [[13, "deepcave.plugins.Plugin.help"]], "icon (deepcave.plugins.plugin attribute)": [[13, "deepcave.plugins.Plugin.icon"]], "id (deepcave.plugins.plugin attribute)": [[13, "deepcave.plugins.Plugin.id"]], "load_dependency_inputs() (deepcave.plugins.plugin method)": [[13, "deepcave.plugins.Plugin.load_dependency_inputs"]], "load_inputs() (deepcave.plugins.plugin method)": [[13, "deepcave.plugins.Plugin.load_inputs"]], "load_mpl_outputs() (deepcave.plugins.plugin static method)": [[13, "deepcave.plugins.Plugin.load_mpl_outputs"]], "load_outputs() (deepcave.plugins.plugin static method)": [[13, "deepcave.plugins.Plugin.load_outputs"]], "load_run_inputs() (deepcave.plugins.plugin static method)": [[13, "deepcave.plugins.Plugin.load_run_inputs"]], "name (deepcave.plugins.plugin attribute)": [[13, "deepcave.plugins.Plugin.name"]], "process() (deepcave.plugins.plugin static method)": [[13, "deepcave.plugins.Plugin.process"]], "register_callbacks() (deepcave.plugins.plugin method)": [[13, "deepcave.plugins.Plugin.register_callbacks"]], "register_input() (deepcave.plugins.plugin method)": [[13, "deepcave.plugins.Plugin.register_input"]], "register_output() (deepcave.plugins.plugin method)": [[13, "deepcave.plugins.Plugin.register_output"]], "deepcave.plugins.budget": [[14, "module-deepcave.plugins.budget"]], "dynamicplugin (class in deepcave.plugins.dynamic)": [[15, "deepcave.plugins.dynamic.DynamicPlugin"]], "__call__() (deepcave.plugins.dynamic.dynamicplugin method)": [[15, "deepcave.plugins.dynamic.DynamicPlugin.__call__"]], "deepcave.plugins.dynamic": [[15, "module-deepcave.plugins.dynamic"]], "register_callbacks() (deepcave.plugins.dynamic.dynamicplugin method)": [[15, "deepcave.plugins.dynamic.DynamicPlugin.register_callbacks"]], "deepcave.plugins.hyperparameter": [[16, "module-deepcave.plugins.hyperparameter"]], "importances (class in deepcave.plugins.hyperparameter.importances)": [[17, "deepcave.plugins.hyperparameter.importances.Importances"]], "deepcave.plugins.hyperparameter.importances": [[17, "module-deepcave.plugins.hyperparameter.importances"]], "get_filter_layout() (deepcave.plugins.hyperparameter.importances.importances static method)": [[17, "deepcave.plugins.hyperparameter.importances.Importances.get_filter_layout"]], "get_input_layout() (deepcave.plugins.hyperparameter.importances.importances static method)": [[17, "deepcave.plugins.hyperparameter.importances.Importances.get_input_layout"]], "get_mpl_output_layout() (deepcave.plugins.hyperparameter.importances.importances static method)": [[17, "deepcave.plugins.hyperparameter.importances.Importances.get_mpl_output_layout"]], "get_output_layout() (deepcave.plugins.hyperparameter.importances.importances static method)": [[17, "deepcave.plugins.hyperparameter.importances.Importances.get_output_layout"]], "load_dependency_inputs() (deepcave.plugins.hyperparameter.importances.importances method)": [[17, "deepcave.plugins.hyperparameter.importances.Importances.load_dependency_inputs"]], "load_inputs() (deepcave.plugins.hyperparameter.importances.importances method)": [[17, "deepcave.plugins.hyperparameter.importances.Importances.load_inputs"]], "load_mpl_outputs() (deepcave.plugins.hyperparameter.importances.importances static method)": [[17, "deepcave.plugins.hyperparameter.importances.Importances.load_mpl_outputs"]], "load_outputs() (deepcave.plugins.hyperparameter.importances.importances static method)": [[17, "deepcave.plugins.hyperparameter.importances.Importances.load_outputs"]], "process() (deepcave.plugins.hyperparameter.importances.importances static method)": [[17, "deepcave.plugins.hyperparameter.importances.Importances.process"]], "partialdependencies (class in deepcave.plugins.hyperparameter.pdp)": [[18, "deepcave.plugins.hyperparameter.pdp.PartialDependencies"]], "deepcave.plugins.hyperparameter.pdp": [[18, "module-deepcave.plugins.hyperparameter.pdp"]], "get_filter_layout() (deepcave.plugins.hyperparameter.pdp.partialdependencies static method)": [[18, "deepcave.plugins.hyperparameter.pdp.PartialDependencies.get_filter_layout"]], "get_input_layout() (deepcave.plugins.hyperparameter.pdp.partialdependencies static method)": [[18, "deepcave.plugins.hyperparameter.pdp.PartialDependencies.get_input_layout"]], "get_output_layout() (deepcave.plugins.hyperparameter.pdp.partialdependencies static method)": [[18, "deepcave.plugins.hyperparameter.pdp.PartialDependencies.get_output_layout"]], "load_dependency_inputs() (deepcave.plugins.hyperparameter.pdp.partialdependencies method)": [[18, "deepcave.plugins.hyperparameter.pdp.PartialDependencies.load_dependency_inputs"]], "load_inputs() (deepcave.plugins.hyperparameter.pdp.partialdependencies method)": [[18, "deepcave.plugins.hyperparameter.pdp.PartialDependencies.load_inputs"]], "load_outputs() (deepcave.plugins.hyperparameter.pdp.partialdependencies static method)": [[18, "deepcave.plugins.hyperparameter.pdp.PartialDependencies.load_outputs"]], "process() (deepcave.plugins.hyperparameter.pdp.partialdependencies static method)": [[18, "deepcave.plugins.hyperparameter.pdp.PartialDependencies.process"]], "symbolicexplanations (class in deepcave.plugins.hyperparameter.symbolic_explanations)": [[19, "deepcave.plugins.hyperparameter.symbolic_explanations.SymbolicExplanations"]], "deepcave.plugins.hyperparameter.symbolic_explanations": [[19, "module-deepcave.plugins.hyperparameter.symbolic_explanations"]], "get_input_layout() (deepcave.plugins.hyperparameter.symbolic_explanations.symbolicexplanations static method)": [[19, "deepcave.plugins.hyperparameter.symbolic_explanations.SymbolicExplanations.get_input_layout"]], "get_output_layout() (deepcave.plugins.hyperparameter.symbolic_explanations.symbolicexplanations static method)": [[19, "deepcave.plugins.hyperparameter.symbolic_explanations.SymbolicExplanations.get_output_layout"]], "load_dependency_inputs() (deepcave.plugins.hyperparameter.symbolic_explanations.symbolicexplanations method)": [[19, "deepcave.plugins.hyperparameter.symbolic_explanations.SymbolicExplanations.load_dependency_inputs"]], "load_inputs() (deepcave.plugins.hyperparameter.symbolic_explanations.symbolicexplanations method)": [[19, "deepcave.plugins.hyperparameter.symbolic_explanations.SymbolicExplanations.load_inputs"]], "load_outputs() (deepcave.plugins.hyperparameter.symbolic_explanations.symbolicexplanations static method)": [[19, "deepcave.plugins.hyperparameter.symbolic_explanations.SymbolicExplanations.load_outputs"]], "process() (deepcave.plugins.hyperparameter.symbolic_explanations.symbolicexplanations static method)": [[19, "deepcave.plugins.hyperparameter.symbolic_explanations.SymbolicExplanations.process"]], "deepcave.plugins.objective": [[20, "module-deepcave.plugins.objective"]], "configurationcube (class in deepcave.plugins.objective.configuration_cube)": [[21, "deepcave.plugins.objective.configuration_cube.ConfigurationCube"]], "deepcave.plugins.objective.configuration_cube": [[21, "module-deepcave.plugins.objective.configuration_cube"]], "get_filter_layout() (deepcave.plugins.objective.configuration_cube.configurationcube static method)": [[21, "deepcave.plugins.objective.configuration_cube.ConfigurationCube.get_filter_layout"]], "get_input_layout() (deepcave.plugins.objective.configuration_cube.configurationcube static method)": [[21, "deepcave.plugins.objective.configuration_cube.ConfigurationCube.get_input_layout"]], "get_output_layout() (deepcave.plugins.objective.configuration_cube.configurationcube static method)": [[21, "deepcave.plugins.objective.configuration_cube.ConfigurationCube.get_output_layout"]], "load_dependency_inputs() (deepcave.plugins.objective.configuration_cube.configurationcube method)": [[21, "deepcave.plugins.objective.configuration_cube.ConfigurationCube.load_dependency_inputs"]], "load_inputs() (deepcave.plugins.objective.configuration_cube.configurationcube method)": [[21, "deepcave.plugins.objective.configuration_cube.ConfigurationCube.load_inputs"]], "load_outputs() (deepcave.plugins.objective.configuration_cube.configurationcube static method)": [[21, "deepcave.plugins.objective.configuration_cube.ConfigurationCube.load_outputs"]], "process() (deepcave.plugins.objective.configuration_cube.configurationcube static method)": [[21, "deepcave.plugins.objective.configuration_cube.ConfigurationCube.process"]], "costovertime (class in deepcave.plugins.objective.cost_over_time)": [[22, "deepcave.plugins.objective.cost_over_time.CostOverTime"]], "check_runs_compatibility() (deepcave.plugins.objective.cost_over_time.costovertime method)": [[22, "deepcave.plugins.objective.cost_over_time.CostOverTime.check_runs_compatibility"]], "deepcave.plugins.objective.cost_over_time": [[22, "module-deepcave.plugins.objective.cost_over_time"]], "get_filter_layout() (deepcave.plugins.objective.cost_over_time.costovertime static method)": [[22, "deepcave.plugins.objective.cost_over_time.CostOverTime.get_filter_layout"]], "get_input_layout() (deepcave.plugins.objective.cost_over_time.costovertime static method)": [[22, "deepcave.plugins.objective.cost_over_time.CostOverTime.get_input_layout"]], "get_output_layout() (deepcave.plugins.objective.cost_over_time.costovertime static method)": [[22, "deepcave.plugins.objective.cost_over_time.CostOverTime.get_output_layout"]], "load_inputs() (deepcave.plugins.objective.cost_over_time.costovertime method)": [[22, "deepcave.plugins.objective.cost_over_time.CostOverTime.load_inputs"]], "load_outputs() (deepcave.plugins.objective.cost_over_time.costovertime static method)": [[22, "deepcave.plugins.objective.cost_over_time.CostOverTime.load_outputs"]], "process() (deepcave.plugins.objective.cost_over_time.costovertime static method)": [[22, "deepcave.plugins.objective.cost_over_time.CostOverTime.process"]], "parallelcoordinates (class in deepcave.plugins.objective.parallel_coordinates)": [[23, "deepcave.plugins.objective.parallel_coordinates.ParallelCoordinates"]], "deepcave.plugins.objective.parallel_coordinates": [[23, "module-deepcave.plugins.objective.parallel_coordinates"]], "get_filter_layout() (deepcave.plugins.objective.parallel_coordinates.parallelcoordinates static method)": [[23, "deepcave.plugins.objective.parallel_coordinates.ParallelCoordinates.get_filter_layout"]], "get_input_layout() (deepcave.plugins.objective.parallel_coordinates.parallelcoordinates static method)": [[23, "deepcave.plugins.objective.parallel_coordinates.ParallelCoordinates.get_input_layout"]], "get_output_layout() (deepcave.plugins.objective.parallel_coordinates.parallelcoordinates static method)": [[23, "deepcave.plugins.objective.parallel_coordinates.ParallelCoordinates.get_output_layout"]], "load_dependency_inputs() (deepcave.plugins.objective.parallel_coordinates.parallelcoordinates method)": [[23, "deepcave.plugins.objective.parallel_coordinates.ParallelCoordinates.load_dependency_inputs"]], "load_inputs() (deepcave.plugins.objective.parallel_coordinates.parallelcoordinates method)": [[23, "deepcave.plugins.objective.parallel_coordinates.ParallelCoordinates.load_inputs"]], "load_outputs() (deepcave.plugins.objective.parallel_coordinates.parallelcoordinates static method)": [[23, "deepcave.plugins.objective.parallel_coordinates.ParallelCoordinates.load_outputs"]], "process() (deepcave.plugins.objective.parallel_coordinates.parallelcoordinates static method)": [[23, "deepcave.plugins.objective.parallel_coordinates.ParallelCoordinates.process"]], "paretofront (class in deepcave.plugins.objective.pareto_front)": [[24, "deepcave.plugins.objective.pareto_front.ParetoFront"]], "check_runs_compatibility() (deepcave.plugins.objective.pareto_front.paretofront method)": [[24, "deepcave.plugins.objective.pareto_front.ParetoFront.check_runs_compatibility"]], "deepcave.plugins.objective.pareto_front": [[24, "module-deepcave.plugins.objective.pareto_front"]], "get_filter_layout() (deepcave.plugins.objective.pareto_front.paretofront static method)": [[24, "deepcave.plugins.objective.pareto_front.ParetoFront.get_filter_layout"]], "get_input_layout() (deepcave.plugins.objective.pareto_front.paretofront static method)": [[24, "deepcave.plugins.objective.pareto_front.ParetoFront.get_input_layout"]], "get_mpl_output_layout() (deepcave.plugins.objective.pareto_front.paretofront static method)": [[24, "deepcave.plugins.objective.pareto_front.ParetoFront.get_mpl_output_layout"]], "get_output_layout() (deepcave.plugins.objective.pareto_front.paretofront static method)": [[24, "deepcave.plugins.objective.pareto_front.ParetoFront.get_output_layout"]], "load_inputs() (deepcave.plugins.objective.pareto_front.paretofront method)": [[24, "deepcave.plugins.objective.pareto_front.ParetoFront.load_inputs"]], "load_mpl_outputs() (deepcave.plugins.objective.pareto_front.paretofront static method)": [[24, "deepcave.plugins.objective.pareto_front.ParetoFront.load_mpl_outputs"]], "load_outputs() (deepcave.plugins.objective.pareto_front.paretofront static method)": [[24, "deepcave.plugins.objective.pareto_front.ParetoFront.load_outputs"]], "process() (deepcave.plugins.objective.pareto_front.paretofront static method)": [[24, "deepcave.plugins.objective.pareto_front.ParetoFront.process"]], "pluginstate (class in deepcave.plugins.static)": [[25, "deepcave.plugins.static.PluginState"]], "staticplugin (class in deepcave.plugins.static)": [[25, "deepcave.plugins.static.StaticPlugin"]], "__call__() (deepcave.plugins.static.staticplugin method)": [[25, "deepcave.plugins.static.StaticPlugin.__call__"]], "deepcave.plugins.static": [[25, "module-deepcave.plugins.static"]], "register_callbacks() (deepcave.plugins.static.staticplugin method)": [[25, "deepcave.plugins.static.StaticPlugin.register_callbacks"]], "deepcave.plugins.summary": [[26, "module-deepcave.plugins.summary"]], "configurations (class in deepcave.plugins.summary.configurations)": [[27, "deepcave.plugins.summary.configurations.Configurations"]], "deepcave.plugins.summary.configurations": [[27, "module-deepcave.plugins.summary.configurations"]], "get_input_layout() (deepcave.plugins.summary.configurations.configurations static method)": [[27, "deepcave.plugins.summary.configurations.Configurations.get_input_layout"]], "get_link() (deepcave.plugins.summary.configurations.configurations static method)": [[27, "deepcave.plugins.summary.configurations.Configurations.get_link"]], "get_output_layout() (deepcave.plugins.summary.configurations.configurations static method)": [[27, "deepcave.plugins.summary.configurations.Configurations.get_output_layout"]], "load_dependency_inputs() (deepcave.plugins.summary.configurations.configurations method)": [[27, "deepcave.plugins.summary.configurations.Configurations.load_dependency_inputs"]], "load_inputs() (deepcave.plugins.summary.configurations.configurations method)": [[27, "deepcave.plugins.summary.configurations.Configurations.load_inputs"]], "load_outputs() (deepcave.plugins.summary.configurations.configurations static method)": [[27, "deepcave.plugins.summary.configurations.Configurations.load_outputs"]], "process() (deepcave.plugins.summary.configurations.configurations static method)": [[27, "deepcave.plugins.summary.configurations.Configurations.process"]], "footprint (class in deepcave.plugins.summary.footprint)": [[28, "deepcave.plugins.summary.footprint.FootPrint"]], "deepcave.plugins.summary.footprint": [[28, "module-deepcave.plugins.summary.footprint"]], "get_filter_layout() (deepcave.plugins.summary.footprint.footprint static method)": [[28, "deepcave.plugins.summary.footprint.FootPrint.get_filter_layout"]], "get_input_layout() (deepcave.plugins.summary.footprint.footprint static method)": [[28, "deepcave.plugins.summary.footprint.FootPrint.get_input_layout"]], "get_mpl_output_layout() (deepcave.plugins.summary.footprint.footprint static method)": [[28, "deepcave.plugins.summary.footprint.FootPrint.get_mpl_output_layout"]], "get_output_layout() (deepcave.plugins.summary.footprint.footprint static method)": [[28, "deepcave.plugins.summary.footprint.FootPrint.get_output_layout"]], "load_dependency_inputs() (deepcave.plugins.summary.footprint.footprint method)": [[28, "deepcave.plugins.summary.footprint.FootPrint.load_dependency_inputs"]], "load_inputs() (deepcave.plugins.summary.footprint.footprint method)": [[28, "deepcave.plugins.summary.footprint.FootPrint.load_inputs"]], "load_mpl_outputs() (deepcave.plugins.summary.footprint.footprint static method)": [[28, "deepcave.plugins.summary.footprint.FootPrint.load_mpl_outputs"]], "load_outputs() (deepcave.plugins.summary.footprint.footprint static method)": [[28, "deepcave.plugins.summary.footprint.FootPrint.load_outputs"]], "process() (deepcave.plugins.summary.footprint.footprint static method)": [[28, "deepcave.plugins.summary.footprint.FootPrint.process"]], "overview (class in deepcave.plugins.summary.overview)": [[29, "deepcave.plugins.summary.overview.Overview"]], "deepcave.plugins.summary.overview": [[29, "module-deepcave.plugins.summary.overview"]], "get_output_layout() (deepcave.plugins.summary.overview.overview static method)": [[29, "deepcave.plugins.summary.overview.Overview.get_output_layout"]], "load_outputs() (deepcave.plugins.summary.overview.overview static method)": [[29, "deepcave.plugins.summary.overview.Overview.load_outputs"]], "abstractrun (class in deepcave.runs)": [[30, "deepcave.runs.AbstractRun"]], "check_equality() (in module deepcave.runs)": [[30, "deepcave.runs.check_equality"]], "deepcave.runs": [[30, "module-deepcave.runs"]], "encode_config() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.encode_config"]], "get_all_costs() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_all_costs"]], "get_budget() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_budget"]], "get_budgets() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_budgets"]], "get_configs() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_configs"]], "get_costs() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_costs"]], "get_encoded_data() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_encoded_data"]], "get_highest_budget() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_highest_budget"]], "get_incumbent() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_incumbent"]], "get_objective() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_objective"]], "get_objective_id() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_objective_id"]], "get_objective_name() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_objective_name"]], "get_status() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_status"]], "get_trajectory() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_trajectory"]], "hash (deepcave.runs.abstractrun property)": [[30, "deepcave.runs.AbstractRun.hash"]], "id (deepcave.runs.abstractrun property)": [[30, "deepcave.runs.AbstractRun.id"]], "merge_costs() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.merge_costs"]], "deepcave.runs.converters": [[31, "module-deepcave.runs.converters"]], "bohbrun (class in deepcave.runs.converters.bohb)": [[32, "deepcave.runs.converters.bohb.BOHBRun"]], "deepcave.runs.converters.bohb": [[32, "module-deepcave.runs.converters.bohb"]], "from_path() (deepcave.runs.converters.bohb.bohbrun class method)": [[32, "deepcave.runs.converters.bohb.BOHBRun.from_path"]], "hash (deepcave.runs.converters.bohb.bohbrun property)": [[32, "deepcave.runs.converters.bohb.BOHBRun.hash"]], "deepcaverun (class in deepcave.runs.converters.deepcave)": [[33, "deepcave.runs.converters.deepcave.DeepCAVERun"]], "deepcave.runs.converters.deepcave": [[33, "module-deepcave.runs.converters.deepcave"]], "from_path() (deepcave.runs.converters.deepcave.deepcaverun class method)": [[33, "deepcave.runs.converters.deepcave.DeepCAVERun.from_path"]], "hash (deepcave.runs.converters.deepcave.deepcaverun property)": [[33, "deepcave.runs.converters.deepcave.DeepCAVERun.hash"]], "smac3v1run (class in deepcave.runs.converters.smac3v1)": [[34, "deepcave.runs.converters.smac3v1.SMAC3v1Run"]], "deepcave.runs.converters.smac3v1": [[34, "module-deepcave.runs.converters.smac3v1"]], "from_path() (deepcave.runs.converters.smac3v1.smac3v1run class method)": [[34, "deepcave.runs.converters.smac3v1.SMAC3v1Run.from_path"]], "hash (deepcave.runs.converters.smac3v1.smac3v1run property)": [[34, "deepcave.runs.converters.smac3v1.SMAC3v1Run.hash"]], "smac3v2run (class in deepcave.runs.converters.smac3v2)": [[35, "deepcave.runs.converters.smac3v2.SMAC3v2Run"]], "deepcave.runs.converters.smac3v2": [[35, "module-deepcave.runs.converters.smac3v2"]], "from_path() (deepcave.runs.converters.smac3v2.smac3v2run class method)": [[35, "deepcave.runs.converters.smac3v2.SMAC3v2Run.from_path"]], "hash (deepcave.runs.converters.smac3v2.smac3v2run property)": [[35, "deepcave.runs.converters.smac3v2.SMAC3v2Run.hash"]], "notmergeableerror": [[36, "deepcave.runs.exceptions.NotMergeableError"]], "notvalidrunerror": [[36, "deepcave.runs.exceptions.NotValidRunError"]], "deepcave.runs.exceptions": [[36, "module-deepcave.runs.exceptions"]], "group (class in deepcave.runs.group)": [[37, "deepcave.runs.group.Group"]], "deepcave.runs.group": [[37, "module-deepcave.runs.group"]], "get_trajectory() (deepcave.runs.group.group method)": [[37, "deepcave.runs.group.Group.get_trajectory"]], "hash (deepcave.runs.group.group property)": [[37, "deepcave.runs.group.Group.hash"]], "id (deepcave.runs.group.group property)": [[37, "deepcave.runs.group.Group.id"]], "runhandler (class in deepcave.runs.handler)": [[38, "deepcave.runs.handler.RunHandler"]], "add_run() (deepcave.runs.handler.runhandler method)": [[38, "deepcave.runs.handler.RunHandler.add_run"]], "deepcave.runs.handler": [[38, "module-deepcave.runs.handler"]], "get_available_run_paths() (deepcave.runs.handler.runhandler method)": [[38, "deepcave.runs.handler.RunHandler.get_available_run_paths"]], "get_groups() (deepcave.runs.handler.runhandler method)": [[38, "deepcave.runs.handler.RunHandler.get_groups"]], "get_run() (deepcave.runs.handler.runhandler method)": [[38, "deepcave.runs.handler.RunHandler.get_run"]], "get_run_name() (deepcave.runs.handler.runhandler method)": [[38, "deepcave.runs.handler.RunHandler.get_run_name"]], "get_runs() (deepcave.runs.handler.runhandler method)": [[38, "deepcave.runs.handler.RunHandler.get_runs"]], "get_selected_run_names() (deepcave.runs.handler.runhandler method)": [[38, "deepcave.runs.handler.RunHandler.get_selected_run_names"]], "get_selected_run_paths() (deepcave.runs.handler.runhandler method)": [[38, "deepcave.runs.handler.RunHandler.get_selected_run_paths"]], "get_working_directory() (deepcave.runs.handler.runhandler method)": [[38, "deepcave.runs.handler.RunHandler.get_working_directory"]], "remove_run() (deepcave.runs.handler.runhandler method)": [[38, "deepcave.runs.handler.RunHandler.remove_run"]], "set_working_directory() (deepcave.runs.handler.runhandler method)": [[38, "deepcave.runs.handler.RunHandler.set_working_directory"]], "update() (deepcave.runs.handler.runhandler method)": [[38, "deepcave.runs.handler.RunHandler.update"]], "update_groups() (deepcave.runs.handler.runhandler method)": [[38, "deepcave.runs.handler.RunHandler.update_groups"]], "update_run() (deepcave.runs.handler.runhandler method)": [[38, "deepcave.runs.handler.RunHandler.update_run"]], "update_runs() (deepcave.runs.handler.runhandler method)": [[38, "deepcave.runs.handler.RunHandler.update_runs"]], "objective (class in deepcave.runs.objective)": [[39, "deepcave.runs.objective.Objective"]], "__post_init__() (deepcave.runs.objective.objective method)": [[39, "deepcave.runs.objective.Objective.__post_init__"]], "deepcave.runs.objective": [[39, "module-deepcave.runs.objective"]], "deepcave.runs.recorder": [[40, "module-deepcave.runs.recorder"]], "run (class in deepcave.runs.run)": [[41, "deepcave.runs.run.Run"]], "add() (deepcave.runs.run.run method)": [[41, "deepcave.runs.run.Run.add"]], "deepcave.runs.run": [[41, "module-deepcave.runs.run"]], "exists() (deepcave.runs.run.run method)": [[41, "deepcave.runs.run.Run.exists"]], "from_path() (deepcave.runs.run.run class method)": [[41, "deepcave.runs.run.Run.from_path"]], "id (deepcave.runs.run.run property)": [[41, "deepcave.runs.run.Run.id"]], "status (class in deepcave.runs.status)": [[42, "deepcave.runs.status.Status"]], "deepcave.runs.status": [[42, "module-deepcave.runs.status"]], "trial (class in deepcave.runs.trial)": [[43, "deepcave.runs.trial.Trial"]], "deepcave.runs.trial": [[43, "module-deepcave.runs.trial"]], "deepcave.utils": [[44, "module-deepcave.utils"]], "cache (class in deepcave.utils.cache)": [[45, "deepcave.utils.cache.Cache"]], "clear() (deepcave.utils.cache.cache method)": [[45, "deepcave.utils.cache.Cache.clear"]], "deepcave.utils.cache": [[45, "module-deepcave.utils.cache"]], "get() (deepcave.utils.cache.cache method)": [[45, "deepcave.utils.cache.Cache.get"]], "has() (deepcave.utils.cache.cache method)": [[45, "deepcave.utils.cache.Cache.has"]], "read() (deepcave.utils.cache.cache method)": [[45, "deepcave.utils.cache.Cache.read"]], "set() (deepcave.utils.cache.cache method)": [[45, "deepcave.utils.cache.Cache.set"]], "set_dict() (deepcave.utils.cache.cache method)": [[45, "deepcave.utils.cache.Cache.set_dict"]], "write() (deepcave.utils.cache.cache method)": [[45, "deepcave.utils.cache.Cache.write"]], "deepcave.utils.cast": [[46, "module-deepcave.utils.cast"]], "deepcave.utils.compression": [[47, "module-deepcave.utils.compression"]], "deserialize() (in module deepcave.utils.compression)": [[47, "deepcave.utils.compression.deserialize"]], "serialize() (in module deepcave.utils.compression)": [[47, "deepcave.utils.compression.serialize"]], "deepcave.utils.configs": [[48, "module-deepcave.utils.configs"]], "parse_config() (in module deepcave.utils.configs)": [[48, "deepcave.utils.configs.parse_config"]], "deepcave.utils.configspace": [[49, "module-deepcave.utils.configspace"]], "sample_border_config() (in module deepcave.utils.configspace)": [[49, "deepcave.utils.configspace.sample_border_config"]], "sample_random_config() (in module deepcave.utils.configspace)": [[49, "deepcave.utils.configspace.sample_random_config"]], "deepcave.utils.dash": [[50, "module-deepcave.utils.dash"]], "flash() (in module deepcave.utils.dash)": [[50, "deepcave.utils.dash.flash"]], "deepcave.utils.data_structures": [[51, "module-deepcave.utils.data_structures"]], "update_dict() (in module deepcave.utils.data_structures)": [[51, "deepcave.utils.data_structures.update_dict"]], "deepcave.utils.docs": [[52, "module-deepcave.utils.docs"]], "deepcave.utils.files": [[53, "module-deepcave.utils.files"]], "deepcave.utils.hash": [[54, "module-deepcave.utils.hash"]], "deepcave.utils.layout": [[55, "module-deepcave.utils.layout"]], "get_select_options() (in module deepcave.utils.layout)": [[55, "deepcave.utils.layout.get_select_options"]], "deepcave.utils.logs": [[56, "module-deepcave.utils.logs"]], "deepcave.utils.notification": [[57, "module-deepcave.utils.notification"]], "runcaches (class in deepcave.utils.run_caches)": [[58, "deepcave.utils.run_caches.RunCaches"]], "clear() (deepcave.utils.run_caches.runcaches method)": [[58, "deepcave.utils.run_caches.RunCaches.clear"]], "clear_run() (deepcave.utils.run_caches.runcaches method)": [[58, "deepcave.utils.run_caches.RunCaches.clear_run"]], "deepcave.utils.run_caches": [[58, "module-deepcave.utils.run_caches"]], "get() (deepcave.utils.run_caches.runcaches method)": [[58, "deepcave.utils.run_caches.RunCaches.get"]], "set() (deepcave.utils.run_caches.runcaches method)": [[58, "deepcave.utils.run_caches.RunCaches.set"]], "update() (deepcave.utils.run_caches.runcaches method)": [[58, "deepcave.utils.run_caches.RunCaches.update"]], "styledplot (class in deepcave.utils.styled_plot)": [[59, "deepcave.utils.styled_plot.StyledPlot"]], "__getattr__() (deepcave.utils.styled_plot.styledplot method)": [[59, "deepcave.utils.styled_plot.StyledPlot.__getattr__"]], "deepcave.utils.styled_plot": [[59, "module-deepcave.utils.styled_plot"]], "deepcave.utils.styled_plotty": [[60, "module-deepcave.utils.styled_plotty"]], "get_color() (in module deepcave.utils.styled_plotty)": [[60, "deepcave.utils.styled_plotty.get_color"]], "get_discrete_heatmap() (in module deepcave.utils.styled_plotty)": [[60, "deepcave.utils.styled_plotty.get_discrete_heatmap"]], "get_hyperparameter_ticks() (in module deepcave.utils.styled_plotty)": [[60, "deepcave.utils.styled_plotty.get_hyperparameter_ticks"]], "get_hyperparameter_ticks_from_values() (in module deepcave.utils.styled_plotty)": [[60, "deepcave.utils.styled_plotty.get_hyperparameter_ticks_from_values"]], "hex_to_rgb() (in module deepcave.utils.styled_plotty)": [[60, "deepcave.utils.styled_plotty.hex_to_rgb"]], "prettify_label() (in module deepcave.utils.styled_plotty)": [[60, "deepcave.utils.styled_plotty.prettify_label"]], "save_image() (in module deepcave.utils.styled_plotty)": [[60, "deepcave.utils.styled_plotty.save_image"]], "convert_symb() (in module deepcave.utils.symbolic_regression)": [[61, "deepcave.utils.symbolic_regression.convert_symb"]], "deepcave.utils.symbolic_regression": [[61, "module-deepcave.utils.symbolic_regression"]], "exp() (in module deepcave.utils.symbolic_regression)": [[61, "deepcave.utils.symbolic_regression.exp"]], "get_function_set() (in module deepcave.utils.symbolic_regression)": [[61, "deepcave.utils.symbolic_regression.get_function_set"]], "deepcave.utils.url": [[62, "module-deepcave.utils.url"]], "deepcave.utils.util": [[63, "module-deepcave.utils.util"]], "bo": [[79, "term-BO"]], "budget": [[79, "term-Budget"]], "objective": [[79, "term-Objective"]], "smac": [[79, "term-SMAC"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["api", "api/deepcave.evaluators", "api/deepcave.evaluators.epm", "api/deepcave.evaluators.epm.fanova_forest", "api/deepcave.evaluators.epm.random_forest", "api/deepcave.evaluators.epm.random_forest_surrogate", "api/deepcave.evaluators.epm.utils", "api/deepcave.evaluators.fanova", "api/deepcave.evaluators.footprint", "api/deepcave.evaluators.lpi", "api/deepcave.layouts", "api/deepcave.layouts.not_found", "api/deepcave.layouts.sidebar", "api/deepcave.plugins", "api/deepcave.plugins.budget", "api/deepcave.plugins.dynamic", "api/deepcave.plugins.hyperparameter", "api/deepcave.plugins.hyperparameter.importances", "api/deepcave.plugins.hyperparameter.pdp", "api/deepcave.plugins.hyperparameter.symbolic_explanations", "api/deepcave.plugins.objective", "api/deepcave.plugins.objective.configuration_cube", "api/deepcave.plugins.objective.cost_over_time", "api/deepcave.plugins.objective.parallel_coordinates", "api/deepcave.plugins.objective.pareto_front", "api/deepcave.plugins.static", "api/deepcave.plugins.summary", "api/deepcave.plugins.summary.configurations", "api/deepcave.plugins.summary.footprint", "api/deepcave.plugins.summary.overview", "api/deepcave.runs", "api/deepcave.runs.converters", "api/deepcave.runs.converters.bohb", "api/deepcave.runs.converters.deepcave", "api/deepcave.runs.converters.smac3v1", "api/deepcave.runs.converters.smac3v2", "api/deepcave.runs.exceptions", "api/deepcave.runs.group", "api/deepcave.runs.handler", "api/deepcave.runs.objective", "api/deepcave.runs.recorder", "api/deepcave.runs.run", "api/deepcave.runs.status", "api/deepcave.runs.trial", "api/deepcave.utils", "api/deepcave.utils.cache", "api/deepcave.utils.cast", "api/deepcave.utils.compression", "api/deepcave.utils.configs", "api/deepcave.utils.configspace", "api/deepcave.utils.dash", "api/deepcave.utils.data_structures", "api/deepcave.utils.docs", "api/deepcave.utils.files", "api/deepcave.utils.hash", "api/deepcave.utils.layout", "api/deepcave.utils.logs", "api/deepcave.utils.notification", "api/deepcave.utils.run_caches", "api/deepcave.utils.styled_plot", "api/deepcave.utils.styled_plotty", "api/deepcave.utils.symbolic_regression", "api/deepcave.utils.url", "api/deepcave.utils.util", "converters", "examples/api/importances", "examples/api/index", "examples/api/parallel_coordinates", "examples/api/pdp", "examples/api/sg_execution_times", "examples/index", "examples/record/digits_sklearn", "examples/record/index", "examples/record/minimal", "examples/record/mnist_pytorch", "examples/record/sg_execution_times", "examples/sg_execution_times", "faq", "getting_started", "glossary", "index", "installation", "plugins/budget_correlation", "plugins/configuration_cube", "plugins/configuration_footprint", "plugins/configurations", "plugins/cost_over_time", "plugins/importances", "plugins/index", "plugins/overview", "plugins/parallel_coordinates", "plugins/pareto_front", "plugins/partial_dependencies", "plugins/symbolic_explanations", "redis", "sg_execution_times"], "filenames": ["api.rst", "api/deepcave.evaluators.rst", "api/deepcave.evaluators.epm.rst", "api/deepcave.evaluators.epm.fanova_forest.rst", "api/deepcave.evaluators.epm.random_forest.rst", "api/deepcave.evaluators.epm.random_forest_surrogate.rst", "api/deepcave.evaluators.epm.utils.rst", "api/deepcave.evaluators.fanova.rst", "api/deepcave.evaluators.footprint.rst", "api/deepcave.evaluators.lpi.rst", "api/deepcave.layouts.rst", "api/deepcave.layouts.not_found.rst", "api/deepcave.layouts.sidebar.rst", "api/deepcave.plugins.rst", "api/deepcave.plugins.budget.rst", "api/deepcave.plugins.dynamic.rst", "api/deepcave.plugins.hyperparameter.rst", "api/deepcave.plugins.hyperparameter.importances.rst", "api/deepcave.plugins.hyperparameter.pdp.rst", "api/deepcave.plugins.hyperparameter.symbolic_explanations.rst", "api/deepcave.plugins.objective.rst", "api/deepcave.plugins.objective.configuration_cube.rst", "api/deepcave.plugins.objective.cost_over_time.rst", "api/deepcave.plugins.objective.parallel_coordinates.rst", "api/deepcave.plugins.objective.pareto_front.rst", "api/deepcave.plugins.static.rst", "api/deepcave.plugins.summary.rst", "api/deepcave.plugins.summary.configurations.rst", "api/deepcave.plugins.summary.footprint.rst", "api/deepcave.plugins.summary.overview.rst", "api/deepcave.runs.rst", "api/deepcave.runs.converters.rst", "api/deepcave.runs.converters.bohb.rst", "api/deepcave.runs.converters.deepcave.rst", "api/deepcave.runs.converters.smac3v1.rst", "api/deepcave.runs.converters.smac3v2.rst", "api/deepcave.runs.exceptions.rst", "api/deepcave.runs.group.rst", "api/deepcave.runs.handler.rst", "api/deepcave.runs.objective.rst", "api/deepcave.runs.recorder.rst", "api/deepcave.runs.run.rst", "api/deepcave.runs.status.rst", "api/deepcave.runs.trial.rst", "api/deepcave.utils.rst", "api/deepcave.utils.cache.rst", "api/deepcave.utils.cast.rst", "api/deepcave.utils.compression.rst", "api/deepcave.utils.configs.rst", "api/deepcave.utils.configspace.rst", "api/deepcave.utils.dash.rst", "api/deepcave.utils.data_structures.rst", "api/deepcave.utils.docs.rst", "api/deepcave.utils.files.rst", "api/deepcave.utils.hash.rst", "api/deepcave.utils.layout.rst", "api/deepcave.utils.logs.rst", "api/deepcave.utils.notification.rst", "api/deepcave.utils.run_caches.rst", "api/deepcave.utils.styled_plot.rst", "api/deepcave.utils.styled_plotty.rst", "api/deepcave.utils.symbolic_regression.rst", "api/deepcave.utils.url.rst", "api/deepcave.utils.util.rst", "converters.rst", "examples/api/importances.rst", "examples/api/index.rst", "examples/api/parallel_coordinates.rst", "examples/api/pdp.rst", "examples/api/sg_execution_times.rst", "examples/index.rst", "examples/record/digits_sklearn.rst", "examples/record/index.rst", "examples/record/minimal.rst", "examples/record/mnist_pytorch.rst", "examples/record/sg_execution_times.rst", "examples/sg_execution_times.rst", "faq.rst", "getting_started.rst", "glossary.rst", "index.rst", "installation.rst", "plugins/budget_correlation.rst", "plugins/configuration_cube.rst", "plugins/configuration_footprint.rst", "plugins/configurations.rst", "plugins/cost_over_time.rst", "plugins/importances.rst", "plugins/index.rst", "plugins/overview.rst", "plugins/parallel_coordinates.rst", "plugins/pareto_front.rst", "plugins/partial_dependencies.rst", "plugins/symbolic_explanations.rst", "redis.rst", "sg_execution_times.rst"], "titles": ["API References", "deepcave.evaluators", "deepcave.evaluators.epm", "deepcave.evaluators.epm.fanova_forest", "deepcave.evaluators.epm.random_forest", "deepcave.evaluators.epm.random_forest_surrogate", "deepcave.evaluators.epm.utils", "deepcave.evaluators.fanova", "deepcave.evaluators.footprint", "deepcave.evaluators.lpi", "deepcave.layouts", "deepcave.layouts.not_found", "deepcave.layouts.sidebar", "deepcave.plugins", "deepcave.plugins.budget", "deepcave.plugins.dynamic", "deepcave.plugins.hyperparameter", "deepcave.plugins.hyperparameter.importances", "deepcave.plugins.hyperparameter.pdp", "deepcave.plugins.hyperparameter.symbolic_explanations", "deepcave.plugins.objective", "deepcave.plugins.objective.configuration_cube", "deepcave.plugins.objective.cost_over_time", "deepcave.plugins.objective.parallel_coordinates", "deepcave.plugins.objective.pareto_front", "deepcave.plugins.static", "deepcave.plugins.summary", "deepcave.plugins.summary.configurations", "deepcave.plugins.summary.footprint", "deepcave.plugins.summary.overview", "deepcave.runs", "deepcave.runs.converters", "deepcave.runs.converters.bohb", "deepcave.runs.converters.deepcave", "deepcave.runs.converters.smac3v1", "deepcave.runs.converters.smac3v2", "deepcave.runs.exceptions", "deepcave.runs.group", "deepcave.runs.handler", "deepcave.runs.objective", "deepcave.runs.recorder", "deepcave.runs.run", "deepcave.runs.status", "deepcave.runs.trial", "deepcave.utils", "deepcave.utils.cache", "deepcave.utils.cast", "deepcave.utils.compression", "deepcave.utils.configs", "deepcave.utils.configspace", "deepcave.utils.dash", "deepcave.utils.data_structures", "deepcave.utils.docs", "deepcave.utils.files", "deepcave.utils.hash", "deepcave.utils.layout", "deepcave.utils.logs", "deepcave.utils.notification", "deepcave.utils.run_caches", "deepcave.utils.styled_plot", "deepcave.utils.styled_plotty", "deepcave.utils.symbolic_regression", "deepcave.utils.url", "deepcave.utils.util", "Converters", "Importances", "API", "Parallel Coordinates", "Partial Dependencies", "Computation times", "Examples", "Multi-Layer Perceptron via Sklearn", "Record", "Record Minimal Run", "Multi-Layer Perceptron via PyTorch", "Computation times", "Computation times", "Frequently Asked Questions", "Getting Started", "Glossary", "Home", "Installation", "Budget Correlation", "Configuration Cube", "Configuration Footprint", "Configurations", "Cost Over Time", "Importances", "Plugins", "Overview", "Parallel Coordinates", "Pareto Front", "Partial Dependencies", "Symbolic Explanations", "Install Redis Server", "Computation times"], "terms": {"fanova": [1, 2, 3, 9, 30, 87, 90], "thi": [1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 70, 71, 73, 74, 78, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 94], "provid": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 52, 53, 54, 55, 57, 58, 59, 60, 61, 63, 64, 80, 82, 84, 85, 88, 89, 90, 93], "tool": [1, 7, 79, 80], "assess": [1, 7], "import": [1, 3, 7, 9, 13, 16, 29, 66, 67, 68, 69, 70, 71, 73, 74, 82, 84, 85, 88, 89, 90, 91, 95], "an": [1, 7, 13, 24, 25, 26, 29, 30, 38, 39, 42, 44, 46, 49, 50, 55, 60, 62, 66, 70, 71, 72, 79, 80, 82, 83, 88, 89, 93], "algorithm": [1, 7, 31, 34, 35, 79, 84], "hyperparamet": [1, 2, 3, 4, 6, 7, 8, 9, 21, 30, 31, 32, 49, 60, 65, 68, 71, 73, 74, 79, 80, 83, 84, 85, 87, 88, 90, 92, 93], "footprint": [1, 26], "util": [1, 2, 3, 7, 8, 9, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 74], "creat": [1, 2, 3, 8, 10, 13, 18, 20, 21, 22, 24, 27, 29, 30, 31, 32, 33, 34, 35, 38, 39, 41, 44, 45, 53, 55, 57, 58, 59, 62, 64, 81, 88], "run": [1, 7, 8, 9, 13, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 44, 58, 60, 61, 64, 65, 67, 68, 70, 72, 74, 75, 78, 80, 81, 82, 84, 85, 86, 88, 89, 91, 94, 95], "lpi": 1, "calcul": [1, 7, 8, 9, 13, 25, 30, 37, 58, 61, 63, 77, 87, 88, 90], "local": [1, 9, 78], "paramet": [1, 3, 4, 5, 6, 7, 8, 9, 13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 30, 32, 33, 34, 35, 37, 38, 39, 40, 41, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 74, 79], "fanova_forest": 2, "The": [2, 3, 4, 5, 6, 7, 8, 9, 11, 13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 30, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 43, 45, 46, 47, 48, 49, 50, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 74, 78, 79, 80, 81, 82, 83, 84, 85, 86, 88, 89, 90, 93], "forest": [2, 3, 4, 5, 7, 9], "random_forest": 2, "can": [2, 3, 4, 5, 7, 8, 13, 22, 23, 24, 30, 37, 38, 40, 44, 49, 51, 57, 59, 64, 65, 66, 67, 68, 70, 71, 72, 73, 77, 78, 80, 81, 82, 83, 84, 85, 86, 88, 89, 90, 91], "us": [2, 3, 4, 7, 8, 13, 15, 18, 19, 22, 23, 24, 25, 27, 28, 30, 34, 35, 38, 40, 41, 44, 45, 48, 51, 55, 58, 59, 60, 61, 64, 65, 66, 67, 68, 70, 71, 72, 73, 74, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 88, 89], "train": [2, 4, 7, 8, 9, 19, 74, 82, 88], "random": [2, 4, 5, 7, 9, 44, 49, 63, 73, 74], "regress": [2, 4, 61, 93], "model": [2, 3, 4, 5, 8, 9, 30, 31, 34, 35, 37, 40, 41, 74, 88, 93], "random_forest_surrog": 2, "randomforest": [2, 3, 4, 5, 9], "surrog": [2, 5], "get": [2, 4, 6, 7, 8, 9, 13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 30, 32, 33, 34, 35, 37, 38, 39, 41, 44, 45, 49, 55, 56, 58, 59, 60, 61, 63, 66, 70, 71, 72, 81, 84, 89, 94], "type": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 30, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 43, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 74, 84], "well": [2, 6, 30, 36, 37, 38, 44, 45, 49, 59, 60, 82, 84, 89, 90], "bound": [2, 3, 4, 6, 39, 84, 89], "fanovaforest": 3, "modul": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63], "It": [3, 7, 8, 13, 21, 22, 24, 25, 29, 30, 38, 39, 63, 77, 84, 88], "includ": [3, 8, 13, 17, 18, 19, 22, 24, 29, 30, 37, 38, 45, 55, 58, 60, 78, 79, 86, 87], "wrapper": [3, 4, 30], "pyrfr": [3, 4, 30, 87], "analyz": [3, 78, 80, 82, 83, 85, 90], "class": [3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 47, 48, 57, 58, 59, 60, 64, 70, 72, 74, 78], "A": [3, 4, 9, 10, 12, 13, 15, 17, 18, 19, 21, 22, 24, 27, 28, 29, 30, 34, 37, 38, 39, 40, 42, 43, 55, 60, 62, 63, 76, 78, 79, 80, 86, 91], "configspac": [3, 4, 5, 30, 32, 33, 34, 35, 37, 40, 41, 44, 64, 65, 67, 71, 73, 74], "n_tree": [3, 4, 7, 9, 65], "10": [3, 8, 9, 55, 60, 65, 71, 74, 80, 90], "ratio_featur": [3, 4], "1": [3, 4, 7, 34, 59, 60, 67, 68, 71, 73, 74, 78, 82], "0": [3, 4, 7, 8, 9, 35, 41, 59, 63, 64, 65, 67, 68, 69, 71, 73, 74, 75, 76, 82, 95], "min_samples_split": [3, 4], "min_samples_leaf": [3, 4], "max_depth": [3, 4], "64": [3, 74], "max_nod": [3, 4], "1048576": [3, 4], "eps_pur": [3, 4], "1e": [3, 4, 74], "08": [3, 4], "bootstrap": [3, 4, 55], "true": [3, 4, 7, 8, 13, 30, 38, 39, 45, 53, 55, 58, 59, 60, 67, 68, 71, 74, 81, 82, 84], "instance_featur": [3, 4, 6], "none": [3, 4, 5, 6, 7, 8, 9, 12, 13, 15, 18, 19, 22, 24, 25, 30, 32, 33, 34, 35, 38, 39, 40, 41, 43, 45, 46, 48, 49, 51, 53, 55, 57, 58, 59, 60, 61, 62, 71, 73, 74], "pca_compon": [3, 4], "2": [3, 4, 35, 65, 67, 74, 81, 82, 83, 94], "cutoff": 3, "inf": [3, 40, 41], "seed": [3, 4, 5, 7, 9, 34, 35, 71, 73, 74], "sourc": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 65, 67, 68, 70, 71, 73, 74, 88], "base": [3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 45, 55, 57, 58, 59, 86, 89], "tupl": [3, 4, 5, 6, 7, 8, 9, 12, 13, 15, 21, 25, 30, 37, 40, 43, 47, 57, 60], "float": [3, 4, 6, 7, 8, 9, 30, 32, 33, 34, 35, 37, 39, 40, 41, 43, 49, 59, 60, 61], "percentil": 3, "ndarrai": [3, 4, 5, 6, 9, 30, 59, 61], "data": [3, 4, 5, 7, 9, 13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 30, 31, 32, 38, 39, 41, 47, 51, 52, 55, 58, 60, 64, 71, 74, 78, 80, 88, 89, 93], "point": [3, 4, 5, 8, 82, 83, 84, 88], "y": [3, 4, 8, 59, 60, 71, 74, 86, 89], "all_midpoint": 3, "list": [3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 30, 37, 38, 41, 43, 47, 55, 60, 61, 82, 85], "all": [3, 4, 7, 8, 9, 12, 13, 15, 22, 24, 25, 30, 38, 45, 55, 58, 60, 70, 82, 83, 84, 86, 90, 95], "midpoint": [3, 7], "tree": [3, 7, 9, 17, 30, 88, 90], "wise": [3, 85, 88], "whole": 3, "all_siz": 3, "interv": 3, "size": [3, 7, 60, 73], "store": [3, 30, 58], "featur": [3, 4, 6, 13, 86, 90], "trees_total_vari": 3, "total": [3, 7, 69, 75, 76, 95], "varianc": [3, 4, 7, 9], "ani": [3, 9, 13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 30, 37, 39, 40, 41, 43, 44, 45, 46, 55, 58, 59, 60, 62, 63, 78, 80, 88], "trees_variance_fract": 3, "dict": [3, 4, 7, 9, 12, 13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 30, 37, 38, 39, 40, 41, 43, 45, 47, 51, 55, 58, 62, 74], "fraction": 3, "v_u_tot": 3, "int": [3, 4, 6, 7, 8, 9, 18, 19, 27, 30, 32, 33, 34, 35, 37, 39, 41, 42, 43, 44, 46, 49, 55, 59, 60, 61, 63, 74], "relat": [3, 93], "inform": [3, 13, 15, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 30, 38, 40, 41, 42, 43, 44, 55, 59, 60, 62, 82, 84, 85, 88, 94], "across": [3, 13, 89], "v_u_individu": 3, "individu": [3, 7, 91], "subset": [3, 52, 79], "n_param": [3, 4], "number": [3, 4, 7, 9, 17, 19, 22, 30, 41, 55, 59, 60, 61, 78, 82, 83, 86, 89, 90], "sampl": [3, 4, 44, 49, 84], "compute_margin": 3, "hp_id": 3, "depth": [3, 7], "return": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 30, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 71, 74], "margin": [3, 4, 7, 55, 59], "select": [3, 7, 9, 13, 17, 18, 19, 21, 22, 23, 24, 26, 27, 28, 29, 30, 37, 38, 44, 55, 58, 64, 78, 80, 82, 83, 85, 86, 89, 90, 91], "union": [3, 7, 8, 9, 10, 12, 13, 19, 30, 32, 33, 34, 35, 37, 38, 39, 40, 41, 43, 47, 53, 55, 59, 60, 61], "contain": [3, 9, 22, 24, 27, 28, 30, 37, 38, 39, 40, 41, 48, 55, 60, 62, 63], "indic": [3, 55, 84, 89, 90], "start": [3, 13, 40, 41, 43, 71, 73, 74, 77, 81, 88], "default": [3, 6, 7, 8, 9, 13, 30, 38, 40, 41, 45, 47, 48, 49, 50, 53, 55, 57, 59, 60, 63, 89, 90], "valu": [3, 4, 5, 7, 8, 9, 13, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 30, 38, 39, 42, 44, 45, 46, 49, 55, 58, 59, 60, 61, 63, 73, 77, 82, 83, 84, 85, 86, 89, 90, 93], "i": [3, 4, 6, 7, 8, 9, 13, 15, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 30, 34, 35, 36, 38, 39, 40, 41, 42, 44, 45, 47, 48, 49, 50, 53, 55, 57, 58, 59, 60, 61, 63, 64, 74, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94], "simplif": 4, "constant": [4, 18, 19, 42, 45, 47, 59, 73, 87], "very_small_numb": 4, "pyrfr_map": 4, "str": [4, 7, 8, 9, 11, 12, 13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 30, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 43, 45, 47, 48, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63], "16": [4, 7, 74], "8333333333333334": 4, "3": [4, 8, 60, 65, 67, 69, 74, 75, 81, 83], "log_i": 4, "fals": [4, 8, 13, 30, 38, 39, 40, 45, 55, 59, 67, 68, 74], "object": [4, 7, 8, 9, 13, 15, 18, 19, 25, 29, 30, 31, 32, 33, 34, 35, 37, 38, 40, 41, 43, 45, 47, 50, 54, 57, 58, 59, 60, 64, 67, 71, 73, 74, 79, 82, 83, 84, 86, 88, 90, 91, 92, 93], "handi": [4, 89], "becaus": [4, 13, 58, 85], "onli": [4, 7, 8, 13, 17, 18, 19, 21, 23, 27, 28, 30, 38, 49, 55, 58, 60, 81, 83, 85, 90], "configur": [4, 6, 7, 8, 9, 21, 22, 24, 26, 28, 30, 31, 34, 35, 37, 40, 41, 43, 44, 48, 49, 56, 60, 78, 79, 82, 86, 90, 91], "space": [4, 6, 7, 8, 9, 22, 24, 30, 37, 41, 42, 49, 82, 83, 84, 86], "need": [4, 7, 13, 22, 24, 45, 58, 64, 81, 82, 84, 86, 88], "pass": [4, 7, 13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 30, 38, 40, 63, 90], "have": [4, 13, 17, 18, 19, 21, 23, 27, 28, 55, 60, 64, 66, 70, 72, 77, 78, 80, 81, 82, 83, 84, 85, 86, 88, 89, 94], "work": [4, 17, 18, 19, 21, 23, 27, 28, 38, 64, 80, 81, 88, 94], "version": [4, 17, 34, 35, 60], "without": 4, "specifi": [4, 7, 13, 17, 30, 41, 55, 83, 86, 90], "e": [4, 13, 22, 24, 29, 45, 60, 64, 77, 80, 85, 93], "g": [4, 13, 22, 24, 29, 45, 60, 64, 77, 80, 85], "also": [4, 6, 8, 13, 17, 22, 24, 38, 39, 63, 78, 80, 85, 86, 88, 89], "support": [4, 6, 8, 30, 34, 35, 64, 80, 86], "instanc": [4, 6, 34, 35, 38, 39, 60], "c": [4, 7, 8, 9, 38, 45, 73, 74, 81], "configurationspac": [4, 6, 7, 8, 9, 30, 37, 41, 49, 71, 73, 74], "bool": [4, 7, 8, 13, 15, 25, 30, 38, 39, 41, 45, 53, 55, 58, 59, 60], "whether": [4, 7, 8, 13, 15, 18, 30, 39, 45, 53, 55, 59, 60, 82, 86, 89], "should": [4, 7, 8, 9, 13, 27, 30, 37, 38, 39, 40, 53, 55, 58, 59, 60, 61, 78, 79, 82, 88, 91], "treat": 4, "logarithm": [4, 86], "transform": [4, 38, 74], "If": [4, 6, 7, 8, 9, 13, 15, 17, 18, 19, 22, 24, 30, 32, 33, 34, 35, 38, 39, 40, 41, 45, 46, 48, 55, 58, 59, 60, 61, 63, 66, 70, 80, 81, 82, 83, 86, 88, 89, 91, 94], "n_featur": 4, "compon": [4, 10, 11, 12, 13, 15, 25, 55, 60], "keep": 4, "princip": 4, "analysi": [4, 80, 88, 90], "pca": 4, "scaler": 4, "minmaxscal": 4, "scale": [4, 8, 65, 67, 89], "get_leaf_valu": 4, "x": [4, 5, 8, 59, 60, 61, 71, 74, 84, 86, 89, 90], "leaf": 4, "np": [4, 5, 6, 30, 40, 59, 61, 73, 74], "input": [4, 5, 13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 44, 58, 59, 60, 61, 62, 64, 65, 67, 68, 88], "arrai": [4, 8, 30, 60], "binary_rss_forest": 4, "predict": [4, 5, 30], "mean": [4, 5, 7, 9, 37, 82, 86], "given": [4, 5, 9, 30, 32, 33, 37, 41, 48, 55, 58, 59, 60, 61, 62, 63, 83, 84, 91], "n_sampl": 4, "config": [4, 8, 13, 15, 30, 37, 38, 40, 41, 44, 58, 64, 71, 73, 74, 77, 78, 88, 89], "n_object": 4, "var": [4, 7, 9], "standard": [4, 5, 30, 37, 86], "deviat": [4, 5, 30, 37, 86], "predict_margin": 4, "over": [4, 20, 22, 30, 37, 39, 55, 83, 84, 85, 88, 89, 91], "set": [4, 8, 13, 22, 24, 38, 39, 40, 43, 44, 45, 56, 58, 59, 61, 77], "shape": 4, "appli": [4, 87, 93], "afterward": 4, "_train": 4, "call": [4, 8, 10, 11, 12, 13, 17, 18, 19, 21, 22, 23, 24, 27, 28], "target": [4, 71], "must": [4, 13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 30, 48, 58, 60, 78], "match": [4, 40, 41], "name": [4, 7, 9, 13, 25, 30, 32, 33, 34, 35, 37, 38, 39, 41, 42, 48, 53, 56, 59, 60, 61, 62, 71, 73, 74, 78, 89, 91], "constructor": 4, "randomforestsurrog": 5, "pypdp": 5, "packag": [5, 81], "surrogatemodel": 5, "fit": [5, 61, 71, 74], "which": [5, 13, 27, 30, 38, 41, 49, 58, 60, 78, 79, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91], "function": [6, 10, 11, 12, 13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 30, 39, 44, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 60, 61, 62, 63, 74], "get_typ": 6, "config_spac": 6, "option": [6, 7, 8, 9, 13, 22, 24, 30, 37, 38, 39, 40, 41, 45, 46, 47, 48, 49, 50, 53, 55, 57, 58, 59, 60, 61, 62, 63, 78, 84, 86], "rais": [6, 7, 8, 9, 13, 17, 18, 19, 22, 24, 30, 34, 35, 36, 38, 39, 40, 41, 45, 48, 55, 58, 60, 63, 74], "valueerror": [6, 13, 30, 39, 41, 55, 60, 63], "inact": 6, "beta": [6, 68, 73], "normal": [6, 30, 74], "typeerror": [6, 30, 38], "unknown": [6, 13, 63], "wrt": 7, "budget": [7, 8, 9, 13, 22, 24, 30, 37, 40, 41, 43, 60, 64, 71, 73, 74, 79, 80, 83, 84, 85, 87, 88, 89, 90], "encod": [7, 30, 47, 60], "thei": [7, 30, 82, 83, 89, 90], "ar": [7, 8, 9, 12, 13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 30, 34, 35, 36, 38, 39, 41, 43, 48, 49, 55, 58, 60, 64, 65, 67, 68, 74, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "gener": [7, 13, 16, 18, 19, 24, 43, 44, 49, 55, 60, 63, 80, 82, 84, 88, 89], "from": [7, 8, 9, 13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 30, 32, 33, 37, 38, 39, 41, 44, 45, 47, 48, 49, 53, 55, 58, 59, 60, 63, 64, 65, 67, 68, 69, 71, 73, 74, 75, 76, 78, 80, 81, 84, 85, 89, 90, 95], "": [7, 13, 30, 38, 58, 74, 77, 80, 84, 85, 88, 89], "split": [7, 89], "order": [7, 83, 90], "abstractrun": [7, 8, 9, 13, 17, 21, 22, 23, 24, 27, 30, 37, 38, 41, 58, 60], "abstract": [7, 10, 13, 30, 41], "hp": [7, 8, 9, 30, 60], "hp_name": [7, 9, 61], "correspond": [7, 12, 22, 24, 27, 30, 41, 55, 56, 60], "respect": [7, 83, 85, 92, 93], "right": [7, 38, 64, 90, 91], "now": [7, 63, 74, 81, 84, 94], "further": [7, 30, 78, 82, 89, 90], "consid": [7, 8, 9, 30, 65, 67, 68, 81, 82, 89, 90, 91, 94], "By": [7, 8, 9, 13, 30, 41, 48, 49, 60, 90], "highest": [7, 9, 30, 82, 83, 89, 90], "chosen": [7, 9, 30, 38, 83, 91], "how": [7, 8, 9, 63, 65, 66, 67, 68, 70, 71, 72, 73, 74, 82, 83, 84, 85, 86, 87, 89, 91, 92, 93, 94], "mani": [7, 8, 9, 74, 80, 83, 86, 88, 89, 90], "get_import": [7, 9], "sort": [7, 37], "score": [7, 9, 21, 71, 82, 83, 84, 90], "higher": [7, 77, 82], "than": [7, 8, 19, 60, 86, 91], "might": [7, 60, 77, 82, 85, 88], "take": [7, 60, 86, 88], "much": [7, 82, 84, 86, 87, 88], "longer": [7, 60, 82, 88], "often": [7, 85, 89], "dimens": 7, "combin": [7, 30, 41, 78, 79, 80, 83, 85, 86, 90], "dictionari": [7, 12, 13, 15, 17, 18, 19, 21, 22, 23, 24, 27, 28, 30, 37, 38, 39, 40, 43, 44, 45, 51, 55, 62], "form": [7, 30], "note": [7, 30, 65, 67, 68, 84], "same": [7, 13, 30, 55, 60, 65, 67, 68, 82, 83, 84, 88, 90], "runtimeerror": [7, 8, 9, 13, 17, 18, 19, 30, 34, 35, 38, 39, 41, 45, 48, 60, 74], "zero": 7, "multidimension": 8, "md": [8, 44, 52, 84], "surfac": 8, "plot": [8, 16, 18, 19, 44, 59, 60, 80, 83, 89, 91, 93], "support_discret": 8, "rejection_r": 8, "01": [8, 82], "retri": 8, "exclude_config": 8, "distanc": [8, 84], "color": [8, 57, 59, 60, 82, 83], "show": [8, 13, 18, 60, 65, 67, 68, 71, 73, 74, 83, 86, 88, 89, 90, 91, 92, 93], "discret": [8, 49, 60], "step": [8, 55, 78, 81], "integ": [8, 30, 49], "reject": 8, "rate": [8, 77, 78, 92, 93], "intern": [8, 9, 13, 38, 41], "max": [8, 84], "ha": [8, 30, 32, 33, 34, 35, 45, 49, 55, 58, 74, 78, 88, 91], "smaller": [8, 19, 63], "time": [8, 13, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 28, 30, 37, 40, 41, 43, 63, 64, 71, 73, 74, 80, 83, 84, 88], "ad": [8, 38, 41, 42, 51, 59, 78, 81, 94], "new": [8, 30, 32, 34, 35, 37, 38, 41, 59, 64, 88], "exclud": [8, 30], "particularli": [8, 30], "interest": [8, 13, 15], "search": 8, "get_point": 8, "categori": [8, 12, 50], "specif": [8, 18, 19, 25, 27, 28, 30, 45, 59, 60, 63, 74, 85, 86, 88, 91], "chose": [8, 83], "between": [8, 63, 82, 84, 86, 87, 89, 93], "border": [8, 44, 49, 84], "incumb": [8, 9, 30, 84], "config_id": [8, 27, 30, 37, 43, 60], "wasn": 8, "t": [8, 13, 40, 60, 74], "befor": [8, 13, 22, 24, 77, 87, 88], "get_surfac": 8, "detail": [8, 19, 84, 88, 89, 90, 91], "5": [8, 59, 60, 71, 74, 89, 90], "perform": [8, 28, 79, 80, 82, 86, 88, 90, 91, 93], "meshgrid": 8, "valid": [8, 13, 36, 74, 78, 84], "area": [8, 28, 59, 80], "1d": [8, 83], "z": 8, "2d": [8, 83, 84], "heatmap": [8, 60, 82, 83, 89], "wa": [8, 19, 30, 38, 40, 58, 64, 77, 81, 82, 83, 84, 85, 88, 89, 90, 94], "weren": 8, "overal": [9, 29], "per": [9, 59], "continuous_neighbor": 9, "neighbor": 9, "continu": [9, 82], "incumbent_arrai": 9, "numpi": [9, 30, 60, 73, 74], "vector": 9, "represent": [9, 43, 82, 84], "r": [9, 71, 73, 74], "randomst": 9, "state": [9, 25], "continous_neighbor": 9, "500": 9, "prepar": [9, 13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29], "foundat": 10, "abc": [10, 13, 15, 25, 30, 41], "logger": [10, 15, 25, 30, 38, 56, 58], "__call__": [10, 11, 12, 13, 15, 25], "self": [10, 11, 12, 13, 38, 59, 74, 80], "defin": [11, 12, 13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 31, 33, 34, 35, 39, 40, 44, 47, 55, 58, 59, 63, 71, 74], "custom": [11, 12, 44, 47, 55, 59, 60, 78, 80], "displai": [11, 13, 15, 21, 50, 55, 59, 60, 83, 85, 86, 88, 89], "notfound": 11, "page": [11, 78, 87, 92, 94], "notfoundlayout": 11, "url": [11, 13, 44, 80], "could": [11, 13, 38, 48, 77, 82, 89, 90], "reach": [11, 82, 86, 90], "sidebarlayout": 12, "callback": [12, 13, 15, 25], "regist": [12, 13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 60, 88], "handl": [12, 13, 15, 25, 30, 33, 38, 43, 44, 45], "categorized_plugin": 12, "plugin": [12, 38, 58, 60, 65, 67, 68, 77, 80, 82, 83, 84, 85, 86, 87, 89, 90, 91, 92, 93], "categor": [12, 60, 90], "nav_point": 12, "attribut": [12, 13, 30, 37, 39, 41, 43], "register_callback": [12, 13, 15, 25], "avail": [13, 30, 38, 62, 64, 65, 67, 68, 81, 85, 94], "differ": [13, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 30, 36, 44, 58, 59, 60, 63, 81, 83, 84, 87, 90], "check": [13, 22, 24, 30, 39, 41, 45, 81, 82, 88, 89, 94], "compat": [13, 22, 24, 30, 43], "layout": [13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 44], "output": [13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 30, 55, 58, 65, 67, 68, 74, 88], "previous_input": [13, 18, 19, 27, 28], "previou": [13, 18, 19, 27, 28, 82], "raw_output": [13, 15, 25], "raw": [13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 58, 80, 88], "activate_run_select": 13, "dropdown": 13, "one": [13, 30, 38, 39, 44, 51, 77, 80, 83, 84, 89, 92, 93], "view": [13, 83, 84, 85, 86, 89, 90], "moreov": [13, 30, 80], "prevent": 13, "result": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 30, 32, 33, 34, 35, 58, 64, 70, 72, 74, 80, 86, 88], "id": [13, 15, 25, 30, 37, 38, 40, 41, 43, 58, 59, 60, 85, 89], "uniqu": [13, 43, 64], "identifi": [13, 15, 30, 90], "group": [13, 30, 38, 78, 80, 85, 86, 89, 90], "help": [13, 55, 77, 80, 83, 90], "path": [13, 30, 32, 33, 34, 35, 37, 38, 40, 41, 48, 52, 53, 54, 58, 59, 62, 64, 65, 67, 68, 74, 78, 81, 94], "document": [13, 80], "shown": [13, 60, 84], "navig": 13, "titl": [13, 18, 59, 80], "button_capt": [13, 25], "caption": [13, 25], "button": [13, 25, 55, 80, 84, 88], "staticplugin": [13, 17, 18, 19, 23, 25, 28], "render_button": 13, "basic": [13, 15, 25, 83, 88], "block": [13, 15, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 85, 88], "element": [13, 15, 25, 59], "stack": [13, 15, 25, 89], "up": [13, 15, 25, 30, 44, 56], "here": [13, 15, 25, 65, 67, 68, 73, 82, 83, 84, 85, 89, 90], "render": [13, 17, 24, 28, 59], "notmergeableerror": [13, 22, 24, 30, 36, 38, 39], "filenotfounderror": [13, 38], "file": [13, 30, 38, 41, 44, 45, 48, 52, 54, 59, 64, 69, 75, 76, 77, 78, 81, 88, 94, 95], "found": [13, 17, 30, 38, 41, 74, 78, 81, 84, 94], "all_run": 13, "static": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 30, 39, 88], "check_run_compat": 13, "you": [13, 60, 64, 65, 66, 67, 68, 70, 72, 77, 78, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 94], "One": [13, 82, 86, 90], "check_runs_compat": [13, 22, 24], "someth": [13, 22, 24, 81, 84, 94], "common": [13, 22, 24], "sinc": [13, 22, 24, 40, 45, 58, 81, 85, 86, 88], "error": [13, 36, 38, 89], "thrown": [13, 38], "generate_input": [13, 65, 67, 68], "kwarg": [13, 37, 74], "process": [13, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 30, 31, 32, 40, 64, 71, 80, 81, 82, 84, 88], "load_output": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 65, 67, 68], "requir": [13, 60, 88, 94], "api": [13, 65, 67, 68, 69, 80, 95], "mode": [13, 63, 66, 70, 80, 81, 94], "argument": [13, 49, 78], "against": 13, "schema": 13, "runtim": 13, "therefor": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 64, 80, 89], "beforehand": 13, "addit": [13, 40, 41, 43, 60, 88], "keyword": 13, "miss": 13, "classmethod": [13, 32, 33, 34, 35, 41], "generate_output": [13, 65, 67, 68], "activ": [13, 71, 74, 81], "accept": [13, 78], "either": [13, 30, 48, 63], "multipl": [13, 30, 34, 35, 43, 74, 80, 82, 83, 86, 90, 91, 92, 93], "onc": [13, 78], "real": 13, "filter": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 65, 67, 68, 83, 88, 90], "necessari": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 58, 63], "first": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 30, 81, 82, 84, 90, 94], "kei": [13, 30, 37, 38, 40, 43, 45, 58], "get_base_url": 13, "cl": 13, "string": [13, 30, 38, 42, 44, 45, 47, 54, 55, 60, 63], "get_filter_layout": [13, 17, 18, 21, 22, 23, 24, 27, 28], "callabl": [13, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 60], "method": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 60, 64, 65], "user": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 88], "variabl": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 60, 65, 67, 68], "For": [13, 49, 60, 79, 82, 88, 90, 91, 92, 93], "more": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 30, 36, 71, 74, 82, 84, 85, 88, 89, 93], "see": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 61, 70, 72, 78, 81, 82, 83, 84, 85, 86, 89, 90, 91, 93, 94], "register_input": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 60], "get_input_layout": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28], "get_internal_id": 13, "get_internal_input_id": 13, "get_internal_output_id": 13, "get_mpl_output_layout": [13, 17, 24, 28], "matplotlib": [13, 17, 24, 28, 44, 59, 65, 67, 68, 80], "get_output_layout": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29], "get_run_input_layout": 13, "case": [13, 19, 30, 40, 41, 42, 77, 83], "get_selected_run": 13, "pars": [13, 44, 48, 62], "otherwis": [13, 30, 38, 62, 80, 86], "possibl": [13, 44, 46, 48, 49, 60, 62, 80, 81, 84, 86, 88, 89], "preventupd": 13, "load_dependency_input": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29], "load": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 38, 41, 45, 48, 58, 65, 67, 68], "content": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 45, 77], "load_input": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29], "after": [13, 17, 18, 19, 21, 23, 27, 28, 30, 64, 78, 85, 88], "chang": [13, 15, 17, 18, 19, 21, 22, 23, 27, 28, 30, 32, 33, 34, 35, 37, 38, 45, 58, 64, 78, 80, 85, 86, 88, 89, 90, 92, 93], "lot": [13, 84], "flexibl": [13, 80], "merg": [13, 17, 18, 19, 21, 23, 27, 28, 30, 38, 39], "In": [13, 30, 37, 40, 41, 78, 85, 86, 88, 89], "current": [13, 17, 18, 19, 21, 23, 27, 28, 30, 32, 33, 34, 35, 38, 40, 60, 64, 88], "pre": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28], "so": [13, 21, 22, 23, 24, 27, 28, 58, 64, 70, 72, 77, 82, 83, 84, 88, 90], "cach": [13, 15, 17, 18, 19, 21, 22, 23, 24, 27, 28, 30, 32, 33, 34, 35, 38, 44, 58, 60, 80, 84, 88], "its": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 30, 41, 44, 58, 60, 62, 79, 82, 84, 88], "fill": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28], "load_mpl_output": [13, 17, 24, 28, 65, 67, 68], "read": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 45], "them": [13, 21, 22, 23, 24, 27, 28, 29, 30, 60, 78, 84, 90], "clean": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 88], "compar": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 39, 83, 86], "boolean": [13, 60], "cast": [13, 44], "posit": [13, 55, 59], "load_run_input": 13, "both": [13, 48, 55, 60, 64, 78, 88, 91], "singl": [13, 85, 87], "separ": 13, "json": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28, 39, 43, 45, 47], "serializ": [13, 17, 18, 19, 21, 22, 23, 24, 27, 28], "serial": [13, 18, 19, 21, 22, 23, 24, 27, 28, 41, 44, 47], "follow": [13, 15, 30, 41, 45, 64, 70, 72, 78, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 92, 94], "past": [13, 15], "back": [13, 15, 80, 82], "particular": [13, 15, 60, 83], "depend": [13, 15, 16, 18, 19, 30, 66, 69, 70, 82, 93, 95], "dialog": [13, 15], "redirect": [13, 15, 78, 91], "click": [13, 15, 90, 91], "server": [13, 77, 78], "map": [13, 83, 88], "dash": [13, 44, 55, 60, 80], "global": [13, 30, 37, 65], "register_output": [13, 21, 22, 23, 24, 28], "mpl": 13, "registr": 13, "budget_correl": 14, "visual": [14, 16, 17, 20, 21, 22, 23, 24, 26, 27, 28, 29, 80, 83, 85, 86, 88, 90], "correl": [14, 83], "dynamicplugin": [15, 21, 22, 24, 27, 29], "debug": [15, 45], "use_cach": 15, "pdp": [16, 19, 68, 69, 95], "partial": [16, 18, 19, 66, 69, 70, 93, 95], "symbolic_explan": 16, "symbol": [16, 19, 61], "explan": [16, 19], "non": [17, 18, 60, 80], "locat": [17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 48, 59, 60], "superclass": [17, 18, 19, 21, 22, 23, 24, 27, 28, 29], "html": [17, 19, 21, 24, 27, 55, 60, 61], "div": [17, 21, 27], "img": [17, 24], "dcc": [17, 18, 19, 21, 22, 23, 24], "graph": [17, 18, 19, 21, 22, 23, 24, 85, 86], "_": [17, 21, 23, 29], "like": [17, 18, 19, 21, 23, 27, 28, 78, 80, 81, 82, 84, 86, 90, 94], "figur": [17, 18, 19, 21, 22, 23, 24, 28, 59, 60, 65, 67, 68, 88], "pleas": [17, 18, 19, 21, 22, 23, 24, 27, 28, 29, 78, 80, 93], "_clean_input": [17, 18, 19, 21, 22, 23, 24, 27, 28, 29], "go": [17, 18, 19, 21, 22, 23, 24, 60, 65, 67, 68, 71, 73, 74], "serialzi": 17, "partialdepend": [18, 68], "grid_points_per_axi": [18, 19], "samples_per_hp": [18, 19], "max_sampl": [18, 19], "max_shown_sampl": [18, 19], "dbc": [18, 19, 21, 22, 28, 50, 55], "row": [18, 19, 21, 22, 28, 55, 59], "get_pdp_figur": 18, "show_confid": [18, 68], "show_ic": [18, 68], "confid": 18, "ic": 18, "curv": 18, "Not": [18, 19, 27, 28, 41], "symbolicexplan": 19, "leverag": 19, "obtain": [19, 30, 93], "formula": [19, 93], "explain": 19, "optim": [19, 31, 32, 39, 64, 71, 73, 74, 79, 80, 82, 83, 84, 86, 89, 90, 91, 93], "els": [19, 39, 74], "comparison": [19, 86, 91], "configuration_cub": 20, "configru": 20, "cube": [20, 21], "cost_over_tim": 20, "cost": [20, 22, 30, 37, 40, 41, 43, 60, 71, 73, 74, 78, 84, 88, 91], "parallel_coordin": [20, 67, 69, 95], "parallel": [20, 23, 66, 69, 70, 95], "coordin": [20, 23, 66, 69, 70, 95], "pareto_front": 20, "pareto": [20, 24], "front": [20, 24], "configurationcub": 21, "restrict": [21, 79], "three": [21, 64, 88], "costovertim": 22, "regard": [22, 89], "objective_opt": [22, 24], "budget_opt": [22, 24], "meta": [22, 24, 29, 30, 32, 33, 34, 35, 37, 38, 40, 41, 64, 93], "equal": [22, 24, 30, 39, 86], "parallelcoordin": [23, 67], "regsit": 23, "fromt": 23, "paretofront": 24, "interact": [24, 66, 70, 78, 80, 81, 94], "enum": [25, 42], "pluginst": 25, "queue": [25, 77, 78, 88], "made": [25, 37], "consum": 25, "task": [25, 74], "characterist": [26, 27], "within": [26, 27], "overview": [26, 66, 70, 84], "dynam": [27, 29, 82, 88, 90], "get_link": 27, "link": [27, 60, 85, 89], "visit": 27, "tabl": [27, 29, 55, 85], "tab": [28, 89], "plotli": [28, 44, 60, 65, 67, 68], "hold": [29, 30, 32, 33, 34, 35, 40, 44, 58], "most": [29, 79, 84, 87, 88, 89, 90], "statist": [29, 89], "origin": [30, 37, 40, 41, 85], "torch": [30, 41, 74], "nn": [30, 41, 74], "histori": [30, 37, 40, 41, 64], "trial": [30, 32, 34, 35, 37, 40, 41, 64, 78, 82, 83, 85, 89, 90, 92, 93], "trial_kei": [30, 37], "trial_id": 30, "models_dir": [30, 41], "directori": [30, 36, 38, 41, 44, 53, 58, 78, 80, 88], "empti": [30, 55], "encode_config": 30, "look": [30, 38, 66, 70, 78, 83, 88], "done": [30, 49, 84, 88], "itself": [30, 37, 43, 82], "get_all_cost": 30, "status": 30, "statu": [30, 40, 41, 43, 74, 85, 89], "stati": [30, 74], "get_budget": 30, "human": [30, 80], "want": [30, 60, 66, 70, 78, 81, 86, 91], "convert": [30, 38, 39, 42, 43, 44, 46, 52, 54, 60, 61, 65, 67, 68, 78, 80, 84], "make": [30, 59, 64, 66, 70, 77, 78, 80, 81, 82, 85, 90, 94], "readabl": 30, "invalid": [30, 60], "get_budget_id": [30, 65, 67, 68], "include_combin": 30, "cut": [30, 63], "last": [30, 40, 89, 90], "get_config": 30, "retriev": [30, 38, 45, 57, 59, 60], "get_config_id": 30, "find": [30, 61, 79, 82, 84, 85, 89, 90, 91], "were": [30, 41, 83, 85, 89], "evalu": [30, 82, 83, 84, 85, 86, 89, 90], "optiona": 30, "get_cost": 30, "multi": [30, 40, 41, 70, 72, 75, 81, 88, 95], "associ": [30, 78, 82, 83, 85, 89], "get_encoded_data": 30, "include_config_id": 30, "include_combined_cost": 30, "implement": [30, 87, 88], "epm": 30, "df": 30, "datafram": [30, 44, 47], "column": [30, 59, 89], "hp1": 30, "hp2": 30, "hpn": 30, "obj1": 30, "obj2": 30, "objm": 30, "combined_cost": 30, "pd": [30, 47], "get_highest_budget": 30, "get_incumb": 30, "get_meta": 30, "shallow": 30, "copi": 30, "get_model": [30, 37], "get_num_config": 30, "count": 30, "get_object": 30, "get_objective_id": [30, 65, 67, 68], "objective_id": [30, 65, 67, 68], "get_objective_nam": 30, "involv": 30, "get_origin": 30, "identif": [30, 37, 43], "get_statu": 30, "get_trajectori": [30, 37], "trajectori": [30, 37], "costs_mean": [30, 37], "costs_std": [30, 37], "get_trial": 30, "respond": 30, "exist": [30, 41, 58, 84, 86], "desir": 30, "get_trial_kei": 30, "through": [30, 82, 83, 84, 90], "assembli": 30, "repres": [30, 42, 43, 84], "consist": [30, 79], "iter": [30, 37, 49], "hash": [30, 32, 33, 34, 35, 37, 38, 41, 44, 58, 64], "clear": [30, 32, 33, 34, 35, 45, 58, 82], "ensur": [30, 32, 33, 34, 35, 58], "alwai": [30, 32, 33, 34, 35], "latest": [30, 32, 33, 34, 35, 37, 57, 61, 64, 89], "contrast": [30, 37, 86, 88], "throughout": [30, 37, 85], "latest_chang": [30, 32, 33, 34, 35, 37, 64], "merge_cost": 30, "weigh": [30, 79], "everi": [30, 80], "lower": [30, 39, 42, 59, 71, 73, 74, 82, 84], "better": [30, 79, 82, 86, 91], "length": [30, 55, 63], "reset": [30, 44, 45, 57, 58], "initi": 30, "check_equ": 30, "request": [30, 88], "wheter": 30, "bohb": [31, 64, 80], "manag": [31, 32, 37, 90], "concern": [31, 32, 36, 84], "bayesian": [31, 32, 79], "bandit": [31, 32], "smac3v1": 31, "sequenti": [31, 34, 35, 74], "smac3v2": 31, "bohbrun": 32, "from_path": [32, 33, 34, 35, 41, 64, 65, 67, 68], "add": [32, 38, 40, 41, 59, 64, 74, 78, 81, 88, 90], "pathnam": [32, 62], "timestamp": [32, 33, 34, 35, 63], "deepcaverun": [33, 40, 65, 67, 68], "smac3v1run": 34, "4": [34, 45, 49, 60, 64, 74, 81, 94], "working_dir": [34, 35], "run_nam": [34, 35, 37], "smac3v2run": 35, "mergeabl": [36, 39], "notvalidrunerror": [36, 38], "two": [36, 39, 55, 79, 84, 88, 91, 92, 93], "prefix": [37, 40, 41, 63], "__iter__": 37, "allow": [37, 64, 80, 83, 90, 93], "get_new_config_id": 37, "run_id": [37, 38, 71, 74], "original_config_id": 37, "get_original_config_id": 37, "get_original_run": 37, "get_run": [37, 38], "arg": 37, "run_path": [37, 38], "updat": [38, 44, 45, 51, 57, 58, 77, 88, 89], "remov": [38, 58, 87, 90], "runhandl": 38, "run_cach": [38, 44], "automat": [38, 60, 64, 78, 80], "switch": 38, "about": [38, 42, 55, 60, 82, 84, 85, 89, 93], "rc": 38, "runcach": [38, 58], "available_run_yf": 38, "available_run_class": 38, "add_run": 38, "alreadi": [38, 41, 82, 84, 88], "do": [38, 55, 70, 72, 77, 80, 81, 82, 83, 84, 88, 90, 92, 93, 94], "noth": 38, "get_available_run_path": 38, "except": 38, "get_group": 38, "instanti": [38, 65, 67, 68], "groupedrun": 38, "insid": [38, 64, 81, 94], "refer": [38, 88, 89], "get_run_nam": 38, "stem": 38, "include_group": 38, "readi": [38, 88], "get_selected_group": 38, "assertionerror": [38, 40, 58], "get_selected_run_nam": 38, "get_selected_run_path": 38, "get_working_directori": 38, "remove_run": 38, "selected_run_path": 38, "set_working_directori": 38, "working_directori": 38, "update_group": 38, "save": [38, 41, 58, 59, 60, 70, 72, 80, 88], "update_run": 38, "class_hint": 38, "hint": 38, "suggest": 38, "what": [38, 77, 82, 84, 89, 90], "upper": [39, 59, 71, 73, 74], "lock_low": 39, "lock": 39, "lock_upp": 39, "__eq__": 39, "other": [39, 59, 65, 67, 68, 71, 74, 78, 84, 85, 86], "__post_init__": [39, 43], "from_json": 39, "d": [39, 45, 49], "friendli": 39, "format": [39, 42, 47, 52, 60, 64, 70, 71, 72], "get_worst_valu": 39, "worst": 39, "part": [39, 85, 89], "to_json": [39, 43], "save_path": [40, 71, 73, 74], "log": [40, 44, 65, 67, 68, 70, 71, 72, 73, 74, 89], "overwrit": [40, 59], "last_trial_id": 40, "start_tim": [40, 41, 43, 74], "second": 40, "epoch": [40, 74, 79], "end": [40, 41, 43, 65, 67, 68, 71, 73, 74, 85, 88, 89], "success": [40, 41, 42, 74, 89], "end_tim": [40, 41, 43, 74], "correctli": [40, 64], "yet": 40, "meta_fn": 41, "configspace_fn": 41, "configs_fn": 41, "origins_fn": 41, "history_fn": 41, "overwritten": [41, 59], "expect": [41, 89], "traceback": 41, "doe": [41, 58, 82, 83, 84, 86, 88, 90, 92, 93], "where": [41, 83, 84, 85, 91], "text": [42, 55, 60, 82], "simpler": 42, "timeout": [42, 74], "memoryout": [42, 74], "crash": [42, 74, 85, 89, 90], "abort": 42, "not_evalu": [42, 89], "intenum": 42, "to_text": 42, "get_kei": 43, "tupel": 43, "utilitii": 44, "compress": 44, "deseri": [44, 47], "filenam": [44, 45, 48, 52, 53, 54, 59, 81, 94], "flash": [44, 50], "alert": [44, 50], "data_structur": 44, "anoth": [44, 51, 83], "inplac": [44, 51], "doc": [44, 61], "restructuredtext": [44, 52], "rst": [44, 52], "markdown": [44, 52], "notif": 44, "styled_plot": 44, "styled_plotti": 44, "style": [44, 50, 59, 60], "accord": [44, 62, 89, 90], "shorten": [44, 60, 63], "write": [45, 64], "write_fil": 45, "decid": [45, 79, 86], "flask_cach": 45, "code": [45, 60, 65, 67, 68, 70, 71, 73, 74, 80], "easier": 45, "our": [45, 80, 88], "chain": 45, "b": [45, 51, 86, 91], "set_dict": 45, "optional_int": 46, "turn": 46, "json_dense_separ": 47, "json_default_separ": 47, "typevar": 47, "dtype": 47, "panda": 47, "core": [47, 61, 79], "frame": 47, "parse_config": 48, "rel": [48, 78], "absolut": [48, 78], "python": [48, 65, 67, 68, 70, 71, 73, 74, 80, 81, 85], "inherit": [48, 64, 78], "sample_border_config": 49, "drawn": 49, "yield": 49, "sample_random_config": 49, "reduc": 49, "rang": [49, 71, 74, 82, 90], "exampl": [49, 65, 66, 67, 68, 69, 71, 72, 73, 74, 75, 76, 79, 82, 88, 89, 90, 91, 92, 93, 95], "four": [49, 85], "messag": [50, 57], "info": 50, "flask": 50, "structur": [51, 55, 80], "update_dict": 51, "rst_to_md": 52, "make_dir": 53, "parent": 53, "intermedi": 53, "file_to_hash": 54, "string_to_hash": 54, "slider": [55, 83], "mark": 55, "checklist": 55, "radio": 55, "create_t": 55, "fix": 55, "head": 55, "stripe": 55, "mb": [55, 69, 75, 76, 95], "get_checklist_opt": 55, "label": [55, 60, 90], "binari": 55, "To": [55, 64, 70, 72, 77, 84, 86, 89, 91, 93], "al": 55, "choic": [55, 71, 74, 86], "when": [55, 64, 77, 82, 83, 84, 86, 88, 89], "get_radio_opt": 55, "get_select_opt": 55, "disabl": [55, 91], "each": [55, 58, 84], "get_slider_mark": 55, "access_al": 55, "item": 55, "help_button": 55, "placement": [55, 59], "top": [55, 80, 90], "icon": 55, "popov": 55, "hover": [55, 60], "wrap": 55, "span": [55, 89], "get_logg": 56, "logger_nam": 56, "get_latest": 57, "danger": 57, "again": [58, 90], "own": [58, 82, 88], "cache_dir": 58, "clear_run": 58, "plugin_id": 58, "inputs_kei": 58, "_dict_as_kei": 58, "variant": 58, "styledplot": 59, "pyplot": 59, "fig_width": 59, "fig_height": 59, "plt": 59, "seaborn": 59, "__getattr__": 59, "sure": [59, 64, 77, 78, 81, 82], "access": [59, 80, 81, 85, 94], "directli": [59, 64, 66, 70, 72, 80, 81, 86, 88], "boxplot": 59, "width": [59, 74], "arraylik": 59, "box": [59, 79, 89], "col": 59, "dpi": 59, "200": [59, 71], "dot": 59, "inch": 59, "get_color": [59, 60], "palett": [59, 60], "legend": 59, "loc": 59, "outsid": 59, "matplot": 59, "appear": 59, "determin": [59, 82, 85, 86, 90], "place": [59, 90], "save_figur": 59, "xlim": 59, "xmin": 59, "xmax": 59, "axi": [59, 60, 84, 86, 89, 90], "limit": [59, 79, 90], "ylim": 59, "ymin": 59, "ymax": 59, "plotti": 60, "generate_config_cod": 60, "id_": 60, "alpha": [60, 68, 73], "rgba": 60, "get_discrete_heatmap": 60, "colorscal": 60, "nest": 60, "present": 60, "get_hovertext_from_config": 60, "metric": [60, 79, 85], "get_hyperparameter_tick": 60, "additional_valu": 60, "tick": 60, "include_nan": 60, "tickval": 60, "ticktext": 60, "background": [60, 84], "don": 60, "With": [60, 90], "6": [60, 81, 94, 95], "behavior": [60, 92, 93], "ignor": [60, 74], "forc": 60, "nan": 60, "get_hyperparameter_ticks_from_valu": 60, "enforc": 60, "independ": 60, "hex_to_rgb": 60, "hex_str": 60, "rgb": 60, "000000": 60, "ff00ff": 60, "hex": 60, "7": [60, 74, 82], "charact": 60, "prettify_label": 60, "prettifi": 60, "save_imag": 60, "imag": [60, 78], "extens": 60, "Will": 60, "gplearn": 61, "convert_symb": 61, "symb": 61, "n_decim": 61, "simplifi": 61, "round": [61, 74], "mathemat": 61, "express": 61, "warn": 61, "eval": 61, "thu": 61, "unsanit": 61, "http": [61, 80, 81, 94], "sympi": 61, "org": [61, 80], "highlight": 61, "sympifi": 61, "symbolicregressor": 61, "regressor": 61, "decim": 61, "replac": 61, "x0": 61, "x1": 61, "exp": 61, "safe": 61, "maximum": 61, "100000": 61, "avoid": [61, 78], "overflow": 61, "exponenti": 61, "get_function_set": 61, "_function": 61, "create_url": 62, "parse_url": 62, "extract": 62, "get_latest_chang": 63, "st_mtime": 63, "get_random_str": 63, "short_str": 63, "30": [63, 71, 82], "suffix": 63, "deepcav": [64, 65, 66, 67, 68, 70, 71, 72, 73, 74, 77, 78, 80, 81, 88, 94], "interpret": [64, 78], "folder": [64, 81, 94], "put": 64, "nativ": [64, 80], "smac": [64, 79, 80], "v1": 64, "v2": 64, "auto": 64, "sklearn": [64, 70, 72, 75, 95], "pytorch": [64, 70, 72, 75, 95], "observ": 64, "system": 64, "monitor": 64, "finish": [64, 77], "regularli": 64, "disk": 64, "long": [64, 86], "available_convert": 64, "your": [64, 70, 72, 73, 77, 78, 80, 81, 82, 84, 85, 86, 88, 89, 90, 94], "branch": [64, 88], "py": [64, 65, 67, 68, 69, 71, 73, 74, 75, 78, 88, 95], "next": [64, 81, 84, 88, 89], "did": [64, 89, 90], "fail": 64, "download": [65, 67, 68, 70, 71, 73, 74, 81, 94], "full": [65, 67, 68, 71, 73, 74, 80, 89], "interfac": [65, 67, 68, 80, 88], "fashion": [65, 67, 68], "pathlib": [65, 67, 68], "__name__": [65, 67, 68, 71, 74], "__main__": [65, 67, 68, 71, 74], "minim": [65, 67, 68, 70, 72, 75, 79, 88, 95], "run_2": [65, 67, 68], "budget_id": [65, 67, 68], "hyperparameter_nam": [65, 67], "get_hyperparameter_nam": [65, 67], "n_hp": [65, 67], "final": [65, 67, 68, 82, 83, 90], "plai": [65, 67, 68], "role": [65, 67, 68], "altern": [65, 67, 68], "write_imag": [65, 67, 68], "png": [65, 67, 68], "jupyt": [65, 67, 68, 70, 71, 73, 74], "notebook": [65, 67, 68, 70, 71, 73, 74], "ipynb": [65, 67, 68, 71, 73, 74], "wai": [66, 70, 82, 86, 88, 89, 90], "show_important_onli": 67, "show_unsuccess": 67, "hide_hp": 67, "hyperparameter_name_1": 68, "hyperparameter_name_2": 68, "00": [69, 75, 76, 95], "000": [69, 75, 76, 95], "execut": [69, 75, 76, 80, 95], "mem": [69, 75, 76, 95], "incorpor": [70, 72, 74, 82], "idea": [70, 72], "automl": [70, 72, 80, 81, 86, 88], "layer": [70, 72, 75, 95], "perceptron": [70, 72, 75, 95], "via": [70, 72, 75, 78, 95], "examples_python": 70, "zip": 70, "examples_jupyt": 70, "advanc": [71, 74], "record": [71, 74, 75, 80, 95], "neural_network": 71, "mlpclassifi": 71, "model_select": 71, "train_test_split": 71, "uniformfloathyperparamet": [71, 73, 74], "categoricalhyperparamet": [71, 74], "uniformintegerhyperparamet": [71, 74], "dataset": [71, 74], "load_digit": 71, "def": [71, 74], "get_dataset": 71, "digit": 71, "x_train": 71, "x_test": 71, "y_train": 71, "y_test": 71, "stratifi": 71, "random_st": 71, "get_configspac": [71, 74], "num_neurons_layer1": [71, 74], "100": [71, 73, 74], "num_neurons_layer2": [71, 74], "logist": 71, "tanh": [71, 74], "relu": [71, 74], "solver": 71, "sgd": 71, "adam": [71, 74], "batch_siz": [71, 74], "learning_r": [71, 74], "0001": [71, 74], "add_hyperparamet": [71, 73, 74], "accuraci": [71, 73, 74, 79, 92, 93], "20": [71, 73, 82], "40": [71, 73, 82], "50": 71, "60": [71, 73], "70": [71, 82], "80": 71, "90": 71, "num_config": [71, 74], "num_run": [71, 74], "digits_sklearn": [71, 75, 95], "sample_configur": [71, 73, 74], "clf": 71, "max_it": 71, "hidden_layer_s": 71, "learning_rate_init": 71, "goe": 73, "uniform": [73, 74], "low": [73, 82, 88, 89, 91], "high": [73, 82, 83, 84, 86, 89, 90], "statuss": 74, "strenght": 74, "inspect": [74, 83], "boundargu": 74, "o": 74, "re": [74, 90], "f": 74, "dataload": 74, "random_split": 74, "torchvis": 74, "torchmetr": 74, "mnist": 74, "pytorch_lightn": 74, "pl": 74, "num_work": 74, "mnistmodel": 74, "lightningmodul": 74, "__init__": 74, "dropout_r": 74, "super": 74, "elif": 74, "sigmoid": 74, "data_dir": 74, "join": 74, "getcwd": 74, "num_class": 74, "dim": 74, "28": 74, "channel": 74, "height": 74, "compos": 74, "totensor": 74, "1307": 74, "3081": 74, "multiclass": 74, "prepare_data": 74, "setup": 74, "stage": 74, "assign": 74, "val": 74, "mnist_ful": 74, "mnist_train": 74, "mnist_val": 74, "20000": 74, "40000": 74, "test": [74, 81], "mnist_test": 74, "train_dataload": 74, "val_dataload": 74, "test_dataload": 74, "training_step": 74, "batch": 74, "batch_idx": 74, "logit": 74, "loss": [74, 79], "nll_loss": 74, "validation_step": 74, "pred": 74, "argmax": 74, "val_loss": 74, "prog_bar": 74, "val_acc": 74, "test_step": 74, "configure_optim": 74, "lr": 74, "mlp": 74, "num_neuron": 74, "32": 74, "flatten": 74, "linear": [74, 89], "dropout": 74, "forward": 74, "log_softmax": 74, "cnn": 74, "conv1": 74, "conv2d": 74, "in_channel": 74, "out_channel": 74, "kernel_s": 74, "stride": 74, "pad": 74, "maxpool2d": 74, "conv2": 74, "fulli": [74, 82], "connect": 74, "out": [74, 89], "9": [74, 81], "256": 74, "sub": [74, 80], "add_condit": 74, "equalscondit": 74, "max_epoch": 74, "8": 74, "n_epoch": 74, "linspac": 74, "num": 74, "1000": 74, "mnist_pytorch": [74, 75, 95], "seed_everyth": 74, "weight": 74, "trainer": 74, "acceler": 74, "cpu": 74, "devic": 74, "num_sanity_val_step": 74, "No": [74, 82, 90], "saniti": [74, 82, 88, 89], "determinist": 74, "min_epoch": 74, "accuracy_": 74, "loss_": 74, "we": [74, 81, 82, 84, 87, 88, 89, 90], "just": [74, 90], "some": [74, 77, 84, 88, 89], "potenti": 74, "later": 74, "05": 74, "chanc": 74, "elapsed_tim": 74, "n": [76, 81], "wrong": 77, "instal": [77, 78], "redi": 77, "my": [77, 91], "machin": [77, 79, 80], "fastest": 77, "issu": 77, "too": [77, 86], "slow": 77, "circl": 77, "increas": [77, 84, 85, 92, 93], "refresh": [77, 78], "refresh_r": 77, "command": [78, 81], "addition": [78, 93], "sever": 78, "open": 78, "n_worker": 78, "gui": 78, "browser": 78, "been": [78, 84, 85, 89], "worker": [78, 81], "ip": 78, "port": 78, "howev": [78, 82, 86, 89], "enclos": 78, "quot": 78, "reserv": 78, "hit": [78, 84], "enter": 78, "dashboard": [78, 80], "main": [78, 79], "action": 78, "collect": [78, 80, 93], "easili": 78, "bo": 79, "black": 79, "explor": [79, 80, 84], "exploit": 79, "minimum": 79, "arbitrari": [79, 82], "learn": [79, 80, 92, 93], "aggress": 79, "race": 79, "mechan": 79, "effici": [79, 80, 91], "maxim": [79, 80], "wherea": 79, "anyth": 79, "frequent": 79, "neural": [79, 82], "network": [79, 82], "especi": [80, 85], "problem": [80, 81, 90, 91], "framework": 80, "program": 80, "entir": [80, 89], "divers": 80, "insight": [80, 84, 88, 90], "bring": 80, "loop": 80, "power": 80, "modular": 80, "extend": 80, "effortlessli": 80, "complet": [80, 88, 90], "written": 80, "while": [80, 85, 88, 93], "detect": 80, "larg": [80, 87], "asynchron": 80, "expens": 80, "integr": 80, "understand": [80, 84, 88, 89], "public": 80, "give": [80, 83, 85, 88, 94], "research": 80, "project": 80, "cite": 80, "realml": 80, "icml": 80, "22": 80, "workshop": 80, "paper": [80, 93], "misc": 80, "sass": 80, "realml2022": 80, "autom": 80, "author": 80, "ren\u00e9": 80, "bergman": 80, "eddi": 80, "biedenkapp": 80, "andr\u00e9": 80, "hutter": 80, "frank": 80, "lindauer": 80, "mariu": 80, "doi": 80, "48550": 80, "arxiv": 80, "2206": 80, "03493": 80, "ab": 80, "publish": 80, "year": 80, "2022": 80, "copyright": 80, "perpetu": 80, "exclus": 80, "licens": 80, "brew": [81, 94], "sudo": [81, 94], "apt": [81, 94], "linux": [81, 94], "section": [81, 85, 89], "exten": 81, "instruct": 81, "bash": 81, "script": 81, "servic": 81, "webserv": 81, "window": 81, "recommend": [81, 88], "anaconda": 81, "swig": 81, "environ": 81, "conda": 81, "pip": 81, "contribut": 81, "github": 81, "dev": 81, "git": 81, "clone": 81, "com": 81, "try": [81, 82, 84, 89, 94], "usr": [81, 94], "sbin": [81, 94], "simpli": [81, 85, 94], "expand": [81, 94], "export": [81, 94], "bashrc": [81, 94], "admin": [81, 94], "root": [81, 94], "tar": [81, 94], "gz": [81, 94], "mkdir": [81, 94], "p": [81, 94], "vendor": [81, 94], "cd": [81, 94], "wget": [81, 94], "io": [81, 94], "releas": [81, 94], "xzvf": [81, 94], "rm": [81, 94], "pwd": [81, 94], "m1": 81, "disable_spr": 81, "objc_disable_initialize_fork_safeti": 81, "ye": [81, 90], "bash_profil": 81, "enabl": [81, 90, 91], "representit": 82, "gain": [82, 86], "knowledg": [82, 84], "know": [82, 84, 85, 86, 89, 90], "good": [82, 84, 86, 91], "enough": 82, "infer": [82, 84], "would": [82, 86, 88, 89], "conversli": 82, "realli": [82, 90], "converg": [82, 86], "still": [82, 84], "till": 82, "capabl": [82, 84, 85, 86, 87, 89, 91, 92, 93], "answer": [82, 83, 84, 85, 86, 87, 89, 90, 91, 92, 93], "question": [82, 83, 84, 85, 86, 87, 89, 90, 91, 92, 93], "fair": [82, 89], "cover": [82, 84], "wish": [82, 83, 90], "commun": [82, 83], "thing": 82, "perfectli": 82, "trace": 82, "ll": [82, 84, 89], "mid": 82, "slowli": 82, "drop": 82, "There": [82, 84, 88], "great": 82, "certain": [82, 83, 85, 86, 89, 90], "extra": 82, "resourc": [82, 84], "less": 82, "faster": [82, 86], "lowest": 82, "achiev": [82, 84, 86, 90], "least": 82, "rather": 82, "context": 82, "veri": [82, 83, 88], "strong": 82, "relationship": 82, "69": 82, "39": 82, "moder": 82, "29": 82, "weak": 82, "19": 82, "neglig": 82, "natur": 83, "mai": [83, 90], "dimension": [83, 84, 88], "investig": 83, "3d": 83, "slice": 83, "under": [83, 84, 87, 89, 90, 92], "move": 83, "along": [83, 89, 90], "hyperparamt": [83, 90], "grid": 83, "evid": 83, "influenc": [83, 84, 86, 87, 88], "tend": [83, 90], "prefer": [83, 84, 90, 91], "known": 84, "dure": [84, 89, 93], "These": [84, 89, 90], "stop": 84, "invest": 84, "comput": [84, 91], "favor": 84, "let": [84, 85, 89, 90], "briefli": 84, "mention": [84, 86], "variou": [84, 90], "kind": [84, 88], "best": [84, 86, 89, 91], "red": 84, "triangl": 84, "orang": 84, "unevalu": 84, "purpl": 84, "edg": 84, "min": 84, "scalar": 84, "around": 84, "those": [84, 90], "address": 84, "reduct": 84, "attempt": 84, "preserv": 84, "spaceto": 84, "Of": 84, "cours": 84, "perfect": [84, 86, 89], "begin": 84, "talk": 84, "share": [84, 90], "co": 84, "ordin": 84, "swap": 84, "benefici": 84, "firm": 84, "grasp": 84, "perhap": 84, "mous": 84, "tell": [84, 85, 87], "possibli": 84, "noisi": 84, "rest": 84, "colour": [84, 89], "represnt": 84, "estim": 84, "region": 84, "resolut": 84, "gridsiz": 84, "nice": [84, 85, 89], "quit": [84, 90], "ideal": [84, 89], "blob": 84, "small": 84, "cluster": 84, "focus": 84, "scatter": 84, "applic": 85, "come": 85, "hand": [85, 90], "why": [85, 89], "concret": 85, "deploy": 85, "crucial": 85, "somehow": 85, "goal": [86, 88], "peak": 86, "conveni": 86, "adition": 86, "As": [86, 87], "abov": [86, 90], "line": [86, 89, 90], "wors": 86, "spread": 86, "construct": [87, 92], "reli": 87, "cannot": 87, "workaround": 87, "break": 87, "condit": 87, "forbidden": 87, "analys": 88, "aspect": 88, "easi": [88, 90], "serv": [88, 89], "deeper": 88, "suit": 88, "trigger": 88, "act": 88, "immedi": 88, "describ": [88, 93], "quick": 88, "soon": 88, "decis": 88, "viewabl": 88, "side": 88, "bar": [88, 89, 90], "upon": 88, "design": 88, "adapt": 88, "happi": 88, "receiv": 88, "pull": 88, "unsuccess": [89, 90], "On": 89, "summari": 89, "notabl": 89, "tri": 89, "alloc": 89, "barplot": 89, "occur": 89, "reciev": 89, "exit": 89, "progress": 89, "scenario": 89, "mostli": 89, "face": 89, "onward": 89, "balanc": 89, "breif": 89, "lastli": [89, 90], "being": 89, "v": 89, "trend": 90, "left": 90, "ones": 90, "spine": 90, "home": 90, "lead": 90, "incom": 90, "arrang": 90, "instead": 90, "crowd": 90, "caus": 90, "overwhelm": 90, "draw": 90, "drag": 90, "togeth": 90, "relev": 90, "sens": 90, "sometim": 90, "similar": [90, 92, 93], "behaviour": 90, "situat": 91, "due": 91, "suitabl": 91, "choos": 91, "slightli": 91, "decreas": [92, 93], "explicit": 93, "quantifi": 93, "effect": 93, "captur": 93, "mac": 94, "galleri": 95}, "objects": {"deepcave": [[1, 0, 0, "-", "evaluators"], [10, 0, 0, "-", "layouts"], [13, 0, 0, "-", "plugins"], [30, 0, 0, "-", "runs"], [44, 0, 0, "-", "utils"]], "deepcave.evaluators": [[2, 0, 0, "-", "epm"], [7, 0, 0, "-", "fanova"], [8, 0, 0, "-", "footprint"], [9, 0, 0, "-", "lpi"]], "deepcave.evaluators.epm": [[3, 0, 0, "-", "fanova_forest"], [4, 0, 0, "-", "random_forest"], [5, 0, 0, "-", "random_forest_surrogate"], [6, 0, 0, "-", "utils"]], "deepcave.evaluators.epm.fanova_forest": [[3, 1, 1, "", "FanovaForest"]], "deepcave.evaluators.epm.fanova_forest.FanovaForest": [[3, 2, 1, "", "compute_marginals"]], "deepcave.evaluators.epm.random_forest": [[4, 1, 1, "", "RandomForest"]], "deepcave.evaluators.epm.random_forest.RandomForest": [[4, 2, 1, "", "get_leaf_values"], [4, 2, 1, "", "predict"], [4, 2, 1, "", "predict_marginalized"], [4, 2, 1, "", "train"]], "deepcave.evaluators.epm.random_forest_surrogate": [[5, 1, 1, "", "RandomForestSurrogate"]], "deepcave.evaluators.epm.random_forest_surrogate.RandomForestSurrogate": [[5, 2, 1, "", "predict"]], "deepcave.evaluators.epm.utils": [[6, 3, 1, "", "get_types"]], "deepcave.evaluators.fanova": [[7, 1, 1, "", "fANOVA"]], "deepcave.evaluators.fanova.fANOVA": [[7, 2, 1, "", "calculate"], [7, 2, 1, "", "get_importances"]], "deepcave.evaluators.footprint": [[8, 1, 1, "", "Footprint"]], "deepcave.evaluators.footprint.Footprint": [[8, 2, 1, "", "calculate"], [8, 2, 1, "", "get_points"], [8, 2, 1, "", "get_surface"]], "deepcave.evaluators.lpi": [[9, 1, 1, "", "LPI"]], "deepcave.evaluators.lpi.LPI": [[9, 2, 1, "", "calculate"], [9, 2, 1, "", "get_importances"]], "deepcave.layouts": [[10, 1, 1, "", "Layout"], [11, 0, 0, "-", "not_found"], [12, 0, 0, "-", "sidebar"]], "deepcave.layouts.Layout": [[10, 2, 1, "", "__call__"]], "deepcave.layouts.not_found": [[11, 1, 1, "", "NotFoundLayout"]], "deepcave.layouts.not_found.NotFoundLayout": [[11, 2, 1, "", "__call__"]], "deepcave.layouts.sidebar": [[12, 1, 1, "", "SidebarLayout"]], "deepcave.layouts.sidebar.SidebarLayout": [[12, 2, 1, "", "__call__"], [12, 2, 1, "", "register_callbacks"]], "deepcave.plugins": [[13, 1, 1, "", "Plugin"], [14, 0, 0, "-", "budget"], [15, 0, 0, "-", "dynamic"], [16, 0, 0, "-", "hyperparameter"], [20, 0, 0, "-", "objective"], [25, 0, 0, "-", "static"], [26, 0, 0, "-", "summary"]], "deepcave.plugins.Plugin": [[13, 2, 1, "", "__call__"], [13, 4, 1, "", "all_runs"], [13, 2, 1, "", "check_run_compatibility"], [13, 2, 1, "", "check_runs_compatibility"], [13, 2, 1, "", "generate_inputs"], [13, 2, 1, "", "generate_outputs"], [13, 2, 1, "", "get_base_url"], [13, 2, 1, "", "get_filter_layout"], [13, 2, 1, "", "get_input_layout"], [13, 2, 1, "", "get_internal_id"], [13, 2, 1, "", "get_internal_input_id"], [13, 2, 1, "", "get_internal_output_id"], [13, 2, 1, "", "get_mpl_output_layout"], [13, 2, 1, "", "get_output_layout"], [13, 2, 1, "", "get_run_input_layout"], [13, 2, 1, "", "get_selected_runs"], [13, 4, 1, "", "groups"], [13, 2, 1, "", "load_dependency_inputs"], [13, 2, 1, "", "load_inputs"], [13, 2, 1, "", "load_mpl_outputs"], [13, 2, 1, "", "load_outputs"], [13, 2, 1, "", "load_run_inputs"], [13, 2, 1, "", "process"], [13, 2, 1, "", "register_callbacks"], [13, 2, 1, "", "register_input"], [13, 2, 1, "", "register_output"], [13, 4, 1, "", "runs"]], "deepcave.plugins.dynamic": [[15, 1, 1, "", "DynamicPlugin"]], "deepcave.plugins.dynamic.DynamicPlugin": [[15, 2, 1, "", "__call__"], [15, 2, 1, "", "register_callbacks"]], "deepcave.plugins.hyperparameter": [[17, 0, 0, "-", "importances"], [18, 0, 0, "-", "pdp"], [19, 0, 0, "-", "symbolic_explanations"]], "deepcave.plugins.hyperparameter.importances": [[17, 1, 1, "", "Importances"]], "deepcave.plugins.hyperparameter.importances.Importances": [[17, 2, 1, "", "get_filter_layout"], [17, 2, 1, "", "get_input_layout"], [17, 2, 1, "", "get_mpl_output_layout"], [17, 2, 1, "", "get_output_layout"], [17, 2, 1, "", "load_dependency_inputs"], [17, 2, 1, "", "load_inputs"], [17, 2, 1, "", "load_mpl_outputs"], [17, 2, 1, "", "load_outputs"], [17, 2, 1, "", "process"]], "deepcave.plugins.hyperparameter.pdp": [[18, 1, 1, "", "PartialDependencies"]], "deepcave.plugins.hyperparameter.pdp.PartialDependencies": [[18, 2, 1, "", "get_filter_layout"], [18, 2, 1, "", "get_input_layout"], [18, 2, 1, "", "get_output_layout"], [18, 2, 1, "", "get_pdp_figure"], [18, 2, 1, "", "load_dependency_inputs"], [18, 2, 1, "", "load_inputs"], [18, 2, 1, "", "load_outputs"], [18, 2, 1, "", "process"]], "deepcave.plugins.hyperparameter.symbolic_explanations": [[19, 1, 1, "", "SymbolicExplanations"]], "deepcave.plugins.hyperparameter.symbolic_explanations.SymbolicExplanations": [[19, 2, 1, "", "get_input_layout"], [19, 2, 1, "", "get_output_layout"], [19, 2, 1, "", "load_dependency_inputs"], [19, 2, 1, "", "load_inputs"], [19, 2, 1, "", "load_outputs"], [19, 2, 1, "", "process"]], "deepcave.plugins.objective": [[21, 0, 0, "-", "configuration_cube"], [22, 0, 0, "-", "cost_over_time"], [23, 0, 0, "-", "parallel_coordinates"], [24, 0, 0, "-", "pareto_front"]], "deepcave.plugins.objective.configuration_cube": [[21, 1, 1, "", "ConfigurationCube"]], "deepcave.plugins.objective.configuration_cube.ConfigurationCube": [[21, 2, 1, "", "get_filter_layout"], [21, 2, 1, "", "get_input_layout"], [21, 2, 1, "", "get_output_layout"], [21, 2, 1, "", "load_dependency_inputs"], [21, 2, 1, "", "load_inputs"], [21, 2, 1, "", "load_outputs"], [21, 2, 1, "", "process"]], "deepcave.plugins.objective.cost_over_time": [[22, 1, 1, "", "CostOverTime"]], "deepcave.plugins.objective.cost_over_time.CostOverTime": [[22, 2, 1, "", "check_runs_compatibility"], [22, 2, 1, "", "get_filter_layout"], [22, 2, 1, "", "get_input_layout"], [22, 2, 1, "", "get_output_layout"], [22, 2, 1, "", "load_inputs"], [22, 2, 1, "", "load_outputs"], [22, 2, 1, "", "process"]], "deepcave.plugins.objective.parallel_coordinates": [[23, 1, 1, "", "ParallelCoordinates"]], "deepcave.plugins.objective.parallel_coordinates.ParallelCoordinates": [[23, 2, 1, "", "get_filter_layout"], [23, 2, 1, "", "get_input_layout"], [23, 2, 1, "", "get_output_layout"], [23, 2, 1, "", "load_dependency_inputs"], [23, 2, 1, "", "load_inputs"], [23, 2, 1, "", "load_outputs"], [23, 2, 1, "", "process"]], "deepcave.plugins.objective.pareto_front": [[24, 1, 1, "", "ParetoFront"]], "deepcave.plugins.objective.pareto_front.ParetoFront": [[24, 2, 1, "", "check_runs_compatibility"], [24, 2, 1, "", "get_filter_layout"], [24, 2, 1, "", "get_input_layout"], [24, 2, 1, "", "get_mpl_output_layout"], [24, 2, 1, "", "get_output_layout"], [24, 2, 1, "", "load_inputs"], [24, 2, 1, "", "load_mpl_outputs"], [24, 2, 1, "", "load_outputs"], [24, 2, 1, "", "process"]], "deepcave.plugins.static": [[25, 1, 1, "", "PluginState"], [25, 1, 1, "", "StaticPlugin"]], "deepcave.plugins.static.StaticPlugin": [[25, 2, 1, "", "__call__"], [25, 2, 1, "", "register_callbacks"]], "deepcave.plugins.summary": [[27, 0, 0, "-", "configurations"], [28, 0, 0, "-", "footprint"], [29, 0, 0, "-", "overview"]], "deepcave.plugins.summary.configurations": [[27, 1, 1, "", "Configurations"]], "deepcave.plugins.summary.configurations.Configurations": [[27, 2, 1, "", "get_input_layout"], [27, 2, 1, "", "get_link"], [27, 2, 1, "", "get_output_layout"], [27, 2, 1, "", "load_dependency_inputs"], [27, 2, 1, "", "load_inputs"], [27, 2, 1, "", "load_outputs"], [27, 2, 1, "", "process"]], "deepcave.plugins.summary.footprint": [[28, 1, 1, "", "FootPrint"]], "deepcave.plugins.summary.footprint.FootPrint": [[28, 2, 1, "", "get_filter_layout"], [28, 2, 1, "", "get_input_layout"], [28, 2, 1, "", "get_mpl_output_layout"], [28, 2, 1, "", "get_output_layout"], [28, 2, 1, "", "load_dependency_inputs"], [28, 2, 1, "", "load_inputs"], [28, 2, 1, "", "load_mpl_outputs"], [28, 2, 1, "", "load_outputs"], [28, 2, 1, "", "process"]], "deepcave.plugins.summary.overview": [[29, 1, 1, "", "Overview"]], "deepcave.plugins.summary.overview.Overview": [[29, 2, 1, "", "get_output_layout"], [29, 2, 1, "", "load_outputs"]], "deepcave.runs": [[30, 1, 1, "", "AbstractRun"], [30, 3, 1, "", "check_equality"], [31, 0, 0, "-", "converters"], [36, 0, 0, "-", "exceptions"], [37, 0, 0, "-", "group"], [38, 0, 0, "-", "handler"], [39, 0, 0, "-", "objective"], [40, 0, 0, "-", "recorder"], [41, 0, 0, "-", "run"], [42, 0, 0, "-", "status"], [43, 0, 0, "-", "trial"]], "deepcave.runs.AbstractRun": [[30, 2, 1, "", "empty"], [30, 2, 1, "", "encode_config"], [30, 2, 1, "", "encode_configs"], [30, 2, 1, "", "get_all_costs"], [30, 2, 1, "", "get_budget"], [30, 2, 1, "", "get_budget_ids"], [30, 2, 1, "", "get_budgets"], [30, 2, 1, "", "get_config"], [30, 2, 1, "", "get_config_id"], [30, 2, 1, "", "get_configs"], [30, 2, 1, "", "get_costs"], [30, 2, 1, "", "get_encoded_data"], [30, 2, 1, "", "get_highest_budget"], [30, 2, 1, "", "get_incumbent"], [30, 2, 1, "", "get_meta"], [30, 2, 1, "", "get_model"], [30, 2, 1, "", "get_num_configs"], [30, 2, 1, "", "get_objective"], [30, 2, 1, "", "get_objective_id"], [30, 2, 1, "", "get_objective_ids"], [30, 2, 1, "", "get_objective_name"], [30, 2, 1, "", "get_objective_names"], [30, 2, 1, "", "get_objectives"], [30, 2, 1, "", "get_origin"], [30, 2, 1, "", "get_status"], [30, 2, 1, "", "get_trajectory"], [30, 2, 1, "", "get_trial"], [30, 2, 1, "", "get_trial_key"], [30, 2, 1, "", "get_trials"], [30, 4, 1, "", "hash"], [30, 4, 1, "", "id"], [30, 4, 1, "", "latest_change"], [30, 2, 1, "", "merge_costs"], [30, 2, 1, "", "reset"]], "deepcave.runs.converters": [[32, 0, 0, "-", "bohb"], [33, 0, 0, "-", "deepcave"], [34, 0, 0, "-", "smac3v1"], [35, 0, 0, "-", "smac3v2"]], "deepcave.runs.converters.bohb": [[32, 1, 1, "", "BOHBRun"]], "deepcave.runs.converters.bohb.BOHBRun": [[32, 2, 1, "", "from_path"], [32, 4, 1, "", "hash"], [32, 4, 1, "", "latest_change"]], "deepcave.runs.converters.deepcave": [[33, 1, 1, "", "DeepCAVERun"]], "deepcave.runs.converters.deepcave.DeepCAVERun": [[33, 2, 1, "", "from_path"], [33, 4, 1, "", "hash"], [33, 4, 1, "", "latest_change"]], "deepcave.runs.converters.smac3v1": [[34, 1, 1, "", "SMAC3v1Run"]], "deepcave.runs.converters.smac3v1.SMAC3v1Run": [[34, 2, 1, "", "from_path"], [34, 4, 1, "", "hash"], [34, 4, 1, "", "latest_change"]], "deepcave.runs.converters.smac3v2": [[35, 1, 1, "", "SMAC3v2Run"]], "deepcave.runs.converters.smac3v2.SMAC3v2Run": [[35, 2, 1, "", "from_path"], [35, 4, 1, "", "hash"], [35, 4, 1, "", "latest_change"]], "deepcave.runs.exceptions": [[36, 5, 1, "", "NotMergeableError"], [36, 5, 1, "", "NotValidRunError"]], "deepcave.runs.group": [[37, 1, 1, "", "Group"]], "deepcave.runs.group.Group": [[37, 2, 1, "", "__iter__"], [37, 2, 1, "", "get_model"], [37, 2, 1, "", "get_new_config_id"], [37, 2, 1, "", "get_original_config_id"], [37, 2, 1, "", "get_original_run"], [37, 2, 1, "", "get_runs"], [37, 2, 1, "", "get_trajectory"], [37, 4, 1, "", "hash"], [37, 4, 1, "", "id"], [37, 4, 1, "", "latest_change"], [37, 4, 1, "", "run_names"], [37, 4, 1, "", "run_paths"]], "deepcave.runs.handler": [[38, 1, 1, "", "RunHandler"]], "deepcave.runs.handler.RunHandler": [[38, 2, 1, "", "add_run"], [38, 2, 1, "", "get_available_run_paths"], [38, 2, 1, "", "get_groups"], [38, 2, 1, "", "get_run"], [38, 2, 1, "", "get_run_name"], [38, 2, 1, "", "get_runs"], [38, 2, 1, "", "get_selected_groups"], [38, 2, 1, "", "get_selected_run_names"], [38, 2, 1, "", "get_selected_run_paths"], [38, 2, 1, "", "get_working_directory"], [38, 2, 1, "", "remove_run"], [38, 2, 1, "", "set_working_directory"], [38, 2, 1, "", "update"], [38, 2, 1, "", "update_groups"], [38, 2, 1, "", "update_run"], [38, 2, 1, "", "update_runs"]], "deepcave.runs.objective": [[39, 1, 1, "", "Objective"]], "deepcave.runs.objective.Objective": [[39, 2, 1, "", "__eq__"], [39, 2, 1, "", "__post_init__"], [39, 2, 1, "", "from_json"], [39, 2, 1, "", "get_worst_value"], [39, 2, 1, "", "merge"], [39, 2, 1, "", "to_json"]], "deepcave.runs.recorder": [[40, 1, 1, "", "Recorder"]], "deepcave.runs.recorder.Recorder": [[40, 2, 1, "", "end"], [40, 2, 1, "", "start"]], "deepcave.runs.run": [[41, 1, 1, "", "Run"]], "deepcave.runs.run.Run": [[41, 2, 1, "", "add"], [41, 2, 1, "", "exists"], [41, 2, 1, "", "from_path"], [41, 4, 1, "", "id"], [41, 2, 1, "", "load"], [41, 4, 1, "", "path"], [41, 2, 1, "", "save"]], "deepcave.runs.status": [[42, 1, 1, "", "Status"]], "deepcave.runs.status.Status": [[42, 2, 1, "", "to_text"]], "deepcave.runs.trial": [[43, 1, 1, "", "Trial"]], "deepcave.runs.trial.Trial": [[43, 2, 1, "", "__post_init__"], [43, 2, 1, "", "get_key"], [43, 2, 1, "", "to_json"]], "deepcave.utils": [[45, 0, 0, "-", "cache"], [46, 0, 0, "-", "cast"], [47, 0, 0, "-", "compression"], [48, 0, 0, "-", "configs"], [49, 0, 0, "-", "configspace"], [50, 0, 0, "-", "dash"], [51, 0, 0, "-", "data_structures"], [52, 0, 0, "-", "docs"], [53, 0, 0, "-", "files"], [54, 0, 0, "-", "hash"], [55, 0, 0, "-", "layout"], [56, 0, 0, "-", "logs"], [57, 0, 0, "-", "notification"], [58, 0, 0, "-", "run_caches"], [59, 0, 0, "-", "styled_plot"], [60, 0, 0, "-", "styled_plotty"], [61, 0, 0, "-", "symbolic_regression"], [62, 0, 0, "-", "url"], [63, 0, 0, "-", "util"]], "deepcave.utils.cache": [[45, 1, 1, "", "Cache"]], "deepcave.utils.cache.Cache": [[45, 2, 1, "", "clear"], [45, 2, 1, "", "get"], [45, 2, 1, "", "has"], [45, 2, 1, "", "read"], [45, 2, 1, "", "set"], [45, 2, 1, "", "set_dict"], [45, 2, 1, "", "write"]], "deepcave.utils.cast": [[46, 3, 1, "", "optional_int"]], "deepcave.utils.compression": [[47, 3, 1, "", "deserialize"], [47, 3, 1, "", "serialize"]], "deepcave.utils.configs": [[48, 3, 1, "", "parse_config"]], "deepcave.utils.configspace": [[49, 3, 1, "", "sample_border_config"], [49, 3, 1, "", "sample_random_config"]], "deepcave.utils.dash": [[50, 3, 1, "", "alert"], [50, 3, 1, "", "flash"]], "deepcave.utils.data_structures": [[51, 3, 1, "", "update_dict"]], "deepcave.utils.docs": [[52, 3, 1, "", "rst_to_md"]], "deepcave.utils.files": [[53, 3, 1, "", "make_dirs"]], "deepcave.utils.hash": [[54, 3, 1, "", "file_to_hash"], [54, 3, 1, "", "string_to_hash"]], "deepcave.utils.layout": [[55, 3, 1, "", "create_table"], [55, 3, 1, "", "get_checklist_options"], [55, 3, 1, "", "get_radio_options"], [55, 3, 1, "", "get_select_options"], [55, 3, 1, "", "get_slider_marks"], [55, 3, 1, "", "help_button"]], "deepcave.utils.logs": [[56, 3, 1, "", "get_logger"]], "deepcave.utils.notification": [[57, 1, 1, "", "Notification"]], "deepcave.utils.notification.Notification": [[57, 2, 1, "", "get_latest"], [57, 2, 1, "", "reset"], [57, 2, 1, "", "update"]], "deepcave.utils.run_caches": [[58, 1, 1, "", "RunCaches"]], "deepcave.utils.run_caches.RunCaches": [[58, 2, 1, "", "clear"], [58, 2, 1, "", "clear_run"], [58, 2, 1, "", "get"], [58, 2, 1, "", "set"], [58, 2, 1, "", "update"]], "deepcave.utils.styled_plot": [[59, 1, 1, "", "StyledPlot"]], "deepcave.utils.styled_plot.StyledPlot": [[59, 2, 1, "", "__getattr__"], [59, 2, 1, "", "boxplot"], [59, 2, 1, "", "figure"], [59, 2, 1, "", "get_color"], [59, 2, 1, "", "legend"], [59, 2, 1, "", "render"], [59, 2, 1, "", "save_figure"], [59, 2, 1, "", "xlim"], [59, 2, 1, "", "ylim"]], "deepcave.utils.styled_plotty": [[60, 3, 1, "", "generate_config_code"], [60, 3, 1, "", "get_color"], [60, 3, 1, "", "get_discrete_heatmap"], [60, 3, 1, "", "get_hovertext_from_config"], [60, 3, 1, "", "get_hyperparameter_ticks"], [60, 3, 1, "", "get_hyperparameter_ticks_from_values"], [60, 3, 1, "", "hex_to_rgb"], [60, 3, 1, "", "prettify_label"], [60, 3, 1, "", "save_image"]], "deepcave.utils.symbolic_regression": [[61, 3, 1, "", "convert_symb"], [61, 3, 1, "", "exp"], [61, 3, 1, "", "get_function_set"]], "deepcave.utils.url": [[62, 3, 1, "", "create_url"], [62, 3, 1, "", "parse_url"]], "deepcave.utils.util": [[63, 3, 1, "", "get_latest_change"], [63, 3, 1, "", "get_random_string"], [63, 3, 1, "", "short_string"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:function", "4": "py:property", "5": "py:exception"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "function", "Python function"], "4": ["py", "property", "Python property"], "5": ["py", "exception", "Python exception"]}, "titleterms": {"api": [0, 66, 70], "refer": 0, "deepcav": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63], "evalu": [1, 2, 3, 4, 5, 6, 7, 8, 9], "modul": [1, 2, 14, 16, 20, 26, 31, 44], "epm": [2, 3, 4, 5, 6], "fanova_forest": 3, "properti": [3, 7, 8, 9, 10, 11, 12, 13, 15, 22, 24, 25, 30, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 43, 58, 59], "random_forest": 4, "random_forest_surrog": 5, "util": [6, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63], "fanova": 7, "footprint": [8, 28, 84], "lpi": 9, "layout": [10, 11, 12, 55], "not_found": 11, "sidebar": 12, "plugin": [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 88], "budget": [14, 82], "dynam": 15, "hyperparamet": [16, 17, 18, 19], "import": [17, 65, 87], "pdp": 18, "symbolic_explan": 19, "object": [20, 21, 22, 23, 24, 39, 85, 89], "configuration_cub": 21, "cost_over_tim": 22, "parallel_coordin": 23, "pareto_front": 24, "static": 25, "summari": [26, 27, 28, 29], "configur": [27, 83, 84, 85, 89], "overview": [29, 85, 89], "run": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 73], "convert": [31, 32, 33, 34, 35, 64], "bohb": 32, "smac3v1": 34, "smac3v2": 35, "except": 36, "group": 37, "handler": 38, "record": [40, 70, 72, 73], "statu": 42, "trial": 43, "cach": 45, "cast": 46, "compress": 47, "config": 48, "configspac": 49, "dash": 50, "data_structur": 51, "doc": 52, "file": 53, "hash": 54, "log": 56, "notif": 57, "run_cach": 58, "styled_plot": 59, "styled_plotti": 60, "symbolic_regress": 61, "url": 62, "custom": [64, 88], "parallel": [67, 90], "coordin": [67, 90], "partial": [68, 92], "depend": [68, 92], "comput": [69, 75, 76, 95], "time": [69, 75, 76, 86, 95], "exampl": 70, "multi": [71, 74], "layer": [71, 74], "perceptron": [71, 74], "via": [71, 74], "sklearn": 71, "minim": 73, "pytorch": 74, "frequent": 77, "ask": 77, "question": 77, "get": 78, "start": 78, "glossari": 79, "home": 80, "featur": 80, "citat": 80, "instal": [81, 94], "redi": [81, 94], "server": [81, 94], "mac": 81, "relat": 81, "correl": 82, "option": [82, 90], "interpret": [82, 86], "cube": 83, "perform": 84, "plot": [84, 90], "coverag": 84, "code": 85, "cost": 86, "over": 86, "input": 86, "filter": 86, "structur": 88, "type": 88, "quick": 89, "inform": 89, "meta": 89, "status": 89, "space": 89, "us": 90, "pareto": 91, "front": 91, "symbol": 93, "explan": 93}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "sphinx": 60}, "alltitles": {"API References": [[0, "api-references"]], "deepcave.evaluators": [[1, "module-deepcave.evaluators"]], "## Modules": [[1, "modules"], [2, "modules"], [14, "modules"], [16, "modules"], [20, "modules"], [26, "modules"], [31, "modules"], [44, "modules"]], "deepcave.evaluators.epm": [[2, "module-deepcave.evaluators.epm"]], "deepcave.evaluators.epm.fanova_forest": [[3, "module-deepcave.evaluators.epm.fanova_forest"]], "Properties": [[3, "properties"], [7, "properties"], [8, "properties"], [9, "properties"], [10, "properties"], [11, "properties"], [12, "properties"], [13, "properties"], [15, "properties"], [22, "properties"], [24, "properties"], [25, "properties"], [30, "properties"], [32, "properties"], [33, "properties"], [34, "properties"], [35, "properties"], [37, "properties"], [38, "properties"], [39, "properties"], [40, "properties"], [41, "properties"], [42, "properties"], [43, "properties"], [58, "properties"], [59, "properties"]], "deepcave.evaluators.epm.random_forest": [[4, "module-deepcave.evaluators.epm.random_forest"]], "deepcave.evaluators.epm.random_forest_surrogate": [[5, "module-deepcave.evaluators.epm.random_forest_surrogate"]], "deepcave.evaluators.epm.utils": [[6, "module-deepcave.evaluators.epm.utils"]], "deepcave.evaluators.fanova": [[7, "module-deepcave.evaluators.fanova"]], "deepcave.evaluators.footprint": [[8, "module-deepcave.evaluators.footprint"]], "deepcave.evaluators.lpi": [[9, "module-deepcave.evaluators.lpi"]], "deepcave.layouts": [[10, "module-deepcave.layouts"]], "deepcave.layouts.not_found": [[11, "module-deepcave.layouts.not_found"]], "deepcave.layouts.sidebar": [[12, "module-deepcave.layouts.sidebar"]], "deepcave.plugins": [[13, "module-deepcave.plugins"]], "deepcave.plugins.budget": [[14, "module-deepcave.plugins.budget"]], "deepcave.plugins.dynamic": [[15, "module-deepcave.plugins.dynamic"]], "deepcave.plugins.hyperparameter": [[16, "module-deepcave.plugins.hyperparameter"]], "deepcave.plugins.hyperparameter.importances": [[17, "module-deepcave.plugins.hyperparameter.importances"]], "deepcave.plugins.hyperparameter.pdp": [[18, "module-deepcave.plugins.hyperparameter.pdp"]], "deepcave.plugins.hyperparameter.symbolic_explanations": [[19, "module-deepcave.plugins.hyperparameter.symbolic_explanations"]], "deepcave.plugins.objective": [[20, "module-deepcave.plugins.objective"]], "deepcave.plugins.objective.configuration_cube": [[21, "module-deepcave.plugins.objective.configuration_cube"]], "deepcave.plugins.objective.cost_over_time": [[22, "module-deepcave.plugins.objective.cost_over_time"]], "deepcave.plugins.objective.parallel_coordinates": [[23, "module-deepcave.plugins.objective.parallel_coordinates"]], "deepcave.plugins.objective.pareto_front": [[24, "module-deepcave.plugins.objective.pareto_front"]], "deepcave.plugins.static": [[25, "module-deepcave.plugins.static"]], "deepcave.plugins.summary": [[26, "module-deepcave.plugins.summary"]], "deepcave.plugins.summary.configurations": [[27, "module-deepcave.plugins.summary.configurations"]], "deepcave.plugins.summary.footprint": [[28, "module-deepcave.plugins.summary.footprint"]], "deepcave.plugins.summary.overview": [[29, "module-deepcave.plugins.summary.overview"]], "deepcave.runs": [[30, "module-deepcave.runs"]], "deepcave.runs.converters": [[31, "module-deepcave.runs.converters"]], "deepcave.runs.converters.bohb": [[32, "module-deepcave.runs.converters.bohb"]], "deepcave.runs.converters.deepcave": [[33, "module-deepcave.runs.converters.deepcave"]], "deepcave.runs.converters.smac3v1": [[34, "module-deepcave.runs.converters.smac3v1"]], "deepcave.runs.converters.smac3v2": [[35, "module-deepcave.runs.converters.smac3v2"]], "deepcave.runs.exceptions": [[36, "module-deepcave.runs.exceptions"]], "deepcave.runs.group": [[37, "module-deepcave.runs.group"]], "deepcave.runs.handler": [[38, "module-deepcave.runs.handler"]], "deepcave.runs.objective": [[39, "module-deepcave.runs.objective"]], "deepcave.runs.recorder": [[40, "module-deepcave.runs.recorder"]], "deepcave.runs.run": [[41, "module-deepcave.runs.run"]], "deepcave.runs.status": [[42, "module-deepcave.runs.status"]], "deepcave.runs.trial": [[43, "module-deepcave.runs.trial"]], "deepcave.utils": [[44, "module-deepcave.utils"]], "deepcave.utils.cache": [[45, "module-deepcave.utils.cache"]], "deepcave.utils.cast": [[46, "module-deepcave.utils.cast"]], "deepcave.utils.compression": [[47, "module-deepcave.utils.compression"]], "deepcave.utils.configs": [[48, "module-deepcave.utils.configs"]], "deepcave.utils.configspace": [[49, "module-deepcave.utils.configspace"]], "deepcave.utils.dash": [[50, "module-deepcave.utils.dash"]], "deepcave.utils.data_structures": [[51, "module-deepcave.utils.data_structures"]], "deepcave.utils.docs": [[52, "module-deepcave.utils.docs"]], "deepcave.utils.files": [[53, "module-deepcave.utils.files"]], "deepcave.utils.hash": [[54, "module-deepcave.utils.hash"]], "deepcave.utils.layout": [[55, "module-deepcave.utils.layout"]], "deepcave.utils.logs": [[56, "module-deepcave.utils.logs"]], "deepcave.utils.notification": [[57, "module-deepcave.utils.notification"]], "deepcave.utils.run_caches": [[58, "module-deepcave.utils.run_caches"]], "deepcave.utils.styled_plot": [[59, "module-deepcave.utils.styled_plot"]], "deepcave.utils.styled_plotty": [[60, "module-deepcave.utils.styled_plotty"]], "deepcave.utils.symbolic_regression": [[61, "module-deepcave.utils.symbolic_regression"]], "deepcave.utils.url": [[62, "module-deepcave.utils.url"]], "deepcave.utils.util": [[63, "module-deepcave.utils.util"]], "Converters": [[64, "converters"]], "Custom Converter": [[64, "custom-converter"]], "Importances": [[65, "importances"], [87, "importances"]], "API": [[66, "api"], [70, "api"]], "Parallel Coordinates": [[67, "parallel-coordinates"], [90, "parallel-coordinates"]], "Partial Dependencies": [[68, "partial-dependencies"], [92, "partial-dependencies"]], "Computation times": [[69, "computation-times"], [75, "computation-times"], [76, "computation-times"], [95, "computation-times"]], "Examples": [[70, "examples"]], "Record": [[70, "record"], [72, "record"]], "Multi-Layer Perceptron via Sklearn": [[71, "multi-layer-perceptron-via-sklearn"]], "Record Minimal Run": [[73, "record-minimal-run"]], "Multi-Layer Perceptron via PyTorch": [[74, "multi-layer-perceptron-via-pytorch"]], "Frequently Asked Questions": [[77, "frequently-asked-questions"]], "Getting Started": [[78, "getting-started"]], "Glossary": [[79, "glossary"]], "Home": [[80, "home"]], "Features": [[80, "features"]], "Citation": [[80, "citation"]], "Installation": [[81, "installation"]], "Redis Server": [[81, "id1"]], "Mac Related": [[81, "mac-related"]], "Budget Correlation": [[82, "budget-correlation"]], "Options": [[82, "options"], [90, "options"]], "Correlation Interpretation": [[82, "correlation-interpretation"]], "Configuration Cube": [[83, "configuration-cube"]], "Configuration Footprint": [[84, "configuration-footprint"]], "Performance plot": [[84, "performance-plot"]], "Coverage plot": [[84, "coverage-plot"]], "Configurations": [[85, "configurations"]], "Overview": [[85, "overview"], [89, "overview"]], "Objectives": [[85, "objectives"], [89, "objectives"]], "Configuration": [[85, "configuration"]], "Code": [[85, "code"]], "Cost Over Time": [[86, "cost-over-time"]], "Inputs and Filters": [[86, "inputs-and-filters"]], "Interpretation": [[86, "interpretation"]], "Plugins": [[88, "plugins"]], "Plugin Structure": [[88, "plugin-structure"]], "Plugin Types": [[88, "plugin-types"]], "Custom Plugin": [[88, "custom-plugin"]], "Quick Information": [[89, "quick-information"]], "Meta": [[89, "meta"]], "Statuses": [[89, "statuses"]], "Configuration Space": [[89, "configuration-space"]], "Using the plot": [[90, "using-the-plot"]], "Pareto Front": [[91, "pareto-front"]], "Symbolic Explanations": [[93, "symbolic-explanations"]], "Install Redis Server": [[94, "install-redis-server"]]}, "indexentries": {"deepcave.evaluators": [[1, "module-deepcave.evaluators"]], "module": [[1, "module-deepcave.evaluators"], [2, "module-deepcave.evaluators.epm"], [3, "module-deepcave.evaluators.epm.fanova_forest"], [4, "module-deepcave.evaluators.epm.random_forest"], [5, "module-deepcave.evaluators.epm.random_forest_surrogate"], [6, "module-deepcave.evaluators.epm.utils"], [7, "module-deepcave.evaluators.fanova"], [8, "module-deepcave.evaluators.footprint"], [9, "module-deepcave.evaluators.lpi"], [10, "module-deepcave.layouts"], [11, "module-deepcave.layouts.not_found"], [12, "module-deepcave.layouts.sidebar"], [13, "module-deepcave.plugins"], [14, "module-deepcave.plugins.budget"], [15, "module-deepcave.plugins.dynamic"], [16, "module-deepcave.plugins.hyperparameter"], [17, "module-deepcave.plugins.hyperparameter.importances"], [18, "module-deepcave.plugins.hyperparameter.pdp"], [19, "module-deepcave.plugins.hyperparameter.symbolic_explanations"], [20, "module-deepcave.plugins.objective"], [21, "module-deepcave.plugins.objective.configuration_cube"], [22, "module-deepcave.plugins.objective.cost_over_time"], [23, "module-deepcave.plugins.objective.parallel_coordinates"], [24, "module-deepcave.plugins.objective.pareto_front"], [25, "module-deepcave.plugins.static"], [26, "module-deepcave.plugins.summary"], [27, "module-deepcave.plugins.summary.configurations"], [28, "module-deepcave.plugins.summary.footprint"], [29, "module-deepcave.plugins.summary.overview"], [30, "module-deepcave.runs"], [31, "module-deepcave.runs.converters"], [32, "module-deepcave.runs.converters.bohb"], [33, "module-deepcave.runs.converters.deepcave"], [34, "module-deepcave.runs.converters.smac3v1"], [35, "module-deepcave.runs.converters.smac3v2"], [36, "module-deepcave.runs.exceptions"], [37, "module-deepcave.runs.group"], [38, "module-deepcave.runs.handler"], [39, "module-deepcave.runs.objective"], [40, "module-deepcave.runs.recorder"], [41, "module-deepcave.runs.run"], [42, "module-deepcave.runs.status"], [43, "module-deepcave.runs.trial"], [44, "module-deepcave.utils"], [45, "module-deepcave.utils.cache"], [46, "module-deepcave.utils.cast"], [47, "module-deepcave.utils.compression"], [48, "module-deepcave.utils.configs"], [49, "module-deepcave.utils.configspace"], [50, "module-deepcave.utils.dash"], [51, "module-deepcave.utils.data_structures"], [52, "module-deepcave.utils.docs"], [53, "module-deepcave.utils.files"], [54, "module-deepcave.utils.hash"], [55, "module-deepcave.utils.layout"], [56, "module-deepcave.utils.logs"], [57, "module-deepcave.utils.notification"], [58, "module-deepcave.utils.run_caches"], [59, "module-deepcave.utils.styled_plot"], [60, "module-deepcave.utils.styled_plotty"], [61, "module-deepcave.utils.symbolic_regression"], [62, "module-deepcave.utils.url"], [63, "module-deepcave.utils.util"]], "deepcave.evaluators.epm": [[2, "module-deepcave.evaluators.epm"]], "fanovaforest (class in deepcave.evaluators.epm.fanova_forest)": [[3, "deepcave.evaluators.epm.fanova_forest.FanovaForest"]], "compute_marginals() (deepcave.evaluators.epm.fanova_forest.fanovaforest method)": [[3, "deepcave.evaluators.epm.fanova_forest.FanovaForest.compute_marginals"]], "deepcave.evaluators.epm.fanova_forest": [[3, "module-deepcave.evaluators.epm.fanova_forest"]], "randomforest (class in deepcave.evaluators.epm.random_forest)": [[4, "deepcave.evaluators.epm.random_forest.RandomForest"]], "deepcave.evaluators.epm.random_forest": [[4, "module-deepcave.evaluators.epm.random_forest"]], "get_leaf_values() (deepcave.evaluators.epm.random_forest.randomforest method)": [[4, "deepcave.evaluators.epm.random_forest.RandomForest.get_leaf_values"]], "predict() (deepcave.evaluators.epm.random_forest.randomforest method)": [[4, "deepcave.evaluators.epm.random_forest.RandomForest.predict"]], "predict_marginalized() (deepcave.evaluators.epm.random_forest.randomforest method)": [[4, "deepcave.evaluators.epm.random_forest.RandomForest.predict_marginalized"]], "train() (deepcave.evaluators.epm.random_forest.randomforest method)": [[4, "deepcave.evaluators.epm.random_forest.RandomForest.train"]], "randomforestsurrogate (class in deepcave.evaluators.epm.random_forest_surrogate)": [[5, "deepcave.evaluators.epm.random_forest_surrogate.RandomForestSurrogate"]], "deepcave.evaluators.epm.random_forest_surrogate": [[5, "module-deepcave.evaluators.epm.random_forest_surrogate"]], "predict() (deepcave.evaluators.epm.random_forest_surrogate.randomforestsurrogate method)": [[5, "deepcave.evaluators.epm.random_forest_surrogate.RandomForestSurrogate.predict"]], "deepcave.evaluators.epm.utils": [[6, "module-deepcave.evaluators.epm.utils"]], "get_types() (in module deepcave.evaluators.epm.utils)": [[6, "deepcave.evaluators.epm.utils.get_types"]], "calculate() (deepcave.evaluators.fanova.fanova method)": [[7, "deepcave.evaluators.fanova.fANOVA.calculate"]], "deepcave.evaluators.fanova": [[7, "module-deepcave.evaluators.fanova"]], "fanova (class in deepcave.evaluators.fanova)": [[7, "deepcave.evaluators.fanova.fANOVA"]], "get_importances() (deepcave.evaluators.fanova.fanova method)": [[7, "deepcave.evaluators.fanova.fANOVA.get_importances"]], "footprint (class in deepcave.evaluators.footprint)": [[8, "deepcave.evaluators.footprint.Footprint"]], "calculate() (deepcave.evaluators.footprint.footprint method)": [[8, "deepcave.evaluators.footprint.Footprint.calculate"]], "deepcave.evaluators.footprint": [[8, "module-deepcave.evaluators.footprint"]], "get_points() (deepcave.evaluators.footprint.footprint method)": [[8, "deepcave.evaluators.footprint.Footprint.get_points"]], "get_surface() (deepcave.evaluators.footprint.footprint method)": [[8, "deepcave.evaluators.footprint.Footprint.get_surface"]], "lpi (class in deepcave.evaluators.lpi)": [[9, "deepcave.evaluators.lpi.LPI"]], "calculate() (deepcave.evaluators.lpi.lpi method)": [[9, "deepcave.evaluators.lpi.LPI.calculate"]], "deepcave.evaluators.lpi": [[9, "module-deepcave.evaluators.lpi"]], "get_importances() (deepcave.evaluators.lpi.lpi method)": [[9, "deepcave.evaluators.lpi.LPI.get_importances"]], "layout (class in deepcave.layouts)": [[10, "deepcave.layouts.Layout"]], "__call__() (deepcave.layouts.layout method)": [[10, "deepcave.layouts.Layout.__call__"]], "deepcave.layouts": [[10, "module-deepcave.layouts"]], "notfoundlayout (class in deepcave.layouts.not_found)": [[11, "deepcave.layouts.not_found.NotFoundLayout"]], "__call__() (deepcave.layouts.not_found.notfoundlayout method)": [[11, "deepcave.layouts.not_found.NotFoundLayout.__call__"]], "deepcave.layouts.not_found": [[11, "module-deepcave.layouts.not_found"]], "sidebarlayout (class in deepcave.layouts.sidebar)": [[12, "deepcave.layouts.sidebar.SidebarLayout"]], "__call__() (deepcave.layouts.sidebar.sidebarlayout method)": [[12, "deepcave.layouts.sidebar.SidebarLayout.__call__"]], "deepcave.layouts.sidebar": [[12, "module-deepcave.layouts.sidebar"]], "register_callbacks() (deepcave.layouts.sidebar.sidebarlayout method)": [[12, "deepcave.layouts.sidebar.SidebarLayout.register_callbacks"]], "plugin (class in deepcave.plugins)": [[13, "deepcave.plugins.Plugin"]], "__call__() (deepcave.plugins.plugin method)": [[13, "deepcave.plugins.Plugin.__call__"]], "all_runs (deepcave.plugins.plugin property)": [[13, "deepcave.plugins.Plugin.all_runs"]], "check_run_compatibility() (deepcave.plugins.plugin static method)": [[13, "deepcave.plugins.Plugin.check_run_compatibility"]], "check_runs_compatibility() (deepcave.plugins.plugin method)": [[13, "deepcave.plugins.Plugin.check_runs_compatibility"]], "deepcave.plugins": [[13, "module-deepcave.plugins"]], "generate_inputs() (deepcave.plugins.plugin method)": [[13, "deepcave.plugins.Plugin.generate_inputs"]], "generate_outputs() (deepcave.plugins.plugin class method)": [[13, "deepcave.plugins.Plugin.generate_outputs"]], "get_base_url() (deepcave.plugins.plugin class method)": [[13, "deepcave.plugins.Plugin.get_base_url"]], "get_filter_layout() (deepcave.plugins.plugin static method)": [[13, "deepcave.plugins.Plugin.get_filter_layout"]], "get_input_layout() (deepcave.plugins.plugin static method)": [[13, "deepcave.plugins.Plugin.get_input_layout"]], "get_internal_id() (deepcave.plugins.plugin method)": [[13, "deepcave.plugins.Plugin.get_internal_id"]], "get_internal_input_id() (deepcave.plugins.plugin method)": [[13, "deepcave.plugins.Plugin.get_internal_input_id"]], "get_internal_output_id() (deepcave.plugins.plugin method)": [[13, "deepcave.plugins.Plugin.get_internal_output_id"]], "get_mpl_output_layout() (deepcave.plugins.plugin static method)": [[13, "deepcave.plugins.Plugin.get_mpl_output_layout"]], "get_output_layout() (deepcave.plugins.plugin static method)": [[13, "deepcave.plugins.Plugin.get_output_layout"]], "get_run_input_layout() (deepcave.plugins.plugin static method)": [[13, "deepcave.plugins.Plugin.get_run_input_layout"]], "get_selected_runs() (deepcave.plugins.plugin method)": [[13, "deepcave.plugins.Plugin.get_selected_runs"]], "groups (deepcave.plugins.plugin property)": [[13, "deepcave.plugins.Plugin.groups"]], "load_dependency_inputs() (deepcave.plugins.plugin method)": [[13, "deepcave.plugins.Plugin.load_dependency_inputs"]], "load_inputs() (deepcave.plugins.plugin method)": [[13, "deepcave.plugins.Plugin.load_inputs"]], "load_mpl_outputs() (deepcave.plugins.plugin static method)": [[13, "deepcave.plugins.Plugin.load_mpl_outputs"]], "load_outputs() (deepcave.plugins.plugin static method)": [[13, "deepcave.plugins.Plugin.load_outputs"]], "load_run_inputs() (deepcave.plugins.plugin static method)": [[13, "deepcave.plugins.Plugin.load_run_inputs"]], "process() (deepcave.plugins.plugin static method)": [[13, "deepcave.plugins.Plugin.process"]], "register_callbacks() (deepcave.plugins.plugin method)": [[13, "deepcave.plugins.Plugin.register_callbacks"]], "register_input() (deepcave.plugins.plugin method)": [[13, "deepcave.plugins.Plugin.register_input"]], "register_output() (deepcave.plugins.plugin method)": [[13, "deepcave.plugins.Plugin.register_output"]], "runs (deepcave.plugins.plugin property)": [[13, "deepcave.plugins.Plugin.runs"]], "deepcave.plugins.budget": [[14, "module-deepcave.plugins.budget"]], "dynamicplugin (class in deepcave.plugins.dynamic)": [[15, "deepcave.plugins.dynamic.DynamicPlugin"]], "__call__() (deepcave.plugins.dynamic.dynamicplugin method)": [[15, "deepcave.plugins.dynamic.DynamicPlugin.__call__"]], "deepcave.plugins.dynamic": [[15, "module-deepcave.plugins.dynamic"]], "register_callbacks() (deepcave.plugins.dynamic.dynamicplugin method)": [[15, "deepcave.plugins.dynamic.DynamicPlugin.register_callbacks"]], "deepcave.plugins.hyperparameter": [[16, "module-deepcave.plugins.hyperparameter"]], "importances (class in deepcave.plugins.hyperparameter.importances)": [[17, "deepcave.plugins.hyperparameter.importances.Importances"]], "deepcave.plugins.hyperparameter.importances": [[17, "module-deepcave.plugins.hyperparameter.importances"]], "get_filter_layout() (deepcave.plugins.hyperparameter.importances.importances static method)": [[17, "deepcave.plugins.hyperparameter.importances.Importances.get_filter_layout"]], "get_input_layout() (deepcave.plugins.hyperparameter.importances.importances static method)": [[17, "deepcave.plugins.hyperparameter.importances.Importances.get_input_layout"]], "get_mpl_output_layout() (deepcave.plugins.hyperparameter.importances.importances static method)": [[17, "deepcave.plugins.hyperparameter.importances.Importances.get_mpl_output_layout"]], "get_output_layout() (deepcave.plugins.hyperparameter.importances.importances static method)": [[17, "deepcave.plugins.hyperparameter.importances.Importances.get_output_layout"]], "load_dependency_inputs() (deepcave.plugins.hyperparameter.importances.importances method)": [[17, "deepcave.plugins.hyperparameter.importances.Importances.load_dependency_inputs"]], "load_inputs() (deepcave.plugins.hyperparameter.importances.importances method)": [[17, "deepcave.plugins.hyperparameter.importances.Importances.load_inputs"]], "load_mpl_outputs() (deepcave.plugins.hyperparameter.importances.importances static method)": [[17, "deepcave.plugins.hyperparameter.importances.Importances.load_mpl_outputs"]], "load_outputs() (deepcave.plugins.hyperparameter.importances.importances static method)": [[17, "deepcave.plugins.hyperparameter.importances.Importances.load_outputs"]], "process() (deepcave.plugins.hyperparameter.importances.importances static method)": [[17, "deepcave.plugins.hyperparameter.importances.Importances.process"]], "partialdependencies (class in deepcave.plugins.hyperparameter.pdp)": [[18, "deepcave.plugins.hyperparameter.pdp.PartialDependencies"]], "deepcave.plugins.hyperparameter.pdp": [[18, "module-deepcave.plugins.hyperparameter.pdp"]], "get_filter_layout() (deepcave.plugins.hyperparameter.pdp.partialdependencies static method)": [[18, "deepcave.plugins.hyperparameter.pdp.PartialDependencies.get_filter_layout"]], "get_input_layout() (deepcave.plugins.hyperparameter.pdp.partialdependencies static method)": [[18, "deepcave.plugins.hyperparameter.pdp.PartialDependencies.get_input_layout"]], "get_output_layout() (deepcave.plugins.hyperparameter.pdp.partialdependencies static method)": [[18, "deepcave.plugins.hyperparameter.pdp.PartialDependencies.get_output_layout"]], "get_pdp_figure() (deepcave.plugins.hyperparameter.pdp.partialdependencies static method)": [[18, "deepcave.plugins.hyperparameter.pdp.PartialDependencies.get_pdp_figure"]], "load_dependency_inputs() (deepcave.plugins.hyperparameter.pdp.partialdependencies method)": [[18, "deepcave.plugins.hyperparameter.pdp.PartialDependencies.load_dependency_inputs"]], "load_inputs() (deepcave.plugins.hyperparameter.pdp.partialdependencies method)": [[18, "deepcave.plugins.hyperparameter.pdp.PartialDependencies.load_inputs"]], "load_outputs() (deepcave.plugins.hyperparameter.pdp.partialdependencies static method)": [[18, "deepcave.plugins.hyperparameter.pdp.PartialDependencies.load_outputs"]], "process() (deepcave.plugins.hyperparameter.pdp.partialdependencies static method)": [[18, "deepcave.plugins.hyperparameter.pdp.PartialDependencies.process"]], "symbolicexplanations (class in deepcave.plugins.hyperparameter.symbolic_explanations)": [[19, "deepcave.plugins.hyperparameter.symbolic_explanations.SymbolicExplanations"]], "deepcave.plugins.hyperparameter.symbolic_explanations": [[19, "module-deepcave.plugins.hyperparameter.symbolic_explanations"]], "get_input_layout() (deepcave.plugins.hyperparameter.symbolic_explanations.symbolicexplanations static method)": [[19, "deepcave.plugins.hyperparameter.symbolic_explanations.SymbolicExplanations.get_input_layout"]], "get_output_layout() (deepcave.plugins.hyperparameter.symbolic_explanations.symbolicexplanations static method)": [[19, "deepcave.plugins.hyperparameter.symbolic_explanations.SymbolicExplanations.get_output_layout"]], "load_dependency_inputs() (deepcave.plugins.hyperparameter.symbolic_explanations.symbolicexplanations method)": [[19, "deepcave.plugins.hyperparameter.symbolic_explanations.SymbolicExplanations.load_dependency_inputs"]], "load_inputs() (deepcave.plugins.hyperparameter.symbolic_explanations.symbolicexplanations method)": [[19, "deepcave.plugins.hyperparameter.symbolic_explanations.SymbolicExplanations.load_inputs"]], "load_outputs() (deepcave.plugins.hyperparameter.symbolic_explanations.symbolicexplanations static method)": [[19, "deepcave.plugins.hyperparameter.symbolic_explanations.SymbolicExplanations.load_outputs"]], "process() (deepcave.plugins.hyperparameter.symbolic_explanations.symbolicexplanations static method)": [[19, "deepcave.plugins.hyperparameter.symbolic_explanations.SymbolicExplanations.process"]], "deepcave.plugins.objective": [[20, "module-deepcave.plugins.objective"]], "configurationcube (class in deepcave.plugins.objective.configuration_cube)": [[21, "deepcave.plugins.objective.configuration_cube.ConfigurationCube"]], "deepcave.plugins.objective.configuration_cube": [[21, "module-deepcave.plugins.objective.configuration_cube"]], "get_filter_layout() (deepcave.plugins.objective.configuration_cube.configurationcube static method)": [[21, "deepcave.plugins.objective.configuration_cube.ConfigurationCube.get_filter_layout"]], "get_input_layout() (deepcave.plugins.objective.configuration_cube.configurationcube static method)": [[21, "deepcave.plugins.objective.configuration_cube.ConfigurationCube.get_input_layout"]], "get_output_layout() (deepcave.plugins.objective.configuration_cube.configurationcube static method)": [[21, "deepcave.plugins.objective.configuration_cube.ConfigurationCube.get_output_layout"]], "load_dependency_inputs() (deepcave.plugins.objective.configuration_cube.configurationcube method)": [[21, "deepcave.plugins.objective.configuration_cube.ConfigurationCube.load_dependency_inputs"]], "load_inputs() (deepcave.plugins.objective.configuration_cube.configurationcube method)": [[21, "deepcave.plugins.objective.configuration_cube.ConfigurationCube.load_inputs"]], "load_outputs() (deepcave.plugins.objective.configuration_cube.configurationcube static method)": [[21, "deepcave.plugins.objective.configuration_cube.ConfigurationCube.load_outputs"]], "process() (deepcave.plugins.objective.configuration_cube.configurationcube static method)": [[21, "deepcave.plugins.objective.configuration_cube.ConfigurationCube.process"]], "costovertime (class in deepcave.plugins.objective.cost_over_time)": [[22, "deepcave.plugins.objective.cost_over_time.CostOverTime"]], "check_runs_compatibility() (deepcave.plugins.objective.cost_over_time.costovertime method)": [[22, "deepcave.plugins.objective.cost_over_time.CostOverTime.check_runs_compatibility"]], "deepcave.plugins.objective.cost_over_time": [[22, "module-deepcave.plugins.objective.cost_over_time"]], "get_filter_layout() (deepcave.plugins.objective.cost_over_time.costovertime static method)": [[22, "deepcave.plugins.objective.cost_over_time.CostOverTime.get_filter_layout"]], "get_input_layout() (deepcave.plugins.objective.cost_over_time.costovertime static method)": [[22, "deepcave.plugins.objective.cost_over_time.CostOverTime.get_input_layout"]], "get_output_layout() (deepcave.plugins.objective.cost_over_time.costovertime static method)": [[22, "deepcave.plugins.objective.cost_over_time.CostOverTime.get_output_layout"]], "load_inputs() (deepcave.plugins.objective.cost_over_time.costovertime method)": [[22, "deepcave.plugins.objective.cost_over_time.CostOverTime.load_inputs"]], "load_outputs() (deepcave.plugins.objective.cost_over_time.costovertime static method)": [[22, "deepcave.plugins.objective.cost_over_time.CostOverTime.load_outputs"]], "process() (deepcave.plugins.objective.cost_over_time.costovertime static method)": [[22, "deepcave.plugins.objective.cost_over_time.CostOverTime.process"]], "parallelcoordinates (class in deepcave.plugins.objective.parallel_coordinates)": [[23, "deepcave.plugins.objective.parallel_coordinates.ParallelCoordinates"]], "deepcave.plugins.objective.parallel_coordinates": [[23, "module-deepcave.plugins.objective.parallel_coordinates"]], "get_filter_layout() (deepcave.plugins.objective.parallel_coordinates.parallelcoordinates static method)": [[23, "deepcave.plugins.objective.parallel_coordinates.ParallelCoordinates.get_filter_layout"]], "get_input_layout() (deepcave.plugins.objective.parallel_coordinates.parallelcoordinates static method)": [[23, "deepcave.plugins.objective.parallel_coordinates.ParallelCoordinates.get_input_layout"]], "get_output_layout() (deepcave.plugins.objective.parallel_coordinates.parallelcoordinates static method)": [[23, "deepcave.plugins.objective.parallel_coordinates.ParallelCoordinates.get_output_layout"]], "load_dependency_inputs() (deepcave.plugins.objective.parallel_coordinates.parallelcoordinates method)": [[23, "deepcave.plugins.objective.parallel_coordinates.ParallelCoordinates.load_dependency_inputs"]], "load_inputs() (deepcave.plugins.objective.parallel_coordinates.parallelcoordinates method)": [[23, "deepcave.plugins.objective.parallel_coordinates.ParallelCoordinates.load_inputs"]], "load_outputs() (deepcave.plugins.objective.parallel_coordinates.parallelcoordinates static method)": [[23, "deepcave.plugins.objective.parallel_coordinates.ParallelCoordinates.load_outputs"]], "process() (deepcave.plugins.objective.parallel_coordinates.parallelcoordinates static method)": [[23, "deepcave.plugins.objective.parallel_coordinates.ParallelCoordinates.process"]], "paretofront (class in deepcave.plugins.objective.pareto_front)": [[24, "deepcave.plugins.objective.pareto_front.ParetoFront"]], "check_runs_compatibility() (deepcave.plugins.objective.pareto_front.paretofront method)": [[24, "deepcave.plugins.objective.pareto_front.ParetoFront.check_runs_compatibility"]], "deepcave.plugins.objective.pareto_front": [[24, "module-deepcave.plugins.objective.pareto_front"]], "get_filter_layout() (deepcave.plugins.objective.pareto_front.paretofront static method)": [[24, "deepcave.plugins.objective.pareto_front.ParetoFront.get_filter_layout"]], "get_input_layout() (deepcave.plugins.objective.pareto_front.paretofront static method)": [[24, "deepcave.plugins.objective.pareto_front.ParetoFront.get_input_layout"]], "get_mpl_output_layout() (deepcave.plugins.objective.pareto_front.paretofront static method)": [[24, "deepcave.plugins.objective.pareto_front.ParetoFront.get_mpl_output_layout"]], "get_output_layout() (deepcave.plugins.objective.pareto_front.paretofront static method)": [[24, "deepcave.plugins.objective.pareto_front.ParetoFront.get_output_layout"]], "load_inputs() (deepcave.plugins.objective.pareto_front.paretofront method)": [[24, "deepcave.plugins.objective.pareto_front.ParetoFront.load_inputs"]], "load_mpl_outputs() (deepcave.plugins.objective.pareto_front.paretofront static method)": [[24, "deepcave.plugins.objective.pareto_front.ParetoFront.load_mpl_outputs"]], "load_outputs() (deepcave.plugins.objective.pareto_front.paretofront static method)": [[24, "deepcave.plugins.objective.pareto_front.ParetoFront.load_outputs"]], "process() (deepcave.plugins.objective.pareto_front.paretofront static method)": [[24, "deepcave.plugins.objective.pareto_front.ParetoFront.process"]], "pluginstate (class in deepcave.plugins.static)": [[25, "deepcave.plugins.static.PluginState"]], "staticplugin (class in deepcave.plugins.static)": [[25, "deepcave.plugins.static.StaticPlugin"]], "__call__() (deepcave.plugins.static.staticplugin method)": [[25, "deepcave.plugins.static.StaticPlugin.__call__"]], "deepcave.plugins.static": [[25, "module-deepcave.plugins.static"]], "register_callbacks() (deepcave.plugins.static.staticplugin method)": [[25, "deepcave.plugins.static.StaticPlugin.register_callbacks"]], "deepcave.plugins.summary": [[26, "module-deepcave.plugins.summary"]], "configurations (class in deepcave.plugins.summary.configurations)": [[27, "deepcave.plugins.summary.configurations.Configurations"]], "deepcave.plugins.summary.configurations": [[27, "module-deepcave.plugins.summary.configurations"]], "get_input_layout() (deepcave.plugins.summary.configurations.configurations static method)": [[27, "deepcave.plugins.summary.configurations.Configurations.get_input_layout"]], "get_link() (deepcave.plugins.summary.configurations.configurations static method)": [[27, "deepcave.plugins.summary.configurations.Configurations.get_link"]], "get_output_layout() (deepcave.plugins.summary.configurations.configurations static method)": [[27, "deepcave.plugins.summary.configurations.Configurations.get_output_layout"]], "load_dependency_inputs() (deepcave.plugins.summary.configurations.configurations method)": [[27, "deepcave.plugins.summary.configurations.Configurations.load_dependency_inputs"]], "load_inputs() (deepcave.plugins.summary.configurations.configurations method)": [[27, "deepcave.plugins.summary.configurations.Configurations.load_inputs"]], "load_outputs() (deepcave.plugins.summary.configurations.configurations static method)": [[27, "deepcave.plugins.summary.configurations.Configurations.load_outputs"]], "process() (deepcave.plugins.summary.configurations.configurations static method)": [[27, "deepcave.plugins.summary.configurations.Configurations.process"]], "footprint (class in deepcave.plugins.summary.footprint)": [[28, "deepcave.plugins.summary.footprint.FootPrint"]], "deepcave.plugins.summary.footprint": [[28, "module-deepcave.plugins.summary.footprint"]], "get_filter_layout() (deepcave.plugins.summary.footprint.footprint static method)": [[28, "deepcave.plugins.summary.footprint.FootPrint.get_filter_layout"]], "get_input_layout() (deepcave.plugins.summary.footprint.footprint static method)": [[28, "deepcave.plugins.summary.footprint.FootPrint.get_input_layout"]], "get_mpl_output_layout() (deepcave.plugins.summary.footprint.footprint static method)": [[28, "deepcave.plugins.summary.footprint.FootPrint.get_mpl_output_layout"]], "get_output_layout() (deepcave.plugins.summary.footprint.footprint static method)": [[28, "deepcave.plugins.summary.footprint.FootPrint.get_output_layout"]], "load_dependency_inputs() (deepcave.plugins.summary.footprint.footprint method)": [[28, "deepcave.plugins.summary.footprint.FootPrint.load_dependency_inputs"]], "load_inputs() (deepcave.plugins.summary.footprint.footprint method)": [[28, "deepcave.plugins.summary.footprint.FootPrint.load_inputs"]], "load_mpl_outputs() (deepcave.plugins.summary.footprint.footprint static method)": [[28, "deepcave.plugins.summary.footprint.FootPrint.load_mpl_outputs"]], "load_outputs() (deepcave.plugins.summary.footprint.footprint static method)": [[28, "deepcave.plugins.summary.footprint.FootPrint.load_outputs"]], "process() (deepcave.plugins.summary.footprint.footprint static method)": [[28, "deepcave.plugins.summary.footprint.FootPrint.process"]], "overview (class in deepcave.plugins.summary.overview)": [[29, "deepcave.plugins.summary.overview.Overview"]], "deepcave.plugins.summary.overview": [[29, "module-deepcave.plugins.summary.overview"]], "get_output_layout() (deepcave.plugins.summary.overview.overview static method)": [[29, "deepcave.plugins.summary.overview.Overview.get_output_layout"]], "load_outputs() (deepcave.plugins.summary.overview.overview static method)": [[29, "deepcave.plugins.summary.overview.Overview.load_outputs"]], "abstractrun (class in deepcave.runs)": [[30, "deepcave.runs.AbstractRun"]], "check_equality() (in module deepcave.runs)": [[30, "deepcave.runs.check_equality"]], "deepcave.runs": [[30, "module-deepcave.runs"]], "empty() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.empty"]], "encode_config() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.encode_config"]], "encode_configs() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.encode_configs"]], "get_all_costs() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_all_costs"]], "get_budget() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_budget"]], "get_budget_ids() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_budget_ids"]], "get_budgets() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_budgets"]], "get_config() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_config"]], "get_config_id() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_config_id"]], "get_configs() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_configs"]], "get_costs() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_costs"]], "get_encoded_data() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_encoded_data"]], "get_highest_budget() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_highest_budget"]], "get_incumbent() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_incumbent"]], "get_meta() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_meta"]], "get_model() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_model"]], "get_num_configs() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_num_configs"]], "get_objective() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_objective"]], "get_objective_id() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_objective_id"]], "get_objective_ids() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_objective_ids"]], "get_objective_name() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_objective_name"]], "get_objective_names() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_objective_names"]], "get_objectives() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_objectives"]], "get_origin() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_origin"]], "get_status() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_status"]], "get_trajectory() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_trajectory"]], "get_trial() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_trial"]], "get_trial_key() (deepcave.runs.abstractrun static method)": [[30, "deepcave.runs.AbstractRun.get_trial_key"]], "get_trials() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.get_trials"]], "hash (deepcave.runs.abstractrun property)": [[30, "deepcave.runs.AbstractRun.hash"]], "id (deepcave.runs.abstractrun property)": [[30, "deepcave.runs.AbstractRun.id"]], "latest_change (deepcave.runs.abstractrun property)": [[30, "deepcave.runs.AbstractRun.latest_change"]], "merge_costs() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.merge_costs"]], "reset() (deepcave.runs.abstractrun method)": [[30, "deepcave.runs.AbstractRun.reset"]], "deepcave.runs.converters": [[31, "module-deepcave.runs.converters"]], "bohbrun (class in deepcave.runs.converters.bohb)": [[32, "deepcave.runs.converters.bohb.BOHBRun"]], "deepcave.runs.converters.bohb": [[32, "module-deepcave.runs.converters.bohb"]], "from_path() (deepcave.runs.converters.bohb.bohbrun class method)": [[32, "deepcave.runs.converters.bohb.BOHBRun.from_path"]], "hash (deepcave.runs.converters.bohb.bohbrun property)": [[32, "deepcave.runs.converters.bohb.BOHBRun.hash"]], "latest_change (deepcave.runs.converters.bohb.bohbrun property)": [[32, "deepcave.runs.converters.bohb.BOHBRun.latest_change"]], "deepcaverun (class in deepcave.runs.converters.deepcave)": [[33, "deepcave.runs.converters.deepcave.DeepCAVERun"]], "deepcave.runs.converters.deepcave": [[33, "module-deepcave.runs.converters.deepcave"]], "from_path() (deepcave.runs.converters.deepcave.deepcaverun class method)": [[33, "deepcave.runs.converters.deepcave.DeepCAVERun.from_path"]], "hash (deepcave.runs.converters.deepcave.deepcaverun property)": [[33, "deepcave.runs.converters.deepcave.DeepCAVERun.hash"]], "latest_change (deepcave.runs.converters.deepcave.deepcaverun property)": [[33, "deepcave.runs.converters.deepcave.DeepCAVERun.latest_change"]], "smac3v1run (class in deepcave.runs.converters.smac3v1)": [[34, "deepcave.runs.converters.smac3v1.SMAC3v1Run"]], "deepcave.runs.converters.smac3v1": [[34, "module-deepcave.runs.converters.smac3v1"]], "from_path() (deepcave.runs.converters.smac3v1.smac3v1run class method)": [[34, "deepcave.runs.converters.smac3v1.SMAC3v1Run.from_path"]], "hash (deepcave.runs.converters.smac3v1.smac3v1run property)": [[34, "deepcave.runs.converters.smac3v1.SMAC3v1Run.hash"]], "latest_change (deepcave.runs.converters.smac3v1.smac3v1run property)": [[34, "deepcave.runs.converters.smac3v1.SMAC3v1Run.latest_change"]], "smac3v2run (class in deepcave.runs.converters.smac3v2)": [[35, "deepcave.runs.converters.smac3v2.SMAC3v2Run"]], "deepcave.runs.converters.smac3v2": [[35, "module-deepcave.runs.converters.smac3v2"]], "from_path() (deepcave.runs.converters.smac3v2.smac3v2run class method)": [[35, "deepcave.runs.converters.smac3v2.SMAC3v2Run.from_path"]], "hash (deepcave.runs.converters.smac3v2.smac3v2run property)": [[35, "deepcave.runs.converters.smac3v2.SMAC3v2Run.hash"]], "latest_change (deepcave.runs.converters.smac3v2.smac3v2run property)": [[35, "deepcave.runs.converters.smac3v2.SMAC3v2Run.latest_change"]], "notmergeableerror": [[36, "deepcave.runs.exceptions.NotMergeableError"]], "notvalidrunerror": [[36, "deepcave.runs.exceptions.NotValidRunError"]], "deepcave.runs.exceptions": [[36, "module-deepcave.runs.exceptions"]], "group (class in deepcave.runs.group)": [[37, "deepcave.runs.group.Group"]], "__iter__() (deepcave.runs.group.group method)": [[37, "deepcave.runs.group.Group.__iter__"]], "deepcave.runs.group": [[37, "module-deepcave.runs.group"]], "get_model() (deepcave.runs.group.group method)": [[37, "deepcave.runs.group.Group.get_model"]], "get_new_config_id() (deepcave.runs.group.group method)": [[37, "deepcave.runs.group.Group.get_new_config_id"]], "get_original_config_id() (deepcave.runs.group.group method)": [[37, "deepcave.runs.group.Group.get_original_config_id"]], "get_original_run() (deepcave.runs.group.group method)": [[37, "deepcave.runs.group.Group.get_original_run"]], "get_runs() (deepcave.runs.group.group method)": [[37, "deepcave.runs.group.Group.get_runs"]], "get_trajectory() (deepcave.runs.group.group method)": [[37, "deepcave.runs.group.Group.get_trajectory"]], "hash (deepcave.runs.group.group property)": [[37, "deepcave.runs.group.Group.hash"]], "id (deepcave.runs.group.group property)": [[37, "deepcave.runs.group.Group.id"]], "latest_change (deepcave.runs.group.group property)": [[37, "deepcave.runs.group.Group.latest_change"]], "run_names (deepcave.runs.group.group property)": [[37, "deepcave.runs.group.Group.run_names"]], "run_paths (deepcave.runs.group.group property)": [[37, "deepcave.runs.group.Group.run_paths"]], "runhandler (class in deepcave.runs.handler)": [[38, "deepcave.runs.handler.RunHandler"]], "add_run() (deepcave.runs.handler.runhandler method)": [[38, "deepcave.runs.handler.RunHandler.add_run"]], "deepcave.runs.handler": [[38, "module-deepcave.runs.handler"]], "get_available_run_paths() (deepcave.runs.handler.runhandler method)": [[38, "deepcave.runs.handler.RunHandler.get_available_run_paths"]], "get_groups() (deepcave.runs.handler.runhandler method)": [[38, "deepcave.runs.handler.RunHandler.get_groups"]], "get_run() (deepcave.runs.handler.runhandler method)": [[38, "deepcave.runs.handler.RunHandler.get_run"]], "get_run_name() (deepcave.runs.handler.runhandler method)": [[38, "deepcave.runs.handler.RunHandler.get_run_name"]], "get_runs() (deepcave.runs.handler.runhandler method)": [[38, "deepcave.runs.handler.RunHandler.get_runs"]], "get_selected_groups() (deepcave.runs.handler.runhandler method)": [[38, "deepcave.runs.handler.RunHandler.get_selected_groups"]], "get_selected_run_names() (deepcave.runs.handler.runhandler method)": [[38, "deepcave.runs.handler.RunHandler.get_selected_run_names"]], "get_selected_run_paths() (deepcave.runs.handler.runhandler method)": [[38, "deepcave.runs.handler.RunHandler.get_selected_run_paths"]], "get_working_directory() (deepcave.runs.handler.runhandler method)": [[38, "deepcave.runs.handler.RunHandler.get_working_directory"]], "remove_run() (deepcave.runs.handler.runhandler method)": [[38, "deepcave.runs.handler.RunHandler.remove_run"]], "set_working_directory() (deepcave.runs.handler.runhandler method)": [[38, "deepcave.runs.handler.RunHandler.set_working_directory"]], "update() (deepcave.runs.handler.runhandler method)": [[38, "deepcave.runs.handler.RunHandler.update"]], "update_groups() (deepcave.runs.handler.runhandler method)": [[38, "deepcave.runs.handler.RunHandler.update_groups"]], "update_run() (deepcave.runs.handler.runhandler method)": [[38, "deepcave.runs.handler.RunHandler.update_run"]], "update_runs() (deepcave.runs.handler.runhandler method)": [[38, "deepcave.runs.handler.RunHandler.update_runs"]], "objective (class in deepcave.runs.objective)": [[39, "deepcave.runs.objective.Objective"]], "__eq__() (deepcave.runs.objective.objective method)": [[39, "deepcave.runs.objective.Objective.__eq__"]], "__post_init__() (deepcave.runs.objective.objective method)": [[39, "deepcave.runs.objective.Objective.__post_init__"]], "deepcave.runs.objective": [[39, "module-deepcave.runs.objective"]], "from_json() (deepcave.runs.objective.objective static method)": [[39, "deepcave.runs.objective.Objective.from_json"]], "get_worst_value() (deepcave.runs.objective.objective method)": [[39, "deepcave.runs.objective.Objective.get_worst_value"]], "merge() (deepcave.runs.objective.objective method)": [[39, "deepcave.runs.objective.Objective.merge"]], "to_json() (deepcave.runs.objective.objective method)": [[39, "deepcave.runs.objective.Objective.to_json"]], "recorder (class in deepcave.runs.recorder)": [[40, "deepcave.runs.recorder.Recorder"]], "deepcave.runs.recorder": [[40, "module-deepcave.runs.recorder"]], "end() (deepcave.runs.recorder.recorder method)": [[40, "deepcave.runs.recorder.Recorder.end"]], "start() (deepcave.runs.recorder.recorder method)": [[40, "deepcave.runs.recorder.Recorder.start"]], "run (class in deepcave.runs.run)": [[41, "deepcave.runs.run.Run"]], "add() (deepcave.runs.run.run method)": [[41, "deepcave.runs.run.Run.add"]], "deepcave.runs.run": [[41, "module-deepcave.runs.run"]], "exists() (deepcave.runs.run.run method)": [[41, "deepcave.runs.run.Run.exists"]], "from_path() (deepcave.runs.run.run class method)": [[41, "deepcave.runs.run.Run.from_path"]], "id (deepcave.runs.run.run property)": [[41, "deepcave.runs.run.Run.id"]], "load() (deepcave.runs.run.run method)": [[41, "deepcave.runs.run.Run.load"]], "path (deepcave.runs.run.run property)": [[41, "deepcave.runs.run.Run.path"]], "save() (deepcave.runs.run.run method)": [[41, "deepcave.runs.run.Run.save"]], "status (class in deepcave.runs.status)": [[42, "deepcave.runs.status.Status"]], "deepcave.runs.status": [[42, "module-deepcave.runs.status"]], "to_text() (deepcave.runs.status.status method)": [[42, "deepcave.runs.status.Status.to_text"]], "trial (class in deepcave.runs.trial)": [[43, "deepcave.runs.trial.Trial"]], "__post_init__() (deepcave.runs.trial.trial method)": [[43, "deepcave.runs.trial.Trial.__post_init__"]], "deepcave.runs.trial": [[43, "module-deepcave.runs.trial"]], "get_key() (deepcave.runs.trial.trial method)": [[43, "deepcave.runs.trial.Trial.get_key"]], "to_json() (deepcave.runs.trial.trial method)": [[43, "deepcave.runs.trial.Trial.to_json"]], "deepcave.utils": [[44, "module-deepcave.utils"]], "cache (class in deepcave.utils.cache)": [[45, "deepcave.utils.cache.Cache"]], "clear() (deepcave.utils.cache.cache method)": [[45, "deepcave.utils.cache.Cache.clear"]], "deepcave.utils.cache": [[45, "module-deepcave.utils.cache"]], "get() (deepcave.utils.cache.cache method)": [[45, "deepcave.utils.cache.Cache.get"]], "has() (deepcave.utils.cache.cache method)": [[45, "deepcave.utils.cache.Cache.has"]], "read() (deepcave.utils.cache.cache method)": [[45, "deepcave.utils.cache.Cache.read"]], "set() (deepcave.utils.cache.cache method)": [[45, "deepcave.utils.cache.Cache.set"]], "set_dict() (deepcave.utils.cache.cache method)": [[45, "deepcave.utils.cache.Cache.set_dict"]], "write() (deepcave.utils.cache.cache method)": [[45, "deepcave.utils.cache.Cache.write"]], "deepcave.utils.cast": [[46, "module-deepcave.utils.cast"]], "optional_int() (in module deepcave.utils.cast)": [[46, "deepcave.utils.cast.optional_int"]], "deepcave.utils.compression": [[47, "module-deepcave.utils.compression"]], "deserialize() (in module deepcave.utils.compression)": [[47, "deepcave.utils.compression.deserialize"]], "serialize() (in module deepcave.utils.compression)": [[47, "deepcave.utils.compression.serialize"]], "deepcave.utils.configs": [[48, "module-deepcave.utils.configs"]], "parse_config() (in module deepcave.utils.configs)": [[48, "deepcave.utils.configs.parse_config"]], "deepcave.utils.configspace": [[49, "module-deepcave.utils.configspace"]], "sample_border_config() (in module deepcave.utils.configspace)": [[49, "deepcave.utils.configspace.sample_border_config"]], "sample_random_config() (in module deepcave.utils.configspace)": [[49, "deepcave.utils.configspace.sample_random_config"]], "alert() (in module deepcave.utils.dash)": [[50, "deepcave.utils.dash.alert"]], "deepcave.utils.dash": [[50, "module-deepcave.utils.dash"]], "flash() (in module deepcave.utils.dash)": [[50, "deepcave.utils.dash.flash"]], "deepcave.utils.data_structures": [[51, "module-deepcave.utils.data_structures"]], "update_dict() (in module deepcave.utils.data_structures)": [[51, "deepcave.utils.data_structures.update_dict"]], "deepcave.utils.docs": [[52, "module-deepcave.utils.docs"]], "rst_to_md() (in module deepcave.utils.docs)": [[52, "deepcave.utils.docs.rst_to_md"]], "deepcave.utils.files": [[53, "module-deepcave.utils.files"]], "make_dirs() (in module deepcave.utils.files)": [[53, "deepcave.utils.files.make_dirs"]], "deepcave.utils.hash": [[54, "module-deepcave.utils.hash"]], "file_to_hash() (in module deepcave.utils.hash)": [[54, "deepcave.utils.hash.file_to_hash"]], "string_to_hash() (in module deepcave.utils.hash)": [[54, "deepcave.utils.hash.string_to_hash"]], "create_table() (in module deepcave.utils.layout)": [[55, "deepcave.utils.layout.create_table"]], "deepcave.utils.layout": [[55, "module-deepcave.utils.layout"]], "get_checklist_options() (in module deepcave.utils.layout)": [[55, "deepcave.utils.layout.get_checklist_options"]], "get_radio_options() (in module deepcave.utils.layout)": [[55, "deepcave.utils.layout.get_radio_options"]], "get_select_options() (in module deepcave.utils.layout)": [[55, "deepcave.utils.layout.get_select_options"]], "get_slider_marks() (in module deepcave.utils.layout)": [[55, "deepcave.utils.layout.get_slider_marks"]], "help_button() (in module deepcave.utils.layout)": [[55, "deepcave.utils.layout.help_button"]], "deepcave.utils.logs": [[56, "module-deepcave.utils.logs"]], "get_logger() (in module deepcave.utils.logs)": [[56, "deepcave.utils.logs.get_logger"]], "notification (class in deepcave.utils.notification)": [[57, "deepcave.utils.notification.Notification"]], "deepcave.utils.notification": [[57, "module-deepcave.utils.notification"]], "get_latest() (deepcave.utils.notification.notification method)": [[57, "deepcave.utils.notification.Notification.get_latest"]], "reset() (deepcave.utils.notification.notification method)": [[57, "deepcave.utils.notification.Notification.reset"]], "update() (deepcave.utils.notification.notification method)": [[57, "deepcave.utils.notification.Notification.update"]], "runcaches (class in deepcave.utils.run_caches)": [[58, "deepcave.utils.run_caches.RunCaches"]], "clear() (deepcave.utils.run_caches.runcaches method)": [[58, "deepcave.utils.run_caches.RunCaches.clear"]], "clear_run() (deepcave.utils.run_caches.runcaches method)": [[58, "deepcave.utils.run_caches.RunCaches.clear_run"]], "deepcave.utils.run_caches": [[58, "module-deepcave.utils.run_caches"]], "get() (deepcave.utils.run_caches.runcaches method)": [[58, "deepcave.utils.run_caches.RunCaches.get"]], "set() (deepcave.utils.run_caches.runcaches method)": [[58, "deepcave.utils.run_caches.RunCaches.set"]], "update() (deepcave.utils.run_caches.runcaches method)": [[58, "deepcave.utils.run_caches.RunCaches.update"]], "styledplot (class in deepcave.utils.styled_plot)": [[59, "deepcave.utils.styled_plot.StyledPlot"]], "__getattr__() (deepcave.utils.styled_plot.styledplot method)": [[59, "deepcave.utils.styled_plot.StyledPlot.__getattr__"]], "boxplot() (deepcave.utils.styled_plot.styledplot method)": [[59, "deepcave.utils.styled_plot.StyledPlot.boxplot"]], "deepcave.utils.styled_plot": [[59, "module-deepcave.utils.styled_plot"]], "figure() (deepcave.utils.styled_plot.styledplot method)": [[59, "deepcave.utils.styled_plot.StyledPlot.figure"]], "get_color() (deepcave.utils.styled_plot.styledplot method)": [[59, "deepcave.utils.styled_plot.StyledPlot.get_color"]], "legend() (deepcave.utils.styled_plot.styledplot method)": [[59, "deepcave.utils.styled_plot.StyledPlot.legend"]], "render() (deepcave.utils.styled_plot.styledplot method)": [[59, "deepcave.utils.styled_plot.StyledPlot.render"]], "save_figure() (deepcave.utils.styled_plot.styledplot method)": [[59, "deepcave.utils.styled_plot.StyledPlot.save_figure"]], "xlim() (deepcave.utils.styled_plot.styledplot method)": [[59, "deepcave.utils.styled_plot.StyledPlot.xlim"]], "ylim() (deepcave.utils.styled_plot.styledplot method)": [[59, "deepcave.utils.styled_plot.StyledPlot.ylim"]], "deepcave.utils.styled_plotty": [[60, "module-deepcave.utils.styled_plotty"]], "generate_config_code() (in module deepcave.utils.styled_plotty)": [[60, "deepcave.utils.styled_plotty.generate_config_code"]], "get_color() (in module deepcave.utils.styled_plotty)": [[60, "deepcave.utils.styled_plotty.get_color"]], "get_discrete_heatmap() (in module deepcave.utils.styled_plotty)": [[60, "deepcave.utils.styled_plotty.get_discrete_heatmap"]], "get_hovertext_from_config() (in module deepcave.utils.styled_plotty)": [[60, "deepcave.utils.styled_plotty.get_hovertext_from_config"]], "get_hyperparameter_ticks() (in module deepcave.utils.styled_plotty)": [[60, "deepcave.utils.styled_plotty.get_hyperparameter_ticks"]], "get_hyperparameter_ticks_from_values() (in module deepcave.utils.styled_plotty)": [[60, "deepcave.utils.styled_plotty.get_hyperparameter_ticks_from_values"]], "hex_to_rgb() (in module deepcave.utils.styled_plotty)": [[60, "deepcave.utils.styled_plotty.hex_to_rgb"]], "prettify_label() (in module deepcave.utils.styled_plotty)": [[60, "deepcave.utils.styled_plotty.prettify_label"]], "save_image() (in module deepcave.utils.styled_plotty)": [[60, "deepcave.utils.styled_plotty.save_image"]], "convert_symb() (in module deepcave.utils.symbolic_regression)": [[61, "deepcave.utils.symbolic_regression.convert_symb"]], "deepcave.utils.symbolic_regression": [[61, "module-deepcave.utils.symbolic_regression"]], "exp() (in module deepcave.utils.symbolic_regression)": [[61, "deepcave.utils.symbolic_regression.exp"]], "get_function_set() (in module deepcave.utils.symbolic_regression)": [[61, "deepcave.utils.symbolic_regression.get_function_set"]], "create_url() (in module deepcave.utils.url)": [[62, "deepcave.utils.url.create_url"]], "deepcave.utils.url": [[62, "module-deepcave.utils.url"]], "parse_url() (in module deepcave.utils.url)": [[62, "deepcave.utils.url.parse_url"]], "deepcave.utils.util": [[63, "module-deepcave.utils.util"]], "get_latest_change() (in module deepcave.utils.util)": [[63, "deepcave.utils.util.get_latest_change"]], "get_random_string() (in module deepcave.utils.util)": [[63, "deepcave.utils.util.get_random_string"]], "short_string() (in module deepcave.utils.util)": [[63, "deepcave.utils.util.short_string"]], "bo": [[79, "term-BO"]], "budget": [[79, "term-Budget"]], "objective": [[79, "term-Objective"]], "smac": [[79, "term-SMAC"]]}}) \ No newline at end of file