Running NiBetaSeries

This example runs through a basic call of NiBetaSeries using the commandline entry point nibs. While this example is using python, typically nibs will be called directly on the commandline.

Import all the necessary packages

import tempfile  # make a temporary directory for files
import os  # interact with the filesystem
import urllib.request  # grad data from internet
import tarfile  # extract files from tar
from subprocess import Popen, PIPE, STDOUT  # enable calling commandline

import matplotlib.pyplot as plt  # manipulate figures
import seaborn as sns  # display results
import pandas as pd   # manipulate tabular data
import nibabel as nib  # load the beta maps in python
from nilearn import plotting  # plot nifti images

Download relevant data from ds000164 (and Atlas Files)

The subject data came from openneuro [notebook-1]. The atlas data came from a recently published parcellation in a publically accessible github repository.

# atlas github repo for reference:
"""https://github.com/ThomasYeoLab/CBIG/raw/master/stable_projects/\
brain_parcellation/Schaefer2018_LocalGlobal/Parcellations/MNI/"""
data_dir = tempfile.mkdtemp()
print('Our working directory: {}'.format(data_dir))

# download the tar data
url = "https://www.dropbox.com/s/fvtyld08srwl3x9/ds000164-test_v2.tar.gz?dl=1"
tar_file = os.path.join(data_dir, "ds000164.tar.gz")
u = urllib.request.urlopen(url)
data = u.read()
u.close()

# write tar data to file
with open(tar_file, "wb") as f:
    f.write(data)

# extract the data
tar = tarfile.open(tar_file, mode='r|gz')
tar.extractall(path=data_dir)

os.remove(tar_file)

Out:

Our working directory: /tmp/tmp2_si98o3

Display the minimal dataset necessary to run nibs

# https://stackoverflow.com/questions/9727673/list-directory-tree-structure-in-python
def list_files(startpath):
    for root, dirs, files in os.walk(startpath):
        level = root.replace(startpath, '').count(os.sep)
        indent = ' ' * 4 * (level)
        print('{}{}/'.format(indent, os.path.basename(root)))
        subindent = ' ' * 4 * (level + 1)
        for f in files:
            print('{}{}'.format(subindent, f))


list_files(data_dir)

Out:

tmp2_si98o3/
    ds000164/
        T1w.json
        README
        task-stroop_bold.json
        dataset_description.json
        task-stroop_events.json
        CHANGES
        derivatives/
            data/
                Schaefer2018_100Parcels_7Networks_order.txt
                Schaefer2018_100Parcels_7Networks_order_FSLMNI152_2mm.nii.gz
            fmriprep/
                dataset_description.json
                sub-001/
                    func/
                        sub-001_task-stroop_space-MNI152NLin2009cAsym_desc-preproc_bold.nii.gz
                        sub-001_task-stroop_desc-confounds_regressors.tsv
                        sub-001_task-stroop_space-MNI152NLin2009cAsym_desc-brain_mask.nii.gz
        sub-001/
            anat/
                sub-001_T1w.nii.gz
            func/
                sub-001_task-stroop_bold.nii.gz
                sub-001_task-stroop_events.tsv

Manipulate events file so it satifies assumptions

1. the correct column has 1’s and 0’s corresponding to correct and incorrect, respectively. 2. the condition column is renamed to trial_type nibs currently depends on the “correct” column being binary and the “trial_type” column to contain the trial types of interest.

read the file

events_file = os.path.join(data_dir,
                           "ds000164",
                           "sub-001",
                           "func",
                           "sub-001_task-stroop_events.tsv")
events_df = pd.read_csv(events_file, sep='\t', na_values="n/a")
print(events_df.head())

Out:

    onset  duration correct  condition  response_time
0   0.342         1       Y    neutral          1.186
1   3.345         1       Y  congruent          0.667
2  12.346         1       Y  congruent          0.614
3  15.349         1       Y    neutral          0.696
4  18.350         1       Y    neutral          0.752

replace condition with trial_type

events_df.rename({"condition": "trial_type"}, axis='columns', inplace=True)
print(events_df.head())

Out:

    onset  duration correct trial_type  response_time
0   0.342         1       Y    neutral          1.186
1   3.345         1       Y  congruent          0.667
2  12.346         1       Y  congruent          0.614
3  15.349         1       Y    neutral          0.696
4  18.350         1       Y    neutral          0.752

save the file

events_df.to_csv(events_file, sep="\t", na_rep="n/a", index=False)

Manipulate the region order file

There are several adjustments to the atlas file that need to be completed before we can pass it into nibs. Importantly, the relevant column names MUST be named “index” and “regions”. “index” refers to which integer within the file corresponds to which region in the atlas nifti file. “regions” refers the name of each region in the atlas nifti file.

read the atlas file

atlas_txt = os.path.join(data_dir,
                         "ds000164",
                         "derivatives",
                         "data",
                         "Schaefer2018_100Parcels_7Networks_order.txt")
atlas_df = pd.read_csv(atlas_txt, sep="\t", header=None)
print(atlas_df.head())

Out:

   0                   1    2   3    4  5
0  1  7Networks_LH_Vis_1  120  18  131  0
1  2  7Networks_LH_Vis_2  120  18  132  0
2  3  7Networks_LH_Vis_3  120  18  133  0
3  4  7Networks_LH_Vis_4  120  18  135  0
4  5  7Networks_LH_Vis_5  120  18  136  0

drop color coding columns

atlas_df.drop([2, 3, 4, 5], axis='columns', inplace=True)
print(atlas_df.head())

Out:

   0                   1
0  1  7Networks_LH_Vis_1
1  2  7Networks_LH_Vis_2
2  3  7Networks_LH_Vis_3
3  4  7Networks_LH_Vis_4
4  5  7Networks_LH_Vis_5

rename columns with the approved headings: “index” and “regions”

atlas_df.rename({0: 'index', 1: 'regions'}, axis='columns', inplace=True)
print(atlas_df.head())

Out:

   index             regions
0      1  7Networks_LH_Vis_1
1      2  7Networks_LH_Vis_2
2      3  7Networks_LH_Vis_3
3      4  7Networks_LH_Vis_4
4      5  7Networks_LH_Vis_5

remove prefix “7Networks”

atlas_df.replace(regex={'7Networks_(.*)': '\\1'}, inplace=True)
print(atlas_df.head())

