Skip to content

Commit ef0fa1f

Browse files
committed
perf: checking why 5 samples work slower
moving to do codecov, correcting a missing semicolon
1 parent 9762220 commit ef0fa1f

9 files changed

+257
-125
lines changed

lib/OxCalculatorT1Molli.hxx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,9 @@ namespace Ox {
192192

193193
MeasureType T1 = (B/A-1)*T1star;
194194

195+
if (fabs(T1) < std::numeric_limits<MeasureType>::min())
196+
return 1; // EXIT_FAILURE
197+
195198
MeasureType dydA = 0;
196199
MeasureType dydB = 0;
197200
MeasureType dydT1 = 0;

lib/OxFitterLevenbergMarquardtVnl.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,8 +123,7 @@ namespace Ox {
123123
if (this->_UseGradient) {
124124
_FunctionsAdaptedToVnl = new FunctionsAdaptedToVnlType(nDims, nSamples, vnl_least_squares_function::use_gradient);
125125
} else {
126-
_FunctionsAdaptedToVnl = new FunctionsAdaptedToVnlType(nDims, nSamples,
127-
vnl_least_squares_function::no_gradient);
126+
_FunctionsAdaptedToVnl = new FunctionsAdaptedToVnlType(nDims, nSamples, vnl_least_squares_function::no_gradient);
128127
}
129128

130129
_FunctionsAdaptedToVnl->setFunctionsT1(this->_FunctionsT1);

lib/OxFunctionsT1AdapterVnlLeastSquares.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,15 +46,17 @@ namespace Ox {
4646
/**
4747
* constructor
4848
*/
49-
FunctionsT1AdapterVnlLeastSquares(int nDims, int nSamples, UseGradient UseGradientVariable) : vnl_least_squares_function (nDims, nSamples, UseGradientVariable){
49+
FunctionsT1AdapterVnlLeastSquares(int nDims, int nSamples, UseGradient UseGradientVariable)
50+
: vnl_least_squares_function (nDims, nSamples, UseGradientVariable){
5051
_FunctionsT1 = 0; // nullpointer
5152
};
5253

5354
/**
5455
* copy constructor
5556
* @param old
5657
*/
57-
FunctionsT1AdapterVnlLeastSquares(const FunctionsT1AdapterVnlLeastSquares &old) : vnl_least_squares_function(old){
58+
FunctionsT1AdapterVnlLeastSquares(const FunctionsT1AdapterVnlLeastSquares &old)
59+
: vnl_least_squares_function(old){
5860
_FunctionsT1 = old._FunctionsT1;
5961
}
6062

tests/OxCalculatorT1Molli_test.cpp

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
* \date 2018/08/01
55
*/
66

7+
#include <OxFitterLevenbergMarquardtVnl.h>
78
#include "gtest/gtest.h"
89
#include "OxTestData.h"
910

@@ -16,6 +17,10 @@
1617
#include "OxStartPointCalculatorDefault3Dims.h"
1718
#include "OxCalculatorT1Molli.h"
1819

20+
#ifdef USE_ITK
21+
#include "itkTimeProbe.h"
22+
#endif
23+
1924
//TODO: make sure correctSDs are accually correct
2025

2126
#ifdef USE_VNL
@@ -268,3 +273,63 @@ TEST(OxCalculatorT1Molli, correctSDs) {
268273
}
269274

270275
#endif
276+
277+
////TODO: no difference between 5 samples and 7 samples here.
278+
//#ifdef USE_ITK
279+
//
280+
//TEST(OxCalculatorT1Molli, samples5) {
281+
//
282+
// typedef double TYPE;
283+
// int nRepetitions = 10000;
284+
//
285+
// char filePath5 [] = "testData/blood_5samples.yaml";
286+
// Ox::TestData<TYPE> testData5(filePath5);
287+
// int nSamples5 = testData5.getNSamples();
288+
//
289+
// char filePath7 [] = "testData/blood.yaml";
290+
// Ox::TestData<TYPE> testData7(filePath7);
291+
// int nSamples7 = testData7.getNSamples();
292+
//
293+
// // init the necessary objects
294+
// Ox::FunctionsT1Basic<TYPE> functionsObject;
295+
// Ox::FitterLevenbergMarquardtVnl<TYPE> fitterAmoebaVnl;
296+
// Ox::SignCalculatorRealImag<TYPE> signCalculator;
297+
// Ox::StartPointCalculatorDefault3Dims<TYPE> startPointCalculator;
298+
// Ox::CalculatorT1Molli<TYPE> calculatorT1Molli;
299+
//
300+
// // configure
301+
// calculatorT1Molli.setFunctionsT1(&functionsObject);
302+
// calculatorT1Molli.setFitter(&fitterAmoebaVnl);
303+
// calculatorT1Molli.setSignCalculator(&signCalculator);
304+
// calculatorT1Molli.setStartPointCalculator(&startPointCalculator);
305+
//
306+
// // set the data
307+
// calculatorT1Molli.setNSamples(nSamples5);
308+
// calculatorT1Molli.setInvTimes(testData5.getInvTimesPtr());
309+
// calculatorT1Molli.setSigPha(testData5.getSignalPhaPtr());
310+
// calculatorT1Molli.setSigMag(testData5.getSignalMagPtr());
311+
//
312+
// printf("\n");
313+
// itk::TimeProbe clock;
314+
// clock.Start();
315+
// for (int i = 0; i < nRepetitions; i++)
316+
// calculatorT1Molli.calculate();
317+
// clock.Stop();
318+
// printf("Calculation5 time: %.12fs.\n", clock.GetTotal());
319+
//
320+
// // set the data
321+
// calculatorT1Molli.setNSamples(nSamples7);
322+
// calculatorT1Molli.setInvTimes(testData7.getInvTimesPtr());
323+
// calculatorT1Molli.setSigPha(testData7.getSignalPhaPtr());
324+
// calculatorT1Molli.setSigMag(testData7.getSignalMagPtr());
325+
//
326+
// clock.Reset();
327+
// clock.Start();
328+
// for (int i = 0; i < nRepetitions; i++)
329+
// calculatorT1Molli.calculate();
330+
// clock.Stop();
331+
// printf("Calculation7 time: %.12fs.\n", clock.GetTotal());
332+
//
333+
//}
334+
//
335+
//#endif

0 commit comments

Comments
 (0)