Skip to content

Commit 0f4c988

Browse files
committed
Merge remote branch 'stephan/gilabel' into main-master
* stephan/gilabel: ENH - Add missing test ENH - Adding test for gifti labeltable ENH - Supporting key attribute for Gifti labeltables
2 parents 2f30856 + 3951b58 commit 0f4c988

File tree

4 files changed

+100
-9
lines changed

4 files changed

+100
-9
lines changed

nibabel/gifti/gifti.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ def __init__(self):
7777
def get_labels_as_dict(self):
7878
self.labels_as_dict = {}
7979
for ele in self.labels:
80-
self.labels_as_dict[ele.index] = ele.label
80+
self.labels_as_dict[ele.key] = ele.label
8181
return self.labels_as_dict
8282

8383
def to_xml(self):
@@ -94,8 +94,8 @@ def to_xml(self):
9494
col += ' Blue="%s"' % str(ele.blue)
9595
if not ele.alpha is None:
9696
col += ' Alpha="%s"' % str(ele.alpha)
97-
lab = """\t<Label Index="%s"%s><![CDATA[%s]]></Label>\n""" % \
98-
(str(ele.index), col, ele.label)
97+
lab = """\t<Label Key="%s"%s><![CDATA[%s]]></Label>\n""" % \
98+
(str(ele.key), col, ele.label)
9999
res = res + lab
100100
res = res + "</LabelTable>\n"
101101
return res
@@ -105,7 +105,7 @@ def print_summary(self):
105105

106106

107107
class GiftiLabel(object):
108-
index = int
108+
key = int
109109
label = str
110110
# rgba
111111
# freesurfer examples seem not to conform
@@ -116,9 +116,9 @@ class GiftiLabel(object):
116116
blue = float
117117
alpha = float
118118

119-
def __init__(self, index = 0, label = '', red = None,\
119+
def __init__(self, key = 0, label = '', red = None,\
120120
green = None, blue = None, alpha = None):
121-
self.index = index
121+
self.key = key
122122
self.label = label
123123
self.red = red
124124
self.green = green

nibabel/gifti/parse_gifti_fast.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,9 @@ def StartElementHandler(self, name, attrs):
134134
elif name == 'Label':
135135
self.label = gi.GiftiLabel()
136136
if "Index" in attrs:
137-
self.label.index = int(attrs["Index"])
137+
self.label.key = int(attrs["Index"])
138+
if "Key" in attrs:
139+
self.label.key = int(attrs["Key"])
138140
if "Red" in attrs:
139141
self.label.red = float(attrs["Red"])
140142
if "Green" in attrs:

nibabel/gifti/tests/data/rh.aparc.annot.gii

Lines changed: 73 additions & 0 deletions
Large diffs are not rendered by default.

nibabel/gifti/tests/test_giftiio.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,10 @@
3333
DATA_FILE3 = pjoin(IO_DATA_PATH, 'label.gii')
3434
DATA_FILE4 = pjoin(IO_DATA_PATH, 'rh.shape.curv.gii')
3535
DATA_FILE5 = pjoin(IO_DATA_PATH, 'base64bin.gii')
36+
DATA_FILE6 = pjoin(IO_DATA_PATH, 'rh.aparc.annot.gii')
3637

37-
datafiles = [DATA_FILE1, DATA_FILE2, DATA_FILE3, DATA_FILE4, DATA_FILE5]
38-
numda = [2, 1, 1, 1, 2]
38+
datafiles = [DATA_FILE1, DATA_FILE2, DATA_FILE3, DATA_FILE4, DATA_FILE5, DATA_FILE6]
39+
numda = [2, 1, 1, 1, 2, 1]
3940

4041
DATA_FILE1_darr1 = np.array(
4142
[[-16.07201 , -66.187515, 21.266994],
@@ -66,6 +67,8 @@
6667
[-0.48011276],
6768
[-0.45624232],
6869
[-0.31101292]], dtype=np.float32)
70+
71+
DATA_FILE6_darr1 = np.array([9182740, 9182740, 9182740], dtype=np.float32)
6972

7073
DATA_FILE5_darr1 = np.array([[ 155.17539978, 135.58103943, 98.30715179],
7174
[ 140.33973694, 190.0491333 , 73.24776459],
@@ -181,3 +184,16 @@ def test_getbyintent():
181184
assert_equal(len(da), 0)
182185
assert_equal(da, [])
183186

187+
def test_labeltable():
188+
img = gi.read(DATA_FILE6)
189+
assert_array_almost_equal(img.darrays[0].data[:3], DATA_FILE6_darr1)
190+
assert_equal(len(img.labeltable.labels), 36)
191+
labeldict = img.labeltable.get_labels_as_dict()
192+
assert_true(labeldict.has_key(660700))
193+
assert_equal(labeldict[660700], u'entorhinal')
194+
assert_equal(img.labeltable.labels[1].key, 2647065)
195+
assert_equal(img.labeltable.labels[1].red, 0.0980392)
196+
assert_equal(img.labeltable.labels[1].green, 0.392157)
197+
assert_equal(img.labeltable.labels[1].blue, 0.156863)
198+
assert_equal(img.labeltable.labels[1].alpha, 1)
199+

0 commit comments

Comments
 (0)