Skip to content

Commit 51c8518

Browse files
committed
selecting composition in tikhonov abstract class with module parameters
1 parent 144a32c commit 51c8518

File tree

4 files changed

+35
-6
lines changed

4 files changed

+35
-6
lines changed

src/Core/Algorithms/Legacy/Inverse/TikhonovAlgoAbstractBase.cc

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ Last modification : April 20 2017
3636
#include <Core/Algorithms/Legacy/Inverse/TikhonovAlgoAbstractBase.h>
3737
#include <Core/Algorithms/Legacy/Inverse/TikhonovImpl.h>
3838
#include <Core/Algorithms/Legacy/Inverse/SolveInverseProblemWithStandardTikhonovImpl.h>
39-
#include <Core/Algorithms/Legacy/Inverse/SolveInverseProblemWithTikhonovSVD_impl.h>
39+
// #include <Core/Algorithms/Legacy/Inverse/SolveInverseProblemWithTikhonovSVD_impl.h>
4040

4141
// Datatypes
4242
#include <Core/Datatypes/Matrix.h>
@@ -66,7 +66,7 @@ const AlgorithmOutputName TikhonovAlgoAbstractBase::InverseSolution("InverseSolu
6666
const AlgorithmOutputName TikhonovAlgoAbstractBase::RegularizationParameter("RegularizationParameter");
6767
const AlgorithmOutputName TikhonovAlgoAbstractBase::RegInverse("RegInverse");
6868

69-
const AlgorithmParameterName TikhonovAlgoAbstractBase::TikhonovImplementation("NoMethodSelected");
69+
const AlgorithmParameterName TikhonovAlgoAbstractBase::TikhonovImplementation("TikhonovImplementationOption");
7070
const AlgorithmParameterName TikhonovAlgoAbstractBase::RegularizationMethod("lambdaMethodComboBox");
7171
const AlgorithmParameterName TikhonovAlgoAbstractBase::regularizationChoice("autoRadioButton");
7272
const AlgorithmParameterName TikhonovAlgoAbstractBase::LambdaFromDirectEntry("lambdaDoubleSpinBox");
@@ -95,6 +95,7 @@ const AlgorithmParameterName TikhonovAlgoAbstractBase::regularizationResidualSub
9595

9696
TikhonovAlgoAbstractBase::TikhonovAlgoAbstractBase()
9797
{
98+
addParameter(TikhonovImplementation, NoMethodSelected);
9899
addParameter(RegularizationMethod, "lcurve");
99100
addParameter(regularizationChoice, 0);
100101
addParameter(LambdaFromDirectEntry,1e-6);
@@ -216,18 +217,18 @@ AlgorithmOutput TikhonovAlgoAbstractBase::run(const AlgorithmInput & input) cons
216217

217218
// Determine specific Tikhonov Implementation
218219
TikhonovImpl *algoImpl;
219-
if ( TikhonovImplementation_gotten == "standardTikhonov"){
220+
if ( get(RegularizationMethod).toInt() == standardTikhonov ){
220221
// get Parameters
221222
int regularizationChoice_ = get(regularizationChoice).toInt();
222223
int regularizationSolutionSubcase_ = get(regularizationSolutionSubcase).toInt();
223224
int regularizationResidualSubcase_ = get(regularizationResidualSubcase).toInt();
224225

225226
algoImpl = new SolveInverseProblemWithStandardTikhonovImpl( *castMatrix::toDense(forwardMatrix_), *castMatrix::toDense(measuredData_), *castMatrix::toDense(sourceWeighting_), *castMatrix::toDense(sensorWeighting_), regularizationChoice_, regularizationSolutionSubcase_, regularizationResidualSubcase_);
226227
}
227-
else if ( TikhonovImplementation_gotten == "TikhonovSVD"){
228-
algoImpl = new SolveInverseProblemWithTikhonovSVD_impl( *castMatrix::toDense(forwardMatrix_), *castMatrix::toDense(measuredData_), *castMatrix::toDense(sourceWeighting_), *castMatrix::toDense(sensorWeighting_));
228+
else if ( get(RegularizationMethod).toInt() == TikhonovSVD ){
229+
// algoImpl = new SolveInverseProblemWithTikhonovSVD_impl( *castMatrix::toDense(forwardMatrix_), *castMatrix::toDense(measuredData_), *castMatrix::toDense(sourceWeighting_), *castMatrix::toDense(sensorWeighting_));
229230
}
230-
else if ( TikhonovImplementation_gotten == "TikhonovTSVD" ){
231+
else if ( get(RegularizationMethod).toInt() == TikhonovTSVD ){
231232
THROW_ALGORITHM_PROCESSING_ERROR("Tikhonov TSVD not implemented yet");
232233
}
233234
else{

src/Core/Algorithms/Legacy/Inverse/TikhonovAlgoAbstractBase.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,12 @@ namespace Inverse {
8484
static const AlgorithmParameterName LCurveText;
8585

8686
// Define algorithm choices
87+
enum TikhonovImplementationChoice {
88+
NoMethodSelected,
89+
standardTikhonov,
90+
TikhonovSVD,
91+
TikhonovTSVD
92+
};
8793
enum AlgorithmChoice {
8894
automatic,
8995
underdetermined,

src/Modules/Legacy/Inverse/SolveInverseProblemWithTikhonov.cc

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,17 @@ SolveInverseProblemWithTikhonov::SolveInverseProblemWithTikhonov() : Module(stat
6161

6262
void SolveInverseProblemWithTikhonov::setStateDefaults()
6363
{
64+
// setStateIntFromAlgo(TikhonovAlgoAbstractBase::TikhonovImplementation);
65+
setStateIntFromAlgo(TikhonovAlgoAbstractBase::RegularizationMethod);
6466
setStateIntFromAlgo(TikhonovAlgoAbstractBase::regularizationChoice);
67+
setStateIntFromAlgo(TikhonovAlgoAbstractBase::LambdaFromDirectEntry);
68+
setStateIntFromAlgo(TikhonovAlgoAbstractBase::LambdaMin);
69+
setStateIntFromAlgo(TikhonovAlgoAbstractBase::LambdaMax);
70+
setStateIntFromAlgo(TikhonovAlgoAbstractBase::LambdaNum);
71+
setStateIntFromAlgo(TikhonovAlgoAbstractBase::LambdaResolution);
72+
setStateIntFromAlgo(TikhonovAlgoAbstractBase::LambdaSliderValue);
73+
setStateIntFromAlgo(TikhonovAlgoAbstractBase::LambdaCorner);
74+
setStateIntFromAlgo(TikhonovAlgoAbstractBase::LCurveText);
6575
setStateIntFromAlgo(TikhonovAlgoAbstractBase::regularizationSolutionSubcase);
6676
setStateIntFromAlgo(TikhonovAlgoAbstractBase::regularizationResidualSubcase);
6777
}
@@ -81,6 +91,7 @@ void SolveInverseProblemWithTikhonov::execute()
8191

8292
if (needToExecute())
8393
{
94+
8495
// set parameters
8596
algo().setOption( TikhonovAlgoAbstractBase::TikhonovImplementation, "standardTikhonov" );
8697
algo().setOption(TikhonovAlgoAbstractBase::regularizationChoice, get_state()->getValue(TikhonovAlgoAbstractBase::regularizationChoice).toString());

src/Modules/Legacy/Inverse/SolveInverseProblemWithTikhonovSVD.cc

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,18 @@ SolveInverseProblemWithTikhonovSVD::SolveInverseProblemWithTikhonovSVD() : Modul
6464

6565
void SolveInverseProblemWithTikhonovSVD::setStateDefaults()
6666
{
67+
68+
// setStateIntFromAlgo(TikhonovAlgoAbstractBase::TikhonovImplementation);
69+
setStateIntFromAlgo(TikhonovAlgoAbstractBase::RegularizationMethod);
6770
setStateIntFromAlgo(TikhonovAlgoAbstractBase::regularizationChoice);
71+
setStateIntFromAlgo(TikhonovAlgoAbstractBase::LambdaFromDirectEntry);
72+
setStateIntFromAlgo(TikhonovAlgoAbstractBase::LambdaMin);
73+
setStateIntFromAlgo(TikhonovAlgoAbstractBase::LambdaMax);
74+
setStateIntFromAlgo(TikhonovAlgoAbstractBase::LambdaNum);
75+
setStateIntFromAlgo(TikhonovAlgoAbstractBase::LambdaResolution);
76+
setStateIntFromAlgo(TikhonovAlgoAbstractBase::LambdaSliderValue);
77+
setStateIntFromAlgo(TikhonovAlgoAbstractBase::LambdaCorner);
78+
setStateIntFromAlgo(TikhonovAlgoAbstractBase::LCurveText);
6879
setStateIntFromAlgo(TikhonovAlgoAbstractBase::regularizationSolutionSubcase);
6980
setStateIntFromAlgo(TikhonovAlgoAbstractBase::regularizationResidualSubcase);
7081
}

0 commit comments

Comments
 (0)