diff --git a/pom.xml b/pom.xml
index c7643a72..19eea40a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,7 +10,7 @@
sc.fiji
labkit-ui
- 0.4.1-SNAPSHOT
+ 0.5.0-SNAPSHOT
Labkit
The Labkit image segmentation tool for Fiji.
@@ -95,6 +95,7 @@
0.15.3
10.6.0
0.1.18
+ 2.3.4
diff --git a/src/main/java/sc/fiji/labkit/ui/LabkitFrame.java b/src/main/java/sc/fiji/labkit/ui/LabkitFrame.java
index de421672..9da4ecd8 100644
--- a/src/main/java/sc/fiji/labkit/ui/LabkitFrame.java
+++ b/src/main/java/sc/fiji/labkit/ui/LabkitFrame.java
@@ -39,7 +39,6 @@
import sc.fiji.labkit.ui.models.DefaultSegmentationModel;
import sc.fiji.labkit.ui.models.SegmentationModel;
import sc.fiji.labkit.ui.utils.Notifier;
-import sc.fiji.labkit.pixel_classification.utils.SingletonContext;
import org.scijava.Context;
import javax.swing.*;
@@ -65,8 +64,6 @@ public class LabkitFrame {
public static LabkitFrame showForFile(Context context,
final String filename)
{
- if (context == null)
- context = SingletonContext.getInstance();
Dataset dataset = openDataset(context, filename);
return showForImage(context, new DatasetInputImage(dataset));
}
@@ -83,8 +80,6 @@ private static Dataset openDataset(Context context, String filename) {
public static LabkitFrame showForImage(Context context,
final InputImage inputImage)
{
- if (context == null)
- context = SingletonContext.getInstance();
final SegmentationModel model = new DefaultSegmentationModel(context, inputImage);
model.imageLabelingModel().labeling().set(InitialLabeling.initialLabeling(context, inputImage));
return show(model, inputImage.imageForSegmentation().getName());
diff --git a/src/main/java/sc/fiji/labkit/ui/models/DefaultSegmentationModel.java b/src/main/java/sc/fiji/labkit/ui/models/DefaultSegmentationModel.java
index 816bf3b1..d94afa79 100644
--- a/src/main/java/sc/fiji/labkit/ui/models/DefaultSegmentationModel.java
+++ b/src/main/java/sc/fiji/labkit/ui/models/DefaultSegmentationModel.java
@@ -92,7 +92,7 @@ List> getSegmentations(T type)
Stream trainedSegmenters = getTrainedSegmenters();
return trainedSegmenters
.map(segmenter -> {
- SegmentationTool segmentationTool = new SegmentationTool(segmenter);
+ SegmentationTool segmentationTool = new SegmentationTool(context, segmenter);
segmentationTool.setProgressWriter(new DummyProgressWriter());
return segmentationTool.segment(image, type);
})
@@ -105,7 +105,7 @@ public List> getPredictions() {
Stream trainedSegmenters = getTrainedSegmenters();
return trainedSegmenters
.map(segmenter -> {
- SegmentationTool segmentationTool = new SegmentationTool(segmenter);
+ SegmentationTool segmentationTool = new SegmentationTool(context, segmenter);
segmentationTool.setProgressWriter(new DummyProgressWriter());
return segmentationTool.probabilityMap(image);
})
diff --git a/src/main/java/sc/fiji/labkit/ui/panel/AddSegmenterPanel.java b/src/main/java/sc/fiji/labkit/ui/panel/AddSegmenterPanel.java
index fc64abf0..3307b729 100644
--- a/src/main/java/sc/fiji/labkit/ui/panel/AddSegmenterPanel.java
+++ b/src/main/java/sc/fiji/labkit/ui/panel/AddSegmenterPanel.java
@@ -33,12 +33,13 @@
import sc.fiji.labkit.ui.models.SegmenterListModel;
import sc.fiji.labkit.ui.segmentation.SegmentationPlugin;
import sc.fiji.labkit.ui.segmentation.SegmentationPluginService;
-import sc.fiji.labkit.pixel_classification.utils.SingletonContext;
import net.miginfocom.swing.MigLayout;
import org.scijava.Context;
import javax.swing.*;
import java.awt.*;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
/**
* Panel that shows a list of available segmentation algorithms. This panel is
@@ -69,10 +70,16 @@ private void addButtons(SegmenterListModel segmenterListModel, JPanel list) {
public static void main(String... args) {
JFrame frame = new JFrame("Select Segmentation Algorithm");
- Context context = SingletonContext.getInstance();
+ Context context = new Context();
SegmenterListModel slm = new SegmenterListModel(context, new ExtensionPoints());
frame.add(new AddSegmenterPanel(slm));
frame.setSize(300, 300);
frame.setVisible(true);
+ frame.addWindowListener(new WindowAdapter() {
+ @Override
+ public void windowClosed(WindowEvent e) {
+ context.dispose();
+ }
+ });
}
}
diff --git a/src/main/java/sc/fiji/labkit/ui/plugin/AbstractProcessFilesInDirectoryPlugin.java b/src/main/java/sc/fiji/labkit/ui/plugin/AbstractProcessFilesInDirectoryPlugin.java
index 639beabd..cc09ff6a 100644
--- a/src/main/java/sc/fiji/labkit/ui/plugin/AbstractProcessFilesInDirectoryPlugin.java
+++ b/src/main/java/sc/fiji/labkit/ui/plugin/AbstractProcessFilesInDirectoryPlugin.java
@@ -38,6 +38,7 @@
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.filefilter.WildcardFileFilter;
import org.scijava.Cancelable;
+import org.scijava.Context;
import org.scijava.app.StatusService;
import org.scijava.command.Command;
import org.scijava.log.Logger;
@@ -52,6 +53,9 @@
abstract class AbstractProcessFilesInDirectoryPlugin implements Command, Cancelable {
+ @Parameter
+ private Context context;
+
@Parameter
private DatasetIOService io;
@@ -84,7 +88,7 @@ abstract class AbstractProcessFilesInDirectoryPlugin implements Command, Cancela
@Override
public void run() {
- SegmentationTool segmenter = new SegmentationTool();
+ SegmentationTool segmenter = new SegmentationTool(context);
segmenter.setUseGpu(use_gpu);
segmenter.openModel(segmenter_file.getAbsolutePath());
segmenter.setProgressWriter(new StatusServiceProgressWriter(statusService));
diff --git a/src/main/java/sc/fiji/labkit/ui/plugin/CalculateProbabilityMapWithLabkitIJ1Plugin.java b/src/main/java/sc/fiji/labkit/ui/plugin/CalculateProbabilityMapWithLabkitIJ1Plugin.java
index 56aa75c6..d1701ce1 100644
--- a/src/main/java/sc/fiji/labkit/ui/plugin/CalculateProbabilityMapWithLabkitIJ1Plugin.java
+++ b/src/main/java/sc/fiji/labkit/ui/plugin/CalculateProbabilityMapWithLabkitIJ1Plugin.java
@@ -72,8 +72,7 @@ public class CalculateProbabilityMapWithLabkitIJ1Plugin implements Command, Canc
@Override
public void run() {
- SegmentationTool segmenter = new SegmentationTool();
- segmenter.setContext(context);
+ SegmentationTool segmenter = new SegmentationTool(context);
segmenter.openModel(segmenter_file.getAbsolutePath());
segmenter.setUseGpu(use_gpu);
segmenter.setProgressWriter(new StatusServiceProgressWriter(statusService));
diff --git a/src/main/java/sc/fiji/labkit/ui/plugin/CalculateProbabilityMapWithLabkitPlugin.java b/src/main/java/sc/fiji/labkit/ui/plugin/CalculateProbabilityMapWithLabkitPlugin.java
index 7287c956..87daaa3e 100644
--- a/src/main/java/sc/fiji/labkit/ui/plugin/CalculateProbabilityMapWithLabkitPlugin.java
+++ b/src/main/java/sc/fiji/labkit/ui/plugin/CalculateProbabilityMapWithLabkitPlugin.java
@@ -74,8 +74,7 @@ public class CalculateProbabilityMapWithLabkitPlugin implements Command, Cancela
@Override
public void run() {
- SegmentationTool segmenter = new SegmentationTool();
- segmenter.setContext(context);
+ SegmentationTool segmenter = new SegmentationTool(context);
segmenter.openModel(segmenter_file.getAbsolutePath());
segmenter.setUseGpu(use_gpu);
segmenter.setProgressWriter(new StatusServiceProgressWriter(statusService));
diff --git a/src/main/java/sc/fiji/labkit/ui/plugin/SegmentImageWithLabkitIJ1Plugin.java b/src/main/java/sc/fiji/labkit/ui/plugin/SegmentImageWithLabkitIJ1Plugin.java
index df010aff..e75643c3 100644
--- a/src/main/java/sc/fiji/labkit/ui/plugin/SegmentImageWithLabkitIJ1Plugin.java
+++ b/src/main/java/sc/fiji/labkit/ui/plugin/SegmentImageWithLabkitIJ1Plugin.java
@@ -71,8 +71,7 @@ public class SegmentImageWithLabkitIJ1Plugin implements Command, Cancelable {
@Override
public void run() {
- SegmentationTool segmenter = new SegmentationTool();
- segmenter.setContext(context);
+ SegmentationTool segmenter = new SegmentationTool(context);
segmenter.setUseGpu(use_gpu);
segmenter.setProgressWriter(new StatusServiceProgressWriter(statusService));
segmenter.openModel(segmenter_file.getAbsolutePath());
diff --git a/src/main/java/sc/fiji/labkit/ui/plugin/SegmentImageWithLabkitPlugin.java b/src/main/java/sc/fiji/labkit/ui/plugin/SegmentImageWithLabkitPlugin.java
index f345b701..a65a9441 100644
--- a/src/main/java/sc/fiji/labkit/ui/plugin/SegmentImageWithLabkitPlugin.java
+++ b/src/main/java/sc/fiji/labkit/ui/plugin/SegmentImageWithLabkitPlugin.java
@@ -74,8 +74,7 @@ public class SegmentImageWithLabkitPlugin implements Command, Cancelable {
@Override
public void run() {
- SegmentationTool segmenter = new SegmentationTool();
- segmenter.setContext(context);
+ SegmentationTool segmenter = new SegmentationTool(context);
segmenter.setUseGpu(use_gpu);
segmenter.setProgressWriter(new StatusServiceProgressWriter(statusService));
segmenter.openModel(segmenter_file.getAbsolutePath());
diff --git a/src/main/java/sc/fiji/labkit/ui/segmentation/SegmentationTool.java b/src/main/java/sc/fiji/labkit/ui/segmentation/SegmentationTool.java
index 2f22ac84..c4db73d0 100644
--- a/src/main/java/sc/fiji/labkit/ui/segmentation/SegmentationTool.java
+++ b/src/main/java/sc/fiji/labkit/ui/segmentation/SegmentationTool.java
@@ -47,7 +47,6 @@
import net.imglib2.util.Intervals;
import org.apache.commons.lang3.ArrayUtils;
import org.scijava.Context;
-import sc.fiji.labkit.pixel_classification.utils.SingletonContext;
import sc.fiji.labkit.ui.inputimage.DatasetInputImage;
import sc.fiji.labkit.ui.inputimage.ImgPlusViewsOld;
import sc.fiji.labkit.ui.models.CachedImageFactory;
@@ -71,16 +70,16 @@ public class SegmentationTool {
private final CachedImageFactory cachedImageFactory = DefaultCachedImageFactory.getInstance();
- public SegmentationTool() {
-
+ public SegmentationTool(Context context) {
+ this(context, null);
}
- public SegmentationTool(Segmenter segmenter) {
+ public SegmentationTool(Context context, Segmenter segmenter) {
+ this.context = Objects.requireNonNull(context);
this.segmenter = segmenter;
}
public void openModel(String classifierFile) {
- Context context = this.context != null ? this.context : SingletonContext.getInstance();
Segmenter segmenter = new TrainableSegmentationSegmenter(context);
segmenter.openModel(classifierFile);
setSegmenter(segmenter);
@@ -94,10 +93,6 @@ public void setSegmenter(Segmenter segmenter) {
this.segmenter.setUseGpu(useGpu);
}
- public void setContext(Context context) {
- this.context = Objects.requireNonNull(context);
- }
-
public void setProgressWriter(ProgressWriter progressWriter) {
this.progressWriter = Objects.requireNonNull(progressWriter);
}
diff --git a/src/main/java/sc/fiji/labkit/ui/segmentation/weka/PixelClassificationPlugin.java b/src/main/java/sc/fiji/labkit/ui/segmentation/weka/PixelClassificationPlugin.java
index a9ddf130..8ba1a31a 100644
--- a/src/main/java/sc/fiji/labkit/ui/segmentation/weka/PixelClassificationPlugin.java
+++ b/src/main/java/sc/fiji/labkit/ui/segmentation/weka/PixelClassificationPlugin.java
@@ -31,7 +31,6 @@
import sc.fiji.labkit.ui.segmentation.SegmentationPlugin;
import sc.fiji.labkit.ui.segmentation.Segmenter;
-import sc.fiji.labkit.pixel_classification.utils.SingletonContext;
import org.scijava.Context;
import org.scijava.plugin.Parameter;
import org.scijava.plugin.Plugin;
@@ -66,8 +65,7 @@ public boolean canOpenFile(String filename) {
}
}
- public static SegmentationPlugin create() {
- Context context = SingletonContext.getInstance();
+ public static SegmentationPlugin create(Context context) {
PixelClassificationPlugin plugin = new PixelClassificationPlugin();
context.inject(plugin);
return plugin;
diff --git a/src/test/java/demo/ChangingImageSegmentationComponentDemo.java b/src/test/java/demo/ChangingImageSegmentationComponentDemo.java
index b5f3c607..3e7ec76f 100644
--- a/src/test/java/demo/ChangingImageSegmentationComponentDemo.java
+++ b/src/test/java/demo/ChangingImageSegmentationComponentDemo.java
@@ -41,7 +41,6 @@
import sc.fiji.labkit.ui.models.DefaultSegmentationModel;
import sc.fiji.labkit.ui.models.ImageLabelingModel;
import sc.fiji.labkit.ui.models.SegmentationModel;
-import sc.fiji.labkit.pixel_classification.utils.SingletonContext;
import net.imglib2.type.numeric.integer.UnsignedByteType;
import net.imglib2.view.Views;
import net.miginfocom.swing.MigLayout;
@@ -93,8 +92,7 @@ private static void onChangeImageButtonClicked(SegmentationModel segmentationMod
DatasetInputImage datasetInputImage = new DatasetInputImage(image);
model.showable().set(datasetInputImage.showable());
model.imageForSegmentation().set(datasetInputImage.imageForSegmentation());
- model.labeling().set(InitialLabeling.initialLabeling(SingletonContext.getInstance(),
- datasetInputImage));
+ model.labeling().set(InitialLabeling.initialLabeling(new Context(), datasetInputImage));
}
private JPanel getBottomPanel() {
diff --git a/src/test/java/demo/MultiChannelMovieDemo.java b/src/test/java/demo/MultiChannelMovieDemo.java
index 6298160a..b0530735 100644
--- a/src/test/java/demo/MultiChannelMovieDemo.java
+++ b/src/test/java/demo/MultiChannelMovieDemo.java
@@ -73,8 +73,12 @@
*/
public class MultiChannelMovieDemo {
+ private static Context context;
+
public static void main(String... args) {
+ context = new Context();
main2();
+ // TODO: Dispose context when relevant window is closed.
}
private static void main1() {
@@ -120,7 +124,7 @@ public void testInputImageImageForSegmentation() {
SegmentationModel segmentationModel = new DefaultSegmentationModel(
new Context(), inputImage);
SegmentationItem segmenter = segmentationModel.segmenterList().addSegmenter(
- PixelClassificationPlugin.create());
+ PixelClassificationPlugin.create(context));
Labeling labeling1 = labeling5d();
segmentationModel.imageLabelingModel().labeling().set(labeling1);
segmenter.train(Collections.singletonList(new ValuePair<>(inputImage
diff --git a/src/test/java/sc/fiji/labkit/ui/InitialLabelingTest.java b/src/test/java/sc/fiji/labkit/ui/InitialLabelingTest.java
index 99989842..57a0759b 100644
--- a/src/test/java/sc/fiji/labkit/ui/InitialLabelingTest.java
+++ b/src/test/java/sc/fiji/labkit/ui/InitialLabelingTest.java
@@ -34,7 +34,9 @@
import net.imagej.axis.EnumeratedAxis;
import net.imglib2.img.Img;
import net.imglib2.img.array.ArrayImgs;
-import sc.fiji.labkit.pixel_classification.utils.SingletonContext;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.scijava.Context;
import sc.fiji.labkit.ui.inputimage.DatasetInputImage;
import sc.fiji.labkit.ui.labeling.Labeling;
import net.imglib2.type.numeric.integer.UnsignedByteType;
@@ -49,6 +51,18 @@
public class InitialLabelingTest {
+ private static Context context;
+
+ @BeforeClass
+ public static void setUp() {
+ context = new Context();
+ }
+
+ @AfterClass
+ public static void tearDown() {
+ context.dispose();
+ }
+
@Test
public void testDoNotCrashWhenLabelingFileIsEmpty() throws IOException {
File empty = File.createTempFile("labkit-InitialLabelingTest-",
@@ -59,7 +73,7 @@ public void testDoNotCrashWhenLabelingFileIsEmpty() throws IOException {
DatasetInputImage inputImage = new DatasetInputImage(image);
List defaultLabels = Collections.emptyList();
Labeling result = InitialLabeling.initLabeling(inputImage,
- SingletonContext.getInstance(),
+ context,
defaultLabels);
assertNotNull(result);
}
@@ -75,7 +89,7 @@ public void testEnumeratedAxis() {
EnumeratedAxis yAxis = new EnumeratedAxis(Axes.Y, "mm", new double[] { 0, 0.3 });
ImgPlus image = new ImgPlus<>(img, "test", xAxis, yAxis);
DatasetInputImage inputImage = new DatasetInputImage(image);
- Labeling result = InitialLabeling.initialLabeling(SingletonContext.getInstance(), inputImage);
+ Labeling result = InitialLabeling.initialLabeling(context, inputImage);
assertNotNull(result);
}
}
diff --git a/src/test/java/sc/fiji/labkit/ui/SegmentationUseCaseTest.java b/src/test/java/sc/fiji/labkit/ui/SegmentationUseCaseTest.java
index 363fb4f6..be4281eb 100644
--- a/src/test/java/sc/fiji/labkit/ui/SegmentationUseCaseTest.java
+++ b/src/test/java/sc/fiji/labkit/ui/SegmentationUseCaseTest.java
@@ -39,6 +39,8 @@
import net.imglib2.img.Img;
import net.imglib2.img.array.ArrayImgs;
import net.imglib2.type.numeric.IntegerType;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
import sc.fiji.labkit.ui.bdv.BdvShowable;
import sc.fiji.labkit.ui.inputimage.DatasetInputImage;
import sc.fiji.labkit.ui.inputimage.InputImage;
@@ -51,7 +53,6 @@
import sc.fiji.labkit.ui.segmentation.weka.PixelClassificationPlugin;
import sc.fiji.labkit.ui.segmentation.SegmentationPlugin;
import net.imglib2.roi.labeling.LabelingType;
-import net.imglib2.type.numeric.integer.ShortType;
import net.imglib2.type.numeric.integer.UnsignedByteType;
import net.imglib2.util.Intervals;
import net.imglib2.util.ValuePair;
@@ -70,22 +71,34 @@
public class SegmentationUseCaseTest {
+ private static Context context;
+
+ @BeforeClass
+ public static void setUp() {
+ context = new Context();
+ }
+
+ @AfterClass
+ public static void tearDown() {
+ context.dispose();
+ }
+
@Test
public void test() {
ImgPlus image = new ImgPlus<>(ArrayImgs.unsignedBytes(new byte[] { 1, 1, 2,
2 }, 2, 2));
InputImage inputImage = new DatasetInputImage(image);
SegmentationModel segmentationModel = new DefaultSegmentationModel(
- new Context(), inputImage);
+ context, inputImage);
addLabels(segmentationModel.imageLabelingModel());
- SegmentationPlugin plugin = PixelClassificationPlugin.create();
+ SegmentationPlugin plugin = PixelClassificationPlugin.create(context);
SegmentationItem segmenter = segmentationModel.segmenterList().addSegmenter(plugin);
segmenter.train(Collections.singletonList(new ValuePair<>(image,
segmentationModel.imageLabelingModel().labeling().get())));
RandomAccessibleInterval extends IntegerType>> result =
segmenter.results(segmentationModel.imageLabelingModel()).segmentation();
List list = new ArrayList<>();
- Views.iterable(result).forEach(x -> list.add(x.getInteger()));
+ result.forEach(x -> list.add(x.getInteger()));
assertEquals(Arrays.asList(1, 1, 0, 0), list);
}
@@ -99,7 +112,7 @@ private void addLabels(ImageLabelingModel imageLabelingModel) {
}
@Test
- public void testMultiChannel() throws InterruptedException {
+ public void testMultiChannel() {
Img img = ArrayImgs.unsignedBytes(new byte[] { -1, 0, -1,
0, -1, -1, 0, 0 }, 2, 2, 2);
ImgPlus imgPlus = new ImgPlus<>(img, "Image",
@@ -108,17 +121,17 @@ public void testMultiChannel() throws InterruptedException {
.wrap(Views.hyperSlice(img, 2, 0)));
Labeling labeling = getLabeling();
- SegmentationModel segmentationModel = new DefaultSegmentationModel(new Context(),
+ SegmentationModel segmentationModel = new DefaultSegmentationModel(context,
inputImage);
ImageLabelingModel imageLabelingModel = segmentationModel.imageLabelingModel();
imageLabelingModel.labeling().set(labeling);
SegmentationItem segmenter = segmentationModel.segmenterList().addSegmenter(
- PixelClassificationPlugin.create());
+ PixelClassificationPlugin.create(context));
segmenter.train(Collections.singletonList(new ValuePair<>(imgPlus,
imageLabelingModel.labeling().get())));
RandomAccessibleInterval extends IntegerType>> result =
segmenter.results(imageLabelingModel).segmentation();
- Iterator extends IntegerType>> it = Views.iterable(result).iterator();
+ Iterator extends IntegerType>> it = result.iterator();
assertEquals(1, it.next().getInteger());
assertEquals(0, it.next().getInteger());
assertEquals(0, it.next().getInteger());
diff --git a/src/test/java/sc/fiji/labkit/ui/labeling/LabelingSerializationTest.java b/src/test/java/sc/fiji/labkit/ui/labeling/LabelingSerializationTest.java
index 66b05147..3cb498cf 100644
--- a/src/test/java/sc/fiji/labkit/ui/labeling/LabelingSerializationTest.java
+++ b/src/test/java/sc/fiji/labkit/ui/labeling/LabelingSerializationTest.java
@@ -38,9 +38,11 @@
import net.imglib2.img.Img;
import net.imglib2.img.array.ArrayImgs;
import net.imglib2.roi.IterableRegion;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.scijava.Context;
import sc.fiji.labkit.ui.utils.sparse.SparseIterableRegion;
import net.imglib2.test.ImgLib2Assert;
-import sc.fiji.labkit.pixel_classification.utils.SingletonContext;
import net.imglib2.type.logic.BitType;
import net.imglib2.type.numeric.ARGBType;
import net.imglib2.type.numeric.integer.UnsignedByteType;
@@ -65,8 +67,19 @@
*/
public class LabelingSerializationTest {
- private final LabelingSerializer serializer = new LabelingSerializer(SingletonContext
- .getInstance());
+ private static Context context;
+
+ @BeforeClass
+ public static void setUp() {
+ context = new Context();
+ }
+
+ @AfterClass
+ public static void tearDown() {
+ context.dispose();
+ }
+
+ private final LabelingSerializer serializer = new LabelingSerializer(context);
@Test
public void testJson() throws IOException {
@@ -155,7 +168,7 @@ private static IterableRegion exampleRegion(long... position) {
public void testOpenFromTiff() throws IOException {
Img input = ArrayImgs.unsignedBytes(new byte[] { 10, 20, 0, 0 }, 2, 2);
Path file = Files.createTempFile("test", ".tif");
- new ImgSaver(SingletonContext.getInstance()).saveImg(file.toString(), input, new SCIFIOConfig()
+ new ImgSaver(context).saveImg(file.toString(), input, new SCIFIOConfig()
.writerSetFailIfOverwriting(false));
Labeling labeling = serializer.open(file.toString());
assertEquals(Arrays.asList("10", "20"), labeling.getLabels().stream().map(Label::name).collect(
diff --git a/src/test/java/sc/fiji/labkit/ui/models/CustomCachedImageFactoryDemo.java b/src/test/java/sc/fiji/labkit/ui/models/CustomCachedImageFactoryDemo.java
index f89b38c9..6f4bb4f1 100644
--- a/src/test/java/sc/fiji/labkit/ui/models/CustomCachedImageFactoryDemo.java
+++ b/src/test/java/sc/fiji/labkit/ui/models/CustomCachedImageFactoryDemo.java
@@ -37,10 +37,10 @@
import net.imglib2.img.VirtualStackAdapter;
import net.imglib2.img.array.ArrayImgFactory;
import net.imglib2.img.cell.CellGrid;
+import org.scijava.Context;
import sc.fiji.labkit.ui.LabkitFrame;
import sc.fiji.labkit.ui.inputimage.DatasetInputImage;
import sc.fiji.labkit.ui.segmentation.Segmenter;
-import sc.fiji.labkit.pixel_classification.utils.SingletonContext;
import net.imglib2.type.NativeType;
import java.util.function.Consumer;
@@ -57,21 +57,19 @@
*/
public class CustomCachedImageFactoryDemo {
- static {
- LegacyInjector.preinit();
- }
-
public static void main(String... args) {
+ Context context = new Context();
final ImagePlus imp = new ImagePlus("https://imagej.nih.gov/ij/images/FluorescentCells.jpg");
ImgPlus> image = VirtualStackAdapter.wrap(imp);
- DefaultSegmentationModel segmentationModel = new DefaultSegmentationModel(SingletonContext
- .getInstance(), new DatasetInputImage(image));
+ DefaultSegmentationModel segmentationModel = new DefaultSegmentationModel(context,
+ new DatasetInputImage(image));
segmentationModel.extensionPoints().setCachedSegmentationImageFactory(
CustomCachedImageFactoryDemo::noCacheFactory);
segmentationModel.extensionPoints().setCachedPredictionImageFactory(
CustomCachedImageFactoryDemo::noCacheFactory);
LabkitFrame.show(segmentationModel,
- "Custom Cached Image Factory Demo, That actually uses no cahce.");
+ "Custom Cached Image Factory Demo, That actually uses no cache.");
+ // TODO: Dispose context when Labkit frame is closed.
}
private static > Img noCacheFactory(Segmenter segmenter,
diff --git a/src/test/java/sc/fiji/labkit/ui/models/DefaultSegmentationModelTest.java b/src/test/java/sc/fiji/labkit/ui/models/DefaultSegmentationModelTest.java
index aabc5e02..f1282e4e 100644
--- a/src/test/java/sc/fiji/labkit/ui/models/DefaultSegmentationModelTest.java
+++ b/src/test/java/sc/fiji/labkit/ui/models/DefaultSegmentationModelTest.java
@@ -30,6 +30,8 @@
package sc.fiji.labkit.ui.models;
import net.imglib2.img.array.ArrayImgs;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
import sc.fiji.labkit.ui.inputimage.DatasetInputImage;
import sc.fiji.labkit.ui.labeling.Label;
import sc.fiji.labkit.ui.labeling.Labeling;
@@ -52,6 +54,18 @@
public class DefaultSegmentationModelTest {
+ private static Context context;
+
+ @BeforeClass
+ public static void setUp() {
+ context = new Context();
+ }
+
+ @AfterClass
+ public static void tearDown() {
+ context.dispose();
+ }
+
@Test
public void testListener() {
BitType flag = new BitType(false);
@@ -60,7 +74,7 @@ public void testListener() {
model.segmenters().notifier().addListener(flag::setOne);
assertFalse(flag.get());
assertEquals(0, model.segmenters().get().size());
- model.addSegmenter(PixelClassificationPlugin.create());
+ model.addSegmenter(PixelClassificationPlugin.create(context));
assertTrue(flag.get());
assertEquals(1, model.segmenters().get().size());
flag.set(false);
@@ -84,7 +98,7 @@ public void testLoadClassifierWithDifferentLabels() throws IOException {
List