我有一个pickle文件second.pkl,它包含了神经网络输出层的尖峰时间结果。我试图用一个函数来读取这个文件,这样它可以返回一个列表或数组中的神经元数和尖峰时间。我尝试了下面的代码,但遇到了问题
resultsFileName = "output/second.pkl"
testStartTime = 8260
def readResultsFile(testStartTime):
timeResults = [[],[],[]]
fileHandle = open(resultsFileName, 'rb')
inputLine = fileHandle.readline()
while (inputLine != ""):
dataStrings = inputLine.split()
neuronNumber = int (dataStrings[0])
spikeTime = float(dataStrings[1])
if (spikeTime >= testStartTime):
timeResults[neuronNumber] = timeResults[neuronNumber]+ [spikeTime]
inputLine = fileHandle.readline()
fileHandle.close()
return timeResults
更新: 我在另一个函数中使用了pickle.load
def printPklSpikes(fileName):
testTimeResults = [[],[],[]]
fileHandle = open(fileName, 'rb')
neoObj = pickle.load(fileHandle)
segments = neoObj.segments
segment = segments[0]
spikeTrains = segment.spiketrains
neurons = len(spikeTrains)
for neuronNum in range (0,neurons):
if (len(spikeTrains[neuronNum])>0):
spikes = spikeTrains[neuronNum]
for spike in range (0,len(spikes)):
testTimeResults = neuronNum, spikes[spike]
fileHandle.close()
return testTimeResults
但该函数最终只返回最后一个神经元数量和峰值时间
pickle文件如下所示:
Block with 1 segments
name: 'population8'
description: 'Population "population8"\n Structure : {\'name\': \'Line\', \'parameters\': {\'dx\': 1.0, \'x0\': 0.0, \'y\': 0.0, \'z\': 0.0}}\n Local cells : 4\n Cell type : {\'name\': \'IF_cond_exp\', \'default_parameters\': {\'v_rest\': -65.0, \'cm\': 1.0, \'tau_m\': 20.0, \'tau_refrac\': 0.1, \'tau_syn_E\': 5.0, \'tau_syn_I\': 5.0, \'e_rev_E\': 0.0, \'e_rev_I\': -70.0, \'v_thresh\': -50.0, \'v_reset\': -65.0, \'i_offset\': 0.0}, \'default_initial_values\': {\'v\': -65.0, \'gsyn_exc\': 0.0, \'gsyn_inh\': 0.0}, \'parameters\': {\'v_rest\': <larray: base_value=-65.0 shape=(4,) dtype=<class \'float\'>, operations=[]>, \'cm\': <larray: base_value=1.0 shape=(4,) dtype=<class \'float\'>, operations=[]>, \'tau_m\': <larray: base_value=20.0 shape=(4,) dtype=<class \'float\'>, operations=[]>, \'tau_refrac\': <larray: base_value=0.1 shape=(4,) dtype=<class \'float\'>, operations=[]>, \'tau_syn_E\': <larray: base_value=5.0 shape=(4,) dtype=<class \'float\'>, operations=[]>, \'tau_syn_I\': <larray: base_value=5.0 shape=(4,) dtype=<class \'float\'>, operations=[]>, \'e_rev_E\': <larray: base_value=0.0 shape=(4,) dtype=<class \'float\'>, operations=[]>, \'e_rev_I\': <larray: base_value=-70.0 shape=(4,) dtype=<class \'float\'>, operations=[]>, \'v_thresh\': <larray: base_value=-50.0 shape=(4,) dtype=<class \'float\'>, operations=[]>, \'v_reset\': <larray: base_value=-65.0 shape=(4,) dtype=<class \'float\'>, operations=[]>, \'i_offset\': <larray: base_value=0.0 shape=(4,) dtype=<class \'float\'>, operations=[]>}}.name\n ID range : 2853-2856\n First cell on this node:\n ID: 2853\n {}'
annotations: {'size': 4,
'first_index': 0,
'last_index': 4,
'first_id': 2853,
'last_id': 2856,
'label': 'population8',
'simulator': 'NEST',
'dt': 1.0,
'mpi_processes': 1}
rec_datetime: datetime.datetime(2020, 11, 18, 11, 25, 53, 792667)
# segments (N=1)
0: Segment with 4 spiketrains
name: 'segment000'
description: 'Population "population8"\n Structure : {\'name\': \'Line\', \'parameters\': {\'dx\': 1.0, \'x0\': 0.0, \'y\': 0.0, \'z\': 0.0}}\n Local cells : 4\n Cell type : {\'name\': \'IF_cond_exp\', \'default_parameters\': {\'v_rest\': -65.0, \'cm\': 1.0, \'tau_m\': 20.0, \'tau_refrac\': 0.1, \'tau_syn_E\': 5.0, \'tau_syn_I\': 5.0, \'e_rev_E\': 0.0, \'e_rev_I\': -70.0, \'v_thresh\': -50.0, \'v_reset\': -65.0, \'i_offset\': 0.0}, \'default_initial_values\': {\'v\': -65.0, \'gsyn_exc\': 0.0, \'gsyn_inh\': 0.0}, \'parameters\': {\'v_rest\': <larray: base_value=-65.0 shape=(4,) dtype=<class \'float\'>, operations=[]>, \'cm\': <larray: base_value=1.0 shape=(4,) dtype=<class \'float\'>, operations=[]>, \'tau_m\': <larray: base_value=20.0 shape=(4,) dtype=<class \'float\'>, operations=[]>, \'tau_refrac\': <larray: base_value=0.1 shape=(4,) dtype=<class \'float\'>, operations=[]>, \'tau_syn_E\': <larray: base_value=5.0 shape=(4,) dtype=<class \'float\'>, operations=[]>, \'tau_syn_I\': <larray: base_value=5.0 shape=(4,) dtype=<class \'float\'>, operations=[]>, \'e_rev_E\': <larray: base_value=0.0 shape=(4,) dtype=<class \'float\'>, operations=[]>, \'e_rev_I\': <larray: base_value=-70.0 shape=(4,) dtype=<class \'float\'>, operations=[]>, \'v_thresh\': <larray: base_value=-50.0 shape=(4,) dtype=<class \'float\'>, operations=[]>, \'v_reset\': <larray: base_value=-65.0 shape=(4,) dtype=<class \'float\'>, operations=[]>, \'i_offset\': <larray: base_value=0.0 shape=(4,) dtype=<class \'float\'>, operations=[]>}}.name\n ID range : 2853-2856\n First cell on this node:\n ID: 2853\n {}'
# analogsignals (N=0)
我在代码中使用pickle文件;我就是这样读的
如果这没有帮助,请张贴错误
相关问题 更多 >
编程相关推荐