Out:

   index   regions
0      1  LH_Vis_1
1      2  LH_Vis_2
2      3  LH_Vis_3
3      4  LH_Vis_4
4      5  LH_Vis_5

write out the file as .tsv

atlas_tsv = atlas_txt.replace(".txt", ".tsv")
atlas_df.to_csv(atlas_tsv, sep="\t", index=False)

Run nibs

This demonstration mimics how you would use nibs on the command line If you only wanted the beta maps and not the correlation matrices, do not include the atlas (-a) and lookup table options (-l)

out_dir = os.path.join(data_dir, "ds000164", "derivatives")
work_dir = os.path.join(out_dir, "work")
atlas_mni_file = os.path.join(data_dir,
                              "ds000164",
                              "derivatives",
                              "data",
                              "Schaefer2018_100Parcels_7Networks_order_FSLMNI152_2mm.nii.gz")
cmd = """\
nibs -c WhiteMatter CSF \
--participant-label 001 \
--estimator lsa \
--hrf-model glover \
-w {work_dir} \
-a {atlas_mni_file} \
-l {atlas_tsv} \
{bids_dir} \
fmriprep \
{out_dir} \
participant
""".format(atlas_mni_file=atlas_mni_file,
           atlas_tsv=atlas_tsv,
           bids_dir=os.path.join(data_dir, "ds000164"),
           out_dir=out_dir,
           work_dir=work_dir)

# Since we cannot run bash commands inside this tutorial
# we are printing the actual bash command so you can see it
# in the output
print("The Example Command:\n", cmd)

# call nibs
p = Popen(cmd, shell=True, stdout=PIPE, stderr=STDOUT)

while True:
    line = p.stdout.readline()
    if not line:
        break
    print(line)

Out:

The Example Command:
 nibs -c WhiteMatter CSF --participant-label 001 --estimator lsa --hrf-model glover -w /tmp/tmp2_si98o3/ds000164/derivatives/work -a /tmp/tmp2_si98o3/ds000164/derivatives/data/Schaefer2018_100Parcels_7Networks_order_FSLMNI152_2mm.nii.gz -l /tmp/tmp2_si98o3/ds000164/derivatives/data/Schaefer2018_100Parcels_7Networks_order.tsv /tmp/tmp2_si98o3/ds000164 fmriprep /tmp/tmp2_si98o3/ds000164/derivatives participant

