@@ -76,6 +76,7 @@ def median(in_files):
76
76
77
77
out_file: a 3D Nifti file
78
78
"""
79
+
79
80
average = None
80
81
for idx , filename in enumerate (filename_to_list (in_files )):
81
82
img = nb .load (filename )
@@ -111,6 +112,13 @@ def create_reg_workflow(name='registration'):
111
112
outputspec.anat2target_transform : FLIRT+FNIRT transform
112
113
outputspec.transformed_files : transformed files in target space
113
114
outputspec.transformed_mean : mean image in target space
115
+ <<<<<<< HEAD
116
+ =======
117
+
118
+ Example
119
+ -------
120
+ See code below
121
+ >>>>>>> cb80e24fc2a68758defcb16c7ab70092aa35b693
114
122
"""
115
123
116
124
register = pe .Workflow (name = name )
@@ -196,11 +204,12 @@ def create_reg_workflow(name='registration'):
196
204
197
205
"""
198
206
Compute registration between the subject's structural and MNI template
199
- This is currently set to perform a very quick registration. However, the
200
- registration can be made significantly more accurate for cortical
201
- structures by increasing the number of iterations
202
- All parameters are set using the example from:
203
- #https://github.com/stnava/ANTs/blob/master/Scripts/newAntsExample.sh
207
+
208
+ * All parameters are set using the example from: \
209
+ `newAntsExample.sh <https://github.com/stnava/ANTs/blob/master/Scripts/newAntsExample.sh>`_
210
+ * This is currently set to perform a very quick registration. However,\
211
+ the registration can be made significantly more accurate for cortical\
212
+ structures by increasing the number of iterations.
204
213
"""
205
214
206
215
reg = pe .Node (ants .Registration (), name = 'antsRegister' )
@@ -242,7 +251,11 @@ def create_reg_workflow(name='registration'):
242
251
243
252
merge = pe .Node (niu .Merge (2 ), iterfield = ['in2' ], name = 'mergexfm' )
244
253
register .connect (convert2itk , 'itk_transform' , merge , 'in2' )
254
+ < << << << HEAD
245
255
register .connect (reg , 'composite_transform' , merge , 'in1' )
256
+ == == == =
257
+ register .connect (reg , ('composite_transform' , pickfirst ), merge , 'in1' )
258
+ >> >> >> > cb80e24fc2a68758defcb16c7ab70092aa35b693
246
259
247
260
"""
248
261
Transform the mean image. First to anatomical and then to target
@@ -292,32 +305,46 @@ def create_reg_workflow(name='registration'):
292
305
return register
293
306
294
307
def get_aparc_aseg (files ):
295
- """Return the aparc+aseg.mgz file"""
308
+ """
309
+ Return the aparc+aseg.mgz file
310
+ """
311
+
296
312
for name in files :
297
313
if 'aparc+aseg.mgz' in name :
298
314
return name
299
315
raise ValueError ('aparc+aseg.mgz not found' )
300
316
317
+
301
318
def create_fs_reg_workflow (name = 'registration' ):
302
319
"""Create a FEAT preprocessing workflow together with freesurfer
303
320
304
321
Parameters
305
322
----------
323
+ <<<<<<< HEAD
306
324
325
+ =======
326
+ >>>>>>> cb80e24fc2a68758defcb16c7ab70092aa35b693
307
327
name : name of workflow (default: 'registration')
308
328
309
- Inputs::
329
+ Inputs:
310
330
311
331
inputspec.source_files : files (filename or list of filenames to register)
312
332
inputspec.mean_image : reference image to use
313
333
inputspec.target_image : registration target
314
334
315
- Outputs::
335
+ Outputs:
316
336
317
337
outputspec.func2anat_transform : FLIRT transform
318
338
outputspec.anat2target_transform : FLIRT+FNIRT transform
319
339
outputspec.transformed_files : transformed files in target space
320
340
outputspec.transformed_mean : mean image in target space
341
+ <<<<<<< HEAD
342
+ =======
343
+
344
+ Example
345
+ -------
346
+ See code below
347
+ >>>>>>> cb80e24fc2a68758defcb16c7ab70092aa35b693
321
348
"""
322
349
323
350
register = Workflow (name = name )
@@ -354,8 +381,13 @@ def create_fs_reg_workflow(name='registration'):
354
381
register .connect (fssource , 'T1' , convert , 'in_file' )
355
382
356
383
# Coregister the median to the surface
384
+ < << << << HEAD
357
385
bbregister = Node (freesurfer .BBRegister (registered_file = True ),
358
386
name = 'bbregister' )
387
+ == == == =
388
+ bbregister = Node (freesurfer .BBRegister (),
389
+ name = 'bbregister' )
390
+ >> >> >> > cb80e24fc2a68758defcb16c7ab70092aa35b693
359
391
bbregister .inputs .init = 'fsl'
360
392
bbregister .inputs .contrast_type = 't2'
361
393
bbregister .inputs .out_fsl_file = True
@@ -375,7 +407,7 @@ def create_fs_reg_workflow(name='registration'):
375
407
binarize = Node (fs .Binarize (min = 0.5 , out_type = "nii.gz" , dilate = 1 ), name = "binarize_aparc" )
376
408
register .connect (fssource , ("aparc_aseg" , get_aparc_aseg ), binarize , "in_file" )
377
409
378
- stripper = Node (fsl .ApplyMask (), name = 'stripper' )
410
+ stripper = Node (fsl .ApplyMask (), name = 'stripper' )
379
411
register .connect (binarize , "binary_file" , stripper , "mask_file" )
380
412
register .connect (convert , 'out_file' , stripper , 'in_file' )
381
413
@@ -400,16 +432,17 @@ def create_fs_reg_workflow(name='registration'):
400
432
convert2itk .inputs .fsl2ras = True
401
433
convert2itk .inputs .itk_transform = True
402
434
register .connect (bbregister , 'out_fsl_file' , convert2itk , 'transform_file' )
403
- register .connect (inputnode , 'mean_image' ,convert2itk , 'source_file' )
435
+ register .connect (inputnode , 'mean_image' , convert2itk , 'source_file' )
404
436
register .connect (stripper , 'out_file' , convert2itk , 'reference_file' )
405
437
406
438
"""
407
439
Compute registration between the subject's structural and MNI template
408
- This is currently set to perform a very quick registration. However, the
409
- registration can be made significantly more accurate for cortical
410
- structures by increasing the number of iterations
411
- All parameters are set using the example from:
412
- #https://github.com/stnava/ANTs/blob/master/Scripts/newAntsExample.sh
440
+
441
+ * All parameters are set using the example from: \
442
+ `newAntsExample.sh <https://github.com/stnava/ANTs/blob/master/Scripts/newAntsExample.sh>`_
443
+ * This is currently set to perform a very quick registration. However,\
444
+ the registration can be made significantly more accurate for cortical\
445
+ structures by increasing the number of iterations.
413
446
"""
414
447
415
448
reg = Node (ants .Registration (), name = 'antsRegister' )
@@ -441,7 +474,11 @@ def create_fs_reg_workflow(name='registration'):
441
474
reg .plugin_args = {'qsub_args' : '-pe orte 4' ,
442
475
'sbatch_args' : '--mem=6G -c 4' }
443
476
register .connect (stripper , 'out_file' , reg , 'moving_image' )
477
+ < << << << HEAD
444
478
register .connect (inputnode ,'target_image' , reg ,'fixed_image' )
479
+ == == == =
480
+ register .connect (inputnode , 'target_image' , reg , 'fixed_image' )
481
+ >> >> >> > cb80e24fc2a68758defcb16c7ab70092aa35b693
445
482
446
483
"""
447
484
Concatenate the affine and ants transforms into a list
@@ -451,7 +488,11 @@ def create_fs_reg_workflow(name='registration'):
451
488
452
489
merge = Node (Merge (2 ), iterfield = ['in2' ], name = 'mergexfm' )
453
490
register .connect (convert2itk , 'itk_transform' , merge , 'in2' )
491
+ < << << << HEAD
454
492
register .connect (reg , 'composite_transform' , merge , 'in1' )
493
+ == == == =
494
+ register .connect (reg , ('composite_transform' , pickfirst ), merge , 'in1' )
495
+ >> >> >> > cb80e24fc2a68758defcb16c7ab70092aa35b693
455
496
456
497
"""
457
498
Transform the mean image. First to anatomical and then to target
@@ -463,8 +504,6 @@ def create_fs_reg_workflow(name='registration'):
463
504
warpmean .inputs .invert_transform_flags = [False , False ]
464
505
warpmean .inputs .terminal_output = 'file'
465
506
warpmean .inputs .args = '--float'
466
- #warpmean.inputs.num_threads = 4
467
- #warpmean.plugin_args = {'sbatch_args': '--mem=4G -c 4'}
468
507
469
508
"""
470
509
Transform the remaining images. First to anatomical and then to target
@@ -488,11 +527,11 @@ def create_fs_reg_workflow(name='registration'):
488
527
register .connect (warpmean , 'output_image' , outputnode , 'transformed_mean' )
489
528
register .connect (warpall , 'output_image' , outputnode , 'transformed_files' )
490
529
491
- register .connect (inputnode ,'target_image' , warpmean ,'reference_image' )
530
+ register .connect (inputnode , 'target_image' , warpmean , 'reference_image' )
492
531
register .connect (inputnode , 'mean_image' , warpmean , 'input_image' )
493
532
register .connect (merge , 'out' , warpmean , 'transforms' )
494
- register .connect (inputnode ,'target_image' , warpall ,'reference_image' )
495
- register .connect (inputnode ,'source_files' , warpall , 'input_image' )
533
+ register .connect (inputnode , 'target_image' , warpall , 'reference_image' )
534
+ register .connect (inputnode , 'source_files' , warpall , 'input_image' )
496
535
register .connect (merge , 'out' , warpall , 'transforms' )
497
536
498
537
"""
@@ -545,6 +584,7 @@ def get_subjectinfo(subject_id, base_dir, task_id, model_id):
545
584
TR : float
546
585
Repetition time
547
586
"""
587
+
548
588
from glob import glob
549
589
import os
550
590
import numpy as np
@@ -574,17 +614,17 @@ def get_subjectinfo(subject_id, base_dir, task_id, model_id):
574
614
runs = [int (val [- 3 :]) for val in files ]
575
615
run_ids .insert (idx , runs )
576
616
json_info = os .path .join (base_dir , subject_id , 'BOLD' ,
577
- 'task%03d_run%03d' % (task_id , run_ids [task_id - 1 ][0 ]),
578
- 'bold_scaninfo.json' )
617
+ 'task%03d_run%03d' % (task_id , run_ids [task_id - 1 ][0 ]),
618
+ 'bold_scaninfo.json' )
579
619
if os .path .exists (json_info ):
580
620
import json
581
621
with open (json_info , 'rt' ) as fp :
582
622
data = json .load (fp )
583
623
TR = data ['global' ]['const' ]['RepetitionTime' ]/ 1000.
584
624
else :
585
625
task_scan_key = os .path .join (base_dir , subject_id , 'BOLD' ,
586
- 'task%03d_run%03d' % (task_id , run_ids [task_id - 1 ][0 ]),
587
- 'scan_key.txt' )
626
+ 'task%03d_run%03d' % (task_id , run_ids [task_id - 1 ][0 ]),
627
+ 'scan_key.txt' )
588
628
if os .path .exists (task_scan_key ):
589
629
TR = np .genfromtxt (task_scan_key )[1 ]
590
630
else :
@@ -1087,7 +1127,7 @@ def get_subs(subject_id, conds, run_id, model_id, task_id):
1087
1127
help = "FreeSurfer subjects directory (if available)" )
1088
1128
parser .add_argument ("--target" , dest = "target_file" ,
1089
1129
help = ("Target in MNI space. Best to use the MindBoggle "
1090
- "template - only used with FreeSurfer"
1130
+ "template - only used with FreeSurfer "
1091
1131
"OASIS-30_Atropos_template_in_MNI152_2mm.nii.gz" ))
1092
1132
args = parser .parse_args ()
1093
1133
outdir = args .outdir
0 commit comments