1
- import os .path as op
2
1
import os
2
+ import os .path as op
3
3
from shutil import copyfile
4
4
5
5
@@ -363,6 +363,12 @@ def get_dmriprep_pe_workflow():
363
363
eddy .inputs .residuals = True
364
364
import multiprocessing
365
365
eddy .inputs .num_threads = multiprocessing .cpu_count ()
366
+ import numba .cuda
367
+ try :
368
+ if numba .cuda .gpus :
369
+ eddy .inputs .use_cuda = True
370
+ except :
371
+ eddy .inputs .use_cuda = False
366
372
367
373
topup = prep .get_node ('peb_correction.topup' )
368
374
topup .inputs .checksize = True
@@ -374,12 +380,14 @@ def get_dmriprep_pe_workflow():
374
380
375
381
eddy_quad = pe .Node (fsl .EddyQuad (verbose = True , checksize = True ), name = "eddy_quad" )
376
382
get_path = lambda x : x .split ('.nii.gz' )[0 ].split ('_fix' )[0 ]
377
- wf .connect (prep , ('fsl_eddy.out_corrected' , get_path ), eddy_quad , "base_name" )
383
+ get_qc_path = lambda x : x .split ('.nii.gz' )[0 ] + '.qc'
384
+ wf .connect (prep , ('fsl_eddy.out_corrected' , get_path ), eddy_quad , 'base_name' )
378
385
wf .connect (inputspec , 'bval_file' , eddy_quad , 'bval_file' )
379
386
wf .connect (prep , 'Rotate_Bvec.out_file' , eddy_quad , 'bvec_file' )
380
387
wf .connect (prep , 'peb_correction.topup.out_field' , eddy_quad , 'field' )
381
388
wf .connect (prep , 'gen_index.out_file' , eddy_quad , 'idx_file' )
382
389
wf .connect (prep , 'peb_correction.topup.out_enc_file' , eddy_quad , 'param_file' )
390
+ wf .connect (prep , ('fsl_eddy.out_corrected' , get_qc_path ), eddy_quad , 'output_dir' )
383
391
384
392
# need a mask file for eddy_quad. lets get it from the B0.
385
393
def get_b0_mask_fn (b0_file ):
@@ -396,7 +404,6 @@ def get_b0_mask_fn(b0_file):
396
404
return mask_file
397
405
398
406
399
-
400
407
def id_outliers_fn (outlier_report , threshold , dwi_file ):
401
408
"""Get list of scans that exceed threshold for number of outliers
402
409
@@ -596,6 +603,7 @@ def apply_transform_to_bvecs_fn(bvec_file, reg_mat_file):
596
603
import numpy as np
597
604
import nipype .utils .filemanip as fm
598
605
import os
606
+
599
607
aff = np .loadtxt (reg_mat_file )
600
608
bvecs = np .loadtxt (bvec_file )
601
609
bvec_trans = []
@@ -654,6 +662,7 @@ def binarize_aparc(aparc_aseg):
654
662
import nibabel as nib
655
663
from nipype .utils .filemanip import fname_presuffix
656
664
import os .path as op
665
+
657
666
img = nib .load (aparc_aseg )
658
667
data , aff = img .get_data (), img .affine
659
668
outfile = fname_presuffix (
@@ -746,13 +755,13 @@ def binarize_aparc(aparc_aseg):
746
755
wf .connect (scale_tensor_eddy , "out_file" , datasink , "dmriprep.dti_eddy.@scaled_tensor" )
747
756
748
757
# all the eddy_quad stuff
749
- wf .connect (eddy_quad , 'out_qc_json ' , datasink , "dmriprep.qc.@eddyquad_json" )
750
- wf .connect (eddy_quad , 'out_qc_pdf ' , datasink , "dmriprep.qc.@eddyquad_pdf" )
751
- wf .connect (eddy_quad , 'out_avg_b_png ' , datasink , "dmriprep.qc.@eddyquad_bpng" )
752
- wf .connect (eddy_quad , 'out_avg_b0_pe_png ' , datasink , "dmriprep.qc.@eddyquad_b0png" )
753
- wf .connect (eddy_quad , 'out_cnr_png ' , datasink , "dmriprep.qc.@eddyquad_cnr" )
754
- wf .connect (eddy_quad , 'out_vdm_png ' , datasink , "dmriprep.qc.@eddyquad_vdm" )
755
- wf .connect (eddy_quad , 'out_residuals ' , datasink , 'dmriprep.qc.@eddyquad_resid' )
758
+ wf .connect (eddy_quad , 'qc_json ' , datasink , "dmriprep.qc.@eddyquad_json" )
759
+ wf .connect (eddy_quad , 'qc_pdf ' , datasink , "dmriprep.qc.@eddyquad_pdf" )
760
+ wf .connect (eddy_quad , 'avg_b_png ' , datasink , "dmriprep.qc.@eddyquad_bpng" )
761
+ wf .connect (eddy_quad , 'avg_b0_pe_png ' , datasink , "dmriprep.qc.@eddyquad_b0png" )
762
+ wf .connect (eddy_quad , 'cnr_png ' , datasink , "dmriprep.qc.@eddyquad_cnr" )
763
+ wf .connect (eddy_quad , 'vdm_png ' , datasink , "dmriprep.qc.@eddyquad_vdm" )
764
+ wf .connect (eddy_quad , 'residuals ' , datasink , 'dmriprep.qc.@eddyquad_resid' )
756
765
757
766
# anatomical registration stuff
758
767
wf .connect (bbreg , "min_cost_file" , datasink , "dmriprep.reg.@mincost" )
@@ -784,7 +793,7 @@ def report_fn(dwi_corrected_file, eddy_rms, eddy_report,
784
793
785
794
# for the report, lets show the eddy corrected (full volume) image
786
795
wf .connect (voltransform , "transformed_file" , report_node , 'dwi_corrected_file' )
787
- wf .connect (eddy_quad , 'out_qc_json ' , report_node , 'eddy_qc_file' )
796
+ wf .connect (eddy_quad , 'qc_json ' , report_node , 'eddy_qc_file' )
788
797
789
798
# add the rms movement output from eddy
790
799
wf .connect (prep , "fsl_eddy.out_movement_rms" , report_node , 'eddy_rms' )
@@ -802,6 +811,7 @@ def report_fn(dwi_corrected_file, eddy_rms, eddy_report,
802
811
# its super annoying.
803
812
def name_files_nicely (dwi_file , subject_id ):
804
813
import os .path as op
814
+
805
815
dwi_fname = op .split (dwi_file )[1 ].split (".nii.gz" )[0 ]
806
816
substitutions = [
807
817
("vol0000_flirt_merged.nii.gz" , dwi_fname + '.nii.gz' ),
0 commit comments