b'200124-05:13:38,364 nipype.utils INFO:\n'
b'\t Running nipype version 1.3.2 (latest: 1.4.0)\n'
b'200124-05:13:38,412 nipype.workflow INFO:\n'
b"\t Workflow nibetaseries_participant_wf settings: ['check', 'execution', 'logging', 'monitoring']\n"
b'200124-05:13:38,422 nipype.workflow INFO:\n'
b'\t Running in parallel.\n'
b'200124-05:13:38,426 nipype.workflow INFO:\n'
b'\t [MultiProc] Running 0 tasks, and 1 jobs ready. Free memory (GB): 7.01/7.01, Free processors: 4/4.\n'
b"/home/docs/checkouts/readthedocs.org/user_builds/nibetaseries/envs/v0.4.2/lib/python3.7/site-packages/bids/layout/models.py:157: UserWarning: Accessing entities as attributes is deprecated as of 0.7. Please use the .entities dictionary instead (i.e., .entities['task'] instead of .task.\n"
b'  % (attr, attr))\n'
b"/home/docs/checkouts/readthedocs.org/user_builds/nibetaseries/envs/v0.4.2/lib/python3.7/site-packages/bids/layout/models.py:157: UserWarning: Accessing entities as attributes is deprecated as of 0.7. Please use the .entities dictionary instead (i.e., .entities['space'] instead of .space.\n"
b'  % (attr, attr))\n'
b'200124-05:13:38,477 nipype.workflow INFO:\n'
b'\t [Node] Setting-up "nibetaseries_participant_wf.single_subject001_wf.betaseries_wf.betaseries_node" in "/tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/betaseries_wf/3901a92fcfd79d40c4b452de2ef824046b034750/betaseries_node".\n'
b'200124-05:13:38,483 nipype.workflow INFO:\n'
b'\t [Node] Running "betaseries_node" ("nibetaseries.interfaces.nistats.LSABetaSeries")\n'
b'200124-05:13:40,427 nipype.workflow INFO:\n'
b'\t [MultiProc] Running 1 tasks, and 0 jobs ready. Free memory (GB): 6.81/7.01, Free processors: 3/4.\n'
b'                     Currently running:\n'
b'                       * nibetaseries_participant_wf.single_subject001_wf.betaseries_wf.betaseries_node\n'
b'200124-05:13:44,978 nipype.workflow INFO:\n'
b'\t [Node] Finished "nibetaseries_participant_wf.single_subject001_wf.betaseries_wf.betaseries_node".\n'
b'200124-05:13:46,431 nipype.workflow INFO:\n'
b'\t [Job 0] Completed (nibetaseries_participant_wf.single_subject001_wf.betaseries_wf.betaseries_node).\n'
b'200124-05:13:46,433 nipype.workflow INFO:\n'
b'\t [MultiProc] Running 0 tasks, and 2 jobs ready. Free memory (GB): 7.01/7.01, Free processors: 4/4.\n'
b'200124-05:13:46,474 nipype.workflow INFO:\n'
b'\t [Node] Setting-up "nibetaseries_participant_wf.single_subject001_wf.check_beta_series_list" in "/tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/3901a92fcfd79d40c4b452de2ef824046b034750/check_beta_series_list".\n'
b'200124-05:13:46,480 nipype.workflow INFO:\n'
b'\t [Node] Running "check_beta_series_list" ("nipype.interfaces.utility.wrappers.Function")\n'
b'200124-05:13:46,491 nipype.workflow INFO:\n'
b'\t [Node] Finished "nibetaseries_participant_wf.single_subject001_wf.check_beta_series_list".\n'
b'200124-05:13:48,433 nipype.workflow INFO:\n'
b'\t [Job 2] Completed (nibetaseries_participant_wf.single_subject001_wf.check_beta_series_list).\n'
b'200124-05:13:48,435 nipype.workflow INFO:\n'
b'\t [MultiProc] Running 0 tasks, and 4 jobs ready. Free memory (GB): 7.01/7.01, Free processors: 4/4.\n'
b'200124-05:13:48,481 nipype.workflow INFO:\n'
b'\t [Node] Setting-up "_ds_betaseries_file0" in "/tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/3901a92fcfd79d40c4b452de2ef824046b034750/ds_betaseries_file/mapflow/_ds_betaseries_file0".\n'
b'200124-05:13:48,482 nipype.workflow INFO:\n'
b'\t [Node] Setting-up "_ds_betaseries_file1" in "/tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/3901a92fcfd79d40c4b452de2ef824046b034750/ds_betaseries_file/mapflow/_ds_betaseries_file1".\n'
b'200124-05:13:48,485 nipype.workflow INFO:\n'
b'\t [Node] Running "_ds_betaseries_file0" ("nibetaseries.interfaces.bids.DerivativesDataSink")\n'
b'200124-05:13:48,485 nipype.workflow INFO:\n'
b'\t [Node] Running "_ds_betaseries_file1" ("nibetaseries.interfaces.bids.DerivativesDataSink")\n'
b'200124-05:13:48,488 nipype.workflow INFO:\n'
b'\t [Node] Setting-up "_ds_betaseries_file2" in "/tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/3901a92fcfd79d40c4b452de2ef824046b034750/ds_betaseries_file/mapflow/_ds_betaseries_file2".\n'
b'200124-05:13:48,490 nipype.workflow INFO:\n'
b'\t [Node] Running "_ds_betaseries_file2" ("nibetaseries.interfaces.bids.DerivativesDataSink")\n'
b'200124-05:13:48,500 nipype.workflow INFO:\n'
b'\t [Node] Finished "_ds_betaseries_file2".\n'
b'200124-05:13:48,500 nipype.workflow INFO:\n'
b'\t [Node] Finished "_ds_betaseries_file0".\n'
b'200124-05:13:48,500 nipype.workflow INFO:\n'
b'\t [Node] Finished "_ds_betaseries_file1".\n'
b'200124-05:13:50,435 nipype.workflow INFO:\n'
b'\t [Job 6] Completed (_ds_betaseries_file0).\n'
b'200124-05:13:50,436 nipype.workflow INFO:\n'
b'\t [Job 7] Completed (_ds_betaseries_file1).\n'
b'200124-05:13:50,436 nipype.workflow INFO:\n'
b'\t [Job 8] Completed (_ds_betaseries_file2).\n'
b'200124-05:13:50,438 nipype.workflow INFO:\n'
b'\t [MultiProc] Running 0 tasks, and 4 jobs ready. Free memory (GB): 7.01/7.01, Free processors: 4/4.\n'
b'200124-05:13:50,480 nipype.workflow INFO:\n'
b'\t [Node] Setting-up "nibetaseries_participant_wf.single_subject001_wf.ds_betaseries_file" in "/tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/3901a92fcfd79d40c4b452de2ef824046b034750/ds_betaseries_file".\n'
b'200124-05:13:50,482 nipype.workflow INFO:\n'
b'\t [Node] Setting-up "_atlas_corr_node1" in "/tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/correlation_wf/3901a92fcfd79d40c4b452de2ef824046b034750/atlas_corr_node/mapflow/_atlas_corr_node1".\n'
b'200124-05:13:50,483 nipype.workflow INFO:\n'
b'\t [Node] Setting-up "_atlas_corr_node2" in "/tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/correlation_wf/3901a92fcfd79d40c4b452de2ef824046b034750/atlas_corr_node/mapflow/_atlas_corr_node2".\n'
b'200124-05:13:50,484 nipype.workflow INFO:\n'
b'\t [Node] Running "_atlas_corr_node1" ("nibetaseries.interfaces.nilearn.AtlasConnectivity")\n'
b'200124-05:13:50,485 nipype.workflow INFO:\n'
b'\t [Node] Setting-up "_ds_betaseries_file0" in "/tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/3901a92fcfd79d40c4b452de2ef824046b034750/ds_betaseries_file/mapflow/_ds_betaseries_file0".\n'
b'200124-05:13:50,485 nipype.workflow INFO:\n'
b'\t [Node] Running "_atlas_corr_node2" ("nibetaseries.interfaces.nilearn.AtlasConnectivity")\n'
b'200124-05:13:50,486 nipype.workflow INFO:\n'
b'\t [Node] Setting-up "_atlas_corr_node0" in "/tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/correlation_wf/3901a92fcfd79d40c4b452de2ef824046b034750/atlas_corr_node/mapflow/_atlas_corr_node0".\n'
b'200124-05:13:50,488 nipype.workflow INFO:\n'
b'\t [Node] Running "_ds_betaseries_file0" ("nibetaseries.interfaces.bids.DerivativesDataSink")\n'
b'200124-05:13:50,489 nipype.workflow INFO:\n'
b'\t [Node] Running "_atlas_corr_node0" ("nibetaseries.interfaces.nilearn.AtlasConnectivity")\n'
b'200124-05:13:50,501 nipype.workflow INFO:\n'
b'\t [Node] Finished "_ds_betaseries_file0".\n'
b'200124-05:13:50,502 nipype.workflow INFO:\n'
b'\t [Node] Setting-up "_ds_betaseries_file1" in "/tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/3901a92fcfd79d40c4b452de2ef824046b034750/ds_betaseries_file/mapflow/_ds_betaseries_file1".\n'
b'200124-05:13:50,505 nipype.workflow INFO:\n'
b'\t [Node] Running "_ds_betaseries_file1" ("nibetaseries.interfaces.bids.DerivativesDataSink")\n'
b'200124-05:13:50,514 nipype.workflow INFO:\n'
b'\t [Node] Finished "_ds_betaseries_file1".\n'
b'200124-05:13:50,515 nipype.workflow INFO:\n'
b'\t [Node] Setting-up "_ds_betaseries_file2" in "/tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/3901a92fcfd79d40c4b452de2ef824046b034750/ds_betaseries_file/mapflow/_ds_betaseries_file2".\n'
b'200124-05:13:50,518 nipype.workflow INFO:\n'
b'\t [Node] Running "_ds_betaseries_file2" ("nibetaseries.interfaces.bids.DerivativesDataSink")\n'
b'200124-05:13:50,527 nipype.workflow INFO:\n'
b'\t [Node] Finished "_ds_betaseries_file2".\n'
b'200124-05:13:50,529 nipype.workflow INFO:\n'
b'\t [Node] Finished "nibetaseries_participant_wf.single_subject001_wf.ds_betaseries_file".\n'
b'200124-05:13:52,437 nipype.workflow INFO:\n'
b'\t [Job 1] Completed (nibetaseries_participant_wf.single_subject001_wf.ds_betaseries_file).\n'
b'200124-05:13:52,438 nipype.workflow INFO:\n'
b'\t [MultiProc] Running 3 tasks, and 0 jobs ready. Free memory (GB): 6.41/7.01, Free processors: 1/4.\n'
b'                     Currently running:\n'
b'                       * _atlas_corr_node2\n'
b'                       * _atlas_corr_node1\n'
b'                       * _atlas_corr_node0\n'
b'[NiftiLabelsMasker.fit_transform] loading data from /tmp/tmp2_si98o3/ds000164/derivatives/data/Schaefer2018_100Parcels_7Networks_order_FSLMNI152_2mm.nii.gz\n'
b'Resampling labels\n'
b'[NiftiLabelsMasker.transform_single_imgs] Loading data from /tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/betaseries_wf/3901a92fcfd79d40c4b452de2ef824046b034750/betaseries_node/desc-neutral_betase\n'
b'[NiftiLabelsMasker.transform_single_imgs] Extracting region signals\n'
b'[NiftiLabelsMasker.transform_single_imgs] Cleaning extracted signals\n'
b'200124-05:13:58,803 nipype.workflow INFO:\n'
b'\t [Node] Finished "_atlas_corr_node0".\n'
b'[NiftiLabelsMasker.fit_transform] loading data from /tmp/tmp2_si98o3/ds000164/derivatives/data/Schaefer2018_100Parcels_7Networks_order_FSLMNI152_2mm.nii.gz\n'
b'Resampling labels\n'
b'[NiftiLabelsMasker.transform_single_imgs] Loading data from /tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/betaseries_wf/3901a92fcfd79d40c4b452de2ef824046b034750/betaseries_node/desc-incongruent_be\n'
b'[NiftiLabelsMasker.transform_single_imgs] Extracting region signals\n'
b'[NiftiLabelsMasker.transform_single_imgs] Cleaning extracted signals\n'
b'200124-05:13:59,308 nipype.workflow INFO:\n'
b'\t [Node] Finished "_atlas_corr_node2".\n'
b'[NiftiLabelsMasker.fit_transform] loading data from /tmp/tmp2_si98o3/ds000164/derivatives/data/Schaefer2018_100Parcels_7Networks_order_FSLMNI152_2mm.nii.gz\n'
b'Resampling labels\n'
b'[NiftiLabelsMasker.transform_single_imgs] Loading data from /tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/betaseries_wf/3901a92fcfd79d40c4b452de2ef824046b034750/betaseries_node/desc-congruent_beta\n'
b'[NiftiLabelsMasker.transform_single_imgs] Extracting region signals\n'
b'[NiftiLabelsMasker.transform_single_imgs] Cleaning extracted signals\n'
b'200124-05:13:59,771 nipype.workflow INFO:\n'
b'\t [Node] Finished "_atlas_corr_node1".\n'
b'200124-05:14:00,445 nipype.workflow INFO:\n'
b'\t [Job 9] Completed (_atlas_corr_node0).\n'
b'200124-05:14:00,445 nipype.workflow INFO:\n'
b'\t [Job 10] Completed (_atlas_corr_node1).\n'
b'200124-05:14:00,446 nipype.workflow INFO:\n'
b'\t [Job 11] Completed (_atlas_corr_node2).\n'
b'200124-05:14:00,447 nipype.workflow INFO:\n'
b'\t [MultiProc] Running 0 tasks, and 1 jobs ready. Free memory (GB): 7.01/7.01, Free processors: 4/4.\n'
b'200124-05:14:00,480 nipype.workflow INFO:\n'
b'\t [Node] Setting-up "nibetaseries_participant_wf.single_subject001_wf.correlation_wf.atlas_corr_node" in "/tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/correlation_wf/3901a92fcfd79d40c4b452de2ef824046b034750/atlas_corr_node".\n'
b'200124-05:14:00,483 nipype.workflow INFO:\n'
b'\t [Node] Setting-up "_atlas_corr_node0" in "/tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/correlation_wf/3901a92fcfd79d40c4b452de2ef824046b034750/atlas_corr_node/mapflow/_atlas_corr_node0".\n'
b'200124-05:14:00,485 nipype.workflow INFO:\n'
b'\t [Node] Cached "_atlas_corr_node0" - collecting precomputed outputs\n'
b'200124-05:14:00,485 nipype.workflow INFO:\n'
b'\t [Node] "_atlas_corr_node0" found cached.\n'
b'200124-05:14:00,486 nipype.workflow INFO:\n'
b'\t [Node] Setting-up "_atlas_corr_node1" in "/tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/correlation_wf/3901a92fcfd79d40c4b452de2ef824046b034750/atlas_corr_node/mapflow/_atlas_corr_node1".\n'
b'200124-05:14:00,488 nipype.workflow INFO:\n'
b'\t [Node] Cached "_atlas_corr_node1" - collecting precomputed outputs\n'
b'200124-05:14:00,488 nipype.workflow INFO:\n'
b'\t [Node] "_atlas_corr_node1" found cached.\n'
b'200124-05:14:00,489 nipype.workflow INFO:\n'
b'\t [Node] Setting-up "_atlas_corr_node2" in "/tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/correlation_wf/3901a92fcfd79d40c4b452de2ef824046b034750/atlas_corr_node/mapflow/_atlas_corr_node2".\n'
b'200124-05:14:00,490 nipype.workflow INFO:\n'
b'\t [Node] Cached "_atlas_corr_node2" - collecting precomputed outputs\n'
b'200124-05:14:00,490 nipype.workflow INFO:\n'
b'\t [Node] "_atlas_corr_node2" found cached.\n'
b'200124-05:14:00,491 nipype.workflow INFO:\n'
b'\t [Node] Finished "nibetaseries_participant_wf.single_subject001_wf.correlation_wf.atlas_corr_node".\n'
b'200124-05:14:02,447 nipype.workflow INFO:\n'
b'\t [Job 3] Completed (nibetaseries_participant_wf.single_subject001_wf.correlation_wf.atlas_corr_node).\n'
b'200124-05:14:02,449 nipype.workflow INFO:\n'
b'\t [MultiProc] Running 0 tasks, and 2 jobs ready. Free memory (GB): 7.01/7.01, Free processors: 4/4.\n'
b'200124-05:14:04,450 nipype.workflow INFO:\n'
b'\t [MultiProc] Running 0 tasks, and 6 jobs ready. Free memory (GB): 7.01/7.01, Free processors: 4/4.\n'
b'200124-05:14:04,479 nipype.workflow INFO:\n'
b'\t [Node] Setting-up "_ds_correlation_fig0" in "/tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/3901a92fcfd79d40c4b452de2ef824046b034750/ds_correlation_fig/mapflow/_ds_correlation_fig0".\n'
b'200124-05:14:04,480 nipype.workflow INFO:\n'
b'\t [Node] Setting-up "_ds_correlation_fig1" in "/tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/3901a92fcfd79d40c4b452de2ef824046b034750/ds_correlation_fig/mapflow/_ds_correlation_fig1".\n'
b'200124-05:14:04,481 nipype.workflow INFO:\n'
b'\t [Node] Running "_ds_correlation_fig0" ("nibetaseries.interfaces.bids.DerivativesDataSink")\n'
b'200124-05:14:04,481 nipype.workflow INFO:\n'
b'\t [Node] Setting-up "_ds_correlation_fig2" in "/tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/3901a92fcfd79d40c4b452de2ef824046b034750/ds_correlation_fig/mapflow/_ds_correlation_fig2".\n'
b'200124-05:14:04,482 nipype.workflow INFO:\n'
b'\t [Node] Running "_ds_correlation_fig1" ("nibetaseries.interfaces.bids.DerivativesDataSink")\n'
b'200124-05:14:04,483 nipype.workflow INFO:\n'
b'\t [Node] Running "_ds_correlation_fig2" ("nibetaseries.interfaces.bids.DerivativesDataSink")\n'
b'200124-05:14:04,488 nipype.workflow INFO:\n'
b'\t [Node] Setting-up "_ds_correlation_matrix0" in "/tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/3901a92fcfd79d40c4b452de2ef824046b034750/ds_correlation_matrix/mapflow/_ds_correlation_matrix0".\n'
b'200124-05:14:04,490 nipype.workflow INFO:\n'
b'\t [Node] Running "_ds_correlation_matrix0" ("nibetaseries.interfaces.bids.DerivativesDataSink")\n'
b'200124-05:14:04,492 nipype.workflow INFO:\n'
b'\t [Node] Finished "_ds_correlation_fig0".\n'
b'200124-05:14:04,492 nipype.workflow INFO:\n'
b'\t [Node] Finished "_ds_correlation_fig1".\n'
b'200124-05:14:04,493 nipype.workflow INFO:\n'
b'\t [Node] Finished "_ds_correlation_fig2".\n'
b'200124-05:14:04,499 nipype.workflow INFO:\n'
b'\t [Node] Finished "_ds_correlation_matrix0".\n'
b'200124-05:14:06,452 nipype.workflow INFO:\n'
b'\t [Job 12] Completed (_ds_correlation_fig0).\n'
b'200124-05:14:06,452 nipype.workflow INFO:\n'
b'\t [Job 13] Completed (_ds_correlation_fig1).\n'
b'200124-05:14:06,453 nipype.workflow INFO:\n'
b'\t [Job 14] Completed (_ds_correlation_fig2).\n'
b'200124-05:14:06,453 nipype.workflow INFO:\n'
b'\t [Job 15] Completed (_ds_correlation_matrix0).\n'
b'200124-05:14:06,455 nipype.workflow INFO:\n'
b'\t [MultiProc] Running 0 tasks, and 3 jobs ready. Free memory (GB): 7.01/7.01, Free processors: 4/4.\n'
b'200124-05:14:06,491 nipype.workflow INFO:\n'
b'\t [Node] Setting-up "nibetaseries_participant_wf.single_subject001_wf.ds_correlation_fig" in "/tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/3901a92fcfd79d40c4b452de2ef824046b034750/ds_correlation_fig".\n'
b'200124-05:14:06,491 nipype.workflow INFO:\n'
b'\t [Node] Setting-up "_ds_correlation_matrix1" in "/tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/3901a92fcfd79d40c4b452de2ef824046b034750/ds_correlation_matrix/mapflow/_ds_correlation_matrix1".\n'
b'200124-05:14:06,492 nipype.workflow INFO:\n'
b'\t [Node] Setting-up "_ds_correlation_matrix2" in "/tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/3901a92fcfd79d40c4b452de2ef824046b034750/ds_correlation_matrix/mapflow/_ds_correlation_matrix2".\n'
b'200124-05:14:06,493 nipype.workflow INFO:\n'
b'\t [Node] Running "_ds_correlation_matrix1" ("nibetaseries.interfaces.bids.DerivativesDataSink")\n'
b'200124-05:14:06,494 nipype.workflow INFO:\n'
b'\t [Node] Running "_ds_correlation_matrix2" ("nibetaseries.interfaces.bids.DerivativesDataSink")\n'
b'200124-05:14:06,495 nipype.workflow INFO:\n'
b'\t [Node] Setting-up "_ds_correlation_fig0" in "/tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/3901a92fcfd79d40c4b452de2ef824046b034750/ds_correlation_fig/mapflow/_ds_correlation_fig0".\n'
b'200124-05:14:06,498 nipype.workflow INFO:\n'
b'\t [Node] Running "_ds_correlation_fig0" ("nibetaseries.interfaces.bids.DerivativesDataSink")\n'
b'200124-05:14:06,501 nipype.workflow INFO:\n'
b'\t [Node] Finished "_ds_correlation_matrix1".\n'
b'200124-05:14:06,502 nipype.workflow INFO:\n'
b'\t [Node] Finished "_ds_correlation_matrix2".\n'
b'200124-05:14:06,507 nipype.workflow INFO:\n'
b'\t [Node] Finished "_ds_correlation_fig0".\n'
b'200124-05:14:06,508 nipype.workflow INFO:\n'
b'\t [Node] Setting-up "_ds_correlation_fig1" in "/tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/3901a92fcfd79d40c4b452de2ef824046b034750/ds_correlation_fig/mapflow/_ds_correlation_fig1".\n'
b'200124-05:14:06,510 nipype.workflow INFO:\n'
b'\t [Node] Running "_ds_correlation_fig1" ("nibetaseries.interfaces.bids.DerivativesDataSink")\n'
b'200124-05:14:06,520 nipype.workflow INFO:\n'
b'\t [Node] Finished "_ds_correlation_fig1".\n'
b'200124-05:14:06,521 nipype.workflow INFO:\n'
b'\t [Node] Setting-up "_ds_correlation_fig2" in "/tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/3901a92fcfd79d40c4b452de2ef824046b034750/ds_correlation_fig/mapflow/_ds_correlation_fig2".\n'
b'200124-05:14:06,523 nipype.workflow INFO:\n'
b'\t [Node] Running "_ds_correlation_fig2" ("nibetaseries.interfaces.bids.DerivativesDataSink")\n'
b'200124-05:14:06,534 nipype.workflow INFO:\n'
b'\t [Node] Finished "_ds_correlation_fig2".\n'
b'200124-05:14:06,535 nipype.workflow INFO:\n'
b'\t [Node] Finished "nibetaseries_participant_wf.single_subject001_wf.ds_correlation_fig".\n'
b'200124-05:14:08,454 nipype.workflow INFO:\n'
b'\t [Job 4] Completed (nibetaseries_participant_wf.single_subject001_wf.ds_correlation_fig).\n'
b'200124-05:14:08,455 nipype.workflow INFO:\n'
b'\t [Job 16] Completed (_ds_correlation_matrix1).\n'
b'200124-05:14:08,455 nipype.workflow INFO:\n'
b'\t [Job 17] Completed (_ds_correlation_matrix2).\n'
b'200124-05:14:08,456 nipype.workflow INFO:\n'
b'\t [MultiProc] Running 0 tasks, and 1 jobs ready. Free memory (GB): 7.01/7.01, Free processors: 4/4.\n'
b'200124-05:14:08,491 nipype.workflow INFO:\n'
b'\t [Node] Setting-up "nibetaseries_participant_wf.single_subject001_wf.ds_correlation_matrix" in "/tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/3901a92fcfd79d40c4b452de2ef824046b034750/ds_correlation_matrix".\n'
b'200124-05:14:08,494 nipype.workflow INFO:\n'
b'\t [Node] Setting-up "_ds_correlation_matrix0" in "/tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/3901a92fcfd79d40c4b452de2ef824046b034750/ds_correlation_matrix/mapflow/_ds_correlation_matrix0".\n'
b'200124-05:14:08,496 nipype.workflow INFO:\n'
b'\t [Node] Running "_ds_correlation_matrix0" ("nibetaseries.interfaces.bids.DerivativesDataSink")\n'
b'200124-05:14:08,503 nipype.workflow INFO:\n'
b'\t [Node] Finished "_ds_correlation_matrix0".\n'
b'200124-05:14:08,504 nipype.workflow INFO:\n'
b'\t [Node] Setting-up "_ds_correlation_matrix1" in "/tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/3901a92fcfd79d40c4b452de2ef824046b034750/ds_correlation_matrix/mapflow/_ds_correlation_matrix1".\n'
b'200124-05:14:08,506 nipype.workflow INFO:\n'
b'\t [Node] Running "_ds_correlation_matrix1" ("nibetaseries.interfaces.bids.DerivativesDataSink")\n'
b'200124-05:14:08,513 nipype.workflow INFO:\n'
b'\t [Node] Finished "_ds_correlation_matrix1".\n'
b'200124-05:14:08,514 nipype.workflow INFO:\n'
b'\t [Node] Setting-up "_ds_correlation_matrix2" in "/tmp/tmp2_si98o3/ds000164/derivatives/work/NiBetaSeries_work/nibetaseries_participant_wf/single_subject001_wf/3901a92fcfd79d40c4b452de2ef824046b034750/ds_correlation_matrix/mapflow/_ds_correlation_matrix2".\n'
b'200124-05:14:08,515 nipype.workflow INFO:\n'
b'\t [Node] Running "_ds_correlation_matrix2" ("nibetaseries.interfaces.bids.DerivativesDataSink")\n'
b'200124-05:14:08,521 nipype.workflow INFO:\n'
b'\t [Node] Finished "_ds_correlation_matrix2".\n'
b'200124-05:14:08,522 nipype.workflow INFO:\n'
b'\t [Node] Finished "nibetaseries_participant_wf.single_subject001_wf.ds_correlation_matrix".\n'
b'200124-05:14:10,456 nipype.workflow INFO:\n'
b'\t [Job 5] Completed (nibetaseries_participant_wf.single_subject001_wf.ds_correlation_matrix).\n'
b'200124-05:14:10,458 nipype.workflow INFO:\n'
b'\t [MultiProc] Running 0 tasks, and 0 jobs ready. Free memory (GB): 7.01/7.01, Free processors: 4/4.\n'
b'/home/docs/checkouts/readthedocs.org/user_builds/nibetaseries/envs/v0.4.2/lib/python3.7/site-packages/nibetaseries/interfaces/nilearn.py:85: RuntimeWarning: invalid value encountered in greater\n'
b'  n_lines = int(np.sum(connmat > 0) / 2)\n'
b'/home/docs/checkouts/readthedocs.org/user_builds/nibetaseries/envs/v0.4.2/lib/python3.7/site-packages/nibetaseries/interfaces/nistats.py:180: DeprecationWarning: The parameter "mask" will be removed in next release of Nistats. Please use the parameter "mask_img" instead.\n'
b'  verbose=1\n'
b'Computing run 1 out of 1 runs (go take a coffee, a big one)\n'
b'\n'
b'Computation of 1 runs done in 4 seconds\n'
b'\n'
b'/home/docs/checkouts/readthedocs.org/user_builds/nibetaseries/envs/v0.4.2/lib/python3.7/site-packages/nibetaseries/interfaces/nilearn.py:85: RuntimeWarning: invalid value encountered in greater\n'
b'  n_lines = int(np.sum(connmat > 0) / 2)\n'
b'/home/docs/checkouts/readthedocs.org/user_builds/nibetaseries/envs/v0.4.2/lib/python3.7/site-packages/nibetaseries/interfaces/nilearn.py:85: RuntimeWarning: invalid value encountered in greater\n'
b'  n_lines = int(np.sum(connmat > 0) / 2)\n'
b'pandoc: Error running filter pandoc-citeproc:\n'
b"Could not find executable 'pandoc-citeproc'.\n"
b'Could not generate CITATION.html file:\n'
b'pandoc -s --bibliography /home/docs/checkouts/readthedocs.org/user_builds/nibetaseries/envs/v0.4.2/lib/python3.7/site-packages/nibetaseries/data/references.bib --filter pandoc-citeproc --metadata pagetitle="NiBetaSeries citation boilerplate" /tmp/tmp2_si98o3/ds000164/derivatives/nibetaseries/logs/CITATION.md -o /tmp/tmp2_si98o3/ds000164/derivatives/nibetaseries/logs/CITATION.html\n'

