diff --git a/src/plugins/tprovoost/sequenceblocks/loop/SequenceRegionBatch.java b/src/plugins/tprovoost/sequenceblocks/loop/SequenceRegionBatch.java index dd539a3bd66f0f44ec1a1eaa5206f6e734804ac8..23bbe64070ab78156b22a9a64bd4ada38aa212ad 100644 --- a/src/plugins/tprovoost/sequenceblocks/loop/SequenceRegionBatch.java +++ b/src/plugins/tprovoost/sequenceblocks/loop/SequenceRegionBatch.java @@ -4,6 +4,7 @@ import java.util.List; import icy.plugin.interface_.PluginBundled; import icy.plugin.interface_.PluginLibrary; +import icy.roi.ROI; import icy.sequence.Sequence; import icy.sequence.SequenceUtil; import plugins.adufour.blocks.lang.Batch; @@ -25,35 +26,51 @@ public class SequenceRegionBatch extends Batch implements SequenceBlock, PluginL // important to not initialize here (even with null) and create them in getBatchSource() and getBatchElement() protected VarSequence inputSequence; protected VarSequence element; - protected final VarROIArray rois; + protected VarROIArray rois; + protected VarROIArray currentRoi; public SequenceRegionBatch() { super(); + } - rois = new VarROIArray("ROI(s)"); + @Override + public VarROIArray getBatchSource() + { + if (rois == null) + rois = new VarROIArray("ROI(s)"); + + return rois; } @Override - public VarSequence getBatchSource() + public void declareInput(VarList inputMap) { - // initialize variable if needed + super.declareInput(inputMap); if (inputSequence == null) inputSequence = new VarSequence("Sequence", null); - return inputSequence; + inputMap.add(inputSequence.getName(), inputSequence); } @Override public VarSequence getBatchElement() { - // initialize element if needed if (element == null) element = new VarSequence("Channel Sequence", null); return element; } + @Override + public void declareOutput(VarList outputMap) + { + super.declareOutput(outputMap); + if (currentRoi == null) + currentRoi = new VarROIArray("Current ROI"); + outputMap.add(currentRoi.getName(), currentRoi); + } + @Override public void initializeLoop() { @@ -70,8 +87,9 @@ public class SequenceRegionBatch extends Batch implements SequenceBlock, PluginL public void beforeIteration() { // set result in element - element.setValue(SequenceUtil.getSubSequence(inputSequence.getValue(), - rois.getValue()[getIterationCounter().getValue().intValue()])); + ROI roi = rois.getValue()[getIterationCounter().getValue().intValue()]; + element.setValue(SequenceUtil.getSubSequence(inputSequence.getValue(), roi)); + currentRoi.setValue(new ROI[] {roi}); } @Override @@ -80,20 +98,12 @@ public class SequenceRegionBatch extends Batch implements SequenceBlock, PluginL return getIterationCounter().getValue().intValue() >= rois.getValue().length; } - @Override - public void declareInput(VarList inputMap) - { - super.declareInput(inputMap); - - inputMap.add("ROIs", rois); - } - @Override public void declareLoopVariables(List<Var<?>> loopVariables) { super.declareLoopVariables(loopVariables); - - loopVariables.add(rois); + loopVariables.add(inputSequence); + loopVariables.add(currentRoi); } @Override