Multi-Echo Denoising with tedana

Multi-Echo Denoising with tedana#

In this analysis tutorial, we will use tedana [DuPre et al., 2021] to perform multi-echo denoising.

Specifically, we will use tedana.workflows.tedana_workflow().

import json
import os
from glob import glob
from pprint import pprint

import pandas as pd
from IPython.display import HTML, display
from repo2data.repo2data import Repo2Data
from tedana import workflows

# Install the data if running locally, or point to cached data if running on neurolibre
DATA_REQ_FILE = os.path.join("../binder/data_requirement.json")

# Download data
repo2data = Repo2Data(DATA_REQ_FILE)
data_path = repo2data.install()
data_path = os.path.abspath(data_path[0])
---- repo2data starting ----
/opt/hostedtoolcache/Python/3.10.16/x64/lib/python3.10/site-packages/repo2data
Config from file :
../binder/data_requirement.json
Destination:
./../data/multi-echo-data-analysis

Info : ./../data/multi-echo-data-analysis already downloaded
/opt/hostedtoolcache/Python/3.10.16/x64/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html
  from .autonotebook import tqdm as notebook_tqdm
func_dir = os.path.join(data_path, "func/")
data_files = [
    os.path.join(
        func_dir,
        "sub-04570_task-rest_echo-1_space-scanner_desc-partialPreproc_bold.nii.gz",
    ),
    os.path.join(
        func_dir,
        "sub-04570_task-rest_echo-2_space-scanner_desc-partialPreproc_bold.nii.gz",
    ),
    os.path.join(
        func_dir,
        "sub-04570_task-rest_echo-3_space-scanner_desc-partialPreproc_bold.nii.gz",
    ),
    os.path.join(
        func_dir,
        "sub-04570_task-rest_echo-4_space-scanner_desc-partialPreproc_bold.nii.gz",
    ),
]
echo_times = [12.0, 28.0, 44.0, 60.0]
mask_file = os.path.join(
    func_dir, "sub-04570_task-rest_space-scanner_desc-brain_mask.nii.gz"
)
confounds_file = os.path.join(
    func_dir, "sub-04570_task-rest_desc-confounds_timeseries.tsv"
)

out_dir = os.path.join(data_path, "tedana")
workflows.tedana_workflow(
    data_files,
    echo_times,
    out_dir=out_dir,
    mask=mask_file,
    prefix="sub-04570_task-rest_space-scanner",
    fittype="curvefit",
    tedpca="mdl",
    verbose=True,
    gscontrol=["mir"],
)
Hide code cell output
INFO     tedana:tedana_workflow:569 Using output directory: /home/runner/work/multi-echo-data-analysis/multi-echo-data-analysis/data/multi-echo-data-analysis/tedana
INFO     tedana:tedana_workflow:587 Initializing and validating component selection tree
WARNING  component_selector:validate_tree:141 Decision tree includes fields that are not used or logged ['_comment']
INFO     component_selector:__init__:326 Performing component selection with tedana_orig_decision_tree
INFO     component_selector:__init__:327 Very similar to the decision tree designed by Prantik Kundu
INFO     tedana:tedana_workflow:590 Loading input data: ['/home/runner/work/multi-echo-data-analysis/multi-echo-data-analysis/data/multi-echo-data-analysis/func/sub-04570_task-rest_echo-1_space-scanner_desc-partialPreproc_bold.nii.gz', '/home/runner/work/multi-echo-data-analysis/multi-echo-data-analysis/data/multi-echo-data-analysis/func/sub-04570_task-rest_echo-2_space-scanner_desc-partialPreproc_bold.nii.gz', '/home/runner/work/multi-echo-data-analysis/multi-echo-data-analysis/data/multi-echo-data-analysis/func/sub-04570_task-rest_echo-3_space-scanner_desc-partialPreproc_bold.nii.gz', '/home/runner/work/multi-echo-data-analysis/multi-echo-data-analysis/data/multi-echo-data-analysis/func/sub-04570_task-rest_echo-4_space-scanner_desc-partialPreproc_bold.nii.gz']
INFO     io:__init__:155 Generating figures directory: /home/runner/work/multi-echo-data-analysis/multi-echo-data-analysis/data/multi-echo-data-analysis/tedana/figures
INFO     tedana:tedana_workflow:666 Using user-defined mask
INFO     utils:make_adaptive_mask:198 Echo-wise intensity thresholds for adaptive mask: [258.33994278 180.98638476 134.6796175   91.51006253]
WARNING  utils:make_adaptive_mask:227 734 voxels in user-defined mask do not have good signal. Removing voxels from mask.
INFO     tedana:tedana_workflow:716 Computing T2* map
2-echo monoexponential:   0%|          | 0/2224 [00:00<?, ?it/s]
2-echo monoexponential:   3%|▎         | 63/2224 [00:00<00:03, 629.38it/s]
2-echo monoexponential:   7%|▋         | 147/2224 [00:00<00:02, 746.69it/s]
2-echo monoexponential:  10%|█         | 224/2224 [00:00<00:02, 753.46it/s]
2-echo monoexponential:  14%|█▍        | 306/2224 [00:00<00:02, 775.68it/s]
2-echo monoexponential:  17%|█▋        | 388/2224 [00:00<00:02, 786.70it/s]
2-echo monoexponential:  21%|██        | 472/2224 [00:00<00:02, 802.35it/s]
2-echo monoexponential:  25%|██▍       | 554/2224 [00:00<00:02, 806.93it/s]
2-echo monoexponential:  29%|██▊       | 635/2224 [00:00<00:01, 794.87it/s]
2-echo monoexponential:  32%|███▏      | 715/2224 [00:00<00:01, 791.68it/s]
2-echo monoexponential:  36%|███▌      | 798/2224 [00:01<00:01, 802.90it/s]
2-echo monoexponential:  40%|███▉      | 879/2224 [00:01<00:01, 798.73it/s]
2-echo monoexponential:  43%|████▎     | 959/2224 [00:01<00:01, 791.85it/s]
2-echo monoexponential:  47%|████▋     | 1039/2224 [00:01<00:01, 791.86it/s]
2-echo monoexponential:  50%|█████     | 1121/2224 [00:01<00:01, 797.14it/s]
2-echo monoexponential:  54%|█████▍    | 1201/2224 [00:01<00:01, 786.41it/s]
2-echo monoexponential:  58%|█████▊    | 1281/2224 [00:01<00:01, 788.81it/s]
2-echo monoexponential:  61%|██████    | 1361/2224 [00:01<00:01, 790.40it/s]
2-echo monoexponential:  65%|██████▍   | 1441/2224 [00:01<00:00, 786.02it/s]
2-echo monoexponential:  68%|██████▊   | 1522/2224 [00:01<00:00, 791.22it/s]
2-echo monoexponential:  72%|███████▏  | 1605/2224 [00:02<00:00, 801.46it/s]
2-echo monoexponential:  76%|███████▌  | 1686/2224 [00:02<00:00, 795.82it/s]
2-echo monoexponential:  79%|███████▉  | 1767/2224 [00:02<00:00, 799.50it/s]
2-echo monoexponential:  83%|████████▎ | 1848/2224 [00:02<00:00, 801.93it/s]
2-echo monoexponential:  87%|████████▋ | 1931/2224 [00:02<00:00, 810.18it/s]
2-echo monoexponential:  91%|█████████ | 2014/2224 [00:02<00:00, 813.90it/s]
2-echo monoexponential:  94%|█████████▍| 2096/2224 [00:02<00:00, 796.46it/s]
2-echo monoexponential:  98%|█████████▊| 2176/2224 [00:02<00:00, 781.35it/s]
2-echo monoexponential: 100%|██████████| 2224/2224 [00:02<00:00, 789.88it/s]

3-echo monoexponential:   0%|          | 0/1092 [00:00<?, ?it/s]
3-echo monoexponential:   4%|▍         | 49/1092 [00:00<00:02, 486.84it/s]
3-echo monoexponential:   9%|▉         | 101/1092 [00:00<00:01, 503.76it/s]
3-echo monoexponential:  14%|█▍        | 155/1092 [00:00<00:01, 517.62it/s]
3-echo monoexponential:  19%|█▉        | 208/1092 [00:00<00:01, 521.19it/s]
3-echo monoexponential:  24%|██▍       | 261/1092 [00:00<00:01, 520.39it/s]
3-echo monoexponential:  29%|██▉       | 314/1092 [00:00<00:01, 517.13it/s]
3-echo monoexponential:  34%|███▎      | 366/1092 [00:00<00:01, 515.37it/s]
3-echo monoexponential:  38%|███▊      | 418/1092 [00:00<00:01, 507.94it/s]
3-echo monoexponential:  43%|████▎     | 472/1092 [00:00<00:01, 515.06it/s]
3-echo monoexponential:  48%|████▊     | 525/1092 [00:01<00:01, 519.08it/s]
3-echo monoexponential:  53%|█████▎    | 577/1092 [00:01<00:01, 508.57it/s]
3-echo monoexponential:  58%|█████▊    | 630/1092 [00:01<00:00, 513.71it/s]
3-echo monoexponential:  62%|██████▏   | 682/1092 [00:01<00:00, 513.66it/s]
3-echo monoexponential:  67%|██████▋   | 734/1092 [00:01<00:00, 510.65it/s]
3-echo monoexponential:  72%|███████▏  | 786/1092 [00:01<00:00, 503.97it/s]
3-echo monoexponential:  77%|███████▋  | 838/1092 [00:01<00:00, 508.23it/s]
3-echo monoexponential:  82%|████████▏ | 890/1092 [00:01<00:00, 508.70it/s]
3-echo monoexponential:  86%|████████▋ | 944/1092 [00:01<00:00, 516.99it/s]
3-echo monoexponential:  91%|█████████ | 996/1092 [00:01<00:00, 515.71it/s]
3-echo monoexponential:  96%|█████████▌| 1048/1092 [00:02<00:00, 516.37it/s]
3-echo monoexponential: 100%|██████████| 1092/1092 [00:02<00:00, 513.57it/s]

