-
Notifications
You must be signed in to change notification settings - Fork 161
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[ENH] Clarify mask/dseg/probseg in common derivatives #489
[ENH] Clarify mask/dseg/probseg in common derivatives #489
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for this, Chris. I left a few comments - the most relevant is whether discrete segmentations should be limited to one class per sample (I think they shouldn't)
|
||
Common JSON metadata fields: | ||
A *segmentation* is a labeling of a spatial image with anatomical structures |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A *segmentation* is a labeling of a spatial image with anatomical structures | |
A *segmentation* is a labeling of the samples in a signal encoding a partition of interest | |
(e.g., the spatial delineation of anatomical structures in a 2D or 3D image) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the concept of segmentation is valid for 1D signals too. I'm fine having all of this under imaging for practical reasons (i.e., finalize a first release of derivatives), but the definition could/should be general (IMHO).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I find this suggestion really hard to parse.
Are there examples of 1D signals that will be segmented in neuroimaging that really motivates this? I can try to offer some wording that would cover those cases.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Epilepsy EEG markup where there are multiple different seizure types? This is coming from no familiarity with EEG BIDS whatsoever; it just came to mind.
Another might be a discrete fixel-based parcellation; but whether such data are 1D or 4D is a matter of perspective 🙃
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Most is good. But the use of the work "tissue" throughout the description of dseg might get confusing for those trying to apply the "dseg" suffix to the concept of "parcellations" where we are within one tissue class. (i.e. parcellations of the cortical surface, or aseg - parcellations of difference anatomical subcortical gray matter regions...).
Either we need to bring back "dparc" for parcellations...or come up with some more generic language than "tissue" ... what about "anatomical label" - referring to anatomical subdivisions, parcellations or tissue classes?
A *discrete segmentation* represents each structure with a unique integer | ||
label. | ||
A *probabilistic segmentation* represents each structure as values between | ||
0 and 1 (inclusive) at each location in the image, and one volume/frame per | ||
structure may be concatenated in a single file. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry, I'm gonna poke at this again 😬
This is technically another location where there are two different concepts getting mushed together (yes, that is the technical term):
- How are multiple segmented structures represented in a single file?
- Within a single volume
- Across volumes
- What data type is used to represent the segmentation?
- Binary
- Floating-point
For continuous / "probabilistic" data, storing multiple structures in a single volume is impossible, and so necessitates storing them across volumes.
For discrete data, we're accustomed to such being represented in a single volume / frame, using unique integer labels. This however enforces a one-to-one mapping between "elements" (e.g. voxels, vertices) and labels. In some instances (TractSeg comes to mind, as well as internal developments here), it's possible for one voxel to be included in multiple binary segmentations, at which point using unique integer labels does not work and one would need a 4D image.
(In a way this could be thought of as a 4D _mask.nii[.gz]
image as opposed to / in addition to a _dseg
image...)
I don't actually have a fixed opinion on what to do here (if anything); just seeing if the spec can be made to cover the fundamentals, rather than unnecessarily excluding anything that strays slightly from the current most common use cases.
See [Anatomical Labels](#anatomical-labels) for interpretation how integer values | ||
map to anatomical structures. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See [Anatomical Labels](#anatomical-labels) for interpretation how integer values | |
map to anatomical structures. | |
See [Anatomical Labels](#anatomical-labels) for interpretation regarding how | |
integer values map to anatomical structures. |
Similarly to a discrete, binary segmentation, the label key can be used to | ||
specify the corresponding structure. | ||
Probabilistic segmentations of brain tissue represent a single anatomical | ||
structure with values ranging from 0 to 1 in individual 3D volumes or across |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
structure with values ranging from 0 to 1 in individual 3D volumes or across | |
structure with values in the range `[0.0,1.0]` in individual 3D volumes or across |
(trying to indicate the the indicated range is inclusive of the bounding values)
This PR does the following:
mask
. I left it underdseg
to make the connection plain, as I don't think anything would be gained by moving it to mask (which has an ROI example already). This follows a brief discussion with @Lestropie and @edickie in https://github.com/bids-standard/bids-specification/pull/265#discussion_r432818644/https://github.com/bids-standard/bids-specification/pull/265#discussion_r432874774.Please read and let me know what you think.