Skip to content

Commit 01a5c80

Browse files
authored
Merge pull request #121 from ctrueden/fix-windows-tests
Fix Windows build issues
2 parents d585f1c + 43e2825 commit 01a5c80

30 files changed

+318
-215
lines changed

pom.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
<groupId>sc.fiji</groupId>
1212
<artifactId>labkit-ui</artifactId>
13-
<version>0.4.1-SNAPSHOT</version>
13+
<version>0.5.0-SNAPSHOT</version>
1414

1515
<name>Labkit</name>
1616
<description>The Labkit image segmentation tool for Fiji.</description>
@@ -95,6 +95,7 @@
9595
<imglib2-algorithm.version>0.15.3</imglib2-algorithm.version>
9696
<bigdataviewer-core.version>10.6.0</bigdataviewer-core.version>
9797
<labkit-pixel-classification.version>0.1.18</labkit-pixel-classification.version>
98+
<spim_data.version>2.3.4</spim_data.version>
9899
</properties>
99100

100101
<dependencies>

src/main/java/sc/fiji/labkit/ui/LabkitFrame.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
import sc.fiji.labkit.ui.models.DefaultSegmentationModel;
4040
import sc.fiji.labkit.ui.models.SegmentationModel;
4141
import sc.fiji.labkit.ui.utils.Notifier;
42-
import sc.fiji.labkit.pixel_classification.utils.SingletonContext;
4342
import org.scijava.Context;
4443

4544
import javax.swing.*;
@@ -65,8 +64,6 @@ public class LabkitFrame {
6564
public static LabkitFrame showForFile(Context context,
6665
final String filename)
6766
{
68-
if (context == null)
69-
context = SingletonContext.getInstance();
7067
Dataset dataset = openDataset(context, filename);
7168
return showForImage(context, new DatasetInputImage(dataset));
7269
}
@@ -83,8 +80,6 @@ private static Dataset openDataset(Context context, String filename) {
8380
public static LabkitFrame showForImage(Context context,
8481
final InputImage inputImage)
8582
{
86-
if (context == null)
87-
context = SingletonContext.getInstance();
8883
final SegmentationModel model = new DefaultSegmentationModel(context, inputImage);
8984
model.imageLabelingModel().labeling().set(InitialLabeling.initialLabeling(context, inputImage));
9085
return show(model, inputImage.imageForSegmentation().getName());

src/main/java/sc/fiji/labkit/ui/models/DefaultSegmentationModel.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ List<RandomAccessibleInterval<T>> getSegmentations(T type)
9292
Stream<Segmenter> trainedSegmenters = getTrainedSegmenters();
9393
return trainedSegmenters
9494
.map(segmenter -> {
95-
SegmentationTool segmentationTool = new SegmentationTool(segmenter);
95+
SegmentationTool segmentationTool = new SegmentationTool(context, segmenter);
9696
segmentationTool.setProgressWriter(new DummyProgressWriter());
9797
return segmentationTool.segment(image, type);
9898
})
@@ -105,7 +105,7 @@ public List<RandomAccessibleInterval<FloatType>> getPredictions() {
105105
Stream<Segmenter> trainedSegmenters = getTrainedSegmenters();
106106
return trainedSegmenters
107107
.map(segmenter -> {
108-
SegmentationTool segmentationTool = new SegmentationTool(segmenter);
108+
SegmentationTool segmentationTool = new SegmentationTool(context, segmenter);
109109
segmentationTool.setProgressWriter(new DummyProgressWriter());
110110
return segmentationTool.probabilityMap(image);
111111
})

src/main/java/sc/fiji/labkit/ui/panel/AddSegmenterPanel.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,13 @@
3333
import sc.fiji.labkit.ui.models.SegmenterListModel;
3434
import sc.fiji.labkit.ui.segmentation.SegmentationPlugin;
3535
import sc.fiji.labkit.ui.segmentation.SegmentationPluginService;
36-
import sc.fiji.labkit.pixel_classification.utils.SingletonContext;
3736
import net.miginfocom.swing.MigLayout;
3837
import org.scijava.Context;
3938

4039
import javax.swing.*;
4140
import java.awt.*;
41+
import java.awt.event.WindowAdapter;
42+
import java.awt.event.WindowEvent;
4243

4344
/**
4445
* Panel that shows a list of available segmentation algorithms. This panel is
@@ -69,10 +70,16 @@ private void addButtons(SegmenterListModel segmenterListModel, JPanel list) {
6970

7071
public static void main(String... args) {
7172
JFrame frame = new JFrame("Select Segmentation Algorithm");
72-
Context context = SingletonContext.getInstance();
73+
Context context = new Context();
7374
SegmenterListModel slm = new SegmenterListModel(context, new ExtensionPoints());
7475
frame.add(new AddSegmenterPanel(slm));
7576
frame.setSize(300, 300);
7677
frame.setVisible(true);
78+
frame.addWindowListener(new WindowAdapter() {
79+
@Override
80+
public void windowClosed(WindowEvent e) {
81+
context.dispose();
82+
}
83+
});
7784
}
7885
}

src/main/java/sc/fiji/labkit/ui/plugin/AbstractProcessFilesInDirectoryPlugin.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import org.apache.commons.io.FilenameUtils;
3939
import org.apache.commons.io.filefilter.WildcardFileFilter;
4040
import org.scijava.Cancelable;
41+
import org.scijava.Context;
4142
import org.scijava.app.StatusService;
4243
import org.scijava.command.Command;
4344
import org.scijava.log.Logger;
@@ -52,6 +53,9 @@
5253

5354
abstract class AbstractProcessFilesInDirectoryPlugin implements Command, Cancelable {
5455

56+
@Parameter
57+
private Context context;
58+
5559
@Parameter
5660
private DatasetIOService io;
5761

@@ -84,7 +88,7 @@ abstract class AbstractProcessFilesInDirectoryPlugin implements Command, Cancela
8488

8589
@Override
8690
public void run() {
87-
SegmentationTool segmenter = new SegmentationTool();
91+
SegmentationTool segmenter = new SegmentationTool(context);
8892
segmenter.setUseGpu(use_gpu);
8993
segmenter.openModel(segmenter_file.getAbsolutePath());
9094
segmenter.setProgressWriter(new StatusServiceProgressWriter(statusService));

src/main/java/sc/fiji/labkit/ui/plugin/CalculateProbabilityMapWithLabkitIJ1Plugin.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,7 @@ public class CalculateProbabilityMapWithLabkitIJ1Plugin implements Command, Canc
7272

7373
@Override
7474
public void run() {
75-
SegmentationTool segmenter = new SegmentationTool();
76-
segmenter.setContext(context);
75+
SegmentationTool segmenter = new SegmentationTool(context);
7776
segmenter.openModel(segmenter_file.getAbsolutePath());
7877
segmenter.setUseGpu(use_gpu);
7978
segmenter.setProgressWriter(new StatusServiceProgressWriter(statusService));

src/main/java/sc/fiji/labkit/ui/plugin/CalculateProbabilityMapWithLabkitPlugin.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,7 @@ public class CalculateProbabilityMapWithLabkitPlugin implements Command, Cancela
7474

7575
@Override
7676
public void run() {
77-
SegmentationTool segmenter = new SegmentationTool();
78-
segmenter.setContext(context);
77+
SegmentationTool segmenter = new SegmentationTool(context);
7978
segmenter.openModel(segmenter_file.getAbsolutePath());
8079
segmenter.setUseGpu(use_gpu);
8180
segmenter.setProgressWriter(new StatusServiceProgressWriter(statusService));

src/main/java/sc/fiji/labkit/ui/plugin/SegmentImageWithLabkitIJ1Plugin.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,7 @@ public class SegmentImageWithLabkitIJ1Plugin implements Command, Cancelable {
7171

7272
@Override
7373
public void run() {
74-
SegmentationTool segmenter = new SegmentationTool();
75-
segmenter.setContext(context);
74+
SegmentationTool segmenter = new SegmentationTool(context);
7675
segmenter.setUseGpu(use_gpu);
7776
segmenter.setProgressWriter(new StatusServiceProgressWriter(statusService));
7877
segmenter.openModel(segmenter_file.getAbsolutePath());

src/main/java/sc/fiji/labkit/ui/plugin/SegmentImageWithLabkitPlugin.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,7 @@ public class SegmentImageWithLabkitPlugin implements Command, Cancelable {
7474

7575
@Override
7676
public void run() {
77-
SegmentationTool segmenter = new SegmentationTool();
78-
segmenter.setContext(context);
77+
SegmentationTool segmenter = new SegmentationTool(context);
7978
segmenter.setUseGpu(use_gpu);
8079
segmenter.setProgressWriter(new StatusServiceProgressWriter(statusService));
8180
segmenter.openModel(segmenter_file.getAbsolutePath());

src/main/java/sc/fiji/labkit/ui/segmentation/SegmentationTool.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@
4747
import net.imglib2.util.Intervals;
4848
import org.apache.commons.lang3.ArrayUtils;
4949
import org.scijava.Context;
50-
import sc.fiji.labkit.pixel_classification.utils.SingletonContext;
5150
import sc.fiji.labkit.ui.inputimage.DatasetInputImage;
5251
import sc.fiji.labkit.ui.inputimage.ImgPlusViewsOld;
5352
import sc.fiji.labkit.ui.models.CachedImageFactory;
@@ -71,16 +70,16 @@ public class SegmentationTool {
7170

7271
private final CachedImageFactory cachedImageFactory = DefaultCachedImageFactory.getInstance();
7372

74-
public SegmentationTool() {
75-
73+
public SegmentationTool(Context context) {
74+
this(context, null);
7675
}
7776

78-
public SegmentationTool(Segmenter segmenter) {
77+
public SegmentationTool(Context context, Segmenter segmenter) {
78+
this.context = Objects.requireNonNull(context);
7979
this.segmenter = segmenter;
8080
}
8181

8282
public void openModel(String classifierFile) {
83-
Context context = this.context != null ? this.context : SingletonContext.getInstance();
8483
Segmenter segmenter = new TrainableSegmentationSegmenter(context);
8584
segmenter.openModel(classifierFile);
8685
setSegmenter(segmenter);
@@ -94,10 +93,6 @@ public void setSegmenter(Segmenter segmenter) {
9493
this.segmenter.setUseGpu(useGpu);
9594
}
9695

97-
public void setContext(Context context) {
98-
this.context = Objects.requireNonNull(context);
99-
}
100-
10196
public void setProgressWriter(ProgressWriter progressWriter) {
10297
this.progressWriter = Objects.requireNonNull(progressWriter);
10398
}

src/main/java/sc/fiji/labkit/ui/segmentation/weka/PixelClassificationPlugin.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131

3232
import sc.fiji.labkit.ui.segmentation.SegmentationPlugin;
3333
import sc.fiji.labkit.ui.segmentation.Segmenter;
34-
import sc.fiji.labkit.pixel_classification.utils.SingletonContext;
3534
import org.scijava.Context;
3635
import org.scijava.plugin.Parameter;
3736
import org.scijava.plugin.Plugin;
@@ -66,8 +65,7 @@ public boolean canOpenFile(String filename) {
6665
}
6766
}
6867

69-
public static SegmentationPlugin create() {
70-
Context context = SingletonContext.getInstance();
68+
public static SegmentationPlugin create(Context context) {
7169
PixelClassificationPlugin plugin = new PixelClassificationPlugin();
7270
context.inject(plugin);
7371
return plugin;

src/test/java/demo/ChangingImageSegmentationComponentDemo.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
import sc.fiji.labkit.ui.models.DefaultSegmentationModel;
4242
import sc.fiji.labkit.ui.models.ImageLabelingModel;
4343
import sc.fiji.labkit.ui.models.SegmentationModel;
44-
import sc.fiji.labkit.pixel_classification.utils.SingletonContext;
4544
import net.imglib2.type.numeric.integer.UnsignedByteType;
4645
import net.imglib2.view.Views;
4746
import net.miginfocom.swing.MigLayout;
@@ -93,8 +92,7 @@ private static void onChangeImageButtonClicked(SegmentationModel segmentationMod
9392
DatasetInputImage datasetInputImage = new DatasetInputImage(image);
9493
model.showable().set(datasetInputImage.showable());
9594
model.imageForSegmentation().set(datasetInputImage.imageForSegmentation());
96-
model.labeling().set(InitialLabeling.initialLabeling(SingletonContext.getInstance(),
97-
datasetInputImage));
95+
model.labeling().set(InitialLabeling.initialLabeling(new Context(), datasetInputImage));
9896
}
9997

10098
private JPanel getBottomPanel() {

src/test/java/demo/MultiChannelMovieDemo.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,12 @@
7373
*/
7474
public class MultiChannelMovieDemo {
7575

76+
private static Context context;
77+
7678
public static void main(String... args) {
79+
context = new Context();
7780
main2();
81+
// TODO: Dispose context when relevant window is closed.
7882
}
7983

8084
private static void main1() {
@@ -120,7 +124,7 @@ public void testInputImageImageForSegmentation() {
120124
SegmentationModel segmentationModel = new DefaultSegmentationModel(
121125
new Context(), inputImage);
122126
SegmentationItem segmenter = segmentationModel.segmenterList().addSegmenter(
123-
PixelClassificationPlugin.create());
127+
PixelClassificationPlugin.create(context));
124128
Labeling labeling1 = labeling5d();
125129
segmentationModel.imageLabelingModel().labeling().set(labeling1);
126130
segmenter.train(Collections.singletonList(new ValuePair<>(inputImage

src/test/java/sc/fiji/labkit/ui/InitialLabelingTest.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,9 @@
3434
import net.imagej.axis.EnumeratedAxis;
3535
import net.imglib2.img.Img;
3636
import net.imglib2.img.array.ArrayImgs;
37-
import sc.fiji.labkit.pixel_classification.utils.SingletonContext;
37+
import org.junit.AfterClass;
38+
import org.junit.BeforeClass;
39+
import org.scijava.Context;
3840
import sc.fiji.labkit.ui.inputimage.DatasetInputImage;
3941
import sc.fiji.labkit.ui.labeling.Labeling;
4042
import net.imglib2.type.numeric.integer.UnsignedByteType;
@@ -49,6 +51,18 @@
4951

5052
public class InitialLabelingTest {
5153

54+
private static Context context;
55+
56+
@BeforeClass
57+
public static void setUp() {
58+
context = new Context();
59+
}
60+
61+
@AfterClass
62+
public static void tearDown() {
63+
context.dispose();
64+
}
65+
5266
@Test
5367
public void testDoNotCrashWhenLabelingFileIsEmpty() throws IOException {
5468
File empty = File.createTempFile("labkit-InitialLabelingTest-",
@@ -59,7 +73,7 @@ public void testDoNotCrashWhenLabelingFileIsEmpty() throws IOException {
5973
DatasetInputImage inputImage = new DatasetInputImage(image);
6074
List<String> defaultLabels = Collections.emptyList();
6175
Labeling result = InitialLabeling.initLabeling(inputImage,
62-
SingletonContext.getInstance(),
76+
context,
6377
defaultLabels);
6478
assertNotNull(result);
6579
}
@@ -75,7 +89,7 @@ public void testEnumeratedAxis() {
7589
EnumeratedAxis yAxis = new EnumeratedAxis(Axes.Y, "mm", new double[] { 0, 0.3 });
7690
ImgPlus<UnsignedByteType> image = new ImgPlus<>(img, "test", xAxis, yAxis);
7791
DatasetInputImage inputImage = new DatasetInputImage(image);
78-
Labeling result = InitialLabeling.initialLabeling(SingletonContext.getInstance(), inputImage);
92+
Labeling result = InitialLabeling.initialLabeling(context, inputImage);
7993
assertNotNull(result);
8094
}
8195
}

src/test/java/sc/fiji/labkit/ui/SegmentationUseCaseTest.java

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
3939
import net.imglib2.img.Img;
4040
import net.imglib2.img.array.ArrayImgs;
4141
import net.imglib2.type.numeric.IntegerType;
42+
import org.junit.AfterClass;
43+
import org.junit.BeforeClass;
4244
import sc.fiji.labkit.ui.bdv.BdvShowable;
4345
import sc.fiji.labkit.ui.inputimage.DatasetInputImage;
4446
import sc.fiji.labkit.ui.inputimage.InputImage;
@@ -51,7 +53,6 @@
5153
import sc.fiji.labkit.ui.segmentation.weka.PixelClassificationPlugin;
5254
import sc.fiji.labkit.ui.segmentation.SegmentationPlugin;
5355
import net.imglib2.roi.labeling.LabelingType;
54-
import net.imglib2.type.numeric.integer.ShortType;
5556
import net.imglib2.type.numeric.integer.UnsignedByteType;
5657
import net.imglib2.util.Intervals;
5758
import net.imglib2.util.ValuePair;
@@ -70,22 +71,34 @@
7071

7172
public class SegmentationUseCaseTest {
7273

74+
private static Context context;
75+
76+
@BeforeClass
77+
public static void setUp() {
78+
context = new Context();
79+
}
80+
81+
@AfterClass
82+
public static void tearDown() {
83+
context.dispose();
84+
}
85+
7386
@Test
7487
public void test() {
7588
ImgPlus<UnsignedByteType> image = new ImgPlus<>(ArrayImgs.unsignedBytes(new byte[] { 1, 1, 2,
7689
2 }, 2, 2));
7790
InputImage inputImage = new DatasetInputImage(image);
7891
SegmentationModel segmentationModel = new DefaultSegmentationModel(
79-
new Context(), inputImage);
92+
context, inputImage);
8093
addLabels(segmentationModel.imageLabelingModel());
81-
SegmentationPlugin plugin = PixelClassificationPlugin.create();
94+
SegmentationPlugin plugin = PixelClassificationPlugin.create(context);
8295
SegmentationItem segmenter = segmentationModel.segmenterList().addSegmenter(plugin);
8396
segmenter.train(Collections.singletonList(new ValuePair<>(image,
8497
segmentationModel.imageLabelingModel().labeling().get())));
8598
RandomAccessibleInterval<? extends IntegerType<?>> result =
8699
segmenter.results(segmentationModel.imageLabelingModel()).segmentation();
87100
List<Integer> list = new ArrayList<>();
88-
Views.iterable(result).forEach(x -> list.add(x.getInteger()));
101+
result.forEach(x -> list.add(x.getInteger()));
89102
assertEquals(Arrays.asList(1, 1, 0, 0), list);
90103
}
91104

@@ -99,7 +112,7 @@ private void addLabels(ImageLabelingModel imageLabelingModel) {
99112
}
100113

101114
@Test
102-
public void testMultiChannel() throws InterruptedException {
115+
public void testMultiChannel() {
103116
Img<UnsignedByteType> img = ArrayImgs.unsignedBytes(new byte[] { -1, 0, -1,
104117
0, -1, -1, 0, 0 }, 2, 2, 2);
105118
ImgPlus<UnsignedByteType> imgPlus = new ImgPlus<>(img, "Image",
@@ -108,17 +121,17 @@ public void testMultiChannel() throws InterruptedException {
108121
.wrap(Views.hyperSlice(img, 2, 0)));
109122

110123
Labeling labeling = getLabeling();
111-
SegmentationModel segmentationModel = new DefaultSegmentationModel(new Context(),
124+
SegmentationModel segmentationModel = new DefaultSegmentationModel(context,
112125
inputImage);
113126
ImageLabelingModel imageLabelingModel = segmentationModel.imageLabelingModel();
114127
imageLabelingModel.labeling().set(labeling);
115128
SegmentationItem segmenter = segmentationModel.segmenterList().addSegmenter(
116-
PixelClassificationPlugin.create());
129+
PixelClassificationPlugin.create(context));
117130
segmenter.train(Collections.singletonList(new ValuePair<>(imgPlus,
118131
imageLabelingModel.labeling().get())));
119132
RandomAccessibleInterval<? extends IntegerType<?>> result =
120133
segmenter.results(imageLabelingModel).segmentation();
121-
Iterator<? extends IntegerType<?>> it = Views.iterable(result).iterator();
134+
Iterator<? extends IntegerType<?>> it = result.iterator();
122135
assertEquals(1, it.next().getInteger());
123136
assertEquals(0, it.next().getInteger());
124137
assertEquals(0, it.next().getInteger());

0 commit comments

Comments
 (0)