def create_bids_datasource(data_dir):

    bids_datasource = pe.Node(interface=nio.BIDSDataGrabber(),
                              name='bids_datasource')

    bids_datasource.inputs.base_dir = data_dir

    bids_datasource.inputs.output_query = {
        'T1': {
            "datatype": "anat",
            "suffix": "T1w",
            "extensions": ["nii", ".nii.gz"]
        }
    }

    layout = BIDSLayout(data_dir)
    print(layout)
    print(layout.get_subjects())
    print(layout.get_sessions())

    iterables = []
    if len(layout.get_subjects()) == 1:
        bids_datasource.inputs.subject = layout.get_subjects()[0]
    else:
        iterables.append(('subject', layout.get_subjects()[:2]))

    if len(layout.get_sessions()) == 1:
        bids_datasource.inputs.session = layout.get_sessions()[0]
    else:
        iterables.append(('session', layout.get_sessions()[:2]))

    if len(iterables):
        bids_datasource.iterables = iterables

    return bids_datasource
Beispiel #2
0
def test_bids_fields(tmpdir):
    tmpdir.chdir()
    bg = nio.BIDSDataGrabber(infields=['subject'], outfields=['dwi'])
    bg.inputs.base_dir = os.path.join(datadir, 'ds005')
    bg.inputs.subject = '01'
    bg.inputs.output_query['dwi'] = dict(modality='dwi')
    results = bg.run()
    assert 'sub-01_dwi.nii.gz' in map(os.path.basename, results.outputs.dwi)
Beispiel #3
0
def test_bids_fields(tmpdir):
    tmpdir.chdir()
    bg = nio.BIDSDataGrabber(infields=["subject"], outfields=["dwi"])
    bg.inputs.base_dir = os.path.join(datadir, "ds005")
    bg.inputs.subject = "01"
    bg.inputs.output_query["dwi"] = dict(datatype="dwi")
    results = bg.run()
    assert "sub-01_dwi.nii.gz" in map(os.path.basename, results.outputs.dwi)
Beispiel #4
0
def test_bids_grabber(tmpdir):
    tmpdir.chdir()
    bg = nio.BIDSDataGrabber()
    bg.inputs.base_dir = os.path.join(datadir, 'ds005')
    bg.inputs.subject = '01'
    results = bg.run()
    assert 'sub-01_T1w.nii.gz' in map(os.path.basename, results.outputs.anat)
    assert 'sub-01_task-mixedgamblestask_run-01_bold.nii.gz' in \
        map(os.path.basename, results.outputs.func)
Beispiel #5
0
def test_bids_grabber(tmpdir):
    tmpdir.chdir()
    bg = nio.BIDSDataGrabber()
    bg.inputs.base_dir = os.path.join(datadir, "ds005")
    bg.inputs.subject = "01"
    results = bg.run()
    assert "sub-01_T1w.nii.gz" in map(os.path.basename, results.outputs.T1w)
    assert "sub-01_task-mixedgamblestask_run-01_bold.nii.gz" in map(
        os.path.basename, results.outputs.bold)
Beispiel #6
0
def test_bids_infields_outfields(tmpdir):
    tmpdir.chdir()
    infields = ['infield1', 'infield2']
    outfields = ['outfield1', 'outfield2']
    bg = nio.BIDSDataGrabber(infields=infields)
    for outfield in outfields:
        bg.inputs.output_query[outfield] = {'key': 'value'}

    for infield in infields:
        assert (infield in bg.inputs.traits())
        assert (not (isdefined(bg.inputs.get()[infield])))

    for outfield in outfields:
        assert (outfield in bg._outputs().traits())

    # now try without defining outfields, we should get anat and func for free
    bg = nio.BIDSDataGrabber()
    for outfield in ['anat', 'func']:
        assert outfield in bg._outputs().traits()
Beispiel #7
0
def test_bids_infields_outfields(tmpdir):
    tmpdir.chdir()
    infields = ["infield1", "infield2"]
    outfields = ["outfield1", "outfield2"]
    bg = nio.BIDSDataGrabber(infields=infields)
    for outfield in outfields:
        bg.inputs.output_query[outfield] = {"key": "value"}

    for infield in infields:
        assert infield in bg.inputs.traits()
        assert not (isdefined(bg.inputs.get()[infield]))

    for outfield in outfields:
        assert outfield in bg._outputs().traits()

    # now try without defining outfields
    bg = nio.BIDSDataGrabber()
    for outfield in ["T1w", "bold"]:
        assert outfield in bg._outputs().traits()
Beispiel #8
0
def create_datasource(data_dir,
                      subjects=None,
                      sessions=None,
                      acquisitions=None):
    """ Create a datasource node that have iterables following BIDS format """
    bids_datasource = pe.Node(interface=nio.BIDSDataGrabber(),
                              name='bids_datasource')

    bids_datasource.inputs.base_dir = data_dir
    bids_datasource.inputs.output_query = {
        'T1': {
            "datatype": "anat",
            "suffix": "T1w",
            "extensions": ["nii", ".nii.gz"]
        },
        'T2': {
            "datatype": "anat",
            "suffix": "T2w",
            "extensions": ["nii", ".nii.gz"]
        }
    }

    layout = BIDSLayout(data_dir)

    # Verbose
    print("BIDS layout:", layout)
    print("\t", layout.get_subjects())
    print("\t", layout.get_sessions())

    if subjects is None:
        subjects = layout.get_subjects()

    if sessions is None:
        sessions = layout.get_sessions()

    iterables = []
    iterables.append(('subject', subjects))
    iterables.append(('session', sessions))

    if acquisitions is not None:
        iterables.append(('acquisition', acquisitions))

    bids_datasource.iterables = iterables

    return bids_datasource
