holobench 1.40.0__py3-none-any.whl → 1.40.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
bencher/bench_cfg.py CHANGED
@@ -8,15 +8,13 @@ from typing import List
8
8
  import param
9
9
  from str2bool import str2bool
10
10
  import panel as pn
11
-
11
+ from datetime import datetime
12
12
 
13
13
  from bencher.variables.sweep_base import hash_sha1, describe_variable
14
14
  from bencher.variables.time import TimeSnapshot, TimeEvent
15
15
  from bencher.variables.results import OptDir
16
16
  from bencher.job import Executors
17
- from datetime import datetime
18
-
19
- # from bencher.results.bench_result import BenchResult
17
+ from bencher.results.laxtex_result import to_latex
20
18
 
21
19
 
22
20
  class BenchPlotSrvCfg(param.Parameterized):
@@ -344,13 +342,32 @@ class BenchCfg(BenchRunCfg):
344
342
  def inputs_as_str(self) -> List[str]:
345
343
  return [i.name for i in self.input_vars]
346
344
 
347
- def describe_sweep(self, width: int = 800, accordion=True) -> pn.pane.Markdown:
345
+ def to_latex(self):
346
+ return to_latex(self)
347
+
348
+ def describe_sweep(self, width: int = 800, accordion=True) -> pn.pane.Markdown | pn.Column:
348
349
  """Produce a markdown summary of the sweep settings"""
349
350
 
351
+ latex = self.to_latex()
350
352
  desc = pn.pane.Markdown(self.describe_benchmark(), width=width)
351
353
  if accordion:
352
- return pn.Accordion(("Data Collection Parameters", desc))
353
- return desc
354
+ desc = pn.Accordion(("Data Collection Parameters", desc))
355
+
356
+ sentence = self.sweep_sentence()
357
+ if latex is not None:
358
+ return pn.Column(sentence, latex, desc)
359
+ return pn.Column(sentence, latex, desc)
360
+
361
+ def sweep_sentence(self):
362
+ inputs = " by ".join([iv.name for iv in self.all_vars])
363
+
364
+ all_vars_lens = [len(iv.values()) for iv in reversed(self.all_vars)]
365
+ if len(all_vars_lens) == 1:
366
+ all_vars_lens.append(1)
367
+ result_sizes = "x".join([str(iv) for iv in all_vars_lens])
368
+ results = ", ".join([rv.name for rv in self.result_vars])
369
+
370
+ return f"Sweeping {inputs} to generate a {result_sizes} result dataframe containing {results}. "
354
371
 
355
372
  def describe_benchmark(self) -> str:
356
373
  """Generate a string summary of the inputs and results from a BenchCfg
@@ -48,7 +48,3 @@ if __name__ == "__main__":
48
48
  convert_example_to_jupyter_notebook(
49
49
  "/workspaces/bencher/bencher/example/inputs_1D/example_1_in_2_out_repeats.py", "1D"
50
50
  )
51
-
52
- convert_example_to_jupyter_notebook(
53
- "/workspaces/bencher/bencher/example/example_simple_float.py", "1D"
54
- )
@@ -39,7 +39,7 @@ class BenchMetaGen(bch.ParametrizedSweep):
39
39
  inputs_vars_float = [
40
40
  "float1",
41
41
  "float2",
42
- "float3",
42
+ bch.p("float3", max_level=3),
43
43
  "sigma",
44
44
  ]
45
45
 
@@ -107,10 +107,9 @@ def example_meta(run_cfg: bch.BenchRunCfg = None, report: bch.BenchReport = None
107
107
  description="""## All Combinations of Variable Sweeps and Resulting Plots
108
108
  This uses bencher to display all the combinations of plots bencher is able to produce""",
109
109
  input_vars=[
110
- bch.p("float_vars", [0, 1, 2, 3]),
110
+ bch.p("float_vars", [0, 1]),
111
111
  "categorical_vars",
112
112
  bch.p("sample_with_repeats", [1, 20]),
113
- # "sample_over_time",
114
113
  ],
115
114
  const_vars=[
116
115
  # BenchMeta.param.float_vars.with_const(1),
@@ -119,6 +118,31 @@ This uses bencher to display all the combinations of plots bencher is able to pr
119
118
  # BenchMeta.param.sample_over_time.with_const(True),
120
119
  ],
121
120
  )
121
+ bench.plot_sweep(
122
+ title="Meta Bench",
123
+ description="""## All Combinations of Variable Sweeps and Resulting Plots
124
+ This uses bencher to display all the combinations of plots bencher is able to produce""",
125
+ input_vars=[
126
+ bch.p("float_vars", [2, 3]),
127
+ "categorical_vars",
128
+ ],
129
+ )
130
+
131
+ # bench.plot_sweep(
132
+ # title="Meta Bench",
133
+ # description="""## All Combinations of Variable Sweeps and Resulting Plots
134
+ # This uses bencher to display all the combinations of plots bencher is able to produce""",
135
+ # input_vars=[
136
+ # bch.p("float_vars", [2, 3]),
137
+ # "categorical_vars",
138
+ # ],
139
+ # const_vars=[
140
+ # dict(level=3)
141
+ # # BenchMeta.param.sample_with_repeats.with_const(2),
142
+ # # BenchMeta.param.categorical_vars.with_const(2),
143
+ # # BenchMeta.param.sample_over_time.with_const(True),
144
+ # ],
145
+ # )
122
146
 
