@@ -86,7 +86,7 @@ struct nucleotide_model {
8686 double operator ()(const string &s) const {
8787 return accumulate (cbegin (s), cend (s), 0.0 ,
8888 [&](const double x, const char c) {
89- const auto i = nuc_to_idx[c ];
89+ const auto i = nuc_to_idx[static_cast < uint8_t >(c) ];
9090 return i == 4 ? x : x + lpr[i];
9191 });
9292 };
@@ -106,6 +106,9 @@ struct guessprotocol_summary {
106106 // protocol is the guessed protocol (wgbs, pbat, rpbat, or inconclusive)
107107 // based on the content of the reads.
108108 string protocol;
109+ // confidence indicates the level of confidence in the guess for the
110+ // protocol.
111+ string confidence;
109112 // layout indicates whether the reads are paired or single-ended.
110113 string layout;
111114 // n_reads_wgbs is the average number of reads (for single-ended reads) or
@@ -118,17 +121,21 @@ struct guessprotocol_summary {
118121 double wgbs_fraction{};
119122
120123 void evaluate () {
121- const auto frac = n_reads_wgbs / n_reads;
122- protocol = " inconclusive" ;
123- if (frac > 0.8 ) protocol = " wgbs" ;
124- if (frac < 0.2 ) protocol = " pbat" ;
125- if (frac > 0.4 && frac < 0.6 ) protocol = " rpbat" ;
124+ const auto frac = n_reads_wgbs / std::max (1ul , n_reads);
125+ if (frac <= 0.01 ) {protocol = " pbat" ; confidence = " high" ;}
126+ else if (frac <= 0.1 ) {protocol = " pbat" ; confidence = " low" ;}
127+ else if (frac <= 0.2 ) {protocol = " rpbat" ; confidence = " low" ;}
128+ else if (frac <= 0.8 ) {protocol = " rpbat" ; confidence = " high" ;}
129+ else if (frac <= 0.9 ) {protocol = " rpbat" ; confidence = " low" ;}
130+ else if (frac <= 0.99 ) {protocol = " wgbs" ; confidence = " low" ;}
131+ else {protocol = " wgbs" ; confidence = " high" ;}
126132 wgbs_fraction = frac;
127133 }
128134
129135 string tostring () const {
130136 std::ostringstream oss;
131137 oss << " protocol: " << protocol << ' \n '
138+ << " confidence: " << confidence << ' \n '
132139 << " wgbs_fraction: " << wgbs_fraction << ' \n '
133140 << " n_reads_wgbs: " << n_reads_wgbs << ' \n '
134141 << " n_reads: " << n_reads;
0 commit comments