public void SpatialAndTemporalFrequencyTwoLayerSDATest() { var _thresholdValue = 0.03; double[] fxs = new double[] { 0.0, 0.02 }; // 0.3 just doesn't give good results var _twoLayerSDAForwardSolver = new TwoLayerSDAForwardSolver(); var _oneLayerNurbsForwardSolver = new NurbsForwardSolver(); // make sure layer thickess is greater than l*=1/(mua+musp)=1mm LayerTissueRegion[] _twoLayerTissue = new LayerTissueRegion[] { new LayerTissueRegion(new DoubleRange(0, 3), new OpticalProperties(ops)), new LayerTissueRegion(new DoubleRange(3, 100), new OpticalProperties(ops)), }; for (int ifx = 0; ifx < fxs.Length; ifx++) { var oneLayerResult = _oneLayerNurbsForwardSolver.ROfFxAndFt(ops, fxs[ifx], ft); var twoLayerResult = _twoLayerSDAForwardSolver.ROfFxAndFt(_twoLayerTissue, fxs[ifx], ft); var relDiffRe = Math.Abs(twoLayerResult.Real - oneLayerResult.Real) / oneLayerResult.Real; var relDiffIm = Math.Abs((twoLayerResult.Imaginary - oneLayerResult.Imaginary) / oneLayerResult.Imaginary); Assert.IsTrue(relDiffRe < _thresholdValue, "Test failed for fx =" + fxs[ifx] + " and ft=", +ft + ", with Real relative difference " + relDiffRe); Assert.IsTrue(relDiffIm < _thresholdValue, "Test failed for fx =" + fxs[ifx] + " and ft=", +ft + ", with Imag relative difference " + relDiffIm); } }
public void ROfRhoAndT_TimeValueSmallerThenMinimalTimeOfFlight_ReturnsZero() { INurbs fakeNurbsGenerator = new StubNurbsGenerator(); nurbsForwardSolver = new NurbsForwardSolver(fakeNurbsGenerator); OpticalProperties op = new OpticalProperties(0.0, 1.0, 0.8, 1.4); Assert.AreEqual(0.0, nurbsForwardSolver.ROfRhoAndTime(op, 10.0, 0.01), "The returned value should be 0.0"); }
public void simple_forward_calls_return_nonzero_result() { var fs = new NurbsForwardSolver(); var op = new OpticalProperties(); var value1 = fs.ROfRho(op, 10); Assert.IsTrue(value1 > 0); var value2 = fs.ROfFx(op, 0.1); Assert.IsTrue(value2 > 0); }
public void array_forward_calls_return_nonzero_result() { var fs = new NurbsForwardSolver(); var ops = new[] { new OpticalProperties() }; var rhos = new[] { 10.0 }; var fxs = new[] { 0.1 }; var value1 = fs.ROfRho(ops, rhos); Assert.IsTrue(value1[0] > 0); var value2 = fs.ROfFx(ops, fxs); Assert.IsTrue(value2[0] > 0); }
public void enumerable_forward_calls_return_nonzero_result() { var fs = new NurbsForwardSolver(); var ops = new OpticalProperties().AsEnumerable(); var rhos = 10D.AsEnumerable(); var fxs = 0.1.AsEnumerable(); var value1 = fs.ROfRho(ops, rhos).First(); Assert.IsTrue(value1 > 0); var value2 = fs.ROfFx(ops, fxs).First(); Assert.IsTrue(value2 > 0); }
public void SpatialFrequencyTwoLayerSDATest() { var _thresholdValue = 0.03; double[] fxs = new double[] { 0.0, 0.02 }; // 0.3 results not good var _twoLayerSDAForwardSolver = new TwoLayerSDAForwardSolver(); var _oneLayerNurbsForwardSolver = new NurbsForwardSolver(); // make sure layer thickess is greater than l*=1/(mua+musp)=1mm LayerTissueRegion[] _twoLayerTissue = new LayerTissueRegion[] { new LayerTissueRegion(new DoubleRange(0, 3), new OpticalProperties(ops)), new LayerTissueRegion(new DoubleRange(3, 100), new OpticalProperties(ops)), }; for (int ifx = 0; ifx < fxs.Length; ifx++) { var oneLayerResult = _oneLayerNurbsForwardSolver.ROfFx(ops, fxs[ifx]); var twoLayerResult = _twoLayerSDAForwardSolver.ROfFx(_twoLayerTissue, fxs[ifx]); var relDiff = Math.Abs(twoLayerResult - oneLayerResult) / oneLayerResult; Assert.IsTrue(relDiff < _thresholdValue, "Test failed for fx =" + fxs[ifx] + ", with relative difference " + relDiff); } }
public void Setup() { nurbsForwardSolver = new NurbsForwardSolver(); }
public void TearDown() { nurbsForwardSolver = null; }