123
147
  return bench
124
148
 
@@ -0,0 +1,60 @@
1
+ from __future__ import annotations
2
+ import panel as pn
3
+ from panel.pane import LaTeX
4
+ from typing import Optional
5
+
6
+ pn.extension("mathjax")
7
+
8
+
9
+ def latex_text(var):
10
+ var_str = str(var)
11
+ return r"\text{" + var_str.replace("_", " ") + r"} \\"
12
+
13
+
14
+ def input_var_to_latex(input_var):
15
+ vals = input_var.values()
16
+ displayed_vals = vals
17
+ if len(vals) > 5:
18
+ displayed_vals = [vals[i] for i in [0, 1, 0, -2, -1]]
19
+ displayed_vals[2] = "⋮"
20
+ v = r"\\ ".join([str(va) for va in displayed_vals])
21
+
22
+ latex_str = r"""\begin{array}{c}"""
23
+ latex_str += latex_text(input_var.name)
24
+ latex_str += f"{len(vals)}" + r"\times1 \\"
25
+ latex_str += r"\left[ \begin{array}{c}"
26
+ latex_str += f"{v} "
27
+ latex_str += r"\end{array} \right] \end{array}"
28
+ return latex_str
29
+
30
+
31
+ def result_var_to_latex(bench_cfg):
32
+ latex_str = r"\begin{array}{c}"
33
+ sizes = [str(len(i.values())) for i in bench_cfg.all_vars]
34
+ if len(sizes) == 1:
35
+ sizes.insert(0, "1")
36
+ sizes_str = r"\times".join(reversed(sizes))
37
+ latex_str += sizes_str + r"\\ of \\"
38
+ latex_str += r" \left[\begin{array}{cc}"
39
+
40
+ for rv in bench_cfg.result_vars:
41
+ latex_str += latex_text(rv.name)
42
+ latex_str += r"\end{array} \right]"
43
+ latex_str += r"\end{array}"
44
+ return latex_str
45
+
46
+
47
+ def to_latex(bench_cfg) -> Optional[pn.pane.LaTeX]:
48
+ if len(bench_cfg.all_vars) > 0:
49
+ latex_str = r"\["
50
+ for i, iv in enumerate(bench_cfg.all_vars):
51
+ latex_str += input_var_to_latex(iv)
52
+ if i != len(bench_cfg.all_vars) - 1:
53
+ latex_str += r"\bigtimes"
54
+
55
+ latex_str += r"\rightarrow\quad"
56
+ latex_str += result_var_to_latex(bench_cfg)
57
+ latex_str += r"\]"
58
+ # underscore represents subscript, so replace underscore with large space character \;
59
+ return LaTeX(latex_str.replace("_", r"\;"))
60
+ return None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: holobench
3
- Version: 1.40.0
3
+ Version: 1.40.1
4
4
  Summary: A package for benchmarking the performance of arbitrary functions
5
5
  Project-URL: Repository, https://github.com/dyson-ai/bencher
6
6
  Project-URL: Home, https://github.com/dyson-ai/bencher
@@ -1,5 +1,5 @@
1
1
  bencher/__init__.py,sha256=hWfQxlvuHRsFK4ZPCpRXo3nDzQB52JOUoi67wcnhopE,1890
2
- bencher/bench_cfg.py,sha256=gEpF1J4RAxCQPSkI8npKfhw-o3-8cw80TjiWK7As5WE,18417
2
+ bencher/bench_cfg.py,sha256=oJ2DfZgqzY0HOYwzP_tOMLA4e4_jwRO_qsfkhcZck5E,19146
3
3
  bencher/bench_plot_server.py,sha256=nvGTr981XgWELqV7yID91j6V1UIPGtKilzxHcNWaZ6Q,4196
4
4
  bencher/bench_report.py,sha256=ikMSHceyc8cYFH-sIza167DH-H-_iiTYDm2TmusUHDc,7515
5
5
  bencher/bench_runner.py,sha256=wShmZ504BOKgHj0sOrGZtduyPfJHFFBfHRsz5tYy5_Q,7000
