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"],
)
Show 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")
)
Show 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'