예제 #1
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)
예제 #2
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 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'),
예제 #6
0
"""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)
예제 #7
0
"""
===================
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])
예제 #8
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)
예제 #11
0
"""
======================
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(
예제 #12
0
"""
======================
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
예제 #14
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 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)
예제 #15
0
"""
================
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,