Observe generated outputs

list_files(data_dir)

Out:

tmp2_si98o3/
    ds000164/
        T1w.json
        README
        task-stroop_bold.json
        dataset_description.json
        task-stroop_events.json
        CHANGES
        derivatives/
            nibetaseries/
                sub-001/
                    func/
                        sub-001_task-stroop_space-MNI152NLin2009cAsym_desc-neutral_betaseries.nii.gz
                        sub-001_task-stroop_space-MNI152NLin2009cAsym_desc-congruent_correlation.tsv
                        sub-001_task-stroop_space-MNI152NLin2009cAsym_desc-neutral_correlation.tsv
                        sub-001_task-stroop_space-MNI152NLin2009cAsym_desc-incongruent_betaseries.nii.gz
                        sub-001_task-stroop_space-MNI152NLin2009cAsym_desc-incongruent_correlation.tsv
                        sub-001_task-stroop_space-MNI152NLin2009cAsym_desc-neutral_correlation.svg
                        sub-001_task-stroop_space-MNI152NLin2009cAsym_desc-congruent_betaseries.nii.gz
                        sub-001_task-stroop_space-MNI152NLin2009cAsym_desc-congruent_correlation.svg
                        sub-001_task-stroop_space-MNI152NLin2009cAsym_desc-incongruent_correlation.svg
                logs/
                    CITATION.tex
                    CITATION.md
                    CITATION.bib
            data/
                Schaefer2018_100Parcels_7Networks_order.tsv
                Schaefer2018_100Parcels_7Networks_order.txt
                Schaefer2018_100Parcels_7Networks_order_FSLMNI152_2mm.nii.gz
            work/
                dbcache
                NiBetaSeries_work/
                    nibetaseries_participant_wf/
                        graph1.json
                        d3.js
                        index.html
                        graph.json
                        single_subject001_wf/
                            correlation_wf/
                                3901a92fcfd79d40c4b452de2ef824046b034750/
                                    atlas_corr_node/
                                        _node.pklz
                                        result_atlas_corr_node.pklz
                                        _inputs.pklz
                                        _0xcb1f362dddb54d2fc35e5825ba16448b.json
                                        _report/
                                            report.rst
                                        mapflow/
                                            _atlas_corr_node2/
                                                _node.pklz
                                                _inputs.pklz
                                                desc-incongruent_correlation.tsv
                                                desc-incongruent_correlation.svg
                                                _0x5e1f7323b96ea30157e49866846d090d.json
                                                result__atlas_corr_node2.pklz
                                                _report/
                                                    report.rst
                                            _atlas_corr_node0/
                                                _node.pklz
                                                _inputs.pklz
                                                desc-neutral_correlation.svg
                                                result__atlas_corr_node0.pklz
                                                _0x5a60ff19c6a19d9bad170136fa9ee816.json
                                                desc-neutral_correlation.tsv
                                                _report/
                                                    report.rst
                                            _atlas_corr_node1/
                                                _node.pklz
                                                _inputs.pklz
                                                desc-congruent_correlation.svg
                                                desc-congruent_correlation.tsv
                                                _0x16c0fc73fec275e3d8021b284caba70b.json
                                                result__atlas_corr_node1.pklz
                                                _report/
                                                    report.rst
                            3901a92fcfd79d40c4b452de2ef824046b034750/
                                check_beta_series_list/
                                    _node.pklz
                                    _0x3ddcf8e1f8869833d3373ca792dffca5.json
                                    _inputs.pklz
                                    result_check_beta_series_list.pklz
                                    _report/
                                        report.rst
                                ds_correlation_matrix/
                                    _node.pklz
                                    result_ds_correlation_matrix.pklz
                                    _inputs.pklz
                                    _0x05aeb5151f9ebe01b9a9137258470b2a.json
                                    _report/
                                        report.rst
                                    mapflow/
                                        _ds_correlation_matrix0/
                                            _0xd1cf1953f001a382796360b0f23d7db8.json
                                            _node.pklz
                                            result__ds_correlation_matrix0.pklz
                                            _inputs.pklz
                                            _report/
                                                report.rst
                                        _ds_correlation_matrix1/
                                            _node.pklz
                                            _inputs.pklz
                                            _0x5f7fa35ab4342e872965c1cb8cfe6e98.json
                                            result__ds_correlation_matrix1.pklz
                                            _report/
                                                report.rst
                                        _ds_correlation_matrix2/
                                            _node.pklz
                                            _0x803d436706ee4d348c1ab725f6875c00.json
                                            _inputs.pklz
                                            result__ds_correlation_matrix2.pklz
                                            _report/
                                                report.rst
                                ds_correlation_fig/
                                    _node.pklz
                                    _inputs.pklz
                                    result_ds_correlation_fig.pklz
                                    _0xe230b37a838ad69c74ca5fd6ee29309f.json
                                    _report/
                                        report.rst
                                    mapflow/
                                        _ds_correlation_fig0/
                                            _node.pklz
                                            _inputs.pklz
                                            result__ds_correlation_fig0.pklz
                                            _0x597f5c4a21553cee15000f440dda773d.json
                                            _report/
                                                report.rst
                                        _ds_correlation_fig2/
                                            _0x7976abdcfe59071f02f3cf1102a91656.json
                                            _node.pklz
                                            _inputs.pklz
                                            result__ds_correlation_fig2.pklz
                                            _report/
                                                report.rst
                                        _ds_correlation_fig1/
                                            _node.pklz
                                            _inputs.pklz
                                            result__ds_correlation_fig1.pklz
                                            _0x2f98a5303b005be0df4fb687694c7731.json
                                            _report/
                                                report.rst
                                ds_betaseries_file/
                                    _node.pklz
                                    _inputs.pklz
                                    _0x5ff15d098d6736c64da912d86c78dc17.json
                                    result_ds_betaseries_file.pklz
                                    _report/
                                        report.rst
                                    mapflow/
                                        _ds_betaseries_file1/
                                            _node.pklz
                                            _inputs.pklz
                                            result__ds_betaseries_file1.pklz
                                            _0x3d84861b40f3cec9c3fe80a69be65e23.json
                                            _report/
                                                report.rst
                                        _ds_betaseries_file0/
                                            _node.pklz
                                            _inputs.pklz
                                            result__ds_betaseries_file0.pklz
                                            _0x465cff8852beb4621de39e3b345ba1c8.json
                                            _report/
                                                report.rst
                                        _ds_betaseries_file2/
                                            _node.pklz
                                            _inputs.pklz
                                            result__ds_betaseries_file2.pklz
                                            _0x293b434daae39dfa5f78b81456e7ff96.json
                                            _report/
                                                report.rst
                            betaseries_wf/
                                3901a92fcfd79d40c4b452de2ef824046b034750/
                                    betaseries_node/
                                        desc-neutral_betaseries.nii.gz
                                        _node.pklz
                                        _inputs.pklz
                                        _0xc338cae97b2926f8302b1fa116bce156.json
                                        result_betaseries_node.pklz
                                        desc-congruent_betaseries.nii.gz
                                        desc-incongruent_betaseries.nii.gz
                                        _report/
                                            report.rst
            fmriprep/
                fMRIPrep.sqlite
                dataset_description.json
                sub-001/
                    func/
                        sub-001_task-stroop_space-MNI152NLin2009cAsym_desc-preproc_bold.nii.gz
                        sub-001_task-stroop_desc-confounds_regressors.tsv
                        sub-001_task-stroop_space-MNI152NLin2009cAsym_desc-brain_mask.nii.gz
        sub-001/
            anat/
                sub-001_T1w.nii.gz
            func/
                sub-001_task-stroop_bold.nii.gz
                sub-001_task-stroop_events.tsv

