1if __name__ == "__main__":
2 import numpy as np
3 import pyhdf5_handler
4 import datetime
5 import pandas as pd
6
7 # open an hdf5 database, test.hdf5.
8 hdf5 = pyhdf5_handler.open_hdf5("./test.hdf5")
9
10 # Create a group in the hdf5
11 hdf5 = pyhdf5_handler.add_hdf5_sub_group(hdf5, subgroup="my_group")
12 hdf5["my_group"]
13
14 # save any data in the hdf5 database
15 pyhdf5_handler.hdf5_dataset_creator(hdf5, "str", "str")
16 pyhdf5_handler.hdf5_dataset_creator(hdf5, "numbers", 1.0)
17 pyhdf5_handler.hdf5_dataset_creator(hdf5, "none", None)
18 pyhdf5_handler.hdf5_dataset_creator(
19 hdf5, "timestamp_numpy", np.datetime64("2019-09-22T17:38:30")
20 )
21 pyhdf5_handler.hdf5_dataset_creator(
22 hdf5, "timestamp_datetime", datetime.datetime.fromisoformat("2019-09-22T17:38:30")
23 )
24 pyhdf5_handler.hdf5_dataset_creator(
25 hdf5, "timestamp_pandas", pd.Timestamp("2019-09-22T17:38:30")
26 )
27 pyhdf5_handler.hdf5_dataset_creator(hdf5, "list_num", [1.0, 2.0])
28 pyhdf5_handler.hdf5_dataset_creator(hdf5, "list_str", ["a", "b"])
29 pyhdf5_handler.hdf5_dataset_creator(hdf5, "list_mixte", [1.0, "a"])
30 pyhdf5_handler.hdf5_dataset_creator(
31 hdf5,
32 "list_date_numpy",
33 [np.datetime64("2019-09-22 17:38:30"), np.datetime64("2019-09-22 18:38:30")],
34 )
35 pyhdf5_handler.hdf5_dataset_creator(
36 hdf5,
37 "list_date_datetime",
38 [
39 datetime.datetime.fromisoformat("2019-09-22 17:38:30"),
40 datetime.datetime.fromisoformat("2019-09-22T18:38:30"),
41 ],
42 )
43 pyhdf5_handler.hdf5_dataset_creator(
44 hdf5,
45 "list_date_pandas",
46 [pd.Timestamp("2019-09-22 17:38:30"), pd.Timestamp("2019-09-22 17:38:30")],
47 )
48 pyhdf5_handler.hdf5_dataset_creator(
49 hdf5, "list_date_range_pandas", pd.date_range(start="1/1/2018", end="1/08/2018")
50 )
51
52 # write a python dictionary in the hdf5 database
53 dictionary = {
54 "dict": {
55 "int": 1,
56 "float": 2.0,
57 "none": None,
58 "timestamp": pd.Timestamp("2019-09-22 17:38:30"),
59 "list": [1, 2, 3, 4],
60 "array": np.array([1, 2, 3, 4]),
61 "date_range": pd.date_range(start="1/1/2018", end="1/08/2018"),
62 "list_mixte": [1.0, np.datetime64("2019-09-22 17:38:30")],
63 }
64 }
65
66 hdf5.attrs["attribute"] = "myattribute"
67
68 pyhdf5_handler.save_dict_to_hdf5(hdf5, dictionary)
69
70 # handle structured ndarray
71 data = [("Alice", 25, 55.0), ("Bob", 32, 60.5)]
72 dtypes = [("name", "U10"), ("age", "i4"), ("weight", "f4")]
73 people = np.array(data, dtype=dtypes)
74
75 pyhdf5_handler.hdf5_dataset_creator(hdf5, "structured_array", people)
76
77 # viewing data stored in the hdf5 (recursive)
78 pyhdf5_handler.hdf5_view(hdf5)
79 pyhdf5_handler.hdf5file_view("./test.hdf5")
80
81 # viwing element stored in the hdf5 (at the current level)
82 pyhdf5_handler.hdf5_ls(hdf5)
83
84 # read an hdf5 and import it as a python dictionary
85 data = pyhdf5_handler.read_hdf5_as_dict(hdf5, read_attrs=True)
86
87 # read a specific item
88 pyhdf5_handler.hdf5_read_dataset(item=hdf5["str"], expected_type=hdf5.attrs["_str"])
89 pyhdf5_handler.hdf5_read_dataset(
90 item=hdf5["list_date_numpy"], expected_type=hdf5.attrs["_list_date_numpy"]
91 )
92
93 # close the hdf5
94 hdf5.close()
95
96 # handle file directly
97 pyhdf5_handler.hdf5file_ls("./test.hdf5")
98 pyhdf5_handler.hdf5file_ls("./test.hdf5", location="structured_array")
99
100 data = pyhdf5_handler.read_hdf5file_as_dict("./test.hdf5", read_attrs=False)
101
102 pyhdf5_handler.save_dict_to_hdf5file("./test.hdf5", data)
103
104 res = pyhdf5_handler.search_in_hdf5file(
105 "./test.hdf5", key="date_range", location="./", wait_time=0
106 )
107
108 res = pyhdf5_handler.search_in_hdf5file(
109 "./test.hdf5", key="structured_array", location="./", wait_time=0
110 )
111
112 pyhdf5_handler.get_hdf5file_item(
113 path_to_hdf5="./test.hdf5",
114 location="./",
115 item="structured_array",
116 search_attrs=False,
117 )
118
119 pyhdf5_handler.get_hdf5file_item(
120 path_to_hdf5="./test.hdf5", location="./", item="list_mixte", search_attrs=False
121 )
122
123 pyhdf5_handler.get_hdf5file_item(
124 path_to_hdf5="./test.hdf5", location="./", item="attribute", search_attrs=True
125 )
126
127 pyhdf5_handler.get_hdf5file_attribute(
128 path_to_hdf5="./test.hdf5", location="./", attribute="_list_num", wait_time=0
129 )
130
131 pyhdf5_handler.get_hdf5file_attribute(
132 path_to_hdf5="./test.hdf5",
133 location="./structured_array/ndarray_ds",
134 attribute="_name",
135 wait_time=0,
136 )
137
138 pyhdf5_handler.get_hdf5file_dataset(
139 path_to_hdf5="./test.hdf5", location="./dict", dataset="list_mixte"
140 )