code: def main():
      parser = argparse.ArgumentParser(prog='ProTECT',
                                       description='Prediction of T-Cell Epitopes for Cancer Therapy',
                                       epilog='Contact Arjun Rao (aarao@ucsc.edu) if you encounter '
                                       'any problems while running ProTECT')
      inputs = parser.add_mutually_exclusive_group(required=True)
      inputs.add_argument('--config_file', dest='config_file', help='Config file to be used in the '
                          'run.', type=str, default=None)
      inputs.add_argument('--generate_config', dest='generate_config', help='Generate a config file '
                          'in the current directory that is pre-filled with references and flags for '
                          'an hg19 run.', action='store_true', default=False)
      parser.add_argument('--max-cores-per-job', dest='max_cores', help='Maximum cores to use per '
                          'job. Aligners and Haplotypers ask for cores dependent on the machine that '
                          'the launchpad gets assigned to -- In a heterogeneous cluster, this can '
                          'lead to problems. This value should be set to the number of cpus on the '
                          'smallest node in a cluster.',
                          type=int, required=False, default=None)
      params, others = parser.parse_known_args()
      if params.generate_config:
          generate_config_file()
      else:
          Job.Runner.addToilOptions(parser)
          params = parser.parse_args()
          params.config_file = os.path.abspath(params.config_file)
          if params.maxCores:
              if not params.max_cores:
                  params.max_cores = int(params.maxCores)
              else:
                  if params.max_cores > int(params.maxCores):
                      print("The value provided to max-cores-per-job (%s) was greater than that "
                            "provided to maxCores (%s). Setting max-cores-per-job = maxCores." %
                            (params.max_cores, params.maxCores), file=sys.stderr)
                      params.max_cores = int(params.maxCores)
          start = Job.wrapJobFn(parse_config_file, params.config_file, params.max_cores)
          Job.Runner.startToil(start, params)
      return None