Collect correlation results

output_path = os.path.join(out_dir, "nibetaseries", "sub-001", "func")
trial_types = ['congruent', 'incongruent', 'neutral']
filename_template = ('sub-001_task-stroop_space-MNI152NLin2009cAsym_'
                     'desc-{trial_type}_{suffix}.{ext}')

pd_dict = {}
for trial_type in trial_types:
    fname = filename_template.format(trial_type=trial_type, suffix='correlation', ext='tsv')
    file_path = os.path.join(output_path, fname)
    pd_dict[trial_type] = pd.read_csv(file_path, sep='\t', na_values="n/a", index_col=0)
# display example matrix
print(pd_dict[trial_type].head())

Out:

          LH_Vis_1  LH_Vis_2  ...  RH_Default_PCC_1  RH_Default_PCC_2
LH_Vis_1       NaN  0.218441  ...         -0.229994          0.030440
LH_Vis_2  0.218441       NaN  ...         -0.272071          0.051983
LH_Vis_3 -0.193264  0.448418  ...          0.087879          0.083368
LH_Vis_4  0.122960  0.526585  ...         -0.185481          0.188477
LH_Vis_5  0.284347  0.534536  ...         -0.393536         -0.288098

[5 rows x 100 columns]

Graph the correlation results

fig, axes = plt.subplots(nrows=3, ncols=1, sharex=True, sharey=True, figsize=(10, 30),
                         gridspec_kw={'wspace': 0.025, 'hspace': 0.075})

