def flirt(src, ref, **kwargs): """Wrapper for the ``flirt`` command. The ``twod`` argument may be used in place of the ``2D`` command line option. """ asrt.assertIsNifti(src, ref) argmap = {'twod': '2D'} valmap = { 'usesqform': wutils.SHOW_IF_TRUE, 'displayinit': wutils.SHOW_IF_TRUE, 'noresample': wutils.SHOW_IF_TRUE, 'forcescaling': wutils.SHOW_IF_TRUE, 'applyxfm': wutils.SHOW_IF_TRUE, 'nosearch': wutils.SHOW_IF_TRUE, 'noclamp': wutils.SHOW_IF_TRUE, 'noresampblur': wutils.SHOW_IF_TRUE, '2D': wutils.SHOW_IF_TRUE, 'v': wutils.SHOW_IF_TRUE, } cmd = ['flirt', '-in', src, '-ref', ref] cmd += wutils.applyArgStyle('-', argmap=argmap, valmap=valmap, **kwargs) return cmd
def melodic(input, **kwargs): """Wrapper for the ``melodic`` command.""" valmap = { 'Oall': wutils.SHOW_IF_TRUE, 'Ounmix': wutils.SHOW_IF_TRUE, 'Ostats': wutils.SHOW_IF_TRUE, 'Opca': wutils.SHOW_IF_TRUE, 'Owhite': wutils.SHOW_IF_TRUE, 'Oorig': wutils.SHOW_IF_TRUE, 'Omean': wutils.SHOW_IF_TRUE, 'verbose': wutils.SHOW_IF_TRUE, 'debug': wutils.SHOW_IF_TRUE, 'report': wutils.SHOW_IF_TRUE, 'CIFTI': wutils.SHOW_IF_TRUE, 'varnorm': wutils.SHOW_IF_TRUE, 'nomask': wutils.SHOW_IF_TRUE, 'nobet': wutils.SHOW_IF_TRUE, 'sep_vn': wutils.SHOW_IF_TRUE, 'disableMigp': wutils.SHOW_IF_TRUE, 'update_mask': wutils.HIDE_IF_TRUE, 'migp_shuffle': wutils.HIDE_IF_TRUE, 'no_mm': wutils.SHOW_IF_TRUE, 'logPower': wutils.SHOW_IF_TRUE, } asrt.assertIsNifti(input) cmd = ['melodic', '--in={}'.format(input)] cmd += wutils.applyArgStyle('--=', valmap=valmap, **kwargs) return cmd
def fslroi(input, output, *args): """Wrapper for the ``fslroi`` tool.""" asrt.assertIsNifti(input) cmd = ['fslroi', input, output] + [str(a) for a in args] return cmd
def preproc(*images): """Wrapper for the ``tbss_1_preproc`` command. Usage: ``tbss_1_preproc(<image1>, <image2>, ...)`` """ for img in images: asrt.assertIsNifti(img) return ["tbss_1_preproc"] + list(images)
def fnirt(src, **kwargs): """Wrapper for the ``fnirt`` command.""" asrt.assertIsNifti(src) cmd = ['fnirt', '--in={}'.format(src)] cmd += wutils.applyArgStyle('--=', **kwargs) return cmd
def fslreorient2std(input, output=None): """Wrapper for the ``fsreorient2std`` tool.""" asrt.assertIsNifti(input) cmd = ['fslreorient2std', input] if output is not None: cmd.append(output) return cmd
def topup(imain, datain, **kwargs): """Wrapper for the ``topup`` command.""" valmap = {'verbose': wutils.SHOW_IF_TRUE} asrt.assertFileExists(datain) asrt.assertIsNifti(imain) cmd = ['topup', '--imain={}'.format(imain), '--datain={}'.format(datain)] cmd += wutils.applyArgStyle('--=', valmap=valmap, **kwargs) return cmd
def bet(input, output, **kwargs): """Wrapper for the ``bet`` command. :arg mask: Generate a brain mask :arg seg: If ``False``, a brain extracted image is not generated. :arg robust: Robust brain centre estimation :arg fracintensity: Fractional intensity threshold Refer to the ``bet`` command-line help for details on all arguments. """ asrt.assertIsNifti(input) argmap = { 'mask': 'm', 'robust': 'R', 'fracintensity': 'f', 'seg': 'n', 'centre': 'c', } valmap = { 'm': wutils.SHOW_IF_TRUE, 'o': wutils.SHOW_IF_TRUE, 's': wutils.SHOW_IF_TRUE, 'n': wutils.HIDE_IF_TRUE, 't': wutils.SHOW_IF_TRUE, 'e': wutils.SHOW_IF_TRUE, 'R': wutils.SHOW_IF_TRUE, 'S': wutils.SHOW_IF_TRUE, 'B': wutils.SHOW_IF_TRUE, 'Z': wutils.SHOW_IF_TRUE, 'F': wutils.SHOW_IF_TRUE, 'A': wutils.SHOW_IF_TRUE, 'v': wutils.SHOW_IF_TRUE, 'd': wutils.SHOW_IF_TRUE, } cmd = ['bet', input, output] # The 'centre' argument requires three co-ordinates and can't be passed # as a single value, so needs to be handled separately. Assume it is # passed as a Python sequence centre = kwargs.pop("c", None) if centre is not None: cmd += [ '-c', ] + [str(v) for v in centre] cmd += wutils.applyArgStyle('-', argmap=argmap, valmap=valmap, **kwargs) return cmd
def robustfov(input, output=None, **kwargs): """Wrapper for the ``robustfov`` command. """ asrt.assertIsNifti(input) if output is not None: kwargs.update({'output': output}) argmap = {'output': 'r', 'matrix': 'm'} cmd = ['robustfov', '-i', input] cmd += wutils.applyArgStyle('-', argmap=argmap, **kwargs) return cmd
def applyxfm4D(src, ref, out, mat, **kwargs): """Wrapper for the ``applyxfm4D`` command. """ asrt.assertIsNifti(src, ref) valmap = { 'singlematrix': wutils.SHOW_IF_TRUE, 'fourdigit': wutils.SHOW_IF_TRUE, } cmd = ['applyxfm4D', src, ref, out, mat] cmd += wutils.applyArgStyle('-', valmap=valmap, **kwargs) return cmd
def applytopup(imain, datain, index, **kwargs): """Wrapper for the ``applytopup`` command.""" valmap = {'verbose': wutils.SHOW_IF_TRUE} asrt.assertFileExists(datain) for fn in imain.split(','): asrt.assertIsNifti(fn) cmd = [ 'applytopup', '--imain={}'.format(imain), '--inindex={}'.format(index), '--datain={}'.format(datain), ] cmd += wutils.applyArgStyle('--=', valmap=valmap, **kwargs) return cmd
def fsl_regfilt(input, out, design, **kwargs): """Wrapper for the ``fsl_regfilt`` command. """ asrt.assertIsNifti(input, out) valmap = { 'freqfilt': wutils.SHOW_IF_TRUE, 'freq_ic': wutils.HIDE_IF_TRUE, 'vn': wutils.SHOW_IF_TRUE, 'v': wutils.SHOW_IF_TRUE, } cmd = [ 'fsl_regfilt', '--in={}'.format(input), '--out={}'.format(out), '--design={}'.format(design) ] cmd += wutils.applyArgStyle('--=', valsep=',', valmap=valmap, **kwargs) return cmd
def fast(imgs, out='fast', **kwargs): """Wrapper for the ``fast`` command. :arg imgs: Input image(s) :arg out: Output basename :arg n_classes: Number of tissue classes (corresponds to the ``--class`` command line option) """ if isinstance(imgs, six.string_types): imgs = [imgs] asrt.assertIsNifti(*imgs) valmap = { 'nobias' : wutils.SHOW_IF_TRUE, 'N' : wutils.SHOW_IF_TRUE, 'verbose' : wutils.SHOW_IF_TRUE, 'v' : wutils.SHOW_IF_TRUE, 'Prior' : wutils.SHOW_IF_TRUE, 'P' : wutils.SHOW_IF_TRUE, 'segments' : wutils.SHOW_IF_TRUE, 'nopve' : wutils.SHOW_IF_TRUE, 'g' : wutils.SHOW_IF_TRUE, 'b' : wutils.SHOW_IF_TRUE, 'B' : wutils.SHOW_IF_TRUE, 'p' : wutils.SHOW_IF_TRUE, } argmap = { 'n_classes' : 'class', } cmd = ['fast', '-v', '--out=%s' % out] cmd += wutils.applyArgStyle('--=', valmap=valmap, argmap=argmap, singlechar_args=True, **kwargs) cmd += imgs return cmd
def mvntool(mvn, param, **kwargs): """ Wrapper for MVNTOOL. :param mvn: Input MVN data :param param: Parameter index (or name, but only if param-list is specified) For other arguments, see command line tool for now """ asrt.assertIsNifti(mvn) valmap = { 'write' : wutils.SHOW_IF_TRUE, 'new' : wutils.SHOW_IF_TRUE, } cmd = ['mvntool', '--input={}'.format(mvn), '--param={}'.format(param)] cmd += wutils.applyArgStyle('--=', valmap=valmap, **kwargs) return cmd
def invwarp(warp, ref, out, **kwargs): """Wrapper for the ``invwarp`` command.""" valmap = { 'abs': wutils.SHOW_IF_TRUE, 'rel': wutils.SHOW_IF_TRUE, 'noconstraint': wutils.SHOW_IF_TRUE, 'debug': wutils.SHOW_IF_TRUE, 'verbose': wutils.SHOW_IF_TRUE, } asrt.assertIsNifti(warp, ref) cmd = [ 'invwarp', '--warp={}'.format(warp), '--ref={}'.format(ref), '--out={}'.format(out) ] cmd += wutils.applyArgStyle('--=', valmap=valmap, **kwargs) return cmd
def epi_reg(epi, t1, t1brain, out='epi_reg', **kwargs): """Wrapper for the ``epi_reg`` command. :arg epi: Input EPI image :arg t1: Input wholehead T1 image :arg t1brain: Input brain extracted T1 image :arg out: Output name """ asrt.assertIsNifti(epi) asrt.assertIsNifti(t1) asrt.assertIsNifti(t1brain) valmap = { 'nofmapreg': wutils.SHOW_IF_TRUE, 'noclean': wutils.SHOW_IF_TRUE, 'v': wutils.SHOW_IF_TRUE, } cmd = [ 'epi_reg', '--epi=' + epi, '--t1=' + t1, '--t1brain=' + t1brain, '--out=' + out ] cmd += wutils.applyArgStyle('--=', valmap=valmap, singlechar_args=True, **kwargs) return cmd
def fsl_anat(img, out='fsl_anat', **kwargs): """Wrapper for the ``fsl_anat`` command. :arg img: Input structural image :arg out: Output directory name """ asrt.assertIsNifti(img) valmap = { 'strongbias' : wutils.SHOW_IF_TRUE, 'weakbias' : wutils.SHOW_IF_TRUE, 'noreorient' : wutils.SHOW_IF_TRUE, 'nocrop' : wutils.SHOW_IF_TRUE, 'nobias' : wutils.SHOW_IF_TRUE, 'noreg' : wutils.SHOW_IF_TRUE, 'nononlinreg' : wutils.SHOW_IF_TRUE, 'noseg' : wutils.SHOW_IF_TRUE, 'nosubcortseg' : wutils.SHOW_IF_TRUE, 'nosearch' : wutils.SHOW_IF_TRUE, 'nocleanup' : wutils.SHOW_IF_TRUE, } argmap = { } img_type = kwargs.pop("img_type", "T1") cmd = ['fsl_anat', '-i', img, '-o', out, '-t', img_type] smoothing = kwargs.pop("bias_smoothing", None) if smoothing is not None: cmd += ['-s', str(smoothing)] cmd += wutils.applyArgStyle('--=', valmap=valmap, argmap=argmap, singlechar_args=True, **kwargs) return cmd
def mcflirt(infile, **kwargs): """Wrapper for the ``mcflirt`` command.""" asrt.assertIsNifti(infile) argmap = { 'twod': '2d', } valmap = { '2d': wutils.SHOW_IF_TRUE, 'gdt': wutils.SHOW_IF_TRUE, 'meanvol': wutils.SHOW_IF_TRUE, 'stats': wutils.SHOW_IF_TRUE, 'mats': wutils.SHOW_IF_TRUE, 'plots': wutils.SHOW_IF_TRUE, 'report': wutils.SHOW_IF_TRUE, } cmd = ['mcflirt', '-in', infile] cmd += wutils.applyArgStyle('-', argmap=argmap, valmap=valmap, **kwargs) return cmd
def fnirtfileutils(src, **kwargs): """Wrapper for the ``fnirt`` command. Compulsory arguments (You MUST set one or more of): -i,--in filename of input coefficient volume (to be converted) Optional arguments (You may optionally specify one or more of): -r,--ref filename for reference volume -o,--out filename for output (field/coef) volume - uses relative warp convention -f,--outformat Output format [field spline], default=field -w,--warpres Warp resolution (mm), only relevant when --outformat=spline -k,--knotspace Knot-spacing (voxels), only relevant when --outformat=spline -j,--jac filename for output (jacobian map) volume -a,--withaff If set, the affine transform is included in the field/jacobian -v,--verbose switch on diagnostic messages -h,--help display this message """ asrt.assertIsNifti(src) cmd = ['fnirtfileutils', '--in={}'.format(src)] cmd += wutils.applyArgStyle('--=', **kwargs) return cmd
def fslorient(input, **kwargs): """Wrapper for the ``fslorient`` tool.""" asrt.assertIsNifti(input) valmap = { 'getorient': wutils.SHOW_IF_TRUE, 'getsform': wutils.SHOW_IF_TRUE, 'getqform': wutils.SHOW_IF_TRUE, 'getsformcode': wutils.SHOW_IF_TRUE, 'getqformcode': wutils.SHOW_IF_TRUE, 'copysform2qform': wutils.SHOW_IF_TRUE, 'copyqform2sform': wutils.SHOW_IF_TRUE, 'deleteorient': wutils.SHOW_IF_TRUE, 'forceradiological': wutils.SHOW_IF_TRUE, 'forceneurological': wutils.SHOW_IF_TRUE, 'swaporient': wutils.SHOW_IF_TRUE, } cmd = ['fslorient'] cmd += wutils.applyArgStyle('-', valsep=' ', valmap=valmap, **kwargs) cmd += [input] return cmd
def eddy_cuda(imain, mask, index, acqp, bvecs, bvals, out, **kwargs): """Wrapper for the ``eddy_cuda`` command.""" valmap = { 'fep': wutils.SHOW_IF_TRUE, 'initrand': wutils.SHOW_IF_TRUE, 'repol': wutils.SHOW_IF_TRUE, 'ol_pos': wutils.SHOW_IF_TRUE, 'ol_sqr': wutils.SHOW_IF_TRUE, 'dont_sep_offs_move': wutils.SHOW_IF_TRUE, 'dont_peas': wutils.SHOW_IF_TRUE, 'data_is_shelled': wutils.SHOW_IF_TRUE, 'b0_only': wutils.SHOW_IF_TRUE, 'dont_mask_output': wutils.SHOW_IF_TRUE, 'cnr_maps': wutils.SHOW_IF_TRUE, 'residuals': wutils.SHOW_IF_TRUE, 'estimate_move_by_susceptibility': wutils.SHOW_IF_TRUE, 'verbose': wutils.SHOW_IF_TRUE, 'very_verbose': wutils.SHOW_IF_TRUE, } asrt.assertFileExists(imain, mask, index, acqp, bvecs, bvals) asrt.assertIsNifti(imain, mask) kwargs.update({ 'imain': imain, 'mask': mask, 'index': index, 'acqp': acqp, 'bvecs': bvecs, 'bvals': bvals, 'out': out }) cmd = ['eddy_cuda'] + wutils.applyArgStyle('--=', valmap=valmap, **kwargs) return cmd
def test_assertIsNifti(): with tempdir.tempdir(): analyze = make_random_image('analyze.img', imgtype=0) nifti1 = make_random_image('nifti1.nii', imgtype=1) nifti2 = make_random_image('nifti2.nii', imgtype=2) with pytest.raises(AssertionError): assertions.assertIsNifti(analyze) with pytest.raises(AssertionError): assertions.assertIsNifti('analyze.img') assertions.assertIsNifti(nifti1) assertions.assertIsNifti('nifti1.nii') assertions.assertIsNifti(nifti2) assertions.assertIsNifti('nifti2.nii') assertions.assertIsNifti(nifti1, nifti2)
def test_disabled(): with assertions.disabled(): assertions.assertFileExists('NOT', 'A', 'FILE', 'NO', 'WAY') assertions.assertIsNifti('boo.txt')