Lines Matching refs:args

140 static void destroy_chain(args_t *args)  in destroy_chain()  argument
142 chain_t *chain = args->chain; in destroy_chain()
148 free(args->chr); in destroy_chain()
149 args->chr = NULL; in destroy_chain()
152 static void print_chain(args_t *args) in print_chain() argument
181 chain_t *chain = args->chain; in print_chain()
183 int ref_end_pos = args->fa_length + chain->ori_pos; in print_chain()
191args->fp_chain, "chain %d %s %d + %d %d %s %d + %d %d %d\n", score, args->chr, ref_end_pos, chain-… in print_chain()
193 …fprintf(args->fp_chain, "%d %d %d\n", chain->block_lengths[n], chain->ref_gaps[n], chain->alt_gaps… in print_chain()
195 fprintf(args->fp_chain, "%d\n\n", last_block_size); in print_chain()
226 static void init_data(args_t *args) in init_data() argument
228 args->files = bcf_sr_init(); in init_data()
229 args->files->require_index = 1; in init_data()
230 …eader(args->files,args->fname) ) error("Failed to read from %s: %s\n", !strcmp("-",args->fname)?"s… in init_data()
231 args->hdr = args->files->readers[0].header; in init_data()
232 args->isample = -1; in init_data()
233 if ( args->sample ) in init_data()
235 args->isample = bcf_hdr_id2int(args->hdr,BCF_DT_SAMPLE,args->sample); in init_data()
236 if ( args->isample<0 ) error("No such sample: %s\n", args->sample); in init_data()
238 if ( (args->haplotype || args->allele) && args->isample<0 ) in init_data()
240 …if ( bcf_hdr_nsamples(args->hdr) > 1 ) error("The --sample option is expected with --haplotype\n"); in init_data()
241 args->isample = 0; in init_data()
244 for (i=0; i<args->nmask; i++) in init_data()
246 mask_t *mask = &args->mask[i]; in init_data()
252 if ( args->chain_fname ) in init_data()
254 args->fp_chain = fopen(args->chain_fname,"w"); in init_data()
255 … if ( ! args->fp_chain ) error("Failed to create %s: %s\n", args->chain_fname, strerror(errno)); in init_data()
256 args->chain_id = 0; in init_data()
258 rbuf_init(&args->vcf_rbuf, 100); in init_data()
259 args->vcf_buf = (bcf1_t**) calloc(args->vcf_rbuf.m, sizeof(bcf1_t*)); in init_data()
260 if ( args->output_fname ) { in init_data()
261 args->fp_out = fopen(args->output_fname,"w"); in init_data()
262 … if ( ! args->fp_out ) error("Failed to create %s: %s\n", args->output_fname, strerror(errno)); in init_data()
264 else args->fp_out = stdout; in init_data()
265 …if ( args->isample<0 ) fprintf(stderr,"Note: the --sample option not given, applying all records r… in init_data()
266 if ( args->filter_str ) in init_data()
267 args->filter = filter_init(args->hdr, args->filter_str); in init_data()
268 args->rid = -1; in init_data()
270 static void add_mask(args_t *args, char *fname) in add_mask() argument
272 args->nmask++; in add_mask()
273 args->mask = (mask_t*)realloc(args->mask,args->nmask*sizeof(*args->mask)); in add_mask()
274 mask_t *mask = &args->mask[args->nmask-1]; in add_mask()
278 static void add_mask_with(args_t *args, char *with) in add_mask_with() argument
280 if ( !args->nmask ) error("The --mask-with option must follow --mask\n"); in add_mask_with()
281 mask_t *mask = &args->mask[args->nmask-1]; in add_mask_with()
287 static void destroy_data(args_t *args) in destroy_data() argument
289 free(args->iupac_bitmask); in destroy_data()
290 if (args->filter) filter_destroy(args->filter); in destroy_data()
291 bcf_sr_destroy(args->files); in destroy_data()
293 for (i=0; i<args->vcf_rbuf.m; i++) in destroy_data()
294 if ( args->vcf_buf[i] ) bcf_destroy1(args->vcf_buf[i]); in destroy_data()
295 free(args->vcf_buf); in destroy_data()
296 free(args->fa_buf.s); in destroy_data()
297 free(args->chr); in destroy_data()
298 for (i=0; i<args->nmask; i++) in destroy_data()
300 mask_t *mask = &args->mask[i]; in destroy_data()
304 free(args->mask); in destroy_data()
305 if ( args->chain_fname ) in destroy_data()
306 if ( fclose(args->fp_chain) ) error("Close failed: %s\n", args->chain_fname); in destroy_data()
307 if ( fclose(args->fp_out) ) error("Close failed: %s\n", args->output_fname); in destroy_data()
310 static void init_region(args_t *args, char *line) in init_region() argument
331 free(args->chr); in init_region()
332 args->chr = strdup(line); in init_region()
333 args->rid = bcf_hdr_name2id(args->hdr,line); in init_region()
334 if ( args->rid<0 ) fprintf(stderr,"Warning: Sequence \"%s\" not in %s\n", line,args->fname); in init_region()
335 args->prev_base_pos = -1; in init_region()
336 args->fa_buf.l = 0; in init_region()
337 args->fa_length = 0; in init_region()
338 args->fa_end_pos = to; in init_region()
339 args->fa_ori_pos = from; in init_region()
340 args->fa_src_pos = from; in init_region()
341 args->fa_mod_off = 0; in init_region()
342 args->fa_frz_pos = -1; in init_region()
343 args->fa_frz_mod = -1; in init_region()
344 args->fa_case = -1; in init_region()
345 args->vcf_rbuf.n = 0; in init_region()
346 bcf_sr_seek(args->files,line,args->fa_ori_pos); in init_region()
348 fprintf(args->fp_out,">%s%s\n",args->chr_prefix?args->chr_prefix:"",line); in init_region()
349 if (args->chain_fname ) in init_region()
351 args->chain = init_chain(args->chain, args->fa_ori_pos); in init_region()
353 args->chain = NULL; in init_region()
357 static bcf1_t **next_vcf_line(args_t *args) in next_vcf_line() argument
359 if ( args->vcf_rbuf.n ) in next_vcf_line()
361 int i = rbuf_shift(&args->vcf_rbuf); in next_vcf_line()
362 return &args->vcf_buf[i]; in next_vcf_line()
364 while ( bcf_sr_next_line(args->files) ) in next_vcf_line()
366 if ( args->filter ) in next_vcf_line()
368 int is_ok = filter_test(args->filter, bcf_sr_get_line(args->files,0), NULL); in next_vcf_line()
369 if ( args->filter_logic & FLT_EXCLUDE ) is_ok = is_ok ? 0 : 1; in next_vcf_line()
372 return &args->files->readers[0].buffer[0]; in next_vcf_line()
376 static void unread_vcf_line(args_t *args, bcf1_t **rec_ptr) in unread_vcf_line() argument
379 if ( args->vcf_rbuf.n >= args->vcf_rbuf.m ) in unread_vcf_line()
380 …error("FIXME: too many overlapping records near %s:%"PRId64"\n", bcf_seqname(args->hdr,rec),(int64… in unread_vcf_line()
385 int i = rbuf_append(&args->vcf_rbuf); in unread_vcf_line()
386 if ( !args->vcf_buf[i] ) args->vcf_buf[i] = bcf_init1(); in unread_vcf_line()
387 bcf1_t *tmp = rec; *rec_ptr = args->vcf_buf[i]; args->vcf_buf[i] = tmp; in unread_vcf_line()
389 static void flush_fa_buffer(args_t *args, int len) in flush_fa_buffer() argument
391 if ( !args->fa_buf.l ) return; in flush_fa_buffer()
393 while ( nwr + 60 <= args->fa_buf.l ) in flush_fa_buffer()
395 …if ( fwrite(args->fa_buf.s+nwr,1,60,args->fp_out) != 60 ) error("Could not write: %s\n", args->out… in flush_fa_buffer()
396 … if ( fwrite("\n",1,1,args->fp_out) != 1 ) error("Could not write: %s\n", args->output_fname); in flush_fa_buffer()
400 args->fa_ori_pos += nwr; in flush_fa_buffer()
402 args->fa_frz_mod -= nwr; in flush_fa_buffer()
407 if ( nwr && nwr < args->fa_buf.l ) in flush_fa_buffer()
408 memmove(args->fa_buf.s,args->fa_buf.s+nwr,args->fa_buf.l-nwr); in flush_fa_buffer()
409 args->fa_buf.l -= nwr; in flush_fa_buffer()
414 if ( nwr == args->fa_buf.l ) { args->fa_buf.l = 0; return; } in flush_fa_buffer()
416 …if ( fwrite(args->fa_buf.s+nwr,1,args->fa_buf.l - nwr,args->fp_out) != args->fa_buf.l - nwr ) erro… in flush_fa_buffer()
417 if ( fwrite("\n",1,1,args->fp_out) != 1 ) error("Could not write: %s\n", args->output_fname); in flush_fa_buffer()
419 args->fa_ori_pos += args->fa_buf.l - nwr - args->fa_mod_off; in flush_fa_buffer()
420 args->fa_mod_off = 0; in flush_fa_buffer()
421 args->fa_buf.l = 0; in flush_fa_buffer()
423 static void apply_absent(args_t *args, hts_pos_t pos) in apply_absent() argument
425 if ( !args->fa_buf.l || pos <= args->fa_frz_pos + 1 || pos <= args->fa_ori_pos ) return; in apply_absent()
427 …int ie = pos && pos - args->fa_ori_pos + args->fa_mod_off < args->fa_buf.l ? pos - args->fa_ori_po… in apply_absent()
428 int ib = args->fa_frz_mod < 0 ? 0 : args->fa_frz_mod; in apply_absent()
431 args->fa_buf.s[i] = args->absent_allele; in apply_absent()
433 static void freeze_ref(args_t *args, bcf1_t *rec) in freeze_ref() argument
435 if ( args->fa_frz_pos >= rec->pos + rec->rlen - 1 ) return; in freeze_ref()
436 args->fa_frz_pos = rec->pos + rec->rlen - 1; in freeze_ref()
437 args->fa_frz_mod = rec->pos - args->fa_ori_pos + args->fa_mod_off + rec->rlen; in freeze_ref()
480 static void apply_variant(args_t *args, bcf1_t *rec) in apply_variant() argument
484 if ( args->absent_allele ) apply_absent(args, rec->pos); in apply_variant()
485 if ( rec->n_allele==1 && !args->missing_allele && !args->absent_allele ) { return; } in apply_variant()
488 if ( args->mask ) in apply_variant()
490 char *chr = (char*)bcf_hdr_id2name(args->hdr,args->rid); in apply_variant()
493 for (i=0; i<args->nmask; i++) in apply_variant()
495 mask_t *mask = &args->mask[i]; in apply_variant()
501 if ( args->isample >= 0 ) in apply_variant()
504 bcf_fmt_t *fmt = bcf_get_fmt(args->hdr, rec, "GT"); in apply_variant()
508 …sented with BCF_BT_INT8, too many alleles at %s:%"PRId64"?\n",bcf_seqname(args->hdr,rec),(int64_t)… in apply_variant()
509 uint8_t *ptr = fmt->p + fmt->size*args->isample; in apply_variant()
512 if ( args->allele==PICK_IUPAC ) in apply_variant()
514 if ( !args->haplotype ) action = use_iupac; in apply_variant()
517 else if ( args->output_iupac ) action = use_iupac; in apply_variant()
518 else if ( !args->haplotype ) action = pick_one; in apply_variant()
522 if ( args->haplotype > fmt->n ) in apply_variant()
526 if ( !args->missing_allele ) return; in apply_variant()
533 …e at %s:%"PRId64". (This warning is printed only once.)\n", args->haplotype,bcf_seqname(args->hdr,… in apply_variant()
541 ialt = (int8_t)ptr[args->haplotype-1]; in apply_variant()
544 if ( !args->missing_allele ) return; in apply_variant()
560 …) error("Invalid VCF, too few ALT alleles at %s:%"PRId64"\n", bcf_seqname(args->hdr,rec),(int64_t)… in apply_variant()
570 hts_expand(uint8_t,l,args->miupac_bitmask,args->iupac_bitmask); in apply_variant()
571 for (j=mlen; j<l; j++) args->iupac_bitmask[j] = 0; in apply_variant()
580 args->iupac_bitmask[j] |= iupac2bitmask(rec->d.allele[jalt][j]); in apply_variant()
583 … for (j=0; j<alen; j++) rec->d.allele[ialt][j] = bitmask2iupac(args->iupac_bitmask[j]); in apply_variant()
586 else if ( is_missing && !args->missing_allele ) return; in apply_variant()
595 … if ( !args->missing_allele ) return; // ignore missing or half-missing genotypes in apply_variant()
610 …<= jalt ) error("Broken VCF, too few alts at %s:%"PRId64"\n", bcf_seqname(args->hdr,rec),(int64_t)… in apply_variant()
611 if ( args->allele & (PICK_LONG|PICK_SHORT) ) in apply_variant()
617 if ( args->allele & PICK_REF && jalt==0 ) ialt = jalt, prev_len = len; in apply_variant()
618 … else if ( args->allele & PICK_ALT && ialt==0 ) ialt = jalt, prev_len = len; in apply_variant()
620 … else if ( args->allele & PICK_LONG && len > prev_len ) ialt = jalt, prev_len = len; in apply_variant()
621 … else if ( args->allele & PICK_SHORT && len < prev_len ) ialt = jalt, prev_len = len; in apply_variant()
625 if ( args->allele & PICK_REF && jalt==0 ) ialt = jalt; in apply_variant()
626 else if ( args->allele & PICK_ALT && ialt==0 ) ialt = jalt; in apply_variant()
634 if ( args->absent_allele ) freeze_ref(args,rec); in apply_variant()
637 …<= ialt ) error("Broken VCF, too few alts at %s:%"PRId64"\n", bcf_seqname(args->hdr,rec),(int64_t)… in apply_variant()
639 else if ( args->output_iupac && rec->n_allele>1 ) in apply_variant()
651 hts_expand(uint8_t,l,args->miupac_bitmask,args->iupac_bitmask); in apply_variant()
652 for (j=mlen; j<l; j++) args->iupac_bitmask[j] = 0; in apply_variant()
661 args->iupac_bitmask[j] |= iupac2bitmask(rec->d.allele[i][j]); in apply_variant()
664 for (j=0; j<alen; j++) rec->d.allele[ialt][j] = bitmask2iupac(args->iupac_bitmask[j]); in apply_variant()
672 if ( args->absent_allele ) freeze_ref(args,rec); in apply_variant()
680 alleles[2] = args->missing_allele; in apply_variant()
682 bcf_update_alleles_str(args->hdr, rec, alleles); in apply_variant()
706 if ( rec->pos <= args->fa_frz_pos ) in apply_variant()
713 … if ( rec->pos < args->fa_frz_pos || !trim_beg || var_len==0 || args->prev_is_insert ) overlap = 1; in apply_variant()
717 …e %s:%"PRId64" overlaps with another variant, skipping...\n", bcf_seqname(args->hdr,rec),(int64_t)… in apply_variant()
727 int idx = rec->pos - args->fa_ori_pos + args->fa_mod_off; in apply_variant()
730 …ng: ignoring overlapping variant starting at %s:%"PRId64"\n", bcf_seqname(args->hdr,rec),(int64_t)… in apply_variant()
733 if ( rec->rlen > args->fa_buf.l - idx ) in apply_variant()
735 rec->rlen = args->fa_buf.l - idx; in apply_variant()
740 …fprintf(stderr,"Warning: trimming variant starting at %s:%"PRId64"\n", bcf_seqname(args->hdr,rec),… in apply_variant()
743 if ( idx>=args->fa_buf.l ) in apply_variant()
744 …%"PRIu64", off=%d\n",bcf_seqname(args->hdr,rec),(int64_t) rec->pos+1,idx,args->fa_ori_pos,(uint64_… in apply_variant()
754 alt_allele,bcf_seqname(args->hdr,rec),(int64_t) rec->pos+1); in apply_variant()
762 …" (This warning is printed only once.)\n", bcf_seqname(args->hdr,rec),(int64_t) rec->pos+1… in apply_variant()
765 if ( args->mark_del ) // insert dashes instead of delete sequence in apply_variant()
767 alt_allele = mark_del(rec->d.allele[0], rec->rlen, NULL, args->mark_del); in apply_variant()
782 freeze_ref(args,rec); in apply_variant()
786 else if ( strncasecmp(rec->d.allele[0],args->fa_buf.s+idx,rec->rlen) ) in apply_variant()
794 … if ( args->prev_base_pos==rec->pos && toupper(rec->d.allele[0][0])==toupper(args->prev_base) ) in apply_variant()
797 else if ( !strncasecmp(rec->d.allele[0]+1,args->fa_buf.s+idx+1,rec->rlen-1) ) fail = 0; in apply_variant()
803 if ( args->fa_buf.l - idx > rec->rlen ) in apply_variant()
805 tmp = args->fa_buf.s[idx+rec->rlen]; in apply_variant()
806 args->fa_buf.s[idx+rec->rlen] = 0; in apply_variant()
813 … bcf_seqname(args->hdr,rec),(int64_t) rec->pos+1, rec->d.allele[0], alt_allele, args->fa_buf.s+idx, in apply_variant()
814 tmp?tmp:' ',tmp?args->fa_buf.s+idx+rec->rlen+1:"" in apply_variant()
820 if ( args->mark_del && len_diff<0 ) in apply_variant()
822 alt_allele = mark_del(rec->d.allele[0], rec->rlen, alt_allele, args->mark_del); in apply_variant()
833 if ( args->mark_del && len_diff<0 ) in apply_variant()
835 alt_allele = mark_del(rec->d.allele[0], rec->rlen, alt_allele, args->mark_del); in apply_variant()
842 args->fa_case = toupper(args->fa_buf.s[idx])==args->fa_buf.s[idx] ? TO_UPPER : TO_LOWER; in apply_variant()
843 if ( args->fa_case==TO_UPPER ) in apply_variant()
848 if ( args->mark_ins && len_diff>0 ) in apply_variant()
849 mark_ins(rec->d.allele[0], alt_allele, args->mark_ins); in apply_variant()
850 if ( args->mark_snv ) in apply_variant()
851 mark_snv(rec->d.allele[0], alt_allele, args->mark_snv); in apply_variant()
856 assert( args->fa_buf.l >= idx+rec->rlen ); in apply_variant()
857 args->prev_base = args->fa_buf.s[idx+rec->rlen-1]; in apply_variant()
858 args->prev_base_pos = rec->pos + rec->rlen - 1; in apply_variant()
859 args->prev_is_insert = 0; in apply_variant()
860 args->fa_frz_mod = idx + alen; in apply_variant()
863 args->fa_buf.s[idx+i] = alt_allele[i]; in apply_variant()
866 … memmove(args->fa_buf.s+idx+alen,args->fa_buf.s+idx+rec->rlen,args->fa_buf.l-idx-rec->rlen); in apply_variant()
870 args->prev_is_insert = 1; in apply_variant()
871 args->prev_base_pos = rec->pos; in apply_variant()
874 ks_resize(&args->fa_buf, args->fa_buf.l + len_diff); in apply_variant()
875 …memmove(args->fa_buf.s + idx + rec->rlen + len_diff, args->fa_buf.s + idx + rec->rlen, args->fa_bu… in apply_variant()
883 …while ( ibeg<alen && rec->d.allele[0][ibeg]==alt_allele[ibeg] && rec->pos + ibeg <= args->prev_bas… in apply_variant()
885 args->fa_buf.s[idx+i] = alt_allele[i]; in apply_variant()
887 args->fa_frz_mod = idx + alen - ibeg + 1; in apply_variant()
889 if (args->chain && len_diff != 0) in apply_variant()
895 …push_chain_gap(args->chain, rec->pos + 1, rec->rlen - 1, rec->pos + 1 + args->fa_mod_off, alen - 1… in apply_variant()
900 push_chain_gap(args->chain, rec->pos, rec->rlen, rec->pos + args->fa_mod_off, alen); in apply_variant()
903 args->fa_buf.l += len_diff; in apply_variant()
904 args->fa_mod_off += len_diff; in apply_variant()
905 args->fa_frz_pos = rec->pos + rec->rlen - 1; in apply_variant()
906 args->napplied++; in apply_variant()
911 static void mask_region(args_t *args, char *seq, int len) in mask_region() argument
913 int start = args->fa_src_pos - len; in mask_region()
914 int end = args->fa_src_pos; in mask_region()
917 for (i=0; i<args->nmask; i++) in mask_region()
919 mask_t *mask = &args->mask[i]; in mask_region()
920 if ( !regidx_overlap(mask->idx, args->chr,start,end, mask->itr) ) continue; in mask_region()
939 static void consensus(args_t *args) in consensus() argument
941 BGZF *fasta = bgzf_open(args->ref_fname, "r"); in consensus()
942 if ( !fasta ) error("Error reading %s\n", args->ref_fname); in consensus()
949 if (args->chain) { in consensus()
950 print_chain(args); in consensus()
951 destroy_chain(args); in consensus()
955 while ( args->rid>=0 && (rec_ptr = next_vcf_line(args)) ) in consensus()
958 … if ( rec->rid!=args->rid || ( args->fa_end_pos && rec->pos > args->fa_end_pos ) ) break; in consensus()
959 apply_variant(args, rec); in consensus()
961 if ( args->absent_allele ) in consensus()
964 if ( args->vcf_rbuf.n && args->vcf_buf[args->vcf_rbuf.f]->rid==args->rid ) in consensus()
965 pos = args->vcf_buf[args->vcf_rbuf.f]->pos; in consensus()
966 apply_absent(args, pos); in consensus()
968 flush_fa_buffer(args, 0); in consensus()
969 init_region(args, str.s+1); in consensus()
972 args->fa_length += str.l; in consensus()
973 args->fa_src_pos += str.l; in consensus()
976 if ( args->fa_case==-1 ) args->fa_case = toupper(str.s[0])==str.s[0] ? 1 : 0; in consensus()
978 if ( args->mask ) mask_region(args, str.s, str.l); in consensus()
979 kputs(str.s, &args->fa_buf); in consensus()
982 while ( args->rid>=0 && (rec_ptr = next_vcf_line(args)) ) in consensus()
987 if ( rec->rid!=args->rid || ( args->fa_end_pos && rec->pos > args->fa_end_pos ) ) in consensus()
990 unread_vcf_line(args, rec_ptr); in consensus()
996 if ( args->fa_ori_pos + args->fa_buf.l - args->fa_mod_off <= rec->pos ) in consensus()
998 unread_vcf_line(args, rec_ptr); in consensus()
1004 if ( args->fa_ori_pos + args->fa_buf.l - args->fa_mod_off < rec->pos + rec->rlen ) in consensus()
1006 unread_vcf_line(args, rec_ptr); in consensus()
1009 apply_variant(args, rec); in consensus()
1013 …if ( args->absent_allele ) apply_absent(args, args->fa_ori_pos - args->fa_mod_off + args->fa_buf.l… in consensus()
1014 flush_fa_buffer(args, 60); in consensus()
1018 while ( args->rid>=0 && (rec_ptr = next_vcf_line(args)) ) in consensus()
1021 if ( rec->rid!=args->rid ) break; in consensus()
1022 if ( args->fa_end_pos && rec->pos > args->fa_end_pos ) break; in consensus()
1023 if ( args->fa_ori_pos + args->fa_buf.l - args->fa_mod_off <= rec->pos ) break; in consensus()
1024 apply_variant(args, rec); in consensus()
1026 if (args->chain) in consensus()
1028 print_chain(args); in consensus()
1029 destroy_chain(args); in consensus()
1031 if ( args->absent_allele ) apply_absent(args, HTS_POS_MAX); in consensus()
1032 flush_fa_buffer(args, 0); in consensus()
1035 fprintf(stderr,"Applied %d variants\n", args->napplied); in consensus()
1038 static void usage(args_t *args) in usage() argument
1083 args_t *args = (args_t*) calloc(1,sizeof(args_t)); in main_consensus() local
1084 args->argc = argc; args->argv = argv; in main_consensus()
1111 case 1 : args->mark_del = optarg[0]; break; in main_consensus()
1113 if ( !strcasecmp(optarg,"uc") ) args->mark_ins = 'u'; in main_consensus()
1114 else if ( !strcasecmp(optarg,"lc") ) args->mark_ins = 'l'; in main_consensus()
1118 if ( !strcasecmp(optarg,"uc") ) args->mark_snv = 'u'; in main_consensus()
1119 else if ( !strcasecmp(optarg,"lc") ) args->mark_snv = 'l'; in main_consensus()
1122 case 'p': args->chr_prefix = optarg; break; in main_consensus()
1123 case 's': args->sample = optarg; break; in main_consensus()
1124 case 'o': args->output_fname = optarg; break; in main_consensus()
1125 case 'I': args->output_iupac = 1; break; in main_consensus()
1127 …if ( args->filter_str ) error("Error: only one -i or -e expression can be given, and they cannot b… in main_consensus()
1128 args->filter_str = optarg; args->filter_logic |= FLT_EXCLUDE; break; in main_consensus()
1130 …if ( args->filter_str ) error("Error: only one -i or -e expression can be given, and they cannot b… in main_consensus()
1131 args->filter_str = optarg; args->filter_logic |= FLT_INCLUDE; break; in main_consensus()
1132 case 'f': args->ref_fname = optarg; break; in main_consensus()
1133 case 'm': add_mask(args,optarg); break; in main_consensus()
1134 case 4 : add_mask_with(args,optarg); break; in main_consensus()
1136 args->absent_allele = optarg[0]; in main_consensus()
1140 args->missing_allele = optarg[0]; in main_consensus()
1143 case 'c': args->chain_fname = optarg; break; in main_consensus()
1145 if ( !strcasecmp(optarg,"R") ) args->allele |= PICK_REF; in main_consensus()
1146 else if ( !strcasecmp(optarg,"A") ) args->allele |= PICK_ALT; in main_consensus()
1147 else if ( !strcasecmp(optarg,"L") ) args->allele |= PICK_LONG|PICK_REF; in main_consensus()
1148 else if ( !strcasecmp(optarg,"S") ) args->allele |= PICK_SHORT|PICK_REF; in main_consensus()
1149 else if ( !strcasecmp(optarg,"LR") ) args->allele |= PICK_LONG|PICK_REF; in main_consensus()
1150 else if ( !strcasecmp(optarg,"LA") ) args->allele |= PICK_LONG|PICK_ALT; in main_consensus()
1151 else if ( !strcasecmp(optarg,"SR") ) args->allele |= PICK_SHORT|PICK_REF; in main_consensus()
1152 else if ( !strcasecmp(optarg,"SA") ) args->allele |= PICK_SHORT|PICK_ALT; in main_consensus()
1153 else if ( !strcasecmp(optarg,"I") ) args->allele |= PICK_IUPAC; in main_consensus()
1154 … else if ( !strcasecmp(optarg,"1pIu") ) args->allele |= PICK_IUPAC, args->haplotype = 1; in main_consensus()
1155 … else if ( !strcasecmp(optarg,"2pIu") ) args->allele |= PICK_IUPAC, args->haplotype = 2; in main_consensus()
1159 args->haplotype = strtol(optarg, &tmp, 10); in main_consensus()
1161 … if ( args->haplotype <=0 ) error("Error: Expected positive integer with --haplotype\n"); in main_consensus()
1164 default: usage(args); break; in main_consensus()
1167 if ( optind>=argc ) usage(args); in main_consensus()
1168 args->fname = argv[optind]; in main_consensus()
1170 if ( !args->ref_fname && !isatty(fileno((FILE *)stdin)) ) args->ref_fname = "-"; in main_consensus()
1171 if ( !args->ref_fname ) usage(args); in main_consensus()
1173 init_data(args); in main_consensus()
1174 consensus(args); in main_consensus()
1175 destroy_data(args); in main_consensus()
1176 free(args); in main_consensus()