The main function of this module.

    :param argString: the options.

    :type argString: list

    These are the steps:

    1. Runs a plate bias analysis using Plink
       (:py:func:`executePlateBiasAnalysis`).
    2. Extracts the list of significant markers after plate bias analysis
       (:py:func:`extractSignificantSNPs`).
    3. Computes the frequency of all significant markers after plate bias
       analysis (:py:func:`computeFrequencyOfSignificantSNPs`).

def main(argString=None):
    """The main function of this module.

    :param argString: the options.

    :type argString: list

    These are the steps:

    1. Runs a plate bias analysis using Plink
       (:py:func:`executePlateBiasAnalysis`).
    2. Extracts the list of significant markers after plate bias analysis
       (:py:func:`extractSignificantSNPs`).
    3. Computes the frequency of all significant markers after plate bias
       analysis (:py:func:`computeFrequencyOfSignificantSNPs`).

    """
    # Getting and checking the options
    args = parseArgs(argString)
    checkArgs(args)

    logger.info("Options used:")
    for key, value in vars(args).iteritems():
        logger.info("  --{} {}".format(key.replace("_", "-"), value))

    # Run plink
    logger.info("Running Plink to check the plate bias")
    executePlateBiasAnalysis(args)

    # Extract significant SNPs
    logger.info("Extracting significant SNPs")
    assocResults = extractSignificantSNPs(args.out)

    # Remove significant SNPs using plink
    logger.info("Computing frequency of significant SNPs")
    maf = computeFrequencyOfSignificantSNPs(args)

    # Create the final summary file
    logger.info("Creating the summary file")
    createSummaryFile(assocResults, maf, args.out)