halib 0.1.81__py3-none-any.whl → 0.1.83__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.
@@ -95,7 +95,7 @@ class zProfiler:
95
95
  │ }
96
96
  """
97
97
  assert (
98
- len(ctx_step_dict.keys()) > 1
98
+ len(ctx_step_dict.keys()) > 0
99
99
  ), "step_dict must have only one key (step_name) for detail."
100
100
 
101
101
  for step_name, time_list in ctx_step_dict.items():
@@ -170,7 +170,7 @@ class zProfiler:
170
170
  @classmethod
171
171
  @classmethod
172
172
  def plot_formatted_data(
173
- cls, profiler_data, outdir=None, file_format="png", do_show=False
173
+ cls, profiler_data, outdir=None, file_format="png", do_show=False, tag=""
174
174
  ):
175
175
  """
176
176
  Plot each context in a separate figure with bar + pie charts.
@@ -194,10 +194,11 @@ class zProfiler:
194
194
  # pprint(f'{step_names=}')
195
195
  n_steps = len(step_names)
196
196
 
197
+ assert n_steps > 0, "No steps found for context: {}".format(ctx)
197
198
  # Generate dynamic colors
198
199
  colors = px.colors.sample_colorscale(
199
200
  "Viridis", [i / (n_steps - 1) for i in range(n_steps)]
200
- )
201
+ ) if n_steps > 1 else [px.colors.sample_colorscale("Viridis", [0])[0]]
201
202
  # pprint(f'{len(colors)} colors generated for {n_steps} steps')
202
203
  color_map = dict(zip(step_names, colors))
203
204
 
@@ -237,10 +238,10 @@ class zProfiler:
237
238
  row=1,
238
239
  col=2,
239
240
  )
240
-
241
+ tag_str = f"[{tag}] " if tag else ""
241
242
  # Layout
242
243
  fig.update_layout(
243
- title_text=f"Context Profiler: {ctx}",
244
+ title_text=f"[{tag_str}Context Profiler: {ctx}",
244
245
  width=1000,
245
246
  height=400,
246
247
  showlegend=True,
@@ -257,7 +258,8 @@ class zProfiler:
257
258
 
258
259
  # Save figure
259
260
  if outdir is not None:
260
- file_path = os.path.join(outdir, f"{ctx}_summary.{file_format.lower()}")
261
+ file_prefix = {ctx} if len(tag_str) == 0 else f"{tag_str}_{ctx}"
262
+ file_path = os.path.join(outdir, f"{file_prefix}_summary.{file_format.lower()}")
261
263
  fig.write_image(file_path)
262
264
  print(f"Saved figure: {file_path}")
263
265
 
@@ -265,7 +267,7 @@ class zProfiler:
265
267
 
266
268
  return results
267
269
 
268
- def report_and_plot(self, outdir=None, file_format="png", do_show=False):
270
+ def report_and_plot(self, outdir=None, file_format="png", do_show=False, tag=""):
269
271
  """
270
272
  Generate the profiling report and plot the formatted data.
271
273
 
@@ -277,7 +279,7 @@ class zProfiler:
277
279
  report = self.get_report_dict()
278
280
  self.get_report_dict(with_detail=False)
279
281
  return self.plot_formatted_data(
280
- report, outdir=outdir, file_format=file_format, do_show=do_show
282
+ report, outdir=outdir, file_format=file_format, do_show=do_show, tag=tag
281
283
  )
282
284
  def meta_info(self):
283
285
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: halib
3
- Version: 0.1.81
3
+ Version: 0.1.83
4
4
  Summary: Small library for common tasks
5
5
  Author: Hoang Van Ha
6
6
  Author-email: hoangvanhauit@gmail.com
@@ -52,7 +52,7 @@ Dynamic: summary
52
52
 
53
53
  Helper package for coding and automation
54
54
 
55
- **Version 0.1.81**
55
+ **Version 0.1.83**
56
56
 
57
57
  + `research/profiler`: add `zProfiler` class to measure execution time of contexts and steps, with support for dynamic color scales in plots.
58
58
 
@@ -36,7 +36,7 @@ halib/research/metrics.py,sha256=Xgv0GUGo-o-RJaBOmkRCRpQJaYijF_1xeKkyYU_Bv4U,524
36
36
  halib/research/perfcalc.py,sha256=qDa0sqfpWrwGZVJtjuUVFK7JX6j8xyXP9OnnfYmdamg,15898
37
37
  halib/research/perftb.py,sha256=FWg0b8wSgy4UwuvHSXwEqvTq1Rhi-z-HtAKuQg1lWc4,30989
38
38
  halib/research/plot.py,sha256=-pDUk4z3C_GnyJ5zWmf-mGMdT4gaipVJWzIgcpIPiRk,9448
39
- halib/research/profiler.py,sha256=xkEHouAgn5EXg_sICyZfoQr10sG3CntRK6Ai9ZPY0tA,11441
39
+ halib/research/profiler.py,sha256=SjHlLo1-rVRe8aJtGEsOMs1TrNVBhKwT-FQ47xIkAp4,11761
40
40
  halib/research/torchloader.py,sha256=yqUjcSiME6H5W210363HyRUrOi3ISpUFAFkTr1w4DCw,6503
41
41
  halib/research/wandb_op.py,sha256=YzLEqME5kIRxi3VvjFkW83wnFrsn92oYeqYuNwtYRkY,4188
42
42
  halib/sys/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -52,8 +52,8 @@ halib/utils/gpu_mon.py,sha256=vD41_ZnmPLKguuq9X44SB_vwd9JrblO4BDzHLXZhhFY,2233
52
52
  halib/utils/listop.py,sha256=Vpa8_2fI0wySpB2-8sfTBkyi_A4FhoFVVvFiuvW8N64,339
53
53
  halib/utils/tele_noti.py,sha256=-4WXZelCA4W9BroapkRyIdUu9cUVrcJJhegnMs_WpGU,5928
54
54
  halib/utils/video.py,sha256=ZqzNVPgc1RZr_T0OlHvZ6SzyBpL7O27LtB86JMbBuR0,3059
55
- halib-0.1.81.dist-info/licenses/LICENSE.txt,sha256=qZssdna4aETiR8znYsShUjidu-U4jUT9Q-EWNlZ9yBQ,1100
56
- halib-0.1.81.dist-info/METADATA,sha256=9xzLVpvHXnS1ys9nu8ASrD8adYUTxetCi0hbOBQBDL8,5864
57
- halib-0.1.81.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
58
- halib-0.1.81.dist-info/top_level.txt,sha256=7AD6PLaQTreE0Fn44mdZsoHBe_Zdd7GUmjsWPyQ7I-k,6
59
- halib-0.1.81.dist-info/RECORD,,
55
+ halib-0.1.83.dist-info/licenses/LICENSE.txt,sha256=qZssdna4aETiR8znYsShUjidu-U4jUT9Q-EWNlZ9yBQ,1100
56
+ halib-0.1.83.dist-info/METADATA,sha256=x9pyR08XAFtzojIdnr_oCrSLt32X5MGs49abJeOt0-4,5864
57
+ halib-0.1.83.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
58
+ halib-0.1.83.dist-info/top_level.txt,sha256=7AD6PLaQTreE0Fn44mdZsoHBe_Zdd7GUmjsWPyQ7I-k,6
59
+ halib-0.1.83.dist-info/RECORD,,
File without changes