|
242 | 242 | },
|
243 | 243 | "source": [
|
244 | 244 | "### 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``." |
246 | 246 | ]
|
247 | 247 | },
|
248 | 248 | {
|
|
342 | 342 | "sf.inputs.base_directory = '/data/ds000114'\n",
|
343 | 343 | "\n",
|
344 | 344 | "# Feed {}-based placeholder strings with values\n",
|
345 |
| - "sf.inputs.subject_id = ['01', '02']\n", |
| 345 | + "sf.inputs.subject_id = '01'\n", |
346 | 346 | "sf.inputs.ses_name = \"test\"\n",
|
347 | 347 | "sf.inputs.task_name = 'fingerfootlips'"
|
348 | 348 | ]
|
|
378 | 378 | },
|
379 | 379 | {
|
380 | 380 | "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": [], |
406 | 384 | "source": [
|
407 | 385 | "from nipype import SelectFiles, Node\n",
|
408 | 386 | "from os.path import abspath as opap\n",
|
|
435 | 413 | ]
|
436 | 414 | },
|
437 | 415 | {
|
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 | + ] |
443 | 425 | },
|
444 | 426 | {
|
445 | 427 | "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": [ |
479 | 434 | "from nipype import SelectFiles, Node\n",
|
480 | 435 | "\n",
|
481 | 436 | "# 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", |
483 | 438 | " \n",
|
484 | 439 | "\n",
|
485 | 440 | "# Create SelectFiles node\n",
|
|
494 | 449 | "sf.run().outputs"
|
495 | 450 | ]
|
496 | 451 | },
|
| 452 | + { |
| 453 | + "cell_type": "code", |
| 454 | + "execution_count": null, |
| 455 | + "metadata": {}, |
| 456 | + "outputs": [], |
| 457 | + "source": [ |
| 458 | + "# write your solution here" |
| 459 | + ] |
| 460 | + }, |
497 | 461 | {
|
498 | 462 | "cell_type": "markdown",
|
499 | 463 | "metadata": {},
|
|
0 commit comments