Commit 8f693acfabc33c369e600f2dee199c8549e42440

Authored by Josh Klontz
1 parent a9423b01

remove tail

Showing 1 changed file with 0 additions and 115 deletions
openbr/plugins/output/tail.cpp deleted
1 -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
2 - * Copyright 2012 The MITRE Corporation *  
3 - * *  
4 - * Licensed under the Apache License, Version 2.0 (the "License"); *  
5 - * you may not use this file except in compliance with the License. *  
6 - * You may obtain a copy of the License at *  
7 - * *  
8 - * http://www.apache.org/licenses/LICENSE-2.0 *  
9 - * *  
10 - * Unless required by applicable law or agreed to in writing, software *  
11 - * distributed under the License is distributed on an "AS IS" BASIS, *  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *  
13 - * See the License for the specific language governing permissions and *  
14 - * limitations under the License. *  
15 - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */  
16 -#include <openbr/plugins/openbr_internal.h>  
17 -  
18 -#include <openbr/core/qtutils.h>  
19 -  
20 -namespace br  
21 -{  
22 -  
23 -/*!  
24 - * \ingroup outputs  
25 - * \brief The highest scoring matches.  
26 - * \author Josh Klontz \cite jklontz  
27 - */  
28 -class tailOutput : public Output  
29 -{  
30 - Q_OBJECT  
31 -  
32 - struct Comparison  
33 - {  
34 - br::File query, target;  
35 - float value;  
36 -  
37 - Comparison(const br::File &_query, const br::File &_target, float _value)  
38 - : query(_query), target(_target), value(_value) {}  
39 -  
40 - QString toString(bool args) const  
41 - {  
42 - return QString::number(value) + "," + (args ? target.flat() : (QString)target) + "," + (args ? query.flat() : (QString)query);  
43 - }  
44 -  
45 - bool operator<(const Comparison &other) const  
46 - {  
47 - return value < other.value;  
48 - }  
49 - };  
50 -  
51 - float threshold;  
52 - int atLeast, atMost;  
53 - bool args;  
54 - float lastValue;  
55 - QList<Comparison> comparisons;  
56 - QMutex comparisonsLock;  
57 -  
58 - ~tailOutput()  
59 - {  
60 - if (file.isNull() || comparisons.isEmpty()) return;  
61 - QStringList lines; lines.reserve(comparisons.size()+1);  
62 - lines.append("Value,Target,Query");  
63 - foreach (const Comparison &duplicate, comparisons)  
64 - lines.append(duplicate.toString(args));  
65 - QtUtils::writeFile(file, lines);  
66 - }  
67 -  
68 - void initialize(const FileList &targetFiles, const FileList &queryFiles)  
69 - {  
70 - Output::initialize(targetFiles, queryFiles);  
71 - threshold = file.get<float>("threshold", -std::numeric_limits<float>::max());  
72 - atLeast = file.get<int>("atLeast", 1);  
73 - atMost = file.get<int>("atMost", std::numeric_limits<int>::max());  
74 - args = file.get<bool>("args", false);  
75 - lastValue = -std::numeric_limits<float>::max();  
76 - }  
77 -  
78 - void set(float value, int i, int j)  
79 - {  
80 - // Return early for self similar matrices  
81 - if (selfSimilar && (i <= j)) return;  
82 -  
83 - // Consider only values passing the criteria  
84 - if ((value < threshold) && (value <= lastValue) && (comparisons.size() >= atLeast))  
85 - return;  
86 -  
87 - comparisonsLock.lock();  
88 - if (comparisons.isEmpty() || (value < comparisons.last().value)) {  
89 - // Special cases  
90 - comparisons.append(Comparison(queryFiles[i], targetFiles[j], value));  
91 - } else {  
92 - // General case  
93 - for (int k=0; k<comparisons.size(); k++) {  
94 - if (comparisons[k].value <= value) {  
95 - comparisons.insert(k, Comparison(queryFiles[i], targetFiles[j], value));  
96 - break;  
97 - }  
98 - }  
99 - }  
100 -  
101 - while (comparisons.size() > atMost)  
102 - comparisons.removeLast();  
103 - while ((comparisons.size() > atLeast) && (comparisons.last().value < threshold))  
104 - comparisons.removeLast();  
105 -  
106 - lastValue = comparisons.last().value;  
107 - comparisonsLock.unlock();  
108 - }  
109 -};  
110 -  
111 -BR_REGISTER(Output, tailOutput)  
112 -  
113 -} // namespace br  
114 -  
115 -#include "output/tail.moc"