diff --git a/lib/buildTemplate.py b/lib/buildTemplate.py index 6d65a6a..1eadc32 100644 --- a/lib/buildTemplate.py +++ b/lib/buildTemplate.py @@ -115,7 +115,7 @@ def antsMult(caselist, outPrefix): '-o', outPrefix, caselist]), shell= True, stdout= f, stderr= sys.stdout) - if f.name!='': + if f is not sys.stdout: f.close() def dti_stat(siteName, imgs, masks, templatePath, templateHdr): diff --git a/lib/consistencyCheck.py b/lib/consistencyCheck.py index 99ea05e..12923dc 100755 --- a/lib/consistencyCheck.py +++ b/lib/consistencyCheck.py @@ -66,7 +66,7 @@ def check_resolution(ref_imgs, ref_res): res= load(imgPath._path).header['pixdim'][1:4] - if (res-ref_res).sum()<=10e-6: + if (res-ref_res).sum()<=0.001: print('spatial resolution matched for', imgPath.name) else: diff --git a/lib/joinBshells.py b/lib/joinBshells.py index 9ee8a2b..7605d8a 100755 --- a/lib/joinBshells.py +++ b/lib/joinBshells.py @@ -16,7 +16,7 @@ from plumbum import cli, local from conversion import read_bvals, read_imgs, read_imgs_masks from nibabel import load -from util import abspath, pjoin, save_nifti, copyfile, RAISE, basename, dirname, isfile +from util import abspath, pjoin, save_nifti, copyfile, basename, dirname, isfile import numpy as np from multiprocessing import Pool from findBshells import BSHELL_MIN_DIST @@ -86,13 +86,16 @@ def joinAllBshells(tar_csv, ref_bvals_file, separatedPrefix=None, ncpu=4): imgs = read_imgs(tar_csv) pool = Pool(int(ncpu)) + results = [] for imgPath in imgs: - pool.apply_async(joinBshells, kwds=({'imgPath': imgPath, 'ref_bvals': ref_bvals, 'sep_prefix': separatedPrefix}), - error_callback=RAISE) + results.append(pool.apply_async(joinBshells, kwds=({'imgPath': imgPath, 'ref_bvals': ref_bvals, 'sep_prefix': separatedPrefix}))) pool.close() pool.join() + for r in results: + r.get() + class joinDividedShells(cli.Application): diff --git a/lib/reconstSignal.py b/lib/reconstSignal.py index 891998e..a909dfe 100644 --- a/lib/reconstSignal.py +++ b/lib/reconstSignal.py @@ -61,7 +61,7 @@ def antsReg(img, mask, mov, outPrefix): '-e', '123456']), shell= True, stdout= f, stderr= sys.stdout) p.wait() - if f.name!='': + if f is not sys.stdout: f.close() diff --git a/lib/separateBshells.py b/lib/separateBshells.py index 2b3a30b..1498bac 100755 --- a/lib/separateBshells.py +++ b/lib/separateBshells.py @@ -17,7 +17,7 @@ from plumbum import cli, local from conversion import read_bvals, read_bvecs, write_bvals, write_bvecs, read_imgs, read_imgs_masks from nibabel import load -from util import abspath, pjoin, save_nifti, RAISE, isfile +from util import abspath, pjoin, save_nifti, isfile import numpy as np from multiprocessing import Pool from findBshells import BSHELL_MIN_DIST @@ -51,13 +51,19 @@ def separateBshells(imgPath, ref_bvals_file=None, ref_bvals=None): if bval==0.: b0 = find_b0(dwi, ind) - if isfile(bPrefix + '.nii.gz'): - continue - + nii_file = bPrefix + '.nii.gz' + bval_file = bPrefix + '.bval' + bvec_file = bPrefix + '.bvec' + if bval==0.: - save_nifti(bPrefix + '.nii.gz', b0, img.affine, img.header) + if isfile(nii_file): + continue + save_nifti(nii_file, b0, img.affine, img.header) else: + if isfile(nii_file) and isfile(bval_file) and isfile(bvec_file): + continue + b0_bshell = np.zeros((dwi.shape[0],dwi.shape[1],dwi.shape[2],N_b+1), dtype='float32') b0_bshell[:,:,:,0]= b0 b0_bshell[:,:,:,1:]= dwi[:,:,:,ind] @@ -67,9 +73,12 @@ def separateBshells(imgPath, ref_bvals_file=None, ref_bvals=None): b0_bvecs= np.zeros((N_b+1,3), dtype='float32') b0_bvecs[1:,]= bvecs[ind,: ] - save_nifti(bPrefix+'.nii.gz', b0_bshell, img.affine, img.header) - write_bvals(bPrefix+'.bval', b0_bvals) - write_bvecs(bPrefix+'.bvec', b0_bvecs) + if not isfile(nii_file): + save_nifti(nii_file, b0_bshell, img.affine, img.header) + if not isfile(bval_file): + write_bvals(bval_file, b0_bvals) + if not isfile(bvec_file): + write_bvecs(bvec_file, b0_bvecs) @@ -84,13 +93,17 @@ def separateAllBshells(ref_csv, ref_bvals_file, ncpu=4, outPrefix= None): masks = None pool = Pool(int(ncpu)) + results = [] for imgPath in imgs: - pool.apply_async(separateBshells, - kwds={'imgPath': imgPath, 'ref_bvals': ref_bvals}, error_callback=RAISE) + results.append(pool.apply_async(separateBshells, + kwds={'imgPath': imgPath, 'ref_bvals': ref_bvals})) pool.close() pool.join() + for r in results: + r.get() + if outPrefix: outPrefix = abspath(outPrefix) diff --git a/lib/tests/shellEquate.py b/lib/tests/shellEquate.py index 5d8cc8a..1c311ed 100755 --- a/lib/tests/shellEquate.py +++ b/lib/tests/shellEquate.py @@ -17,7 +17,7 @@ from plumbum import cli, local from conversion import read_bvals, read_bvecs, write_bvals, write_bvecs, read_imgs, read_imgs_masks from nibabel import load -from util import abspath, pjoin, save_nifti, RAISE, isfile +from util import abspath, pjoin, save_nifti, isfile import numpy as np from multiprocessing import Pool from findBshells import BSHELL_MIN_DIST @@ -83,12 +83,16 @@ def separateAllBshells(ref_csv, ref_bvals_file, ncpu=4, outPrefix= None): masks = None pool = Pool(int(ncpu)) + results = [] for imgPath in imgs: - pool.apply_async(separateBshells, - kwds={'imgPath': imgPath, 'ref_bvals': ref_bvals}, error_callback=RAISE) + results.append(pool.apply_async(separateBshells, + kwds={'imgPath': imgPath, 'ref_bvals': ref_bvals})) pool.close() pool.join() + + for r in results: + r.get() if outPrefix: