Commit bb9702d2ba28c5dbc43dfe1c1122ed9a97377f02

Authored by Josh Klontz
1 parent 7873c508

implemented gallery concatenation. fixed #4

app/br/br.cpp
@@ -51,7 +51,8 @@ static void help() @@ -51,7 +51,8 @@ static void help()
51 "-cluster <simmat> ... <simmat> <aggressiveness> {csv}\n" 51 "-cluster <simmat> ... <simmat> <aggressiveness> {csv}\n"
52 "-makeMask <target_gallery> <query_gallery> {mask}\n" 52 "-makeMask <target_gallery> <query_gallery> {mask}\n"
53 "-combineMasks <mask> ... <mask> {mask} (And|Or)\n" 53 "-combineMasks <mask> ... <mask> {mask} (And|Or)\n"
54 - "-convert <(csv,simmat,mask)> {(csv,simmat,mask)}\n" 54 + "-cat <gallery> ... <gallery> {gallery}\n"
  55 + "-convert <template> {template}\n"
55 "-reformat <target_sigset> <query_sigset> <simmat> {output}\n" 56 "-reformat <target_sigset> <query_sigset> <simmat> {output}\n"
56 "-evalClassification <predicted_gallery> <truth_gallery>\n" 57 "-evalClassification <predicted_gallery> <truth_gallery>\n"
57 "-evalRegression <predicted_gallery> <truth_gallery>\n" 58 "-evalRegression <predicted_gallery> <truth_gallery>\n"
@@ -141,6 +142,9 @@ int main(int argc, char *argv[]) @@ -141,6 +142,9 @@ int main(int argc, char *argv[])
141 } else if (!strcmp(fun, "combineMasks")) { 142 } else if (!strcmp(fun, "combineMasks")) {
142 check(parc >= 4, "Insufficient parameter count for 'combineMasks'."); 143 check(parc >= 4, "Insufficient parameter count for 'combineMasks'.");
143 br_combine_masks(parc-2, parv, parv[parc-2], parv[parc-1]); 144 br_combine_masks(parc-2, parv, parv[parc-2], parv[parc-1]);
  145 + } else if (!strcmp(fun, "cat")) {
  146 + check(parc >= 2, "Insufficient parameter count for 'cat'.");
  147 + br_cat(parc-1, parv, parv[parc-1]);
144 } else if (!strcmp(fun, "convert")) { 148 } else if (!strcmp(fun, "convert")) {
145 check(parc == 2, "Incorrect parameter count for 'convert'."); 149 check(parc == 2, "Incorrect parameter count for 'convert'.");
146 br_convert(parv[0], parv[1]); 150 br_convert(parv[0], parv[1]);
sdk/core/core.cpp
@@ -315,11 +315,26 @@ void br::Compare(const File &amp;targetGallery, const File &amp;queryGallery, const File @@ -315,11 +315,26 @@ void br::Compare(const File &amp;targetGallery, const File &amp;queryGallery, const File
315 315
316 void br::Convert(const File &src, const File &dst) 316 void br::Convert(const File &src, const File &dst)
317 { 317 {
  318 + qDebug("Converting %s to %s", qPrintable(src.flat()), qPrintable(dst.flat()));
318 QScopedPointer<Format> before(Factory<Format>::make(src)); 319 QScopedPointer<Format> before(Factory<Format>::make(src));
319 QScopedPointer<Format> after(Factory<Format>::make(dst)); 320 QScopedPointer<Format> after(Factory<Format>::make(dst));
320 after->write(before->read()); 321 after->write(before->read());
321 } 322 }
322 323
  324 +void br::Cat(const QStringList &inputGalleries, const QString &outputGallery)
  325 +{
  326 + qDebug("Concatenating %d galleries to %s", inputGalleries.size(), qPrintable(outputGallery));
  327 + foreach (const QString &inputGallery, inputGalleries)
  328 + if (inputGallery == outputGallery)
  329 + qFatal("br::Cat outputGallery must not be in inputGalleries.");
  330 + QScopedPointer<Gallery> og(Gallery::make(outputGallery));
  331 + foreach (const QString &inputGallery, inputGalleries) {
  332 + QScopedPointer<Gallery> ig(Gallery::make(inputGallery));
  333 + bool done = false;
  334 + while (!done) og->writeBlock(ig->readBlock(&done));
  335 + }
  336 +}
  337 +
323 QSharedPointer<br::Transform> br::Transform::fromAlgorithm(const QString &algorithm) 338 QSharedPointer<br::Transform> br::Transform::fromAlgorithm(const QString &algorithm)
324 { 339 {
325 return AlgorithmManager::getAlgorithm(algorithm)->transform; 340 return AlgorithmManager::getAlgorithm(algorithm)->transform;
sdk/openbr.cpp
@@ -31,6 +31,11 @@ const char *br_about() @@ -31,6 +31,11 @@ const char *br_about()
31 return about.data(); 31 return about.data();
32 } 32 }
33 33
  34 +void br_cat(int num_input_galleries, const char *input_galleries[], const char *output_gallery)
  35 +{
  36 + Cat(QtUtils::toStringList(num_input_galleries, input_galleries), output_gallery);
  37 +}
  38 +
34 void br_cluster(int num_simmats, const char *simmats[], float aggressiveness, const char *csv) 39 void br_cluster(int num_simmats, const char *simmats[], float aggressiveness, const char *csv)
35 { 40 {
36 ClusterGallery(QtUtils::toStringList(num_simmats, simmats), aggressiveness, csv); 41 ClusterGallery(QtUtils::toStringList(num_simmats, simmats), aggressiveness, csv);
sdk/openbr.h
@@ -73,6 +73,11 @@ extern &quot;C&quot; { @@ -73,6 +73,11 @@ extern &quot;C&quot; {
73 BR_EXPORT const char *br_about(); 73 BR_EXPORT const char *br_about();
74 74
75 /*! 75 /*!
  76 + * \brief Wraps br::Cat()
  77 + */
  78 +BR_EXPORT void br_cat(int num_input_galleries, const char *input_galleries[], const char *output_gallery);
  79 +
  80 +/*!
76 * \brief Clusters one or more similarity matrices into a list of subjects. 81 * \brief Clusters one or more similarity matrices into a list of subjects.
77 * 82 *
78 * A similarity matrix is a type of br::Output. The current clustering algorithm is a simplified implementation of \cite zhu11. 83 * A similarity matrix is a type of br::Output. The current clustering algorithm is a simplified implementation of \cite zhu11.
sdk/openbr_plugin.h
@@ -1098,6 +1098,14 @@ BR_EXPORT void Compare(const File &amp;targetGallery, const File &amp;queryGallery, cons @@ -1098,6 +1098,14 @@ BR_EXPORT void Compare(const File &amp;targetGallery, const File &amp;queryGallery, cons
1098 */ 1098 */
1099 BR_EXPORT void Convert(const File &input, const File &output); 1099 BR_EXPORT void Convert(const File &input, const File &output);
1100 1100
  1101 +/*!
  1102 + * \brief Concatenate several galleries into one.
  1103 + * \param inputGalleries List of galleries to concatenate.
  1104 + * \param outputGallery Gallery to store the concatenated result.
  1105 + * \note outputGallery must not be in inputGalleries.
  1106 + */
  1107 +BR_EXPORT void Cat(const QStringList &inputGalleries, const QString &outputGallery);
  1108 +
1101 /*! @}*/ 1109 /*! @}*/
1102 1110
1103 } // namespace br 1111 } // namespace br
sdk/plugins/regions.cpp
@@ -76,7 +76,7 @@ BR_REGISTER(Transform, ByRow) @@ -76,7 +76,7 @@ BR_REGISTER(Transform, ByRow)
76 * No requirements are placed on input matrices size and type. 76 * No requirements are placed on input matrices size and type.
77 * \author Josh Klontz \cite jklontz 77 * \author Josh Klontz \cite jklontz
78 */ 78 */
79 -class Cat : public UntrainableMetaTransform 79 +class CatTransform : public UntrainableMetaTransform
80 { 80 {
81 Q_OBJECT 81 Q_OBJECT
82 Q_PROPERTY(int partitions READ get_partitions WRITE set_partitions RESET reset_partitions) 82 Q_PROPERTY(int partitions READ get_partitions WRITE set_partitions RESET reset_partitions)
@@ -105,7 +105,7 @@ class Cat : public UntrainableMetaTransform @@ -105,7 +105,7 @@ class Cat : public UntrainableMetaTransform
105 } 105 }
106 }; 106 };
107 107
108 -BR_REGISTER(Transform, Cat) 108 +BR_REGISTER(Transform, CatTransform)
109 109
110 /*! 110 /*!
111 * \ingroup transforms 111 * \ingroup transforms