Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
346 changes: 346 additions & 0 deletions tests/test_2d_geometric_moments.h

Large diffs are not rendered by default.

397 changes: 397 additions & 0 deletions tests/test_2d_remaining_features.h

Large diffs are not rendered by default.

144 changes: 113 additions & 31 deletions tests/test_all.cc
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
#include "test_pixel_intensity_features.h"
#include "test_morphology_features.h"
#include "test_shape_morphology_2d.h"
#include "test_2d_geometric_moments.h"
#include "test_2d_remaining_features.h"
#include "test_neighbors_2d.h"
#include "test_initialization.h"
#include "test_ibsi_glcm.h"
Expand Down Expand Up @@ -665,13 +667,13 @@ TEST(TEST_NYXUS, TEST_3NGLDM_DCENE) {

//***** Gabor regression *****

TEST(TEST_NYXUS, TEST_GABOR){
test_gabor();
#ifdef USE_GPU
test_gabor(true);
#endif
}
TEST(TEST_NYXUS, TEST_UNVETTED_NO_DIRECT_ORACLE_GABOR){
test_unvetted_no_direct_oracle_gabor();

#ifdef USE_GPU
test_unvetted_no_direct_oracle_gabor(true);
#endif
}


//***** helper functionality *****
Expand Down Expand Up @@ -753,15 +755,15 @@ TEST(TEST_NYXUS, TEST_PIXEL_INTENSITY_KURTOSIS)
ASSERT_NO_THROW(test_pixel_intensity_pearson_kurtosis());
}

TEST(TEST_NYXUS, TEST_PIXEL_INTENSITY_HYPERSKEWNESS)
TEST(TEST_NYXUS, TEST_PIXEL_INTENSITY_VERIFIABLE_WITH_3P_BUILTIN_ORACLE_HYPERSKEWNESS)
{
ASSERT_NO_THROW(test_pixel_intensity_hyperskewness());
ASSERT_NO_THROW(test_pixel_intensity_verifiable_with_3p_builtin_oracle_hyperskewness());
}

TEST(TEST_NYXUS, TEST_PIXEL_INTENSITY_HYPERFLATNESS)
{
ASSERT_NO_THROW(test_pixel_intensity_hyperflatness());
}
TEST(TEST_NYXUS, TEST_PIXEL_INTENSITY_VERIFIABLE_WITH_3P_BUILTIN_ORACLE_HYPERFLATNESS)
{
ASSERT_NO_THROW(test_pixel_intensity_verifiable_with_3p_builtin_oracle_hyperflatness());
}

TEST(TEST_NYXUS, TEST_PIXEL_INTENSITY_MAD)
{
Expand All @@ -773,9 +775,9 @@ TEST(TEST_NYXUS, TEST_PIXEL_INTENSITY_MEDIAN_ABSOLUTE_DEVIATION)
ASSERT_NO_THROW(test_pixel_intensity_median_absolute_deviation());
}

TEST(TEST_NYXUS, TEST_PIXEL_INTENSITY_ROBUST_MEAN)
TEST(TEST_NYXUS, TEST_PIXEL_INTENSITY_VERIFIABLE_WITH_3P_BUILTIN_ORACLE_ROBUST_MEAN)
{
ASSERT_NO_THROW(test_pixel_intensity_robust_mean());
ASSERT_NO_THROW(test_pixel_intensity_verifiable_with_3p_builtin_oracle_robust_mean());
}

TEST(TEST_NYXUS, TEST_PIXEL_INTENSITY_ROBUST_MAD)
Expand Down Expand Up @@ -808,9 +810,9 @@ TEST(TEST_NYXUS, TEST_PIXEL_INTENSITY_UNIFORMITY)
ASSERT_NO_THROW(test_pixel_intensity_uniformity());
}

TEST(TEST_NYXUS, TEST_PIXEL_INTENSITY_UNIFORMITY_PIU)
TEST(TEST_NYXUS, TEST_PIXEL_INTENSITY_VERIFIABLE_WITH_3P_BUILTIN_ORACLE_UNIFORMITY_PIU)
{
ASSERT_NO_THROW(test_pixel_intensity_uniformity_piu());
ASSERT_NO_THROW(test_pixel_intensity_verifiable_with_3p_builtin_oracle_uniformity_piu());
}

TEST(TEST_NYXUS, TEST_PIXEL_INTENSITY_PERCENTILES_IQR)
Expand All @@ -823,9 +825,9 @@ TEST(TEST_NYXUS, TEST_PIXEL_INTENSITY_QCOD)
ASSERT_NO_THROW(test_pixel_intensity_qcod());
}

