Mercurial > hg > audiodb
comparison audioDB.cpp @ 768:b9dbe4611dde
Adding Kullback-Leibler divergence as alternate distance function
author | mas01mc |
---|---|
date | Sat, 15 Oct 2011 17:28:07 +0000 |
parents | 6d0d41604aba |
children |
comparison
equal
deleted
inserted
replaced
767:6d0d41604aba | 768:b9dbe4611dde |
---|---|
445 } | 445 } |
446 return 0; | 446 return 0; |
447 } | 447 } |
448 | 448 |
449 // Set no_unit_norm flag | 449 // Set no_unit_norm flag |
450 distance_kullback = args_info.distance_kullback_flag; | |
450 no_unit_norming = args_info.no_unit_norming_flag; | 451 no_unit_norming = args_info.no_unit_norming_flag; |
451 lsh_use_u_functions = args_info.lsh_use_u_functions_flag; | 452 lsh_use_u_functions = args_info.lsh_use_u_functions_flag; |
452 | 453 |
453 // LSH Index Command | 454 // LSH Index Command |
454 if(args_info.INDEX_given){ | 455 if(args_info.INDEX_given){ |
917 reporter = new trackAveragingReporter< std::greater< NNresult > >(pointNN, trackNN, nfiles); | 918 reporter = new trackAveragingReporter< std::greater< NNresult > >(pointNN, trackNN, nfiles); |
918 break; | 919 break; |
919 case O2_SEQUENCE_QUERY: | 920 case O2_SEQUENCE_QUERY: |
920 case O2_N_SEQUENCE_QUERY: | 921 case O2_N_SEQUENCE_QUERY: |
921 qspec.params.accumulation = ADB_ACCUMULATION_PER_TRACK; | 922 qspec.params.accumulation = ADB_ACCUMULATION_PER_TRACK; |
922 qspec.params.distance = no_unit_norming ? ADB_DISTANCE_EUCLIDEAN : ADB_DISTANCE_EUCLIDEAN_NORMED; | 923 if (distance_kullback) |
924 qspec.params.distance = ADB_DISTANCE_KULLBACK_LEIBLER_DIVERGENCE; | |
925 else | |
926 qspec.params.distance = no_unit_norming ? ADB_DISTANCE_EUCLIDEAN : ADB_DISTANCE_EUCLIDEAN_NORMED; | |
923 qspec.params.npoints = pointNN; | 927 qspec.params.npoints = pointNN; |
924 qspec.params.ntracks = trackNN; | 928 qspec.params.ntracks = trackNN; |
925 switch(queryType) { | 929 switch(queryType) { |
926 case O2_SEQUENCE_QUERY: | 930 case O2_SEQUENCE_QUERY: |
927 if(!(qspec.refine.flags & ADB_REFINE_RADIUS)) { | 931 if(!(qspec.refine.flags & ADB_REFINE_RADIUS)) { |
939 break; | 943 break; |
940 } | 944 } |
941 break; | 945 break; |
942 case O2_ONE_TO_ONE_N_SEQUENCE_QUERY: | 946 case O2_ONE_TO_ONE_N_SEQUENCE_QUERY: |
943 qspec.params.accumulation = ADB_ACCUMULATION_ONE_TO_ONE; | 947 qspec.params.accumulation = ADB_ACCUMULATION_ONE_TO_ONE; |
944 qspec.params.distance = no_unit_norming ? ADB_DISTANCE_EUCLIDEAN : ADB_DISTANCE_EUCLIDEAN_NORMED; | 948 if (distance_kullback) |
949 qspec.params.distance = ADB_DISTANCE_KULLBACK_LEIBLER_DIVERGENCE; | |
950 else | |
951 qspec.params.distance = no_unit_norming ? ADB_DISTANCE_EUCLIDEAN : ADB_DISTANCE_EUCLIDEAN_NORMED; | |
945 qspec.params.npoints = 0; | 952 qspec.params.npoints = 0; |
946 qspec.params.ntracks = 0; | 953 qspec.params.ntracks = 0; |
947 if(!(qspec.refine.flags & ADB_REFINE_RADIUS)) { | 954 if(!(qspec.refine.flags & ADB_REFINE_RADIUS)) { |
948 error("query-type not yet supported"); | 955 error("query-type not yet supported"); |
949 } else { | 956 } else { |
1094 spec.qid.datum = NULL; /* full db sample */ | 1101 spec.qid.datum = NULL; /* full db sample */ |
1095 } | 1102 } |
1096 spec.qid.sequence_length = sequenceLength; | 1103 spec.qid.sequence_length = sequenceLength; |
1097 spec.qid.flags |= usingQueryPoint ? 0 : ADB_QID_FLAG_EXHAUSTIVE; | 1104 spec.qid.flags |= usingQueryPoint ? 0 : ADB_QID_FLAG_EXHAUSTIVE; |
1098 spec.qid.sequence_start = queryPoint; | 1105 spec.qid.sequence_start = queryPoint; |
1099 | 1106 if (distance_kullback) |
1100 spec.params.distance = no_unit_norming ? ADB_DISTANCE_EUCLIDEAN : ADB_DISTANCE_EUCLIDEAN_NORMED; | 1107 spec.params.distance = ADB_DISTANCE_KULLBACK_LEIBLER_DIVERGENCE; |
1108 else | |
1109 spec.params.distance = no_unit_norming ? ADB_DISTANCE_EUCLIDEAN : ADB_DISTANCE_EUCLIDEAN_NORMED; | |
1101 spec.params.accumulation = ADB_ACCUMULATION_DB; | 1110 spec.params.accumulation = ADB_ACCUMULATION_DB; |
1102 spec.params.npoints = nsamples; | 1111 spec.params.npoints = nsamples; |
1103 | 1112 |
1104 if(!(results = audiodb_sample_spec(adb, &spec))) { | 1113 if(!(results = audiodb_sample_spec(adb, &spec))) { |
1105 error("error in audiodb_sample_spec"); | 1114 error("error in audiodb_sample_spec"); |