From 87d5aa8179518d51bbfbf29c3bc84b2f9c976d02 Mon Sep 17 00:00:00 2001 From: Leo Date: Thu, 27 Jun 2024 12:55:34 -0500 Subject: [PATCH] remove unused ncml, add int and float test --- .../main/java/ucar/nc2/filter/Classifier.java | 3 +- .../ncml/enhance/testAddToClassifier.ncml | 12 +++++ .../data/ncml/enhance/testClassifier.ncml | 54 ------------------- .../java/ucar/nc2/filter/TestClassifier.java | 51 ------------------ .../ucar/nc2/ncml/TestEnhanceClassifier.java | 44 ++++++++++++++- 5 files changed, 55 insertions(+), 109 deletions(-) delete mode 100644 cdm/core/src/test/data/ncml/enhance/testClassifier.ncml delete mode 100644 cdm/core/src/test/java/ucar/nc2/filter/TestClassifier.java diff --git a/cdm/core/src/main/java/ucar/nc2/filter/Classifier.java b/cdm/core/src/main/java/ucar/nc2/filter/Classifier.java index f9337ff9c4..c196603bc4 100644 --- a/cdm/core/src/main/java/ucar/nc2/filter/Classifier.java +++ b/cdm/core/src/main/java/ucar/nc2/filter/Classifier.java @@ -94,7 +94,7 @@ public int classifyArray(double val) { public int classifyArrayAttribute(double val) { for (int[] rule : rules) { if (val > rule[0] && val <= rule[1] + Misc.defaultMaxRelativeDiffFloat) { - return rule[2]; // Return the matched rule's value + return rule[2]; } } // Return min possible int if no rule matches @@ -104,7 +104,6 @@ public int classifyArrayAttribute(double val) { // Method to load classification rules from the attributes private List loadClassificationRules() { for (String rules : this.AttCat) { - System.out.println("RULEZ" + rules); int[] rule = stringToIntArray(rules); this.rules.add(rule); } diff --git a/cdm/core/src/test/data/ncml/enhance/testAddToClassifier.ncml b/cdm/core/src/test/data/ncml/enhance/testAddToClassifier.ncml index e0ad6b9efe..97bd611910 100644 --- a/cdm/core/src/test/data/ncml/enhance/testAddToClassifier.ncml +++ b/cdm/core/src/test/data/ncml/enhance/testAddToClassifier.ncml @@ -12,6 +12,18 @@ -500000 NaN -10 0 1 2 3 11 25 29 NaN 100 150 121 102 199999 12211 + + + 1 -2 0 4 -5 + + + + + 1.0 -2.0 0.0 4.0 -5.0 + + + + diff --git a/cdm/core/src/test/data/ncml/enhance/testClassifier.ncml b/cdm/core/src/test/data/ncml/enhance/testClassifier.ncml deleted file mode 100644 index d2c0f7f89d..0000000000 --- a/cdm/core/src/test/data/ncml/enhance/testClassifier.ncml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/cdm/core/src/test/java/ucar/nc2/filter/TestClassifier.java b/cdm/core/src/test/java/ucar/nc2/filter/TestClassifier.java deleted file mode 100644 index d44501054b..0000000000 --- a/cdm/core/src/test/java/ucar/nc2/filter/TestClassifier.java +++ /dev/null @@ -1,51 +0,0 @@ -// package ucar.nc2.filter; -// -// import static org.junit.Assert.*; -// import org.junit.Test; -// import ucar.ma2.Array; -// -// -// public class TestClassifier { -// -// -// -// /** test doubles */ -// @Test -// public void testClassifyDoubleArray_AllPositive() { -// Classifier classifier = new Classifier(); -// double[] input = {1.1, 2.2, 3.3}; -// int[] expected = {1, 1, 1}; -// Array DATA = Array.makeFromJavaArray(input); -// assertArrayEquals(expected, classifier.classifyDoubleArray(DATA)); -// } -// -// @Test -// public void testClassifyDoubleArray_AllNegative() { -// Classifier classifier = new Classifier(); -// double[] input = {-1.1, -2.2, -3.3}; -// int[] expected = {0, 0, 0}; -// Array DATA = Array.makeFromJavaArray(input); -// assertArrayEquals(expected, classifier.classifyDoubleArray(DATA)); -// } -// -// @Test -// public void testClassifyDoubleArray_Mixed() { -// Classifier classifier = new Classifier(); -// double[] input = {-1.1, 2.2, -3.3, 4.4}; -// int[] expected = {0, 1, 0, 1}; -// Array DATA = Array.makeFromJavaArray(input); -// assertArrayEquals(expected, classifier.classifyDoubleArray(DATA)); -// } -// -// @Test -// public void testClassifyDoubleArray_WithZero() { -// Classifier classifier = new Classifier(); -// double[] input = {0.0, -1.1, 1.1, 0.0, 0.0, 0.0}; -// int[] expected = {1, 0, 1, 1, 1, 1}; -// Array DATA = Array.makeFromJavaArray(input); -// assertArrayEquals(expected, classifier.classifyDoubleArray(DATA)); -// } -// -// -// -// } diff --git a/cdm/core/src/test/java/ucar/nc2/ncml/TestEnhanceClassifier.java b/cdm/core/src/test/java/ucar/nc2/ncml/TestEnhanceClassifier.java index e5ce678b0d..a61d43d2c8 100644 --- a/cdm/core/src/test/java/ucar/nc2/ncml/TestEnhanceClassifier.java +++ b/cdm/core/src/test/java/ucar/nc2/ncml/TestEnhanceClassifier.java @@ -18,12 +18,52 @@ public class TestEnhanceClassifier { private static String dataDir = TestDir.cdmLocalTestDataDir + "ncml/enhance/"; - + public static final int[] mixNumbers = {1, 0, 0, 1, 0}; + public static final Array DATA_mixNumbers = Array.makeFromJavaArray(mixNumbers); public static final int[] Classification_test = {0, -2147483648, 0, 0, 10, 10, 10, 100, 100, 100, -2147483648, 100, 1000, 1000, 1000, 1000, 1000}; public static final Array CLASSIFICATION_TEST = Array.makeFromJavaArray(Classification_test); - /** test on doubles, all positives, all negatives and a mixed array */ + @Test + public void testEnhanceClassifier_Ints() throws IOException { + + try (NetcdfFile ncfile = NetcdfDatasets.openDataset(dataDir + "testAddToClassifier.ncml", true, null)) { + + Variable classifySpecs = ncfile.findVariable("classify_ints"); + assertThat((Object) classifySpecs).isNotNull(); + assertThat(!classifySpecs.attributes().isEmpty()).isTrue(); + Array Data = classifySpecs.read(); + Classifier classifier = Classifier.createFromVariable(classifySpecs); + int[] ClassifiedArray = classifier.classifyWithAttributes(Data); + assertThat(nearlyEquals(Array.makeFromJavaArray(ClassifiedArray), DATA_mixNumbers)).isTrue(); + + + } catch (IOException e) { + throw new RuntimeException(e); + } + + } + + @Test + public void testEnhanceClassifier_Floats() throws IOException { + + try (NetcdfFile ncfile = NetcdfDatasets.openDataset(dataDir + "testAddToClassifier.ncml", true, null)) { + + Variable classifySpecs = ncfile.findVariable("classify_floats"); + assertThat((Object) classifySpecs).isNotNull(); + assertThat(!classifySpecs.attributes().isEmpty()).isTrue(); + Array Data = classifySpecs.read(); + Classifier classifier = Classifier.createFromVariable(classifySpecs); + int[] ClassifiedArray = classifier.classifyWithAttributes(Data); + assertThat(nearlyEquals(Array.makeFromJavaArray(ClassifiedArray), DATA_mixNumbers)).isTrue(); + + + } catch (IOException e) { + throw new RuntimeException(e); + } + + } + @Test public void testEnhanceClassifier_classification() throws IOException {