TEST(TEST_NYXUS, TEST_PIXEL_INTENSITY_COVERED_IMAGE_INTENSITY_RANGE)
TEST(TEST_NYXUS, TEST_PIXEL_INTENSITY_VERIFIABLE_WITH_3P_BUILTIN_ORACLE_COVERED_IMAGE_INTENSITY_RANGE)
{
ASSERT_NO_THROW(test_pixel_intensity_covered_image_intensity_range());
ASSERT_NO_THROW(test_pixel_intensity_verifiable_with_3p_builtin_oracle_covered_image_intensity_range());
}


Expand All @@ -851,21 +853,96 @@ TEST(TEST_NYXUS, TEST_SHAPE2D_CONTOUR_FEATURES)
ASSERT_NO_THROW(test_shape2d_contour_features());
}

TEST(TEST_NYXUS, TEST_SHAPE2D_VERIFIABLE_WITH_3P_BUILTIN_ORACLE_CONTOUR_DIAMETER_EQUAL_PERIMETER)
{
ASSERT_NO_THROW(test_shape2d_verifiable_with_3p_builtin_oracle_contour_diameter_equal_perimeter());
}

TEST(TEST_NYXUS, TEST_SHAPE2D_CONVEX_HULL_FEATURES)
{
ASSERT_NO_THROW(test_shape2d_convex_hull_features());
}

TEST(TEST_NYXUS, TEST_SHAPE2D_EXTREMA_FEATURES)
TEST(TEST_NYXUS, TEST_SHAPE2D_VERIFIABLE_WITH_3P_BUILTIN_ORACLE_EXTREMA_FEATURES)
{
ASSERT_NO_THROW(test_shape2d_extrema_features());
ASSERT_NO_THROW(test_shape2d_verifiable_with_3p_builtin_oracle_extrema_features());
}

TEST(TEST_NYXUS, TEST_SHAPE2D_MISC_FEATURES)
{
ASSERT_NO_THROW(test_shape2d_misc_shape_features());
}

TEST(TEST_NYXUS, TEST_SHAPE2D_VERIFIABLE_WITH_3P_BUILTIN_ORACLE_FRACTAL_CIRCLE_FEATURES)
{
ASSERT_NO_THROW(test_shape2d_verifiable_with_3p_builtin_oracle_fractal_circle_features());
}

TEST(TEST_NYXUS, TEST_SHAPE2D_UNVETTED_NO_DIRECT_ORACLE_RADIUS_FEATURES)
{
ASSERT_NO_THROW(test_shape2d_unvetted_no_direct_oracle_radius_features());
}

TEST(TEST_NYXUS, TEST_2D_SHAPE_GEOMETRIC_MOMENTS_MIXED_VERIFIABLE_AND_UNVETTED)
{
ASSERT_NO_THROW(test_2d_shape_geometric_moments_mixed_verifiable_and_unvetted());
}

TEST(TEST_NYXUS, TEST_2D_SHAPE_WEIGHTED_GEOMETRIC_MOMENTS_UNVETTED_NO_DIRECT_ORACLE)
{
ASSERT_NO_THROW(test_2d_shape_weighted_geometric_moments_unvetted_no_direct_oracle());
}

TEST(TEST_NYXUS, TEST_2D_INTENSITY_GEOMETRIC_MOMENTS_MIXED_VERIFIABLE_AND_UNVETTED)
{
ASSERT_NO_THROW(test_2d_intensity_geometric_moments_mixed_verifiable_and_unvetted());
}

TEST(TEST_NYXUS, TEST_2D_INTENSITY_WEIGHTED_GEOMETRIC_MOMENTS_UNVETTED_NO_DIRECT_ORACLE)
{
ASSERT_NO_THROW(test_2d_intensity_weighted_geometric_moments_unvetted_no_direct_oracle());
}

TEST(TEST_NYXUS, TEST_SHAPE2D_VERIFIABLE_WITH_3P_BUILTIN_ORACLE_GEODETIC_THICKNESS_EROSION)
{
ASSERT_NO_THROW(test_shape2d_verifiable_with_3p_builtin_oracle_geodetic_thickness_erosion_features());
}

TEST(TEST_NYXUS, TEST_REMAINING2D_VERIFIABLE_WITH_3P_BUILTIN_ORACLE_EROSION_COMPLEMENT)
{
ASSERT_NO_THROW(test_remaining2d_verifiable_with_3p_builtin_oracle_erosion_complement_feature());
}

