comparison query.cpp @ 217:685eb707b660 refactoring

set_up_db() analogue to set_up_query()
author mas01cr
date Tue, 04 Dec 2007 12:47:49 +0000
parents cd3dced4f534
children 016303fc3e1b
comparison
equal deleted inserted replaced
216:cd3dced4f534 217:685eb707b660
206 sequence_sum(*qpp, *nvp, sequenceLength); 206 sequence_sum(*qpp, *nvp, sequenceLength);
207 sequence_average(*qpp, *nvp, sequenceLength); 207 sequence_average(*qpp, *nvp, sequenceLength);
208 } 208 }
209 } 209 }
210 210
211 void audioDB::set_up_db(double **snp, double **spp, unsigned int *dvp) {
212 *dvp = dbH->length / (dbH->dim * sizeof(double));
213 *snp = new double[*dvp];
214
215 double *snpp = *snp, *sppp = 0;
216 memcpy(*snp, l2normTable, *dvp * sizeof(double));
217
218 if (usingPower) {
219 if (!(dbH->flags & O2_FLAG_POWER)) {
220 error("database not power-enabled", dbName);
221 }
222 *spp = new double[*dvp];
223 sppp = *spp;
224 memcpy(*spp, powerTable, *dvp * sizeof(double));
225 }
226
227 for(unsigned int i = 0; i < dbH->numFiles; i++){
228 if(trackTable[i] >= sequenceLength) {
229 sequence_sum(snpp, trackTable[i], sequenceLength);
230 sequence_sqrt(snpp, trackTable[i], sequenceLength);
231
232 if (usingPower) {
233 sequence_sum(sppp, trackTable[i], sequenceLength);
234 sequence_average(sppp, trackTable[i], sequenceLength);
235 }
236 }
237 snpp += trackTable[i];
238 if (usingPower) {
239 sppp += trackTable[i];
240 }
241 }
242 }
243
211 void audioDB::trackSequenceQueryNN(const char* dbName, const char* inFile, adb__queryResponse *adbQueryResponse){ 244 void audioDB::trackSequenceQueryNN(const char* dbName, const char* inFile, adb__queryResponse *adbQueryResponse){
212 245
213 initTables(dbName, inFile); 246 initTables(dbName, inFile);
214 247
215 unsigned int numVectors; 248 unsigned int numVectors;
219 set_up_query(&query, &qNorm, &qPower, &numVectors); 252 set_up_query(&query, &qNorm, &qPower, &numVectors);
220 query_data = query; 253 query_data = query;
221 qpPtr = qPower; 254 qpPtr = qPower;
222 qnPtr = qNorm; 255 qnPtr = qNorm;
223 256
224 unsigned dbVectors = dbH->length/(sizeof(double)*dbH->dim); 257 unsigned int dbVectors;
225 258 double *sNorm, *snPtr, *sPower = 0, *spPtr = 0;
226 double *sNorm = new double[dbVectors]; 259
227 260 set_up_db(&sNorm, &sPower, &dbVectors);
228 // Make norm measurements relative to sequenceLength 261 spPtr = sPower;
229 unsigned i,j; 262 snPtr = sNorm;
230
231 // Copy the L2 norm values to core to avoid disk random access later on
232 memcpy(sNorm, l2normTable, dbVectors*sizeof(double));
233 double* snPtr = sNorm;
234
235 double *sPower = 0, *spPtr = 0;
236
237 if (usingPower) {
238 if (!(dbH->flags & O2_FLAG_POWER)) {
239 error("database not power-enabled", dbName);
240 }
241 sPower = new double[dbVectors];
242 spPtr = sPower;
243 memcpy(sPower, powerTable, dbVectors * sizeof(double));
244 }
245
246 for(i=0; i<dbH->numFiles; i++){
247 if(trackTable[i]>=sequenceLength) {
248 sequence_sum(snPtr, trackTable[i], sequenceLength);
249 sequence_sqrt(snPtr, trackTable[i], sequenceLength);
250
251 if (usingPower) {
252 sequence_sum(spPtr, trackTable[i], sequenceLength);
253 sequence_average(spPtr, trackTable[i], sequenceLength);
254 }
255 }
256 snPtr += trackTable[i];
257 if (usingPower) {
258 spPtr += trackTable[i];
259 }
260 }
261
262 if(verbosity>1) {
263 std::cerr << "done." << std::endl;
264 }
265 263
266 if(verbosity>1) { 264 if(verbosity>1) {
267 std::cerr << "matching tracks..." << std::endl; 265 std::cerr << "matching tracks..." << std::endl;
268 } 266 }
269 267
278 276
279 double distances[pointNN]; 277 double distances[pointNN];
280 unsigned qIndexes[pointNN]; 278 unsigned qIndexes[pointNN];
281 unsigned sIndexes[pointNN]; 279 unsigned sIndexes[pointNN];
282 280
283 281 unsigned j,k,l,m,n,track,trackOffset=0, HOP_SIZE=sequenceHop, wL=sequenceLength;
284 unsigned k,l,m,n,track,trackOffset=0, HOP_SIZE=sequenceHop, wL=sequenceLength;
285 double thisDist; 282 double thisDist;
286 283
287 for(k=0; k<pointNN; k++){ 284 for(k=0; k<pointNN; k++){
288 distances[k]=1.0e6; 285 distances[k]=1.0e6;
289 qIndexes[k]=~0; 286 qIndexes[k]=~0;
596 set_up_query(&query, &qNorm, &qPower, &numVectors); 593 set_up_query(&query, &qNorm, &qPower, &numVectors);
597 query_data = query; 594 query_data = query;
598 qpPtr = qPower; 595 qpPtr = qPower;
599 qnPtr = qNorm; 596 qnPtr = qNorm;
600 597
601 unsigned dbVectors = dbH->length/(sizeof(double)*dbH->dim); 598 unsigned int dbVectors;
602 599 double *sNorm, *snPtr, *sPower = 0, *spPtr = 0;
603 double *sNorm = new double[dbVectors]; 600
604 601 set_up_db(&sNorm, &sPower, &dbVectors);
605 // Make norm measurements relative to sequenceLength 602 spPtr = sPower;
606 unsigned i,j; 603 snPtr = sNorm;
607
608 // Copy the L2 norm values to core to avoid disk random access later on
609 memcpy(sNorm, l2normTable, dbVectors*sizeof(double));
610 double* snPtr = sNorm;
611
612 double *sPower = 0, *spPtr = 0;
613
614 if (usingPower) {
615 if(!(dbH->flags & O2_FLAG_POWER)) {
616 error("database not power-enabled", dbName);
617 }
618 sPower = new double[dbVectors];
619 spPtr = sPower;
620 memcpy(sPower, powerTable, dbVectors * sizeof(double));
621 }
622
623 for(i=0; i<dbH->numFiles; i++){
624 if(trackTable[i]>=sequenceLength) {
625 sequence_sum(snPtr, trackTable[i], sequenceLength);
626 sequence_sqrt(snPtr, trackTable[i], sequenceLength);
627 if (usingPower) {
628 sequence_sum(spPtr, trackTable[i], sequenceLength);
629 sequence_average(spPtr, trackTable[i], sequenceLength);
630 }
631 }
632 snPtr += trackTable[i];
633 if (usingPower) {
634 spPtr += trackTable[i];
635 }
636 }
637
638 if(verbosity>1) {
639 std::cerr << "done." << std::endl;
640 }
641 604
642 if(verbosity>1) { 605 if(verbosity>1) {
643 std::cerr << "matching tracks..." << std::endl; 606 std::cerr << "matching tracks..." << std::endl;
644 } 607 }
645 608
654 617
655 double distances[pointNN]; 618 double distances[pointNN];
656 unsigned qIndexes[pointNN]; 619 unsigned qIndexes[pointNN];
657 unsigned sIndexes[pointNN]; 620 unsigned sIndexes[pointNN];
658 621
659 622 unsigned j,k,l,n,track,trackOffset=0;
660 unsigned k,l,n,track,trackOffset=0;
661 unsigned const HOP_SIZE=sequenceHop; 623 unsigned const HOP_SIZE=sequenceHop;
662 unsigned const wL=sequenceLength; 624 unsigned const wL=sequenceLength;
663 double thisDist; 625 double thisDist;
664 626
665 for(k=0; k<pointNN; k++){ 627 for(k=0; k<pointNN; k++){