@@ -180,55 +180,54 @@ void IndexBuilder::fillDatabase(IndexTable *indexTable, SequenceLookup ** extern
180
180
}
181
181
182
182
delete info;
183
- Debug::Progress progress2 (dbTo-dbFrom);
184
-
185
- Debug (Debug::INFO) << " Index table: fill\n " ;
186
- #pragma omp parallel
187
- {
188
- unsigned int thread_idx = 0 ;
183
+ if (indexTable != NULL ) {
184
+ Debug::Progress progress2 (dbTo - dbFrom);
185
+ Debug (Debug::INFO) << " Index table: fill\n " ;
186
+ #pragma omp parallel
187
+ {
188
+ unsigned int thread_idx = 0 ;
189
189
#ifdef OPENMP
190
- thread_idx = static_cast <unsigned int >(omp_get_thread_num ());
190
+ thread_idx = static_cast <unsigned int >(omp_get_thread_num ());
191
191
#endif
192
- Sequence s (seq->getMaxLen (), seq->getSeqType (), &subMat, seq->getKmerSize (), seq->isSpaced (), false , true , seq->getUserSpacedKmerPattern ());
193
- unsigned int alphabetSize = (indexTable != NULL ) ? static_cast <unsigned int >(indexTable->getAlphabetSize ())
194
- : static_cast <unsigned int >(subMat.alphabetSize );
195
- Indexer idxer (alphabetSize, seq->getKmerSize ());
196
- IndexEntryLocalTmp *buffer = static_cast <IndexEntryLocalTmp *>(malloc ( seq->getMaxLen () * sizeof (IndexEntryLocalTmp)));
197
- size_t bufferSize = seq->getMaxLen ();
198
- KmerGenerator *generator = NULL ;
199
- if (isTargetSimiliarKmerSearch) {
200
- generator = new KmerGenerator (seq->getKmerSize (), indexTable->getAlphabetSize (), kmerThr);
201
- if (isProfile){
202
- generator->setDivideStrategy (s.profile_matrix );
203
- }else {
204
- generator->setDivideStrategy (&three, &two);
192
+ Sequence s (seq->getMaxLen (), seq->getSeqType (), &subMat, seq->getKmerSize (), seq->isSpaced (), false , true ,
193
+ seq->getUserSpacedKmerPattern ());
194
+ unsigned int alphabetSize = (indexTable != NULL ) ? static_cast <unsigned int >(indexTable->getAlphabetSize ())
195
+ : static_cast <unsigned int >(subMat.alphabetSize );
196
+ Indexer idxer (alphabetSize, seq->getKmerSize ());
197
+ IndexEntryLocalTmp *buffer = static_cast <IndexEntryLocalTmp *>(malloc (
198
+ seq->getMaxLen () * sizeof (IndexEntryLocalTmp)));
199
+ size_t bufferSize = seq->getMaxLen ();
200
+ KmerGenerator *generator = NULL ;
201
+ if (isTargetSimiliarKmerSearch) {
202
+ generator = new KmerGenerator (seq->getKmerSize (), indexTable->getAlphabetSize (), kmerThr);
203
+ if (isProfile) {
204
+ generator->setDivideStrategy (s.profile_matrix );
205
+ } else {
206
+ generator->setDivideStrategy (&three, &two);
207
+ }
205
208
}
206
- }
207
209
208
- #pragma omp for schedule(dynamic, 100)
209
- for (size_t id = dbFrom; id < dbTo; id++) {
210
- s.resetCurrPos ();
211
- progress2.updateProgress ();
210
+ #pragma omp for schedule(dynamic, 100)
211
+ for (size_t id = dbFrom; id < dbTo; id++) {
212
+ s.resetCurrPos ();
213
+ progress2.updateProgress ();
212
214
213
- unsigned int qKey = dbr->getDbKey (id);
214
- if (isTargetSimiliarKmerSearch) {
215
- s.mapSequence (id - dbFrom, qKey, dbr->getData (id, thread_idx), dbr->getSeqLen (id));
216
- if (indexTable != NULL ) {
215
+ unsigned int qKey = dbr->getDbKey (id);
216
+ if (isTargetSimiliarKmerSearch) {
217
+ s.mapSequence (id - dbFrom, qKey, dbr->getData (id, thread_idx), dbr->getSeqLen (id));
217
218
indexTable->addSimilarSequence (&s, generator, &buffer, bufferSize, &idxer);
218
- }
219
- } else {
220
- s.mapSequence (id - dbFrom, qKey, sequenceLookup->getSequence (id - dbFrom));
221
- if (indexTable != NULL ) {
219
+ } else {
220
+ s.mapSequence (id - dbFrom, qKey, sequenceLookup->getSequence (id - dbFrom));
222
221
indexTable->addSequence (&s, &idxer, &buffer, bufferSize, kmerThr, idScoreLookup);
223
222
}
224
223
}
225
- }
226
224
227
- if (generator != NULL ) {
228
- delete generator;
229
- }
225
+ if (generator != NULL ) {
226
+ delete generator;
227
+ }
230
228
231
- free (buffer);
229
+ free (buffer);
230
+ }
232
231
}
233
232
if (idScoreLookup!=NULL ){
234
233
delete[] idScoreLookup;
0 commit comments