TEST(TEST_NYXUS, TEST_REMAINING2D_VERIFIABLE_WITH_3P_BUILTIN_ORACLE_CALIPER_FEATURES)
{
ASSERT_NO_THROW(test_remaining2d_verifiable_with_3p_builtin_oracle_caliper_features());
}

TEST(TEST_NYXUS, TEST_REMAINING2D_VERIFIABLE_WITH_3P_BUILTIN_ORACLE_CHORD_STAT_FEATURES)
{
ASSERT_NO_THROW(test_remaining2d_verifiable_with_3p_builtin_oracle_chord_stat_features());
}

TEST(TEST_NYXUS, TEST_REMAINING2D_UNVETTED_NO_DIRECT_ORACLE_CHORD_ANGLE_FEATURES)
{
ASSERT_NO_THROW(test_remaining2d_unvetted_no_direct_oracle_chord_angle_features());
}

TEST(TEST_NYXUS, TEST_REMAINING2D_UNVETTED_NO_DIRECT_ORACLE_POLYGONALITY_HEXAGONALITY)
{
ASSERT_NO_THROW(test_remaining2d_unvetted_no_direct_oracle_polygonality_hexagonality_features());
}

TEST(TEST_NYXUS, TEST_REMAINING2D_UNVETTED_NO_DIRECT_ORACLE_RADIAL_DISTRIBUTION)
{
ASSERT_NO_THROW(test_remaining2d_unvetted_no_direct_oracle_radial_distribution_features());
}

TEST(TEST_NYXUS, TEST_REMAINING2D_VERIFIABLE_WITH_3P_BUILTIN_ORACLE_ZERNIKE2D)
{
ASSERT_NO_THROW(test_remaining2d_verifiable_with_3p_builtin_oracle_zernike2d_feature());
}

TEST(TEST_NYXUS, TEST_NEIGHBORHOOD2D_COUNTS_TOUCHING)
{
ASSERT_NO_THROW(test_neighborhood2d_counts_and_touching());
Expand All @@ -876,9 +953,14 @@ TEST(TEST_NYXUS, TEST_NEIGHBORHOOD2D_CLOSEST_NEIGHBORS)
ASSERT_NO_THROW(test_neighborhood2d_closest_neighbors());
}

TEST(TEST_NYXUS, TEST_NEIGHBORHOOD2D_ANGLE_STATS)
TEST(TEST_NYXUS, TEST_NEIGHBORHOOD2D_UNVETTED_NO_DIRECT_ORACLE_CLOSEST_NEIGHBOR_ANGLES)
{
ASSERT_NO_THROW(test_neighborhood2d_unvetted_no_direct_oracle_closest_neighbor_angles());
}

TEST(TEST_NYXUS, TEST_NEIGHBORHOOD2D_UNVETTED_NO_DIRECT_ORACLE_ANGLE_STATS)
{
ASSERT_NO_THROW(test_neighborhood2d_neighbor_angle_stats());
ASSERT_NO_THROW(test_neighborhood2d_unvetted_no_direct_oracle_neighbor_angle_stats());
}


Expand Down Expand Up @@ -1640,19 +1722,19 @@ TEST(TEST_NYXUS, TEST_IBSI_NGLDM_DCP)
ASSERT_NO_THROW(test_ibsi_NGLDM_DCP());
}

TEST(TEST_NYXUS, TEST_IBSI_NGLDM_GLM)
TEST(TEST_NYXUS, TEST_IBSI_NGLDM_UNVETTED_NO_DIRECT_ORACLE_GLM)
{
ASSERT_NO_THROW(test_ibsi_NGLDM_GLM());
ASSERT_NO_THROW(test_ibsi_NGLDM_unvetted_no_direct_oracle_GLM());
}

TEST(TEST_NYXUS, TEST_IBSI_NGLDM_GLV)
{
ASSERT_NO_THROW(test_ibsi_NGLDM_GLV());
}

TEST(TEST_NYXUS, TEST_IBSI_NGLDM_DCM)
TEST(TEST_NYXUS, TEST_IBSI_NGLDM_UNVETTED_NO_DIRECT_ORACLE_DCM)
{
ASSERT_NO_THROW(test_ibsi_NGLDM_DCM());
ASSERT_NO_THROW(test_ibsi_NGLDM_unvetted_no_direct_oracle_DCM());
}

