docs: def parse_args():
      """Parses the arguments and options."""
      parser = argparse.ArgumentParser(
          prog="geneparse-extractor",
          description="Genotype file extractor. This tool will extract markers "
                      "according to names or to genomic locations.",
          epilog="The parser arguments (PARSER_ARGS) are the same as the one in "
                 "the API. For example, the arguments for the Plink parser is "
                 "'prefix:PREFIX' (where PREFIX is the prefix of the "
                 "BED/BIM/FAM files).",
      )
  
      # The input file format
      group = parser.add_argument_group("Input Options")
      group.add_argument(
          "-f", "--format", metavar="FORMAT", required=True, type=str,
          dest="input_format", choices=set(parsers.keys()),
          help="The input file format.",
      )
  
      group.add_argument(
          nargs="+", dest="parser_args", type=str, metavar="PARSER_ARGS",
          help="The arguments that will be passed to the genotype parsers.",
      )
  
      # The extract options
      group = parser.add_argument_group("Extract Options")
      group.add_argument(
          "-e", "--extract", metavar="FILE", type=argparse.FileType("r"),
          help="The list of markers to extract (one per line, no header).",
      )
      group.add_argument(
          "-k", "--keep", metavar="FILE", type=argparse.FileType("r"),
          help="The list of samples to keep (one per line, no header).",
      )
      group.add_argument(
          "--maf", action="store_true",
          help="Check MAF and flip the allele coding if the MAF is higher "
               "than 50%%.",
      )
  
      # The output options
      group = parser.add_argument_group("Output Options")
      group.add_argument(
          "-o", "--output", metavar="FILE", type=str, required=True,
          help="The output file (can be '-' for STDOUT when using VCF or CSV as "
               "output format).",
      )
      group.add_argument(
          "--output-format", metavar="FORMAT", default="vcf", type=str,
          choices={"vcf", "plink", "csv"},
          help="The output file format. Note that the extension will be added "
               "if absent. Note that CSV is a long format (hence it might take "
               "more disk space).",
      )
  
      return parser.parse_args()