File: array4.py

package info (click to toggle)
pytables 3.10.2-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 15,228 kB
  • sloc: ansic: 82,212; python: 65,296; cpp: 753; sh: 394; makefile: 100
file content (49 lines) | stat: -rw-r--r-- 1,583 bytes parent folder | download | duplicates (2)
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
import numpy as np

import tables as tb

basedim = 4
file = "array4.h5"
# Open a new empty HDF5 file
fileh = tb.open_file(file, mode="w")
# Get the root group
group = fileh.root
# Set the type codes to test
dtypes = [np.int8, np.uint8, np.int16, int, np.float32, float]
for i, dtype in enumerate(dtypes, 1):
    # Create an array of dtype, with incrementally bigger ranges
    a = np.ones((basedim,) * i, dtype)
    # Save it on the HDF5 file
    dsetname = f"array_{a.dtype.char}"
    hdfarray = fileh.create_array(group, dsetname, a, "Large array")
    print(f"Created dataset: {hdfarray}")
    # Create a new group
    group = fileh.create_group(group, f"group{i}")

# Close the file
fileh.close()

# Open the previous HDF5 file in read-only mode
fileh = tb.open_file(file, mode="r")
# Get the root group
group = fileh.root
# Get the metadata on the previosly saved arrays
for i, dtype in enumerate(dtypes, 1):
    # Create an array for later comparison
    a = np.ones((basedim,) * i, dtype)
    # Get the dset object hangin from group
    dset = getattr(group, "array_" + a.dtype.char)
    print(f"Info from dataset: {dset!r}")
    # Read the actual data in array
    b = dset.read()
    print(f"Array b read from file. Shape ==> {b.shape}. Dtype ==> {b.dtype}")
    # Test if the original and read arrays are equal
    if np.allclose(a, b):
        print("Good: Read array is equal to the original")
    else:
        print("Error: Read array and the original differs!")
    # Iterate over the next group
    group = getattr(group, f"group{i}")

# Close the file
fileh.close()