thenineteen / Semiology-Visualisation-Tool

Data driven 3D brain visualisation of semiology. Semiology to anatomy translator based on over 4600 patients from 309 peer-reviewed articles.
MIT License
9 stars 6 forks source link

Need visualisation support for cingulate white matter #184

Closed thenineteen closed 3 years ago

thenineteen commented 4 years ago

Related to #181 where the central cerebellar structures that did not lateralise, needed to be hard coded.

In this case, right cingulate WM and left cingulate WM, despite lateralising, do not appear on the visualisation (but do on the table):

image

thenineteen commented 4 years ago

this issue was brought to my attention during calibration #75

thenineteen commented 4 years ago

NB these correspond to GIF parecellation #s 83 (right) and 91 (left)

fepegar commented 4 years ago

Can you provide a way to reproduce this?

thenineteen commented 4 years ago

Can you provide a way to reproduce this?

open branch Mappings Calibration starting at v 1.1.0

then run slicer and load the data

then add custom semiology map cing 2

fepegar commented 4 years ago

So it doesn't happen on master?

thenineteen commented 4 years ago

So it doesn't happen on master?

ofcourse this problem does occur in master, I've just kept a cleaner copy of only the data in master, so the custom semiology map cing 2 won't show anything. This is a made up single datapoint which only maps to the cingulate white matter. If it doesn't work here, it doesn't work in any branch.

fepegar commented 4 years ago

For reference, I get No query_semiology results for term "map cing 2" when I tried on master.

Also, the correct branch name is Mappings-Calibration-starting-at-v-1.1.0, not Mappings Calibration starting at v 1.1.0.

fepegar commented 4 years ago

Ok so the reason for this is that those structures don't exist in our GIF parcellation for two reasons:

  1. They're not on the list of included structures
  2. Even if they were, it looks like the GIF algorithm didn't segment those from the MNI template we're using. The parcellation is here. I don't think it typically does, anyway. Maybe we can use one of the manually-segmented brains in the GIF database, but 1) I doubt they include the regions and 2) we would lose the anatomical generality given by the template. I suspect they just merged the Neuromorphometrics labels for WM into right and left cerebral white matter.
thenineteen commented 4 years ago

Ok so the reason for this is that those structures don't exist in our GIF parcellation for two reasons:

  1. They're not on the list of included structures
  2. Even if they were, it looks like the GIF algorithm didn't segment those from the MNI template we're using. The parcellation is here. I don't think it typically does, anyway. Maybe we can use one of the manually-segmented brains in the GIF database, but 1) I doubt they include the regions and 2) we would lose the anatomical generality given by the template. I suspect they just merged the Neuromorphometrics labels for WM into right and left cerebral white matter.
  1. Can we include these on the list of included structures?

  2. I don't understand this explanation. What do you mean? Also the cing white matter are a very specific subset region of the cerebral WM, I'd be surprised if they were merged

fepegar commented 4 years ago

Including them won't have any effect. The fact that these structures are in the list is maybe because they were in the Neuromorphometrics atlas, which was used to manually segment some MR images. But maybe they didn't segment all the structures in the atlas. GIF uses these manual segmentations to perform the automatic one (segmentation = parcellation), therefore I'm pretty sure you'll never see them as outputs of GIF.

thenineteen commented 4 years ago

ok - so can I check, how many segmentations does GIF have per each side of the brain in total?

fepegar commented 4 years ago

In Slicer:

>>> import numpy as np
>>> labels = np.unique(slicer.util.array('MNI_152_gif'))
>>> names = [slicer.semiologyVisualisation.parcellation.getNameFromLabel(l) for l in labels]
>>> from collections import defaultdict
>>> count = defaultdict(int)
>>> for name in names:
...     if 'Left' in name:
...         count['Left'] += 1
...     elif 'Right' in name:
...         count['Right'] += 1
...     else:
...         count['Other'] += 1
... 
>>> count
defaultdict(<class 'int'>, {'Other': 12, 'Right': 65, 'Left': 65})
fepegar commented 4 years ago

This is after removing some structures such as white matter, etc., as I said earlier (https://github.com/thenineteen/Semiology-Visualisation-Tool/issues/184#issuecomment-681841361).

thenineteen commented 3 years ago

white matter not significant for cortical localisation, but labelled as enhancement as more accurately reflects database