int samwrite(samfile_t *fp, const bam1_t *b) { if (fp == 0 || (fp->type & TYPE_READ)) return -1; // not open for writing if (fp->type & TYPE_BAM) return bam_write1(fp->x.bam, b); else { char *s = bam_format1(fp->header, b); int l = strlen(s); fputs(s, fp->x.tamw); fputc('\n', fp->x.tamw); free(s); return l + 1; } }
void convert_bam_to_sam(char* bam_input, char* sam_input) { int read_bytes; bam1_t* bam_p = bam_init1(); char* bam_string; LOG_DEBUG("CONVERT-START: bam to sam\n"); //open BAM file for read if (time_flag) { start_timer(t1_convert); } bam_file_t* bam_file_p = bam_fopen_mode(bam_input, NULL, "r"); //open SAM file for write, SAM file is a text file!!! FILE* sam_fd = fopen(sam_input, "w"); if (sam_fd == NULL) { char log_message[200]; sprintf(log_message, "Error opening file '%.150s' in mode 'r' !!!!!\n", sam_input); LOG_FATAL(log_message); } //header for BAM file has been done in the opening bam_header_t* bam_header_p = bam_file_p->bam_header_p; //write header text to SAM file fprintf(sam_fd, "%s", bam_header_p->text); //write string alignments to SAM file while ((read_bytes = bam_read1(bam_file_p->bam_fd, bam_p)) > 0) { bam_string = bam_format1(bam_header_p, bam_p); fprintf(sam_fd, "%s\n", bam_string); free(bam_string); // it was allocated by the sam-tools, we must free it !! num_alignments++; } //close BAM and SAM files, free bam alignment and bam file object bam_fclose(bam_file_p); fclose(sam_fd); bam_destroy1(bam_p); if (time_flag) { stop_timer(t1_convert, t2_convert, convert_time); } //number_of_batchs = 1, convention value for statistics (not real batch) number_of_batchs = 1; LOG_DEBUG("CONVERT-START: bam to sam\n"); }
void CBamLine::b_init(bam_header_t* header) { if (b) { char *name = bam1_qname(b); if (raw_merge) { read_id=0; return; } read_id=(uint64_t)atol(name); if (read_id<1 && header) { char* samline=bam_format1(header, b); err_die("Error: invalid read Id (must be numeric) for BAM record:\n%s\n", samline); } } }
void bam_view1(const bam_header_t *header, const bam1_t *b) { char *s = bam_format1(header, b); puts(s); free(s); }
void bam_view1(const bam_header_t *header, const bam1_t *b) { char *s = bam_format1(header, b); printf("%s\n", s); }