Source code for denspp.offline.template.call_data
import numpy as np
from denspp.offline.data_call.call_handler import ControllerData, SettingsData
from scipy.io import loadmat
from pyxdf import load_xdf
[docs]
class DataLoader(ControllerData):
_settings: SettingsData
_methods_available: list
def __init__(self, settings: SettingsData) -> None:
"""Class for loading and manipulating the used dataset
:param settings: Settings class instance
"""
ControllerData.__init__(self)
self._settings = settings
self._methods_available = self._extract_func(self.__class__)
def __load_martinez_simulation(self) -> None:
"""Loading synthethic files from Quiroga simulation (2009)"""
path2file = self._prepare_access_file(folder_name="_SimDaten_Martinez2009", data_type='simulation_*.mat')
loaded_data = loadmat(path2file)
fs_used = float(1 / loaded_data["samplingInterval"][0][0] * 1000)
spike_xoffset = int(-0.1e-3 * fs_used)
self._load_rawdata_into_pipeline(
elec_type="Synthetic",
file_name=path2file,
fs_orig=fs_used,
elec_orn=[int(loaded_data["chan"][0]) - 1],
rawdata=loaded_data["data"][0],
scale_data=0.5e-6,
evnt_pos=[loaded_data["spike_times"][0][0][0] - spike_xoffset],
evnt_id=[loaded_data["spike_class"][0][0][0]]
)
def __load_pedreira_simulation(self) -> None:
"""Loading synthethic files from Quiroga simulator (2012)"""
path2file = self._prepare_access_file(folder_name="_SimDaten_Pedreira2012", data_type='simulation_*.mat')
path2label = self._prepare_access_file(folder_name="_SimDaten_Pedreira2012", data_type="ground_truth.mat")
loaded_data = loadmat(path2file)
ground_truth = loadmat(path2label)
fs_used = 24e3
spike_xoffset = int(-0.1e-6 * fs_used)
num_index = int(path2file.split("_")[-1].split(".")[0])
self._load_rawdata_into_pipeline(
elec_type="Synthetic",
file_name=path2file,
fs_orig=fs_used,
elec_orn=[int(loaded_data["data"].shape[0]) - 1],
rawdata=loaded_data["data"][0],
scale_data=25e-6,
evnt_pos=[ground_truth["spike_first_sample"][0][num_index - 1][0] - spike_xoffset],
evnt_id=[ground_truth["spike_classes"][0][num_index - 1][0]]
)
def __load_quiroga_simulation(self) -> None:
"""Loading synthetic recordings from Quiroga simulator (Common benchmark)"""
path2file = self._prepare_access_file(folder_name="_SimDaten_Quiroga2020", data_type='C_*.mat')
loaded_data = loadmat(path2file, mat_dtype=True)
fs_used = float(1000 / loaded_data["samplingInterval"][0][0])
self._load_rawdata_into_pipeline(
elec_type="Synthetic",
file_name=path2file,
fs_orig=fs_used,
elec_orn=[int(loaded_data["chan"][0][0]) - 1],
scale_data=100e-6,
rawdata=loaded_data["data"][0],
evnt_pos=[loaded_data["spike_times"][0][0][0] - int(-0.5e-6 * fs_used)],
evnt_id=[loaded_data["spike_class"][0][0][0] - 1]
)
def __load_denspp_online(self) -> None:
"""Function for loading the *.xdf files from custom hardware readout with DeNSPP.online framework"""
path2file = self._prepare_access_file(folder_name="_Custom_Hardware", data_type='*.xdf')
loaded_data = load_xdf(path2file)[0][0]
fs_used = float(loaded_data['info']['nominal_srate'][0])
self._load_rawdata_into_pipeline(
elec_type=loaded_data['info']['name'],
file_name=path2file,
fs_orig=fs_used,
elec_orn=np.arange(0, loaded_data['time_series'].shape[1]).tolist(),
scale_data=1.0,
rawdata=np.transpose(np.float32(loaded_data["data"][0], (1, 0)))
)