4-echo monoexponential:   0%|          | 0/20176 [00:00<?, ?it/s]
4-echo monoexponential:   0%|          | 52/20176 [00:00<00:38, 518.20it/s]
4-echo monoexponential:   1%|          | 107/20176 [00:00<00:37, 535.60it/s]
4-echo monoexponential:   1%|          | 166/20176 [00:00<00:35, 557.99it/s]
4-echo monoexponential:   1%|          | 227/20176 [00:00<00:34, 576.49it/s]
4-echo monoexponential:   1%|▏         | 285/20176 [00:00<00:34, 572.53it/s]
4-echo monoexponential:   2%|▏         | 346/20176 [00:00<00:33, 584.51it/s]
4-echo monoexponential:   2%|▏         | 406/20176 [00:00<00:33, 587.85it/s]
4-echo monoexponential:   2%|▏         | 465/20176 [00:00<00:34, 577.00it/s]
4-echo monoexponential:   3%|▎         | 526/20176 [00:00<00:33, 585.43it/s]
4-echo monoexponential:   3%|▎         | 585/20176 [00:01<00:33, 584.58it/s]
4-echo monoexponential:   3%|▎         | 644/20176 [00:01<00:33, 579.52it/s]
4-echo monoexponential:   3%|▎         | 702/20176 [00:01<00:33, 579.51it/s]
4-echo monoexponential:   4%|▍         | 762/20176 [00:01<00:33, 583.87it/s]
4-echo monoexponential:   4%|▍         | 822/20176 [00:01<00:33, 584.25it/s]
4-echo monoexponential:   4%|▍         | 883/20176 [00:01<00:32, 589.71it/s]
4-echo monoexponential:   5%|▍         | 944/20176 [00:01<00:32, 593.97it/s]
4-echo monoexponential:   5%|▍         | 1004/20176 [00:01<00:33, 566.81it/s]
4-echo monoexponential:   5%|▌         | 1061/20176 [00:01<00:33, 567.34it/s]
4-echo monoexponential:   6%|▌         | 1121/20176 [00:01<00:33, 575.58it/s]
4-echo monoexponential:   6%|▌         | 1181/20176 [00:02<00:32, 581.21it/s]
4-echo monoexponential:   6%|▌         | 1240/20176 [00:02<00:32, 582.39it/s]
4-echo monoexponential:   6%|▋         | 1304/20176 [00:02<00:31, 597.80it/s]
4-echo monoexponential:   7%|▋         | 1368/20176 [00:02<00:30, 607.74it/s]
4-echo monoexponential:   7%|▋         | 1429/20176 [00:02<00:31, 601.65it/s]
4-echo monoexponential:   7%|▋         | 1490/20176 [00:02<00:32, 582.37it/s]
4-echo monoexponential:   8%|▊         | 1551/20176 [00:02<00:31, 588.77it/s]
4-echo monoexponential:   8%|▊         | 1611/20176 [00:02<00:31, 590.18it/s]
4-echo monoexponential:   8%|▊         | 1675/20176 [00:02<00:30, 602.18it/s]
4-echo monoexponential:   9%|▊         | 1737/20176 [00:02<00:30, 607.08it/s]
4-echo monoexponential:   9%|▉         | 1798/20176 [00:03<00:30, 604.42it/s]
4-echo monoexponential:   9%|▉         | 1862/20176 [00:03<00:29, 613.25it/s]
4-echo monoexponential:  10%|▉         | 1924/20176 [00:03<00:29, 611.96it/s]
4-echo monoexponential:  10%|▉         | 1986/20176 [00:03<00:30, 591.84it/s]
4-echo monoexponential:  10%|█         | 2046/20176 [00:03<00:30, 588.41it/s]
4-echo monoexponential:  10%|█         | 2107/20176 [00:03<00:30, 592.54it/s]
4-echo monoexponential:  11%|█         | 2169/20176 [00:03<00:30, 597.70it/s]
4-echo monoexponential:  11%|█         | 2234/20176 [00:03<00:29, 610.33it/s]
4-echo monoexponential:  11%|█▏        | 2299/20176 [00:03<00:28, 620.38it/s]
4-echo monoexponential:  12%|█▏        | 2362/20176 [00:03<00:28, 621.83it/s]
4-echo monoexponential:  12%|█▏        | 2426/20176 [00:04<00:28, 625.33it/s]
4-echo monoexponential:  12%|█▏        | 2490/20176 [00:04<00:28, 627.40it/s]
4-echo monoexponential:  13%|█▎        | 2553/20176 [00:04<00:28, 616.92it/s]
4-echo monoexponential:  13%|█▎        | 2615/20176 [00:04<00:29, 592.23it/s]
4-echo monoexponential:  13%|█▎        | 2675/20176 [00:04<00:29, 593.07it/s]
4-echo monoexponential:  14%|█▎        | 2737/20176 [00:04<00:29, 599.87it/s]
4-echo monoexponential:  14%|█▍        | 2798/20176 [00:04<00:29, 596.60it/s]
4-echo monoexponential:  14%|█▍        | 2863/20176 [00:04<00:28, 611.53it/s]
4-echo monoexponential:  15%|█▍        | 2927/20176 [00:04<00:27, 619.68it/s]
4-echo monoexponential:  15%|█▍        | 2991/20176 [00:05<00:27, 624.29it/s]
4-echo monoexponential:  15%|█▌        | 3055/20176 [00:05<00:27, 627.53it/s]
4-echo monoexponential:  15%|█▌        | 3120/20176 [00:05<00:27, 631.69it/s]
4-echo monoexponential:  16%|█▌        | 3184/20176 [00:05<00:27, 629.08it/s]
4-echo monoexponential:  16%|█▌        | 3247/20176 [00:05<00:27, 605.19it/s]
4-echo monoexponential:  16%|█▋        | 3310/20176 [00:05<00:27, 611.71it/s]
4-echo monoexponential:  17%|█▋        | 3374/20176 [00:05<00:27, 616.88it/s]
4-echo monoexponential:  17%|█▋        | 3436/20176 [00:05<00:27, 613.87it/s]
4-echo monoexponential:  17%|█▋        | 3501/20176 [00:05<00:26, 621.85it/s]
4-echo monoexponential:  18%|█▊        | 3567/20176 [00:05<00:26, 632.29it/s]
4-echo monoexponential:  18%|█▊        | 3631/20176 [00:06<00:26, 628.72it/s]
4-echo monoexponential:  18%|█▊        | 3694/20176 [00:06<00:26, 625.40it/s]
4-echo monoexponential:  19%|█▊        | 3758/20176 [00:06<00:26, 628.06it/s]
4-echo monoexponential:  19%|█▉        | 3821/20176 [00:06<00:26, 627.93it/s]
4-echo monoexponential:  19%|█▉        | 3884/20176 [00:06<00:26, 621.10it/s]
4-echo monoexponential:  20%|█▉        | 3947/20176 [00:06<00:26, 606.93it/s]
4-echo monoexponential:  20%|█▉        | 4008/20176 [00:06<00:26, 606.96it/s]
4-echo monoexponential:  20%|██        | 4070/20176 [00:06<00:26, 609.66it/s]
4-echo monoexponential:  20%|██        | 4132/20176 [00:06<00:26, 602.74it/s]
4-echo monoexponential:  21%|██        | 4194/20176 [00:06<00:26, 604.97it/s]
4-echo monoexponential:  21%|██        | 4258/20176 [00:07<00:25, 613.84it/s]
4-echo monoexponential:  21%|██▏       | 4324/20176 [00:07<00:25, 626.39it/s]
4-echo monoexponential:  22%|██▏       | 4387/20176 [00:07<00:25, 619.58it/s]
4-echo monoexponential:  22%|██▏       | 4451/20176 [00:07<00:25, 624.78it/s]
4-echo monoexponential:  22%|██▏       | 4515/20176 [00:07<00:24, 626.66it/s]
4-echo monoexponential:  23%|██▎       | 4578/20176 [00:07<00:24, 626.90it/s]
4-echo monoexponential:  23%|██▎       | 4641/20176 [00:07<00:24, 624.42it/s]
4-echo monoexponential:  23%|██▎       | 4704/20176 [00:07<00:25, 608.32it/s]
4-echo monoexponential:  24%|██▎       | 4768/20176 [00:07<00:25, 615.05it/s]
4-echo monoexponential:  24%|██▍       | 4830/20176 [00:07<00:24, 614.53it/s]
4-echo monoexponential:  24%|██▍       | 4892/20176 [00:08<00:25, 609.53it/s]
4-echo monoexponential:  25%|██▍       | 4955/20176 [00:08<00:24, 614.13it/s]
4-echo monoexponential:  25%|██▍       | 5020/20176 [00:08<00:24, 624.15it/s]
4-echo monoexponential:  25%|██▌       | 5084/20176 [00:08<00:24, 627.96it/s]
4-echo monoexponential:  26%|██▌       | 5150/20176 [00:08<00:23, 637.47it/s]
4-echo monoexponential:  26%|██▌       | 5214/20176 [00:08<00:23, 637.79it/s]
4-echo monoexponential:  26%|██▌       | 5278/20176 [00:08<00:23, 636.58it/s]
4-echo monoexponential:  26%|██▋       | 5343/20176 [00:08<00:23, 637.99it/s]
4-echo monoexponential:  27%|██▋       | 5407/20176 [00:08<00:23, 622.55it/s]
4-echo monoexponential:  27%|██▋       | 5470/20176 [00:09<00:24, 608.82it/s]
4-echo monoexponential:  27%|██▋       | 5533/20176 [00:09<00:23, 612.31it/s]
4-echo monoexponential:  28%|██▊       | 5595/20176 [00:09<00:23, 609.95it/s]
4-echo monoexponential:  28%|██▊       | 5657/20176 [00:09<00:23, 610.85it/s]
4-echo monoexponential:  28%|██▊       | 5722/20176 [00:09<00:23, 621.33it/s]
4-echo monoexponential:  29%|██▊       | 5790/20176 [00:09<00:22, 638.00it/s]
4-echo monoexponential:  29%|██▉       | 5854/20176 [00:09<00:22, 636.55it/s]
4-echo monoexponential:  29%|██▉       | 5918/20176 [00:09<00:22, 634.35it/s]
4-echo monoexponential:  30%|██▉       | 5982/20176 [00:09<00:22, 633.73it/s]
4-echo monoexponential:  30%|██▉       | 6046/20176 [00:09<00:22, 624.31it/s]
4-echo monoexponential:  30%|███       | 6109/20176 [00:10<00:22, 624.45it/s]
4-echo monoexponential:  31%|███       | 6172/20176 [00:10<00:22, 619.66it/s]
4-echo monoexponential:  31%|███       | 6234/20176 [00:10<00:23, 592.12it/s]
4-echo monoexponential:  31%|███       | 6294/20176 [00:10<00:23, 592.05it/s]
4-echo monoexponential:  31%|███▏      | 6354/20176 [00:10<00:23, 585.09it/s]
4-echo monoexponential:  32%|███▏      | 6416/20176 [00:10<00:23, 592.52it/s]
4-echo monoexponential:  32%|███▏      | 6481/20176 [00:10<00:22, 608.71it/s]
4-echo monoexponential:  32%|███▏      | 6547/20176 [00:10<00:21, 620.04it/s]
4-echo monoexponential:  33%|███▎      | 6612/20176 [00:10<00:21, 628.00it/s]
4-echo monoexponential:  33%|███▎      | 6675/20176 [00:10<00:21, 628.41it/s]
4-echo monoexponential:  33%|███▎      | 6738/20176 [00:11<00:21, 628.00it/s]
4-echo monoexponential:  34%|███▎      | 6803/20176 [00:11<00:21, 634.21it/s]
4-echo monoexponential:  34%|███▍      | 6867/20176 [00:11<00:21, 627.85it/s]
4-echo monoexponential:  34%|███▍      | 6930/20176 [00:11<00:21, 618.84it/s]
4-echo monoexponential:  35%|███▍      | 6992/20176 [00:11<00:22, 594.34it/s]
4-echo monoexponential:  35%|███▍      | 7054/20176 [00:11<00:21, 599.90it/s]
4-echo monoexponential:  35%|███▌      | 7116/20176 [00:11<00:21, 604.07it/s]
4-echo monoexponential:  36%|███▌      | 7178/20176 [00:11<00:21, 607.64it/s]
4-echo monoexponential:  36%|███▌      | 7239/20176 [00:11<00:21, 605.14it/s]
4-echo monoexponential:  36%|███▌      | 7305/20176 [00:12<00:20, 620.17it/s]
4-echo monoexponential:  37%|███▋      | 7370/20176 [00:12<00:20, 628.11it/s]
4-echo monoexponential:  37%|███▋      | 7433/20176 [00:12<00:20, 625.09it/s]
4-echo monoexponential:  37%|███▋      | 7496/20176 [00:12<00:20, 618.92it/s]
4-echo monoexponential:  37%|███▋      | 7560/20176 [00:12<00:20, 623.34it/s]
4-echo monoexponential:  38%|███▊      | 7623/20176 [00:12<00:20, 619.55it/s]
4-echo monoexponential:  38%|███▊      | 7686/20176 [00:12<00:20, 622.59it/s]
4-echo monoexponential:  38%|███▊      | 7749/20176 [00:12<00:20, 606.25it/s]
4-echo monoexponential:  39%|███▊      | 7810/20176 [00:12<00:20, 600.20it/s]
4-echo monoexponential:  39%|███▉      | 7871/20176 [00:12<00:20, 595.14it/s]
4-echo monoexponential:  39%|███▉      | 7933/20176 [00:13<00:20, 600.44it/s]
4-echo monoexponential:  40%|███▉      | 7994/20176 [00:13<00:20, 600.17it/s]
4-echo monoexponential:  40%|███▉      | 8057/20176 [00:13<00:19, 607.67it/s]
4-echo monoexponential:  40%|████      | 8122/20176 [00:13<00:19, 618.53it/s]
4-echo monoexponential:  41%|████      | 8188/20176 [00:13<00:19, 628.41it/s]
4-echo monoexponential:  41%|████      | 8251/20176 [00:13<00:19, 622.57it/s]
4-echo monoexponential:  41%|████      | 8315/20176 [00:13<00:18, 626.59it/s]
4-echo monoexponential:  42%|████▏     | 8379/20176 [00:13<00:18, 629.60it/s]
4-echo monoexponential:  42%|████▏     | 8442/20176 [00:13<00:18, 625.32it/s]
4-echo monoexponential:  42%|████▏     | 8507/20176 [00:13<00:18, 629.38it/s]
4-echo monoexponential:  42%|████▏     | 8570/20176 [00:14<00:19, 608.80it/s]
4-echo monoexponential:  43%|████▎     | 8632/20176 [00:14<00:19, 603.40it/s]
4-echo monoexponential:  43%|████▎     | 8693/20176 [00:14<00:18, 604.84it/s]
4-echo monoexponential:  43%|████▎     | 8754/20176 [00:14<00:19, 599.39it/s]
4-echo monoexponential:  44%|████▎     | 8818/20176 [00:14<00:18, 609.55it/s]
4-echo monoexponential:  44%|████▍     | 8880/20176 [00:14<00:18, 602.97it/s]
4-echo monoexponential:  44%|████▍     | 8942/20176 [00:14<00:18, 606.47it/s]
4-echo monoexponential:  45%|████▍     | 9007/20176 [00:14<00:18, 618.03it/s]
4-echo monoexponential:  45%|████▍     | 9069/20176 [00:14<00:18, 615.96it/s]
4-echo monoexponential:  45%|████▌     | 9133/20176 [00:14<00:17, 620.83it/s]
4-echo monoexponential:  46%|████▌     | 9199/20176 [00:15<00:17, 630.73it/s]
4-echo monoexponential:  46%|████▌     | 9263/20176 [00:15<00:17, 631.19it/s]
4-echo monoexponential:  46%|████▌     | 9328/20176 [00:15<00:17, 634.16it/s]
4-echo monoexponential:  47%|████▋     | 9392/20176 [00:15<00:17, 618.40it/s]
4-echo monoexponential:  47%|████▋     | 9454/20176 [00:15<00:17, 607.13it/s]
4-echo monoexponential:  47%|████▋     | 9515/20176 [00:15<00:17, 600.50it/s]
4-echo monoexponential:  47%|████▋     | 9576/20176 [00:15<00:17, 599.79it/s]
4-echo monoexponential:  48%|████▊     | 9637/20176 [00:15<00:17, 598.71it/s]
4-echo monoexponential:  48%|████▊     | 9701/20176 [00:15<00:17, 610.13it/s]
4-echo monoexponential:  48%|████▊     | 9763/20176 [00:16<00:17, 609.37it/s]
4-echo monoexponential:  49%|████▊     | 9824/20176 [00:16<00:17, 607.89it/s]
4-echo monoexponential:  49%|████▉     | 9888/20176 [00:16<00:16, 616.56it/s]
4-echo monoexponential:  49%|████▉     | 9953/20176 [00:16<00:16, 625.90it/s]
4-echo monoexponential:  50%|████▉     | 10020/20176 [00:16<00:15, 638.89it/s]
4-echo monoexponential:  50%|████▉     | 10084/20176 [00:16<00:15, 632.96it/s]
4-echo monoexponential:  50%|█████     | 10148/20176 [00:16<00:16, 619.32it/s]
4-echo monoexponential:  51%|█████     | 10211/20176 [00:16<00:16, 596.67it/s]
4-echo monoexponential:  51%|█████     | 10273/20176 [00:16<00:16, 601.64it/s]
4-echo monoexponential:  51%|█████     | 10334/20176 [00:16<00:16, 599.42it/s]
4-echo monoexponential:  52%|█████▏    | 10396/20176 [00:17<00:16, 604.97it/s]
4-echo monoexponential:  52%|█████▏    | 10458/20176 [00:17<00:16, 606.85it/s]
4-echo monoexponential:  52%|█████▏    | 10523/20176 [00:17<00:15, 617.53it/s]
4-echo monoexponential:  52%|█████▏    | 10588/20176 [00:17<00:15, 625.91it/s]
4-echo monoexponential:  53%|█████▎    | 10651/20176 [00:17<00:15, 611.80it/s]
4-echo monoexponential:  53%|█████▎    | 10714/20176 [00:17<00:15, 614.80it/s]
4-echo monoexponential:  53%|█████▎    | 10780/20176 [00:17<00:15, 625.45it/s]
4-echo monoexponential:  54%|█████▍    | 10845/20176 [00:17<00:14, 631.69it/s]
4-echo monoexponential:  54%|█████▍    | 10909/20176 [00:17<00:14, 626.56it/s]
4-echo monoexponential:  54%|█████▍    | 10972/20176 [00:17<00:15, 604.79it/s]
4-echo monoexponential:  55%|█████▍    | 11033/20176 [00:18<00:15, 596.41it/s]
4-echo monoexponential:  55%|█████▍    | 11093/20176 [00:18<00:15, 595.19it/s]
4-echo monoexponential:  55%|█████▌    | 11154/20176 [00:18<00:15, 597.27it/s]
4-echo monoexponential:  56%|█████▌    | 11222/20176 [00:18<00:14, 619.13it/s]
4-echo monoexponential:  56%|█████▌    | 11288/20176 [00:18<00:14, 629.05it/s]
4-echo monoexponential:  56%|█████▋    | 11351/20176 [00:18<00:14, 626.95it/s]
4-echo monoexponential:  57%|█████▋    | 11414/20176 [00:18<00:13, 627.76it/s]
4-echo monoexponential:  57%|█████▋    | 11480/20176 [00:18<00:13, 635.01it/s]
4-echo monoexponential:  57%|█████▋    | 11544/20176 [00:18<00:13, 633.05it/s]
4-echo monoexponential:  58%|█████▊    | 11610/20176 [00:18<00:13, 639.68it/s]
4-echo monoexponential:  58%|█████▊    | 11674/20176 [00:19<00:13, 639.58it/s]
4-echo monoexponential:  58%|█████▊    | 11738/20176 [00:19<00:13, 614.63it/s]
4-echo monoexponential:  58%|█████▊    | 11800/20176 [00:19<00:14, 578.12it/s]
4-echo monoexponential:  59%|█████▉    | 11860/20176 [00:19<00:14, 582.59it/s]
4-echo monoexponential:  59%|█████▉    | 11923/20176 [00:19<00:13, 595.13it/s]
4-echo monoexponential:  59%|█████▉    | 11984/20176 [00:19<00:13, 597.25it/s]
4-echo monoexponential:  60%|█████▉    | 12045/20176 [00:19<00:13, 600.37it/s]
4-echo monoexponential:  60%|██████    | 12108/20176 [00:19<00:13, 607.80it/s]
4-echo monoexponential:  60%|██████    | 12173/20176 [00:19<00:12, 619.07it/s]
4-echo monoexponential:  61%|██████    | 12238/20176 [00:20<00:12, 626.10it/s]
4-echo monoexponential:  61%|██████    | 12303/20176 [00:20<00:12, 631.68it/s]
4-echo monoexponential:  61%|██████▏   | 12368/20176 [00:20<00:12, 636.39it/s]
4-echo monoexponential:  62%|██████▏   | 12432/20176 [00:20<00:12, 636.53it/s]
4-echo monoexponential:  62%|██████▏   | 12496/20176 [00:20<00:12, 636.61it/s]
4-echo monoexponential:  62%|██████▏   | 12560/20176 [00:20<00:12, 597.42it/s]
4-echo monoexponential:  63%|██████▎   | 12621/20176 [00:20<00:12, 587.46it/s]
4-echo monoexponential:  63%|██████▎   | 12686/20176 [00:20<00:12, 603.73it/s]
4-echo monoexponential:  63%|██████▎   | 12750/20176 [00:20<00:12, 612.63it/s]
4-echo monoexponential:  64%|██████▎   | 12815/20176 [00:20<00:11, 620.86it/s]
4-echo monoexponential:  64%|██████▍   | 12881/20176 [00:21<00:11, 630.17it/s]
4-echo monoexponential:  64%|██████▍   | 12945/20176 [00:21<00:11, 630.67it/s]
4-echo monoexponential:  64%|██████▍   | 13010/20176 [00:21<00:11, 633.40it/s]
4-echo monoexponential:  65%|██████▍   | 13074/20176 [00:21<00:11, 635.17it/s]
4-echo monoexponential:  65%|██████▌   | 13138/20176 [00:21<00:11, 630.12it/s]
4-echo monoexponential:  65%|██████▌   | 13202/20176 [00:21<00:11, 629.55it/s]
4-echo monoexponential:  66%|██████▌   | 13265/20176 [00:21<00:11, 623.41it/s]
4-echo monoexponential:  66%|██████▌   | 13328/20176 [00:21<00:11, 610.89it/s]
4-echo monoexponential:  66%|██████▋   | 13390/20176 [00:21<00:11, 589.22it/s]
4-echo monoexponential:  67%|██████▋   | 13453/20176 [00:22<00:11, 596.72it/s]
4-echo monoexponential:  67%|██████▋   | 13514/20176 [00:22<00:11, 598.67it/s]
4-echo monoexponential:  67%|██████▋   | 13577/20176 [00:22<00:10, 605.84it/s]
4-echo monoexponential:  68%|██████▊   | 13642/20176 [00:22<00:10, 617.33it/s]
4-echo monoexponential:  68%|██████▊   | 13707/20176 [00:22<00:10, 626.57it/s]
4-echo monoexponential:  68%|██████▊   | 13772/20176 [00:22<00:10, 631.31it/s]
4-echo monoexponential:  69%|██████▊   | 13836/20176 [00:22<00:10, 627.70it/s]
4-echo monoexponential:  69%|██████▉   | 13899/20176 [00:22<00:09, 627.90it/s]
4-echo monoexponential:  69%|██████▉   | 13964/20176 [00:22<00:09, 631.11it/s]
4-echo monoexponential:  70%|██████▉   | 14028/20176 [00:22<00:09, 630.79it/s]
4-echo monoexponential:  70%|██████▉   | 14092/20176 [00:23<00:09, 627.45it/s]
4-echo monoexponential:  70%|███████   | 14155/20176 [00:23<00:10, 599.65it/s]
4-echo monoexponential:  70%|███████   | 14216/20176 [00:23<00:10, 594.38it/s]
4-echo monoexponential:  71%|███████   | 14279/20176 [00:23<00:09, 602.64it/s]
4-echo monoexponential:  71%|███████   | 14342/20176 [00:23<00:09, 608.55it/s]
4-echo monoexponential:  71%|███████▏  | 14406/20176 [00:23<00:09, 616.03it/s]
4-echo monoexponential:  72%|███████▏  | 14474/20176 [00:23<00:09, 632.32it/s]
4-echo monoexponential:  72%|███████▏  | 14539/20176 [00:23<00:08, 637.36it/s]
4-echo monoexponential:  72%|███████▏  | 14605/20176 [00:23<00:08, 641.18it/s]
4-echo monoexponential:  73%|███████▎  | 14670/20176 [00:23<00:08, 633.06it/s]
4-echo monoexponential:  73%|███████▎  | 14734/20176 [00:24<00:08, 623.96it/s]
4-echo monoexponential:  73%|███████▎  | 14797/20176 [00:24<00:08, 623.66it/s]
4-echo monoexponential:  74%|███████▎  | 14860/20176 [00:24<00:08, 605.99it/s]
4-echo monoexponential:  74%|███████▍  | 14923/20176 [00:24<00:08, 611.89it/s]
4-echo monoexponential:  74%|███████▍  | 14985/20176 [00:24<00:08, 612.11it/s]
4-echo monoexponential:  75%|███████▍  | 15047/20176 [00:24<00:08, 612.35it/s]
4-echo monoexponential:  75%|███████▍  | 15109/20176 [00:24<00:08, 611.98it/s]
4-echo monoexponential:  75%|███████▌  | 15174/20176 [00:24<00:08, 622.65it/s]
4-echo monoexponential:  76%|███████▌  | 15237/20176 [00:24<00:07, 619.60it/s]
4-echo monoexponential:  76%|███████▌  | 15301/20176 [00:24<00:07, 624.06it/s]
4-echo monoexponential:  76%|███████▌  | 15366/20176 [00:25<00:07, 630.52it/s]
4-echo monoexponential:  76%|███████▋  | 15430/20176 [00:25<00:07, 626.87it/s]
4-echo monoexponential:  77%|███████▋  | 15494/20176 [00:25<00:07, 627.59it/s]
4-echo monoexponential:  77%|███████▋  | 15557/20176 [00:25<00:07, 616.75it/s]
4-echo monoexponential:  77%|███████▋  | 15619/20176 [00:25<00:07, 601.90it/s]
4-echo monoexponential:  78%|███████▊  | 15682/20176 [00:25<00:07, 608.31it/s]
4-echo monoexponential:  78%|███████▊  | 15745/20176 [00:25<00:07, 612.64it/s]
4-echo monoexponential:  78%|███████▊  | 15807/20176 [00:25<00:07, 598.56it/s]
4-echo monoexponential:  79%|███████▊  | 15869/20176 [00:25<00:07, 604.41it/s]
4-echo monoexponential:  79%|███████▉  | 15933/20176 [00:26<00:06, 613.86it/s]
4-echo monoexponential:  79%|███████▉  | 15999/20176 [00:26<00:06, 625.69it/s]
4-echo monoexponential:  80%|███████▉  | 16064/20176 [00:26<00:06, 631.81it/s]
4-echo monoexponential:  80%|███████▉  | 16128/20176 [00:26<00:06, 632.68it/s]
4-echo monoexponential:  80%|████████  | 16192/20176 [00:26<00:06, 623.25it/s]
4-echo monoexponential:  81%|████████  | 16255/20176 [00:26<00:06, 621.65it/s]
4-echo monoexponential:  81%|████████  | 16318/20176 [00:26<00:06, 594.69it/s]
4-echo monoexponential:  81%|████████  | 16378/20176 [00:26<00:06, 595.17it/s]
4-echo monoexponential:  81%|████████▏ | 16440/20176 [00:26<00:06, 600.65it/s]
4-echo monoexponential:  82%|████████▏ | 16501/20176 [00:26<00:06, 595.81it/s]
4-echo monoexponential:  82%|████████▏ | 16563/20176 [00:27<00:06, 600.55it/s]
4-echo monoexponential:  82%|████████▏ | 16626/20176 [00:27<00:05, 607.28it/s]
4-echo monoexponential:  83%|████████▎ | 16692/20176 [00:27<00:05, 621.00it/s]
4-echo monoexponential:  83%|████████▎ | 16759/20176 [00:27<00:05, 633.53it/s]
4-echo monoexponential:  83%|████████▎ | 16823/20176 [00:27<00:05, 630.94it/s]
4-echo monoexponential:  84%|████████▎ | 16887/20176 [00:27<00:05, 626.76it/s]
4-echo monoexponential:  84%|████████▍ | 16950/20176 [00:27<00:05, 619.34it/s]
4-echo monoexponential:  84%|████████▍ | 17012/20176 [00:27<00:05, 589.02it/s]
4-echo monoexponential:  85%|████████▍ | 17072/20176 [00:27<00:05, 590.41it/s]
4-echo monoexponential:  85%|████████▍ | 17135/20176 [00:27<00:05, 598.74it/s]
4-echo monoexponential:  85%|████████▌ | 17196/20176 [00:28<00:05, 585.42it/s]
4-echo monoexponential:  86%|████████▌ | 17258/20176 [00:28<00:04, 594.67it/s]
4-echo monoexponential:  86%|████████▌ | 17320/20176 [00:28<00:04, 600.28it/s]
4-echo monoexponential:  86%|████████▌ | 17386/20176 [00:28<00:04, 615.10it/s]
4-echo monoexponential:  86%|████████▋ | 17451/20176 [00:28<00:04, 622.89it/s]
4-echo monoexponential:  87%|████████▋ | 17514/20176 [00:28<00:04, 614.71it/s]
4-echo monoexponential:  87%|████████▋ | 17576/20176 [00:28<00:04, 611.60it/s]
4-echo monoexponential:  87%|████████▋ | 17638/20176 [00:28<00:04, 595.59it/s]
4-echo monoexponential:  88%|████████▊ | 17698/20176 [00:28<00:04, 584.65it/s]
4-echo monoexponential:  88%|████████▊ | 17758/20176 [00:29<00:04, 586.98it/s]
4-echo monoexponential:  88%|████████▊ | 17818/20176 [00:29<00:04, 589.50it/s]
4-echo monoexponential:  89%|████████▊ | 17879/20176 [00:29<00:03, 594.11it/s]
4-echo monoexponential:  89%|████████▉ | 17944/20176 [00:29<00:03, 608.71it/s]
4-echo monoexponential:  89%|████████▉ | 18011/20176 [00:29<00:03, 624.64it/s]
4-echo monoexponential:  90%|████████▉ | 18075/20176 [00:29<00:03, 627.51it/s]
4-echo monoexponential:  90%|████████▉ | 18138/20176 [00:29<00:03, 622.76it/s]
4-echo monoexponential:  90%|█████████ | 18201/20176 [00:29<00:03, 610.49it/s]
4-echo monoexponential:  91%|█████████ | 18263/20176 [00:29<00:03, 587.13it/s]
4-echo monoexponential:  91%|█████████ | 18322/20176 [00:29<00:03, 587.32it/s]
4-echo monoexponential:  91%|█████████ | 18381/20176 [00:30<00:03, 578.63it/s]
4-echo monoexponential:  91%|█████████▏| 18442/20176 [00:30<00:02, 587.51it/s]
4-echo monoexponential:  92%|█████████▏| 18504/20176 [00:30<00:02, 595.27it/s]
4-echo monoexponential:  92%|█████████▏| 18566/20176 [00:30<00:02, 601.24it/s]
4-echo monoexponential:  92%|█████████▏| 18631/20176 [00:30<00:02, 613.43it/s]
4-echo monoexponential:  93%|█████████▎| 18693/20176 [00:30<00:02, 605.91it/s]
4-echo monoexponential:  93%|█████████▎| 18754/20176 [00:30<00:02, 583.47it/s]
4-echo monoexponential:  93%|█████████▎| 18814/20176 [00:30<00:02, 586.37it/s]
4-echo monoexponential:  94%|█████████▎| 18873/20176 [00:30<00:02, 586.20it/s]
4-echo monoexponential:  94%|█████████▍| 18934/20176 [00:30<00:02, 590.15it/s]
4-echo monoexponential:  94%|█████████▍| 18999/20176 [00:31<00:01, 605.24it/s]
4-echo monoexponential:  94%|█████████▍| 19066/20176 [00:31<00:01, 623.21it/s]
4-echo monoexponential:  95%|█████████▍| 19129/20176 [00:31<00:01, 625.14it/s]
4-echo monoexponential:  95%|█████████▌| 19192/20176 [00:31<00:01, 601.95it/s]
4-echo monoexponential:  95%|█████████▌| 19253/20176 [00:31<00:01, 591.83it/s]
4-echo monoexponential:  96%|█████████▌| 19313/20176 [00:31<00:01, 585.50it/s]
4-echo monoexponential:  96%|█████████▌| 19372/20176 [00:31<00:01, 566.40it/s]
4-echo monoexponential:  96%|█████████▋| 19432/20176 [00:31<00:01, 574.41it/s]
4-echo monoexponential:  97%|█████████▋| 19495/20176 [00:31<00:01, 589.71it/s]
4-echo monoexponential:  97%|█████████▋| 19555/20176 [00:32<00:01, 583.02it/s]
4-echo monoexponential:  97%|█████████▋| 19618/20176 [00:32<00:00, 595.63it/s]
4-echo monoexponential:  98%|█████████▊| 19678/20176 [00:32<00:00, 595.99it/s]
4-echo monoexponential:  98%|█████████▊| 19744/20176 [00:32<00:00, 613.89it/s]
4-echo monoexponential:  98%|█████████▊| 19809/20176 [00:32<00:00, 621.72it/s]
4-echo monoexponential:  98%|█████████▊| 19872/20176 [00:32<00:00, 600.90it/s]
4-echo monoexponential:  99%|█████████▉| 19933/20176 [00:32<00:00, 593.94it/s]
4-echo monoexponential:  99%|█████████▉| 19993/20176 [00:32<00:00, 589.66it/s]
4-echo monoexponential:  99%|█████████▉| 20053/20176 [00:32<00:00, 587.52it/s]
4-echo monoexponential: 100%|█████████▉| 20112/20176 [00:32<00:00, 581.58it/s]
4-echo monoexponential: 100%|█████████▉| 20171/20176 [00:33<00:00, 575.23it/s]
4-echo monoexponential: 100%|██████████| 20176/20176 [00:33<00:00, 609.96it/s]

