         timer.stop();
         stats.align_time += timer.seconds();
     }
-
-    log_verbose(stderr, "  q-gram filter... done\n");
-    log_verbose(stderr, "    extract throughput : %.2f B q-grams/s\n", (1.0e-9f * float( stats.queries )) / stats.extract_time);
-    log_verbose(stderr, "    rank throughput    : %6.2f M reads/s\n", (1.0e-6f * float( stats.reads )) / stats.rank_time);
-    log_verbose(stderr, "    locate throughput  : %6.2f M reads/s\n", (1.0e-6f * float( stats.reads )) / stats.locate_time);
-    log_verbose(stderr, "    align throughput   : %6.2f M reads/s\n", (1.0e-6f * float( stats.reads )) / stats.align_time);
-    log_verbose(stderr, "                       : %6.2f M hits/s\n",  (1.0e-6f * float( stats.merged )) / stats.align_time);
-    log_verbose(stderr, "    matches            : %.2f M\n", 1.0e-6f * float( stats.matches ) );
-    log_verbose(stderr, "    occurrences        : %.3f B\n", 1.0e-9f * float( stats.occurrences ) );
-    log_verbose(stderr, "    merged occurrences : %.3f B (%.1f %%)\n", 1.0e-9f * float( stats.merged ), 100.0f * float(stats.merged)/float(stats.occurrences));
 }
 
 // main test entry point

                genome_begin,
                d_genome,
                stats );
        }

        cudaDeviceSynchronize();
        timer.stop();
        const float time = timer.seconds();

        log_info(stderr, "  aligned reads:\n");
        log_info(stderr, "    %6.2f M reads/s\n", (1.0e-6f * float( stats.reads )) / time );
    }
    return 0;
}


    cudaDeviceSynchronize();
    timer.stop();
    stats.rank_time   += timer.seconds();
    stats.occurrences += n_hits;

    // loop through large batches of hits and locate & merge them