TEST(TEST_NYXUS, TEST_IBSI_NGLDM_DCV)
Expand Down Expand Up @@ -2042,19 +2124,19 @@ TEST(TEST_NYXUS, TEST_GLDZM_MATRIX_ZP)
ASSERT_NO_THROW(test_ibsi_GLDZM_ZP());
}

TEST(TEST_NYXUS, TEST_GLDZM_MATRIX_GLM)
TEST(TEST_NYXUS, TEST_GLDZM_MATRIX_UNVETTED_NO_DIRECT_ORACLE_GLM)
{
ASSERT_NO_THROW(test_ibsi_GLDZM_GLM());
ASSERT_NO_THROW(test_ibsi_GLDZM_unvetted_no_direct_oracle_GLM());
}

TEST(TEST_NYXUS, TEST_GLDZM_MATRIX_GLV)
{
ASSERT_NO_THROW(test_ibsi_GLDZM_GLV());
}

TEST(TEST_NYXUS, TEST_GLDZM_MATRIX_ZDM)
TEST(TEST_NYXUS, TEST_GLDZM_MATRIX_UNVETTED_NO_DIRECT_ORACLE_ZDM)
{
ASSERT_NO_THROW(test_ibsi_GLDZM_ZDM());
ASSERT_NO_THROW(test_ibsi_GLDZM_unvetted_no_direct_oracle_ZDM());
}

TEST(TEST_NYXUS, TEST_GLDZM_MATRIX_ZDV)
Expand Down
4 changes: 3 additions & 1 deletion tests/test_gabor.cc
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,10 @@
using namespace std;
using namespace Nyxus;

void test_gabor(bool gpu)
void test_unvetted_no_direct_oracle_gabor(bool gpu)
{
SCOPED_TRACE("UNVETTED_NO_DIRECT_ORACLE__GABOR");

for(int i = 0; i < dsb_data.size(); ++i)
{
LR roidata;
Expand Down
2 changes: 1 addition & 1 deletion tests/test_gabor.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
#include "../src/nyx/globals.h"


void test_gabor(bool gpu=false);
void test_unvetted_no_direct_oracle_gabor(bool gpu=false);
6 changes: 4 additions & 2 deletions tests/test_ibsi_gldzm.h
Original file line number Diff line number Diff line change
Expand Up @@ -247,8 +247,9 @@ void test_ibsi_GLDZM_ZP()
test_ibsi_gldzm_feature(Nyxus::Feature2D::GLDZM_ZP, "GLDZM_ZP");
}

void test_ibsi_GLDZM_GLM()
void test_ibsi_GLDZM_unvetted_no_direct_oracle_GLM()
{
SCOPED_TRACE("UNVETTED_NO_DIRECT_ORACLE__GLDZM_GLM");
test_ibsi_gldzm_feature(Nyxus::Feature2D::GLDZM_GLM, "GLDZM_GLM");
}

Expand All @@ -257,8 +258,9 @@ void test_ibsi_GLDZM_GLV()
test_ibsi_gldzm_feature(Nyxus::Feature2D::GLDZM_GLV, "GLDZM_GLV");
}

void test_ibsi_GLDZM_ZDM()
void test_ibsi_GLDZM_unvetted_no_direct_oracle_ZDM()
{
SCOPED_TRACE("UNVETTED_NO_DIRECT_ORACLE__GLDZM_ZDM");
test_ibsi_gldzm_feature(Nyxus::Feature2D::GLDZM_ZDM, "GLDZM_ZDM");
}

Expand Down
6 changes: 4 additions & 2 deletions tests/test_ibsi_ngldm.h
Original file line number Diff line number Diff line change
Expand Up @@ -332,8 +332,9 @@ void test_ibsi_NGLDM_DCP()
test_ibsi_ngldm_feature(Nyxus::Feature2D::NGLDM_DCP, "NGLDM_DCP");
}

void test_ibsi_NGLDM_GLM()
void test_ibsi_NGLDM_unvetted_no_direct_oracle_GLM()
{
SCOPED_TRACE("UNVETTED_NO_DIRECT_ORACLE__NGLDM_GLM");
test_ibsi_ngldm_feature(Nyxus::Feature2D::NGLDM_GLM, "NGLDM_GLM");
}

Expand All @@ -342,8 +343,9 @@ void test_ibsi_NGLDM_GLV()
test_ibsi_ngldm_feature(Nyxus::Feature2D::NGLDM_GLV, "NGLDM_GLV");
}

