-
Notifications
You must be signed in to change notification settings - Fork 6
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
64 gradient directions at b=1000mm/s^2 and 1 b0. #13
Comments
Nice, another typical more routine "clinical" quality acquisition. Thanks for providing this as feedback!
Once more I'm pleasantly surprised by the quality of the results, given the limited qualities of the dataset. Most observations are equivalent to those posted in several of the other feedback posts; the gist is that this looks very nice. It's great to see that this observation consistently reproduces for different peoples' datasets. 😎👍
The WM FOD-based DEC map looks also very good. The image is zoomed out a bit too far to appreciate the FOD overlay, but judging by the 3-tissue maps and the DEC map, I reckon these should be fine. The tractography further confirms this must be the case. As the documentation mentions, for the tractography specifically, it's always worth to play around a bit with the
Ok, this is a good opportunity to talk as well about the ranges of intensities in those tissue images; i.e. the ones you showed here. Typically (and after you've used So that's a long story (it's ok if you don't entirely understand it, don't worry) to explain why we call the direct result from 3-tissue CSD just "tissue compartments" or maybe "tissue signals", or similar. But the main point here is that they're not fractions of anything. And this is where the tissue signal fractions come in, which we can compute from the above tissue compartments (or signals). We do this simply by normalising the 3-tissue compartments/signals to sum to 1 (unity) on a voxel-wise basis; i.e. we divide each tissue signal by the sum of all 3 tissue compartments/signals. I might provide a few tools in the future to streamline this process a bit for convenience, but here's the simple version of it. I'll assume you've indeed named your current output
So this divides each tissue by the sum, but also sets the result to zero outside of the mask via So that's it! Don't forget you only get values within your (brain) mask of course, so if you later on go and study these maps in particular regions of interest, make sure your ROIs don't include voxels outside your (brain) mask; the above commands have set values to zero in those voxels. Feel free to post your
No worries at all, always happy to help! 😃 Cheers, |
Following up on your previous offer, do these average responses seem acceptable for my data set? I assume the wm_response is supposed to have multiple lines of data? I am specifically having issues with one of my participants. See the following for trouble shooting. Looking forward to your feedback |
Hi Daniel, I took a quick look at all files; I think I've got a pretty good idea where a problem might've popped up for this one participant. The question is more how it popped up; but we can backtrack our way to that. First things first:
Each response function file in your case should have 2 lines of numbers, related to b=0 and b=1000. Both GM and CSF response functions should only have 1 number per line (so 2 numbers overall). The WM response on the other hand, should have 6 numbers per line (this is equivalent to an lmax=10 anisotropic response function). That's all correct in your files. Other than that, I checked I also checked all 3 average response functions and computed their "signal decay metric" (SDM). You can see those values reported by Secondly, to briefly comment on
...for that one subject. So in principle, this doesn't matter, as you ran the SS3T-CSD with the average response functions of course. But! Apart from that fact, this is coincidentally a good check to see nothing unusual is wrong with that one participant's dataset on a large / global scale. So I've checked those 3 individual response functions as well. Long story short: everything I've described above about the average response functions, applies here as well. They all look great. The disk shape looks very similar to the average response function, and the SDM values of these individual response functions are respectively 0.6898, 0.978317 and 3.78922. Note also these are remarkably similar to the above SDM values, which is again great news. This hints that Finally, the main issue we'll have to dig a bit to uncover; your actual tissue signal fractions T_W, T_G and T_C for that one participant. So I've looked at the files, and I've got an idea what must've at least been the case at some point in your calculations. I observed the T_W image is either 0 or 'nan' in individual voxels, with a pattern of being So, putting all of this evidence together, there's mathematically only one conclusion: all intensities of Long story short: your
This must've been some technical hiccup at your end, I reckon, since (as I mentioned above), Can you check Cheers, |
Thank you for the feedback! And yes I went back and think there was an issue where the mrconvert command led to a truncated file. I re-ran everything and it looks like it all worked correctly! |
No worries; sounds great! As a small aside, because I realised (from your images) your dMRI spatial resolution is quite anisotropic and "low" along one dimension, you might be slightly challenged in pulling out (significant) effects from a hippocampus region; because it's a small and somewhat "intricate" structure. Both spatial alignment and partial voluming in general will pose the greatest challenges here. However, some of this can come down to your eventual regridding strategy. At the moment, I suppose you're either regridding your hippocampus ROI (segmentation) to the anisotropic resolution and grid of the dMRI final T_C (and other) maps? The other choice here is to regrid the T_C (and other) maps to the grid and spatial resolution of the hippocampus segmentation image. However, there's yet another alternative: you can also regrid your fully preprocessed dMRI data (to the grid/resolution of the hippocampus segmentation image) right before you perform SS3T-CSD. The difference between regridding the final maps (e.g. T_C) or regridding at a stage right before SS3T-CSD is that the latter has a slight benefit because SS3T-CSD comes with some constraints (e.g. non-negativity) that can effectively bring some extra information to the model outcome. This is not super-resolution in the classical sense, but technically, you could argue it actually is a form of super-resolution though. See also some of the documentation I wrote here: https://3tissue.github.io/doc/single-subject.html ...under the "Optional: upsampling or regridding" section. Of course this would increase the time to run SS3T-CSD accordingly (and likely drastically), as well as In any case, I'd recommend to just regard this as an aside. It might be that your current approach already provides you with a good result (and you're likely quite close to being able to assess that, now that you have the final maps). But if you feel you're missing out on a result and it might come down to the precision of all steps in the pipeline, then this alternate regridding strategy might make a difference. |
Thank you Thjis! That is actually extremely helpful. I recently applied 3 tissue CSD to this data set where I found significant FA and RD previously changes but found no TC,TG,or TW changes in the hippocampus measuring in the same space. However, I think I will try your proposed regridding approaches to the newly processed data and see if something shows up. My understanding now is I can’t simply use mregrid to 2 or 1.5, I have to regrid it to my hippocampal template. Currently I have been using ANTS to warp my hipp ROI from freesurfer to diffusion space. So I guess the best approach would be to first regrid dwi after processing (to what resolution? Vowel 1.5 in mrgrid?) and then warp ROI and then calculate SS3T and everything else? Thanks again for all this in depth guidance! |
No worries!
That would be quite odd indeed, unless the differences would be really only in fibre "geometry", i.e. angles of crossing, etc... where FA (and to a lesser extent RD) would be sensitive to this, but in the 3-tissue model this ends up in the shape of the WM FOD (not in the sizes of the TW, TG and TC signal fractions). But this would be very unusual, especially for this to show a relevant difference between populations... so I wouldn't bet this is the reality. To assess the full picture, it's always a good idea to make sure the same procedure is followed as much as possible fora all analyses. So in this case, if you're thinking of performing this spatial re-sampling to a different voxel size (e.g. that of your segmentations), it'd be good to essentially:
And then inspect those e.g. using box plots or similar to get an insight into the effects that might be present between groups. But in this way, those effects come from the same spatial resolution (resampling) and common ROI definition matching that. This will also rule out that any differences you observe for some, but not other, metrics aren't due to some kind of bias created by "inconsistent" processing... if that makes sense. 🙂
Different approaches are valid an possible, but since eventually the spatial resolution (and even exact spatial voxel grid!) will have to match between both so you can sample the relevant voxels for e.g. averaging, it makes sense to resample to a matching grid "from the start, or at the earliest opportunity. This avoids multiple resamplings, which each time decrease your precision more and more.
Ok, so the hippocampal ROIs are indeed already in "diffusion space": the ROIs match the corresponding anatomical structure in the diffusion data (which you can indeed check in However, I have the feeling (from your description) that you warped these ROIs not only to (what I would call) the diffusion MRI space, but also already resampled it to the dMRI grid and resolution... is that correct? That would mean your ROIs actually have quite poor precision, because your dMRI data has such anisotropic voxels. So what to do next, depends on your scenario: did you indeed resample the ROIs already to the dMRI grid? If you did indeed resample the ROIs, then the strategy would be to first upsample the dMRI data to a resolution of your choosing, e.g. 1.5 mm isotropic would be a reasonable choice. And then follow that up with what you did originally with ANTS for registering and warping/resampling the ROIs to the dMRI data, but do that fresh now, and warp/resample it to the new resampled dMRI data, which would have e.g. 1.5 mm isotropic resolution at this stage. However, if the above is not true (but I think it is true though, see below at my last comment!), and your warped ROIs do have their own isotropic and good resolution—let's just say for argument's sake that they'd have 1mm isotropic resolution—then we'd do something else. Actually, more or less the other way around then: you'd then just leave these warped ROIs with decent resolution and anatomical overlap with dMRI data as is... and regrid the dMRI data not to a "resolution of your choosing", but to the explicitly provided grid of the ROI image. You'd also do this using
So even though I summarised both approaches above separately, from this latter bit I'm more strongly even suspecting it's the first option that applies. So first regrid, and then apply all other steps for the ROIs "fresh", so it ends up on your newly defined grid. As to the resolution, as I mentioned above, I think 1.5mm isotropic is a reasonable choice. Finally, do you already have warps you'd used in ANTs before to warp ROIs to dMRI images? It might be worth to re-do the registration (I'm treating registration, which yields warps, and applying those warps as separate steps) to the upsampled data as well there; this might provide more precise alignment then too. In the end, this is what it's all about here: you want spatial precision, both in alignment and resolution, so the averaging in the ROI itself ends up being a precise measurement.
No worries! Yes, I appreciate there's a lot of (sometimes intricate) considerations to make, even for something "as simple as" a ROI-based analysis. The order of different steps (e.g. resampling) is often not focused on, but it can have a huge impact on precision of the final numbers that are pulled out and analysed. |
Thjis, one last question. What is the benefit of upsampling before performing tissue response estimation? When you upsample you can't gain any additional information since you only sample one data point for each voxel? How does upsampling to multiple voxels benefit the analysis process? |
Before tissue response function estimation specifically, there's not really any benefits, since the final response functions are merely an average over selected voxels. Here its best to stick to the original resolution even, for speed and to simply assess all "original" data samples as good as possible. There's more than enough voxels anyway at this step, since we're only after a single final WM, GM and CSF response. However (and I'm guessing maybe you were referring to this...?), to upsample before 3-tissue CSD, e.g. SS3T-CSD, specifically does have some benefit. Because...
...well, you don't gain new information at the upsampling step "itself": it only performs interpolation of nearby voxels to estimate the intensities at the new voxel positions (of e.g. a higher resolution grid). This is just a weighted linear combination of those intensities; that's all interpolation does. However, SS3T-CSD itself is not a linear process. The forward model is linear, but the inversion / fitting procedure in practice does bring in (non-linear) constraints: the non-negativity requirement of the full angular WM FOD, as well as non-negativity of GM and CSF compartments too. This might not seem much at first sight, but this is slightly deceiving: this is actually a very (very!) strong constraint that brings a lot of information to the table; mainly because the WM FOD is typically very sparse in the angular domain (so a lot of the angular domain is indeed "supposed to be" zero; which is in practice also realised by the non-negativity constraint!). This is partially also even the reason why SS3T-CSD specifically can effectively work in practice. So long story short here: the non-negativity constraint brings a lot of information in practice, if you look at the whole thing from an information theory point of view. This is why it can result in a valuable piece of new information even when applied to merely interpolated intensities; i.e. after upsampling the dMRI data. In practice, I found that this results in a sharper contrast between tissue types. Whereas just upsampling the WM-GM-CSF maps themselves would result in a typically blocky/blurry image, upsampling before SS3T-CSD and looking at those same WM-GM-CSF outputs at an upsampled resolution shows a very crisp contrast, with e.g. tissue boundaries that effectively follow expected patterns (e.g. for the WM-GM boundary). Technically, this is a form of super-resolution: you gain from additional spatial information via some prior knowledge. In practice, this case isn't typically referred to as super-resolution though, merely because that term is already more commonly used for different approaches to gain high spatial resolution from a set of lower resolution images with different anisotropic grid orientations. By the way, this effect has also been described before for FA maps from DTI; see this reference. While this is not an SS3T-CSD example, the principle shares some similarities (the DTI fit and FA computations are also not linear; so order of upsampling versus DTI fit / FA computation again makes a difference).
So well, you've got a higher resolution sharper contrast then. The impact depends on what you use that for. For things like fixel-based analyses or anything that requires registration (or population template building) the registration will benefit and yield in turn an increased precision result. Tractography might also benefit (although from my observations, that seems to be very limited though; this likely because tractography itself already has strong spatial assumptions of e.g. streamline smoothness due to constraints on angles between steps). Registration to other contrasts, or from other contrast to the diffusion data likely also benefits (i.e. aligning your ROIs to your data via an intermediate contrast!). And finally, within those ROIs with more intricate small details in shape (e.g. hippocampus for sure), you'll hopefully get a more precise sampling of voxels as well. Apart from analysis and precision motivations, visualisation of maps will of course also be sharper; which can help in visual (e.g. clinical) assessment of relevant contrasts. |
Hello Thjis, I recently used your technique in a manuscript looking at hippocampal diffusivity and a reviewer asked the following question... "With regard to 2.5 "Diffusion-Weighted Image Processing": I would be curious to know why the resolution was up-sampled to 1.5 mm isotropic voxels? " I know this is what you went into detail describing above however, I want to make sure I answer this in a thorough but also simple to follow manner. For reference, I used the technique before tissue response estimation. Any help you can provide is greatly appreciated! |
Hi Daniel, Great to hear! We get this question a lot in our own manuscripts, typically fixel-based analyses. The gist of the motivation for upsampling is to improve spatial (intensity) contrast. The strict requirement to achieve this is to upsample before 3-tissue CSD (it doesn't have to be before response function estimation though; but that makes little difference regardless). The non-linear constraints within the 3-tissue CSD technique essentially introduce information that "naive" interpolation itself could otherwise not achieve... so in principle it's a little bit of super-resolution (but not in the traditional sense). Since we got this question so often, as well as some of those other typical questions that pop up from at least one reviewer each time, we've done an effort to document some of these things in our recent somewhat massive fixel-based analysis review paper; currently available in preprint online here: https://osf.io/zu8fv/ . While I of course recommend a full read (for your enjoyment 😉 ), the bit you're looking for is in the supplemental materials, more specifically in Supplementary Document 1 (fixel-based analysis pipeline steps). The review paper is going through review itself at the moment, but for the time being it might be helpful to use the preprint as a citation to support / justify e.g. the upsampling step. Hope that helps! Cheers, |
Here is some feedback on 64 gradient directions (b=1000mm/s^2) and 1 b0 data I have without the opposite phase encoding direction.
See below the gm_norm, wm_norm, and csf_norm data.
Also, see the dec.mif data and tractography data. I have some additional types of scans to give feedback on soon!
I would like to figure out how to normalize the gm, wm, and csf like signal into one image so that I can get an image with the percent (CSF, gm, and wm) to run a group-wise analysis within the hippocampus if possible. Any suggestions for next steps on how to run such an analysis? Thank you again for all the help so far and I look forward to hearing your thoughts on the data I have shared!
The text was updated successfully, but these errors were encountered: