From 87fa13c12cc5e71c067e1b9d89533c03348a6a5a Mon Sep 17 00:00:00 2001 From: Stefan Hahmann Date: Wed, 11 Oct 2023 15:03:54 +0200 Subject: [PATCH 1/4] Use scijavas new custom labels feature for the config enums --- .../ClusterRootNodesController.java | 8 +++---- .../clustering/config/ClusteringMethod.java | 11 ++------- .../mamut/clustering/config/CropCriteria.java | 16 ++++--------- .../clustering/config/SimilarityMeasure.java | 12 ++-------- .../clustering/ui/ClusterRootNodesView.java | 23 +++++++------------ .../config/ClusteringMethodTest.java | 8 +------ .../clustering/config/CropCriteriaTest.java | 9 +------- .../config/SimilarityMeasureTest.java | 10 +------- 8 files changed, 23 insertions(+), 74 deletions(-) diff --git a/src/main/java/org/mastodon/mamut/clustering/ClusterRootNodesController.java b/src/main/java/org/mastodon/mamut/clustering/ClusterRootNodesController.java index a4abe20ed..23f1dd8b2 100644 --- a/src/main/java/org/mastodon/mamut/clustering/ClusterRootNodesController.java +++ b/src/main/java/org/mastodon/mamut/clustering/ClusterRootNodesController.java @@ -128,13 +128,13 @@ private void runClassification() String getParameters() { StringJoiner joiner = new StringJoiner( ", " ); - joiner.add( "Crop criterion: " + cropCriterion.getName() ); + joiner.add( "Crop criterion: " + cropCriterion ); joiner.add( "Crop start: " + cropStart ); joiner.add( "Crop end: " + cropEnd ); joiner.add( "Number of classes: " + numberOfClasses ); joiner.add( "Minimum cell divisions: " + minCellDivisions ); - joiner.add( "Similarity measure: " + similarityMeasure.getName() ); - joiner.add( "Clustering method: " + clusteringMethod.getName() ); + joiner.add( "Similarity measure: " + similarityMeasure ); + joiner.add( "Clustering method: " + clusteringMethod ); joiner.add( "Resulting lineage trees: " + getRoots().size() ); return joiner.toString(); } @@ -244,7 +244,7 @@ public void setInputParams( final CropCriteria cropCriterion, final int cropStar this.cropStart = cropStart; this.cropEnd = cropEnd; this.minCellDivisions = minCellDivisions; - logger.debug( "Crop criterion {}, start: {}, end: {}", cropCriterion.getName(), this.cropStart, this.cropEnd ); + logger.debug( "Crop criterion {}, start: {}, end: {}", cropCriterion, this.cropStart, this.cropEnd ); } public void setComputeParams( SimilarityMeasure similarityMeasure, ClusteringMethod clusteringMethod, int numberOfClasses ) diff --git a/src/main/java/org/mastodon/mamut/clustering/config/ClusteringMethod.java b/src/main/java/org/mastodon/mamut/clustering/config/ClusteringMethod.java index 198e101ad..8ea22238d 100644 --- a/src/main/java/org/mastodon/mamut/clustering/config/ClusteringMethod.java +++ b/src/main/java/org/mastodon/mamut/clustering/config/ClusteringMethod.java @@ -51,19 +51,12 @@ public enum ClusteringMethod this.linkageStrategy = linkageStrategy; } - public String getName() + @Override + public String toString() { return name; } - public static ClusteringMethod getByName(final String name) { - for (final ClusteringMethod method : values()) - if (method.getName().equals(name)) - return method; - - throw new NoSuchElementException(); - } - public LinkageStrategy getLinkageStrategy() { return linkageStrategy; diff --git a/src/main/java/org/mastodon/mamut/clustering/config/CropCriteria.java b/src/main/java/org/mastodon/mamut/clustering/config/CropCriteria.java index b751c95dc..6d9a143a4 100644 --- a/src/main/java/org/mastodon/mamut/clustering/config/CropCriteria.java +++ b/src/main/java/org/mastodon/mamut/clustering/config/CropCriteria.java @@ -45,22 +45,14 @@ public enum CropCriteria this.nameShort = nameShort; } - public static CropCriteria getByName( final String name ) + public String getNameShort() { - for ( final CropCriteria criteria : values() ) - if ( criteria.getName().equals( name ) ) - return criteria; - - throw new NoSuchElementException(); + return nameShort; } - public String getName() + @Override + public String toString() { return name; } - - public String getNameShort() - { - return nameShort; - } } diff --git a/src/main/java/org/mastodon/mamut/clustering/config/SimilarityMeasure.java b/src/main/java/org/mastodon/mamut/clustering/config/SimilarityMeasure.java index 1e1d212c1..feb0c3e26 100644 --- a/src/main/java/org/mastodon/mamut/clustering/config/SimilarityMeasure.java +++ b/src/main/java/org/mastodon/mamut/clustering/config/SimilarityMeasure.java @@ -53,21 +53,13 @@ public enum SimilarityMeasure this.distanceFunction = distanceFunction; } - public static SimilarityMeasure getByName(final String name) - { - for (final SimilarityMeasure measure : values()) - if (measure.getName().equals(name)) - return measure; - - throw new NoSuchElementException(); - } - public double compute( Tree< Double > tree1, Tree< Double > tree2, BinaryOperator< Double > costFunction ) { return distanceFunction.apply( tree1, tree2, costFunction ); } - public String getName() + @Override + public String toString() { return name; } diff --git a/src/main/java/org/mastodon/mamut/clustering/ui/ClusterRootNodesView.java b/src/main/java/org/mastodon/mamut/clustering/ui/ClusterRootNodesView.java index adb9291ad..fe2d6c4ef 100644 --- a/src/main/java/org/mastodon/mamut/clustering/ui/ClusterRootNodesView.java +++ b/src/main/java/org/mastodon/mamut/clustering/ui/ClusterRootNodesView.java @@ -63,8 +63,8 @@ public class ClusterRootNodesView extends InteractiveCommand + "\n"; @SuppressWarnings("all") - @Parameter(label = "Crop criterion", choices = { "Timepoint", "Number of cells" }, callback = "update") - private String cropCriterion = CropCriteria.TIMEPOINT.getName(); + @Parameter(label = "Crop criterion", callback = "update") + private CropCriteria cropCriterion = CropCriteria.TIMEPOINT; @SuppressWarnings("unused") @Parameter(label = "Crop start", min = "0", callback = "update") @@ -83,18 +83,12 @@ public class ClusterRootNodesView extends InteractiveCommand private int numberOfCellDivisions; @SuppressWarnings("all") - @Parameter( - label = "Similarity measure", choices = { "Normalized Zhang Tree Distance", "Per Branch Spot Zhang Tree Distance", - "Zhang Tree Distance" }, callback = "update" - ) - private String similarityMeasure = SimilarityMeasure.NORMALIZED_DIFFERENCE.getName(); + @Parameter(label = "Similarity measure", callback = "update") + private SimilarityMeasure similarityMeasure = SimilarityMeasure.NORMALIZED_DIFFERENCE; @SuppressWarnings("all") - @Parameter( - label = "Linkage strategy for hierarchical clustering", choices = { "Average linkage", "Single Linkage", - "Complete Linkage" }, callback = "update" - ) - private String clusteringMethod = ClusteringMethod.AVERAGE_LINKAGE.getName(); + @Parameter(label = "Linkage strategy for hierarchical clustering", callback = "update") + private ClusteringMethod clusteringMethod = ClusteringMethod.AVERAGE_LINKAGE; @SuppressWarnings("unused") @Parameter(label = "Feature", choices = "Branch duration", callback = "update") @@ -129,9 +123,8 @@ public void run() @SuppressWarnings("unused") private void update() { - controller.setInputParams( CropCriteria.getByName( cropCriterion ), start, end, numberOfCellDivisions ); - controller.setComputeParams( - SimilarityMeasure.getByName( similarityMeasure ), ClusteringMethod.getByName( clusteringMethod ), numberOfClasses ); + controller.setInputParams( cropCriterion, start, end, numberOfCellDivisions ); + controller.setComputeParams( similarityMeasure, clusteringMethod, numberOfClasses ); controller.setShowDendrogram( showDendrogram ); paramFeedback = ""; diff --git a/src/test/java/org/mastodon/mamut/clustering/config/ClusteringMethodTest.java b/src/test/java/org/mastodon/mamut/clustering/config/ClusteringMethodTest.java index 148383a31..ce06083de 100644 --- a/src/test/java/org/mastodon/mamut/clustering/config/ClusteringMethodTest.java +++ b/src/test/java/org/mastodon/mamut/clustering/config/ClusteringMethodTest.java @@ -40,13 +40,7 @@ public class ClusteringMethodTest @Test public void testGetName() { - assertEquals( "Average linkage", ClusteringMethod.AVERAGE_LINKAGE.getName() ); + assertEquals( "Average linkage", ClusteringMethod.AVERAGE_LINKAGE.toString() ); } - @Test - public void testGetByName() - { - assertEquals( ClusteringMethod.AVERAGE_LINKAGE, ClusteringMethod.getByName( "Average linkage" ) ); - assertThrows( NoSuchElementException.class, () -> ClusteringMethod.getByName( "foo" ) ); - } } diff --git a/src/test/java/org/mastodon/mamut/clustering/config/CropCriteriaTest.java b/src/test/java/org/mastodon/mamut/clustering/config/CropCriteriaTest.java index 8fbe11a38..a6795c1e1 100644 --- a/src/test/java/org/mastodon/mamut/clustering/config/CropCriteriaTest.java +++ b/src/test/java/org/mastodon/mamut/clustering/config/CropCriteriaTest.java @@ -40,13 +40,6 @@ public class CropCriteriaTest @Test public void testGetName() { - assertEquals( "Timepoint", CropCriteria.TIMEPOINT.getName() ); - } - - @Test - public void testGetByName() - { - assertEquals( CropCriteria.TIMEPOINT, CropCriteria.getByName( "Timepoint" ) ); - assertThrows( NoSuchElementException.class, () -> CropCriteria.getByName( "foo" ) ); + assertEquals( "Timepoint", CropCriteria.TIMEPOINT.toString() ); } } diff --git a/src/test/java/org/mastodon/mamut/clustering/config/SimilarityMeasureTest.java b/src/test/java/org/mastodon/mamut/clustering/config/SimilarityMeasureTest.java index 7cce4f134..c81429f67 100644 --- a/src/test/java/org/mastodon/mamut/clustering/config/SimilarityMeasureTest.java +++ b/src/test/java/org/mastodon/mamut/clustering/config/SimilarityMeasureTest.java @@ -40,14 +40,6 @@ public class SimilarityMeasureTest @Test public void testGetName() { - assertEquals( "Normalized Zhang Tree Distance", SimilarityMeasure.NORMALIZED_DIFFERENCE.getName() ); + assertEquals( "Normalized Zhang Tree Distance", SimilarityMeasure.NORMALIZED_DIFFERENCE.toString() ); } - - @Test - public void testGetByName() - { - assertEquals( SimilarityMeasure.NORMALIZED_DIFFERENCE, SimilarityMeasure.getByName( "Normalized Zhang Tree Distance" ) ); - assertThrows( NoSuchElementException.class, () -> SimilarityMeasure.getByName( "foo" ) ); - } - } From be4c1df6300c4f24d9de7c852c08cbc7a9b11806 Mon Sep 17 00:00:00 2001 From: Stefan Hahmann Date: Thu, 9 Nov 2023 14:30:40 +0100 Subject: [PATCH 2/4] Remove unrequired imports of NoSuchElementException in ClusteringMethod, CropCriteria and SimilarityMeasure --- .../org/mastodon/mamut/clustering/config/ClusteringMethod.java | 2 -- .../org/mastodon/mamut/clustering/config/CropCriteria.java | 2 -- .../mastodon/mamut/clustering/config/SimilarityMeasure.java | 1 - .../mamut/io/exporter/labelimage/config/LabelOptionsTest.java | 3 --- 4 files changed, 8 deletions(-) diff --git a/src/main/java/org/mastodon/mamut/clustering/config/ClusteringMethod.java b/src/main/java/org/mastodon/mamut/clustering/config/ClusteringMethod.java index 8ea22238d..70683a2d8 100644 --- a/src/main/java/org/mastodon/mamut/clustering/config/ClusteringMethod.java +++ b/src/main/java/org/mastodon/mamut/clustering/config/ClusteringMethod.java @@ -33,8 +33,6 @@ import com.apporiented.algorithm.clustering.SingleLinkageStrategy; import org.mastodon.mamut.clustering.util.AverageLinkageUPGMAStrategy; -import java.util.NoSuchElementException; - public enum ClusteringMethod { AVERAGE_LINKAGE( "Average linkage", new AverageLinkageUPGMAStrategy() ), diff --git a/src/main/java/org/mastodon/mamut/clustering/config/CropCriteria.java b/src/main/java/org/mastodon/mamut/clustering/config/CropCriteria.java index 6d9a143a4..79a0a22b8 100644 --- a/src/main/java/org/mastodon/mamut/clustering/config/CropCriteria.java +++ b/src/main/java/org/mastodon/mamut/clustering/config/CropCriteria.java @@ -28,8 +28,6 @@ */ package org.mastodon.mamut.clustering.config; -import java.util.NoSuchElementException; - public enum CropCriteria { TIMEPOINT( "Timepoint", "time" ), diff --git a/src/main/java/org/mastodon/mamut/clustering/config/SimilarityMeasure.java b/src/main/java/org/mastodon/mamut/clustering/config/SimilarityMeasure.java index feb0c3e26..bdad7bdee 100644 --- a/src/main/java/org/mastodon/mamut/clustering/config/SimilarityMeasure.java +++ b/src/main/java/org/mastodon/mamut/clustering/config/SimilarityMeasure.java @@ -32,7 +32,6 @@ import org.mastodon.mamut.treesimilarity.ZhangUnorderedTreeEditDistance; import org.mastodon.mamut.treesimilarity.tree.Tree; -import java.util.NoSuchElementException; import java.util.function.BiFunction; import java.util.function.BinaryOperator; diff --git a/src/test/java/org/mastodon/mamut/io/exporter/labelimage/config/LabelOptionsTest.java b/src/test/java/org/mastodon/mamut/io/exporter/labelimage/config/LabelOptionsTest.java index 71e453cc7..15cc4d39c 100644 --- a/src/test/java/org/mastodon/mamut/io/exporter/labelimage/config/LabelOptionsTest.java +++ b/src/test/java/org/mastodon/mamut/io/exporter/labelimage/config/LabelOptionsTest.java @@ -29,9 +29,6 @@ package org.mastodon.mamut.io.exporter.labelimage.config; import org.junit.Test; -import org.mastodon.mamut.io.exporter.labelimage.config.LabelOptions; - -import java.util.NoSuchElementException; import static org.junit.Assert.*; From 37b7251db32a492c6cc17a3aa25404e3b1208e1c Mon Sep 17 00:00:00 2001 From: Stefan Hahmann Date: Thu, 9 Nov 2023 14:34:43 +0100 Subject: [PATCH 3/4] Rename testGetName() to testToString() in unit tests --- .../mamut/clustering/config/ClusteringMethodTest.java | 2 +- .../mastodon/mamut/clustering/config/CropCriteriaTest.java | 2 +- .../mamut/clustering/config/SimilarityMeasureTest.java | 4 +--- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/test/java/org/mastodon/mamut/clustering/config/ClusteringMethodTest.java b/src/test/java/org/mastodon/mamut/clustering/config/ClusteringMethodTest.java index ce06083de..56f8eabcc 100644 --- a/src/test/java/org/mastodon/mamut/clustering/config/ClusteringMethodTest.java +++ b/src/test/java/org/mastodon/mamut/clustering/config/ClusteringMethodTest.java @@ -38,7 +38,7 @@ public class ClusteringMethodTest { @Test - public void testGetName() + public void testToString() { assertEquals( "Average linkage", ClusteringMethod.AVERAGE_LINKAGE.toString() ); } diff --git a/src/test/java/org/mastodon/mamut/clustering/config/CropCriteriaTest.java b/src/test/java/org/mastodon/mamut/clustering/config/CropCriteriaTest.java index a6795c1e1..444824c65 100644 --- a/src/test/java/org/mastodon/mamut/clustering/config/CropCriteriaTest.java +++ b/src/test/java/org/mastodon/mamut/clustering/config/CropCriteriaTest.java @@ -38,7 +38,7 @@ public class CropCriteriaTest { @Test - public void testGetName() + public void testToString() { assertEquals( "Timepoint", CropCriteria.TIMEPOINT.toString() ); } diff --git a/src/test/java/org/mastodon/mamut/clustering/config/SimilarityMeasureTest.java b/src/test/java/org/mastodon/mamut/clustering/config/SimilarityMeasureTest.java index c81429f67..d0924b642 100644 --- a/src/test/java/org/mastodon/mamut/clustering/config/SimilarityMeasureTest.java +++ b/src/test/java/org/mastodon/mamut/clustering/config/SimilarityMeasureTest.java @@ -30,15 +30,13 @@ import org.junit.Test; -import java.util.NoSuchElementException; - import static org.junit.Assert.*; public class SimilarityMeasureTest { @Test - public void testGetName() + public void testToString() { assertEquals( "Normalized Zhang Tree Distance", SimilarityMeasure.NORMALIZED_DIFFERENCE.toString() ); } From 84c0994ddbdc0cda79a30fcd0f266062a6d83656 Mon Sep 17 00:00:00 2001 From: Stefan Hahmann Date: Thu, 9 Nov 2023 14:47:14 +0100 Subject: [PATCH 4/4] Use enum LabelOptions directly in ExportLabelImageView * LabelOptions.getByName() method is no longer needed --- .../exporter/labelimage/config/LabelOptions.java | 13 ++----------- .../labelimage/ui/ExportLabelImageView.java | 7 +++---- .../labelimage/config/LabelOptionsTest.java | 16 ++-------------- 3 files changed, 7 insertions(+), 29 deletions(-) diff --git a/src/main/java/org/mastodon/mamut/io/exporter/labelimage/config/LabelOptions.java b/src/main/java/org/mastodon/mamut/io/exporter/labelimage/config/LabelOptions.java index f22d3f07b..8cdf34e6e 100644 --- a/src/main/java/org/mastodon/mamut/io/exporter/labelimage/config/LabelOptions.java +++ b/src/main/java/org/mastodon/mamut/io/exporter/labelimage/config/LabelOptions.java @@ -28,8 +28,6 @@ */ package org.mastodon.mamut.io.exporter.labelimage.config; -import java.util.NoSuchElementException; - public enum LabelOptions { @@ -46,15 +44,8 @@ public enum LabelOptions this.name = name; } - public static LabelOptions getByName( final String name ) - { - for ( final LabelOptions options : values() ) - if ( options.getName().equals( name ) ) - return options; - throw new NoSuchElementException(); - } - - public String getName() + @Override + public String toString() { return name; } diff --git a/src/main/java/org/mastodon/mamut/io/exporter/labelimage/ui/ExportLabelImageView.java b/src/main/java/org/mastodon/mamut/io/exporter/labelimage/ui/ExportLabelImageView.java index cc404bd77..c0c722c4b 100644 --- a/src/main/java/org/mastodon/mamut/io/exporter/labelimage/ui/ExportLabelImageView.java +++ b/src/main/java/org/mastodon/mamut/io/exporter/labelimage/ui/ExportLabelImageView.java @@ -56,8 +56,8 @@ public class ExportLabelImageView implements Command + "\n"; @SuppressWarnings("all") - @Parameter(label = "Label Id", choices = { "Spot track Id", "Branch spot ID", "Spot ID" }) - private String option = LabelOptions.BRANCH_SPOT_ID.getName(); + @Parameter(label = "Label Id") + private LabelOptions option = LabelOptions.BRANCH_SPOT_ID; @SuppressWarnings("all") @Parameter(label = "Frame rate reduction", description = "Only export every n-th. 1 means no reduction. Value must be >= 1.", min = "1") @@ -83,7 +83,6 @@ public class ExportLabelImageView implements Command public void run() { ExportLabelImageController controller = new ExportLabelImageController( projectModel, context ); - LabelOptions selectedOption = LabelOptions.getByName( option ); - controller.saveLabelImageToFile( selectedOption, saveTo, showResult, frameRateReduction ); + controller.saveLabelImageToFile( option, saveTo, showResult, frameRateReduction ); } } diff --git a/src/test/java/org/mastodon/mamut/io/exporter/labelimage/config/LabelOptionsTest.java b/src/test/java/org/mastodon/mamut/io/exporter/labelimage/config/LabelOptionsTest.java index 15cc4d39c..ad047cbf2 100644 --- a/src/test/java/org/mastodon/mamut/io/exporter/labelimage/config/LabelOptionsTest.java +++ b/src/test/java/org/mastodon/mamut/io/exporter/labelimage/config/LabelOptionsTest.java @@ -34,21 +34,9 @@ public class LabelOptionsTest { - - @Test - public void getByName() - { - assertEquals( LabelOptions.SPOT_ID, LabelOptions.getByName( "Spot ID" ) ); - assertEquals( LabelOptions.BRANCH_SPOT_ID, LabelOptions.getByName( "Branch spot ID" ) ); - assertEquals( LabelOptions.TRACK_ID, LabelOptions.getByName( "Spot track Id" ) ); - assertThrows( NoSuchElementException.class, () -> LabelOptions.getByName( "Foo" ) ); - } - @Test - public void getName() + public void testToString() { - assertEquals( "Spot ID", LabelOptions.SPOT_ID.getName() ); - assertEquals( "Branch spot ID", LabelOptions.BRANCH_SPOT_ID.getName() ); - assertEquals( "Spot track Id", LabelOptions.TRACK_ID.getName() ); + assertEquals( "Spot ID", LabelOptions.SPOT_ID.toString() ); } }