From 239b1d3e1b8a20844d19775323e8a22d09016179 Mon Sep 17 00:00:00 2001 From: Stephane Dallongeville <stephane.dallongeville@pasteur.fr> Date: Thu, 22 Apr 2021 11:18:10 +0200 Subject: [PATCH] Added new Get/Set Property blocks --- pom.xml | 10 ++- .../infos/GetSequenceProperty.java | 68 ++++++++++++++++++ .../infos/SetSequenceProperty.java | 69 +++++++++++++++++++ 3 files changed, 145 insertions(+), 2 deletions(-) create mode 100644 src/main/java/plugins/tprovoost/sequenceblocks/infos/GetSequenceProperty.java create mode 100644 src/main/java/plugins/tprovoost/sequenceblocks/infos/SetSequenceProperty.java diff --git a/pom.xml b/pom.xml index a45fa44..bf39fc7 100644 --- a/pom.xml +++ b/pom.xml @@ -7,15 +7,21 @@ <parent> <groupId>org.bioimageanalysis.icy</groupId> <artifactId>parent-pom-plugin</artifactId> - <version>1.0.3</version> + <version>1.0.4</version> </parent> <artifactId>sequence-blocks</artifactId> - <version>2.0.16</version> + <version>2.1.0</version> <name>SequenceBlocks</name> <dependencies> + <dependency> + <groupId>org.bioimageanalysis.icy</groupId> + <artifactId>icy-kernel</artifactId> + <version>2.1.3</version> + </dependency> + <dependency> <groupId>org.bioimageanalysis.icy</groupId> <artifactId>blocks</artifactId> diff --git a/src/main/java/plugins/tprovoost/sequenceblocks/infos/GetSequenceProperty.java b/src/main/java/plugins/tprovoost/sequenceblocks/infos/GetSequenceProperty.java new file mode 100644 index 0000000..278ae20 --- /dev/null +++ b/src/main/java/plugins/tprovoost/sequenceblocks/infos/GetSequenceProperty.java @@ -0,0 +1,68 @@ +package plugins.tprovoost.sequenceblocks.infos; + +import icy.plugin.abstract_.Plugin; +import icy.plugin.interface_.PluginBundled; +import icy.plugin.interface_.PluginLibrary; +import icy.sequence.Sequence; +import plugins.adufour.blocks.tools.sequence.SequenceBlock; +import plugins.adufour.blocks.util.VarList; +import plugins.adufour.vars.lang.VarSequence; +import plugins.adufour.vars.lang.VarString; +import plugins.tprovoost.sequenceblocks.SequenceBlocks; + +/** + * Block to retrieve value (in String format) of a Sequence property (name, pixel size, custom...)<br> + * Default metadata information can be retrieved using specific property name:<br> + * <ul> + * <li><i>id</i> = sequence internal Id</li> + * <li><i>name</i> = sequence name</li> + * <li><i>positionX</i> = absolute position X of the image (in um)</li> + * <li><i>positionY</i> = absolute position Y of the image (in um)</li> + * <li><i>positionZ</i> = absolute position Z of the image (in um)</li> + * <li><i>positionT</i> = acquisition date time</li> + * <li><i>positionTOffset</i> = not available for property;</li> + * <li><i>pixelSizeX</i> = pixel size X (in um)</li> + * <li><i>pixelSizeY</i> = pixel size Y (in um)</li> + * <li><i>pixelSizeZ</i> = pixel size Z (in um)</li> + * <li><i>timeInterval</i> = time interval between each image (in second)</li> + * <li><i>channelName</i> = not available for property</li> + * <li><i>userName</i> = user who generated / acquired the dataset</li> + * <li><i>virtual</i> = virtual mode enabled on the dataset</li> + * </ul> + * + * @author Stephane + */ +public class GetSequenceProperty extends Plugin implements SequenceBlock, PluginLibrary, PluginBundled +{ + protected VarSequence sequence = new VarSequence("Sequence", null); + protected VarString propertyName = new VarString("Property", "name"); + protected VarString value = new VarString("Value", ""); + + @Override + public void run() + { + final Sequence seq = sequence.getValue(); + + if (seq != null) + value.setValue(seq.getProperty(propertyName.getValue())); + } + + @Override + public void declareInput(VarList inputMap) + { + inputMap.add("sequence", sequence); + inputMap.add("property", propertyName); + } + + @Override + public void declareOutput(VarList outputMap) + { + outputMap.add("value", value); + } + + @Override + public String getMainPluginClassName() + { + return SequenceBlocks.class.getName(); + } +} diff --git a/src/main/java/plugins/tprovoost/sequenceblocks/infos/SetSequenceProperty.java b/src/main/java/plugins/tprovoost/sequenceblocks/infos/SetSequenceProperty.java new file mode 100644 index 0000000..21aa719 --- /dev/null +++ b/src/main/java/plugins/tprovoost/sequenceblocks/infos/SetSequenceProperty.java @@ -0,0 +1,69 @@ +package plugins.tprovoost.sequenceblocks.infos; + +import icy.plugin.abstract_.Plugin; +import icy.plugin.interface_.PluginBundled; +import icy.plugin.interface_.PluginLibrary; +import icy.sequence.Sequence; +import plugins.adufour.blocks.tools.sequence.SequenceBlock; +import plugins.adufour.blocks.util.VarList; +import plugins.adufour.vars.lang.VarSequence; +import plugins.adufour.vars.lang.VarString; +import plugins.tprovoost.sequenceblocks.SequenceBlocks; + +/** + * Block to set value (in String format) of a Sequence property (name, pixel size, custom...)<br> + * Default metadata information can be set using specific property name:<br> + * <ul> + * <li><i>id</i> = sequence internal Id</li> + * <li><i>name</i> = sequence name</li> + * <li><i>positionX</i> = absolute position X of the image (in um)</li> + * <li><i>positionY</i> = absolute position Y of the image (in um)</li> + * <li><i>positionZ</i> = absolute position Z of the image (in um)</li> + * <li><i>positionT</i> = acquisition date time</li> + * <li><i>positionTOffset</i> = not available for property;</li> + * <li><i>pixelSizeX</i> = pixel size X (in um)</li> + * <li><i>pixelSizeY</i> = pixel size Y (in um)</li> + * <li><i>pixelSizeZ</i> = pixel size Z (in um)</li> + * <li><i>timeInterval</i> = time interval between each image (in second)</li> + * <li><i>channelName</i> = not available for property</li> + * <li><i>userName</i> = user who generated / acquired the dataset</li> + * <li><i>virtual</i> = virtual mode enabled on the dataset</li> + * </ul> + * + * @author Stephane + */ +public class SetSequenceProperty extends Plugin implements SequenceBlock, PluginLibrary, PluginBundled +{ + protected VarSequence sequence = new VarSequence("Sequence", null); + protected VarString propertyName = new VarString("Property", "name"); + protected VarString value = new VarString("Value", ""); + + @Override + public void run() + { + final Sequence seq = sequence.getValue(); + + if (seq != null) + seq.setProperty(propertyName.getValue(), value.getValue()); + } + + @Override + public void declareInput(VarList inputMap) + { + inputMap.add("sequence", sequence); + inputMap.add("property", propertyName); + inputMap.add("value", value); + } + + @Override + public void declareOutput(VarList outputMap) + { + // + } + + @Override + public String getMainPluginClassName() + { + return SequenceBlocks.class.getName(); + } +} -- GitLab