Skip to content

Commit 33a5949

Browse files
committed
fixing selectfile exercise
1 parent 2dd23ae commit 33a5949

File tree

1 file changed

+30
-66
lines changed

1 file changed

+30
-66
lines changed

notebooks/basic_data_input.ipynb

Lines changed: 30 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@
242242
},
243243
"source": [
244244
"### Exercise 1\n",
245-
"Grab T1w images from both sessions - ses-test and ses-retest for sub-01."
245+
"Grab T1w images from both sessions - ``ses-test`` and ``ses-retest`` for ``sub-01``."
246246
]
247247
},
248248
{
@@ -342,7 +342,7 @@
342342
"sf.inputs.base_directory = '/data/ds000114'\n",
343343
"\n",
344344
"# Feed {}-based placeholder strings with values\n",
345-
"sf.inputs.subject_id = ['01', '02']\n",
345+
"sf.inputs.subject_id = '01'\n",
346346
"sf.inputs.ses_name = \"test\"\n",
347347
"sf.inputs.task_name = 'fingerfootlips'"
348348
]
@@ -378,31 +378,9 @@
378378
},
379379
{
380380
"cell_type": "code",
381-
"execution_count": 3,
382-
"metadata": {},
383-
"outputs": [
384-
{
385-
"name": "stdout",
386-
"output_type": "stream",
387-
"text": [
388-
"171204-05:26:20,565 workflow INFO:\n",
389-
"\t Executing node selectfiles in dir: /tmp/tmphr8gtoyw/selectfiles\n",
390-
"171204-05:26:20,573 workflow INFO:\n",
391-
"\t Running node \"selectfiles\" (\"nipype.interfaces.io.SelectFiles\").\n"
392-
]
393-
},
394-
{
395-
"data": {
396-
"text/plain": [
397-
"\n",
398-
"anat = ['/data/ds000114/sub-01/ses-test/anat/sub-01_ses-test_T1w.nii.gz', '/data/ds000114/sub-02/ses-test/anat/sub-02_ses-test_T1w.nii.gz']"
399-
]
400-
},
401-
"execution_count": 3,
402-
"metadata": {},
403-
"output_type": "execute_result"
404-
}
405-
],
381+
"execution_count": null,
382+
"metadata": {},
383+
"outputs": [],
406384
"source": [
407385
"from nipype import SelectFiles, Node\n",
408386
"from os.path import abspath as opap\n",
@@ -435,51 +413,28 @@
435413
]
436414
},
437415
{
438-
"cell_type": "code",
439-
"execution_count": null,
440-
"metadata": {},
441-
"outputs": [],
442-
"source": []
416+
"cell_type": "markdown",
417+
"metadata": {
418+
"solution2": "hidden",
419+
"solution2_first": true
420+
},
421+
"source": [
422+
"### Exercise 2\n",
423+
"Use ``SelectFile`` to select again T1w images from both sessions - ``ses-test`` and ``ses-retest`` for ``sub-01``."
424+
]
443425
},
444426
{
445427
"cell_type": "code",
446-
"execution_count": 7,
447-
"metadata": {},
448-
"outputs": [
449-
{
450-
"name": "stdout",
451-
"output_type": "stream",
452-
"text": [
453-
"171204-14:04:03,952 workflow INFO:\n",
454-
"\t Executing node selectfiles in dir: /tmp/tmpwf9hluzg/selectfiles\n",
455-
"171204-14:04:03,971 workflow INFO:\n",
456-
"\t Running node \"selectfiles\" (\"nipype.interfaces.io.SelectFiles\").\n"
457-
]
458-
},
459-
{
460-
"ename": "OSError",
461-
"evalue": "No files were found matching anat template: /data/ds000114/sub-01/ses-[test, retest]/anat/sub-01_ses-[test, retest]_T1w.nii.gz",
462-
"output_type": "error",
463-
"traceback": [
464-
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
465-
"\u001b[0;31mOSError\u001b[0m Traceback (most recent call last)",
466-
"\u001b[0;32m<ipython-input-7-f17e79c01fac>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0;31m#sf.inputs.ses_name =\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0msf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moutputs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
467-
"\u001b[0;32m/opt/conda/envs/neuro/lib/python3.6/site-packages/nipype/pipeline/engine/nodes.py\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self, updatehash)\u001b[0m\n\u001b[1;32m 405\u001b[0m self.inputs.get_traitsfree())\n\u001b[1;32m 406\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 407\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_run_interface\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 408\u001b[0m \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 409\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mremove\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhashfile_unfinished\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
468-
"\u001b[0;32m/opt/conda/envs/neuro/lib/python3.6/site-packages/nipype/pipeline/engine/nodes.py\u001b[0m in \u001b[0;36m_run_interface\u001b[0;34m(self, execute, updatehash)\u001b[0m\n\u001b[1;32m 515\u001b[0m \u001b[0mold_cwd\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetcwd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 516\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mchdir\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moutput_dir\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 517\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_result\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_run_command\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexecute\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 518\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mchdir\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mold_cwd\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 519\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
469-
"\u001b[0;32m/opt/conda/envs/neuro/lib/python3.6/site-packages/nipype/pipeline/engine/nodes.py\u001b[0m in \u001b[0;36m_run_command\u001b[0;34m(self, execute, copyfiles)\u001b[0m\n\u001b[1;32m 648\u001b[0m self._interface.__class__.__name__)\n\u001b[1;32m 649\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 650\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_interface\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 651\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mmsg\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 652\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_save_results\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcwd\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
470-
"\u001b[0;32m/opt/conda/envs/neuro/lib/python3.6/site-packages/nipype/interfaces/base.py\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self, **inputs)\u001b[0m\n\u001b[1;32m 1087\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1088\u001b[0m \u001b[0mruntime\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_run_interface\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mruntime\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1089\u001b[0;31m \u001b[0moutputs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0maggregate_outputs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mruntime\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1090\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1091\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mtraceback\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
471-
"\u001b[0;32m/opt/conda/envs/neuro/lib/python3.6/site-packages/nipype/interfaces/base.py\u001b[0m in \u001b[0;36maggregate_outputs\u001b[0;34m(self, runtime, needed_outputs)\u001b[0m\n\u001b[1;32m 1152\u001b[0m \"\"\"\n\u001b[1;32m 1153\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1154\u001b[0;31m \u001b[0mpredicted_outputs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_list_outputs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1155\u001b[0m \u001b[0moutputs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_outputs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1156\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mpredicted_outputs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
472-
"\u001b[0;32m/opt/conda/envs/neuro/lib/python3.6/site-packages/nipype/interfaces/io.py\u001b[0m in \u001b[0;36m_list_outputs\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1322\u001b[0m field, filled_template)\n\u001b[1;32m 1323\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minputs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mraise_on_empty\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1324\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mIOError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1325\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1326\u001b[0m \u001b[0mwarn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
473-
"\u001b[0;31mOSError\u001b[0m: No files were found matching anat template: /data/ds000114/sub-01/ses-[test, retest]/anat/sub-01_ses-[test, retest]_T1w.nii.gz"
474-
]
475-
}
476-
],
477-
"source": [
478-
"#DJ TODO: doesnt work!!!\n",
428+
"execution_count": null,
429+
"metadata": {
430+
"solution2": "hidden"
431+
},
432+
"outputs": [],
433+
"source": [
479434
"from nipype import SelectFiles, Node\n",
480435
"\n",
481436
"# String template with {}-based strings\n",
482-
"templates = {'anat': 'sub-01/ses-[test, retest]/anat/sub-01_ses-[test, retest]_T1w.nii.gz'}\n",
437+
"templates = {'anat': 'sub-01/ses-*/anat/sub-01_ses-*_T1w.nii.gz'}\n",
483438
" \n",
484439
"\n",
485440
"# Create SelectFiles node\n",
@@ -494,6 +449,15 @@
494449
"sf.run().outputs"
495450
]
496451
},
452+
{
453+
"cell_type": "code",
454+
"execution_count": null,
455+
"metadata": {},
456+
"outputs": [],
457+
"source": [
458+
"# write your solution here"
459+
]
460+
},
497461
{
498462
"cell_type": "markdown",
499463
"metadata": {},

0 commit comments

Comments
 (0)