docs: def getUI(args):
    """
    build and return a UI object for this script.
  
    :param args: raw arguments to parse
    """
    programName = os.path.basename(sys.argv[0])
    longDescription = "takes a file with a list of p-values and applies " +\
                      "Benjamini and Hochberg FDR to convert to q-values "
    shortDescription = "takes a file with a list of p-values and applies " +\
                       "Benjamini and Hochberg FDR to convert to q-values "
  
    ui = CLI(programName, shortDescription, longDescription)
    ui.minArgs = 2
    ui.maxArgs = 2
    ui.addOption(Option(short="o", long="output", argName="filename",
                        description="output to given file, else stdout",
                        required=False, type=str))
    ui.addOption(Option(short="s", long="stranded",
                        description="treat regions on separate strands as " +
                                    "disjoint, even if they overlap",
                                    required=False))
    ui.addOption(Option(short="v", long="verbose",
                        description="output additional messages to stderr " +
                                    "about run", required=False))
    ui.addOption(Option(short="h", long="help",
                        description="show this help message ", special=True))
    ui.addOption(Option(short="u", long="test",
                        description="run unit tests ", special=True))
  
    ui.parseCommandLine(args)
    return ui