Checks the arguments and options.

    :param args: a :py:class:`argparse.Namespace` object containing the options
                 of the program.

    :type args: :py:class:`argparse.Namespace`

    :returns: ``True`` if everything was OK.

    If there is a problem with an option, an exception is raised using the
    :py:class:`ProgramError` class, a message is printed to the
    :class:`sys.stderr` and the program exists with code 1.

def checkArgs(args):
    """Checks the arguments and options.

    :param args: a :py:class:`argparse.Namespace` object containing the options
                 of the program.

    :type args: :py:class:`argparse.Namespace`

    :returns: ``True`` if everything was OK.

    If there is a problem with an option, an exception is raised using the
    :py:class:`ProgramError` class, a message is printed to the
    :class:`sys.stderr` and the program exists with code 1.

    """
    # Checking the input files
    for suffix in [".tped", ".tfam"]:
        fileName = args.tfile + suffix
        if not os.path.isfile(fileName):
            msg = "%(fileName)s: no such file" % locals()
            raise ProgramError(msg)

    # Checking the concordance threshold
    if ((args.sample_concordance_threshold < 0) or
            (args.sample_concordance_threshold > 1)):
        msg = "sample-concordance-threshold: must be between 0 and 1 " \
              "(not %f)" % args.sample_concordance_threshold
        raise ProgramError(msg)

    # Checking the completion threshold
    if ((args.sample_completion_threshold < 0) or
            (args.sample_completion_threshold > 1)):
        msg = "sample-completion-threshold: must be between 0 and 1 " \
              "(not %f)" % args.sample_completion_threshold
        raise ProgramError(msg)

    return True