diff --git a/Train3DMASCDialog.ui b/Train3DMASCDialog.ui
index 1283fe4..cbc8fa7 100644
--- a/Train3DMASCDialog.ui
+++ b/Train3DMASCDialog.ui
@@ -207,6 +207,9 @@
QAbstractItemView::NoSelection
+
+ true
+
170
diff --git a/q3DMASC.cpp b/q3DMASC.cpp
index f8048e5..e7d369d 100644
--- a/q3DMASC.cpp
+++ b/q3DMASC.cpp
@@ -546,6 +546,8 @@ void q3DMASCPlugin::doTrainAction()
}
trainDlg.setFeatureImportance(i, originalFeatures[i].importance);
}
+
+ trainDlg.sortByFeatureImportance();
}
}
diff --git a/q3DMASCTools.cpp b/q3DMASCTools.cpp
index cc027dd..874c9e1 100644
--- a/q3DMASCTools.cpp
+++ b/q3DMASCTools.cpp
@@ -155,7 +155,7 @@ bool Tools::LoadClassifierCloudLabels(QString filename, QSet& labels, Q
return true;
}
-static bool CreateFeaturesFromCommand(const QString& command, int lineNumber, const Tools::NamedClouds& clouds, std::vector& rawFeatures, std::vector& scales)
+static bool CreateFeaturesFromCommand(const QString& command, QString corePointsRole, int lineNumber, const Tools::NamedClouds& clouds, std::vector& rawFeatures, std::vector& scales)
{
QStringList tokens = command.split('_');
if (tokens.empty())
@@ -771,7 +771,7 @@ static bool LoadFileCommon( const QString& filename,
{
QString command = line.mid(8);
- if (!CreateFeaturesFromCommand(command, lineNumber, clouds, rawFeatures, scales))
+ if (!CreateFeaturesFromCommand(command, corePoints ? corePoints->role : QString(), lineNumber, clouds, rawFeatures, scales))
{
//error message already issued
//return false;
diff --git a/qTrain3DMASCDialog.cpp b/qTrain3DMASCDialog.cpp
index e88da40..797794c 100644
--- a/qTrain3DMASCDialog.cpp
+++ b/qTrain3DMASCDialog.cpp
@@ -24,6 +24,8 @@
//System
#include
+static const int FeatureImportanceColumn = 1;
+
Train3DMASCDialog::Train3DMASCDialog(QWidget* parent/*=nullptr*/)
: QDialog(parent)
, Ui::Train3DMASCDialog()
@@ -79,6 +81,11 @@ bool Train3DMASCDialog::isFeatureSelected(size_t index) const
return (tableWidget->item(static_cast(index), 0)->checkState() == Qt::Checked);
}
+void Train3DMASCDialog::sortByFeatureImportance()
+{
+ tableWidget->sortByColumn(FeatureImportanceColumn, Qt::AscendingOrder);
+}
+
void Train3DMASCDialog::setFeatureImportance(size_t index, float importance)
{
if (static_cast(index) >= tableWidget->rowCount())
@@ -89,11 +96,11 @@ void Train3DMASCDialog::setFeatureImportance(size_t index, float importance)
if (!std::isnan(importance))
{
- tableWidget->item(static_cast(index), 1)->setText(QString::number(importance));
+ tableWidget->item(static_cast(index), FeatureImportanceColumn)->setText(QString::number(importance));
}
else
{
- tableWidget->item(static_cast(index), 1)->setText(QString());
+ tableWidget->item(static_cast(index), FeatureImportanceColumn)->setText(QString());
}
}
diff --git a/qTrain3DMASCDialog.h b/qTrain3DMASCDialog.h
index ca7e105..75554a1 100644
--- a/qTrain3DMASCDialog.h
+++ b/qTrain3DMASCDialog.h
@@ -45,6 +45,7 @@ public:
bool isFeatureSelected(size_t index) const;
void setFeatureImportance(size_t index, float importance);
+ void sortByFeatureImportance();
inline bool shouldSaveClassifier() const { return saveRequested; }