@@ -29,8 +29,7 @@ class SilencedPeriodsRecording(BasePreprocessor):
29
29
- 'noise': The periods are filled with a gaussion noise that has the
30
30
same variance that the one in the recordings, on a per channel
31
31
basis
32
- **random_chunk_kwargs
33
- Random seed for random chunk, by default None
32
+ **random_chunk_kwargs: Keyword arguments for `spikeinterface.core.get_random_data_chunk()` function
34
33
35
34
Returns
36
35
-------
@@ -52,6 +51,8 @@ def __init__(self, recording, list_periods, mode='zeros',
52
51
list_periods = [list_periods ]
53
52
54
53
# some checks
54
+ assert mode in available_modes , f"mode { mode } is not an available mode: { available_modes } "
55
+
55
56
assert isinstance (list_periods , list ), "'list_periods' must be a list (one per segment)"
56
57
assert len (list_periods ) == num_seg , "'list_periods' must have the same length as the number of segments"
57
58
assert all (isinstance (list_periods [i ], (list , np .ndarray )) for i in range (num_seg )), \
@@ -60,9 +61,8 @@ def __init__(self, recording, list_periods, mode='zeros',
60
61
for periods in list_periods :
61
62
if len (periods ) > 0 :
62
63
assert np .all (np .diff (np .array (periods ), axis = 1 ) > 0 ), "t_stops should be larger than t_starts"
63
- assert all (e < s for (_ , e ), (s , _ ) in zip (periods , periods [1 :])), "Intervals should not overlap"
64
-
65
- assert mode in available_modes , f"mode { mode } is not an available mode: { available_modes } "
64
+ assert np .all (periods [i ][1 ] < periods [i + 1 ][0 ] for i in np .arange (len (periods ) - 1 )), \
65
+ "Intervals should not overlap"
66
66
67
67
if mode in ['noise' ]:
68
68
noise_levels = get_noise_levels (recording , return_scaled = False , concatenated = True , ** random_chunk_kwargs )
@@ -73,7 +73,7 @@ def __init__(self, recording, list_periods, mode='zeros',
73
73
for seg_index , parent_segment in enumerate (recording ._recording_segments ):
74
74
periods = list_periods [seg_index ]
75
75
periods = np .asarray (periods , dtype = 'int64' )
76
- periods = np .sort (self . periods , axis = 0 )
76
+ periods = np .sort (periods , axis = 0 )
77
77
rec_segment = SilencedPeriodsRecordingSegment (parent_segment , periods , mode , noise_levels )
78
78
self .add_recording_segment (rec_segment )
79
79
@@ -84,7 +84,6 @@ def __init__(self, recording, list_periods, mode='zeros',
84
84
class SilencedPeriodsRecordingSegment (BasePreprocessorSegment ):
85
85
86
86
def __init__ (self , parent_recording_segment , periods , mode , noise_levels ):
87
-
88
87
BasePreprocessorSegment .__init__ (self , parent_recording_segment )
89
88
self .periods = periods
90
89
self .mode = mode
@@ -103,22 +102,23 @@ def get_traces(self, start_frame, end_frame, channel_indices):
103
102
104
103
if len (self .periods ) > 0 :
105
104
new_interval = np .array ([start_frame , end_frame ])
106
- lower_index = np .searchsorted (self .periods [:,1 ], new_interval [0 ])
107
- upper_index = np .searchsorted (self .periods [:,0 ], new_interval [1 ])
105
+ lower_index = np .searchsorted (self .periods [:, 1 ], new_interval [0 ])
106
+ upper_index = np .searchsorted (self .periods [:, 0 ], new_interval [1 ])
108
107
109
108
if upper_index > lower_index :
110
109
111
- intersection = self .periods [lower_index :upper_index ]
110
+ periods_in_interval = self .periods [lower_index :upper_index ]
112
111
113
- for i in intersection :
112
+ for period in periods_in_interval :
114
113
115
- onset = max (0 , i [0 ] - start_frame )
116
- offset = min (i [1 ] - start_frame , end_frame )
114
+ onset = max (0 , period [0 ] - start_frame )
115
+ offset = min (period [1 ] - start_frame , end_frame )
117
116
118
117
if self .mode == 'zeros' :
119
118
traces [onset :offset , :] = 0
120
119
elif self .mode == 'noise' :
121
- traces [onset :offset , :] = self .noise_levels [channel_indices ] * np .random .randn (offset - onset , num_channels )
120
+ traces [onset :offset , :] = self .noise_levels [channel_indices ] * \
121
+ np .random .randn (offset - onset , num_channels )
122
122
123
123
return traces
124
124
0 commit comments