Source code for ants.utils.process_args

"""
"""


__all__ = [
    "get_pointer_string",
    "short_ptype",
    "_ptrstr",
    "_int_antsProcessArguments",
    "get_lib_fn",
]

from ..core import ants_image as iio
from .. import lib

_short_ptype_map = {
    "unsigned char": "UC",
    "unsigned int": "UI",
    "float": "F",
    "double": "D",
}


[docs]def short_ptype(pixeltype): return _short_ptype_map[pixeltype]
[docs]def get_lib_fn(string): return lib.__dict__[string]
def _ptrstr(pointer): """ get string representation of a py::capsule (aka pointer) """ libfn = get_lib_fn("ptrstr") return libfn(pointer)
[docs]def get_pointer_string(image): return _ptrstr(image.pointer)
def _int_antsProcessArguments(args): """ Needs to be better validated. """ p_args = [] if isinstance(args, dict): for argname, argval in args.items(): if "-MULTINAME-" in argname: # have this little hack because python doesnt support # multiple dict entries w/ the same key like R lists argname = argname[: argname.find("-MULTINAME-")] if argval is not None: if len(argname) > 1: p_args.append("--%s" % argname) else: p_args.append("-%s" % argname) if isinstance(argval, iio.ANTsImage): p_args.append(_ptrstr(argval.pointer)) elif isinstance(argval, list): for av in argval: if isinstance(av, iio.ANTsImage): av = _ptrstr(av.pointer) elif str(arg) == "True": av = str(1) elif str(arg) == "False": av = str(0) p_args.append(av) else: p_args.append(str(argval)) elif isinstance(args, list): for arg in args: if isinstance(arg, iio.ANTsImage): pointer_string = _ptrstr(arg.pointer) p_arg = pointer_string elif arg is None: pass elif str(arg) == "True": p_arg = str(1) elif str(arg) == "False": p_arg = str(0) else: p_arg = str(arg) p_args.append(p_arg) return p_args