import os import matplotlib.pylab as plt import nipype.interfaces.spm as spm from nipype.caching import Memory from nilearn import plotting from procasl import datasets, preprocessing, _utils # Load the dataset subjects_parent_directory = os.path.join(os.path.expanduser('~/procasl_data'), 'heroes') heroes = datasets.load_heroes_dataset( subjects=(0, 4, 9), subjects_parent_directory=subjects_parent_directory, paths_patterns={ 'anat': 't1mri/acquisition1/anat*.nii', 'BOLD EPI': 'fMRI/acquisition1/vismot1_BOLDepi*.nii' }) current_directory = os.getcwd() # Loop over subjects for (func_file, anat_file) in zip(heroes['BOLD EPI'], heroes['anat']): # Create a memory context subject_directory = os.path.relpath(anat_file, subjects_parent_directory) subject_directory = subject_directory.split(os.sep)[0] cache_directory = os.path.join(os.path.expanduser('~/CODE/process-asl'), 'procasl_cache', 'heroes', subject_directory) if not os.path.exists(cache_directory): os.mkdir(cache_directory)
import os import matplotlib.pylab as plt import nipype.interfaces.spm as spm from nipype.caching import Memory from nilearn import plotting from procasl import preprocessing, quantification, datasets, _utils # Load the dataset subjects_parent_directory = os.path.join(os.path.expanduser('~/procasl_data'), 'heroes') heroes = datasets.load_heroes_dataset( subjects=(0, 1), subjects_parent_directory=subjects_parent_directory, paths_patterns={'anat': 't1mri/acquisition1/anat*.nii', 'basal ASL': 'fMRI/acquisition1/basal_rawASL*.nii'}) current_directory = os.getcwd() # Loop over subjects for (func_file, anat_file) in zip( heroes['basal ASL'], heroes['anat']): # Create a memory context subject_directory = os.path.relpath(anat_file, subjects_parent_directory) subject_directory = subject_directory.split(os.sep)[0] cache_directory = os.path.join(os.path.expanduser('~/CODE/process-asl'), 'procasl_cache', 'heroes', subject_directory) if not os.path.exists(cache_directory): os.mkdir(cache_directory)
""" ================ Rescaling demo ================ This example compares a volume before and after T1 correction. """ # Load functional ASL image of HEROES dataset first subject import os from procasl import datasets heroes = datasets.load_heroes_dataset( subjects=(0,), subjects_parent_directory=os.path.join(os.path.expanduser("~/procasl_data"), "heroes"), paths_patterns={"raw ASL": "fMRI/acquisition1/vismot1_rawASL*.nii"}, ) raw_asl_file = heroes["raw ASL"][0] # Create a memory context from nipype.caching import Memory cache_directory = "/tmp" mem = Memory("/tmp") os.chdir(cache_directory) # Rescale from procasl import preprocessing rescale = mem.cache(preprocessing.Rescale) out_rescale = rescale(in_file=raw_asl_file, ss_tr=35.4, t_i_1=800.0, t_i_2=1800.0) # Plot the first volume before and after rescaling
""" ================== Single subject CBF ================== A basic single subject pipeline for computing CBF from basal ASL data in native space. The computed map is compared to the basal CBF map output of the scanner. """ # Give the path to the 4D ASL and anatomical images import os from procasl import datasets heroes = datasets.load_heroes_dataset( subjects=(0,), subjects_parent_directory=os.path.join( os.path.expanduser('~/procasl_data'), 'heroes'), paths_patterns={'anat': 't1mri/acquisition1/anat*.nii', 'basal ASL': 'fMRI/acquisition1/basal_rawASL*.nii', 'basal CBF': 'fMRI/acquisition1/basal_relCBF*.nii'}) asl_file = heroes['basal ASL'][0] anat_file = heroes['anat'][0] # Create a memory context from nipype.caching import Memory current_directory = os.getcwd() cache_directory = '/tmp' os.chdir(cache_directory) mem = Memory(cache_directory) # Get Tag/Control sequence from procasl import preprocessing
""" ========================= Preprocessing functionals ========================= Standard preprocessing pipeline for functional ASL. The mean functional in standard space is plotted for the last subject. """ # Load the dataset import os from procasl import datasets subjects_parent_directory = os.path.join(os.path.expanduser('~/procasl_data'), 'heroes') heroes = datasets.load_heroes_dataset( subjects=(5, 6,), subjects_parent_directory=subjects_parent_directory, paths_patterns={'anat': 't1mri/acquisition1/anat*.nii', 'func ASL': 'fMRI/acquisition1/vismot1_rawASL*.nii'}) # Loop over subjects import numpy as np import nipype.interfaces.spm as spm from nipype.caching import Memory from procasl import preprocessing, _utils current_directory = os.getcwd() for (func_file, anat_file) in zip( heroes['func ASL'], heroes['anat']): # Create a memory context subject_directory = os.path.relpath(anat_file, subjects_parent_directory) subject_directory = subject_directory.split(os.sep)[0] cache_directory = os.path.join(os.path.expanduser('~/CODE/process-asl'),
"""A basic multiple subjects pipeline. CBF maps are normalized to the reference MNI template. """ import matplotlib.pylab as plt import nipype.interfaces.spm as spm from nipype.caching import Memory from nilearn import plotting from procasl import preprocessing, quantification, datasets, _utils # Load the dataset heroes = datasets.load_heroes_dataset( dataset_pattern={'anat': 't1mri/acquisition1/anat*.nii', 'basal ASL': 'fMRI/acquisition1/basal_rawASL*.nii'}) # Create a memory context mem = Memory('/tmp/no_workflow') # Set spm paths matlab_cmd = '/i2bm/local/spm8-standalone/run_spm8.sh ' +\ '/i2bm/local/spm8-standalone/mcr/v713 script' spm.SPMCommand.set_mlab_paths(matlab_cmd=matlab_cmd, use_mcr=True) paths = ['/i2bm/local/spm8-standalone/spm8_mcr/spm8/'] # Loop over subjects for (func_file, anat_file) in zip( heroes['basal ASL'], heroes['anat']): # Get Tag/Control sequence get_tag_ctl = mem.cache(preprocessing.GetTagControl)
""" =================== Coregistration demo =================== This example shows a basic coregistration step from anatomical to mean functional. """ # Load functional ASL and anatomical images of HEROES dataset first subject import os from procasl import datasets heroes = datasets.load_heroes_dataset( subjects=(0, ), subjects_parent_directory=os.path.join( os.path.expanduser('~/procasl_data'), 'heroes'), paths_patterns={ 'anat': 't1mri/acquisition1/anat*.nii', 'raw ASL': 'fMRI/acquisition1/vismot1_rawASL*.nii' }) raw_asl_file = heroes['raw ASL'][0] # Create a memory context from nipype.caching import Memory cache_directory = '/tmp' mem = Memory('/tmp') os.chdir(cache_directory) # Compute mean functional from procasl import preprocessing average = mem.cache(preprocessing.Average) out_average = average(in_file=heroes['raw ASL'][0])
import os import matplotlib.pylab as plt import nipype.interfaces.spm as spm from nipype.caching import Memory from nilearn import plotting from procasl import datasets, preprocessing, _utils # Load the dataset subjects_parent_directory = os.path.join(os.path.expanduser('~/procasl_data'), 'heroes') heroes = datasets.load_heroes_dataset( subjects=(0, 4, 9), subjects_parent_directory=subjects_parent_directory, paths_patterns={'anat': 't1mri/acquisition1/anat*.nii', 'BOLD EPI': 'fMRI/acquisition1/vismot1_BOLDepi*.nii'}) current_directory = os.getcwd() # Loop over subjects for (func_file, anat_file) in zip( heroes['BOLD EPI'], heroes['anat']): # Create a memory context subject_directory = os.path.relpath(anat_file, subjects_parent_directory) subject_directory = subject_directory.split(os.sep)[0] cache_directory = os.path.join(os.path.expanduser('~/CODE/process-asl'), 'procasl_cache', 'heroes', subject_directory) if not os.path.exists(cache_directory): os.mkdir(cache_directory)
""" import os import matplotlib.pylab as plt import nipype.interfaces.spm as spm from nipype.caching import Memory from nilearn import plotting from procasl import datasets, preprocessing, _utils # Load the dataset subjects_parent_directory = os.path.join(os.path.expanduser("~/procasl_data"), "heroes") heroes = datasets.load_heroes_dataset( subjects=(0, 4, 9), subjects_parent_directory=subjects_parent_directory, dataset_pattern={"anat": "t1mri/acquisition1/anat*.nii", "BOLD EPI": "fMRI/acquisition1/vismot1_BOLDepi*.nii"}, ) current_directory = os.getcwd() # Loop over subjects for (func_file, anat_file) in zip(heroes["BOLD EPI"], heroes["anat"]): # Create a memory context subject_directory = os.path.relpath(anat_file, subjects_parent_directory) subject_directory = subject_directory.split(os.sep)[0] cache_directory = os.path.join( os.path.expanduser("~/CODE/process-asl"), "procasl_cache", "heroes", subject_directory ) if not os.path.exists(cache_directory): os.mkdir(cache_directory)
================== This example plots perfusion regressors and design matrix including them. """ # Give the paths to the 4D ASL and anatomical images and paradigm import os from procasl import datasets current_directory = os.getcwd() subjects_parent_directory = os.path.expanduser( '~/CODE/process-asl/procasl_cache/heroes') subjects = (0,) preprocessed_heroes = datasets.load_heroes_dataset( subjects=subjects, subjects_parent_directory=os.path.expanduser( '~/CODE/process-asl/procasl_cache/heroes'), paths_patterns={'motion': 'nipype_mem/procasl*Realign/*/rp*vismot1*.txt', 'func ASL': 'nipype_mem/*Realign/*/rsc*vismot1*ASL*.nii', 'mean ASL':'nipype_mem/*Average/*/mean*rsc*vismot1*.nii'}) heroes = datasets.load_heroes_dataset( subjects=subjects, subjects_parent_directory=os.path.join( os.path.expanduser('~/procasl_data'), 'heroes'), paths_patterns={'paradigm': 'paradigms/acquisition1/*ASL*1b.csv'}) func_file = preprocessed_heroes['func ASL'][0] realignment_parameters = preprocessed_heroes['motion'][0] paradigm_file = heroes['paradigm'][0] mean_func_file = preprocessed_heroes['mean ASL'][0] # Define directory to save .m scripts and outputs to subject_directory = os.path.relpath(func_file, subjects_parent_directory)
""" ====================== First level model demo ====================== A basic first level model for BOLD data. """ # Give the paths to normalized BOLD EPI and anatomical import os from procasl import datasets subjects = (3,) preprocessed_heroes = datasets.load_heroes_dataset( subjects=subjects, subjects_parent_directory=os.path.expanduser( '~/CODE/process-asl/procasl_cache/heroes'), paths_patterns={'anat': 'nipype_mem/*Normalize/*/wanat*.nii', 'func BOLD': 'nipype_mem/*Smooth/*/swrvismot1*.nii'}) func_file = preprocessed_heroes['func BOLD'][0] anat_file = preprocessed_heroes['anat'][0] # Give the path to the paradigm heroes = datasets.load_heroes_dataset( subjects=subjects, subjects_parent_directory=os.path.join( os.path.expanduser('~/procasl_data'), 'heroes'), paths_patterns={'paradigm': 'paradigms/acquisition1/*BOLD*1b.csv'}) paradigm_file = heroes['paradigm'][0] # Read the paradigm from nistats import experimental_paradigm paradigm = experimental_paradigm.paradigm_from_csv(
""" ====================== First level model demo ====================== A basic first level model for BOLD data. """ # Give the paths to normalized BOLD EPI and anatomical import os from procasl import datasets subjects = (3, ) preprocessed_heroes = datasets.load_heroes_dataset( subjects=subjects, subjects_parent_directory=os.path.expanduser( '~/CODE/process-asl/procasl_cache/heroes'), paths_patterns={ 'anat': 'nipype_mem/*Normalize/*/wanat*.nii', 'func BOLD': 'nipype_mem/*Smooth/*/swrvismot1*.nii' }) func_file = preprocessed_heroes['func BOLD'][0] anat_file = preprocessed_heroes['anat'][0] # Give the path to the paradigm heroes = datasets.load_heroes_dataset( subjects=subjects, subjects_parent_directory=os.path.join( os.path.expanduser('~/procasl_data'), 'heroes'), paths_patterns={'paradigm': 'paradigms/acquisition1/*BOLD*1b.csv'}) paradigm_file = heroes['paradigm'][0] # Read the paradigm
Thresholded t-maps are plotted for visual condition and left-right motor-auditory conditions, both for BOLD and perfusion regressors. """ ############### # Data loading ############### # Give the paths to smoothed normalized functional ASL images and confounds import os from procasl import datasets subjects_parent_directory = os.path.expanduser( '~/CODE/process-asl/procasl_cache/heroes') preprocessed_heroes = datasets.load_heroes_dataset( subjects_parent_directory=subjects_parent_directory, paths_patterns={'motion': 'nipype_mem/procasl*Realign/*/rp*vismot1*.txt', 'func ASL': 'nipype_mem/*Smooth/*/swrsc*vismot1*ASL*.nii', 'mean ASL': 'nipype_mem/*Smooth/*/swmean_rsc*vismot1*.nii'}) # Give the paths to paradigms heroes = datasets.load_heroes_dataset( subjects_parent_directory=os.path.join( os.path.expanduser('~/procasl_data'), 'heroes'), paths_patterns={'paradigm': 'paradigms/acquisition1/*ASL*1b.csv'}) ####################### # First level analysis ####################### # Loop over subjects import numpy as np
import os import matplotlib.pylab as plt import nipype.interfaces.spm as spm from nipype.caching import Memory from nilearn import plotting from procasl import preprocessing, quantification, datasets, _utils # Load the dataset subjects_parent_directory = os.path.join(os.path.expanduser('~/procasl_data'), 'heroes') heroes = datasets.load_heroes_dataset( subjects=(0, 1), subjects_parent_directory=subjects_parent_directory, paths_patterns={ 'anat': 't1mri/acquisition1/anat*.nii', 'basal ASL': 'fMRI/acquisition1/basal_rawASL*.nii' }) current_directory = os.getcwd() # Loop over subjects for (func_file, anat_file) in zip(heroes['basal ASL'], heroes['anat']): # Create a memory context subject_directory = os.path.relpath(anat_file, subjects_parent_directory) subject_directory = subject_directory.split(os.sep)[0] cache_directory = os.path.join(os.path.expanduser('~/CODE/process-asl'), 'procasl_cache', 'heroes', subject_directory) if not os.path.exists(cache_directory): os.mkdir(cache_directory)
""" ================ Realignment demo ================ This example compares standard realignement to realignement with tagging correction. """ # Load 4D ASL image of HEROES dataset first subject import os from procasl import datasets heroes = datasets.load_heroes_dataset( subjects=(0,), subjects_parent_directory=os.path.join( os.path.expanduser('~/procasl_data'), 'heroes'), paths_patterns={'raw ASL': 'fMRI/acquisition1/vismot1_rawASL*.nii'}) raw_asl_file = heroes['raw ASL'][0] # Create a memory context from nipype.caching import Memory cache_directory = '/tmp' mem = Memory('/tmp') os.chdir(cache_directory) # Realign with and without tagging correction from procasl import preprocessing import numpy as np realign = mem.cache(preprocessing.Realign) x_translation = {} for correct_tagging in [True, False]: out_realign = realign(in_file=raw_asl_file,