/opt/hostedtoolcache/Python/3.10.16/x64/lib/python3.10/site-packages/tedana/decay.py:541: RuntimeWarning: Mean of empty slice
  rmse_map = np.nanmean(rmse, axis=1)
INFO     combine:make_optcom:192 Optimally combining data with voxel-wise T2* estimates
INFO     tedana:tedana_workflow:758 Writing optimally combined data set: /home/runner/work/multi-echo-data-analysis/multi-echo-data-analysis/data/multi-echo-data-analysis/tedana/sub-04570_task-rest_space-scanner_desc-optcom_bold.nii.gz
INFO     pca:tedpca:203 Computing PCA of optimally combined multi-echo data with selection criteria: mdl
/opt/hostedtoolcache/Python/3.10.16/x64/lib/python3.10/site-packages/tedana/io.py:833: UserWarning: Data array used to create a new image contains 64-bit ints. This is likely due to creating the array with numpy and passing `int` as the `dtype`. Many tools such as FSL and SPM cannot deal with int64 in Nifti images, so for compatibility the data has been converted to int32.
  nii = new_img_like(ref_img, newdata, affine=affine, copy_header=copy_header)
INFO     pca:tedpca:243 Optimal number of components based on different criteria:
INFO     pca:tedpca:244 AIC: 77 | KIC: 67 | MDL: 43 | 90% varexp: 141 | 95% varexp: 186
INFO     pca:tedpca:249 Explained variance based on different criteria:
INFO     pca:tedpca:250 AIC: 0.816% | KIC: 0.801% | MDL: 0.757% | 90% varexp: 0.9% | 95% varexp: 0.95%
INFO     pca:tedpca:267 Plotting maPCA optimization curves
INFO     collect:generate_metrics:150 Calculating weight maps
INFO     collect:generate_metrics:162 Calculating parameter estimate maps for optimally combined data
INFO     collect:generate_metrics:182 Calculating z-statistic maps
INFO     collect:generate_metrics:192 Calculating F-statistic maps
INFO     collect:generate_metrics:216 Thresholding z-statistic maps
INFO     collect:generate_metrics:226 Calculating T2* F-statistic maps
INFO     collect:generate_metrics:236 Calculating S0 F-statistic maps
INFO     collect:generate_metrics:247 Counting significant voxels in T2* F-statistic maps
INFO     collect:generate_metrics:253 Counting significant voxels in S0 F-statistic maps
INFO     collect:generate_metrics:260 Thresholding optimal combination beta maps to match T2* F-statistic maps
INFO     collect:generate_metrics:269 Thresholding optimal combination beta maps to match S0 F-statistic maps
INFO     collect:generate_metrics:279 Calculating kappa and rho
INFO     collect:generate_metrics:288 Calculating variance explained
INFO     collect:generate_metrics:294 Calculating normalized variance explained
INFO     collect:generate_metrics:301 Calculating DSI between thresholded T2* F-statistic and optimal combination beta maps
INFO     collect:generate_metrics:311 Calculating DSI between thresholded S0 F-statistic and optimal combination beta maps
INFO     collect:generate_metrics:322 Calculating signal-noise t-statistics
/opt/hostedtoolcache/Python/3.10.16/x64/lib/python3.10/site-packages/tedana/metrics/dependence.py:573: SmallSampleWarning: One or more sample arguments is too small; all returned values will be NaN. See documentation for sample size requirements.
  (signal_minus_noise_t[i_comp], signal_minus_noise_p[i_comp]) = stats.ttest_ind(
INFO     collect:generate_metrics:356 Counting significant noise voxels from z-statistic maps
INFO     collect:generate_metrics:368 Calculating decision table score
INFO     pca:tedpca:399 Selected 43 components with 75.69% normalized variance explained using mdl dimensionality estimate
/opt/hostedtoolcache/Python/3.10.16/x64/lib/python3.10/site-packages/tedana/io.py:354: FutureWarning: Downcasting behavior in `replace` is deprecated and will be removed in a future version. To retain the old behavior, explicitly call `result.infer_objects(copy=False)`. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`
  deblanked = data.replace("", np.nan)
INFO     ica:f_ica:260 ICA with random seed 42 converged in 62 iterations
INFO     collect:generate_metrics:150 Calculating weight maps
INFO     collect:generate_metrics:162 Calculating parameter estimate maps for optimally combined data
INFO     collect:generate_metrics:182 Calculating z-statistic maps
INFO     collect:generate_metrics:192 Calculating F-statistic maps
INFO     collect:generate_metrics:216 Thresholding z-statistic maps
INFO     collect:generate_metrics:226 Calculating T2* F-statistic maps
INFO     collect:generate_metrics:236 Calculating S0 F-statistic maps
INFO     collect:generate_metrics:247 Counting significant voxels in T2* F-statistic maps
INFO     collect:generate_metrics:253 Counting significant voxels in S0 F-statistic maps
INFO     collect:generate_metrics:260 Thresholding optimal combination beta maps to match T2* F-statistic maps
INFO     collect:generate_metrics:269 Thresholding optimal combination beta maps to match S0 F-statistic maps
INFO     collect:generate_metrics:279 Calculating kappa and rho
INFO     collect:generate_metrics:288 Calculating variance explained
INFO     collect:generate_metrics:294 Calculating normalized variance explained
INFO     collect:generate_metrics:301 Calculating DSI between thresholded T2* F-statistic and optimal combination beta maps
INFO     collect:generate_metrics:311 Calculating DSI between thresholded S0 F-statistic and optimal combination beta maps
INFO     collect:generate_metrics:322 Calculating signal-noise t-statistics
/opt/hostedtoolcache/Python/3.10.16/x64/lib/python3.10/site-packages/tedana/metrics/dependence.py:573: SmallSampleWarning: One or more sample arguments is too small; all returned values will be NaN. See documentation for sample size requirements.
  (signal_minus_noise_t[i_comp], signal_minus_noise_p[i_comp]) = stats.ttest_ind(
INFO     collect:generate_metrics:356 Counting significant noise voxels from z-statistic maps
INFO     collect:generate_metrics:368 Calculating decision table score
INFO     tedana:tedana_workflow:815 Selecting components from ICA results
INFO     tedica:automatic_selection:56 Performing ICA component selection with tree: tedana_orig
INFO     selection_nodes:manual_classify:104 Step 0: manual_classify: Set all to unclassified 
INFO     selection_utils:log_decision_tree_step:436 Step 0: manual_classify applied to 43 components. 43 True -> unclassified. 0 False -> nochange.
INFO     selection_nodes:manual_classify:136 Step 0: manual_classify component classification tags are cleared
INFO     selection_utils:log_classification_counts:481 Step 0: Total component classifications: 43 unclassified
INFO     selection_nodes:dec_left_op_right:389 Step 1: left_op_right: rejected if rho>kappa, else nochange
INFO     selection_utils:log_decision_tree_step:436 Step 1: left_op_right applied to 43 components. 15 True -> rejected. 28 False -> nochange.
INFO     selection_utils:log_classification_counts:481 Step 1: Total component classifications: 15 rejected, 28 unclassified
INFO     selection_nodes:dec_left_op_right:389 Step 2: left_op_right: rejected if ['countsigFS0>countsigFT2 & countsigFT2>0'], else nochange
INFO     selection_utils:log_decision_tree_step:436 Step 2: left_op_right applied to 43 components. 15 True -> rejected. 28 False -> nochange.
INFO     selection_utils:log_classification_counts:481 Step 2: Total component classifications: 16 rejected, 27 unclassified
INFO     selection_nodes:calc_median:653 Step 3: calc_median: Median(median_varex)
INFO     selection_utils:log_decision_tree_step:448 Step 3: calc_median calculated: median_varex=0.6369008306484233
INFO     selection_utils:log_classification_counts:481 Step 3: Total component classifications: 16 rejected, 27 unclassified
INFO     selection_nodes:dec_left_op_right:389 Step 4: left_op_right: rejected if ['dice_FS0>dice_FT2 & variance explained>0.64'], else nochange
INFO     selection_utils:log_decision_tree_step:436 Step 4: left_op_right applied to 43 components. 4 True -> rejected. 39 False -> nochange.
INFO     selection_utils:log_classification_counts:481 Step 4: Total component classifications: 16 rejected, 27 unclassified
INFO     selection_nodes:dec_left_op_right:389 Step 5: left_op_right: rejected if ['0>signal-noise_t & variance explained>0.64'], else nochange
INFO     selection_utils:log_decision_tree_step:436 Step 5: left_op_right applied to 43 components. 2 True -> rejected. 41 False -> nochange.
INFO     selection_utils:log_classification_counts:481 Step 5: Total component classifications: 18 rejected, 25 unclassified
INFO     selection_nodes:calc_kappa_elbow:757 Step 6: calc_kappa_elbow: Calc Kappa Elbow
INFO     selection_utils:kappa_elbow_kundu:651 Calculating kappa elbow based on min of all and nonsig components.
INFO     selection_utils:log_decision_tree_step:448 Step 6: calc_kappa_elbow calculated: kappa_elbow_kundu=24.006482976613814, kappa_allcomps_elbow=37.56289039371539, kappa_nonsig_elbow=24.006482976613814, varex_upper_p=0.808908991333924
INFO     selection_utils:log_classification_counts:481 Step 6: Total component classifications: 18 rejected, 25 unclassified
INFO     selection_nodes:dec_reclassify_high_var_comps:1120 Step 7: reclassify_high_var_comps: Change unclassified to unclass_highvar for the top couple of components with the highest jumps in variance
INFO     selection_utils:log_decision_tree_step:436 Step 7: reclassify_high_var_comps applied to 25 components. 3 True -> unclass_highvar. 22 False -> nochange.
INFO     selection_utils:log_classification_counts:481 Step 7: Total component classifications: 18 rejected, 3 unclass_highvar, 22 unclassified
INFO     selection_nodes:calc_rho_elbow:882 Step 8: calc_rho_elbow: Calc Rho Elbow
INFO     selection_utils:log_decision_tree_step:448 Step 8: calc_rho_elbow calculated: rho_elbow_kundu=16.593474162929716, rho_allcomps_elbow=24.54704248726217, rho_unclassified_elbow=15.105415515513048, elbow_f05=10.127964486013928
INFO     selection_utils:log_classification_counts:481 Step 8: Total component classifications: 18 rejected, 3 unclass_highvar, 22 unclassified
INFO     selection_nodes:dec_left_op_right:389 Step 9: left_op_right: provisionalaccept if kappa>=24.01, else nochange
INFO     selection_utils:log_decision_tree_step:436 Step 9: left_op_right applied to 22 components. 16 True -> provisionalaccept. 6 False -> nochange.
INFO     selection_utils:log_classification_counts:481 Step 9: Total component classifications: 16 provisionalaccept, 18 rejected, 3 unclass_highvar, 6 unclassified
INFO     selection_nodes:dec_left_op_right:389 Step 10: left_op_right: unclassified if rho>16.59, else nochange
INFO     selection_utils:log_decision_tree_step:436 Step 10: left_op_right applied to 16 components. 6 True -> unclassified. 10 False -> nochange.
INFO     selection_utils:log_classification_counts:481 Step 10: Total component classifications: 10 provisionalaccept, 18 rejected, 3 unclass_highvar, 12 unclassified
INFO     selection_nodes:dec_classification_doesnt_exist:1009 Step 11: classification_doesnt_exist: Change ['provisionalaccept', 'unclassified', 'unclass_highvar'] to accepted if less than 2 components with provisionalaccept exist
INFO     selection_nodes:dec_classification_doesnt_exist:1011 Step 11: classification_doesnt_exist If nothing is provisionally accepted by this point, then rerun ICA & selection. If max iterations of rerunning done, then accept everything not already rejected
INFO     selection_utils:log_decision_tree_step:436 Step 11: classification_doesnt_exist applied to 25 components. None True -> 0. None False -> 25.
INFO     selection_utils:log_classification_counts:481 Step 11: Total component classifications: 10 provisionalaccept, 18 rejected, 3 unclass_highvar, 12 unclassified
INFO     selection_nodes:calc_varex_thresh:1308 Step 12: calc_varex_thresh: Calc varex_upper_thresh, 90th percentile threshold
INFO     selection_utils:log_decision_tree_step:448 Step 12: calc_varex_thresh calculated: varex_upper_thresh=1.0599282255701348, upper_perc=90
INFO     selection_utils:log_classification_counts:481 Step 12: Total component classifications: 10 provisionalaccept, 18 rejected, 3 unclass_highvar, 12 unclassified
INFO     selection_nodes:calc_varex_thresh:1308 Step 13: calc_varex_thresh: Calc varex_lower_thresh, 25th percentile threshold
INFO     selection_utils:log_decision_tree_step:448 Step 13: calc_varex_thresh calculated: varex_lower_thresh=0.403602854147162, lower_perc=25
INFO     selection_utils:log_classification_counts:481 Step 13: Total component classifications: 10 provisionalaccept, 18 rejected, 3 unclass_highvar, 12 unclassified
INFO     selection_utils:get_extend_factor:828 extend_factor=2.0, based on number of fMRI volumes
INFO     selection_utils:log_decision_tree_step:448 Step 14: calc_extend_factor calculated: extend_factor=2.0
INFO     selection_utils:log_classification_counts:481 Step 14: Total component classifications: 10 provisionalaccept, 18 rejected, 3 unclass_highvar, 12 unclassified
INFO     selection_utils:log_decision_tree_step:448 Step 15: calc_max_good_meanmetricrank calculated: max_good_meanmetricrank=20.0
INFO     selection_utils:log_classification_counts:481 Step 15: Total component classifications: 10 provisionalaccept, 18 rejected, 3 unclass_highvar, 12 unclassified
INFO     selection_utils:log_decision_tree_step:448 Step 16: calc_varex_kappa_ratio calculated: kappa_rate=76.84859750446454
INFO     selection_utils:log_classification_counts:481 Step 16: Total component classifications: 10 provisionalaccept, 18 rejected, 3 unclass_highvar, 12 unclassified
INFO     selection_nodes:dec_left_op_right:389 Step 17: left_op_right: rejected if ['d_table_score>20.0 & variance explained>2.0*1.06'], else nochange
INFO     selection_nodes:dec_left_op_right:391 Step 17: left_op_right If variance and d_table_scores are high, then reject
INFO     selection_utils:comptable_classification_changer:282 Step 17: No components fit criterion True to change classification
INFO     selection_utils:log_decision_tree_step:436 Step 17: left_op_right applied to 25 components. 0 True -> rejected. 25 False -> nochange.
INFO     selection_utils:log_classification_counts:481 Step 17: Total component classifications: 10 provisionalaccept, 18 rejected, 3 unclass_highvar, 12 unclassified
INFO     selection_nodes:dec_left_op_right:389 Step 18: left_op_right: accepted if ['d_table_score>20.0 & variance explained<=0.4 & kappa<=24.01'], else nochange
INFO     selection_nodes:dec_left_op_right:391 Step 18: left_op_right If low variance, accept even if bad kappa & d_table_scores
INFO     selection_utils:log_decision_tree_step:436 Step 18: left_op_right applied to 25 components. 6 True -> accepted. 19 False -> nochange.
INFO     selection_utils:log_classification_counts:481 Step 18: Total component classifications: 6 accepted, 9 provisionalaccept, 18 rejected, 3 unclass_highvar, 7 unclassified
INFO     selection_nodes:dec_classification_doesnt_exist:1009 Step 19: classification_doesnt_exist: Change ['provisionalaccept', 'unclassified', 'unclass_highvar'] to accepted if ['unclassified', 'unclass_highvar'] doesn't exist
INFO     selection_nodes:dec_classification_doesnt_exist:1011 Step 19: classification_doesnt_exist If nothing left is unclassified, then accept all
INFO     selection_utils:log_decision_tree_step:436 Step 19: classification_doesnt_exist applied to 19 components. None True -> 0. None False -> 19.
INFO     selection_utils:log_classification_counts:481 Step 19: Total component classifications: 6 accepted, 9 provisionalaccept, 18 rejected, 3 unclass_highvar, 7 unclassified
INFO     selection_nodes:calc_revised_meanmetricrank_guesses:1768 Step 20: calc_revised_meanmetricrank_guesses: Calc revised d_table_score & num accepted component guesses
INFO     selection_utils:log_decision_tree_step:448 Step 20: calc_revised_meanmetricrank_guesses calculated: num_acc_guess=13, conservative_guess=6.5, restrict_factor=2
INFO     selection_utils:log_classification_counts:481 Step 20: Total component classifications: 6 accepted, 9 provisionalaccept, 18 rejected, 3 unclass_highvar, 7 unclassified
INFO     selection_nodes:dec_left_op_right:389 Step 21: left_op_right: rejected if ['d_table_score_node20>6.5 & varex kappa ratio>2*2.0 & variance explained>2.0*1.06'], else nochange
INFO     selection_nodes:dec_left_op_right:391 Step 21: left_op_right Reject if a combination of kappa, variance, and other factors are ranked worse than others
INFO     selection_utils:log_decision_tree_step:436 Step 21: left_op_right applied to 19 components. 2 True -> rejected. 17 False -> nochange.
INFO     selection_utils:log_classification_counts:481 Step 21: Total component classifications: 6 accepted, 9 provisionalaccept, 20 rejected, 1 unclass_highvar, 7 unclassified
INFO     selection_nodes:dec_left_op_right:389 Step 22: left_op_right: rejected if ['d_table_score_node20>0.9*13 & variance explained>2.0*0.4'], else nochange
INFO     selection_nodes:dec_left_op_right:391 Step 22: left_op_right Reject if a combination of variance and ranks of other metrics are worse than others
INFO     selection_utils:log_decision_tree_step:436 Step 22: left_op_right applied to 17 components. 5 True -> rejected. 12 False -> nochange.
INFO     selection_utils:log_classification_counts:481 Step 22: Total component classifications: 6 accepted, 8 provisionalaccept, 25 rejected, 1 unclass_highvar, 3 unclassified
INFO     selection_nodes:calc_varex_thresh:1308 Step 23: calc_varex_thresh: Calc varex_new_lower_thresh, 25th percentile threshold
INFO     selection_nodes:calc_varex_thresh:1332 Step 23: calc_varex_thresh: num_highest_var_comps (13) > len(comps2use) (12). Setting to equal len(comps2use) since selection should not use more components than exist
INFO     selection_utils:log_decision_tree_step:448 Step 23: calc_varex_thresh calculated: varex_new_lower_thresh=0.5074016845951149, new_lower_perc=25
INFO     selection_utils:log_classification_counts:481 Step 23: Total component classifications: 6 accepted, 8 provisionalaccept, 25 rejected, 1 unclass_highvar, 3 unclassified
INFO     selection_nodes:dec_left_op_right:389 Step 24: left_op_right: accepted if ['d_table_score_node20>13 & variance explained>0.51'], else nochange
INFO     selection_nodes:dec_left_op_right:391 Step 24: left_op_right Accept components with a bad d_table_score, but are at the higher end of the remaining variance so more cautious to not remove
INFO     selection_utils:log_decision_tree_step:436 Step 24: left_op_right applied to 12 components. 1 True -> accepted. 11 False -> nochange.
INFO     selection_utils:log_classification_counts:481 Step 24: Total component classifications: 7 accepted, 8 provisionalaccept, 25 rejected, 1 unclass_highvar, 2 unclassified
INFO     selection_nodes:dec_left_op_right:389 Step 25: left_op_right: accepted if ['kappa<=24.01 & variance explained>0.51'], else nochange
INFO     selection_nodes:dec_left_op_right:391 Step 25: left_op_right For not already rejected components, accept ones below the kappa elbow, but at the higher end of the remaining variance so more cautious to not remove
INFO     selection_utils:comptable_classification_changer:282 Step 25: No components fit criterion True to change classification
INFO     selection_utils:log_decision_tree_step:436 Step 25: left_op_right applied to 11 components. 0 True -> accepted. 11 False -> nochange.
INFO     selection_utils:log_classification_counts:481 Step 25: Total component classifications: 7 accepted, 8 provisionalaccept, 25 rejected, 1 unclass_highvar, 2 unclassified
INFO     selection_nodes:manual_classify:104 Step 26: manual_classify: Set ['provisionalaccept', 'unclassified', 'unclass_highvar'] to accepted 
INFO     selection_nodes:manual_classify:106 Step 26: manual_classify Anything still provisional (accepted or rejected) or unclassified should be accepted
INFO     selection_utils:log_decision_tree_step:436 Step 26: manual_classify applied to 11 components. 11 True -> accepted. 0 False -> nochange.
INFO     selection_utils:log_classification_counts:481 Step 26: Total component classifications: 18 accepted, 25 rejected
INFO     tedana:tedana_workflow:823 Selecting components from ICA results
INFO     tedica:automatic_selection:56 Performing ICA component selection with tree: tedana_orig
INFO     selection_nodes:manual_classify:104 Step 0: manual_classify: Set all to unclassified 
INFO     selection_utils:log_decision_tree_step:436 Step 0: manual_classify applied to 43 components. 43 True -> unclassified. 0 False -> nochange.
INFO     selection_nodes:manual_classify:136 Step 0: manual_classify component classification tags are cleared
INFO     selection_utils:log_classification_counts:481 Step 0: Total component classifications: 43 unclassified
INFO     selection_nodes:dec_left_op_right:389 Step 1: left_op_right: rejected if rho>kappa, else nochange
INFO     selection_utils:log_decision_tree_step:436 Step 1: left_op_right applied to 43 components. 15 True -> rejected. 28 False -> nochange.
INFO     selection_utils:log_classification_counts:481 Step 1: Total component classifications: 15 rejected, 28 unclassified
INFO     selection_nodes:dec_left_op_right:389 Step 2: left_op_right: rejected if ['countsigFS0>countsigFT2 & countsigFT2>0'], else nochange
INFO     selection_utils:log_decision_tree_step:436 Step 2: left_op_right applied to 43 components. 15 True -> rejected. 28 False -> nochange.
INFO     selection_utils:log_classification_counts:481 Step 2: Total component classifications: 16 rejected, 27 unclassified
INFO     selection_nodes:calc_median:653 Step 3: calc_median: Median(median_varex)
INFO     selection_utils:log_decision_tree_step:448 Step 3: calc_median calculated: median_varex=0.6369008306484233
INFO     selection_utils:log_classification_counts:481 Step 3: Total component classifications: 16 rejected, 27 unclassified
INFO     selection_nodes:dec_left_op_right:389 Step 4: left_op_right: rejected if ['dice_FS0>dice_FT2 & variance explained>0.64'], else nochange
INFO     selection_utils:log_decision_tree_step:436 Step 4: left_op_right applied to 43 components. 4 True -> rejected. 39 False -> nochange.
INFO     selection_utils:log_classification_counts:481 Step 4: Total component classifications: 16 rejected, 27 unclassified
INFO     selection_nodes:dec_left_op_right:389 Step 5: left_op_right: rejected if ['0>signal-noise_t & variance explained>0.64'], else nochange
INFO     selection_utils:log_decision_tree_step:436 Step 5: left_op_right applied to 43 components. 2 True -> rejected. 41 False -> nochange.
INFO     selection_utils:log_classification_counts:481 Step 5: Total component classifications: 18 rejected, 25 unclassified
INFO     selection_nodes:calc_kappa_elbow:757 Step 6: calc_kappa_elbow: Calc Kappa Elbow
INFO     selection_utils:kappa_elbow_kundu:651 Calculating kappa elbow based on min of all and nonsig components.
INFO     selection_utils:log_decision_tree_step:448 Step 6: calc_kappa_elbow calculated: kappa_elbow_kundu=24.006482976613814, kappa_allcomps_elbow=37.56289039371539, kappa_nonsig_elbow=24.006482976613814, varex_upper_p=0.808908991333924
INFO     selection_utils:log_classification_counts:481 Step 6: Total component classifications: 18 rejected, 25 unclassified
INFO     selection_nodes:dec_reclassify_high_var_comps:1120 Step 7: reclassify_high_var_comps: Change unclassified to unclass_highvar for the top couple of components with the highest jumps in variance
INFO     selection_utils:log_decision_tree_step:436 Step 7: reclassify_high_var_comps applied to 25 components. 3 True -> unclass_highvar. 22 False -> nochange.
INFO     selection_utils:log_classification_counts:481 Step 7: Total component classifications: 18 rejected, 3 unclass_highvar, 22 unclassified
INFO     selection_nodes:calc_rho_elbow:882 Step 8: calc_rho_elbow: Calc Rho Elbow
INFO     selection_utils:log_decision_tree_step:448 Step 8: calc_rho_elbow calculated: rho_elbow_kundu=16.593474162929716, rho_allcomps_elbow=24.54704248726217, rho_unclassified_elbow=15.105415515513048, elbow_f05=10.127964486013928
INFO     selection_utils:log_classification_counts:481 Step 8: Total component classifications: 18 rejected, 3 unclass_highvar, 22 unclassified
INFO     selection_nodes:dec_left_op_right:389 Step 9: left_op_right: provisionalaccept if kappa>=24.01, else nochange
INFO     selection_utils:log_decision_tree_step:436 Step 9: left_op_right applied to 22 components. 16 True -> provisionalaccept. 6 False -> nochange.
INFO     selection_utils:log_classification_counts:481 Step 9: Total component classifications: 16 provisionalaccept, 18 rejected, 3 unclass_highvar, 6 unclassified
INFO     selection_nodes:dec_left_op_right:389 Step 10: left_op_right: unclassified if rho>16.59, else nochange
INFO     selection_utils:log_decision_tree_step:436 Step 10: left_op_right applied to 16 components. 6 True -> unclassified. 10 False -> nochange.
INFO     selection_utils:log_classification_counts:481 Step 10: Total component classifications: 10 provisionalaccept, 18 rejected, 3 unclass_highvar, 12 unclassified
INFO     selection_nodes:dec_classification_doesnt_exist:1009 Step 11: classification_doesnt_exist: Change ['provisionalaccept', 'unclassified', 'unclass_highvar'] to accepted if less than 2 components with provisionalaccept exist
INFO     selection_nodes:dec_classification_doesnt_exist:1011 Step 11: classification_doesnt_exist If nothing is provisionally accepted by this point, then rerun ICA & selection. If max iterations of rerunning done, then accept everything not already rejected
INFO     selection_utils:log_decision_tree_step:436 Step 11: classification_doesnt_exist applied to 25 components. None True -> 0. None False -> 25.
INFO     selection_utils:log_classification_counts:481 Step 11: Total component classifications: 10 provisionalaccept, 18 rejected, 3 unclass_highvar, 12 unclassified
INFO     selection_nodes:calc_varex_thresh:1308 Step 12: calc_varex_thresh: Calc varex_upper_thresh, 90th percentile threshold
INFO     selection_utils:log_decision_tree_step:448 Step 12: calc_varex_thresh calculated: varex_upper_thresh=1.0599282255701348, upper_perc=90
INFO     selection_utils:log_classification_counts:481 Step 12: Total component classifications: 10 provisionalaccept, 18 rejected, 3 unclass_highvar, 12 unclassified
INFO     selection_nodes:calc_varex_thresh:1308 Step 13: calc_varex_thresh: Calc varex_lower_thresh, 25th percentile threshold
INFO     selection_utils:log_decision_tree_step:448 Step 13: calc_varex_thresh calculated: varex_lower_thresh=0.403602854147162, lower_perc=25
INFO     selection_utils:log_classification_counts:481 Step 13: Total component classifications: 10 provisionalaccept, 18 rejected, 3 unclass_highvar, 12 unclassified
INFO     selection_utils:get_extend_factor:828 extend_factor=2.0, based on number of fMRI volumes
INFO     selection_utils:log_decision_tree_step:448 Step 14: calc_extend_factor calculated: extend_factor=2.0
INFO     selection_utils:log_classification_counts:481 Step 14: Total component classifications: 10 provisionalaccept, 18 rejected, 3 unclass_highvar, 12 unclassified
INFO     selection_utils:log_decision_tree_step:448 Step 15: calc_max_good_meanmetricrank calculated: max_good_meanmetricrank=20.0
INFO     selection_utils:log_classification_counts:481 Step 15: Total component classifications: 10 provisionalaccept, 18 rejected, 3 unclass_highvar, 12 unclassified
INFO     selection_utils:log_decision_tree_step:448 Step 16: calc_varex_kappa_ratio calculated: kappa_rate=76.84859750446454
INFO     selection_utils:log_classification_counts:481 Step 16: Total component classifications: 10 provisionalaccept, 18 rejected, 3 unclass_highvar, 12 unclassified
INFO     selection_nodes:dec_left_op_right:389 Step 17: left_op_right: rejected if ['d_table_score>20.0 & variance explained>2.0*1.06'], else nochange
INFO     selection_nodes:dec_left_op_right:391 Step 17: left_op_right If variance and d_table_scores are high, then reject
INFO     selection_utils:comptable_classification_changer:282 Step 17: No components fit criterion True to change classification
INFO     selection_utils:log_decision_tree_step:436 Step 17: left_op_right applied to 25 components. 0 True -> rejected. 25 False -> nochange.
INFO     selection_utils:log_classification_counts:481 Step 17: Total component classifications: 10 provisionalaccept, 18 rejected, 3 unclass_highvar, 12 unclassified
INFO     selection_nodes:dec_left_op_right:389 Step 18: left_op_right: accepted if ['d_table_score>20.0 & variance explained<=0.4 & kappa<=24.01'], else nochange
INFO     selection_nodes:dec_left_op_right:391 Step 18: left_op_right If low variance, accept even if bad kappa & d_table_scores
INFO     selection_utils:log_decision_tree_step:436 Step 18: left_op_right applied to 25 components. 6 True -> accepted. 19 False -> nochange.
INFO     selection_utils:log_classification_counts:481 Step 18: Total component classifications: 6 accepted, 9 provisionalaccept, 18 rejected, 3 unclass_highvar, 7 unclassified
INFO     selection_nodes:dec_classification_doesnt_exist:1009 Step 19: classification_doesnt_exist: Change ['provisionalaccept', 'unclassified', 'unclass_highvar'] to accepted if ['unclassified', 'unclass_highvar'] doesn't exist
INFO     selection_nodes:dec_classification_doesnt_exist:1011 Step 19: classification_doesnt_exist If nothing left is unclassified, then accept all
INFO     selection_utils:log_decision_tree_step:436 Step 19: classification_doesnt_exist applied to 19 components. None True -> 0. None False -> 19.
INFO     selection_utils:log_classification_counts:481 Step 19: Total component classifications: 6 accepted, 9 provisionalaccept, 18 rejected, 3 unclass_highvar, 7 unclassified
INFO     selection_nodes:calc_revised_meanmetricrank_guesses:1768 Step 20: calc_revised_meanmetricrank_guesses: Calc revised d_table_score & num accepted component guesses
INFO     selection_utils:log_decision_tree_step:448 Step 20: calc_revised_meanmetricrank_guesses calculated: num_acc_guess=13, conservative_guess=6.5, restrict_factor=2
INFO     selection_utils:log_classification_counts:481 Step 20: Total component classifications: 6 accepted, 9 provisionalaccept, 18 rejected, 3 unclass_highvar, 7 unclassified
INFO     selection_nodes:dec_left_op_right:389 Step 21: left_op_right: rejected if ['d_table_score_node20>6.5 & varex kappa ratio>2*2.0 & variance explained>2.0*1.06'], else nochange
INFO     selection_nodes:dec_left_op_right:391 Step 21: left_op_right Reject if a combination of kappa, variance, and other factors are ranked worse than others
INFO     selection_utils:log_decision_tree_step:436 Step 21: left_op_right applied to 19 components. 2 True -> rejected. 17 False -> nochange.
INFO     selection_utils:log_classification_counts:481 Step 21: Total component classifications: 6 accepted, 9 provisionalaccept, 20 rejected, 1 unclass_highvar, 7 unclassified
INFO     selection_nodes:dec_left_op_right:389 Step 22: left_op_right: rejected if ['d_table_score_node20>0.9*13 & variance explained>2.0*0.4'], else nochange
INFO     selection_nodes:dec_left_op_right:391 Step 22: left_op_right Reject if a combination of variance and ranks of other metrics are worse than others
INFO     selection_utils:log_decision_tree_step:436 Step 22: left_op_right applied to 17 components. 5 True -> rejected. 12 False -> nochange.
INFO     selection_utils:log_classification_counts:481 Step 22: Total component classifications: 6 accepted, 8 provisionalaccept, 25 rejected, 1 unclass_highvar, 3 unclassified
INFO     selection_nodes:calc_varex_thresh:1308 Step 23: calc_varex_thresh: Calc varex_new_lower_thresh, 25th percentile threshold
INFO     selection_nodes:calc_varex_thresh:1332 Step 23: calc_varex_thresh: num_highest_var_comps (13) > len(comps2use) (12). Setting to equal len(comps2use) since selection should not use more components than exist
INFO     selection_utils:log_decision_tree_step:448 Step 23: calc_varex_thresh calculated: varex_new_lower_thresh=0.5074016845951149, new_lower_perc=25
INFO     selection_utils:log_classification_counts:481 Step 23: Total component classifications: 6 accepted, 8 provisionalaccept, 25 rejected, 1 unclass_highvar, 3 unclassified
INFO     selection_nodes:dec_left_op_right:389 Step 24: left_op_right: accepted if ['d_table_score_node20>13 & variance explained>0.51'], else nochange
INFO     selection_nodes:dec_left_op_right:391 Step 24: left_op_right Accept components with a bad d_table_score, but are at the higher end of the remaining variance so more cautious to not remove
INFO     selection_utils:log_decision_tree_step:436 Step 24: left_op_right applied to 12 components. 1 True -> accepted. 11 False -> nochange.
INFO     selection_utils:log_classification_counts:481 Step 24: Total component classifications: 7 accepted, 8 provisionalaccept, 25 rejected, 1 unclass_highvar, 2 unclassified
INFO     selection_nodes:dec_left_op_right:389 Step 25: left_op_right: accepted if ['kappa<=24.01 & variance explained>0.51'], else nochange
INFO     selection_nodes:dec_left_op_right:391 Step 25: left_op_right For not already rejected components, accept ones below the kappa elbow, but at the higher end of the remaining variance so more cautious to not remove
INFO     selection_utils:comptable_classification_changer:282 Step 25: No components fit criterion True to change classification
INFO     selection_utils:log_decision_tree_step:436 Step 25: left_op_right applied to 11 components. 0 True -> accepted. 11 False -> nochange.
INFO     selection_utils:log_classification_counts:481 Step 25: Total component classifications: 7 accepted, 8 provisionalaccept, 25 rejected, 1 unclass_highvar, 2 unclassified
INFO     selection_nodes:manual_classify:104 Step 26: manual_classify: Set ['provisionalaccept', 'unclassified', 'unclass_highvar'] to accepted 
INFO     selection_nodes:manual_classify:106 Step 26: manual_classify Anything still provisional (accepted or rejected) or unclassified should be accepted
INFO     selection_utils:log_decision_tree_step:436 Step 26: manual_classify applied to 11 components. 11 True -> accepted. 0 False -> nochange.
INFO     selection_utils:log_classification_counts:481 Step 26: Total component classifications: 18 accepted, 25 rejected
INFO     io:denoise_ts:560 Variance explained by decomposition: 91.66%
INFO     io:write_split_ts:632 Writing high-Kappa time series: /home/runner/work/multi-echo-data-analysis/multi-echo-data-analysis/data/multi-echo-data-analysis/tedana/sub-04570_task-rest_space-scanner_desc-optcomAccepted_bold.nii.gz
INFO     io:write_split_ts:640 Writing low-Kappa time series: /home/runner/work/multi-echo-data-analysis/multi-echo-data-analysis/data/multi-echo-data-analysis/tedana/sub-04570_task-rest_space-scanner_desc-optcomRejected_bold.nii.gz
INFO     io:write_split_ts:647 Writing denoised time series: /home/runner/work/multi-echo-data-analysis/multi-echo-data-analysis/data/multi-echo-data-analysis/tedana/sub-04570_task-rest_space-scanner_desc-denoised_bold.nii.gz
INFO     io:writeresults:696 Writing full ICA coefficient feature set: /home/runner/work/multi-echo-data-analysis/multi-echo-data-analysis/data/multi-echo-data-analysis/tedana/sub-04570_task-rest_space-scanner_desc-ICA_components.nii.gz
INFO     io:writeresults:700 Writing denoised ICA coefficient feature set: /home/runner/work/multi-echo-data-analysis/multi-echo-data-analysis/data/multi-echo-data-analysis/tedana/sub-04570_task-rest_space-scanner_desc-ICAAccepted_components.nii.gz
INFO     io:writeresults:706 Writing Z-normalized spatial component maps: /home/runner/work/multi-echo-data-analysis/multi-echo-data-analysis/data/multi-echo-data-analysis/tedana/sub-04570_task-rest_space-scanner_desc-ICAAccepted_stat-z_components.nii.gz
INFO     gscontrol:minimum_image_regression:207 Performing minimum image regression to remove spatially-diffuse noise
WARNING  gscontrol:minimum_image_regression:219 Decision tree does not contain classification tags indicating low variance components (low variance, accept borderline).
INFO     io:writeresults_echoes:746 Writing Kappa-filtered echo #1 timeseries
INFO     io:denoise_ts:560 Variance explained by decomposition: 83.21%
INFO     io:write_split_ts:629 Writing high-Kappa time series: /home/runner/work/multi-echo-data-analysis/multi-echo-data-analysis/data/multi-echo-data-analysis/tedana/sub-04570_task-rest_space-scanner_echo-1_desc-Accepted_bold.nii.gz
INFO     io:write_split_ts:637 Writing low-Kappa time series: /home/runner/work/multi-echo-data-analysis/multi-echo-data-analysis/data/multi-echo-data-analysis/tedana/sub-04570_task-rest_space-scanner_echo-1_desc-Rejected_bold.nii.gz
INFO     io:write_split_ts:647 Writing denoised time series: /home/runner/work/multi-echo-data-analysis/multi-echo-data-analysis/data/multi-echo-data-analysis/tedana/sub-04570_task-rest_space-scanner_echo-1_desc-Denoised_bold.nii.gz
INFO     io:writeresults_echoes:746 Writing Kappa-filtered echo #2 timeseries
INFO     io:denoise_ts:560 Variance explained by decomposition: 84.82%
INFO     io:write_split_ts:629 Writing high-Kappa time series: /home/runner/work/multi-echo-data-analysis/multi-echo-data-analysis/data/multi-echo-data-analysis/tedana/sub-04570_task-rest_space-scanner_echo-2_desc-Accepted_bold.nii.gz
INFO     io:write_split_ts:637 Writing low-Kappa time series: /home/runner/work/multi-echo-data-analysis/multi-echo-data-analysis/data/multi-echo-data-analysis/tedana/sub-04570_task-rest_space-scanner_echo-2_desc-Rejected_bold.nii.gz
INFO     io:write_split_ts:647 Writing denoised time series: /home/runner/work/multi-echo-data-analysis/multi-echo-data-analysis/data/multi-echo-data-analysis/tedana/sub-04570_task-rest_space-scanner_echo-2_desc-Denoised_bold.nii.gz
INFO     io:writeresults_echoes:746 Writing Kappa-filtered echo #3 timeseries
INFO     io:denoise_ts:560 Variance explained by decomposition: 85.41%
INFO     io:write_split_ts:629 Writing high-Kappa time series: /home/runner/work/multi-echo-data-analysis/multi-echo-data-analysis/data/multi-echo-data-analysis/tedana/sub-04570_task-rest_space-scanner_echo-3_desc-Accepted_bold.nii.gz
INFO     io:write_split_ts:637 Writing low-Kappa time series: /home/runner/work/multi-echo-data-analysis/multi-echo-data-analysis/data/multi-echo-data-analysis/tedana/sub-04570_task-rest_space-scanner_echo-3_desc-Rejected_bold.nii.gz
INFO     io:write_split_ts:647 Writing denoised time series: /home/runner/work/multi-echo-data-analysis/multi-echo-data-analysis/data/multi-echo-data-analysis/tedana/sub-04570_task-rest_space-scanner_echo-3_desc-Denoised_bold.nii.gz
INFO     io:writeresults_echoes:746 Writing Kappa-filtered echo #4 timeseries
INFO     io:denoise_ts:560 Variance explained by decomposition: 85.34%
INFO     io:write_split_ts:629 Writing high-Kappa time series: /home/runner/work/multi-echo-data-analysis/multi-echo-data-analysis/data/multi-echo-data-analysis/tedana/sub-04570_task-rest_space-scanner_echo-4_desc-Accepted_bold.nii.gz
INFO     io:write_split_ts:637 Writing low-Kappa time series: /home/runner/work/multi-echo-data-analysis/multi-echo-data-analysis/data/multi-echo-data-analysis/tedana/sub-04570_task-rest_space-scanner_echo-4_desc-Rejected_bold.nii.gz
INFO     io:write_split_ts:647 Writing denoised time series: /home/runner/work/multi-echo-data-analysis/multi-echo-data-analysis/data/multi-echo-data-analysis/tedana/sub-04570_task-rest_space-scanner_echo-4_desc-Denoised_bold.nii.gz
INFO     tedana:tedana_workflow:1025 Making figures folder with static component maps and timecourse plots.
INFO     io:denoise_ts:560 Variance explained by decomposition: 91.66%
/opt/hostedtoolcache/Python/3.10.16/x64/lib/python3.10/site-packages/tedana/io.py:833: UserWarning: Data array used to create a new image contains 64-bit ints. This is likely due to creating the array with numpy and passing `int` as the `dtype`. Many tools such as FSL and SPM cannot deal with int64 in Nifti images, so for compatibility the data has been converted to int32.
  nii = new_img_like(ref_img, newdata, affine=affine, copy_header=copy_header)
/opt/hostedtoolcache/Python/3.10.16/x64/lib/python3.10/site-packages/tedana/io.py:833: UserWarning: Data array used to create a new image contains 64-bit ints. This is likely due to creating the array with numpy and passing `int` as the `dtype`. Many tools such as FSL and SPM cannot deal with int64 in Nifti images, so for compatibility the data has been converted to int32.
  nii = new_img_like(ref_img, newdata, affine=affine, copy_header=copy_header)
/opt/hostedtoolcache/Python/3.10.16/x64/lib/python3.10/site-packages/tedana/io.py:833: UserWarning: Data array used to create a new image contains 64-bit ints. This is likely due to creating the array with numpy and passing `int` as the `dtype`. Many tools such as FSL and SPM cannot deal with int64 in Nifti images, so for compatibility the data has been converted to int32.
  nii = new_img_like(ref_img, newdata, affine=affine, copy_header=copy_header)
/opt/hostedtoolcache/Python/3.10.16/x64/lib/python3.10/site-packages/nilearn/plotting/img_plotting.py:1317: UserWarning: Non-finite values detected. These values will be replaced with zeros.
  safe_get_data(stat_map_img, ensure_finite=True),
INFO     tedana:tedana_workflow:1058 Generating dynamic report
INFO     tedana:tedana_workflow:1061 Workflow completed

The tedana workflow writes out a number of files.

out_files = sorted(glob(os.path.join(out_dir, "*")))
out_files = [os.path.basename(f) for f in out_files]
print("\n".join(out_files))
figures
sub-04570_task-rest_space-scanner_S0map.nii.gz
sub-04570_task-rest_space-scanner_T2starmap.nii.gz
sub-04570_task-rest_space-scanner_dataset_description.json
sub-04570_task-rest_space-scanner_desc-ICAAcceptedMIRDenoised_components.nii.gz
sub-04570_task-rest_space-scanner_desc-ICAAccepted_components.nii.gz
sub-04570_task-rest_space-scanner_desc-ICAAccepted_stat-z_components.nii.gz
sub-04570_task-rest_space-scanner_desc-ICAAveragingWeights_components.nii.gz
sub-04570_task-rest_space-scanner_desc-ICACrossComponent_metrics.json
sub-04570_task-rest_space-scanner_desc-ICAMIRDenoised_mixing.tsv
sub-04570_task-rest_space-scanner_desc-ICAS0_stat-F_statmap.nii.gz
sub-04570_task-rest_space-scanner_desc-ICAT2_stat-F_statmap.nii.gz
sub-04570_task-rest_space-scanner_desc-ICA_components.nii.gz
sub-04570_task-rest_space-scanner_desc-ICA_decision_tree.json
sub-04570_task-rest_space-scanner_desc-ICA_decomposition.json
sub-04570_task-rest_space-scanner_desc-ICA_mixing.tsv
sub-04570_task-rest_space-scanner_desc-ICA_stat-z_components.nii.gz
sub-04570_task-rest_space-scanner_desc-ICA_status_table.tsv
sub-04570_task-rest_space-scanner_desc-PCAAveragingWeights_components.nii.gz
sub-04570_task-rest_space-scanner_desc-PCACrossComponent_metrics.json
sub-04570_task-rest_space-scanner_desc-PCAS0_stat-F_statmap.nii.gz
sub-04570_task-rest_space-scanner_desc-PCAT2_stat-F_statmap.nii.gz
sub-04570_task-rest_space-scanner_desc-PCA_decomposition.json
sub-04570_task-rest_space-scanner_desc-PCA_metrics.json
sub-04570_task-rest_space-scanner_desc-PCA_metrics.tsv
sub-04570_task-rest_space-scanner_desc-PCA_mixing.tsv
sub-04570_task-rest_space-scanner_desc-PCA_stat-z_components.nii.gz
sub-04570_task-rest_space-scanner_desc-T1likeEffect_min.nii.gz
sub-04570_task-rest_space-scanner_desc-adaptiveGoodSignal_mask.nii.gz
sub-04570_task-rest_space-scanner_desc-confounds_timeseries.tsv
sub-04570_task-rest_space-scanner_desc-denoised_bold.nii.gz
sub-04570_task-rest_space-scanner_desc-limited_S0map.nii.gz
sub-04570_task-rest_space-scanner_desc-limited_T2starmap.nii.gz
sub-04570_task-rest_space-scanner_desc-optcomAcceptedMIRDenoised_bold.nii.gz
sub-04570_task-rest_space-scanner_desc-optcomAccepted_bold.nii.gz
sub-04570_task-rest_space-scanner_desc-optcomMIRDenoised_bold.nii.gz
sub-04570_task-rest_space-scanner_desc-optcomRejected_bold.nii.gz
sub-04570_task-rest_space-scanner_desc-optcom_bold.nii.gz
sub-04570_task-rest_space-scanner_desc-optcom_whitened_bold.nii.gz
sub-04570_task-rest_space-scanner_desc-rmse_statmap.nii.gz
sub-04570_task-rest_space-scanner_desc-tedana_metrics.json
sub-04570_task-rest_space-scanner_desc-tedana_metrics.tsv
sub-04570_task-rest_space-scanner_desc-tedana_registry.json
sub-04570_task-rest_space-scanner_echo-1_desc-Accepted_bold.nii.gz
sub-04570_task-rest_space-scanner_echo-1_desc-Denoised_bold.nii.gz
sub-04570_task-rest_space-scanner_echo-1_desc-ICAS0ModelPredictions_components.nii.gz
sub-04570_task-rest_space-scanner_echo-1_desc-ICAT2ModelPredictions_components.nii.gz
sub-04570_task-rest_space-scanner_echo-1_desc-ICA_components.nii.gz
sub-04570_task-rest_space-scanner_echo-1_desc-PCAS0ModelPredictions_components.nii.gz
sub-04570_task-rest_space-scanner_echo-1_desc-PCAT2ModelPredictions_components.nii.gz
sub-04570_task-rest_space-scanner_echo-1_desc-PCA_components.nii.gz
sub-04570_task-rest_space-scanner_echo-1_desc-Rejected_bold.nii.gz
sub-04570_task-rest_space-scanner_echo-2_desc-Accepted_bold.nii.gz
sub-04570_task-rest_space-scanner_echo-2_desc-Denoised_bold.nii.gz
sub-04570_task-rest_space-scanner_echo-2_desc-ICAS0ModelPredictions_components.nii.gz
sub-04570_task-rest_space-scanner_echo-2_desc-ICAT2ModelPredictions_components.nii.gz
sub-04570_task-rest_space-scanner_echo-2_desc-ICA_components.nii.gz
sub-04570_task-rest_space-scanner_echo-2_desc-PCAS0ModelPredictions_components.nii.gz
sub-04570_task-rest_space-scanner_echo-2_desc-PCAT2ModelPredictions_components.nii.gz
sub-04570_task-rest_space-scanner_echo-2_desc-PCA_components.nii.gz
sub-04570_task-rest_space-scanner_echo-2_desc-Rejected_bold.nii.gz
sub-04570_task-rest_space-scanner_echo-3_desc-Accepted_bold.nii.gz
sub-04570_task-rest_space-scanner_echo-3_desc-Denoised_bold.nii.gz
sub-04570_task-rest_space-scanner_echo-3_desc-ICAS0ModelPredictions_components.nii.gz
sub-04570_task-rest_space-scanner_echo-3_desc-ICAT2ModelPredictions_components.nii.gz
sub-04570_task-rest_space-scanner_echo-3_desc-ICA_components.nii.gz
sub-04570_task-rest_space-scanner_echo-3_desc-PCAS0ModelPredictions_components.nii.gz
sub-04570_task-rest_space-scanner_echo-3_desc-PCAT2ModelPredictions_components.nii.gz
sub-04570_task-rest_space-scanner_echo-3_desc-PCA_components.nii.gz
sub-04570_task-rest_space-scanner_echo-3_desc-Rejected_bold.nii.gz
sub-04570_task-rest_space-scanner_echo-4_desc-Accepted_bold.nii.gz
sub-04570_task-rest_space-scanner_echo-4_desc-Denoised_bold.nii.gz
sub-04570_task-rest_space-scanner_echo-4_desc-ICAS0ModelPredictions_components.nii.gz
sub-04570_task-rest_space-scanner_echo-4_desc-ICAT2ModelPredictions_components.nii.gz
sub-04570_task-rest_space-scanner_echo-4_desc-ICA_components.nii.gz
sub-04570_task-rest_space-scanner_echo-4_desc-PCAS0ModelPredictions_components.nii.gz
sub-04570_task-rest_space-scanner_echo-4_desc-PCAT2ModelPredictions_components.nii.gz
sub-04570_task-rest_space-scanner_echo-4_desc-PCA_components.nii.gz
sub-04570_task-rest_space-scanner_echo-4_desc-Rejected_bold.nii.gz
sub-04570_task-rest_space-scanner_references.bib
sub-04570_task-rest_space-scanner_report.txt
sub-04570_task-rest_space-scanner_tedana_report.html
tedana_2025-02-25T142427.tsv
metrics = pd.read_table(
    os.path.join(out_dir, "sub-04570_task-rest_space-scanner_desc-tedana_metrics.tsv")
)
Hide code cell source
def color_rejected_red(series):
    """Color rejected components red."""
    return [
        "color: red" if series["classification"] == "rejected" else "" for v in series
    ]


metrics.style.apply(color_rejected_red, axis=1)
  Component kappa rho variance explained normalized variance explained countsigFT2 countsigFS0 dice_FT2 dice_FS0 countnoise signal-noise_t signal-noise_p d_table_score optimal sign varex kappa ratio d_table_score_node20 classification classification_tags
0 ICA_00 23.963910 18.845160 0.974387 0.014406 813 766 0.000000 0.000000 1223 -2.264125 0.025652 31.200000 1 3.124711 nan rejected Unlikely BOLD
1 ICA_01 18.386390 15.105416 0.209236 0.002638 322 163 0.243200 0.000000 1228 0.000000 0.000000 31.200000 1 0.874533 nan accepted Low variance
2 ICA_02 53.904796 11.570936 0.365079 0.004694 1849 375 0.621872 0.252033 880 10.298052 0.000000 7.600000 -1 0.520470 6.600000 accepted Likely BOLD
3 ICA_03 22.443964 29.659039 0.394177 0.005023 840 1175 0.336829 0.364685 1183 0.000000 0.000000 25.800000 1 1.349670 nan rejected Unlikely BOLD
4 ICA_04 36.402447 36.417731 1.079447 0.010505 2030 1616 0.447545 0.424479 1136 7.114071 0.000000 14.400000 -1 2.278803 nan rejected Unlikely BOLD
5 ICA_05 14.776330 53.185372 0.539564 0.012173 280 786 0.000000 0.362080 509 -8.452758 0.000000 31.000000 -1 2.806160 nan rejected Unlikely BOLD
6 ICA_06 35.682686 41.152975 1.411969 0.016422 722 729 0.268085 0.332160 1050 6.150607 0.000002 19.000000 -1 3.040910 nan rejected Unlikely BOLD
7 ICA_07 102.876143 10.929019 0.754819 0.009029 3277 362 0.669988 0.166436 613 6.615788 0.000000 2.800000 -1 0.563851 2.400000 accepted Likely BOLD
8 ICA_08 14.768110 20.934533 0.273712 0.003667 226 300 0.059908 0.384615 997 -6.963965 0.000000 34.200000 -1 1.424309 nan rejected Unlikely BOLD
9 ICA_09 21.605372 17.761140 0.307787 0.004137 388 282 0.000000 0.000000 1225 0.000000 0.000000 32.000000 1 1.094775 nan accepted Low variance
10 ICA_10 49.297713 30.183255 0.940788 0.012705 3215 1499 0.515872 0.268544 1121 -1.525198 0.131335 16.400000 1 1.466563 nan rejected Unlikely BOLD
11 ICA_11 22.601135 36.298328 0.453209 0.004387 470 538 0.341151 0.458527 1089 1.325181 0.197289 23.400000 -1 1.541007 nan rejected Unlikely BOLD
12 ICA_12 23.968036 20.341244 0.472085 0.004739 570 377 0.255958 0.176471 1148 -3.632142 0.000857 29.000000 -1 1.513643 17.000000 accepted Likely BOLD
13 ICA_13 24.006483 14.921336 0.218386 0.003102 1128 630 0.319091 0.296675 1231 0.000000 0.000000 26.000000 -1 0.699088 nan accepted Low variance
14 ICA_14 52.863978 11.030685 0.808909 0.009880 2942 188 0.563806 0.000000 929 12.391319 0.000000 7.600000 -1 1.175915 6.600000 accepted Likely BOLD
15 ICA_15 28.881649 23.392165 1.202041 0.011165 1297 433 0.313320 0.163170 1233 0.000000 0.000000 25.200000 1 3.198404 15.200000 rejected Less likely BOLD
16 ICA_16 25.912802 31.719562 0.420603 0.004614 392 463 0.304124 0.282916 1099 0.000000 0.000000 26.400000 1 1.247365 nan rejected Unlikely BOLD
17 ICA_17 16.999247 19.297453 0.278863 0.003151 420 655 0.203593 0.222566 1230 0.000000 0.000000 31.800000 -1 1.260659 nan rejected Unlikely BOLD
18 ICA_18 66.799022 11.946827 0.683821 0.006818 2054 421 0.645953 0.255696 689 14.985958 0.000000 4.400000 -1 0.786699 3.800000 accepted Likely BOLD
19 ICA_19 37.562890 40.905321 1.464678 0.015207 547 710 0.389199 0.400868 1001 3.334854 0.002702 17.000000 1 2.996533 nan rejected Unlikely BOLD
20 ICA_20 15.305864 21.290880 0.407149 0.006202 45 192 0.000000 0.317708 831 -2.145011 0.032462 33.200000 -1 2.044238 nan rejected Unlikely BOLD
21 ICA_21 84.952283 11.250273 1.244685 0.008481 2580 288 0.658527 0.117647 628 10.338983 0.000000 3.400000 1 1.125953 3.000000 accepted Likely BOLD
22 ICA_22 47.428357 22.884456 18.118683 0.147507 5043 2404 0.457943 0.179092 1041 0.000000 0.000000 13.600000 -1 29.357867 9.400000 rejected Less likely BOLD
23 ICA_23 12.120251 29.573528 0.326093 0.004685 94 214 0.000000 0.503529 650 -8.669511 0.000000 33.600000 1 2.067595 nan rejected Unlikely BOLD
24 ICA_24 34.286932 24.547042 0.972365 0.010708 1262 419 0.400000 0.000000 1251 0.000000 0.000000 22.800000 1 2.179397 13.800000 rejected Less likely BOLD
25 ICA_25 16.953422 16.732650 0.211095 0.002731 260 459 0.000000 0.317181 1270 0.000000 0.000000 36.400000 1 0.956880 nan rejected Unlikely BOLD
26 ICA_26 20.361392 14.432911 0.176224 0.002748 500 235 0.377510 0.186147 1203 3.117638 0.002406 24.200000 1 0.665110 nan accepted Low variance
27 ICA_27 33.321036 32.060287 0.865706 0.010818 492 365 0.357895 0.000000 1084 0.000000 0.000000 22.800000 1 1.996586 14.600000 rejected Less likely BOLD
28 ICA_28 30.108351 12.927686 1.039400 0.007045 1158 121 0.388220 0.000000 1155 0.000000 0.000000 22.200000 1 2.652965 14.400000 rejected Less likely BOLD
29 ICA_29 80.883760 12.626881 0.636901 0.010566 2945 465 0.581311 0.026287 601 8.423694 0.000000 4.000000 -1 0.605127 3.600000 accepted Likely BOLD
30 ICA_30 43.827473 11.578461 0.519174 0.005640 1534 313 0.566335 0.130081 819 14.342942 0.000000 9.000000 1 0.910338 8.000000 accepted Likely BOLD
31 ICA_31 29.139108 23.873300 0.759698 0.011004 1720 1160 0.207729 0.188510 1255 0.000000 0.000000 26.600000 -1 2.003553 15.400000 accepted Accept borderline
32 ICA_32 14.755411 17.029743 0.269894 0.003557 401 440 0.000000 0.000000 1239 0.000000 0.000000 35.000000 1 1.405653 nan rejected Unlikely BOLD
33 ICA_33 44.086324 18.077004 1.513722 0.009673 2119 408 0.523480 0.037783 777 1.150975 0.250259 10.600000 -1 2.638628 8.400000 accepted Likely BOLD
34 ICA_34 56.429382 10.814910 0.247334 0.004278 1781 95 0.617319 0.000000 666 11.382307 0.000000 6.000000 1 0.336833 5.200000 accepted Likely BOLD
35 ICA_35 17.790500 12.597793 0.232961 0.003241 285 51 0.352113 0.000000 1242 -5.030514 0.000018 33.600000 -1 1.006310 nan accepted Low variance
36 ICA_36 32.499106 34.934669 0.689722 0.007488 1095 1807 0.434334 0.462183 1082 0.153060 0.878607 18.200000 1 1.630942 nan rejected Unlikely BOLD
37 ICA_37 70.548540 17.969418 29.229082 0.233936 5731 1645 0.566419 0.110131 709 0.000000 0.000000 8.600000 -1 31.839269 5.800000 accepted Likely BOLD
38 ICA_38 21.288556 23.449890 1.429819 0.018098 1218 1285 0.240820 0.334156 1131 2.114198 0.037227 23.600000 -1 5.161439 nan rejected Unlikely BOLD
39 ICA_39 32.808892 32.459510 1.024512 0.010649 683 544 0.362297 0.336725 1065 0.000000 0.000000 21.600000 1 2.399724 14.000000 rejected Less likely BOLD
40 ICA_40 16.606237 18.724607 0.389232 0.005196 270 307 0.172084 0.164204 920 -10.839641 0.000000 32.800000 1 1.801246 nan rejected Unlikely BOLD
41 ICA_41 48.017993 36.938387 26.082638 0.311829 6059 5930 0.515417 0.356028 719 0.000000 0.000000 10.800000 1 41.742980 7.600000 rejected Less likely BOLD
42 ICA_42 17.346959 15.014701 0.360350 0.005460 268 68 0.434263 0.135338 956 5.441800 0.000000 22.600000 -1 1.596382 nan accepted Low variance
with open(
    os.path.join(out_dir, "sub-04570_task-rest_space-scanner_desc-tedana_metrics.json"),
    "r",
) as fo:
    data = json.load(fo)

first_five_keys = list(data.keys())[:5]
reduced_data = {k: data[k] for k in first_five_keys}
pprint(reduced_data)
{'Component': {'Description': 'The unique identifier of each component. This '
                              'identifier matches column names in the mixing '
                              'matrix TSV file.',
               'LongName': 'Component identifier'},
 'classification_tags': {'Description': 'A single tag or a comma separated '
                                        'list of tags to describe why a '
                                        'component received its classification',
                         'LongName': 'Component classification tags'},
 'countnoise': {'Description': "Number of 'noise' voxels (voxels highly "
                               'weighted for component, but not from clusters) '
                               'from each component.',
                'LongName': 'Noise voxel count',
                'Units': 'voxel'},
 'countsigFS0': {'Description': 'Number of significant voxels from the '
                                'cluster-extent thresholded S0 model '
                                'F-statistic map for each component.',
                 'LongName': 'S0 model F-statistic map significant voxel count',
                 'Units': 'voxel'},
 'countsigFT2': {'Description': 'Number of significant voxels from the '
                                'cluster-extent thresholded T2 model '
                                'F-statistic map for each component.',
                 'LongName': 'T2 model F-statistic map significant voxel count',
                 'Units': 'voxel'}}
df = pd.DataFrame.from_dict(data, orient="index")
df = df.fillna("n/a")
display(HTML(df.to_html()))
Description LongName Units Levels
Component The unique identifier of each component. This identifier matches column names in the mixing matrix TSV file. Component identifier n/a n/a
classification_tags A single tag or a comma separated list of tags to describe why a component received its classification Component classification tags n/a n/a
countnoise Number of 'noise' voxels (voxels highly weighted for component, but not from clusters) from each component. Noise voxel count voxel n/a
countsigFS0 Number of significant voxels from the cluster-extent thresholded S0 model F-statistic map for each component. S0 model F-statistic map significant voxel count voxel n/a
countsigFT2 Number of significant voxels from the cluster-extent thresholded T2 model F-statistic map for each component. T2 model F-statistic map significant voxel count voxel n/a
d_table_score Summary score compiled from five metrics, with smaller values (i.e., higher ranks) indicating more BOLD dependence and less noise. Decision table score arbitrary n/a
dice_FS0 Dice value of cluster-extent thresholded maps of S0-model betas and F-statistics. S0 model beta map-F-statistic map Dice similarity index arbitrary n/a
dice_FT2 Dice value of cluster-extent thresholded maps of T2-model betas and F-statistics. T2 model beta map-F-statistic map Dice similarity index arbitrary n/a
kappa A pseudo-F-statistic indicating TE-dependence of the component. This metric is calculated by computing fit to the TE-dependence model at each voxel, and then performing a weighted average based on the voxel-wise weights of the component. Kappa arbitrary n/a
normalized variance explained Normalized variance explained in the optimally combined data of each component.On a scale from 0 to 1. Normalized variance explained arbitrary n/a
optimal sign Optimal sign determined based on skew direction of component parameter estimates across the brain. In cases where components were left-skewed (-1), the component time series is flipped prior to metric calculation. Optimal component sign n/a {'-1': 'Component is flipped prior to metric calculation.', '1': 'Component is not flipped prior to metric calculation.'}
rho A pseudo-F-statistic indicating TE-independence of the component. This metric is calculated by computing fit to the TE-independence model at each voxel, and then performing a weighted average based on the voxel-wise weights of the component. Rho arbitrary n/a
signal-noise_p P-value for two-sample t-test of F-statistics from 'signal' voxels (voxels in clusters) against 'noise' voxels (voxels not in clusters) for T2 model. Signal > noise p-value arbitrary n/a
signal-noise_t T-statistic for two-sample t-test of F-statistics from 'signal' voxels (voxels in clusters) against 'noise' voxels (voxels not in clusters) for T2 model. Signal > noise t-statistic arbitrary n/a
variance explained Variance explained in the optimally combined data of each component. On a scale from 0 to 100. Variance explained arbitrary n/a
report = os.path.join(out_dir, "tedana_report.html")
with open(report, "r") as fo:
    report_data = fo.read()

figures_dir = os.path.relpath(os.path.join(out_dir, "figures"), os.getcwd())
report_data = report_data.replace("./figures", figures_dir)

display(HTML(report_data))
---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
Cell In[9], line 2
      1 report = os.path.join(out_dir, "tedana_report.html")
----> 2 with open(report, "r") as fo:
      3     report_data = fo.read()
      5 figures_dir = os.path.relpath(os.path.join(out_dir, "figures"), os.getcwd())

File /opt/hostedtoolcache/Python/3.10.16/x64/lib/python3.10/site-packages/IPython/core/interactiveshell.py:324, in _modified_open(file, *args, **kwargs)
    317 if file in {0, 1, 2}:
    318     raise ValueError(
    319         f"IPython won't let you open fd={file} by default "
    320         "as it is likely to crash IPython. If you know what you are doing, "
    321         "you can use builtins' open."
    322     )
--> 324 return io_open(file, *args, **kwargs)

FileNotFoundError: [Errno 2] No such file or directory: '/home/runner/work/multi-echo-data-analysis/multi-echo-data-analysis/data/multi-echo-data-analysis/tedana/tedana_report.html'