Beispiel #9
0
def create_datasource(output_query,
                      data_dir,
                      subjects=None,
                      sessions=None,
                      acquisitions=None,
                      reconstructions=None):
    """ Create a datasource node that have iterables following BIDS format """
    bids_datasource = pe.Node(interface=nio.BIDSDataGrabber(),
                              name='bids_datasource')

    bids_datasource.inputs.base_dir = data_dir
    bids_datasource.inputs.output_query = output_query

    layout = BIDSLayout(data_dir)

    # Verbose
    print("BIDS layout:", layout)
    print("\t", layout.get_subjects())
    print("\t", layout.get_sessions())

    if subjects is None:
        subjects = layout.get_subjects()

    if sessions is None:
        sessions = layout.get_sessions()

    iterables = []
    iterables.append(('subject', subjects))

    if sessions != []:
        iterables.append(('session', sessions))

    if acquisitions is not None:
        iterables.append(('acquisition', acquisitions))

    if reconstructions is not None:
        iterables.append(('reconstruction', reconstructions))

    bids_datasource.iterables = iterables

    return bids_datasource
Beispiel #10
0
print("Starting RPN-signature...")
print("Memory usage limit: " + str(opts.mem_gb) + "GB")
print("Number of CPUs used: " + str(opts.nthreads))

totalWorkflow = nipype.Workflow('RPN')
if opts.debug:
    totalWorkflow.base_dir = globals._SinkDir_
else:
    totalWorkflow.base_dir = opts.tempdir  # preferably a fast temporary mount (working dir by default)

########################
# parse command line args
bids_dir = opts.bids_dir

# create BIDS data grabber
datagrab = pe.Node(io.BIDSDataGrabber(), name='data_grabber')
datagrab.inputs.base_dir = bids_dir

# BIDS filtering
if opts.task_id and opts.echo_idx:
    datagrab.inputs.output_query['bold'] = dict(datatype='func', task=opts.task_id, echo=opts.echo_idx)
elif opts.task_id:
    datagrab.inputs.output_query['bold'] = dict(datatype='func', task=opts.task_id)
elif opts.echo_idx:
    datagrab.inputs.output_query['bold'] = dict(datatype='func', echo=opts.echo_idx)

print("Participants selected:")
if (opts.participant_label):
    datagrab.inputs.subject = opts.participant_label
    print(opts.participant_label)
else:
Beispiel #11
0
#Generic datagrabber module that wraps around glob in an
io_S3DataGrabber = pe.Node(io.S3DataGrabber(outfields=["outfiles"]), name = 'io_S3DataGrabber')
io_S3DataGrabber.inputs.bucket = 'openneuro'
io_S3DataGrabber.inputs.sort_filelist = True
io_S3DataGrabber.inputs.template = 'sub-01/anat/sub-01_T1w.nii.gz'
io_S3DataGrabber.inputs.anon = True
io_S3DataGrabber.inputs.bucket_path = 'ds000101/ds000101_R2.0.0/uncompressed/'
io_S3DataGrabber.inputs.local_directory = '/tmp'

#Wraps command **bet**
fsl_BET = pe.Node(interface = fsl.BET(), name='fsl_BET', iterfield = [''])

#Generic datasink module to store structured outputs
io_DataSink = pe.Node(interface = io.DataSink(), name='io_DataSink', iterfield = [''])
io_DataSink.inputs.base_directory = '/tmp'

#BIDS datagrabber module that wraps around pybids to allow arbitrary
io_BIDSDataGrabber = pe.Node(interface = io.BIDSDataGrabber(), name='io_BIDSDataGrabber', iterfield = [''])

#Create a workflow to connect all those nodes
analysisflow = nipype.Workflow('MyWorkflow')
analysisflow.connect(fsl_BET, "out_file", io_DataSink, "BET_results")
analysisflow.connect(io_BIDSDataGrabber, "T1", fsl_BET, "in_file")

#Run the workflow
plugin = 'MultiProc' #adjust your desired plugin here
plugin_args = {'n_procs': 1} #adjust to your number of cores
analysisflow.write_graph(graph2use='flat', format='png', simple_form=False)
analysisflow.run(plugin=plugin, plugin_args=plugin_args)
import nipype.interfaces.io as io
import nipype.interfaces.spm as spm
import nipype.interfaces.afni as afni
import nipype.interfaces.dipy as dipy
import nipype.interfaces.fsl as fsl
import nipype.algorithms.confounds as confounds
import nipype.interfaces.ants as ants
import nipype.interfaces.camino as camino
import nipype.interfaces.mrtrix as mrtrix

#Generic datasink module to store structured outputs
io_DataSink = pe.Node(interface=io.DataSink(), name='io_DataSink')

#BIDS datagrabber module that wraps around pybids to allow arbitrary
io_BIDSDataGrabber = pe.Node(interface=io.BIDSDataGrabber(),
                             name='io_BIDSDataGrabber')

#Flexibly collect data from disk to feed into workflows.
io_SelectFiles = pe.Node(io.SelectFiles(templates={}), name='io_SelectFiles')

#Use spm_realign for estimating within modality rigid body alignment
spm_Realign = pe.Node(interface=spm.Realign(), name='spm_Realign')

#Use spm_smooth for 3D Gaussian smoothing of image volumes.
spm_Smooth = pe.Node(interface=spm.Smooth(), name='spm_Smooth')

#Use spm_coreg for estimating cross-modality rigid body alignment
spm_Coregister = pe.Node(interface=spm.Coregister(), name='spm_Coregister')

#Wraps the executable command ``3dSkullStrip``.