void print_leftovers(Read const &read, const char * tag, std::ostream *LEFTOVER_FP) { _stats.alignment_num_unmapped++ ; if (read.get_orig()==NULL) { if (read.format() == 0) fprintf(LEFTOVER_FP, "@%s%s\n%s\n+\n%s\n", read.id(), tag, read.data(), read.quality(0)); else if (read.format() == 1) fprintf(LEFTOVER_FP, ">%s%s\n%s\n", read.id(), tag, read.data()); else { fprintf(LEFTOVER_FP, "%s%s\t%s\t%d", read.id(), tag, read.data(), read.pe_flag()); if (strlen(read.quality(0)) > 0) fprintf(LEFTOVER_FP, "\t%s", read.quality(0)); if (strlen(read.quality(1)) > 0) fprintf(LEFTOVER_FP, "\t%s", read.quality(1)); if (strlen(read.quality(2)) > 0) fprintf(LEFTOVER_FP, "\t%s", read.quality(2)); fprintf(LEFTOVER_FP, "\n"); } } else { if (read.format() == 0) fprintf(LEFTOVER_FP, "@%s%s\n%s\n+\n%s\n", read.id(), tag, read.get_orig()->data(), read.get_orig()->quality(0)); else if (read.format() == 1) fprintf(LEFTOVER_FP, ">%s%s\n%s\n", read.id(), tag, read.get_orig()->data()); else { fprintf(LEFTOVER_FP, "%s%s\t%s\t%d", read.id(), tag, read.get_orig()->data(), read.pe_flag()); if (strlen(read.get_orig()->quality(0)) > 0) fprintf(LEFTOVER_FP, "\t%s", read.get_orig()->quality(0)); if (strlen(read.get_orig()->quality(1)) > 0) fprintf(LEFTOVER_FP, "\t%s", read.get_orig()->quality(1)); if (strlen(read.get_orig()->quality(2)) > 0) fprintf(LEFTOVER_FP, "\t%s", read.get_orig()->quality(2)); fprintf(LEFTOVER_FP, "\n"); } } }
void print_alignment_matrix(Read const &read, int chrstart, int readstart, int length, int offset_front, int offset_end, Chromosome const &chr, char ori, int K) { int i, j; printf(" k=%d |\t-\t", K); if (ori == '+') for (i = 0; i != length; i++) printf("%c\t", chr[chrstart + i]); else for (i = 0; i != length; i++) printf("%c\t", get_compl_base(chr[chrstart - i])); printf( "\n----------------------------------------------------------------------------------------------"); printf( "----------------------------------------------------------------------------------------------\n"); for (j = 0; j != length + 1; ++j) { if (j == 0) printf(" - |\t"); else { if ((readstart == 0 && (j <= offset_front || (j > length - offset_end && K != 1))) || (readstart != 0 && j > length - offset_end)) printf(" X |\t"); else printf(" %c |\t", read.data()[readstart + j - (readstart == 0) * offset_front - 1]); } if (j > K) for (i = 0; i != j - K; ++i) printf("\t"); for (i = 0; i != 2* K + 1; ++i) { if (i - j > K) break; if (i + j > length + K) break; if (i > length || j > length) break; if ((readstart != 0 && j > length - offset_end) || (readstart == 0 && j < offset_front)) break; //printf("{i%d,j%d}",i,j); //printf("%.1f(%c)\t", M[i][j], T[i][j]); if (i == 6 && j == 1) printf("---"); } printf( "\n----------------------------------------------------------------------------------------------"); printf( "----------------------------------------------------------------------------------------------\n"); } }