Skip to content

Commit 73b2244

Browse files
Improve no k-mer index handling
1 parent a53cf91 commit 73b2244

File tree

1 file changed

+37
-38
lines changed

1 file changed

+37
-38
lines changed

src/prefiltering/IndexBuilder.cpp

Lines changed: 37 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -180,55 +180,54 @@ void IndexBuilder::fillDatabase(IndexTable *indexTable, SequenceLookup ** extern
180180
}
181181

182182
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;
189189
#ifdef OPENMP
190-
thread_idx = static_cast<unsigned int>(omp_get_thread_num());
190+
thread_idx = static_cast<unsigned int>(omp_get_thread_num());
191191
#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+
}
205208
}
206-
}
207209

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();
212214

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));
217218
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));
222221
indexTable->addSequence(&s, &idxer, &buffer, bufferSize, kmerThr, idScoreLookup);
223222
}
224223
}
225-
}
226224

227-
if (generator != NULL) {
228-
delete generator;
229-
}
225+
if (generator != NULL) {
226+
delete generator;
227+
}
230228

231-
free(buffer);
229+
free(buffer);
230+
}
232231
}
233232
if(idScoreLookup!=NULL){
234233
delete[] idScoreLookup;

0 commit comments

Comments
 (0)