int tmap_refseq_refinfo_main(int argc, char *argv[]) { int c, help=0; tmap_refseq_t *refseq = NULL; tmap_file_t *fp_anno = NULL; char *fn_anno = NULL; char *fn_fasta = NULL; while((c = getopt(argc, argv, "vh")) >= 0) { switch(c) { case 'v': tmap_progress_set_verbosity(1); break; case 'h': help = 1; break; default: return 1; } } if(1 != argc - optind || 1 == help) { tmap_file_fprintf(tmap_file_stderr, "Usage: %s %s [-vh] <in.fasta>\n", PACKAGE, argv[0]); return 1; } fn_fasta = argv[optind]; // Note: 'tmap_file_stdout' should not have been previously modified tmap_file_stdout = tmap_file_fdopen(fileno(stdout), "wb", TMAP_FILE_NO_COMPRESSION); // allocate some memory refseq = tmap_calloc(1, sizeof(tmap_refseq_t), "refseq"); refseq->is_rev = 0; refseq->is_shm = 0; // read the annotation file fn_anno = tmap_get_file_name(fn_fasta, TMAP_ANNO_FILE); fp_anno = tmap_file_fopen(fn_anno, "rb", TMAP_ANNO_COMPRESSION); tmap_refseq_read_anno(fp_anno, refseq); tmap_file_fclose(fp_anno); free(fn_anno); // no need to read in the pac refseq->seq = NULL; // print the header tmap_refseq_print_header(tmap_file_stdout, refseq); // destroy tmap_refseq_destroy(refseq); // close the output tmap_file_fclose(tmap_file_stdout); return 0; }
int tmap_vswbm_main(int argc, char *argv[]) { int32_t seq_len = 150; int32_t tlen = 256; int32_t n_iter = 1000; int32_t n_sub_iter = 1; int32_t vsw_type = 0; int c; while((c = getopt(argc, argv, "q:t:n:N:H:h")) >= 0) { switch(c) { case 'q': seq_len = atoi(optarg); break; case 't': tlen = atoi(optarg); break; case 'n': n_iter = atoi(optarg); break; case 'N': n_sub_iter = atoi(optarg); break; case 'H': vsw_type = atoi(optarg); break; case 'h': default: return usage(seq_len, tlen, n_iter, n_sub_iter, vsw_type); } } if(argc != optind || seq_len > tlen) { return usage(seq_len, tlen, n_iter, n_sub_iter, vsw_type); } tmap_progress_set_verbosity(1); tmap_progress_print2("starting benchmark"); tmap_vsw_bm_core(seq_len, tlen, n_iter, n_sub_iter, vsw_type); tmap_progress_print2("ending benchmark"); return 0; }
int tmap_refseq_fasta2pac_main(int argc, char *argv[]) { int c, help=0; while((c = getopt(argc, argv, "vh")) >= 0) { switch(c) { case 'v': tmap_progress_set_verbosity(1); break; case 'h': help = 1; break; default: return 1; } } if(1 != argc - optind || 1 == help) { tmap_file_fprintf(tmap_file_stderr, "Usage: %s %s [-vh] <in.fasta>\n", PACKAGE, argv[0]); return 1; } tmap_refseq_fasta2pac(argv[optind], TMAP_FILE_NO_COMPRESSION); return 0; }
int tmap_index(int argc, char *argv[]) { int c; tmap_index_opt_t opt; opt.fn_fasta = NULL; opt.occ_interval = TMAP_BWT_OCC_INTERVAL; opt.hash_width = INT32_MAX; opt.sa_interval = TMAP_SA_INTERVAL; opt.is_large = -1; opt.check_hash = 1; if(2 == argc && 0 == strcmp("--version", argv[1])) { tmap_file_stdout = tmap_file_fdopen(fileno(stdout), "wb", TMAP_FILE_NO_COMPRESSION); tmap_file_fprintf(tmap_file_stdout, "%s\n", tmap_refseq_get_version_format(PACKAGE_VERSION)); tmap_file_fclose(tmap_file_stdout); return 0; } while((c = getopt(argc, argv, "f:o:i:w:a:hvH")) >= 0) { switch(c) { case 'f': opt.fn_fasta = tmap_strdup(optarg); break; case 'o': opt.occ_interval = atoi(optarg); break; case 'i': opt.sa_interval = atoi(optarg); break; case 'w': opt.hash_width = atoi(optarg); break; case 'a': if(0 == strcmp("is", optarg)) opt.is_large = 0; else if(0 == strcmp("bwtsw", optarg)) opt.is_large = 1; else tmap_error("Option -a value not correct", Exit, CommandLineArgument); break; case 'v': tmap_progress_set_verbosity(1); break; case 'h': return usage(&opt); case 'H': opt.check_hash = 0; break; default: return usage(&opt); } } if(argc != optind || 1 == argc) { return usage(&opt); } if(NULL == opt.fn_fasta) { tmap_error("required option -f", Exit, CommandLineArgument); } if(opt.occ_interval < TMAP_BWT_OCC_MOD || 0 != (opt.occ_interval % 2) || 0 != (opt.occ_interval % TMAP_BWT_OCC_MOD)) { tmap_error("option -o out of range", Exit, CommandLineArgument); } if(opt.hash_width < 0) { tmap_error("option -w out of range", Exit, CommandLineArgument); } if(opt.sa_interval <= 0 || (1 < opt.sa_interval && 0 != (opt.sa_interval % 2))) { tmap_error("option -i out of range", Exit, CommandLineArgument); } tmap_index_core(&opt); free(opt.fn_fasta); tmap_progress_print2("terminating successfully"); return 0; }
int tmap_seqs_io_sff2sam_main(int argc, char *argv[]) { int c, help = 0; tmap_seqs_io_t *io_in = NULL; tmap_seqs_t *seqs = NULL; char **sam_rg = NULL; int32_t sam_rg_num = 0; int bidirectional = 0, sam_flowspace_tags = 0; int out_type = 0; tmap_sam_io_t *io_out = NULL; bam_header_t *header = NULL; // BAM Header int32_t i; /* uint8_t *key_seq = NULL; int key_seq_len = 0; */ while((c = getopt(argc, argv, "DGR:Yvh")) >= 0) { switch(c) { case 'D': bidirectional = 1; break; case 'G': break; case 'R': sam_rg = tmap_realloc(sam_rg, (1+sam_rg_num) * sizeof(char*), "sam_rg"); sam_rg[sam_rg_num] = tmap_strdup(optarg); sam_rg_num++; break; case 'Y': sam_flowspace_tags = 1; break; case 'v': tmap_progress_set_verbosity(1); break; case 'h': help = 1; break; default: return 1; } } if(1 != argc - optind || 1 == help) { tmap_file_fprintf(tmap_file_stderr, "Usage: %s %s [-R -Y -v -h] <in.sff>\n", PACKAGE, argv[0]); return 1; } // input io_in = tmap_seqs_io_init(&argv[optind], 1, TMAP_SEQ_TYPE_SFF, TMAP_FILE_NO_COMPRESSION, 0l, 0l); // BAM Header header = tmap_seqs_io_to_bam_header(NULL, io_in, sam_rg, sam_rg_num, argc, argv); // open the output file switch(out_type) { case 0: // SAM io_out = tmap_sam_io_init2("-", "wh", header); break; case 1: io_out = tmap_sam_io_init2("-", "wb", header); break; case 2: io_out = tmap_sam_io_init2("-", "wbu", header); break; default: tmap_bug(); } // destroy the BAM Header bam_header_destroy(header); header = NULL; seqs = tmap_seqs_init(TMAP_SEQ_TYPE_SFF); while(0 < tmap_seqs_io_read(io_in, seqs, io_out->fp->header->header)) { bam1_t *b = NULL; tmap_seq_t *seq = seqs->seqs[0]; b = tmap_sam_convert_unmapped(seq, sam_flowspace_tags, bidirectional, NULL, 0, 0, 0, 0, 0, 0, "\tlq:i:%d\trq:i:%d\tla:i:%d\trq:i:%d", seq->data.sff->rheader->clip_qual_left, seq->data.sff->rheader->clip_qual_right, seq->data.sff->rheader->clip_adapter_left, seq->data.sff->rheader->clip_adapter_right); if(samwrite(io_out->fp, b) <= 0) { tmap_error("Error writing the SAM file", Exit, WriteFileError); } bam_destroy1(b); tmap_seqs_destroy(seqs); seqs = tmap_seqs_init(TMAP_SEQ_TYPE_SFF); } tmap_seqs_destroy(seqs); // free memory tmap_seqs_io_destroy(io_in); tmap_sam_io_destroy(io_out); for(i=0;i<sam_rg_num;i++) { free(sam_rg[i]); } free(sam_rg); return 0; }
int tmap_refseq_pac2fasta_main(int argc, char *argv[]) { int c, help=0, amb=0; uint32_t i, j, k; char *fn_fasta = NULL; tmap_refseq_t *refseq = NULL; while((c = getopt(argc, argv, "avh")) >= 0) { switch(c) { case 'a': amb = 1; break; case 'v': tmap_progress_set_verbosity(1); break; case 'h': help = 1; break; default: return 1; } } if(1 != argc - optind || 1 == help) { tmap_file_fprintf(tmap_file_stderr, "Usage: %s %s [-avh] <in.fasta>\n", PACKAGE, argv[0]); return 1; } fn_fasta = argv[optind]; // Note: 'tmap_file_stdout' should not have been previously modified tmap_file_stdout = tmap_file_fdopen(fileno(stdout), "wb", TMAP_FILE_NO_COMPRESSION); // read in the reference sequence refseq = tmap_refseq_read(fn_fasta, 0); for(i=0;i<refseq->num_annos;i++) { tmap_file_fprintf(tmap_file_stdout, ">%s", refseq->annos[i].name->s); // new line handled later for(j=k=0;j<refseq->annos[i].len;j++) { if(0 == (j % TMAP_REFSEQ_FASTA_LINE_LENGTH)) { tmap_file_fprintf(tmap_file_stdout, "\n"); } if(1 == amb && 0 < refseq->annos[i].num_amb) { // move the next ambiguous region while(k < refseq->annos[i].num_amb && refseq->annos[i].amb_positions_end[k] < j+1) { k++; } // check for the ambiguous region if(k < refseq->annos[i].num_amb && 0 == tmap_interval_overlap(j+1, j+1, refseq->annos[i].amb_positions_start[k], refseq->annos[i].amb_positions_end[k])) { tmap_file_fprintf(tmap_file_stdout, "%c", tmap_iupac_int_to_char[refseq->annos[i].amb_bases[k]]); } else { tmap_file_fprintf(tmap_file_stdout, "%c", "ACGTN"[(int)tmap_refseq_seq_i(refseq, j + refseq->annos[i].offset)]); } } else { tmap_file_fprintf(tmap_file_stdout, "%c", "ACGTN"[(int)tmap_refseq_seq_i(refseq, j + refseq->annos[i].offset)]); } } tmap_file_fprintf(tmap_file_stdout, "\n"); } // destroy tmap_refseq_destroy(refseq); // close the output tmap_file_fclose(tmap_file_stdout); return 0; }