Data manager#
- file_io.data_manager.save(data, path, max_depth=2, max_length=100, compress_np=False, legacy_mode=False, legacy_params=None)#
- Save data using the data manager. Allows for the convenient storage of large unbalanced data structures without memory spikes. - Parameters:
- data (Any) – The data to be stored. 
- path (str) – Location for data storage. 
- max_depth (int) – The depth to which folders are created prior to storing data via pickle. 
- max_length (int) – Maximum length of a sublist within the to be saved object. 
- compress_np (boolean) – Specifies whether numpy arrays are to be compressed. 
- legacy_mode (boolean) – Deprecated, will be removed in a future version. 
- legacy_params (Any) – Deprecated, will be removed in a future version. 
 
 
- file_io.data_manager.load(path, legacy_mode=False)#
- Load data stored via the data_manager. - Parameters:
- path (str) – Location from which the data is to be read. 
- legacy_mode (boolean) – Deprecated, will be removed in a future version. 
 
- Returns:
- The read data. 
- Return type:
- Any 
 
The following code example shows how to load and save data using the data manager.
import random
import numpy as np
import shutil
import finn.file_io.data_manager as dm
#Configure sample data
channel_count = 32
frequency = [random.randint(5, 50) for _ in range(channel_count)]
data_range = np.arange(0, 100)
frequency_sampling = 200
#Generate some sample data
epoch_count = 10
state_count = 2
raw_data = [[[None for _ in range(channel_count)] for _ in range(epoch_count)] for _ in range(state_count)]
for (state_idx, _) in enumerate(range(state_count)):
    for (epoch_idx, _) in enumerate(range(epoch_count)):
        for ch_idx in range(channel_count):
            genuine_signal = np.sin(2 * np.pi * frequency[ch_idx] * data_range / frequency_sampling)
            raw_data[state_idx][epoch_idx][ch_idx] = genuine_signal
#Save data
dm.save(raw_data, "test_file", max_depth = 2)
#Load data
loaded_data = dm.load("test_file")
if ((np.asarray(loaded_data) == np.asarray(raw_data)).all()):
    print("Data saved and loaded successfully.")
else:
    print("Error saving/loading data.")