Пример #1
0
/*
 * CORE functions
 */
void gt_stats_parallel_generate_stats() {
  // Stats info
  gt_stats_analysis stats_analysis = GT_STATS_ANALYSIS_DEFAULT();
  gt_stats** stats = malloc(parameters.num_threads*sizeof(gt_stats*));

  // Select analysis
  stats_analysis.best_map = parameters.best_map;
  stats_analysis.maps_profile = parameters.maps_profile|parameters.mismatch_quality|parameters.mismatch_transitions;
  stats_analysis.nucleotide_stats = true;
  stats_analysis.split_map_stats = parameters.splitmaps_profile;
  stats_analysis.indel_profile = parameters.indel_profile;

  // Open file
  gt_input_file* input_file = (parameters.name_input_file==NULL) ?
      gt_input_stream_open(stdin) : gt_input_file_open(parameters.name_input_file,parameters.mmap_input);

  gt_sequence_archive* sequence_archive = NULL;
  if (stats_analysis.indel_profile) {
    sequence_archive = gt_sequence_archive_new();
    register gt_input_file* const reference_file = gt_input_file_open(parameters.name_reference_file,false);
    fprintf(stderr,"Loading reference file ...");
    if (gt_input_multifasta_parser_get_archive(reference_file,sequence_archive)!=GT_IFP_OK) {
      fprintf(stderr,"\n");
      gt_fatal_error_msg("Error parsing reference file '%s'\n",parameters.name_reference_file);
    }
    gt_input_file_close(reference_file);
    fprintf(stderr," done! \n");
  }

  // Parallel reading+process
  #pragma omp parallel num_threads(parameters.num_threads)
  {
    uint64_t tid = omp_get_thread_num();
    gt_buffered_input_file* buffered_input = gt_buffered_input_file_new(input_file);

    gt_status error_code;
    gt_template *template = gt_template_new();
Пример #2
0
gt_status parse_arguments(int argc,char** argv) {
  gt_status err=GT_STATUS_OK;
  struct option* gt_coverage_getopt = gt_options_adaptor_getopt(gt_coverage_options);
  gt_string* const gt_coverage_short_getopt = gt_options_adaptor_getopt_short(gt_coverage_options);
  int option, option_index;

  while (true) {
    if ((option=getopt_long(argc,argv,
                            gt_string_get_string(gt_coverage_short_getopt),gt_coverage_getopt,&option_index))==-1) break;
    switch (option) {
    case 'c':
      parameters.combine=true;
      break;
    case 'd':
      parameters.detailed_output=true;
      break;
    case 'b':
      parameters.block_size = atol(optarg);
      break;
    case 'o':
      parameters.output_file = optarg;
      break;
    case 'p':
      parameters.prefix = optarg;
      break;
    case 'r':
      parameters.ranges_file = optarg;
      break;
    case 't':
      parameters.target_file = optarg;
      break;
    case 'x':
      parameters.extend = atol(optarg);
      break;
    case 'P':
      parameters.paired = true;
      break;
    case 'U':
      if(!strcasecmp("first",optarg)) parameters.unique=GT_UNIQUE_FIRST;
      else if(!strcasecmp("gem",optarg)) parameters.unique=GT_UNIQUE_GEM;
      else if(!strcasecmp("xt",optarg)) parameters.unique=GT_UNIQUE_XT;
      else if(!strncasecmp("mq:",optarg,3)) {
	parameters.unique=GT_UNIQUE_MQ;
	parameters.MQ_limit=atol(optarg+3);
      } else {
	gt_fatal_error_msg("Unique mode not recognized: '%s'",optarg);
      }
      break;
    case 'D':
      if(!strcasecmp("ignore",optarg)) parameters.duplicate=GT_DUPLICATE_IGNORE;
      else if(!strcasecmp("remove",optarg)) parameters.duplicate=GT_DUPLICATE_REMOVE;
      else {
	gt_fatal_error_msg("Duplicate mode not recognized: '%s'",optarg);
      }
      break;
    case 'q':
      parameters.min_quality = atol(optarg);
      break;
    case 'v':
      parameters.verbose=true;
      break;
    case 'T':
#ifdef HAVE_OPENMP
      parameters.num_threads = atol(optarg);
#endif
      break;
    case 'h':
      usage(gt_coverage_options,gt_coverage_groups,false);
      exit(1);
      break;
    case 'H':
      usage(gt_coverage_options,gt_coverage_groups,true);
      exit(1);
    case 'J':
      gt_options_fprint_json_menu(stderr,gt_coverage_options,gt_coverage_groups,true,false);
      exit(1);
      break;
    case '?':
    default:
      usage(gt_coverage_options,gt_coverage_groups,false);
      gt_fatal_error_msg("Option '%c' %d not recognized",option,option);
      break;
    }
  }
  if(!parameters.ranges_file) {
    fputs("No ranges file specified.  Use -r or --ranges_file option\n",stderr);
  }
  return err;
}