@@ -44,10 +44,13 @@ Last modification : April 20 2017
4444#include < Core/Datatypes/DenseColumnMatrix.h>
4545#include < Core/Datatypes/SparseRowMatrix.h>
4646#include < Core/Datatypes/MatrixTypeConversions.h>
47+ #include < Core/Math/MiscMath.h>
4748
4849// SCIRun structural
4950#include < Core/Algorithms/Base/AlgorithmPreconditions.h>
51+ #include < Core/Algorithms/Base/AlgorithmVariableNames.h>
5052#include < Core/Logging/LoggerInterface.h>
53+ #include < Core/Logging/Log.h>
5154#include < Core/Utils/Exception.h>
5255
5356using namespace SCIRun ;
@@ -66,20 +69,6 @@ const AlgorithmOutputName TikhonovAlgoAbstractBase::InverseSolution("InverseSolu
6669const AlgorithmOutputName TikhonovAlgoAbstractBase::RegularizationParameter (" RegularizationParameter" );
6770const AlgorithmOutputName TikhonovAlgoAbstractBase::RegInverse (" RegInverse" );
6871
69- // const AlgorithmParameterName TikhonovAlgoAbstractBase::TikhonovImplementation("TikhonovImplementationOption");
70- // const AlgorithmParameterName TikhonovAlgoAbstractBase::RegularizationMethod("lambdaMethodComboBox");
71- // const AlgorithmParameterName TikhonovAlgoAbstractBase::regularizationChoice("regularizationChoice");
72- // const AlgorithmParameterName TikhonovAlgoAbstractBase::LambdaFromDirectEntry("lambdaDoubleSpinBox");
73- // const AlgorithmParameterName TikhonovAlgoAbstractBase::LambdaMin("lambdaMinDoubleSpinBox");
74- // const AlgorithmParameterName TikhonovAlgoAbstractBase::LambdaMax("lambdaMaxDoubleSpinBox");
75- // const AlgorithmParameterName TikhonovAlgoAbstractBase::LambdaNum("lambdaNumberSpinBox");
76- // const AlgorithmParameterName TikhonovAlgoAbstractBase::LambdaResolution("lambdaResolutionDoubleSpinBox");
77- // const AlgorithmParameterName TikhonovAlgoAbstractBase::LambdaSliderValue("lambdaSliderDoubleSpinBox");
78- // const AlgorithmParameterName TikhonovAlgoAbstractBase::LambdaCorner("lCurveLambdaLineEdit");
79- // const AlgorithmParameterName TikhonovAlgoAbstractBase::LCurveText("lCurveTextEdit");
80- // const AlgorithmParameterName TikhonovAlgoAbstractBase::regularizationSolutionSubcase("solutionConstraintRadioButton");
81- // const AlgorithmParameterName TikhonovAlgoAbstractBase::regularizationResidualSubcase("residualConstraintRadioButton");
82-
8372ALGORITHM_PARAMETER_DEF ( Inverse, TikhonovImplementation);
8473ALGORITHM_PARAMETER_DEF ( Inverse, RegularizationMethod);
8574ALGORITHM_PARAMETER_DEF ( Inverse, regularizationChoice);
@@ -96,10 +85,12 @@ ALGORITHM_PARAMETER_DEF( Inverse, regularizationResidualSubcase);
9685
9786TikhonovAlgoAbstractBase::TikhonovAlgoAbstractBase ()
9887{
99- addParameter (Parameters::TikhonovImplementation, " NoMethodSelected" );
100- addParameter (Parameters::RegularizationMethod, " lcurve" );
101- addParameter (Parameters::regularizationChoice, " automatic" );
102- addParameter (Parameters::LambdaFromDirectEntry,1e-6 );
88+ using namespace Parameters ;
89+
90+ addParameter (TikhonovImplementation, " NoMethodSelected" );
91+ addOption (RegularizationMethod, " lcurve" , " single|slider|lcurve" );
92+ addParameter (regularizationChoice, 0 );
93+ addParameter (LambdaFromDirectEntry,1e-6 );
10394 // addParameter(lambdaDoubleSpinBox,1e-6);
10495 addParameter (Parameters::LambdaMin,1e-6 );
10596 addParameter (Parameters::LambdaMax,1 );
@@ -198,15 +189,14 @@ bool TikhonovAlgoAbstractBase::checkInputMatrixSizes( const AlgorithmInput & inp
198189// /////// run()
199190AlgorithmOutput TikhonovAlgoAbstractBase::run (const AlgorithmInput & input) const
200191{
201- THROW_ALGORITHM_PROCESSING_ERROR (" We got to run" );
202192 // get inputs
203193 auto forwardMatrix_ = input.get <Matrix>(TikhonovAlgoAbstractBase::ForwardMatrix);
204194 auto measuredData_ = input.get <Matrix>(TikhonovAlgoAbstractBase::MeasuredPotentials);
205195 auto sourceWeighting_ = input.get <Matrix>(TikhonovAlgoAbstractBase::WeightingInSourceSpace);
206196 auto sensorWeighting_ = input.get <Matrix>(TikhonovAlgoAbstractBase::WeightingInSensorSpace);
207197
208198 // get Parameters
209- auto RegularizationMethod_gotten = get (Parameters::RegularizationMethod). toString ( );
199+ auto RegularizationMethod_gotten = getOption (Parameters::RegularizationMethod);
210200 auto TikhonovImplementation_gotten = get (Parameters::TikhonovImplementation).toString ();
211201
212202 // Alocate Variable
@@ -219,18 +209,19 @@ AlgorithmOutput TikhonovAlgoAbstractBase::run(const AlgorithmInput & input) cons
219209
220210 // Determine specific Tikhonov Implementation
221211 TikhonovImpl *algoImpl;
222- if ( get (Parameters::RegularizationMethod).toInt () == standardTikhonov ){
212+ std::cout << " Selecting Tikhonov: " << TikhonovImplementation_gotten << std::endl;
213+ if ( TikhonovImplementation_gotten == " standardTikhonov" ){
223214 // get Parameters
224215 int regularizationChoice_ = get (Parameters::regularizationChoice).toInt ();
225216 int regularizationSolutionSubcase_ = get (Parameters::regularizationSolutionSubcase).toInt ();
226217 int regularizationResidualSubcase_ = get (Parameters::regularizationResidualSubcase).toInt ();
227218
228219 algoImpl = new SolveInverseProblemWithStandardTikhonovImpl ( *castMatrix::toDense (forwardMatrix_), *castMatrix::toDense (measuredData_), *castMatrix::toDense (sourceWeighting_), *castMatrix::toDense (sensorWeighting_), regularizationChoice_, regularizationSolutionSubcase_, regularizationResidualSubcase_);
229220 }
230- else if ( get (Parameters::RegularizationMethod). toInt () == TikhonovSVD ){
221+ else if ( TikhonovImplementation_gotten == " TikhonovSVD" ){
231222 // algoImpl = new SolveInverseProblemWithTikhonovSVD_impl( *castMatrix::toDense(forwardMatrix_), *castMatrix::toDense(measuredData_), *castMatrix::toDense(sourceWeighting_), *castMatrix::toDense(sensorWeighting_));
232223 }
233- else if ( get (Parameters::RegularizationMethod). toInt () == TikhonovTSVD ){
224+ else if ( TikhonovImplementation_gotten == " TikhonovTSVD" ){
234225 THROW_ALGORITHM_PROCESSING_ERROR (" Tikhonov TSVD not implemented yet" );
235226 }
236227 else {
0 commit comments