@@ -66,49 +66,50 @@ const AlgorithmOutputName TikhonovAlgoAbstractBase::InverseSolution("InverseSolu
6666const AlgorithmOutputName TikhonovAlgoAbstractBase::RegularizationParameter (" RegularizationParameter" );
6767const AlgorithmOutputName TikhonovAlgoAbstractBase::RegInverse (" RegInverse" );
6868
69- const AlgorithmParameterName TikhonovAlgoAbstractBase::TikhonovImplementation (" TikhonovImplementationOption" );
70- const AlgorithmParameterName TikhonovAlgoAbstractBase::RegularizationMethod (" lambdaMethodComboBox" );
71- const AlgorithmParameterName TikhonovAlgoAbstractBase::regularizationChoice (" autoRadioButton" );
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-
83- // ALGORITHM_PARAMETER_DEF( TikhonovAlgoAbstractBase, RegularizationMethod);
84- // ALGORITHM_PARAMETER_DEF( TikhonovAlgoAbstractBase, regularizationChoice);
85- // ALGORITHM_PARAMETER_DEF( TikhonovAlgoAbstractBase, LambdaFromDirectEntry);
86- // ALGORITHM_PARAMETER_DEF( TikhonovAlgoAbstractBase, LambdaMin);
87- // ALGORITHM_PARAMETER_DEF( TikhonovAlgoAbstractBase, LambdaMax);
88- // ALGORITHM_PARAMETER_DEF( TikhonovAlgoAbstractBase, LambdaNum);
89- // ALGORITHM_PARAMETER_DEF( TikhonovAlgoAbstractBase, LambdaResolution);
90- // ALGORITHM_PARAMETER_DEF( TikhonovAlgoAbstractBase, LambdaSliderValue);
91- // ALGORITHM_PARAMETER_DEF( TikhonovAlgoAbstractBase, LambdaCorner);
92- // ALGORITHM_PARAMETER_DEF( TikhonovAlgoAbstractBase, LCurveText);
93- // ALGORITHM_PARAMETER_DEF( TikhonovAlgoAbstractBase, regularizationSolutionSubcase);
94- // ALGORITHM_PARAMETER_DEF( TikhonovAlgoAbstractBase, regularizationResidualSubcase);
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+
83+ ALGORITHM_PARAMETER_DEF ( Inverse, TikhonovImplementation);
84+ ALGORITHM_PARAMETER_DEF ( Inverse, RegularizationMethod);
85+ ALGORITHM_PARAMETER_DEF ( Inverse, regularizationChoice);
86+ ALGORITHM_PARAMETER_DEF ( Inverse, LambdaFromDirectEntry);
87+ ALGORITHM_PARAMETER_DEF ( Inverse, LambdaMin);
88+ ALGORITHM_PARAMETER_DEF ( Inverse, LambdaMax);
89+ ALGORITHM_PARAMETER_DEF ( Inverse, LambdaNum);
90+ ALGORITHM_PARAMETER_DEF ( Inverse, LambdaResolution);
91+ ALGORITHM_PARAMETER_DEF ( Inverse, LambdaSliderValue);
92+ ALGORITHM_PARAMETER_DEF ( Inverse, LambdaCorner);
93+ ALGORITHM_PARAMETER_DEF ( Inverse, LCurveText);
94+ ALGORITHM_PARAMETER_DEF ( Inverse, regularizationSolutionSubcase);
95+ ALGORITHM_PARAMETER_DEF ( Inverse, regularizationResidualSubcase);
9596
9697TikhonovAlgoAbstractBase::TikhonovAlgoAbstractBase ()
9798{
98- addParameter (TikhonovImplementation, NoMethodSelected);
99- addParameter (RegularizationMethod, " lcurve" );
100- addParameter (regularizationChoice, 0 );
101- addParameter (LambdaFromDirectEntry,1e-6 );
99+ addParameter (Parameters:: TikhonovImplementation, " NoMethodSelected" );
100+ addParameter (Parameters:: RegularizationMethod, " lcurve" );
101+ addParameter (Parameters:: regularizationChoice, " automatic " );
102+ addParameter (Parameters:: LambdaFromDirectEntry,1e-6 );
102103 // addParameter(lambdaDoubleSpinBox,1e-6);
103- addParameter (LambdaMin,1e-6 );
104- addParameter (LambdaMax,1 );
105- addParameter (LambdaNum,1000 );
106- addParameter (LambdaResolution,1e-6 );
107- addParameter (LambdaSliderValue,0 );
108- addParameter (LambdaCorner,0 );
109- addParameter (LCurveText," lcurve" );
110- addParameter (regularizationSolutionSubcase,solution_constrained);
111- addParameter (regularizationResidualSubcase,residual_constrained);
104+ addParameter (Parameters:: LambdaMin,1e-6 );
105+ addParameter (Parameters:: LambdaMax,1 );
106+ addParameter (Parameters:: LambdaNum,1000 );
107+ addParameter (Parameters:: LambdaResolution,1e-6 );
108+ addParameter (Parameters:: LambdaSliderValue,0 );
109+ addParameter (Parameters:: LambdaCorner,0 );
110+ addParameter (Parameters:: LCurveText," lcurve" );
111+ addParameter (Parameters:: regularizationSolutionSubcase,solution_constrained);
112+ addParameter (Parameters:: regularizationResidualSubcase,residual_constrained);
112113
113114}
114115
@@ -142,7 +143,7 @@ bool TikhonovAlgoAbstractBase::checkInputMatrixSizes( const AlgorithmInput & inp
142143 // check source regularization matrix sizes
143144 if (sourceWeighting_)
144145 {
145- if ( get (regularizationSolutionSubcase).toInt ()==solution_constrained )
146+ if ( get (Parameters:: regularizationSolutionSubcase).toInt ()==solution_constrained )
146147 {
147148 // check that the matrix is of appropriate size (equal number of rows as columns in fwd matrix)
148149 if ( N != sourceWeighting_->ncols () )
@@ -152,7 +153,7 @@ bool TikhonovAlgoAbstractBase::checkInputMatrixSizes( const AlgorithmInput & inp
152153 }
153154 }
154155 // otherwise, if the source regularization is provided as the squared version (RR^T)
155- else if ( get (regularizationSolutionSubcase).toInt ()==solution_constrained_squared )
156+ else if ( get (Parameters:: regularizationSolutionSubcase).toInt ()==solution_constrained_squared )
156157 {
157158 // check that the matrix is of appropriate size and squared (equal number of rows as columns in fwd matrix)
158159 if ( ( N != sourceWeighting_->nrows () ) || ( N != sourceWeighting_->ncols () ) )
@@ -166,7 +167,7 @@ bool TikhonovAlgoAbstractBase::checkInputMatrixSizes( const AlgorithmInput & inp
166167 // check measurement regularization matrix sizes
167168 if (sensorWeighting_)
168169 {
169- if (get (regularizationResidualSubcase).toInt () == residual_constrained)
170+ if (get (Parameters:: regularizationResidualSubcase).toInt () == residual_constrained)
170171 {
171172 // check that the matrix is of appropriate size (equal number of rows as rows in fwd matrix)
172173 if (M != sensorWeighting_->ncols ())
@@ -176,7 +177,7 @@ bool TikhonovAlgoAbstractBase::checkInputMatrixSizes( const AlgorithmInput & inp
176177 }
177178 }
178179 // otherwise if the source covariance matrix is provided in squared form
179- else if ( get (regularizationResidualSubcase).toInt () == residual_constrained_squared )
180+ else if ( get (Parameters:: regularizationResidualSubcase).toInt () == residual_constrained_squared )
180181 {
181182 // check that the matrix is of appropriate size and squared (equal number of rows as rows in fwd matrix)
182183 if ( (M != sensorWeighting_->nrows ()) || (M != sensorWeighting_->ncols ()) )
@@ -197,15 +198,16 @@ bool TikhonovAlgoAbstractBase::checkInputMatrixSizes( const AlgorithmInput & inp
197198// /////// run()
198199AlgorithmOutput TikhonovAlgoAbstractBase::run (const AlgorithmInput & input) const
199200{
201+ THROW_ALGORITHM_PROCESSING_ERROR (" We got to run" );
200202 // get inputs
201203 auto forwardMatrix_ = input.get <Matrix>(TikhonovAlgoAbstractBase::ForwardMatrix);
202204 auto measuredData_ = input.get <Matrix>(TikhonovAlgoAbstractBase::MeasuredPotentials);
203205 auto sourceWeighting_ = input.get <Matrix>(TikhonovAlgoAbstractBase::WeightingInSourceSpace);
204206 auto sensorWeighting_ = input.get <Matrix>(TikhonovAlgoAbstractBase::WeightingInSensorSpace);
205207
206208 // get Parameters
207- auto RegularizationMethod_gotten = get (RegularizationMethod).toString ();
208- auto TikhonovImplementation_gotten = get (TikhonovImplementation).toString ();
209+ auto RegularizationMethod_gotten = get (Parameters:: RegularizationMethod).toString ();
210+ auto TikhonovImplementation_gotten = get (Parameters:: TikhonovImplementation).toString ();
209211
210212 // Alocate Variable
211213 DenseMatrix solution;
@@ -217,18 +219,18 @@ AlgorithmOutput TikhonovAlgoAbstractBase::run(const AlgorithmInput & input) cons
217219
218220 // Determine specific Tikhonov Implementation
219221 TikhonovImpl *algoImpl;
220- if ( get (RegularizationMethod).toInt () == standardTikhonov ){
222+ if ( get (Parameters:: RegularizationMethod).toInt () == standardTikhonov ){
221223 // get Parameters
222- int regularizationChoice_ = get (regularizationChoice).toInt ();
223- int regularizationSolutionSubcase_ = get (regularizationSolutionSubcase).toInt ();
224- int regularizationResidualSubcase_ = get (regularizationResidualSubcase).toInt ();
224+ int regularizationChoice_ = get (Parameters:: regularizationChoice).toInt ();
225+ int regularizationSolutionSubcase_ = get (Parameters:: regularizationSolutionSubcase).toInt ();
226+ int regularizationResidualSubcase_ = get (Parameters:: regularizationResidualSubcase).toInt ();
225227
226228 algoImpl = new SolveInverseProblemWithStandardTikhonovImpl ( *castMatrix::toDense (forwardMatrix_), *castMatrix::toDense (measuredData_), *castMatrix::toDense (sourceWeighting_), *castMatrix::toDense (sensorWeighting_), regularizationChoice_, regularizationSolutionSubcase_, regularizationResidualSubcase_);
227229 }
228- else if ( get (RegularizationMethod).toInt () == TikhonovSVD ){
230+ else if ( get (Parameters:: RegularizationMethod).toInt () == TikhonovSVD ){
229231 // algoImpl = new SolveInverseProblemWithTikhonovSVD_impl( *castMatrix::toDense(forwardMatrix_), *castMatrix::toDense(measuredData_), *castMatrix::toDense(sourceWeighting_), *castMatrix::toDense(sensorWeighting_));
230232 }
231- else if ( get (RegularizationMethod).toInt () == TikhonovTSVD ){
233+ else if ( get (Parameters:: RegularizationMethod).toInt () == TikhonovTSVD ){
232234 THROW_ALGORITHM_PROCESSING_ERROR (" Tikhonov TSVD not implemented yet" );
233235 }
234236 else {
@@ -243,12 +245,12 @@ AlgorithmOutput TikhonovAlgoAbstractBase::run(const AlgorithmInput & input) cons
243245 if (RegularizationMethod_gotten == " single" )
244246 {
245247 // Use single fixed lambda value, entered in UI
246- lambda_ = get (LambdaFromDirectEntry).toDouble ();
248+ lambda_ = get (Parameters:: LambdaFromDirectEntry).toDouble ();
247249 }
248250 else if (RegularizationMethod_gotten == " slider" )
249251 {
250252 // Use single fixed lambda value, select via slider
251- lambda_ = get (LambdaSliderValue).toDouble ();
253+ lambda_ = get (Parameters:: LambdaSliderValue).toDouble ();
252254 }
253255 }
254256 else if (RegularizationMethod_gotten == " lcurve" )
@@ -302,9 +304,9 @@ double TikhonovAlgoAbstractBase::computeLcurve( const SCIRun::Core::Algorithms::
302304 auto sensorWeighting_ = input.get <Matrix>(TikhonovAlgoAbstractBase::WeightingInSensorSpace);
303305
304306 // define the step size of the lambda vector to be computed (distance between min and max divided by number of desired lambdas in log scale)
305- const int nLambda = get (LambdaNum).toInt ();
306- const int lambdaMin_ = get (LambdaMin).toDouble ();
307- const int lambdaMax_ = get (LambdaMax).toDouble ();
307+ const int nLambda = get (Parameters:: LambdaNum).toInt ();
308+ const int lambdaMin_ = get (Parameters:: LambdaMin).toDouble ();
309+ const int lambdaMax_ = get (Parameters:: LambdaMax).toDouble ();
308310 const double lam_step = pow (10.0 , lambdaMax_ / lambdaMin_) / (nLambda-1 );
309311 double lambda = 0 ;
310312
0 commit comments