cbar_ax = fig.add_axes([.91, .3, .03, .4])
r = 0
for trial_type, df in pd_dict.items():
    g = sns.heatmap(df, ax=axes[r], vmin=-.5, vmax=1., square=True,
                    cbar=True, cbar_ax=cbar_ax)
    axes[r].set_title(trial_type)
    # iterate over rows
    r += 1
plt.tight_layout()
../_images/sphx_glr_plot_run_nibetaseries_001.png

Out:

/home/docs/checkouts/readthedocs.org/user_builds/nibetaseries/envs/v0.4.2/lib/python3.7/site-packages/matplotlib/figure.py:2299: UserWarning: This figure includes Axes that are not compatible with tight_layout, so results might be incorrect.
  warnings.warn("This figure includes Axes that are not compatible "

Collect beta map results

nii_dict = {}
for trial_type in trial_types:
    fname = filename_template.format(trial_type=trial_type, suffix='betaseries', ext='nii.gz')
    file_path = os.path.join(output_path, fname)
    nii_dict[trial_type] = nib.load(file_path)

# view incongruent beta_maps
nib.viewers.OrthoSlicer3D(nii_dict['incongruent'].get_fdata(),
                          title="Incongruent Betas").set_position(10, 13, 10)
../_images/sphx_glr_plot_run_nibetaseries_002.png

Graph beta map standard deviation

We can find where the betas have the highest standard deviation for each trial type. Unsuprisingly, the largest deviations are near the edge of the brain mask and the subcortical regions.

# standard deviations for each trial type
std_dict = {tt: nib.Nifti1Image(img.get_fdata().std(axis=-1), img.affine, img.header)
            for tt, img in nii_dict.items()}

fig, axes = plt.subplots(nrows=3, ncols=1, figsize=(10, 20))

for idx, (trial_type, nii) in enumerate(std_dict.items()):
    plotting.plot_stat_map(nii, title=trial_type, cut_coords=(0, 0, 0),
                           threshold=5, vmax=20, axes=axes[idx])
../_images/sphx_glr_plot_run_nibetaseries_003.png

References

notebook-1

Timothy D Verstynen. The organization and dynamics of corticostriatal pathways link the medial orbitofrontal cortex to future behavioral responses. Journal of Neurophysiology, 112(10):2457–2469, 2014. URL: https://doi.org/10.1152/jn.00221.2014, doi:10.1152/jn.00221.2014.

Total running time of the script: ( 0 minutes 49.341 seconds)

Gallery generated by Sphinx-Gallery