Runs Plink with the geno option.

    :param in_prefix: the input prefix.
    :param out_prefix: the output prefix.
    :param extract_filename: the name of the file containing markers to
                             extract.

    :type in_prefix: str
    :type out_prefix: str
    :param extract_filename: str

def run_plink(in_prefix, out_prefix, extract_filename):
    """Runs Plink with the geno option.

    :param in_prefix: the input prefix.
    :param out_prefix: the output prefix.
    :param extract_filename: the name of the file containing markers to
                             extract.

    :type in_prefix: str
    :type out_prefix: str
    :param extract_filename: str

    """
    # The plink command
    plink_command = [
        "plink",
        "--noweb",
        "--bfile", in_prefix,
        "--extract", extract_filename,
        "--freq",
        "--out", out_prefix,
    ]
    output = None
    try:
        output = subprocess.check_output(plink_command,
                                         stderr=subprocess.STDOUT, shell=False)
    except subprocess.CalledProcessError as exc:
        msg = "plink: couldn't run plink\n{}".format(exc.output)
        raise ProgramError(msg)