@@ -177,9 +177,10 @@ def plot_carpet(func, atlaslabels=None, detrend=True, nskip=0, size=(950, 800),
177
177
lidx = 3
178
178
index_final = bm .index_offset + bm .index_count
179
179
seg [bm .index_offset :index_final ] = lidx
180
-
181
180
assert len (seg [seg < 1 ]) == 0 , "Unassigned labels"
182
181
182
+ # Decimate data
183
+ data , seg = _decimate_data (data , seg , size )
183
184
# preserve as much continuity as possible
184
185
order = seg .argsort (kind = 'stable' )
185
186
@@ -207,14 +208,8 @@ def plot_carpet(func, atlaslabels=None, detrend=True, nskip=0, size=(950, 800),
207
208
# Apply lookup table
208
209
seg = lut [oseg .astype (int )]
209
210
210
- p_dec = 1 + data .shape [0 ] // size [0 ]
211
- if p_dec :
212
- data = data [::p_dec , :]
213
- seg = seg [::p_dec ]
214
- t_dec = 1 + data .shape [1 ] // size [1 ]
215
- if t_dec :
216
- data = data [:, ::t_dec ]
217
-
211
+ # Decimate data
212
+ data , seg = _decimate_data (data , seg , size )
218
213
# Order following segmentation labels
219
214
order = np .argsort (seg )[::- 1 ]
220
215
# Set colormap
@@ -840,3 +835,26 @@ def _get_tr(img):
840
835
except AttributeError :
841
836
return img .header .get_zooms ()[- 1 ]
842
837
raise RuntimeError ("Could not extract TR - unknown data structure type" )
838
+
839
+
840
+ def _decimate_data (data , seg , size ):
841
+ """Decimate timeseries data
842
+
843
+ Parameters
844
+ ----------
845
+ data : ndarray
846
+ 2 element array of timepoints and samples
847
+ seg : ndarray
848
+ 1 element array of samples
849
+ size : tuple
850
+ 2 element for P/T decimation
851
+
852
+ """
853
+ p_dec = 1 + data .shape [0 ] // size [0 ]
854
+ if p_dec :
855
+ data = data [::p_dec , :]
856
+ seg = seg [::p_dec ]
857
+ t_dec = 1 + data .shape [1 ] // size [1 ]
858
+ if t_dec :
859
+ data = data [:, ::t_dec ]
860
+ return data , seg
0 commit comments