void test_ibsi_NGLDM_DCM()
void test_ibsi_NGLDM_unvetted_no_direct_oracle_DCM()
{
SCOPED_TRACE("UNVETTED_NO_DIRECT_ORACLE__NGLDM_DCM");
test_ibsi_ngldm_feature(Nyxus::Feature2D::NGLDM_DCM, "NGLDM_DCM");
}

Expand Down
33 changes: 27 additions & 6 deletions tests/test_neighbors_2d.h
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,17 @@ static void assert_neighbor2d_feature(
ASSERT_TRUE(agrees_gt(roiData.at(label).fvals[static_cast<int>(feature)][0], neighborhood2d_truth[label][feature_name], frac_tolerance));
}

static void assert_unvetted_no_direct_oracle_neighbor2d_feature(
const std::unordered_map<int, LR>& roiData,
int label,
Nyxus::Feature2D feature,
const std::string& feature_name,
double frac_tolerance = 1000.0)
{
SCOPED_TRACE(std::string("UNVETTED_NO_DIRECT_ORACLE__") + feature_name);
assert_neighbor2d_feature(roiData, label, feature, feature_name, frac_tolerance);
}

void test_neighborhood2d_counts_and_touching()
{
std::unordered_map<int, LR> roiData;
Expand All @@ -161,21 +172,31 @@ void test_neighborhood2d_closest_neighbors()
for (int label : {1, 2, 3, 4, 5})
{
assert_neighbor2d_feature(roiData, label, Nyxus::Feature2D::CLOSEST_NEIGHBOR1_DIST, "CLOSEST_NEIGHBOR1_DIST");
assert_neighbor2d_feature(roiData, label, Nyxus::Feature2D::CLOSEST_NEIGHBOR1_ANG, "CLOSEST_NEIGHBOR1_ANG");
assert_neighbor2d_feature(roiData, label, Nyxus::Feature2D::CLOSEST_NEIGHBOR2_DIST, "CLOSEST_NEIGHBOR2_DIST");
assert_neighbor2d_feature(roiData, label, Nyxus::Feature2D::CLOSEST_NEIGHBOR2_ANG, "CLOSEST_NEIGHBOR2_ANG");
}
}

void test_neighborhood2d_neighbor_angle_stats()
void test_neighborhood2d_unvetted_no_direct_oracle_closest_neighbor_angles()
{
std::unordered_map<int, LR> roiData;
calculate_neighborhood2d_feature_values(roiData);

for (int label : {1, 2, 3, 4, 5})
{
assert_unvetted_no_direct_oracle_neighbor2d_feature(roiData, label, Nyxus::Feature2D::CLOSEST_NEIGHBOR1_ANG, "CLOSEST_NEIGHBOR1_ANG");
assert_unvetted_no_direct_oracle_neighbor2d_feature(roiData, label, Nyxus::Feature2D::CLOSEST_NEIGHBOR2_ANG, "CLOSEST_NEIGHBOR2_ANG");
}
}

void test_neighborhood2d_unvetted_no_direct_oracle_neighbor_angle_stats()
{
std::unordered_map<int, LR> roiData;
calculate_neighborhood2d_feature_values(roiData);

for (int label : {1, 2, 3, 4, 5})
{
assert_neighbor2d_feature(roiData, label, Nyxus::Feature2D::ANG_BW_NEIGHBORS_MEAN, "ANG_BW_NEIGHBORS_MEAN");
assert_neighbor2d_feature(roiData, label, Nyxus::Feature2D::ANG_BW_NEIGHBORS_STDDEV, "ANG_BW_NEIGHBORS_STDDEV");
assert_neighbor2d_feature(roiData, label, Nyxus::Feature2D::ANG_BW_NEIGHBORS_MODE, "ANG_BW_NEIGHBORS_MODE");
assert_unvetted_no_direct_oracle_neighbor2d_feature(roiData, label, Nyxus::Feature2D::ANG_BW_NEIGHBORS_MEAN, "ANG_BW_NEIGHBORS_MEAN");
assert_unvetted_no_direct_oracle_neighbor2d_feature(roiData, label, Nyxus::Feature2D::ANG_BW_NEIGHBORS_STDDEV, "ANG_BW_NEIGHBORS_STDDEV");
assert_unvetted_no_direct_oracle_neighbor2d_feature(roiData, label, Nyxus::Feature2D::ANG_BW_NEIGHBORS_MODE, "ANG_BW_NEIGHBORS_MODE");
}
}
Loading
Loading