|
1 | 1 | #include "read.h" |
2 | 2 | #include <sstream> |
| 3 | +#include "util.h" |
3 | 4 |
|
4 | 5 | Read::Read(string name, string seq, string strand, string quality){ |
5 | 6 | mName = name; |
@@ -98,26 +99,40 @@ string Read::makeHtmlSeqWithQual(int start, int length) { |
98 | 99 | return ss.str(); |
99 | 100 | } |
100 | 101 |
|
| 102 | +void Read::escapeSpecialQualityChar(string& str) { |
| 103 | + const char* data = str.c_str(); |
| 104 | + for(int i=0;i<str.length();i++){ |
| 105 | + if(data[i] == '\'' || data[i] == '\\') |
| 106 | + str[i] = data[i] + 1; |
| 107 | + } |
| 108 | +} |
| 109 | + |
101 | 110 | void Read::printJSWithBreaks(ofstream& file, vector<int>& breaks) { |
102 | 111 | if(breaks.size()>0){ |
103 | 112 | file << "\n["; |
104 | 113 | file << "'" << mSeq.mStr.substr(0, breaks[0]) << "'"; |
105 | 114 | file << ", " ; |
106 | | - file << "'" << mQuality.substr(0, breaks[0]) << "'"; |
| 115 | + string qualstr = mQuality.substr(0, breaks[0]); |
| 116 | + escapeSpecialQualityChar(qualstr); |
| 117 | + file << "'" << qualstr << "'"; |
107 | 118 | file << "],"; |
108 | 119 | } |
109 | 120 | for(int i=0;i<breaks.size()-1;i++){ |
110 | 121 | file << "\n["; |
111 | 122 | file << "'" << mSeq.mStr.substr(breaks[i], breaks[i+1]-breaks[i]) << "'"; |
112 | 123 | file << ", " ; |
113 | | - file << "'" << mQuality.substr(breaks[i], breaks[i+1]-breaks[i]) << "'"; |
| 124 | + string qualstr = mQuality.substr(breaks[i], breaks[i+1]-breaks[i]); |
| 125 | + escapeSpecialQualityChar(qualstr); |
| 126 | + file << "'" << qualstr << "'"; |
114 | 127 | file << "],"; |
115 | 128 | } |
116 | 129 | if(breaks[breaks.size()-1]>0){ |
117 | 130 | file << "\n["; |
118 | 131 | file << "'" << mSeq.mStr.substr(breaks[breaks.size()-1], mSeq.mStr.length() - breaks[breaks.size()-1]) << "'"; |
119 | 132 | file << ", " ; |
120 | | - file << "'" << mQuality.substr(breaks[breaks.size()-1], mSeq.mStr.length() - breaks[breaks.size()-1]) << "'"; |
| 133 | + string qualstr = mQuality.substr(breaks[breaks.size()-1], mSeq.mStr.length() - breaks[breaks.size()-1]); |
| 134 | + escapeSpecialQualityChar(qualstr); |
| 135 | + file << "'" << qualstr << "'"; |
121 | 136 | file << "],"; |
122 | 137 | } |
123 | 138 |
|
@@ -258,9 +273,6 @@ Read* ReadPair::fastMerge(){ |
258 | 273 | } else { |
259 | 274 | // add the quality of the pair to make a high qual |
260 | 275 | mergedQual[offset+i] = qual1[offset+i] + qual2[i] - 33; |
261 | | - // avoid slash since it will affect HTML output |
262 | | - if(mergedQual[offset+i] == '\\') |
263 | | - mergedQual[offset+i] = '\\' - 1; |
264 | 276 | } |
265 | 277 | } |
266 | 278 | delete rcRight; |
|
0 commit comments