-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMergeVoltfiles.py
86 lines (66 loc) · 3.02 KB
/
MergeVoltfiles.py
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import os
import numpy
import sys
import json
#import simulation_parameters
class MergeSpikefiles(object):
def __init__(self, params):
self.params = params
def merge_nspike_files(self, merge_pattern, sorted_pattern_output, sort_idx=1):
rnd_nr1 = numpy.random.randint(0,10**8)
rnd_nr2 = rnd_nr1 + 1
fn_out = sorted_pattern_output
print 'output_file:', fn_out
# merge files from different processors
tmp_file = "tmp_%d" % (rnd_nr2)
os.system("cat %s_* > %s" % (merge_pattern, tmp_file))
# sort according to cell id
os.system("sort -gk %d %s > %s" % (sort_idx, tmp_file, fn_out))
os.system("rm %s" % (tmp_file))
def merge_spiketimes_files(self, merge_pattern, sorted_pattern_output, sort_idx=1):
rnd_nr1 = numpy.random.randint(0,10**8)
rnd_nr2 = numpy.random.randint(0,10**8) + 1
fn_out = sorted_pattern_output
print 'output_file:', fn_out
# merge files from different processors
tmp_file = "tmp_%d" % (rnd_nr2)
print 'debug mergepattern', merge_pattern
os.system("cat %s* > %s" % (merge_pattern, tmp_file))
# sort according to cell id
os.system("sort -gk %d %s > %s" % (sort_idx, tmp_file, fn_out))
os.system("rm %s" % (tmp_file))
if __name__ == '__main__':
info_txt = \
"""
Usage:
python MergeSpikeFiles.py [FOLDER] [CELLTYPE]
or
python MergeSpikeFiles.py [FOLDER] [CELLTYPE] [PATTERN_NUMBER]
"""
# assert (len(sys.argv) > 2), 'ERROR: folder and cell_type not given\n' + info_txt
# try:
# folder = sys.argv[1]
# params_fn = os.path.abspath(folder) + '/Parameters/simulation_parameters.json'
# param_tool = simulation_parameters.global_parameters(params_fn=params_fn)
# except:
# param_tool = simulation_parameters.global_parameters()
fparam = 'Test/Parameters/simulation_parameters.json'
f = open(fparam, 'r')
params = json.load(f)
# params = param_tool.params
cell_types_volt = ['d1', 'd2', 'actions']
print 'nstates ', params['n_states'], 'nactions ', params['n_actions']
MS = MergeSpikefiles(params)
for cell_type in cell_types_volt:
print 'Merging voltmeter data file for %s ' % (cell_type)
print 'Merging voltmeter recordings file for %s ' % (cell_type)
for naction in range(params['n_actions']):
merge_pattern = params['spiketimes_folder'] + params['%s_volt_fn' % cell_type] + str(naction)
output_fn = params['spiketimes_folder'] + str(naction) + params['%s_volt_fn_merged' % cell_type]
MS.merge_spiketimes_files(merge_pattern, output_fn)
# need to add merging for rp and rew volt data
cell_type = 'rew'
print 'Merging voltmeter recordings file for %s ' % (cell_type)
merge_pattern = params['spiketimes_folder'] + params['%s_volt_fn' % cell_type]
output_fn = params['spiketimes_folder'] + params['%s_volt_fn_merged' % cell_type]
MS.merge_spiketimes_files(merge_pattern, output_fn)