docs: def get_options():
      """ get the command line switches
      """
      
      parser = argparse.ArgumentParser(description='denovonear cli interface')
      
      ############################################################################
      # CLI options in common
      parent = argparse.ArgumentParser(add_help=False)
      parent.add_argument("--out", help="output filename")
      parent.add_argument("--rates",
          help="Path to file containing sequence context-based mutation rates.")
      parent.add_argument("--genome-build", choices=["grch37",
          "GRCh37", "grch38", "GRCh38"], default="grch37", help="Genome build "
          "that the de novo coordinates are based on (GRCh37 or GRCh38")
      parent.add_argument("--cache-folder",
          default=os.path.join(os.path.expanduser('~'), ".cache", 'denovonear'),
          help="where to cache Ensembl data (default is ~/.cache/denovonear)")
      
      subparsers = parser.add_subparsers()
      
      ############################################################################
      # CLI options for clustering
      cluster = subparsers.add_parser('cluster', parents=[parent],
          description="Tests the proximity of de novo mutations in genes.")
      cluster.add_argument("--in", dest="input", required=True, help="Path to "
          "file listing known mutations in genes. See example file in data folder "
          "for format.")
      
      cluster.set_defaults(func=clustering)
      
      ############################################################################
      # CLI options for identifing transcripts to use
      transcripts = subparsers.add_parser('transcripts', parents=[parent],
          description="Identify transcripts for a gene containing de novo events.")
      transcripts.add_argument("--de-novos", required=True, help="Path to "
          "file listing de novo variants in genes.")
      transcripts.set_defaults(func=find_transcripts)
      group = transcripts.add_mutually_exclusive_group(required=True)
      group.add_argument("--all-transcripts", action="store_true", default=False,
          help="Flag if you want to identify all transcripts with more than "
          "one de novo on it.")
      group.add_argument("--minimise-transcripts", action="store_true",
          default=False, help="Flag if you want to identify the minimal set of "
          "transcripts to contain all de novos.")
      
      ############################################################################
      # CLI options for identifing transcripts to use
      rater = subparsers.add_parser("rates", parents=[parent],
          description="determine mutation rates for genes given transcript IDs.")
      rater.add_argument("--genes", help="Path to file "
          "listing HGNC symbols, with one or more transcript IDs per gene. "
          "The tab-separated input format is gene symbol followed by transcript "
          "ID. Alternative transcripts are listed on separate lines.")
      rater.set_defaults(func=gene_rates)
      
      args = parser.parse_args()
      if 'func' not in args:
          print('Use one of the subcommands: cluster, rates, or transcripts\n')
          parser.print_help()
          sys.exit()
      
      return args