@@ -71,8 +71,8 @@ bencher/example/meta/example_meta.py,sha256=ZXW8LZ1DGs05RiZRHLrOx-qt9x10qL6v2tt7
71
71
  bencher/example/meta/example_meta_cat.py,sha256=j3OCi1Yra47wrXOVr8epMYPGIXjQwdQoCcCICPmE2lo,609
72
72
  bencher/example/meta/example_meta_float.py,sha256=Y-zo7QAZkpt3mQEE4guiPmRHmKjn6-y8D_AjWeGCqEs,598
73
73
  bencher/example/meta/example_meta_levels.py,sha256=ZZ14r99z6cs73ZwvBJvDKdEVIdTyHzrWsenxRgFXfXQ,1410
74
- bencher/example/meta/generate_examples.py,sha256=Uicdr5PlamqiFGgEzEtdPzQPfVRE6UOa1CH-3UQ6T_I,1540
75
- bencher/example/meta/generate_meta.py,sha256=1euRIVEAUlT3a_olmhZXbHMaG9OCSzsgKajXXwf1vOI,3874
74
+ bencher/example/meta/generate_examples.py,sha256=EH9Rb1xgGv67F63jRcyjxVk0n56DeYHXU5cmve6G3-U,1416
75
+ bencher/example/meta/generate_meta.py,sha256=Pu7bvu5tNKsPuEPFU90g4z1d-ZPEitqhr4rPQe_X_I8,4861
76
76
  bencher/example/optuna/example_optuna.py,sha256=0zA6IIDWe7FM0rnYJ-FHF9GZtrhYdKHQTosUD2Raw0M,2338
77
77
  bencher/example/shelved/example_float2D_scatter.py,sha256=z8ranMq8IcJ1yoVSFDncp3gw-yWG7X9lXLimXKpy5Ks,3372
78
78
  bencher/example/shelved/example_float3D_cone.py,sha256=T3dkiEhjm6z3-Vs2SjCNWPKeHk8Bp4FbANE6yXYc_YM,2970
@@ -87,6 +87,7 @@ bencher/results/dataset_result.py,sha256=qXmFMrVAo_1qM6hhV4XpQqmCz9RiVkQo6ICYmbT
87
87
  bencher/results/float_formatter.py,sha256=sX6HNCyaXdHDxC8ybVUHwCJ3qOKbPUkBOplVIHtKWjM,1746
88
88
  bencher/results/holoview_result.py,sha256=r9G9p2i7r01O2ZnsPoyOJU39ImMQhW1QvGV0mNgolc4,29463
89
89
  bencher/results/hvplot_result.py,sha256=bYSewYhPLVzW6HF_WPjAhS1ZiRp9FJHs008UEBXgH4Y,1993
90
+ bencher/results/laxtex_result.py,sha256=EiyOzk6veaUjZyNjfhtKKqiQLoJLq9WzhZTqqepk7E8,1870
90
91
  bencher/results/optuna_result.py,sha256=QtZ4TGRun7gJoFVUjEyXKPF5yakwOSXrqEXQVJdJmm4,13587
91
92
  bencher/results/panel_result.py,sha256=lXOtfhWKSspf53Wgm94DTiVD3rliieHQW96sOdu5UYk,1336
92
93
  bencher/results/plotly_result.py,sha256=wkgfL38qJp6RviekXBYpNPeU4HCf0nbtKDAhu5QZhUg,2132
@@ -104,7 +105,7 @@ bencher/variables/results.py,sha256=Wq14e8rAj5mcK22325wcaeTMjgZ6JuduqceAHItHFY8,
104
105
  bencher/variables/sweep_base.py,sha256=gfEhKvsb16ZLbe38JewZqu0AMOHpsqwRbZbt-aCg9Bc,6258
105
106
  bencher/variables/time.py,sha256=zcRS5p4ZkFjMta9nZMEuWv86rLnPkUSqyO69QwI5q3E,3142
106
107
  resource/bencher,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
107
- holobench-1.40.0.dist-info/METADATA,sha256=hn3E2quLA2y2qpAyWnuGBOw5lvLG85A_dpUNDc8vO10,6846
108
- holobench-1.40.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
109
- holobench-1.40.0.dist-info/licenses/LICENSE,sha256=dSHXTdRY4Y7qGFMv63UksV700iff7iE-p7GGs6Sbnvo,1065
110
- holobench-1.40.0.dist-info/RECORD,,
108
+ holobench-1.40.1.dist-info/METADATA,sha256=zq3FNXMLsQ3TghWMygeA0TWWR1vknTPbTjzLwoXQx_g,6846
109
+ holobench-1.40.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
110
+ holobench-1.40.1.dist-info/licenses/LICENSE,sha256=dSHXTdRY4Y7qGFMv63UksV700iff7iE-p7GGs6Sbnvo,1065
111
+ holobench-1.40.1.dist-info/RECORD,,