@@ -31,7 +31,7 @@ AlignerParallel<V>::AlignerParallel(int kmer, int hSize, double t,
3131 threshold = t;
3232 // error = e;
3333 relaxThreshold = t - e;
34- isLengthFilter = f;
34+ canReportAll = f;
3535 compositionList = compList;
3636 dlm = d;
3737 threadNum = tNum;
@@ -128,16 +128,18 @@ void AlignerParallel<V>::setBlockA(Block *block, bool isAllVsAll) {
128128 ((sizeA - i - 1 ) / threadNum) + 1 );
129129
130130#pragma omp parallel for schedule(static) num_threads(threadNum)
131- for (int j = i + 1 ; j < sizeA - 1 ; j++) {
132- double minimum = lenList[i];
133- double maximum = lenList[j];
134- if (maximum < minimum) {
135- minimum = lenList[j];
136- maximum = lenList[i];
137- }
138-
139- if (isLengthFilter && (minimum / maximum < threshold)) {
140- continue ;
131+ for (int j = i + 1 ; j < sizeA; j++) {
132+
133+ if (!canReportAll) {
134+ double minimum = lenList[i];
135+ double maximum = lenList[j];
136+ if (maximum < minimum) {
137+ minimum = lenList[j];
138+ maximum = lenList[i];
139+ }
140+ if ((minimum / maximum < threshold)) {
141+ continue ;
142+ }
141143 }
142144
143145 Statistician < V
@@ -148,7 +150,7 @@ void AlignerParallel<V>::setBlockA(Block *block, bool isAllVsAll) {
148150 s.calculate (funIndexArray, singleFeatNum, data);
149151 double res = predictor.calculateIdentity (data);
150152
151- if (res >= relaxThreshold) {
153+ if (canReportAll || res >= relaxThreshold) {
152154 printList->at (omp_get_thread_num ())->push_back (
153155 std::make_pair (infoList[j], res));
154156 }
@@ -239,7 +241,7 @@ void AlignerParallel<V>::output(
239241 res = 0.0 ;
240242 }
241243
242- out << *info1 << dlm << *p.first << dlm << std::setprecision (4 )
244+ out << *info1 << dlm << *p.first << dlm << std::setprecision (8 )
243245 << res << std::endl;
244246 }
245247 delete v;
@@ -266,15 +268,16 @@ void AlignerParallel<V>::processBlockB(Block *block) {
266268#pragma omp parallel for schedule(static) num_threads(threadNum)
267269 for (int h = 0 ; h < sizeB; h++) {
268270
269- double minimum = lenList[i];
270- double maximum = lenListB[h];
271- if (maximum < minimum) {
272- minimum = lenListB[h];
273- maximum = lenList[i];
274- }
275-
276- if (isLengthFilter && (minimum / maximum < threshold)) {
277- continue ;
271+ if (!canReportAll) {
272+ double minimum = lenList[i];
273+ double maximum = lenListB[h];
274+ if (maximum < minimum) {
275+ minimum = lenListB[h];
276+ maximum = lenList[i];
277+ }
278+ if ((minimum / maximum < threshold)) {
279+ continue ;
280+ }
278281 }
279282
280283 Statistician < V
@@ -285,7 +288,7 @@ void AlignerParallel<V>::processBlockB(Block *block) {
285288 s.calculate (funIndexArray, singleFeatNum, data);
286289 double res = predictor.calculateIdentity (data);
287290
288- if (res >= relaxThreshold) {
291+ if (canReportAll || res >= relaxThreshold) {
289292 printList->at (omp_get_thread_num ())->push_back (
290293 std::make_pair (infoListB[h], res));
291294 }
@@ -309,7 +312,7 @@ void AlignerParallel<V>::processBlockB(Block *block) {
309312 }
310313 }
311314
312- // Wait for the last print case
315+ // Wait for the last print case
313316 if (printTask.valid ()) {
314317 printTask.get ();
315318 threadNum++;
0 commit comments