1- import os .path as op
21import os
2+ import os .path as op
33from shutil import copyfile
44
55
@@ -363,6 +363,12 @@ def get_dmriprep_pe_workflow():
363363 eddy .inputs .residuals = True
364364 import multiprocessing
365365 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
366372
367373 topup = prep .get_node ('peb_correction.topup' )
368374 topup .inputs .checksize = True
@@ -374,12 +380,14 @@ def get_dmriprep_pe_workflow():
374380
375381 eddy_quad = pe .Node (fsl .EddyQuad (verbose = True , checksize = True ), name = "eddy_quad" )
376382 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' )
378385 wf .connect (inputspec , 'bval_file' , eddy_quad , 'bval_file' )
379386 wf .connect (prep , 'Rotate_Bvec.out_file' , eddy_quad , 'bvec_file' )
380387 wf .connect (prep , 'peb_correction.topup.out_field' , eddy_quad , 'field' )
381388 wf .connect (prep , 'gen_index.out_file' , eddy_quad , 'idx_file' )
382389 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' )
383391
384392 # need a mask file for eddy_quad. lets get it from the B0.
385393 def get_b0_mask_fn (b0_file ):
@@ -396,7 +404,6 @@ def get_b0_mask_fn(b0_file):
396404 return mask_file
397405
398406
399-
400407 def id_outliers_fn (outlier_report , threshold , dwi_file ):
401408 """Get list of scans that exceed threshold for number of outliers
402409
@@ -596,6 +603,7 @@ def apply_transform_to_bvecs_fn(bvec_file, reg_mat_file):
596603 import numpy as np
597604 import nipype .utils .filemanip as fm
598605 import os
606+
599607 aff = np .loadtxt (reg_mat_file )
600608 bvecs = np .loadtxt (bvec_file )
601609 bvec_trans = []
@@ -654,6 +662,7 @@ def binarize_aparc(aparc_aseg):
654662 import nibabel as nib
655663 from nipype .utils .filemanip import fname_presuffix
656664 import os .path as op
665+
657666 img = nib .load (aparc_aseg )
658667 data , aff = img .get_data (), img .affine
659668 outfile = fname_presuffix (
@@ -746,13 +755,13 @@ def binarize_aparc(aparc_aseg):
746755 wf .connect (scale_tensor_eddy , "out_file" , datasink , "dmriprep.dti_eddy.@scaled_tensor" )
747756
748757 # 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' )
756765
757766 # anatomical registration stuff
758767 wf .connect (bbreg , "min_cost_file" , datasink , "dmriprep.reg.@mincost" )
@@ -784,7 +793,7 @@ def report_fn(dwi_corrected_file, eddy_rms, eddy_report,
784793
785794 # for the report, lets show the eddy corrected (full volume) image
786795 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' )
788797
789798 # add the rms movement output from eddy
790799 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,
802811 # its super annoying.
803812 def name_files_nicely (dwi_file , subject_id ):
804813 import os .path as op
814+
805815 dwi_fname = op .split (dwi_file )[1 ].split (".nii.gz" )[0 ]
806816 substitutions = [
807817 ("vol0000_flirt_merged.nii.gz" , dwi_fname + '.nii.gz' ),
0 commit comments