Skip to content

Commit 2ac9a9f

Browse files
author
Ben Cipollini
committed
STY: linting parse_gifti_fast
1 parent 6f8d65b commit 2ac9a9f

File tree

1 file changed

+46
-29
lines changed

1 file changed

+46
-29
lines changed

nibabel/gifti/parse_gifti_fast.py

Lines changed: 46 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ def read_data_block(encoding, endian, ordering, datatype, shape, data):
3434
c = StringIO(data)
3535
da = np.loadtxt(c)
3636
da = da.astype(data_type_codes.type[datatype])
37-
# independent of the endianness
38-
return da
37+
return da # independent of the endianness
38+
3939
elif enclabel == 'B64BIN':
4040
# GIFTI_ENCODING_B64BIN
4141
dec = base64.b64decode(data.encode('ascii'))
@@ -44,6 +44,7 @@ def read_data_block(encoding, endian, ordering, datatype, shape, data):
4444
newarr = np.fromstring(dec, dtype=dt)
4545
if len(newarr.shape) != len(sh):
4646
newarr = newarr.reshape(sh, order=ord)
47+
4748
elif enclabel == 'B64GZ':
4849
# GIFTI_ENCODING_B64GZ
4950
# convert to bytes array for python 3.2
@@ -55,24 +56,28 @@ def read_data_block(encoding, endian, ordering, datatype, shape, data):
5556
newarr = np.fromstring(zdec, dtype=dt)
5657
if len(newarr.shape) != len(sh):
5758
newarr = newarr.reshape(sh, order=ord)
59+
5860
elif enclabel == 'External':
5961
# GIFTI_ENCODING_EXTBIN
6062
raise NotImplementedError("In what format are the external files?")
63+
6164
else:
6265
return 0
66+
6367
# check if we need to byteswap
6468
required_byteorder = gifti_endian_codes.byteorder[endian]
6569
if (required_byteorder in ('big', 'little') and
66-
required_byteorder != sys.byteorder):
70+
required_byteorder != sys.byteorder):
6771
newarr = newarr.byteswap()
6872
return newarr
6973

7074

7175
class GiftiImageParser(XmlImageParser):
7276

73-
def __init__(self, encoding=None, buffer_size=35000000):
77+
def __init__(self, encoding=None, buffer_size=35000000, verbose=0):
7478
super(GiftiImageParser, self).__init__(encoding=encoding,
75-
buffer_size=buffer_size)
79+
buffer_size=buffer_size,
80+
verbose=verbose)
7681

7782
# finite state machine stack
7883
self.fsm_state = []
@@ -98,40 +103,43 @@ def StartElementHandler(self, name, attrs):
98103
self.flush_chardata()
99104
if self.verbose > 0:
100105
print('Start element:\n\t', repr(name), attrs)
106+
101107
if name == 'GIFTI':
102108
# create gifti image
103109
self.img = GiftiImage()
104110
if 'Version' in attrs:
105111
self.img.version = attrs['Version']
106112
if 'NumberOfDataArrays' in attrs:
107113
self.expected_numDA = int(attrs['NumberOfDataArrays'])
108-
109114
self.fsm_state.append('GIFTI')
115+
110116
elif name == 'MetaData':
111117
self.fsm_state.append('MetaData')
112-
113118
# if this metadata tag is first, create self.img.meta
114119
if len(self.fsm_state) == 2:
115120
self.meta_global = GiftiMetaData()
116121
else:
117122
# otherwise, create darray.meta
118123
self.meta_da = GiftiMetaData()
124+
119125
elif name == 'MD':
120126
self.nvpair = GiftiNVPairs()
121127
self.fsm_state.append('MD')
128+
122129
elif name == 'Name':
123130
if self.nvpair is None:
124131
raise ExpatError
125-
else:
126-
self.write_to = 'Name'
132+
self.write_to = 'Name'
133+
127134
elif name == 'Value':
128135
if self.nvpair is None:
129136
raise ExpatError
130-
else:
131-
self.write_to = 'Value'
137+
self.write_to = 'Value'
138+
132139
elif name == 'LabelTable':
133140
self.lata = GiftiLabelTable()
134141
self.fsm_state.append('LabelTable')
142+
135143
elif name == 'Label':
136144
self.label = GiftiLabel()
137145
if "Index" in attrs:
@@ -147,6 +155,7 @@ def StartElementHandler(self, name, attrs):
147155
if "Alpha" in attrs:
148156
self.label.alpha = float(attrs["Alpha"])
149157
self.write_to = 'Label'
158+
150159
elif name == 'DataArray':
151160
self.da = GiftiDataArray()
152161
if "Intent" in attrs:
@@ -174,32 +183,35 @@ def StartElementHandler(self, name, attrs):
174183
self.da.ext_offset = attrs["ExternalFileOffset"]
175184
self.img.darrays.append(self.da)
176185
self.fsm_state.append('DataArray')
186+
177187
elif name == 'CoordinateSystemTransformMatrix':
178188
self.coordsys = GiftiCoordSystem()
179189
self.img.darrays[-1].coordsys = self.coordsys
180190
self.fsm_state.append('CoordinateSystemTransformMatrix')
191+
181192
elif name == 'DataSpace':
182193
if self.coordsys is None:
183194
raise ExpatError
184-
else:
185-
self.write_to = 'DataSpace'
195+
self.write_to = 'DataSpace'
196+
186197
elif name == 'TransformedSpace':
187198
if self.coordsys is None:
188199
raise ExpatError
189-
else:
190-
self.write_to = 'TransformedSpace'
200+
self.write_to = 'TransformedSpace'
201+
191202
elif name == 'MatrixData':
192203
if self.coordsys is None:
193204
raise ExpatError
194-
else:
195-
self.write_to = 'MatrixData'
205+
self.write_to = 'MatrixData'
206+
196207
elif name == 'Data':
197208
self.write_to = 'Data'
198209

