From e72aac7191227870bf0d47a3b541268adab02472 Mon Sep 17 00:00:00 2001 From: Josh Klontz Date: Tue, 29 Jan 2013 16:54:21 -0500 Subject: [PATCH] tweaks --- sdk/core/core.cpp | 3 ++- sdk/core/plot.cpp | 9 +++++---- sdk/core/qtutils.cpp | 4 +++- sdk/openbr_plugin.cpp | 4 ++-- sdk/plugins/eigen3.cpp | 4 +--- sdk/plugins/misc.cpp | 9 ++++++++- 6 files changed, 21 insertions(+), 12 deletions(-) diff --git a/sdk/core/core.cpp b/sdk/core/core.cpp index b3a1940..bcd5e35 100644 --- a/sdk/core/core.cpp +++ b/sdk/core/core.cpp @@ -300,7 +300,8 @@ bool br::IsClassifier(const QString &algorithm) void br::Train(const QString &inputs, const File &model) { - qDebug("Training on %s to %s", qPrintable(inputs), qPrintable(model.flat())); + qDebug("Training on %s%s", qPrintable(inputs), + model.isNull() ? "" : qPrintable(" to " + model.flat())); AlgorithmManager::getAlgorithm(model.getString("algorithm"))->train(inputs, model); } diff --git a/sdk/core/plot.cpp b/sdk/core/plot.cpp index fffbe8c..404cc16 100644 --- a/sdk/core/plot.cpp +++ b/sdk/core/plot.cpp @@ -183,8 +183,9 @@ float Evaluate(const QString &simmat, const QString &mask, const QString &csv) } } - if (operatingPoints.size() <= 2) qFatal("Insufficent genuines or impostors."); - operatingPoints.takeLast(); // Remove point (1,1) + if (operatingPoints.size() == 0) operatingPoints.append(OperatingPoint(1, 1, 1)); + if (operatingPoints.size() == 1) operatingPoints.prepend(OperatingPoint(0, 0, 0)); + if (operatingPoints.size() > 2) operatingPoints.takeLast(); // Remove point (1,1) // Write Metadata table QStringList lines; @@ -405,8 +406,8 @@ struct RPlot } const QString &smooth = destination.getString("smooth", ""); - major.smooth = !smooth.isEmpty() && (major.header == smooth); - minor.smooth = !smooth.isEmpty() && (minor.header == smooth); + major.smooth = !smooth.isEmpty() && (major.header == smooth) && (major.size > 1); + minor.smooth = !smooth.isEmpty() && (minor.header == smooth) && (minor.size > 1); if (major.smooth) major.size = 1; if (minor.smooth) minor.size = 1; if (major.size < minor.size) diff --git a/sdk/core/qtutils.cpp b/sdk/core/qtutils.cpp index fe8367e..cf8ac6a 100644 --- a/sdk/core/qtutils.cpp +++ b/sdk/core/qtutils.cpp @@ -271,7 +271,9 @@ bool QtUtils::runRScript(const QString &file) RScript.start("Rscript", QStringList() << file); RScript.waitForFinished(-1); bool result = ((RScript.exitCode() == 0) && (RScript.error() == QProcess::UnknownError)); - if (!result) qDebug("Failed to run 'Rscript', did you forget to install R? See online documentation of 'br_plot' for required R packages."); + if (!result) qDebug("Failed to run 'Rscript', did you forget to install R? " + "See online documentation of 'br_plot' for required R packages. " + "Otherwise, try running Rscript on %s to get the exact error.", qPrintable(file)); return result; } diff --git a/sdk/openbr_plugin.cpp b/sdk/openbr_plugin.cpp index 667eec4..98fd78e 100644 --- a/sdk/openbr_plugin.cpp +++ b/sdk/openbr_plugin.cpp @@ -424,6 +424,7 @@ TemplateList TemplateList::fromInput(const br::File &input) QScopedPointer i(Gallery::make(file)); TemplateList newTemplates = i->read(); const int crossValidate = input.getInt("crossValidate"); + if (crossValidate > 0) srand(0); // If input is a Format not a Gallery if (newTemplates.isEmpty()) @@ -434,8 +435,7 @@ TemplateList TemplateList::fromInput(const br::File &input) newTemplates[i].file.append(input.localMetadata()); newTemplates[i].file.append(file.localMetadata()); newTemplates[i].file.insert("Input_Index", i+templates.size()); - if (crossValidate > 0) - newTemplates[i].file.insert("Cross_Validation_Partition", i*crossValidate/newTemplates.size()); + if (crossValidate > 0) newTemplates[i].file.insert("Cross_Validation_Partition", rand()%crossValidate); } if (!templates.isEmpty() && input.getBool("merge")) { diff --git a/sdk/plugins/eigen3.cpp b/sdk/plugins/eigen3.cpp index 09000c6..1f3e201 100644 --- a/sdk/plugins/eigen3.cpp +++ b/sdk/plugins/eigen3.cpp @@ -266,9 +266,7 @@ class LDATransform : public Transform void train(const TemplateList &_trainingSet) { - TemplateList trainingSet = _trainingSet; - trainingSet = TemplateList::relabel(trainingSet); - + TemplateList trainingSet = TemplateList::relabel(_trainingSet); int instances = trainingSet.size(); // Perform PCA dimensionality reduction diff --git a/sdk/plugins/misc.cpp b/sdk/plugins/misc.cpp index 986f0b2..cca0f2c 100644 --- a/sdk/plugins/misc.cpp +++ b/sdk/plugins/misc.cpp @@ -123,6 +123,11 @@ BR_REGISTER(Transform, PrintTransform) class CheckTransform : public UntrainableMetaTransform { Q_OBJECT + static int count; + int index; + + public: + CheckTransform() : index(count++) {} void project(const Template &src, Template &dst) const { @@ -134,11 +139,13 @@ class CheckTransform : public UntrainableMetaTransform const float *data = (const float*)fm.data; for (int i=0; i