halib 0.1.52__tar.gz → 0.1.54__tar.gz
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.
- {halib-0.1.52 → halib-0.1.54}/PKG-INFO +5 -1
- {halib-0.1.52 → halib-0.1.54}/README.md +4 -0
- {halib-0.1.52 → halib-0.1.54}/halib/research/perftb.py +19 -5
- halib-0.1.54/halib/utils/dataclass_util.py +39 -0
- {halib-0.1.52 → halib-0.1.54}/halib.egg-info/PKG-INFO +5 -1
- {halib-0.1.52 → halib-0.1.54}/halib.egg-info/SOURCES.txt +1 -0
- {halib-0.1.52 → halib-0.1.54}/halib.egg-info/requires.txt +1 -0
- {halib-0.1.52 → halib-0.1.54}/setup.py +1 -1
- {halib-0.1.52 → halib-0.1.54}/.gitignore +0 -0
- {halib-0.1.52 → halib-0.1.54}/GDriveFolder.txt +0 -0
- {halib-0.1.52 → halib-0.1.54}/LICENSE.txt +0 -0
- {halib-0.1.52 → halib-0.1.54}/MANIFEST.in +0 -0
- {halib-0.1.52 → halib-0.1.54}/guide_publish_pip.pdf +0 -0
- {halib-0.1.52 → halib-0.1.54}/halib/__init__.py +0 -0
- {halib-0.1.52 → halib-0.1.54}/halib/common.py +0 -0
- {halib-0.1.52 → halib-0.1.54}/halib/cuda.py +0 -0
- {halib-0.1.52 → halib-0.1.54}/halib/filetype/__init__.py +0 -0
- {halib-0.1.52 → halib-0.1.54}/halib/filetype/csvfile.py +0 -0
- {halib-0.1.52 → halib-0.1.54}/halib/filetype/jsonfile.py +0 -0
- {halib-0.1.52 → halib-0.1.54}/halib/filetype/textfile.py +0 -0
- {halib-0.1.52 → halib-0.1.54}/halib/filetype/videofile.py +0 -0
- {halib-0.1.52 → halib-0.1.54}/halib/filetype/yamlfile.py +0 -0
- {halib-0.1.52 → halib-0.1.54}/halib/online/__init__.py +0 -0
- {halib-0.1.52 → halib-0.1.54}/halib/online/gdrive.py +0 -0
- {halib-0.1.52 → halib-0.1.54}/halib/online/gdrive_mkdir.py +0 -0
- {halib-0.1.52 → halib-0.1.54}/halib/online/gdrive_test.py +0 -0
- {halib-0.1.52 → halib-0.1.54}/halib/online/projectmake.py +0 -0
- {halib-0.1.52 → halib-0.1.54}/halib/research/__init__.py +0 -0
- {halib-0.1.52 → halib-0.1.54}/halib/research/dataset.py +0 -0
- {halib-0.1.52 → halib-0.1.54}/halib/research/plot.py +0 -0
- {halib-0.1.52 → halib-0.1.54}/halib/research/torchloader.py +0 -0
- {halib-0.1.52 → halib-0.1.54}/halib/research/wandb_op.py +0 -0
- {halib-0.1.52 → halib-0.1.54}/halib/rich_color.py +0 -0
- {halib-0.1.52 → halib-0.1.54}/halib/system/__init__.py +0 -0
- {halib-0.1.52 → halib-0.1.54}/halib/system/cmd.py +0 -0
- {halib-0.1.52 → halib-0.1.54}/halib/system/filesys.py +0 -0
- {halib-0.1.52 → halib-0.1.54}/halib/utils/__init__.py +0 -0
- {halib-0.1.52 → halib-0.1.54}/halib/utils/listop.py +0 -0
- {halib-0.1.52 → halib-0.1.54}/halib/utils/tele_noti.py +0 -0
- {halib-0.1.52 → halib-0.1.54}/halib.egg-info/dependency_links.txt +0 -0
- {halib-0.1.52 → halib-0.1.54}/halib.egg-info/top_level.txt +0 -0
- {halib-0.1.52 → halib-0.1.54}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: halib
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.54
|
4
4
|
Summary: Small library for common tasks
|
5
5
|
Author: Hoang Van Ha
|
6
6
|
Author-email: hoangvanhauit@gmail.com
|
@@ -15,6 +15,10 @@ License-File: LICENSE.txt
|
|
15
15
|
|
16
16
|
Helper package for coding and automation
|
17
17
|
|
18
|
+
**Version 0.1.54**
|
19
|
+
|
20
|
+
+ add `util/dataclass_util` to help dynamically create `dataclass` classes from dictionary or YAML file, including support for nested dataclasses. From there, we can use `dataclass_wizard` to create a list of `dataclass` classes with the help from ChatGPT.
|
21
|
+
|
18
22
|
**Version 0.1.52**
|
19
23
|
|
20
24
|
+ add `research/perftb` module to allow creating and managing performance tables for experiments, including filtering by datasets, metrics, and experiments.
|
@@ -1,5 +1,9 @@
|
|
1
1
|
Helper package for coding and automation
|
2
2
|
|
3
|
+
**Version 0.1.54**
|
4
|
+
|
5
|
+
+ add `util/dataclass_util` to help dynamically create `dataclass` classes from dictionary or YAML file, including support for nested dataclasses. From there, we can use `dataclass_wizard` to create a list of `dataclass` classes with the help from ChatGPT.
|
6
|
+
|
3
7
|
**Version 0.1.52**
|
4
8
|
|
5
9
|
+ add `research/perftb` module to allow creating and managing performance tables for experiments, including filtering by datasets, metrics, and experiments.
|
@@ -12,10 +12,10 @@ from typing import Dict, List, Union, Optional
|
|
12
12
|
from rich.pretty import pprint
|
13
13
|
import pandas as pd
|
14
14
|
|
15
|
-
|
15
|
+
from halib import *
|
16
16
|
# internal imports
|
17
|
-
from ..filetype import csvfile
|
18
|
-
from ..common import ConsoleLog
|
17
|
+
# from ..filetype import csvfile
|
18
|
+
# from ..common import ConsoleLog
|
19
19
|
|
20
20
|
|
21
21
|
class DatasetMetrics:
|
@@ -249,12 +249,15 @@ class PerfTB:
|
|
249
249
|
|
250
250
|
current_our_method = -1 # Start with -1 to avoid index error
|
251
251
|
exp_pattern_dict = {}
|
252
|
+
shown_legends = set()
|
252
253
|
for row_idx, metric in enumerate(metric_list, start=1):
|
253
254
|
metric_df = df[df["Metric"] == metric]
|
254
255
|
list_exp = list(metric_df["Experiment"].unique())
|
255
256
|
if custom_sort_exp_fn:
|
256
257
|
list_exp = custom_sort_exp_fn(list_exp)
|
257
258
|
for exp in list_exp:
|
259
|
+
showlegend = exp not in shown_legends
|
260
|
+
shown_legends.add(exp) # since it is a set, it will only keep unique values
|
258
261
|
should_highlight = (
|
259
262
|
custom_highlight_method_fn is not None and custom_highlight_method_fn(exp)
|
260
263
|
)
|
@@ -274,7 +277,7 @@ class PerfTB:
|
|
274
277
|
y=exp_df["Value"],
|
275
278
|
name=f"{exp}",
|
276
279
|
legendgroup=exp,
|
277
|
-
showlegend=
|
280
|
+
showlegend=showlegend, # Show legend only for the first row
|
278
281
|
marker=dict(
|
279
282
|
color=color_map[exp],
|
280
283
|
pattern=(
|
@@ -749,8 +752,19 @@ def test_mics() -> None:
|
|
749
752
|
custom_sort_exp_fn=lambda exps: sorted(exps, reverse=True),
|
750
753
|
open_plot=True,
|
751
754
|
)
|
755
|
+
def test_bench2():
|
756
|
+
perftb = PerfTB.from_csv(
|
757
|
+
"test/bench2.csv",
|
758
|
+
sep=";")
|
759
|
+
perftb.display()
|
760
|
+
perftb.plot(
|
761
|
+
save_path="zout/bench2_plot.svg",
|
762
|
+
title="Bench2 Performance Comparison",
|
763
|
+
open_plot=True,
|
764
|
+
)
|
752
765
|
|
753
766
|
|
754
767
|
# Example usage
|
755
768
|
if __name__ == "__main__":
|
756
|
-
test_mics()
|
769
|
+
# test_mics()
|
770
|
+
test_bench2()
|
@@ -0,0 +1,39 @@
|
|
1
|
+
import yaml
|
2
|
+
from typing import Any
|
3
|
+
from rich.pretty import pprint
|
4
|
+
from ..filetype import yamlfile
|
5
|
+
# from halib.filetype import yamlfile
|
6
|
+
from dataclasses import make_dataclass
|
7
|
+
|
8
|
+
def dict_to_dataclass(name: str, data: dict):
|
9
|
+
fields = []
|
10
|
+
values = {}
|
11
|
+
|
12
|
+
for key, value in data.items():
|
13
|
+
if isinstance(value, dict):
|
14
|
+
sub_dc = dict_to_dataclass(key.capitalize(), value)
|
15
|
+
fields.append((key, type(sub_dc)))
|
16
|
+
values[key] = sub_dc
|
17
|
+
else:
|
18
|
+
field_type = type(value) if value is not None else Any
|
19
|
+
fields.append((key, field_type))
|
20
|
+
values[key] = value
|
21
|
+
|
22
|
+
DC = make_dataclass(name.capitalize(), fields)
|
23
|
+
return DC(**values)
|
24
|
+
|
25
|
+
def yaml_to_dataclass(name: str, yaml_str: str):
|
26
|
+
data = yaml.safe_load(yaml_str)
|
27
|
+
return dict_to_dataclass(name, data)
|
28
|
+
|
29
|
+
def yamlfile_to_dataclass(name: str, file_path: str):
|
30
|
+
data_dict = yamlfile.load_yaml(file_path, to_dict=True)
|
31
|
+
if "__base__" in data_dict:
|
32
|
+
del data_dict["__base__"]
|
33
|
+
return dict_to_dataclass(name, data_dict)
|
34
|
+
|
35
|
+
if __name__ == "__main__":
|
36
|
+
cfg = yamlfile_to_dataclass("Config", "test/dataclass_util_test_cfg.yaml")
|
37
|
+
|
38
|
+
# ! NOTICE: after print out this dataclass, we can copy the output and paste it into CHATGPT to generate a list of needed dataclass classes using `from dataclass_wizard import YAMLWizard`
|
39
|
+
pprint(cfg)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: halib
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.54
|
4
4
|
Summary: Small library for common tasks
|
5
5
|
Author: Hoang Van Ha
|
6
6
|
Author-email: hoangvanhauit@gmail.com
|
@@ -15,6 +15,10 @@ License-File: LICENSE.txt
|
|
15
15
|
|
16
16
|
Helper package for coding and automation
|
17
17
|
|
18
|
+
**Version 0.1.54**
|
19
|
+
|
20
|
+
+ add `util/dataclass_util` to help dynamically create `dataclass` classes from dictionary or YAML file, including support for nested dataclasses. From there, we can use `dataclass_wizard` to create a list of `dataclass` classes with the help from ChatGPT.
|
21
|
+
|
18
22
|
**Version 0.1.52**
|
19
23
|
|
20
24
|
+ add `research/perftb` module to allow creating and managing performance tables for experiments, including filtering by datasets, metrics, and experiments.
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|