use of uk.ac.sussex.gdsc.test.junit5.SeededTest in project GDSC-SMLM by aherbert.
the class PerPixelCameraModelTest method canCropAndConvertDataWithCropBounds.
@SeededTest
void canCropAndConvertDataWithCropBounds(RandomSeed seed) {
final PerPixelCameraModelTestData data = (PerPixelCameraModelTestData) dataCache.computeIfAbsent(seed, PerPixelCameraModelTest::createData);
final PerPixelCameraModel model = new PerPixelCameraModel(w, h, data.bias, data.gain, data.variance);
final UniformRandomProvider rand = RngUtils.create(seed.getSeed());
final ImageExtractor ie = ImageExtractor.wrap(data.bias, w, h);
for (int j = 0; j < 10; j++) {
final Rectangle bounds = getBounds(rand, ie);
checkConversion(data, bounds, model.crop(bounds, false));
}
}
use of uk.ac.sussex.gdsc.test.junit5.SeededTest in project GDSC-SMLM by aherbert.
the class Gaussian2DPeakResultHelperTest method canComputeMeanSignalUsingP.
@SeededTest
void canComputeMeanSignalUsingP(RandomSeed seed) {
final UniformRandomProvider rg = RngUtils.create(seed.getSeed());
final DoubleDoubleBiPredicate predicate = TestHelper.doublesAreClose(1e-10, 0);
for (int i = 0; i < 10; i++) {
final double intensity = rg.nextDouble() * 100;
final double sx = rg.nextDouble() * 2;
final double sy = rg.nextDouble() * 2;
final double p = rg.nextDouble();
double expected = intensity * p / (Math.PI * MathUtils.pow2(Gaussian2DPeakResultHelper.inverseCumulative2D(p)) * sx * sy);
double observed = Gaussian2DPeakResultHelper.getMeanSignalUsingP(intensity, sx, sy, p);
assertEquals(expected, observed, predicate);
// Test fixed versions verse dynamic
expected = Gaussian2DPeakResultHelper.getMeanSignalUsingP(intensity, sx, sy, 0.5);
observed = Gaussian2DPeakResultHelper.getMeanSignalUsingP05(intensity, sx, sy);
assertEquals(expected, observed, predicate);
}
}
use of uk.ac.sussex.gdsc.test.junit5.SeededTest in project GDSC-SMLM by aherbert.
the class Gaussian2DPeakResultHelperTest method canComputeMeanSignalUsingR.
@SeededTest
void canComputeMeanSignalUsingR(RandomSeed seed) {
final UniformRandomProvider rg = RngUtils.create(seed.getSeed());
final DoubleDoubleBiPredicate predicate = TestHelper.doublesAreClose(1e-10, 0);
for (int i = 0; i < 10; i++) {
final double intensity = rg.nextDouble() * 100;
final double sx = rg.nextDouble() * 2;
final double sy = rg.nextDouble() * 2;
final double r = rg.nextDouble() * 5;
assertEquals(intensity * Gaussian2DPeakResultHelper.cumulative2D(r) / (Math.PI * r * r * sx * sy), Gaussian2DPeakResultHelper.getMeanSignalUsingR(intensity, sx, sy, r), predicate);
// Test fixed versions verse dynamic
assertEquals(Gaussian2DPeakResultHelper.getMeanSignalUsingR(intensity, sx, sy, 1), Gaussian2DPeakResultHelper.getMeanSignalUsingR1(intensity, sx, sy), predicate);
assertEquals(Gaussian2DPeakResultHelper.getMeanSignalUsingR(intensity, sx, sy, 2), Gaussian2DPeakResultHelper.getMeanSignalUsingR2(intensity, sx, sy), predicate);
}
}
use of uk.ac.sussex.gdsc.test.junit5.SeededTest in project GDSC-SMLM by aherbert.
the class PoissonDistributionTest method canComputeCumulativeProbability.
@SeededTest
void canComputeCumulativeProbability(RandomSeed seed) {
final UniformRandomProvider rng = RngUtils.create(seed.getSeed());
final PoissonDistribution fpd = new PoissonDistribution(1);
for (int i = 1; i <= 100; i++) {
final double mean = rng.nextDouble() * i;
final org.apache.commons.math3.distribution.PoissonDistribution pd = createReferencePoissonDistribution(mean);
fpd.setMean(mean);
final int lower = (int) Math.floor(Math.max(0, mean - 5 * Math.sqrt(mean)));
final int upper = (int) Math.ceil((mean + 5 * Math.sqrt(mean)));
for (int x = lower; x <= upper; x++) {
Assertions.assertEquals(pd.cumulativeProbability(x), fpd.cumulativeProbability(x), 1e-16);
}
}
}
use of uk.ac.sussex.gdsc.test.junit5.SeededTest in project GDSC-SMLM by aherbert.
the class FilterTest method canCompareMultiFilter.
@SeededTest
void canCompareMultiFilter(RandomSeed seed) {
final UniformRandomProvider UniformRandomProvider = RngUtils.create(seed.getSeed());
final MultiFilter f = new MultiFilter(0, 0, 0, 0, 0, 0, 0, 0, 0);
for (int i = 1000; i-- > 0; ) {
final MultiFilter f1 = (MultiFilter) f.create(random(f.getNumberOfParameters(), UniformRandomProvider));
final MultiFilter f2 = (MultiFilter) f.create(random(f.getNumberOfParameters(), UniformRandomProvider));
final int e = f1.weakest((Filter) f2);
final int o = f1.weakest(f2);
Assertions.assertEquals(e, o);
}
}
Aggregations