Execution Time0.02s

Test: unulist (Passed)
Build: teem-Slicer-Linux-3.10.0-123.el7.x86_64-x86_64 (ip-172-31-44-204.ec2.internal) on 2022-10-04 00:02:34
Repository revision: e4746083c0e1dc0c137124c41eca5d23adf73bfa


Show Command Line
Display graphs:

Test output
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu
           --- unu: Utah Nrrd Utilities command-line interface ---
     unu about ... Information about this program and its use
       unu env ... List relevant environment variables and their values
       unu i2w ... converts from 1-D index to world position
       unu w2i ... converts from 1-D world to index position
      unu make ... Create a nrrd (or nrrd header) from scratch
      unu head ... Print header of one or more nrrd files
      unu data ... Print data segment of a nrrd file
   unu convert ... Convert to another type (as if by cast, w/ optional clamp)
  unu resample ... Filtering and {up,down}sampling with a separable kernel
      (unu fft ... Not Enabled: Fast Fourier Transform of selected axes)
   unu cmedian ... Cheap histogram-based median/mode filtering
      unu dist ... Euclidean distance transform
    unu minmax ... Print out min and max values in one or more nrrds
     unu cksum ... Compute 32-bit CRC of nrrd data (same as via "cksum")
      unu diff ... Sees if two nrrds are different in any way
  unu quantize ... Quantize values to 8, 16, or 32 bits
unu unquantize ... Recover floating point values from quantized data
   unu project ... Collapse scanlines to scalars along some axis
     unu slice ... Slice along one or more axes at given positions
   unu sselect ... Select subset of slices along an axis
      unu dice ... Save all slices along one axis into separate files
    unu splice ... Replace a slice with a different nrrd
      unu join ... Connect slices and/or slabs into a bigger nrrd
      unu crop ... Crop along each axis to make a smaller nrrd
     unu acrop ... Automatically crop axes based on given measure
     unu inset ... Replace a sub-region with a different nrrd
       unu pad ... Pad along each axis to make a bigger nrrd
   unu reshape ... Superficially change dimension and/or axes sizes
   unu permute ... Permute ordering of axes
      unu swap ... Interchange ordering of two axes
   unu shuffle ... Permute slices along one axis
      unu flip ... Reverse order of slices along one axis
  unu unorient ... Make image orientation be axis-aligned
   unu basinfo ... Modify whole-array attributes (not per-axis)
    unu axinfo ... Modify attributes of one or more axes
  unu axinsert ... Add a "stub" (length 1) axis to a nrrd
   unu axsplit ... Split one axis into two axes
  unu axdelete ... Remove one or more singleton axes from a nrrd
   unu axmerge ... Merge two adjacent axes into one
      unu tile ... Tile slices of one axis into two other axes
    unu untile ... Undo "unu tile": merge slow parts of two axis splits
     unu histo ... Create 1-D histogram of values in a nrrd
    unu dhisto ... Create image of 1-D value histogram
    unu jhisto ... Create joint histogram of two or more nrrds
    unu histax ... Replace each scanline along an axis with its histogram
       unu heq ... Perform histogram equalization
     unu gamma ... Brighten or darken values with a gamma
       unu 1op ... Unary operation on a nrrd
       unu 2op ... Binary operation on two nrrds, or on a nrrd and a constant
       unu 3op ... Ternary operation on three nrrds or constants
    unu affine ... Affine (lerp) mapping on 5 nrrds or constants
       unu lut ... Map nrrd through one univariate lookup table
      unu mlut ... Map nrrd through whole nrrd of univariate lookup tables
     unu subst ... Map nrrd through a univariate substitution table
      unu rmap ... Map nrrd through one *regular* univariate map ("colormap")
     unu mrmap ... Map nrrd through a whole nrrd of regular univariate maps
      unu imap ... Map nrrd through *irregular* univariate map ("colormap")
      unu lut2 ... Map nrrd through a bivariate lookup table
    unu ccfind ... Find connected components (CCs)
     unu ccadj ... Form adjecency matrix of connected components
   unu ccmerge ... Merge CCs with their neighbors, under various constraints
  unu ccsettle ... Remap CC values down to lowest contiguous values
      unu save ... Write nrrd with specific format, encoding, or endianness
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu about

           --- unu: Utah Nrrd Utilities command-line interface ---
         Teem version 1.12.0, maybe 2014 or 2015 (not yet released)

    "unu" is a command-line interface to much of the functionality in "nrrd",
 a C library for raster data processing. Nrrd is one library in the "Teem"
 collection of libraries. More information about Teem is at
 <http://teem.sf.net>. A checkout of Teem source is available via:
 svn co http://svn.code.sf.net/p/teem/code/teem/trunk teem
 
    Long-term maintenance of this software depends on funding, and funding
 depends on being able to document who is using it for what. If unu or Nrrd
 has helped in your research, including for simple one-off experiments or
 mundane data hacking, the developers of Teem would love to know. There are
 multiple ways of communicating this. In your publications, consider adding a
 line such as this in the Acknowledgments: "Data processing performed with the
 unu tool, part of the Teem toolkit available at http://teem.sf.net".
 Alternatively, please email glk@uchicago.edu and briefly describe how Teem
 software has helped in your work. Please also consider joining the teem-users
 mailing list: <http://lists.sourceforge.net/lists/listinfo/teem-users>. This
 is the primary forum for feedback, questions, and feature requests.
 
    A summary list of unu commands is generated by running simply "unu".
 Running a unu command without additional arguments (e.g. "unu slice")
 generates its description and usage information. This includes information
 (marked with "* Uses ...") about the underling Nrrd library calls (e.g.
 nrrdSlice()) that implement the basic functionality in that unu command.
 
    The utility of unu is mainly as a pre-processing tool for getting data
 into a type, encoding, format, or dimensions best suited for some
 visualization or rendering task. Also, slices and projections are effective
 ways to visually inspect the contents of a dataset. Especially useful
 commands include make, resample, crop, slice, project, histo, dhisto,
 quantize, and save. Unu can process CT and MRI volume datasets, grayscale and
 color images, time-varying volumes of vector fields (5-D arrays), and more.
 Currently supported formats are plain text files (2-D float arrays), NRRD,
 VTK structured points, and PNG and PNM images. "unu make -bs -1" can read
 from most DICOM files. "unu save" can generate EPS files. Supported encodings
 are raw, ascii, hex, gzip, and bzip2.
 
    Much of the functionality of unu derives from chaining multiple
 invocations together with pipes ("|"), minimizing the need to save out
 intermediate files. For example, if "data.raw.gz" is a gzip'ed 256 x 256 x 80
 volume of raw floats written from a PC, then the following will save to
 "zsum.png" a histogram equalized summation projection along the slowest
 axis:
 
 unu make -i data.raw.gz -t float -s 256 256 80 -e gzip -en little \
  | unu project -a 2 -m sum \
  | unu heq -b 2000 -s 1 \
  | unu quantize -b 8 -o zsum.png
  
 Formats available: nrrd pnm vtk text eps
   (not available: png)
 Nrrd data encodings available: raw ascii hex gz zrl
   (not available: bz2)

/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu about (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu env

env: List relevant environment variables and their values. These environment
variables provide a way of setting global variables that can affect the way
Nrrd (and unu) operates.
* Uses nrrdGetenvBool, nrrdGetenvEnum, nrrdGetenvInt, and nrrdGetenvUInt

Each variable in the listing below starts with the name of the environment
variable ("NRRD_..."), what type of value it represents (e.g. "int", "bool"),
what the environment variable is currently set to, what the corresponding Nrrd
global variable is set to, and a description of the variable.

Bool variables may be set to true simply by setting the environment variable;
setting the value to "true" or "false" sets the bool accordingly. Enum
variables may be set by setting the environment variable to any string that
parses as one of the enum values. Int and unsigned int variables are set via a
string parse-able as a numeric value.

In addition to the the "NRRD_" environment variables, there is this one,
UNRRDU_QUIET_QUIT, which determines whether unu exits quietly (without error
and usage info) when it fails because an input nrrd read immediately hit EOF
(as happens when many unu invocations are piped together). This is currently
detected by seeing if the error message ends with 
"[nrrd] _nrrdRead: immediately hit EOF".

UNRRDU_QUIET_QUIT: is NOT set; quiet-quit NOT enabled

NRRD_STATE_KEYVALUEPAIRS_PROPAGATE (bool): not set
  (nrrdStateKeyValuePairsPropagate == false; unchanged)
When true, key/value pairs are copied from input nrrd to output nrrd just like
other basic info that hasn't just been modified (e.g. type, dimension, block
size).

NRRD_DEFAULT_CENTER (centering enum): not set
  (nrrdDefaultCenter == cell; unchanged)
The type of sample centering to use when none has been set but one has to be
chosen for some operation (e.g. resampling).

NRRD_DEFAULT_WRITE_ENCODING_TYPE (encoding enum): not set
  (nrrdDefaultWriteEncodingType == raw; unchanged)
When writing nrrds, what encoding to use. Only "unu save" affords explicit
control of output encoding.

NRRD_STATE_KIND_NOOP (bool): not set
  (nrrdStateKindNoop == false; unchanged)
When true, Nrrd makes not even the slightest effort to be smart about setting
the "kind" field of an axis after some operation that modified its samples.

NRRD_STATE_VERBOSE_IO (int): not set
  (nrrdStateVerboseIO == 1; unchanged)
The verbosity level of Nrrd input/output operations.

NRRD_STATE_BLIND_8_BIT_RANGE (bool): not set
  (nrrdStateBlind8BitRange == true; unchanged)
When true, the determined range of 8-bit data will always be [0,255] (for
uchar) or [-128,127] (for signed char), instead of actually looking into the
data to find its range.

NRRD_DEFAULT_WRITE_BARE_TEXT (bool): not set
  (nrrdDefaultWriteBareText == true; unchanged)
When false, text files used for saving nrrds start with comment ("# ...")
lines containing nrrd fields.

NRRD_STATE_MEASURE_TYPE (type enum): not set
  (nrrdStateMeasureType == float; unchanged)
For measurements ("unu project") like sum and product, the type of the output
result, when one hasn't been explicitly requested.

NRRD_STATE_MEASURE_MODE_BINS (int): not set
  (nrrdStateMeasureModeBins == 1024; unchanged)
When measuring mode but without a given histogram, how many bins to use in the
temporary internal histogram.

NRRD_STATE_MEASURE_HISTO_TYPE (type enum): not set
  (nrrdStateMeasureHistoType == float; unchanged)
Output type for most measurements of histograms, when one hasn't been
explicitly requested

NRRD_STATE_ALWAYS_SET_CONTENT (bool): not set
  (nrrdStateAlwaysSetContent == true; unchanged)
If true, the output content string is set even when the input content string
is not set.

NRRD_STATE_DISABLE_CONTENT (bool): not set
  (nrrdStateDisableContent == false; unchanged)
If true, output content is never set.

NRRD_DEFAULT_WRITE_CHARS_PER_LINE (unsigned int): not set
  (nrrdDefaultWriteCharsPerLine == 75; unchanged)
When using text encoding, maximum # characters allowed per line.

NRRD_DEFAULT_WRITE_VALS_PER_LINE (unsigned int): not set
  (nrrdDefaultWriteValsPerLine == 8; unchanged)
When using text encoding, maximum # values allowed per line

NRRD_STATE_GRAYSCALE_IMAGE_3D (bool): not set
  (nrrdStateGrayscaleImage3D == false; unchanged)
If true, reading a 2-D grayscale image results in a 3-D image with a single
sample (size=1) on the first (fastest) axis.

