Skip to content
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

Aligning robustICA with current Main + #5

Merged
merged 35 commits into from
Aug 30, 2024
Merged
Changes from 1 commit
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
62e15ab
Limit current adaptive mask method to brain mask (#1060)
tsalo Apr 12, 2024
4e091fd
Update nilearn requirement from <=0.10.3,>=0.7 to >=0.7,<=0.10.4 (#1077)
dependabot[bot] Apr 16, 2024
ee714f3
Add adaptive mask plot to report (#1073)
tsalo Apr 16, 2024
49978ca
Update scikit-learn requirement (#1075)
dependabot[bot] Apr 16, 2024
953aa65
Update pandas requirement from <=2.2.1,>=2.0 to >=2.0,<=2.2.2 (#1076)
dependabot[bot] Apr 16, 2024
5835d3a
Update bokeh requirement from <=3.4.0,>=1.0.0 to >=1.0.0,<=3.4.1 (#1078)
dependabot[bot] Apr 16, 2024
461bc38
Load user-defined mask as expected by plot_adaptive_mask (#1079)
mvdoc Apr 17, 2024
35a26dd
DOC desc-optcomDenoised -> desc-denoised (#1080)
mvdoc Apr 18, 2024
1660435
docs: add mvdoc as a contributor for code, bug, and doc (#1082)
allcontributors[bot] Apr 18, 2024
af5e99a
Identify the last good echo in adaptive mask instead of sum of good e…
tsalo Apr 18, 2024
0f6cbe1
Output RMSE map and time series for decay model fit (#1044)
tsalo Apr 29, 2024
12aea7f
minimum nilearn 0.10.3 (#1094)
handwerkerd May 7, 2024
2e9831b
Use nearest-neighbors interpolation in `plot_component` (#1098)
tsalo May 22, 2024
dd552dc
Update scipy requirement from <=1.13.0,>=1.2.0 to >=1.2.0,<=1.13.1 (#…
dependabot[bot] May 28, 2024
7ca9c27
Update scikit-learn requirement from <=1.4.2,>=0.21 to >=0.21,<=1.5.0…
dependabot[bot] May 28, 2024
daeaf28
Update numpy requirement from <=1.26.4,>=1.16 to >=1.16,<=2.0.0 (#1104)
dependabot[bot] Jul 2, 2024
323dd59
Filter out non-diagonal affine warning (#1103)
tsalo Jul 3, 2024
18081c6
Update bokeh requirement from <=3.4.1,>=1.0.0 to <=3.5.0,>=3.5.0 (#1109)
dependabot[bot] Jul 8, 2024
f3f4740
Update scikit-learn requirement from <=1.5.0,>=0.21 to <=1.5.1,>=1.5.…
dependabot[bot] Jul 10, 2024
8a7d282
Update scipy requirement from <=1.13.1,>=1.2.0 to <=1.14.0,>=1.14.0 (…
dependabot[bot] Jul 10, 2024
4b813e8
Update numpy requirement from <=2.0.0,>=1.16 to >=1.16,<=2.0.1 (#1112)
dependabot[bot] Jul 23, 2024
73542f5
Cleaning up installation instructions (#1113)
handwerkerd Jul 24, 2024
07611ec
Update bokeh requirement from <=3.5.0,>=1.0.0 to >=1.0.0,<=3.5.1 (#1116)
dependabot[bot] Jul 31, 2024
f3be8f9
Update list of multi-echo datasets (#1115)
tsalo Jul 31, 2024
c7df469
Generate metrics from external regressors using F stats (#1064)
handwerkerd Aug 5, 2024
18a408e
Link to the open-multi-echo-data website (#1117)
tsalo Aug 7, 2024
811b9fd
Refactor `metrics.dependence` module (#1088)
tsalo Aug 7, 2024
b215083
documentation and resource updates (#1114)
handwerkerd Aug 8, 2024
45c95ce
aligning adding-robustica with Main
handwerkerd Aug 13, 2024
8e6878f
Adding already requested changes
handwerkerd Aug 13, 2024
88fd148
fixed failing tests
handwerkerd Aug 16, 2024
a221e72
updated documentation in faq.rst
handwerkerd Aug 27, 2024
8622a9b
more documentation changes
handwerkerd Aug 29, 2024
419e9d4
Update docs/faq.rst
handwerkerd Aug 30, 2024
d29a91b
Update docs/faq.rst
handwerkerd Aug 30, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 63 additions & 0 deletions docs/faq.rst
Original file line number Diff line number Diff line change
Expand Up @@ -93,11 +93,74 @@ The TEDICA step may fail to converge if TEDPCA is either too strict
With updates to the ``tedana`` code, this issue is now rare, but it may happen
when preprocessing has not been applied to the data, or when improper steps have
been applied to the data (e.g. rescaling, nuisance regression).
I can also still happen when everything is seemingly correct
(see the answer to the next question).
If you are confident that your data have been preprocessed correctly prior to
applying tedana, and you encounter this problem, please submit a question to `NeuroStars`_.

.. _NeuroStars: https://neurostars.org

*********************************************************************************
[tedana] What is the right number of ICA components & what options let me get it?
*********************************************************************************

Part of the PCA step in ``tedana`` processing involves identifying the number of
components that contain meaningful signal.
The PCA components are then used to calculate the same number of ICA components.
The ``--tedpca`` option includes several options to identify the "correct" number
of PCA components.
``kundu`` and ``kundu-stabilize`` use several echo-based criteria to exclude PCA
components that are unlikely to contain T2* or S0 signal.
``mdl`` (conservative & fewest components), ``kic``,
& ``aic`` (liberal & more components) use `MAPCA`_.
Within the same general method, each uses a cost function to find a minimum
where more components no longer model meaningful variance.
For some datasets we see all methods fail and result in too few or too many components.
There is no consistent number of components or % variance explained to define the correct number.
The correct number of components will depend on the noise levels of the data.
For example, smaller voxels will results in more thermal noise and less total variance explained.
A dataset with more head motion artifacts will have more variance explained,
since more structured signal is within the head motion artifacts.
The clear failure cases are extreme. That is getting less than 1/5 the number of components
compared to time points or having nearly has many components as time point.
We are working on identifying why this happens and adding get better solutions.
Our current guess is that most of the above methods assume data are
independant and identically distributed (IID),
and signal leakage from in-slice and multi-slice accelleration may violate this assumption.

We have one option that is generally useful and is also a partial solution.
``--ica_method robustica`` will run `robustica`_.
This is a method that, for a given number of PCA components,
will repeated run ICA and identify components that are stable across iterations.
While running ICA multiple times will slow processing, as a general benefit,
this means that the ICA results are less sensitive to the initialization parameters,
computer hardware, and software versions.
This will result in better stability and replicability of ICA results.
Additionally, `robustica`_ almost always results in fewer components than initially prescripted,
since there are fewer stable components across interations than the total number of components.
This means, even if the initial PCA component estimate is a bit off,
the number of resulting robust ICA components will represent stable information in the data.
For a dataset where the PCA comoponent estimation methods are failing,
one could use ``--tedpca`` with a fixed integer for a constant number of components,
that is on the high end of typical for a study,
Lestropie marked this conversation as resolved.
Show resolved Hide resolved
and then `robustica`_ will reduce the number of components to only find stable information.
That said, of the fixed PCA component number is too high,
handwerkerd marked this conversation as resolved.
Show resolved Hide resolved
then the method will have too many unstable components,
and if the fixed PCA component number is too low, then there will be even fewer ICA components.
The number of ICA components is more consisent,
but is still sensitive to the intial number of PCA components.
For example, for a single dataset 60 PCA components might result in 46 stable ICA components,
while 55 PCA components might results in 43 stable ICA components.
We are still testing how these interact and give better recommendations and even more stable results.
At that point, ``--ica_method robustica`` might become the default setting,
but we still wanted to release this option to let users access it in its current form.
If users are having trouble with PCA component estimation failing on a dataset,
we recommend using robustica.
handwerkerd marked this conversation as resolved.
Show resolved Hide resolved


.. _MAPCA: https://github.com/ME-ICA/mapca
.. _robustica: https://github.com/CRG-CNAG/robustica

.. _manual classification:

********************************************************************************
Expand Down