199210
def EndElementHandler(self, name):
200211
self.flush_chardata()
201212
if self.verbose > 0:
202213
print('End element:\n\t', repr(name))
214+
203215
if name == 'GIFTI':
204216
if hasattr(self, 'expected_numDA') and self.expected_numDA != self.img.numDA:
205217
warnings.warn("Actual # of data arrays does not match "
@@ -208,6 +220,7 @@ def EndElementHandler(self, name):
208220
# remove last element of the list
209221
self.fsm_state.pop()
210222
# assert len(self.fsm_state) == 0
223+
211224
elif name == 'MetaData':
212225
self.fsm_state.pop()
213226
if len(self.fsm_state) == 1:
@@ -218,6 +231,7 @@ def EndElementHandler(self, name):
218231
else:
219232
self.img.darrays[-1].meta = self.meta_da
220233
self.meta_da = None
234+
221235
elif name == 'MD':
222236
self.fsm_state.pop()
223237
if self.meta_global is not None and self.meta_da is None:
@@ -226,28 +240,24 @@ def EndElementHandler(self, name):
226240
self.meta_da.data.append(self.nvpair)
227241
# remove reference
228242
self.nvpair = None
243+
229244
elif name == 'LabelTable':
230245
self.fsm_state.pop()
231246
# add labeltable
232247
self.img.labeltable = self.lata
233248
self.lata = None
249+
234250
elif name == 'DataArray':
235251
self.fsm_state.pop()
252+
236253
elif name == 'CoordinateSystemTransformMatrix':
237254
self.fsm_state.pop()
238255
self.coordsys = None
239-
elif name == 'DataSpace':
240-
self.write_to = None
241-
elif name == 'TransformedSpace':
242-
self.write_to = None
243-
elif name == 'MatrixData':
244-
self.write_to = None
245-
elif name == 'Name':
246-
self.write_to = None
247-
elif name == 'Value':
248-
self.write_to = None
249-
elif name == 'Data':
256+
257+
elif name in ['DataSpace', 'TransformedSpace', 'MatrixData',
258+
'Name', 'Value', 'Data']:
250259
self.write_to = None
260+
251261
elif name == 'Label':
252262
self.lata.labels.append(self.label)
253263
self.label = None
@@ -277,24 +287,30 @@ def flush_chardata(self):
277287
data = ''.join(self._char_blocks)
278288
# Reset the char collector
279289
self._char_blocks = None
290+
280291
# Process data
281292
if self.write_to == 'Name':
282293
data = data.strip()
283294
self.nvpair.name = data
295+
284296
elif self.write_to == 'Value':
285297
data = data.strip()
286298
self.nvpair.value = data
299+
287300
elif self.write_to == 'DataSpace':
288301
data = data.strip()
289302
self.coordsys.dataspace = xform_codes.code[data]
303+
290304
elif self.write_to == 'TransformedSpace':
291305
data = data.strip()
292306
self.coordsys.xformspace = xform_codes.code[data]
307+
293308
elif self.write_to == 'MatrixData':
294309
# conversion to numpy array
295310
c = StringIO(data)
296311
self.coordsys.xform = np.loadtxt(c)
297312
c.close()
313+
298314
elif self.write_to == 'Data':
299315
da_tmp = self.img.darrays[-1]
300316
da_tmp.data = read_data_block(da_tmp.encoding, da_tmp.endian,
@@ -303,13 +319,14 @@ def flush_chardata(self):
303319
# update the endianness according to the
304320
# current machine setting
305321
self.endian = gifti_endian_codes.code[sys.byteorder]
322+
306323
elif self.write_to == 'Label':
307324
self.label.label = data.strip()
308325

309326
@property
310327
def pending_data(self):
311328
" True if there is character data pending for processing "
312-
return not self._char_blocks is None
329+
return self._char_blocks is not None
313330

314331

315332
class Outputter(GiftiImageParser):

0 commit comments

Comments
 (0)