/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu env (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu i2w

i2w: converts from 1-D index to world position, given the centering of the
data (cell vs. node), the range of positions, and the number of intervals into
which position has been quantized. This is a demo/utility, which does not
actually operate on any nrrds. Previously available as the stand-alone idx2pos
binary.
* Uses NRRD_POS macro

Usage: i2w <center> <minPos> <maxPos> <num> <index>

<center> = which centering applies to the quantized position.
           Possibilities are:
            o "cell": for histogram bins, quantized values, and
           pixels-as-squares
            o "node": for non-trivially interpolated sample points
           (centering)
<minPos> = smallest position associated with index 0 (double)
<maxPos> = highest position associated with highest index (double)
   <num> = number of intervals into which position has been quantized (double)
 <index> = the input index position, to be converted to world (double)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu i2w (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu w2i

w2i: converts from 1-D world to index position, given the centering of the
data (cell vs. node), the range of positions, and the number of intervals into
which position has been quantized. This is a demo/utility, which does not
actually operate on any nrrds. Previously available as the stand-alone pos2idx
binary.
* Uses NRRD_IDX macro

Usage: w2i <center> <minPos> <maxPos> <num> <world>

<center> = which centering applies to the quantized position.
           Possibilities are:
            o "cell": for histogram bins, quantized values, and
           pixels-as-squares
            o "node": for non-trivially interpolated sample points
           (centering)
<minPos> = smallest position associated with index 0 (double)
<maxPos> = highest position associated with highest index (double)
   <num> = number of intervals into which position has been quantized (double)
 <world> = the input world position, to be converted to index (double)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu w2i (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu make

make: Create a nrrd (or nrrd header) from scratch. The data can be in one or
more files, or coming from stdin. This provides an easy way of specifying the
information about some data as to wrap it in a NRRD file, either to pass on for
further unu processing, or to save to disk. Note that with "-h", this creates a
detached nrrd header file, without ever reading or writing data files. 

When using multiple datafiles, the data from each is simply concatenated in
memory (as opposed to interleaving along a faster axis). Keep in mind that all
the options below refer to the finished data segment resulting from joining all
the data pieces together, except for "-ls", "-bs", and "-e", which apply
(uniformly) to the individual data files. Use the "-fd" option when the things
being joined together are not slices of the final result, but slabs or
scanlines. It may be easier to put multiple filenames in a response file; there
can be one or more filenames per line of the response file. You can also use a
sprintf-style format to identify a numbered range of files, so for example "-i
I.%03d 1 90 1" refers to I.001, I.002, ... I.090, using the inclusive range
from the first to the second integer (following the sprintf-style format), in
steps of the third. Can optionally give a fourth integer to serve same role as
"-fd".

NOTE: for the "-l" (labels), "-u" (units), and "-spu" (space units) options
below, you can use a single unquoted period (.) to signify an empty string.
This creates a convenient way to convey something that the shell doesn't make
it easy to convey. Shell expansion weirdness also requires the use of quotes
around the arguments to "-orig" (space origin), "-dirs" (space directions), and
"-mf" (measurement frame).

* Uses various components of file and data IO, but currently there is no
library function that encapsulates the functionality here.

Usage: make [@file ...] [-h] [-i,--input <file ...>] -t,--type <type> \
       -s,--size <sz0 sz1 ...> [-fd,--filedim <dim>] [-sp,--spacing <sp0 \
       sp1 ...>] [-th,--thickness <th0 th1 ...>] [-k,--kind <k0 k1 ...>] \
       [-cn,--centering <c0 c1 ...>] [-l,--label <lb0 lb1 ...>] \
       [-u,--unit <un0 un1 ...>] [-c,--content <content>] \
       [-ls,--lineskip <num>] [-bs,--byteskip <num>] [-e,--encoding <enc>] \
       [-en,--endian <end>] [-kv,--keyvalue <key/val ...>] \
       [-spc,--space <space>] [-orig,--origin <origin>] \
       [-dirs,--directions <v0 v1 ...>] [-mf,--measurementframe <v0 v1 ...>] \
       [-spu,--spaceunit <su0 su1 ...>] [-o,--output <nout>] \
       [-od,--outputdata <name>]

         @file ... = response file(s) containing command-line arguments
                -h = Generate header ONLY: don't write out the whole nrrd,
                     don't even bother reading the input data, just output the
                     detached nrrd header file (usually with a ".nhdr"
                     extension) determined by the options below. The single
                     constraint is that detached headers are incompatible with
                     using stdin as the data source.
     -i <file ...> , --input <file ...> = Filename(s) of data file(s); use "-"
                     for stdin. *OR*, can use sprintf-style format for
                     identifying a range of numbered files, see above for
                     details. (1 or more strings); default: "-"
         -t <type> , --type <type> = type of data (e.g. "uchar", "int",
                     "float", "double", etc.) (type)
  -s <sz0 sz1 ...> , --size <sz0 sz1 ...> = number of samples along each axis
                     (and implicit indicator of dimension of nrrd)
                     (1 or more size_ts)
         -fd <dim> , --filedim <dim> = When using *multiple* input data files
                     (to "-i"), what is the dimension of the array data in each
                     individual file. By default (not using this option), this
                     dimension is assumed to be one less than the whole data
                     dimension. (unsigned int); default: "0"
 -sp <sp0 sp1 ...> , --spacing <sp0 sp1 ...> = spacing between samples on each
                     axis. Use "nan" for any non-spatial axes (e.g. spacing
                     between red, green, and blue along axis 0 of interleaved
                     RGB image data) (1 or more doubles); default: "nan"
 -th <th0 th1 ...> , --thickness <th0 th1 ...> = thickness of region
                     represented by one sample along each axis. As with
                     spacing, use "nan" for any non-spatial axes.
                     (1 or more doubles); default: "nan"
    -k <k0 k1 ...> , --kind <k0 k1 ...> = what "kind" is each axis, from the
                     nrrdKind airEnum (e.g. space, time, 3-vector,
                     3D-masked-symmetric-matrix, or "none" to signify no kind)
                     (1 or more strings); default: ""
   -cn <c0 c1 ...> , --centering <c0 c1 ...> = kind of centering (node or
                     cell) for each axis, or "none" to signify no centering
                     (1 or more strings); default: ""
  -l <lb0 lb1 ...> , --label <lb0 lb1 ...> = short string labels for each of
                     the axes (1 or more strings); default: ""
  -u <un0 un1 ...> , --unit <un0 un1 ...> = short strings giving units for
                     each of the axes (1 or more strings); default: ""
      -c <content> , --content <content> = Specifies the content string of the
                     nrrd, which is built upon by many nrrd function to record
                     a history of operations (string); default: ""
         -ls <num> , --lineskip <num> = number of ascii lines to skip before
                     reading data (int); default: "0"
         -bs <num> , --byteskip <num> = number of bytes to skip (after
                     skipping ascii lines, if any) before reading data. Can use
                     "-bs -1" to skip a binary header of unknown length in
                     raw-encoded data (long int); default: "0"
          -e <enc> , --encoding <enc> = encoding of input data. Possibilities
                     include:
                      o "raw": raw encoding
                      o "ascii": ascii values, one scanline per line of text,
                     values within line are delimited by space, tab, or comma
                      o "hex": two hex digits per byte
                      o "gzip", "gz": gzip compressed raw data
                     (encoding)
                     default: "raw"
         -en <end> , --endian <end> = Endianness of data; relevent for any
                     data with value representation bigger than 8 bits, with a
                     non-ascii encoding: "little" for Intel and friends (least
                     significant byte first, at lower address); "big" for
                     everyone else (most significant byte first). Defaults to
                     endianness of this machine (endian); default: "little"
 -kv <key/val ...> , --keyvalue <key/val ...> = key/value string pairs to be
                     stored in nrrd. Each key/value pair must be a single
                     string (put it in ""s if the key or the value contain
                     spaces). The format of each pair is "<key>:=<value>", with
                     no spaces before or after ":=". (1 or more strings);
                     default: ""
      -spc <space> , --space <space> = identify the space (e.g. "RAS", "LPS")
                     in which the array conceptually lives, from the nrrdSpace
                     airEnum, which in turn determines the dimension of the
                     space. Or, use an integer>0 togive the dimension of a
                     space that nrrdSpace doesn't know about. By default (not
                     using this option), the enclosing space is set as unknown.
                     (string); default: ""
    -orig <origin> , --origin <origin> = (NOTE: must quote vector) the origin
                     in space of the array: the location of the center of the
                     first sample, of the form "(x,y,z)" (or however many
                     coefficients are needed for the chosen space). Quoting the
                     vector is needed to stop interpretation from the shell
                     (string); default: ""
 -dirs <v0 v1 ...> , --directions <v0 v1 ...> = (NOTE: must quote whole vector
                     list) The "space directions": the vectors in space spanned
                     by incrementing (by one) each axis index (the column
                     vectors of the index-to-world matrix transform), OR,
                     "none" for non-spatial axes. Give one vector per axis.
                     (Quoting around whole vector list, not individually, is
                     needed because of limitations in the parser) (string);
                     default: ""
   -mf <v0 v1 ...> , --measurementframe <v0 v1 ...> = (NOTE: must quote whole
                     vector list). Each vector is a *column* vector of the
                     matrix which transforms from coordinates in measurement
                     frame (in which the coefficients of vectors and tensors
                     are given) to coordinates of world space (given with
                     "-spc"). This is not a per-axis field: the column vectors
                     comprise a D-by-D square matrix, where D is the dimension
                     of world space. (string); default: ""
-spu <su0 su1 ...> , --spaceunit <su0 su1 ...> = short strings giving units
                     with which the coefficients of the space origin and
                     direction vectors are measured. (1 or more strings);
                     default: ""
         -o <nout> , --output <nout> = output filename. If "-h" has been used,
                     the output file is always a detached header. Otherwise,
                     use extension ".nrrd" to signal creation of self-contained
                     nrrd, and ".nhdr" to signal creating of a detached header
                     with (single) data file. (string); default: "-"
        -od <name> , --outputdata <name> = when *not* using "-h" and saving to
                     a ".nhdr" file, using this option allows you to explicitly
                     name the data file, instead of (by default, not using this
                     option) having it be the same filename base as the header
                     file. (string); default: ""
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu make (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu head

head: Print header of one or more nrrd files. The value of this is simply to
print the contents of nrrd headers. This avoids the use of "head -N", where N
has to be determined manually, which always risks printing raw binary data
(following the header) to screen, which tends to clobber terminal settings,
make pointless beeps, and be annoying.
* Uses _nrrdOneLine

Usage: head [@file ...] <nin1 ...>

 @file ... = response file(s) containing command-line arguments
<nin1 ...> = input nrrd(s) (1 or more strings)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu head (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu data

data: Print data segment of a nrrd file. The value of this is to pass the data
segment in isolation to a stand-alone decoder, in case this Teem build lacks an
optional data encoding required for a given nrrd file. Caveats: Will start
copying characters from the datafile until EOF is hit, so this won't work
correctly if the datafile has extraneous content at the end. Will skip lines
(as per "line skip:" header field) if needed, but can only skip bytes (as per
"byte skip:") if the encoding is NOT a compression. 

To make vol.raw contain the uncompressed data from vol.nrrd which uses "gz"
encoding: "unu data vol.nrrd | gunzip > vol.raw"

* Uses nrrdLoad with nio->skipData and nio->keepNrrdDataFileOpen both true in
the NrrdIoState nio.

Usage: data [@file ...] <nin>

@file ... = response file(s) containing command-line arguments
<nin> = input nrrd (string)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu data (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu convert

convert: Convert to another type (as if by cast, w/ optional clamp). By
default this does not transform, scale, or intelligently quantize values; it
just copies them from one type to another, which replicates exactly what you'd
get in C when you assign from a variable of one type to another, or when you
cast to a different type. However, clamping values to the representable range
of the output type is possible. with "-clamp". See also "unu quantize","unu 2op
x", and "unu 3op clamp".
* Uses nrrdConvert or nrrdClampConvert

Usage: convert [@file ...] -t,--type <type> [-i,--input <nin>] [-clamp] \
       [-o,--output <nout>]

@file ... = response file(s) containing command-line arguments
-t <type> , --type <type> = type to convert to (type)
 -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
   -clamp = clamp input values to representable range of values of output
            type, to avoid wrap-around problems
-o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu convert (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu resample

resample: Filtering and {up,down}sampling with a separable kernel. Simplifies
access to the NrrdResampleContext functions by assuming (among other things)
that the same kernel is used for resampling every axis that is being resampled.
Only required option is "-s" to specify which axes to resample and how many
output samples to generate. Resampling kernel "-k" defaults to an interpolating
cubic, but many other choices are available. By default, resampling an axis
resamples the full extent of its samples, but it is possible to offset this
range via "-off", or to crop and/or pad via "-min" and "-max". The resampling
respects the difference between cell- and node-centered data, but you can
over-ride known centering with "-co".
* Uses the many nrrdResample* functions operating on a nrrdResampleContext

Usage: resample [@file ...] [-old] -s,--size <sz0 ...> \
       [-off,--offset [<off0 ...>]] [-min,--minimum [<min0 ...>]] \
       [-max,--maximum [<max0 ...>]] [-k,--kernel <kern>] [-nrn] \
       [-ne,--nonexistent <behavior>] [-b,--boundary <behavior>] \
       [-v,--value <value>] [-t,--type <type>] [-cheap] [-c,--center <center>] \
       [-co,--center-override] [-verbose <v>] [-i,--input <nin>] \
       [-o,--output <nout>]

        @file ... = response file(s) containing command-line arguments
             -old = instead of using the new nrrdResampleContext
                    implementation, use the old nrrdSpatialResample
                    implementation
     -s <sz0 ...> , --size <sz0 ...> = For each axis, information about how
                    many samples in output:
                     o "=": leave this axis completely untouched: no
                    resampling whatsoever
                     o "x<float>": multiply the number of input samples by
                    <float>, and round to the nearest integer, to get the
                    number of output samples. Use "x1" to resample the axis but
                    leave the number of samples unchanged
                     o "/<float>": divide number of samples by <float>
                     o "+=<uint>", "-=<uint>": add <uint> to or subtract
                    <uint> from number input samples to get number output
                    samples
                     o "<uint>": exact number of output samples
                     o "a": resample this axis to whatever number of samples
                    preserves the aspect ratio of other resampled axes.
                    Currently needs to be used on all but one of the resampled
                    axes, if at all. 
                    (1 or more sampling specifications)
-off [<off0 ...>] , --offset [<off0 ...>] = For each axis, an offset or shift
                    to the position (in index space) of the lower end of the
                    sampling domain. Either -off can be used, or -min and -max
                    together, or none of these (so that, by default, the full
                    domain of the axis is resampled). (0 or more doubles);
                    default: ""
-min [<min0 ...>] , --minimum [<min0 ...>] = For each axis, the lower end (in
                    index space) of the domain of the resampling. Either -off
                    can be used, or -min and -max together, or none of these
                    (so that, by default, the full domain of the axis is
                    resampled). (0 or more doubles); default: ""
-max [<max0 ...>] , --maximum [<max0 ...>] = For each axis, the upper end (in
                    index space) of the domain of the resampling. Either -off
                    can be used, or -min and -max together, or none of these,
                    so that (by default), the full domain of the axis is
                    resampled. (0 or more doubles); default: ""
        -k <kern> , --kernel <kern> = The kernel to use for resampling.
                    Kernels logically live in the input index space for
                    upsampling, and in the output index space for downsampling.
                    Possibilities include:
                     o "box": nearest neighbor interpolation on upsampling,
                    and uniform averaging on downsampling
                     o "cheap": nearest neighbor interpolation for
                    upsampling, and non-blurring sub-sampling (pick subset of
                    input samples) on downsampling
                     o "tent": linear interpolation
                     o "cubic:B,C": Mitchell/Netravali BC-family of cubics:
                      "cubic:1,0": B-spline; maximal blurring
                      "cubic:0,0.5": Catmull-Rom; good interpolating kernel
                     o "c4h": 6-sample-support, C^4 continuous, accurate
                     o "c4hai": discrete pre-filter to make c4h interpolate
                     o "bspl3", "bspl5", "bspl7": cubic (same as cubic:1,0),
                    quintic, and 7th order B-spline
                     o "bspl3ai", "bspl5ai", "bspl7ai": discrete pre-filters
                    to make bspl3, bspl5, bspl7 interpolate
                     o "hann:R": Hann (cosine bell) windowed sinc, radius R
                     o "black:R": Blackman windowed sinc, radius R
                     o "gauss:S,C": Gaussian blurring, with standard
                    deviation S and cut-off at C standard deviations
                     o "dgauss:S,C": Lindeberg's discrete Gaussian.
                    (kernel specification)
                    default: "cubic:0,0.5"
             -nrn = do NOT do per-pass kernel weight renormalization. Doing
                    the renormalization is not a performance hit (hence is
                    enabled by default), and the renormalization is sometimes
                    needed to avoid "grating" on non-integral down-sampling.
                    Disabling the renormalization is needed for correct results
                    with artificially narrow kernels.
   -ne <behavior> , --nonexistent <behavior> = When resampling floating-point
                    values, how to handle non-existent values within kernel
                    support:
                     o "noop": do nothing; let them pollute result
                     o "renorm": ignore them and renormalize weights of
                    existent values
                     o "wght": ignore them and simply use weights of existent
                    values
                    (resample non-existent)
                    default: "noop"
    -b <behavior> , --boundary <behavior> = How to handle samples beyond the
                    input bounds:
                     o "pad": use some specified value
                     o "bleed": extend border values outward
                     o "mirror": repeated reflections
                     o "wrap": wrap-around to other side
                    (boundary behavior)
                    default: "bleed"
       -v <value> , --value <value> = for "pad" boundary behavior, pad with
                    this value (double); default: "0.0"
        -t <type> , --type <type> = type to save OUTPUT as. By default (not
                    using this option), the output type is the same as the
                    input type (type); default: "default"
           -cheap = [DEPRECATED: the "-k cheap" option is the new (and more
                    reliable) way to access this functionality. "-cheap" is
                    only here for legacy use in combination with "-old".]
                    When downsampling (reducing number of samples), don't try
                    to do correct filtering by scaling kernel to match new
                    (stretched) index space; keep it in old index space. When
                    used in conjunction with "-k box", this can implement
                    subsampling which chooses every Nth value.
      -c <center> , --center <center> = (not available with "-old") default
                    centering of axes when input nrrd axes don't have a known
                    centering: "cell" or "node" (centering); default: "cell"
              -co , --center-override = (not available with "-old") centering
                    info specified via "-c" should *over-ride* known centering,
                    rather than simply be used when centering is unknown.
     -verbose <v> = (not available with "-old") verbosity level (int);
                    default: "0"
         -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
        -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu resample (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu fft

fft: Fast Fourier Transform of selected axes. This Teem has NOT been compiled
with FFTW3 <http://www.fftw.org/>. If it had been, this would be a command-line
interface to that functionality. There is currently no non-FFTW implementation
of the FFT available.
* Uses nrrdFFT

Usage: fft [@file ...] <dir> -a,--axes <ax0 ...> [-pr,--planrigor <pr>] \
       [-r,--rescale <bool>] [-w,--wisdom <filename>] [-i,--input <nin>] \
       [-ri,--realinput] [-o,--output <nout>]

    @file ... = response file(s) containing command-line arguments
        <dir> = forward ("forw", "f") or backward/inverse ("back", "b")
                transform (direction)
 -a <ax0 ...> , --axes <ax0 ...> = the one or more axes that should be
                transformed (1 or more unsigned ints)
     -pr <pr> , --planrigor <pr> = rigor with which fftw plan is constructed.
                Options include:
                 o "e", "est", "estimate": only an estimate
                 o "m", "meas", "measure": standard amount of measurements of
                system properties
                 o "p", "pat", "patient": slower, more measurements
                 o "x", "ex", "exhaustive": slowest, most measurements
                (fftw plan rigor)
                default: "est"
    -r <bool> , --rescale <bool> = scale fftw output (by sqrt(1/N)) so that
                forward and backward transforms will get back to original
                values (bool); default: "true"
-w <filename> , --wisdom <filename> = A filename here is used to read in fftw
                wisdom (if the file exists already), and is used to save out
                updated wisdom after the transform. By default (not using this
                option), no wisdom is read or saved. Note: no wisdom is gained
                (that is, learned by FFTW) with planning rigor "estimate".
                (string); default: ""
     -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
          -ri , --realinput = input is real-valued, so insert new length-2
                axis 0 and set complex component to 0.0. Axes to transform
                (indicated by "-a") will be incremented accordingly.
    -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu fft (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu cmedian

cmedian: Cheap histogram-based median/mode filtering. Only works on 1, 2, or 3
dimensions. The window over which filtering is done is always square, and only
a simplistic weighting scheme is available. The method is cheap because it does
the median or mode based on a histogram, which enforces a quantization to the
number of bins in the histogram, which probably means a loss of precision for
anything except 8-bit data. Also, integral values can be recovered exactly only
when the number of bins is exactly min-max+1 (as reported by "unu minmax").
* Uses nrrdCheapMedian, plus nrrdSlice and nrrdJoin in case of "-c"

Usage: cmedian [@file ...] -r,--radius <radius> [-mode] [-b,--bins <num>] \
       [-w,--weight <weight>] [-p,--pad] [-c,--channel] [-i,--input <nin>] \
       [-o,--output <nout>]

  @file ... = response file(s) containing command-line arguments
-r <radius> , --radius <radius> = how big a window to filter over. "-r 1"
              leads to a 3x3 window in an image, and a 3x3x3 window in a volume
              (unsigned int)
      -mode = By default, median filtering is done. Using this option enables
              mode filtering, in which the most common value is used as output
   -b <num> , --bins <num> = # of bins in histogram. It is in your interest to
              minimize this number, since big histograms mean slower execution
              times. 8-bit data needs at most 256 bins. (unsigned int);
              default: "256"
-w <weight> , --weight <weight> = How much higher to preferentially weight
              samples that are closer to the center of the window. "1.0" weight
              means that all samples are uniformly weighted over the window,
              which facilitates a simple speed-up. (float); default: "1.0"
         -p , --pad = Pad the input (with boundary method "bleed"), and crop
              the output, so as to overcome our cheapness and correctly handle
              the border. Obviously, this takes more memory.
         -c , --channel = Slice the input along axis 0, run filtering on all
              slices, and join the results back together. This is the way you'd
              want to process color (multi-channel) images or volumes.
   -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
  -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu cmedian (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu dering

dering: Ring removal for CT. Should be considered a work-in-progress.

Usage: dering [@file ...] -c,--center <x y> [-v,--verbose <v>] \
       [-li,--linterp <bool>] [-vs,--vertseam <bool>] [-tn,--thetanum <# \
       smpls>] [-rs,--radscale <scale>] [-rk,--radiuskernel <kern>] \
       [-tk,--thetakernel <kern>] [-cp,--clampperc <lo hi>] [-m,--mask <mask>] \
       [-b,--back <val>] [-i,--input <nin>] [-o,--output <nout>]

    @file ... = response file(s) containing command-line arguments
     -c <x y> , --center <x y> = center of rings, in index space of fastest
                two axes (2 doubles)
       -v <v> , --verbose <v> = verbosity level (int); default: "0"
   -li <bool> , --linterp <bool> = whether to use linear interpolation during
                polar transform (bool); default: "false"
   -vs <bool> , --vertseam <bool> = whether to dering left and right sides
                separately (requires an even value for -tn thetanum) (bool);
                default: "false"
-tn <# smpls> , --thetanum <# smpls> = # of theta samples (unsigned int);
                default: "20"
  -rs <scale> , --radscale <scale> = scaling on radius in polar transform
                (double); default: "1.0"
   -rk <kern> , --radiuskernel <kern> = kernel for high-pass filtering along
                radial direction (kernel specification); default: "gauss:3,4"
   -tk <kern> , --thetakernel <kern> = kernel for blurring along theta
                direction. (kernel specification); default: "box"
  -cp <lo hi> , --clampperc <lo hi> = when clamping values as part of ring
                estimation, the clamping range is set to exclude this percent
                of values from the low and high end of the data range
                (2 doubles); default: "0.0 0.0"
    -m <mask> , --mask <mask> = optional: after deringing, output undergoes a
                lerp, parameterized by this array, from the background value
                (via "-b") where mask=0 to the original deringing output where
                mask=1. This lerp is effectively the same as a "unu 3op lerp",
                so this should either be match the input in size, or match its
                slices along the slowest axis. (nrrd); default: ""
     -b <val> , --back <val> = when using a mask ("-m"), the background value
                to lerp with. (double); default: "0.0"
     -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
    -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu dering (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu dist

dist: Euclidean distance transform. Based on "Distance Transforms of Sampled
Functions" by Pedro F. Felzenszwalb and Daniel P. Huttenlocher, Cornell
Computing and Information Science TR2004-1963. This function first thresholds
at the specified value and then does the distance transform of the resulting
binary image. The signed distance (negative values inside object) is also
available. Distances between non-isotropic samples are handled correctly.
* Uses nrrdDistanceL2 or nrrdDistanceL2Signed

Usage: dist [@file ...] -th,--thresh <val> [-b,--bias <val>] \
       [-t,--type <type>] [-sgn] [-inv] [-i,--input <nin>] \
       [-o,--output <nout>]

@file ... = response file(s) containing command-line arguments
-th <val> , --thresh <val> = threshold value to separate inside from outside
            (double)
 -b <val> , --bias <val> = if non-zero, bias the distance transform by this
            amount times the difference in value from the threshold (double);
            default: "0.0"
-t <type> , --type <type> = type to save output in (type); default: "float"
     -sgn = also compute signed (negative) distances inside objects, instead
            of leaving them as zero
     -inv = values *below* threshold are considered interior to object. By
            default (not using this option), values above threshold are
            considered interior.
 -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
-o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu dist (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu minmax

minmax: Print out min and max values in one or more nrrds. Unlike other
commands, this doesn't produce a nrrd. It only prints to standard out the min
and max values found in the input nrrd(s), and it also indicates if there are
non-existent values.
* Uses nrrdRangeNewSet

Usage: minmax [@file ...] [-blind8 <bool>] <nin1 ...>

     @file ... = response file(s) containing command-line arguments
-blind8 <bool> = whether to blindly assert the range of 8-bit data, without
                 actually going through the data values, i.e. uchar is always
                 [0,255], signed char is [-128,127]. Note that even if you do
                 not use this option, the default (false) is potentialy
                 over-riding the effect of environment variable
                 NRRD_STATE_BLIND_8_BIT_RANGE; see "unu env" (bool);
                 default: "false"
    <nin1 ...> = input nrrd(s) (1 or more strings)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu minmax (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu cksum

cksum: Compute 32-bit CRC of nrrd data (same as via "cksum"). Unlike other
commands, this doesn't produce a nrrd. It only prints to standard out the CRC
and byte counts for the input nrrd(s), seeking to emulate the formatting of
cksum output.
* Uses nrrdCRC32

Usage: cksum [@file ...] [-en,--endian <end>] [-pen,--printendian <bool>] \
       <nin1 ...>

  @file ... = response file(s) containing command-line arguments
  -en <end> , --endian <end> = Endianness in which to compute CRC; "little"
              for Intel and friends; "big" for everyone else. Defaults to
              endianness of this machine (endian); default: "little"
-pen <bool> , --printendian <bool> = whether or not to indicate after the CRC
              value the endianness with which the CRC was computed; doing so
              clarifies that the CRC result depends on endianness and may
              remove confusion in comparing results on platforms of different
              endianness (bool); default: "false"
 <nin1 ...> = input nrrd(s) (1 or more strings)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu cksum (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu diff

diff: Sees if two nrrds are different in any way. Looks through all fields to
see if two given nrrds contain the same information. Or, array meta-data can be
excluded, and comparison only on the data values is done with the -od flag.
* Uses nrrdCompare

Usage: diff [@file ...] <ninA> <ninB> [-eps,--epsilon <eps>] [-od,--onlydata]

 @file ... = response file(s) containing command-line arguments
    <ninA> = First input nrrd. (nrrd)
    <ninB> = Second input nrrd. (nrrd)
-eps <eps> , --epsilon <eps> = threshold for allowable difference in values in
             data values (double); default: "0.0"
       -od , --onlydata = Compare data values only, excluding array meta-data
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu diff (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu quantize

quantize: Quantize values to 8, 16, or 32 bits. Input values can be fixed
point (e.g. quantizing ushorts down to uchars) or floating point. Values are
clamped to the min and max before they are quantized, so there is no risk of
getting 255 where you expect 0 (with unsigned char output, for example). The
min and max can be specified explicitly (as a regular number), or in terms of
percentiles (a number suffixed with "%", no space in between). This does only
linear quantization. See also "unu convert", "unu 2op x", and "unu 3op clamp".
* Uses nrrdQuantize

Usage: quantize [@file ...] -b,--bits <bits> [-min,--minimum <value>] \
       [-max,--maximum <value>] [-g,--gamma <gamma>] [-hb,--bins <bins>] \
       [-blind8 <bool>] [-i,--input <nin>] [-o,--output <nout>]

     @file ... = response file(s) containing command-line arguments
     -b <bits> , --bits <bits> = Number of bits to quantize down to;
                 determines the type of the output nrrd:
                  o "8": unsigned char
                  o "16": unsigned short
                  o "32": unsigned int
                 (quantization bits)
  -min <value> , --minimum <value> = The value to map to zero, given
                 explicitly as a regular number, *or*, if the number is given
                 with a "%" suffix, this minimum is specified in terms of the
                 percentage of samples in input that are lower. "0%" means the
                 lowest input value is used, "1%" means that the 1% of the
                 lowest values are all mapped to zero. By default (not using
                 this option), the lowest input value is used. (string);
                 default: "nan"
  -max <value> , --maximum <value> = The value to map to the highest unsigned
                 integral value, given explicitly as a regular number, *or*, if
                 the number is given with a "%" suffix, this maximum is
                 specified in terms of the percentage of samples in input that
                 are higher. "0%" means the highest input value is used, which
                 is also the default behavior (same as not using this option).
                 (string); default: "nan"
    -g <gamma> , --gamma <gamma> = gamma > 1.0 brightens; gamma < 1.0 darkens.
                 Negative gammas invert values. (double); default: "1.0"
    -hb <bins> , --bins <bins> = number of bins in histogram of values, for
                 determining min or max by percentiles. This has to be large
                 enough so that any errant very high or very low values do not
                 compress the interesting part of the histogram to an
                 inscrutably small number of bins. (unsigned int);
                 default: "5000"
-blind8 <bool> = if not using "-min" or "-max", whether to know the range of
                 8-bit data blindly (uchar is always [0,255], signed char is
                 [-128,127]) (bool); default: "true"
      -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
     -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu quantize (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu unquantize

unquantize: Recover floating point values from quantized data. Uses the oldMin
and oldMax fields in the Nrrd of quantized values to regenerate approximate
versions of the original unquantized values. Can also override these with
"-min" and "-max".
* Uses nrrdUnquantize

Usage: unquantize [@file ...] -i,--input <nin> [-min,--minimum <value>] \
       [-max,--maximum <value>] [-double] [-o,--output <nout>]

   @file ... = response file(s) containing command-line arguments
    -i <nin> , --input <nin> = input nrrd. That this argument is required
               instead of optional, as with most unu commands, is a quirk
               caused by the need to have "unu unquantize" generate usage info,
               combined with the fact that all the other arguments have
               sensible defaults (nrrd)
-min <value> , --minimum <value> = Lowest value prior to quantization.
               Defaults to nin->oldMin if it exists, otherwise 0.0 (double);
               default: "nan"
-max <value> , --maximum <value> = Highest value prior to quantization.
               Defaults to nin->oldMax if it exists, otherwise 1.0 (double);
               default: "nan"
     -double = Use double for output type, instead of float
   -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu unquantize (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu project

project: Collapse scanlines to scalars along some axis. The scanline is
reduced to a single scalar by "measuring" all the values in the scanline with
some measure. The output nrrd has dimension one less than input (except when
the input is itself 1-D); the output type depends on the measure in a
non-trivial way, or it can be set explicitly with the "-t" option.
* Uses nrrdProject

Usage: project [@file ...] -a,--axis <axis> -m,--measure <measr> \
       [-t,--type <type>] [-i,--input <nin>] [-o,--output <nout>]

 @file ... = response file(s) containing command-line arguments
 -a <axis> , --axis <axis> = axis to project along (unsigned int)
-m <measr> , --measure <measr> = How to "measure" a scanline, by summarizing
             all its values with a single scalar. Possibilities include:
              o "min", "max", "mean", "median", "mode", "variance", "skew",
             "sum", "product", : (self-explanatory)
              o "intc", "slope", "error": intercept, slope, and error from
             line fitting
              o "stdv": standard deviation
              o "cov": coefficient of variation
              o "product", "sum": product or sum of all values
              o "L1", "L2", "L4", "NL2", "RMS", "Linf": vector norms
              o "histo-min", "histo-max", "histo-mean","histo-median",
             "histo-mode", "histo-product", "histo-l2", "histo-sum",
             "histo-variance", "histo-sd": same measures, but for situations
             where we're given not the original values, but a histogram of
             them.
             (measure)
 -t <type> , --type <type> = type to use for output. By default (not using
             this option), the output type is determined auto-magically (type);
             default: "default"
  -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
 -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu project (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu slice

slice: Slice along one or more axes at given positions. Output nrrd dimension
is less than input nrrd dimension by the number of slice axes (except when the
input is or gets down to 1-D). Can slice on all axes in order to sample a
single value from the array. Per-axis information is preserved.
* Uses nrrdSlice (possibly called multiple times)

Usage: slice [@file ...] -a,--axis <axis ...> -p,--position <pos ...> \
       [-i,--input <nin>] [-o,--output <nout>]

    @file ... = response file(s) containing command-line arguments
-a <axis ...> , --axis <axis ...> = single axis or multiple axes to slice
                along. Giving multiple axes here leads to doing multiple slices
                (at the corresponding positions given with "-p"). Multiple axes
                should be identified in terms of the axis numbering of the
                original nrrd; as the slices are done (in the given ordering)
                the actual slice axis will be different if previous slices were
                on lower-numbered (faster) axes. (1 or more unsigned ints)
 -p <pos ...> , --position <pos ...> = position(s) to slice at:
                 o <int> gives 0-based index
                 o M-<int> give index relative to the last sample on the axis
                (M == #samples-1).
                (1 or more positions)
     -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
    -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu slice (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu sselect

sselect: Select subset of slices along an axis. The choice to keep or nix a
slice is determined by whether the values in a given 1-D line of values is
above or below a given threshold.
* Uses nrrdSliceSelect

Usage: sselect [@file ...] [-i,--input <nin>] -a,--axis <axis> \
       -s,--selector <nline> -th <thresh> [-o,--output <above below>]

       @file ... = response file(s) containing command-line arguments
        -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
       -a <axis> , --axis <axis> = axis to slice along (unsigned int)
      -s <nline> , --selector <nline> = the 1-D nrrd of values to compare with
                   threshold (nrrd)
    -th <thresh> = threshold on selector line (double)
-o <above below> , --output <above below> = outputs for slices corresponding
                   to values above (first) and below (second) given threshold.
                   Use "x" to say that no output is desired. (2 strings);
                   default: "- x"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu sselect (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu dice

dice: Save all slices along one axis into separate files. Calls "unu slice"
for each position along the indicated axis, and saves out a different file for
each sample along that axis.
* Uses repeated calls to nrrdSlice and nrrdSave

Usage: dice [@file ...] -a,--axis <axis> [-i,--input <nin>] \
       [-s,--start <start>] [-ff,--format <form>] [-l,--limit <max#>] \
       -o,--output <prefix>

  @file ... = response file(s) containing command-line arguments
  -a <axis> , --axis <axis> = axis to slice along (unsigned int)
   -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
 -s <start> , --start <start> = integer value to start numbering with
              (unsigned int); default: "0"
 -ff <form> , --format <form> = a printf-style format to use for generating
              all filenames. Use this to override the number of characters used
              to represent the slice position, or the file format of the
              output, e.g. "-ff %03d.ppm" for 000.ppm, 001.ppm, etc. By default
              (not using this option), slices are saved in NRRD format (or PNM
              or PNG where possible) with shortest possible filenames.
              (string); default: ""
  -l <max#> , --limit <max#> = a sanity check on how many slice files should
              be saved out, to prevent accidentally dicing the wrong axis or
              the wrong array. Can raise this value if needed. (unsigned int);
              default: "9999"
-o <prefix> , --output <prefix> = output filename prefix (excluding info set
              via "-ff"), basically to set path of output files (so be sure to
              end with "/". (string)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu dice (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu splice

splice: Replace a slice with a different nrrd. This is functionally the
opposite of "slice".
* Uses nrrdSplice

Usage: splice [@file ...] -a,--axis <axis> -p,--position <pos> \
       -s,--slice <nslice> [-i,--input <nin>] [-o,--output <nout>]

  @file ... = response file(s) containing command-line arguments
  -a <axis> , --axis <axis> = axis to splice along (unsigned int)
   -p <pos> , --position <pos> = position to splice at:
               o <int> gives 0-based index
               o M-<int> give index relative to the last sample on the axis
              (M == #samples-1).
              (position)
-s <nslice> , --slice <nslice> = slice nrrd. This is the slice to insert into
              "nin" (nrrd)
   -i <nin> , --input <nin> = input nrrd. This is the nrrd into which the
              slice is inserted (nrrd); default: "-"
  -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu splice (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu join

join: Connect slices and/or slabs into a bigger nrrd. Can stich images into
volumes, or tile images side by side, or attach images onto volumes. If there
are many many files to name in the "-i" option, and using wildcards won't work,
consider putting the list of filenames into a separate text file (e.g.
"slices.txt"), and then name this file as a response file (e.g. "-i
@slices.txt"). This command now allows you to set the same pieces of
information that previously had to be set with "unu axinfo": label, spacing,
and min/max. These can be use whether the join axis is new (because of "-incr")
or not.
* Uses nrrdJoin

Usage: join [@file ...] -i,--input <nin0 ...> -a,--axis <axis> [-incr] \
       [-l,--label <label>] [-mm,--minmax <min max>] [-sp,--spacing <spc>] \
       [-o,--output <nout>]

    @file ... = response file(s) containing command-line arguments
-i <nin0 ...> , --input <nin0 ...> = everything to be joined together
                (1 or more nrrds)
    -a <axis> , --axis <axis> = axis to join along (unsigned int)
        -incr = in situations where the join axis is *not* among the existing
                axes of the input nrrds, then this flag signifies that the join
                axis should be *inserted*, and the output dimension should be
                one greater than input dimension. Without this flag, the nrrds
                are joined side-by-side, along an existing axis.
   -l <label> , --label <label> = label to associate with join axis (string);
                default: ""
-mm <min max> , --minmax <min max> = min and max values along join axis
                (2 doubles); default: "nan nan"
    -sp <spc> , --spacing <spc> = spacing between samples along join axis
                (double); default: "nan"
    -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu join (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu crop

crop: Crop along each axis to make a smaller nrrd.
* Uses nrrdCrop

Usage: crop [@file ...] [-min,--minimum [<pos0 ...>]] \
       [-max,--maximum [<pos0 ...>]] [-b,--bounds <filename>] \
       [-i,--input <nin>] [-o,--output <nout>]

        @file ... = response file(s) containing command-line arguments
-min [<pos0 ...>] , --minimum [<pos0 ...>] = low corner of bounding box.
                     o <int> gives 0-based index
                     o M, M+<int>, M-<int> give index relative to the last
                    sample on the axis (M == #samples-1).
                    (0 or more positions)
                    default: "0"
-max [<pos0 ...>] , --maximum [<pos0 ...>] = high corner of bounding box.
                    Besides the specification styles described above, there's
                    also:
                     o m+<int> give index relative to minimum.
                    (0 or more positions)
                    default: "0"
    -b <filename> , --bounds <filename> = a filename given here overrides the
                    -min and -max options (they don't need to be used) and
                    provides the cropping bounds as a 2-D array; first scanline
                    is for -min, second is for -max. Unfortunately the "m" and
                    "M" semantics (above) are currently not supported in the
                    bounds file. (nrrd); default: ""
         -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
        -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu crop (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu acrop

acrop: Automatically crop axes based on given measure. For the axes that are
to be cropped, the slices perpendicular to that axis are projected down to a
scalar with the specified measure. The resulting 1D array is analyzed by
determining what portions at the beginning and end constitute less than some
portion of the cumulative array sum; these ends are cropped off. The cropping
bounds determined here can be saved and applied to other arrays via the "-b"
option.
* Uses nrrdCropAuto

Usage: acrop [@file ...] [-a,--axes [<ax0 ...>]] -m,--measure <measr> \
       [-f,--frac <frac>] [-off,--offset <offset>] [-b,--bounds <filename>] \
       [-i,--input <nin>] [-o,--output <nout>]

     @file ... = response file(s) containing command-line arguments
-a [<ax0 ...>] , --axes [<ax0 ...>] = the axes (if any) that should NOT be
                 cropped (0 or more unsigned ints); default: ""
    -m <measr> , --measure <measr> = How to measure slices (along axes to
                 crop) as scalars, to form 1-D array analyzed to determine
                 cropping extent. All the measures from "unu project" can be
                 used, but those that make more sense here include:
                  o "max", "mean", "median", "variance": (self-explanatory)
                  o "stdv": standard deviation
                  o "cov": coefficient of variation
                  o "product", "sum": product or sum of all values
                  o "L1", "L2", "NL2", "RMS", "Linf": different norms.
                 (measure)
     -f <frac> , --frac <frac> = threshold of cumulative sum of 1-D array at
                 which to crop. Needs to be in interval [0.0,0.5). (double);
                 default: "0.1"
 -off <offset> , --offset <offset> = how much to offset the numerically
                 determined cropping; positive offsets means expanding the
                 interval of kept indices (less cropping) (int); default: "1"
 -b <filename> , --bounds <filename> = if a filename is given here, the
                 automatically determined min and max bounds for cropping are
                 saved to this file as a 2-D array; first scanline is for -min,
                 second is for -max. Unfortunately nothing using the "m" and
                 "M" semantics (above) can currently be saved in the bounds
                 file. (string); default: ""
      -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
     -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu acrop (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu inset

inset: Replace a sub-region with a different nrrd. This is functionally the
opposite of "crop".
* Uses nrrdInset

Usage: inset [@file ...] -min,--minimum <pos0 ...> -s,--subset <nsub> \
       [-i,--input <nin>] [-o,--output <nout>]

      @file ... = response file(s) containing command-line arguments
-min <pos0 ...> , --minimum <pos0 ...> = coordinates of where to locate
                  sub-volume within input nrrd.
                   o <int> gives 0-based index
                   o M, M+<int>, M-<int> give index relative to the last
                  sample on the axis (M == #samples-1).
                  (1 or more positions)
      -s <nsub> , --subset <nsub> = sub-region nrrd. This the data to be inset
                  in "nin" (nrrd)
       -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
      -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu inset (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu pad

pad: Pad along each axis to make a bigger nrrd.
* Uses nrrdPad_nva

Usage: pad [@file ...] -min,--minimum <pos0 ...> -max,--maximum <pos0 ...> \
       [-b,--boundary <behavior>] [-v,--value <val>] [-i,--input <nin>] \
       [-o,--output <nout>]

      @file ... = response file(s) containing command-line arguments
-min <pos0 ...> , --minimum <pos0 ...> = low corner of bounding box.
                   o <int> gives 0-based index
                   o M, M+<int>, M-<int> give index relative to the last
                  sample on the axis (M == #samples-1).
                  (1 or more positions)
-max <pos0 ...> , --maximum <pos0 ...> = high corner of bounding box. Besides
                  the specification styles described above, there's also:
                   o m+<int> give index relative to minimum.
                  (1 or more positions)
  -b <behavior> , --boundary <behavior> = How to handle samples beyond the
                  input bounds:
                   o "pad": use some specified value
                   o "bleed": extend border values outward
                   o "mirror": repeated reflections
                   o "wrap": wrap-around to other side
                  (boundary behavior)
                  default: "bleed"
       -v <val> , --value <val> = for "pad" boundary behavior, pad with this
                  value (double); default: "0.0"
       -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
      -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu pad (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu reshape

reshape: Superficially change dimension and/or axes sizes. The underlying
linear ordering of the samples is unchanged, but the reported dimension or axes
sizes are changed. Identical in concept to Matlab's "reshape" command.
* Uses nrrdReshape_nva

Usage: reshape [@file ...] -s,--size <sz0 sz1  ...> [-i,--input <nin>] \
       [-o,--output <nout>]

        @file ... = response file(s) containing command-line arguments
 -s <sz0 sz1 ...> , --size <sz0 sz1  ...> = new axes sizes (1 or more size_ts)
         -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
        -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu reshape (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu permute

permute: Permute ordering of axes. The permutation gives the new ordering of
the old axes (in 0-based numbering). For example, the permutation
0->1, 1->2, 2->0 would be "2 0 1".
* Uses nrrdAxesPermute

Usage: permute [@file ...] -p,--permute <ax0 ax1 ...> [-i,--input <nin>] \
       [-o,--output <nout>]

       @file ... = response file(s) containing command-line arguments
-p <ax0 ax1 ...> , --permute <ax0 ax1 ...> = new axis ordering
                   (1 or more unsigned ints)
        -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
       -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu permute (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu swap

swap: Interchange ordering of two axes. Special case of "unu permute".
* Uses nrrdAxesSwap

Usage: swap [@file ...] -a,--axis <axisA axisB> [-i,--input <nin>] \
       [-o,--output <nout>]

       @file ... = response file(s) containing command-line arguments
-a <axisA axisB> , --axis <axisA axisB> = the two axes to switch (0-based
                   numbering) (2 unsigned ints)
        -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
       -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu swap (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu shuffle

shuffle: Permute slices along one axis. Slices along one axis are re-arranged
as units according to the given permutation (or its inverse). The permutation
tells which old slice to put at each new position. For example, the shuffle
0->1, 1->2, 2->0 would be "2 0 1". Obviously, if you have to rearrange the many
slices of a large dataset, you should probably store the permutation in a plain
text file and use it as a "response file".
* Uses nrrdShuffle

Usage: shuffle [@file ...] -p,--permute <slc0 slc1 ...> [-inv,--inverse] \
       -a,--axis <axis> [-i,--input <nin>] [-o,--output <nout>]

         @file ... = response file(s) containing command-line arguments
-p <slc0 slc1 ...> , --permute <slc0 slc1 ...> = new slice ordering
                     (1 or more unsigned ints)
              -inv , --inverse = use inverse of given permutation
         -a <axis> , --axis <axis> = axis to shuffle along (unsigned int)
          -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
         -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu shuffle (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu flip

flip: Reverse order of slices along one axis. Special case of "unu shuffle".
* Uses nrrdFlip

Usage: flip [@file ...] -a,--axis <axis> [-i,--input <nin>] \
       [-o,--output <nout>]

@file ... = response file(s) containing command-line arguments
-a <axis> , --axis <axis> = axis to flip along (unsigned int)
 -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
-o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu flip (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu unorient

unorient: Make image orientation be axis-aligned. Does various tricks.
* Uses nrrdOrientationReduce

Usage: unorient [@file ...] -i,--input <nin> [-smfo] [-o,--output <nout>]

@file ... = response file(s) containing command-line arguments
 -i <nin> , --input <nin> = input nrrd (sorry, can't use usual default of "-"
            for stdin because of hest quirk) (nrrd)
    -smfo = set some axis mins based on space origin (hack)
-o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu unorient (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu basinfo

basinfo: Modify whole-array attributes (not per-axis), which is called "basic
info" in Nrrd terminology. The only attributes which are set are those for
which command-line options are given.
* Uses no particular function; just sets fields in the Nrrd

Usage: basinfo [@file ...] [-spc,--space <space>] [-orig,--origin <origin>] \
       [-i,--input <nin>] [-o,--output <nout>]

     @file ... = response file(s) containing command-line arguments
  -spc <space> , --space <space> = identify the space (e.g. "RAS", "LPS") in
                 which the array conceptually lives, from the nrrdSpace
                 airEnum, which in turn determines the dimension of the space.
                 Or, use an integer>0 togive the dimension of a space that
                 nrrdSpace doesn't know about. By default (not using this
                 option), the enclosing space is set as unknown. (string);
                 default: ""
-orig <origin> , --origin <origin> = (NOTE: must quote vector) the origin in
                 space of the array: the location of the center of the first
                 sample, of the form "(x,y,z)" (or however many coefficients
                 are needed for the chosen space). Quoting the vector is needed
                 to stop interpretation from the shell (string); default: ""
      -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
     -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu basinfo (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu axinfo

axinfo: Modify attributes of one or more axes. The only attributes which are
set are those for which command-line options are given.
* Uses no particular function; just sets fields in the NrrdAxisInfo

Usage: axinfo [@file ...] -a,--axes <ax0 ...> [-l,--label <label>] \
       [-u,--units <units>] [-mm,--minmax <min max>] [-sp,--spacing <spacing>] \
       [-c,--center <center>] [-dir,--direction <svec>] [-k,--kind <kind>] \
       [-i,--input <nin>] [-o,--output <nout>]

    @file ... = response file(s) containing command-line arguments
 -a <ax0 ...> , --axes <ax0 ...> = the one or more axes that should be
                modified (1 or more unsigned ints)
   -l <label> , --label <label> = label to associate with axis (string);
                default: ""
   -u <units> , --units <units> = units of measurement (string); default: ""
-mm <min max> , --minmax <min max> = min and max values along axis
                (2 doubles); default: "nan nan"
-sp <spacing> , --spacing <spacing> = spacing between samples along axis
                (double); default: "nan"
  -c <center> , --center <center> = axis centering: "cell" or "node". Not
                using this option leaves the centering as it is on input
                (string); default: ""
  -dir <svec> , --direction <svec> = (NOTE: must quote vector) The "space
                direction": the vector in space spanned by incrementing (by
                one) the axis index. (string); default: ""
    -k <kind> , --kind <kind> = axis kind. Not using this option leaves the
                kind as it is on input (string); default: ""
     -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
    -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu axinfo (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu axinsert

axinsert: Add a "stub" (length 1) axis to a nrrd. The underlying linear
ordering of the samples is unchanged, and the information about the other axes
is shifted upwards as needed.
* Uses nrrdAxesInsert, and with "-s", nrrdPad_nva

Usage: axinsert [@file ...] -a,--axis <axis> [-l,--label <label>] \
       [-k,--kind <kind>] [-mm,--minmax <min max>] [-c,--center <center>] \
       [-s,--size <size>] [-b,--boundary <behavior>] [-i,--input <nin>] \
       [-o,--output <nout>]

    @file ... = response file(s) containing command-line arguments
    -a <axis> , --axis <axis> = dimension (axis index) at which to insert the
                new axis (unsigned int)
   -l <label> , --label <label> = label to associate with new axis (string);
                default: ""
    -k <kind> , --kind <kind> = axis kind to associate with new axis (kind);
                default: "stub"
-mm <min max> , --minmax <min max> = min and max values along new axis
                (2 doubles); default: "nan nan"
  -c <center> , --center <center> = centering of inserted axis: "cell" or
                "node" (centering); default: "cell"
    -s <size> , --size <size> = after inserting stub axis, also pad out to
                some length, according to the "-b" option (unsigned int);
                default: "1"
-b <behavior> , --boundary <behavior> = How to handle samples beyond the input
                bounds:
                 o "pad:<val>": use specified value
                 o "bleed": extend border values outward
                 o "mirror": repeated reflections
                 o "wrap": wrap-around to other side
                (boundary specification)
                default: "bleed"
     -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
    -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu axinsert (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu axsplit

axsplit: Split one axis into two axes. More general version of "unu axinsert",
since a given axis can be split into fast and slow axes of arbitrary size, as
long as the product of the fast and slow sizes is the same as the original
size.
* Uses nrrdAxesSplit

Usage: axsplit [@file ...] -a,--axis <axis> -s,--size <fast, slow sizes> \
       [-i,--input <nin>] [-o,--output <nout>]

            @file ... = response file(s) containing command-line arguments
            -a <axis> , --axis <axis> = dimension (axis index) to split at
                        (unsigned int)
-s <fast, slow sizes> , --size <fast, slow sizes> = fast and slow axis sizes
                        to produce as result of splitting given axis.
                        (2 size_ts)
             -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
            -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu axsplit (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu axdelete

axdelete: Remove one or more singleton axes from a nrrd. Singleton axes have
only a single sample along them. The underlying linear ordering of the samples
is unchanged, and the information about the other axes is shifted downwards as
needed. As a total hack, if you give -1 as the axis, this will do a
matlab-style "squeeze", in which any and all singleton axes are removed.
* Uses nrrdAxesDelete

Usage: axdelete [@file ...] -a,--axis <axis> [-i,--input <nin>] \
       [-o,--output <nout>]

@file ... = response file(s) containing command-line arguments
-a <axis> , --axis <axis> = dimension (axis index) of the axis to remove (int)
 -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
-o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu axdelete (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu axmerge

axmerge: Merge two adjacent axes into one. A more general version of "unu
axdelete". The underlying linear ordering of the samples is unchanged, and the
information about the other axes is shifted downwards as needed.
* Uses nrrdAxesMerge

Usage: axmerge [@file ...] -a,--axis <ax0 ...> [-i,--input <nin>] \
       [-o,--output <nout>]

   @file ... = response file(s) containing command-line arguments
-a <ax0 ...> , --axis <ax0 ...> = axis (or axes) to merge. Each axis index
               identified is the lower of the pair of axes that will be merged.
               Saying "-a 2" means to merge axis 2 and axis 3 into axis 2. If
               multiple merges are to be done, the indices listed here are for
               the axes prior to any merging. (1 or more ints)
    -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
   -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu axmerge (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu tile

tile: Tile slices of one axis into two other axes. Tiling an array means
splitting one axis into fast and slow parts, and then interleaving those parts
into other (existing) axes by doing two axis merges, which combine an existing
axis with part of the split axis. This reduces the dimension by one. The three
axis arguments all identify axes in the input array as is. This provides, for
example, a simple way of viewing the 128 slices along the slow axis of a 3-D
volume as a 16x8 tiled array of 2-D slices, as with "-a 2 0 1 -s 16 8".
* Uses nrrdTile2D

Usage: tile [@file ...] -a,--axis <axSplit ax0 ax1> -s,--size <fast slow> \
       [-i,--input <nin>] [-o,--output <nout>]

           @file ... = response file(s) containing command-line arguments
-a <axSplit ax0 ax1> , --axis <axSplit ax0 ax1> = axSplit is divided and
                       merged with ax0 and ax1 (3 unsigned ints)
      -s <fast slow> , --size <fast slow> = fast and slow axis sizes to
                       produce as result of splitting the axSplit axis.
                       (2 size_ts)
            -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
           -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu tile (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu untile

untile: Undo "unu tile": merge slow parts of two axis splits. Untiling an
array means spliting two axes, permuting the slow parts of those axes to be
adjecent in the axis ordering, and then merging them. This increases the
dimension by one. Undoing a "unu tile" uses the same "-s" argument, and
sometimes a different "-a" argument, as demonstrated here for a 3-D array:
"unu untile -a 2 0 1" undoes "unu tile -a 2 0 1"
"unu untile -a 1 0 1" undoes "unu tile -a 1 0 2"
"unu untile -a 0 0 1" undoes "unu tile -a 0 1 2".
* Uses nrrdUntile2D

Usage: untile [@file ...] -a,--axis <axMerge ax0 ax1> -s,--size <size0 size1> \
       [-i,--input <nin>] [-o,--output <nout>]

           @file ... = response file(s) containing command-line arguments
-a <axMerge ax0 ax1> , --axis <axMerge ax0 ax1> = the slow parts of axes ax0
                       and ax1 are merged into a (new) axis axMerge, with the
                       axis ax0 part being faster than ax1. (3 unsigned ints)
    -s <size0 size1> , --size <size0 size1> = the slow parts of axes ax0 and
                       ax1 are taken to have size size0 and size1,
                       respectively, and axis axMerge will have size
                       size0*size1. (2 size_ts)
            -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
           -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu untile (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu histo

histo: Create 1-D histogram of values in a nrrd. Can explicitly set bounds of
histogram domain or can learn these from the data.
* Uses nrrdHisto

Usage: histo [@file ...] -b,--bins <num> [-w,--weight <nweight>] \
       [-min,--minimum <value>] [-max,--maximum <value>] [-blind8 <bool>] \
       [-t,--type <type>] [-i,--input <nin>] [-o,--output <nout>]

     @file ... = response file(s) containing command-line arguments
      -b <num> , --bins <num> = # of bins in histogram (unsigned int)
  -w <nweight> , --weight <nweight> = how to weigh contributions to histogram.
                 By default (not using this option), the increment is one bin
                 count per sample, but by giving a nrrd, the value in the nrrd
                 at the corresponding location will be the bin count increment
                 (nrrd); default: ""
  -min <value> , --minimum <value> = Value at low end of histogram, given
                 explicitly as a regular number, *or*, if the number is given
                 with a "%" suffix, this minimum is specified in terms of the
                 percentage of samples in input that are lower. By default (not
                 using this option), the lowest value found in input nrrd.
                 (string); default: "nan"
  -max <value> , --maximum <value> = Value at high end of histogram, given
                 explicitly as a regular number, *or*, if the number is given
                 with a "%" suffix, this maximum is specified in terms of the
                 percentage of samples in input that are higher. Defaults to
                 highest value found in input nrrd. (string); default: "nan"
-blind8 <bool> = Whether to know the range of 8-bit data blindly (uchar is
                 always [0,255], signed char is [-128,127]). (bool);
                 default: "true"
     -t <type> , --type <type> = type to use for bins in output histogram
                 (type); default: "uint"
      -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
     -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu histo (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu dhisto

dhisto: Create image of 1-D value histogram. With "-nolog", this becomes a
quick & dirty way of plotting a function.
* Uses nrrdHistoDraw

Usage: dhisto [@file ...] -h,--height <height> [-nolog] [-notick] \
       [-max,--maximum <max # hits>] [-i,--input <nin>] [-o,--output <nout>]

        @file ... = response file(s) containing command-line arguments
      -h <height> , --height <height> = height of output image (horizontal
                    size is determined by number of bins in input histogram).
                    (unsigned int)
           -nolog = do not show the log-scaled histogram with decade
                    tick-marks
          -notick = do not draw the log decade tick marks
-max <max # hits> , --maximum <max # hits> = constrain the top of the drawn
                    histogram to be at this number of hits. This will either
                    scale the drawn histogram downward or clip its top,
                    depending on whether the given max is higher or lower than
                    the actual maximum bin count. By not using this option (the
                    default), the actual maximum bin count is used (double);
                    default: "nan"
         -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
        -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu dhisto (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu jhisto

jhisto: Create joint histogram of two or more nrrds. Each axis of the output
corresponds to one of the input nrrds, and each bin in the output records the
number of corresponding positions in the inputs with a combination of values
represented by the coordinates of the bin.
* Uses nrrdHistoJoint

Usage: jhisto [@file ...] -b,--bin <bins0 bins1 ...> [-w,--weight <nweight>] \
       [-min,--minimum <min0 min1 ...>] [-max,--maximum <max0 max1 ...>] \
       [-t,--type <type>] [-i,--input <nin0 [nin1] ...>] [-a,--axis <axis>] \
       [-o,--output <nout>]

           @file ... = response file(s) containing command-line arguments
-b <bins0 bins1 ...> , --bin <bins0 bins1 ...> = bins<i> is the number of bins
                       to use along axis i (of joint histogram), which
                       represents the values of nin<i> (2 or more size_ts)
        -w <nweight> , --weight <nweight> = how to weigh contributions to
                       joint histogram. By default (not using this option), the
                       increment is one bin count per sample, but by giving a
                       nrrd, the value in the nrrd at the corresponding
                       location will be the bin count increment (nrrd);
                       default: ""
-min <min0 min1 ...> , --minimum <min0 min1 ...> = min<i> is the low range of
                       values to be quantized along axis i; use "nan" to
                       represent lowest value present (2 or more doubles);
                       default: "nan nan"
-max <max0 max1 ...> , --maximum <max0 max1 ...> = max<i> is the high range of
                       values to be quantized along axis i; use "nan" to
                       represent highest value present (2 or more doubles);
                       default: "nan nan"
           -t <type> , --type <type> = type to use for output (the type used
                       to store hit counts in the joint histogram). Clamping is
                       done on hit counts so that they never overflow a
                       fixed-point type (type); default: "uint"
-i <nin0 [nin1] ...> , --input <nin0 [nin1] ...> = list of nrrds (one for each
                       axis of joint histogram), or, single nrrd that will be
                       sliced along specified axis. (1 or more nrrds);
                       default: "-"
           -a <axis> , --axis <axis> = axis to slice along when working with
                       single nrrd. (unsigned int); default: "0"
           -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu jhisto (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu histax

histax: Replace each scanline along an axis with its histogram.
* Uses nrrdHistoAxis

Usage: histax [@file ...] -a,--axis <axis> -b,--bin <bins> [-t,--type <type>] \
       [-min,--minimum <value>] [-max,--maximum <value>] [-blind8 <bool>] \
       [-i,--input <nin>] [-o,--output <nout>]

     @file ... = response file(s) containing command-line arguments
     -a <axis> , --axis <axis> = axis to histogram along (unsigned int)
     -b <bins> , --bin <bins> = # of bins in histogram (unsigned int)
     -t <type> , --type <type> = output type (type); default: "uchar"
  -min <value> , --minimum <value> = The value to map to zero, given
                 explicitly as a regular number, *or*, if the number is given
                 with a "%" suffix, this minimum is specified in terms of the
                 percentage of samples in input that are lower. "0%" means the
                 lowest input value is used, "1%" means that the 1% of the
                 lowest values are all mapped to zero. By default (not using
                 this option), the lowest input value is used. (string);
                 default: "nan"
  -max <value> , --maximum <value> = The value to map to the highest unsigned
                 integral value, given explicitly as a regular number, *or*, if
                 the number is given with a "%" suffix, this maximum is
                 specified in terms of the percentage of samples in input that
                 are higher. "0%" means the highest input value is used, which
                 is also the default behavior (same as not using this option).
                 (string); default: "nan"
-blind8 <bool> = Whether to know the range of 8-bit data blindly (uchar is
                 always [0,255], signed char is [-128,127]). (bool);
                 default: "true"
      -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
     -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu histax (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu heq

heq: Perform histogram equalization. If this seems to be doing nothing, try
increasing the number of histograms bins by an order of magnitude or two (or
more). Or, use "unu gamma" to warp the values in the direction you know they
need to go. Either of these might work because extremely tall and narrow peaks
in the equalization histogram will produce poor results.
* Uses nrrdHistoEq

Usage: heq [@file ...] -b,--bin <bins> [-s,--smart [<bins>]] \
       [-a,--amount <amount>] [-m,--map <filename>] [-i,--input <nin>] \
       [-o,--output <nout>]

    @file ... = response file(s) containing command-line arguments
    -b <bins> , --bin <bins> = # bins to use in histogram that is created in
                order to calculate the mapping that achieves the equalization.
                (int)
  -s [<bins>] , --smart [<bins>] = # bins in value histogram to ignore in
                calculating the mapping. Bins are ignored when they get more
                hits than other bins, and when the values that fall in them are
                constant. This is an effective way to prevent large regions of
                background value from distorting the equalization mapping.
                (optional int); default: "0"
  -a <amount> , --amount <amount> = extent to which the histogram equalizing
                mapping should be applied; 0.0: no change, 1.0: full
                equalization (float); default: "1.0"
-m <filename> , --map <filename> = The value mapping used to achieve histogram
                equalization is represented by a univariate regular map. By
                giving a filename here, that map can be saved out and applied
                to other nrrds with "unu rmap" (string); default: ""
     -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
    -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu heq (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu gamma

gamma: Brighten or darken values with a gamma. Just as in xv, the gamma value
here is actually the reciprocal of the exponent actually used to transform the
values.
* Uses nrrdArithGamma

Usage: gamma [@file ...] -g,--gamma <gamma> [-min,--minimum <value>] \
       [-max,--maximum <value>] [-blind8 <bool>] [-i,--input <nin>] \
       [-o,--output <nout>]

     @file ... = response file(s) containing command-line arguments
    -g <gamma> , --gamma <gamma> = gamma > 1.0 brightens; gamma < 1.0 darkens.
                 Negative gammas invert values (like in xv). (double)
  -min <value> , --minimum <value> = Value to implicitly map to 0.0 prior to
                 calling pow(). Defaults to lowest value found in input nrrd.
                 (double); default: "nan"
  -max <value> , --maximum <value> = Value to implicitly map to 1.0 prior to
                 calling pow(). Defaults to highest value found in input nrrd.
                 (double); default: "nan"
-blind8 <bool> = Whether to know the range of 8-bit data blindly (uchar is
                 always [0,255], signed char is [-128,127]). (bool);
                 default: "true"
      -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
     -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu gamma (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu 1op

1op: Unary operation on a nrrd.
* Uses nrrdArithUnaryOp

Usage: 1op [@file ...] <operator> [-s,--seed <seed>] [-t,--type <type>] \
       [-i,--input <nin>] [-o,--output <nout>]

 @file ... = response file(s) containing command-line arguments
<operator> = Unary operator. Possibilities include:
              o "-": negative (multiply by -1.0)
              o "r": reciprocal (1.0/value)
              o "sin", "cos", "tan", "asin", "acos", "atan": same as in C
              o "exp", "log", "log10": same as in C
              o "log1p", "expm1": accurate log(x+1) and exp(x)-1
              o "log2": log base 2
              o "sqrt", "cbrt", "ceil", "floor": same as in C
              o "erf": error function (integral of Gaussian)
              o "rup", "rdn": round up or down to integral value
              o "abs": absolute value
              o "sgn": -1, 0, 1 if value is <0, ==0, or >0
              o "exists": 1 iff not NaN or +/-Inf, 0 otherwise
              o "rand": random value in [0.0,1.0), no relation to input
              o "nrand": random sample from normal distribution with mean 0.0
             and stdv 1.0, no relation to input
              o "if": if input is non-zero, 1, else 0
              o "0": output always 0
              o "1": output always 1
             (unary op)
 -s <seed> , --seed <seed> = seed value for RNG for rand and nrand, so that
             you can get repeatable results between runs, or, by not using this
             option, the RNG seeding will be based on the current time
             (string); default: ""
 -t <type> , --type <type> = convert input nrrd to this type prior to doing
             operation. Useful when desired output is float (e.g., with log1p),
             but input is integral. By default (not using this option), the
             types of the input nrrds are left unchanged. (type);
             default: "default"
  -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
 -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu 1op (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu 2op

2op: Binary operation on two nrrds, or on a nrrd and a constant. Either the
first or second operand can be a float constant, but not both. Use "-" for an
operand to signify a nrrd to be read from stdin (a pipe). Note, however, that
"-" can probably only be used once (reliably).
* Uses nrrdArithIterBinaryOp or (with -w) nrrdArithIterBinaryOpSelect

Usage: 2op [@file ...] <operator> <in1> <in2> [-s,--seed <seed>] \
       [-t,--type <type>] [-w,--which <arg>] [-o,--output <nout>]

 @file ... = response file(s) containing command-line arguments
<operator> = Binary operator. Possibilities include:
              o "+", "-", "x", "/": add, subtract, multiply, divide
              o "^": exponentiation (pow)
              o "spow": signed exponentiation: sgn(x)pow(abs(x),p)
              o "fpow": like spow but with curves flipped
              o "%": integer modulo
              o "fmod": same as fmod() in C
              o "atan2": same as atan2() in C
              o "min", "max": minimum, maximum
              o "lt", "lte", "gt", "gte": same as C's <, <=, >, <=
              o "eq", "neq": same as C's == and !=
              o "comp": -1, 0, or 1 if 1st value is less than, equal to, or
             greater than 2nd value
              o "if": if 1st value is non-zero, use it, else use 2nd value
              o "exists": if 1st value exists, use it, else use 2nd value
              o "nrand": scale unit-stdv Gaussian noise by 2nd value and add
             to first value
              o "rrand": sample Rician distribution with 1st value for "true"
             mean, and 2nd value for sigma
             (binary op)
     <in1> = First input. Can be a single value or a nrrd. (nrrd/value)
     <in2> = Second input. Can be a single value or a nrrd. (nrrd/value)
 -s <seed> , --seed <seed> = seed value for RNG for nrand, so that you can get
             repeatable results between runs, or, by not using this option, the
             RNG seeding will be based on the current time (string);
             default: ""
 -t <type> , --type <type> = type to convert all INPUT nrrds to, prior to
             doing operation, useful for doing, for instance, the difference
             between two unsigned char nrrds. This will also determine output
             type. By default (not using this option), the types of the input
             nrrds are left unchanged. (type); default: "default"
  -w <arg> , --which <arg> = Which argument (0 or 1) should be used to
             determine the shape of the output nrrd. By default (not using this
             option), the first non-constant argument is used. (int);
             default: "-1"
 -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu 2op (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu 3op

3op: Ternary operation on three nrrds or constants. Can have one, two, or
three nrrds, but not zero. Use "-" for an operand to signify a nrrd to be read
from stdin (a pipe). Note, however, that "-" can probably only be used once
(reliably).
* Uses nrrdArithIterTernaryOp or (with -w) nrrdArithIterTernaryOpSelect

Usage: 3op [@file ...] <operator> <in1> <in2> <in3> [-t,--type <type>] \
       [-w,--which <arg>] [-o,--output <nout>]

 @file ... = response file(s) containing command-line arguments
<operator> = Ternary operator. Possibilities include:
              o "+", "x": sum or product of three values
              o "min", "max": minimum, maximum
              o "min_sm": smoothed minimum function; min_sm(x, w, M) is like
             min(x,M) but for x > M-w (with w > 0) there is a smooth transition
             from x to asymptotic to M
              o "max_sm": smoothed maximum function; max_sm(M, w, x) is like
             max(M,x) but for x < m+w (with w > m) there is a smooth transition
             from x to asymptotic to m
              o "lt_sm": 1st less than 3rd, smoothed by 2nd
              o "gt_sm": 1st greater than 3rd, smoothed by 2nd
              o "clamp": 2nd value is clamped to range between the 1st and
             the 3rd
              o "ifelse": if 1st value non-zero, then 2nd value, else 3rd
             value
              o "lerp": linear interpolation between the 2nd and 3rd values,
             as the 1st value varies between 0.0 and 1.0, respectively
              o "exists": if the 1st value exists, use the 2nd value,
             otherwise use the 3rd
              o "in_op": 1 iff 2nd value is > 1st and < 3rd, 0 otherwise
              o "in_cl": 1 iff 2nd value is >= 1st and <= 3rd, 0 otherwise
              o "gauss": evaluate (at 1st value) Gaussian with mean=2nd and
             stdv=3rd value
              o "rician": evaluate (at 1st value) Rician with mean=2nd and
             stdv=3rd value
             (ternary op)
     <in1> = First input. Can be a single value or a nrrd. (nrrd/value)
     <in2> = Second input. Can be a single value or a nrrd. (nrrd/value)
     <in3> = Third input. Can be a single value or a nrrd. (nrrd/value)
 -t <type> , --type <type> = type to convert all nrrd inputs to, prior to
             doing operation. This also determines output type. By default (not
             using this option), the types of the input nrrds are left
             unchanged. (type); default: "default"
  -w <arg> , --which <arg> = Which argument (0, 1, or 2) should be used to
             determine the shape of the output nrrd. By default (not using this
             option), the first non-constant argument is used. (int);
             default: "-1"
 -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu 3op (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu affine

affine: Affine (lerp) mapping on 5 nrrds or constants. All the 5 arguments can
be either nrrds or single floating-point values. When all args are single
values, this is subsuming the functionality of the previous stand-alone
"affine" program. Use "-" for an operand to signify a nrrd to be read from
stdin (a pipe). Note, however, that "-" can probably only be used once
(reliably).
* Uses nrrdArithAffine or nrrdArithIterAffine

Usage: affine [@file ...] <minIn> <in> <maxIn> <minOut> <maxOut> \
       [-t,--type <type>] [-clamp <bool>] [-o,--output <nout>]

    @file ... = response file(s) containing command-line arguments
      <minIn> = Lower end of input value range. (nrrd/value)
         <in> = Input value. (nrrd/value)
      <maxIn> = Upper end of input value range. (nrrd/value)
     <minOut> = Lower end of output value range. (nrrd/value)
     <maxOut> = Upper end of output value range. (nrrd/value)
    -t <type> , --type <type> = type to convert all nrrd inputs to, prior to
                doing operation. This also determines output type. By default
                (not using this option), the types of the input nrrds are left
                unchanged. (type); default: "default"
-clamp <bool> = clamp output values to specified output range (bool);
                default: "false"
    -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu affine (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu lut

lut: Map nrrd through one univariate lookup table (itself represented as a
nrrd). The lookup table can be 1D, in which case the output has the same
dimension as the input, or 2D, in which case the output has one more dimension
than the input, and each value is mapped to a scanline (along axis 0) from the
lookup table.
* Uses nrrdApply1DLut

Usage: lut [@file ...] -m,--map <lut> [-r,--rescale] [-min,--minimum <value>] \
       [-max,--maximum <value>] [-blind8 <bool>] [-t,--type <type>] \
       [-i,--input <nin>] [-o,--output <nout>]

     @file ... = response file(s) containing command-line arguments
      -m <lut> , --map <lut> = lookup table to map input nrrd through (nrrd)
            -r , --rescale = rescale the input values from the input range to
                 the lut domain. The lut domain is either explicitly defined by
                 the axis min,max along axis 0 or 1, or, it is implicitly
                 defined as zero to the length of that axis minus one.
  -min <value> , --minimum <value> = Low end of input range. Defaults to
                 lowest value found in input nrrd. Explicitly setting this is
                 useful only with rescaling ("-r") (double); default: "nan"
  -max <value> , --maximum <value> = High end of input range. Defaults to
                 highest value found in input nrrd. Explicitly setting this is
                 useful only with rescaling ("-r") (double); default: "nan"
-blind8 <bool> = Whether to know the range of 8-bit data blindly (uchar is
                 always [0,255], signed char is [-128,127]). Explicitly setting
                 this is useful only with rescaling ("-r") (bool);
                 default: "true"
     -t <type> , --type <type> = specify the type ("int", "float", etc.) of
                 the output nrrd. By default (not using this option), the
                 output type is the lut's type. (type); default: "default"
      -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
     -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu lut (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu mlut

mlut: Map nrrd through whole nrrd of univariate lookup tables, with one lookup
table per element of input nrrd. The multiple tables are stored in a nrrd with
a dimension which is either 1 or 2 more than the dimension of the input nrrd,
resulting in an output which has either the same or one more dimension than the
input, resptectively.
* Uses nrrdApplyMulti1DLut

Usage: mlut [@file ...] -m,--map <mlut ...> [-r,--rescale] \
       [-min,--minimum <value>] [-max,--maximum <value>] [-blind8 <bool>] \
       [-t,--type <type>] [-i,--input <nin>] [-o,--output <nout>]

     @file ... = response file(s) containing command-line arguments
 -m <mlut ...> , --map <mlut ...> = one nrrd of lookup tables to map input
                 nrrd through, or, list of nrrds which contain the individual
                 entries of the lookup table at each voxel, which will be
                 joined together. (1 or more nrrds)
            -r , --rescale = rescale the input values from the input range to
                 the lut domain. The lut domain is either explicitly defined by
                 the axis min,max along axis 0 or 1, or, it is implicitly
                 defined as zero to the length of that axis minus one.
  -min <value> , --minimum <value> = Low end of input range. Defaults to
                 lowest value found in input nrrd. Explicitly setting this is
                 useful only with rescaling ("-r") (double); default: "nan"
  -max <value> , --maximum <value> = High end of input range. Defaults to
                 highest value found in input nrrd. Explicitly setting this is
                 useful only with rescaling ("-r") (double); default: "nan"
-blind8 <bool> = Whether to know the range of 8-bit data blindly (uchar is
                 always [0,255], signed char is [-128,127]). Explicitly setting
                 this is useful only with rescaling ("-r") (bool);
                 default: "true"
     -t <type> , --type <type> = specify the type ("int", "float", etc.) of
                 the output nrrd. By default (not using this option), the
                 output type is the lut's type. (type); default: "default"
      -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
     -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu mlut (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu subst

subst: Map nrrd through a univariate substitution table (itself represented as
a nrrd). The substitution table is a 2-by-N table: a list of pairs giving the
old value (to replace) and the the new value (to change to), in that order. A
plain text file makes this easy. Unlike with "unu lut", "unu rmap", and "unu
imap", the output type is the same as the input type, rather than the type of
the lut or map.
* Uses nrrdApply1DSubstitution

Usage: subst [@file ...] -s,--subst <subst> [-i,--input <nin>] \
       [-o,--output <nout>]

 @file ... = response file(s) containing command-line arguments
-s <subst> , --subst <subst> = substition table to map input nrrd through
             (nrrd)
  -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
 -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu subst (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu rmap

rmap: Map nrrd through one *regular* univariate map ("colormap"). A map is
regular if the control points are evenly spaced along the domain, and hence
their position isn't explicitly represented in the map; the axis min, axis max,
and number of points determine their location. The map can be a 1D nrrd (for
"grayscale"), in which case the output has the same dimension as the input, or
a 2D nrrd (for "color"), in which case the output has one more dimension than
the input. In either case, the output is the result of linearly interpolating
between map points, either scalar values ("grayscale"), or scanlines along axis
0 ("color").
* Uses nrrdApply1DRegMap

Usage: rmap [@file ...] -m,--map <map> [-r,--rescale] \
       [-min,--minimum <value>] [-max,--maximum <value>] [-blind8 <bool>] \
       [-t,--type <type>] [-i,--input <nin>] [-o,--output <nout>]

     @file ... = response file(s) containing command-line arguments
      -m <map> , --map <map> = regular map to map input nrrd through (nrrd)
            -r , --rescale = rescale the input values from the input range to
                 the map domain. The map domain is either explicitly defined by
                 the axis min,max along axis 0 or 1, or, it is implicitly
                 defined as zero to the length of that axis minus one.
  -min <value> , --minimum <value> = Low end of input range. Defaults to
                 lowest value found in input nrrd. Explicitly setting this is
                 useful only with rescaling ("-r") or if the map domain is only
                 implicitly defined (double); default: "nan"
  -max <value> , --maximum <value> = High end of input range. Defaults to
                 highest value found in input nrrd. Explicitly setting this is
                 useful only with rescaling ("-r") or if the map domain is only
                 implicitly defined (double); default: "nan"
-blind8 <bool> = Whether to know the range of 8-bit data blindly (uchar is
                 always [0,255], signed char is [-128,127]). Explicitly setting
                 this is useful only with rescaling ("-r") or if the map domain
                 is only implicitly defined (bool); default: "true"
     -t <type> , --type <type> = specify the type ("int", "float", etc.) of
                 the output nrrd. By default (not using this option), the
                 output type is the map's type. (type); default: "default"
      -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
     -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu rmap (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu mrmap

mrmap: Map nrrd through a whole nrrd of regular univariate maps, one map per
sample in input. The "mmap" nrrd has the same dimensional constraints as the
"mlut" nrrd for "unu mlut". This functionality is a generalization of "unu 3op
lerp": it allows you to lerp through multiple nrrds, instead of just two.
* Uses nrrdApplyMulti1DRegMap

Usage: mrmap [@file ...] -m,--map <mmap ...> [-r,--rescale] \
       [-min,--minimum <value>] [-max,--maximum <value>] [-blind8 <bool>] \
       [-t,--type <type>] [-i,--input <nin>] [-o,--output <nout>]

     @file ... = response file(s) containing command-line arguments
 -m <mmap ...> , --map <mmap ...> = one nrrd of regular maps to map input nrrd
                 through, or, list of nrrds which contain the individual
                 entries of the map at each voxel, which will be joined
                 together. (1 or more nrrds)
            -r , --rescale = rescale the input values from the input range to
                 the map domain. The map domain is either explicitly defined by
                 the axis min,max along axis 0 or 1, or, it is implicitly
                 defined as zero to one minus the length of that axis.
  -min <value> , --minimum <value> = Low end of input range. Defaults to
                 lowest value found in input nrrd. Explicitly setting this is
                 useful only with rescaling ("-r") or if the map domain is only
                 implicitly defined (double); default: "nan"
  -max <value> , --maximum <value> = High end of input range. Defaults to
                 highest value found in input nrrd. Explicitly setting this is
                 useful only with rescaling ("-r") or if the map domain is only
                 implicitly defined (double); default: "nan"
-blind8 <bool> = Whether to know the range of 8-bit data blindly (uchar is
                 always [0,255], signed char is [-128,127]). Explicitly setting
                 this is useful only with rescaling ("-r") or if the map domain
                 is only implicitly defined (bool); default: "true"
     -t <type> , --type <type> = specify the type ("int", "float", etc.) of
                 the output nrrd. By default (not using this option), the
                 output type is the map's type. (type); default: "default"
      -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
     -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu mrmap (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu imap

imap: Map nrrd through *irregular* univariate map ("colormap"). A map is
irregular if the control points are not evenly spaced along the domain, and
hence their position must be explicitly represented in the map. As nrrds, these
maps are necessarily 2D. Along axis 0, the first value is the location of the
control point, and the remaining values give are the range of the map for that
control point. The output value(s) is the result of linearly interpolating
between value(s) from the map.
* Uses nrrdApply1DIrregMap

Usage: imap [@file ...] -m,--map <map> [-l,--length <aclLen>] [-r,--rescale] \
       [-min,--minimum <value>] [-max,--maximum <value>] [-blind8 <bool>] \
       [-t,--type <type>] [-i,--input <nin>] [-o,--output <nout>]

     @file ... = response file(s) containing command-line arguments
      -m <map> , --map <map> = irregular map to map input nrrd through (nrrd)
   -l <aclLen> , --length <aclLen> = length of accelerator array, used to try
                 to speed-up task of finding between which pair of control
                 points a given value lies. Not terribly useful for small maps
                 (about 10 points or less). Use 0 to turn accelorator off.
                 (unsigned int); default: "0"
            -r , --rescale = rescale the input values from the input range to
                 the map domain
  -min <value> , --minimum <value> = Low end of input range. Defaults to
                 lowest value found in input nrrd. Explicitly setting this is
                 useful only with rescaling ("-r") (double); default: "nan"
  -max <value> , --maximum <value> = High end of input range. Defaults to
                 highest value found in input nrrd. Explicitly setting this is
                 useful only with rescaling ("-r") (double); default: "nan"
-blind8 <bool> = Whether to know the range of 8-bit data blindly (uchar is
                 always [0,255], signed char is [-128,127]). Explicitly setting
                 this is useful only with rescaling ("-r") (bool);
                 default: "true"
     -t <type> , --type <type> = specify the type ("int", "float", etc.) of
                 the output nrrd. By default (not using this option), the
                 output type is the map's type. (type); default: "default"
      -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
     -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu imap (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu lut2

lut2: Map nrrd through a bivariate lookup table (itself represented as a
nrrd). The lookup table can be 2D, in which case the output has the same
dimension as the input, or 3D, in which case the output has one more dimension
than the input, and each pair of values is mapped to a scanline (along axis 0)
from the lookup table. In any case, axis 0 of the input must have length two.
* Uses nrrdApply2DLut

Usage: lut2 [@file ...] -m,--map <lut> [-r,--rescale <bool bool>] \
       [-min,--minimum <min0 min1>] [-max,--maximum <max0 max1>] \
       [-blind8 <bool>] [-t,--type <type>] [-i,--input <nin>] \
       [-o,--output <nout>]

       @file ... = response file(s) containing command-line arguments
        -m <lut> , --map <lut> = lookup table to map input nrrd through (nrrd)
  -r <bool bool> , --rescale <bool bool> = rescale one or both of the input
                   values from the input range to the lut domain. The lut
                   domain is either explicitly defined by the axis min,max
                   along axis 0 or 1, or, it is implicitly defined as zero to
                   the length of that axis minus one. (2 bools);
                   default: "false false"
-min <min0 min1> , --minimum <min0 min1> = Low ends of input range. Defaults
                   to lowest values found in input nrrd. Explicitly setting
                   this is useful only with rescaling ("-r") (2 doubles);
                   default: "nan nan"
-max <max0 max1> , --maximum <max0 max1> = High end of input range. Defaults
                   to highest values found in input nrrd. Explicitly setting
                   this is useful only with rescaling ("-r") (2 doubles);
                   default: "nan nan"
  -blind8 <bool> = Whether to know the range of 8-bit data blindly (uchar is
                   always [0,255], signed char is [-128,127]). Explicitly
                   setting this is useful only with rescaling ("-r") (bool);
                   default: "true"
       -t <type> , --type <type> = specify the type ("int", "float", etc.) of
                   the output nrrd. By default (not using this option), the
                   output type is the lut's type. (type); default: "default"
        -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
       -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu lut2 (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu ccfind

ccfind: Find connected components (CCs). This works on 1-byte and 2-byte
integral values, as well as 4-byte ints.
* Uses nrrdCCFind

Usage: ccfind [@file ...] [-v,--values <filename>] [-t,--type <type>] \
       -c,--connect <connectivity> [-i,--input <nin>] [-o,--output <nout>]

        @file ... = response file(s) containing command-line arguments
    -v <filename> , --values <filename> = Giving a filename here allows you to
                    save out the values associated with each connect component.
                    This can be used later with "ccmerge -d". By default, no
                    record of the original CC values is kept. (string);
                    default: ""
        -t <type> , --type <type> = type to use for output, to store the CC ID
                    values. By default (not using this option), the type used
                    will be the smallest of uchar, ushort, or int, that can
                    represent all the CC ID values. Using this option allows
                    one to specify the integral type to be used. (type);
                    default: "default"
-c <connectivity> , --connect <connectivity> = what kind of connectivity to
                    use: the number of coordinates that vary in order to
                    traverse the neighborhood of a given sample. In 2D: "1":
                    4-connected, "2": 8-connected (unsigned int)
         -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
        -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu ccfind (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu ccadj

ccadj: Form adjecency matrix of connected components. This operates on the
output of "ccfind". Output is unsigned char array containing 1 at locations
(I,J) and (J,I) if CCs with ids I and J are adjacent, according to the chosen
style of adjacency.
* Uses nrrdCCAdjacency

Usage: ccadj [@file ...] -c,--connect <connectivity> [-i,--input <nin>] \
       [-o,--output <nout>]

        @file ... = response file(s) containing command-line arguments
-c <connectivity> , --connect <connectivity> = what kind of connectivity to
                    use: the number of coordinates that vary in order to
                    traverse the neighborhood of a given sample. In 2D: "1":
                    4-connected, "2": 8-connected (unsigned int)
         -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
        -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu ccadj (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu ccmerge

ccmerge: Merge CCs with their neighbors, under various constraints. This
operates on the output of "ccfind". Merging of a CC is always done into its
largest neighbor. Whether or not to merge can be constrained by one or more of:
CC size ("-s"), original CC value being brighter or darker ("-d"), and number
of neighbors ("-n").
* Uses nrrdCCMerge

Usage: ccmerge [@file ...] [-d,--directed <dir>] [-s,--size <max size>] \
       [-n,--neighbor <max # neigh>] -c,--connect <connectivity> [-revalue] \
       [-i,--input <nin>] [-v,--values <values>] [-o,--output <nout>]

        @file ... = response file(s) containing command-line arguments
         -d <dir> , --directed <dir> = do value-driven merging. Using
                    (positive) "1" says that dark islands get merged with
                    bright surrounds, while "-1" says the opposite. By default,
                    merging can go either way. (int); default: "0"
    -s <max size> , --size <max size> = a cap on the CC size that will be
                    absorbed into its surround. CCs larger than this are deemed
                    too significant to mess with. Or, use "0" to remove any
                    such restriction on merging. (int); default: "0"
 -n <max # neigh> , --neighbor <max # neigh> = a cap on the number of
                    neighbors that a CC may have if it is to be be merged. "1"
                    allows only islands to be merged, "2" does merging with
                    bigger of two neighbors, etc, while "0" says that number of
                    neighbors is no constraint (int); default: "1"
-c <connectivity> , --connect <connectivity> = what kind of connectivity to
                    use: the number of coordinates that vary in order to
                    traverse the neighborhood of a given sample. In 2D: "1":
                    4-connected, "2": 8-connected (unsigned int)
         -revalue = If this option is given, then after the merging, the CCs
                    are re-assigned their original datavalues, as given by the
                    "-v" option
         -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
      -v <values> , --values <values> = result of using "ccfind -v", the
                    record of which values were originally associated with each
                    CC. This is required for value-directed merging (with
                    non-zero "-d" option), or if the "-revalue" option is
                    given, but is not needed otherwise (nrrd); default: ""
        -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu ccmerge (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu ccsettle

ccsettle: Remap CC values down to lowest contiguous values.
* Uses nrrdCCSettle

Usage: ccsettle [@file ...] -i,--input <nin> [-v,--values <filename>] \
       [-o,--output <nout>]

    @file ... = response file(s) containing command-line arguments
     -i <nin> , --input <nin> = input nrrd (nrrd)
-v <filename> , --values <filename> = Giving a filename here allows you to
                save out the mapping from new (settled) values to old values,
                in the form of a 1-D lookup table (string); default: ""
    -o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu ccsettle (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu dnorm

dnorm: Normalizes array orientation and meta-data. Forces information about
kind and orientation into a consistent form, and nixes various other fields.
This was originally created as a utility for the Diderot project
(http://diderot-language.cs.uchicago.edu), hence the name, but it has proven
useful in other contexts (uses of gage) in which it is important to have
standardized orientation information.
* (there is currently no single nrrd function which does all this)

Usage: dnorm [@file ...] [-h,--header] [-to] [-c,--center] \
       [-s,--scaling <scl>] [-i,--input <nin>] [-o,--output <nout>]

@file ... = response file(s) containing command-line arguments
       -h , --header = output header of nrrd file only, not the data itself
      -to = (*t*rivial *o*rientation) even if the input nrrd comes with full
            orientation or per-axis min-max info, ignore it and instead assert
            the identity mapping between index and world space
       -c , --center = re-locate output spaceOrigin so that field is centered
            around origin of space coordinates
 -s <scl> , --scaling <scl> = when having to contrive orientation information
            and there's no per-axis min/max to inform what the sample spacing
            is, this is the sample spacing to assert (double); default: "1.0"
 -i <nin> , --input <nin> = input image (nrrd); default: "-"
-o <nout> , --output <nout> = output filename (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu dnorm (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu vidicon

vidicon: Try to create the look of early 80s analog B+W video. Does various
things, some more justified than others.
* (as yet there's no single nrrd function which does all this)

Usage: vidicon [@file ...] -i <input> [-rs <rescale>] [-rsk <kern>] \
       [-rsp <percentile>] [-vs <sx sy>] [-pad <padX padY>] [-vk <kernX \
       kernY>] [-stp <prefix>] -o <output>

        @file ... = response file(s) containing command-line arguments
       -i <input> = input image. Should be grayscale PNG. (nrrd)
    -rs <rescale> = how to rescale (downsample) the image prior to processing,
                    just to get a better representation of the floating-point
                    range of image values (overcoming 8-bit quantization
                    effects) (double); default: "0.75"
      -rsk <kern> = kernel for rescaling. (kernel specification);
                    default: "hann:5"
-rsp <percentile> = after rescaling, the highest and lowest percentiles are
                    mapped to 0.0 and 255.0, just to have a uniform range of
                    intensities in subsequent processing. This option
                    determines how big those percentiles are. (double);
                    default: "1.5"
      -vs <sx sy> = the lowest ("video") resolution to which the image is
                    down-sampled, reflecting the limited resolution of the
                    vidicon tubes (2 unsigned ints); default: "550 525"
 -pad <padX padY> = at the lowest resolution, there should be this much
                    padding by black, to reflect the fact the signal outside
                    the tube (e.g. between scanlines is black) (2 unsigned
                    ints); default: "10 10"
-vk <kernX kernY> = kernels for downsampling to video resolution; the
                    horizontal and vertical kernels are different (2 kernel
                    specifications); default: "hann:1,4 cubic:0,0.5"
    -stp <prefix> = if a string is given here, a series of images are saved,
                    representing the various stages of processing (string);
                    default: ""
      -o <output> = output nrrd (string)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu vidicon (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu grid

grid: generate list of oriented grid locations. For a N-D grid, the output is
a 2-D M-by-S array of grid sample locations, where M is the space dimension of
the oriented grid, and S is the total number of real samples in the grid.
Implementation currently incomplete, because of the number of unresolved design
questions.
* (not based on any particular nrrd function)

Usage: grid [@file ...] -i,--input <nin> [-t,--type <type>] \
       [-o,--output <nout>]

@file ... = response file(s) containing command-line arguments
 -i <nin> , --input <nin> = input nrrd. That this argument is required instead
            of optional, as with most unu commands, is a quirk caused by the
            need to have "unu grid" generate usage info, combined with the fact
            that the other arguments have sensible defaults (nrrd)
-t <type> , --type <type> = type of output (type); default: "double"
-o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu grid (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu hack

hack: a hack of some kind. This is used as a place to put whatever one-off
code you want to try, with the whatever benefits come with being a unu
command.
* (not based on any particular nrrd function)

Usage: hack [@file ...] <what> [-i,--input <nin>] [-o,--output <nout>]

@file ... = response file(s) containing command-line arguments
   <what> = what hack to do (string)
 -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
-o <nout> , --output <nout> = output nrrd (string); default: "-"
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu hack (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu aabplot

aabplot: Draws ASCII-art box plots. Because why not.
* (uses nrrd, but no Nrrd implements this functionality)

Usage: aabplot [@file ...] [-l <len>] [-r <min max>] [-rs <show>] \
       [-ms <show>] [-i,--input <nin>] [-s <single>]

   @file ... = response file(s) containing command-line arguments
    -l <len> = number of characters in box plot (unsigned int); default: "78"
-r <min max> = values to use as absolute min and max (unfortunately has to be
               same for all scanlines (rows). (2 doubles); default: "0 100"
  -rs <show> = show range above plots (bool); default: "false"
  -ms <show> = print the median value (bool); default: "false"
    -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
 -s <single> = if given a 1D nrrd here that matches the number of rows in the
               "-i" input, interpret it as a list of values that should be
               indicated with "X"s in the plots. (nrrd); default: ""
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu aabplot (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu undos

undos: Converts DOS text files to normal, and more. Normally, it converts
LF-CR pairs to just CR, or, with the "-r" option, convert back to DOS, for
whatever sick and twisted reason you'd have to do that. Can also handle legacy
MAC text files (only LF). Unlike the simple sed or perl scripts for this
purpose, this program is careful to be idempotent. Also, this makes an effort
to not meddle with binary files (on which this may be mistakenly invoked). A
message is printed to stderr for all the files actually modified. Does various
things, some more justified than others.
* (not actually based on Nrrd)

Usage: undos [@file ...] [-r] [-q] [-m] [-n] <file ...>

 @file ... = response file(s) containing command-line arguments
        -r = convert back to DOS, instead of converting from DOS to normal
        -q = never print anything to stderr, even for errors.
        -m = deal with legacy MAC text files.
        -n = don't actually write converted files, just pretend to. This is
             useful to see which files WOULD be converted.
<file ...> = all the files to convert. Each file will be over-written with its
             converted contents. Use "-" to read from stdin and write to stdout
             (1 or more strings)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu undos (ret=0)
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### BEGIN unu save

save: Write nrrd with specific format, encoding, or endianness. Use
"unu save -f pnm | xv -" to view PPM- or PGM-compatible nrrds on unix. EPS
output is a EPSF-3.0 file with BoundingBox and HiResBoundingBox DSC comments,
and is suitable for inclusion into other PostScript documents. As a stand-alone
file, the image is conveniently centered on an 8.5x11 inch page, with 0.5 inch
margins.
* Uses various fields in the NrrdIOState passed to nrrdSave

Usage: save [@file ...] -f,--format <form> [-e,--encoding <enc>] \
       [-en,--endian <end>] [-i,--input <nin>] [-o,--output <nout>] \
       [-od,--ouputdata <name>]

 @file ... = response file(s) containing command-line arguments
 -f <form> , --format <form> = output file format. Possibilities include:
              o "nrrd": standard nrrd format
              o "pnm": PNM image; PPM for color, PGM for grayscale
              o "text": plain ASCII text for 1-D and 2-D data
              o "vtk": VTK "STRUCTURED_POINTS" dataset
              o "eps": EPS file
             (format)
  -e <enc> , --encoding <enc> = encoding of data in file. Not all encodings
             are supported in a given format. Possibilities include:
              o "raw": raw encoding
              o "ascii": print data in ascii
              o "hex": two hex digits per byte
              o "gzip", "gz": gzip compressed raw data
             The specifiers for compressions may be followed by a colon ":",
             followed by an optional digit giving compression "level" (for
             gzip) or "block size" (for bzip2). For gzip, this can be followed
             by an optional character for a compression strategy:
              o "d": default, Huffman with string match
              o "h": Huffman alone
              o "f": specialized for filtered data
             For example, "gz", "gz:9", "gz:9f" are all valid
             (encoding)
             default: "raw"
 -en <end> , --endian <end> = Endianness to save data out as; "little" for
             Intel and friends; "big" for everyone else. Defaults to endianness
             of this machine (endian); default: "little"
  -i <nin> , --input <nin> = input nrrd (nrrd); default: "-"
 -o <nout> , --output <nout> = output nrrd (string); default: "-"
-od <name> , --ouputdata <name> = when saving to a ".nhdr" file, this option
             allows you to explicitly name the data file, instead of (by
             default, not using this option) having it be the same filename
             base as the header file. (string); default: ""
/home/ec2-user/Projects/teem-Slicer-build/bin/test_unulist: ################### END unu save (ret=0)