Skip to content

24.0.1

Compare
Choose a tag to compare
@handwerkerd handwerkerd released this 10 May 03:19
· 40 commits to main since this release
12aea7f

Release Notes

Summary

  • We use bokeh to generate interactive figures in our html report. bokeh v 3.4.0 included some under-documented changes that caused tedana to crash and other problems with interactivity. This is fixed in #1068
  • We create an adaptive mask that lists the number of "good echoes" in each voxel. This is used so that a voxel with a single good echo is retained, but steps that include fitting values across echoes are limited to voxels with more good echoes. We noticed a few places where our description of how the adpative mask was created didn't match what was actually happening. These are bugs that needed to get fixed, but our underlying threshold are arbitrary. If these fixes are adversely affecting the retained voxels, please please up and we can examine tweaking thresholds or adding other options.
    • The adaptive mask uses percentiles across all voxel values as part of a threshold calculation. Only voxels within a a general or user-supplied mask were supposed to be used, but we were applying that mask after calculating percentiles. This is now fixed (#1060). In practice this will slightly raise thresholds and reduce the number of voxels that survive the adaptive mask. An example of how this could alter the mask is here.
    • The adapative mask was intended to store the last good echo. That is, a voxel where echoes 1 and 3 are above threshold should be 3 in the adaptive mask even if echo 2 was below threshold. The code was just counting the number of good echoes and storing 2. This is fixed in #1061
  • As part of the adaptive masking bug fixes we also added another option for calculating an adaptive mask ( #1057 ) that removes voxels where later echoes have larger values than earlier echoes. This might be useful for typical multi-echo data, but could cause problems if echoes are temporally close and there is a downward trend, but not every value decreases. As part of this addition, there is now a --masktype option where one can input dropout, our current and default method, decay this new method, or both.
  • We have also added several long-requested visualizations to our html report. Descriptions of the new visualizations are in our documentation The additions include:
    • A visualization of the adaptive mask to show which voxels are retained in the optimally combined image and which are used T2* and S0 fits as part of the ICA denoising process. #1073
    • Mean T2* and S0* fits are calculated and used as weights for the optimal combination of echoes. We were not calculating nor saving the fit quality. The root mean square error (RMSE) for this fits are now saved and presented in our report #1044
    • As part of previously added visualizations and these new visualizations, we belatedly realized we were using an parameter that was only added to nilearn in v0.10.3 so we've raised the minimum accepted version number for nilearn #1094

🐛 Bug Fixes

  • Limit current adaptive mask method to brain mask by @tsalo in #1060
  • Identify the last good echo in adaptive mask instead of sum of good echoes by @tsalo in #1061
  • FIX load user-defined mask as expected by plot_adaptive_mask by @mvdoc in #1079
  • Fix dynamic reports with bokeh 3.4.0 problems by @handwerkerd in #1068
  • minimum nilearn to 0.10.3 by @handwerkerd in #1094

Changes

  • Add --masktype option to control adaptive mask method by @tsalo in #1057
  • Add adaptive mask plot to report by @tsalo in #1073
  • Output RMSE map and time series for decay model fit by @tsalo in #1044
  • [DOC] desc-optcomDenoised -> desc-denoised by @mvdoc in #1080
  • docs: add mvdoc as a contributor for code, bug, and doc by @allcontributors in #1082

New Contributors

Full Changelog: 24.0.0...24.0.1