From 801b6b7c9c70cbef84738d397abaddfc62811c78 Mon Sep 17 00:00:00 2001
From: Paul McCarthy <pauldmccarthy@gmail.com>
Date: Thu, 3 May 2018 11:30:26 +0100
Subject: [PATCH] BF: Fixed invalid assumptions:     - not all atlases have a
 2mm version     - label atlas value does not correspond to its index in the  
     AtlasDescription.labels list.

---
 fsl/scripts/atlasq.py | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/fsl/scripts/atlasq.py b/fsl/scripts/atlasq.py
index bd2459490..502965767 100644
--- a/fsl/scripts/atlasq.py
+++ b/fsl/scripts/atlasq.py
@@ -275,17 +275,27 @@ def ohi(namespace):
         dumpatlases()
         return
 
+    # atlasquery always uses 2mm atlas
+    # versions when a 2mm is available
+    reses = [p[0] for p in atlasDesc.pixdims]
+
+    if 2 in reses: res = 2
+    else:          res = max(reses)
+
     # Mask query.
     if namespace.ohiMask is not None:
 
-        # atlasquery always uses 2mm atlas versions
         mask          = fslimage.Image(namespace.ohiMask)
-        labels, props = maskQuery(atlasDesc, [mask], resolution=2)
+        labels, props = maskQuery(atlasDesc, [mask], resolution=res)
         labels        = labels[0]
         props         = props[ 0]
 
         for lbl, prop in zip(labels, props):
-            lbl = atlasDesc.labels[int(lbl)].name
+
+            if atlasDesc.atlasType == 'probabilistic':
+                lbl = atlasDesc.labels[int(lbl)].name
+            elif atlasDesc.atlasType == 'label':
+                lbl = atlasDesc.find(value=int(lbl)).name
             print('{}:{:0.4f}'.format(lbl, prop))
 
     # Coordinate query
@@ -295,7 +305,7 @@ def ohi(namespace):
         labels, props = coordQuery(atlasDesc,
                                    [coord],
                                    False,
-                                   resolution=2)
+                                   resolution=res)
 
         labels = labels[0]
         props  = props[ 0]
-- 
GitLab