44 lines
1.6 KiB
Python
44 lines
1.6 KiB
Python
import nixio as nix
|
|
from IPython import embed
|
|
from collections import defaultdict
|
|
|
|
|
|
def open_nixio(nix_file, avg_opt):
|
|
# Opening file using nixio
|
|
f = nix.File.open(nix_file, nix.FileMode.ReadOnly)
|
|
b = f.blocks[0] # first block
|
|
meta = b.metadata
|
|
mt = b.multi_tags['moving object-1']
|
|
tags = b.tags["MovingObjects_1"]
|
|
|
|
# Important parts of nixio file
|
|
curr_comb = tags.metadata["RePro-Info"]["settings"]["object"]
|
|
|
|
comb_pos = mt.positions[:] #
|
|
spikes = b.data_arrays["Spikes-1"][:] # spikes for all trials in one recording
|
|
|
|
# All feature tags: ['GlobalEField', 'GlobalEFieldAM', 'LocalEField', 'I', 'EOD Rate', 'EOD Amplitude',
|
|
# 'AmplifierMode', 'abs_time', 'delay', 'amplitude', 'speed', 'lateral position', 'direction']
|
|
feature_dict = {}
|
|
for feat in mt.features:
|
|
feature_dict.update({feat.data.name[16:]: mt.features[feat.data.name].data[:]})
|
|
# Spike data in intervals of comb position + speed
|
|
intervals_dict = defaultdict(list)
|
|
for idx, position in enumerate(comb_pos):
|
|
if idx == (len(comb_pos)-1):
|
|
break
|
|
curr_speed = feature_dict['speed'][idx]
|
|
curr_pos = comb_pos[idx]
|
|
curr_dir = feature_dict['direction'][idx]
|
|
curr_spikes = spikes[(spikes < comb_pos[idx + 1]) & (spikes > comb_pos[idx])]
|
|
|
|
if avg_opt == 'average':
|
|
intervals_dict[(curr_speed, curr_dir, curr_comb)].append(curr_spikes)
|
|
else:
|
|
intervals_dict.update({(curr_speed, curr_dir, curr_pos, curr_comb): curr_spikes})
|
|
|
|
# Spike data at baseline
|
|
# comb_baseline = spikes[(spikes < comb_pos[0])]
|
|
|
|
return curr_comb, intervals_dict
|