From 950671444223547ee78d04b68ce9943ea94a6404 Mon Sep 17 00:00:00 2001 From: Amandine Tournay <amandine.tournay@pasteur.fr> Date: Tue, 9 Mar 2021 19:11:32 +0100 Subject: [PATCH] Added project --- .gitignore | 6 + StackRotation.jar | Bin 0 -> 4275 bytes export.jardesc | 16 ++ pom.xml | 89 ++++++++++ .../spop/rotation3D/StackRotation.class | Bin 0 -> 4632 bytes .../spop/rotation3D/StackRotation.java | 168 ++++++++++++++++++ 6 files changed, 279 insertions(+) create mode 100644 .gitignore create mode 100644 StackRotation.jar create mode 100644 export.jardesc create mode 100644 pom.xml create mode 100644 src/main/java/plugins/spop/rotation3D/StackRotation.class create mode 100644 src/main/java/plugins/spop/rotation3D/StackRotation.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3d47f98 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +.idea/ +target/ +.settings/ +*.iml +.project +.classpath \ No newline at end of file diff --git a/StackRotation.jar b/StackRotation.jar new file mode 100644 index 0000000000000000000000000000000000000000..a18d426e7d854c66773851fa79c5c553782d1ead GIT binary patch literal 4275 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 literal 0 HcmV?d00001 diff --git a/export.jardesc b/export.jardesc new file mode 100644 index 0000000..7f140a2 --- /dev/null +++ b/export.jardesc @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="WINDOWS-1252" standalone="no"?> +<jardesc> + <jar path="Stack Rotation/StackRotation.jar"/> + <options buildIfNeeded="true" compress="true" descriptionLocation="/Stack Rotation/export.jardesc" exportErrors="false" exportWarnings="true" includeDirectoryEntries="true" overwrite="true" saveDescription="true" storeRefactorings="false" useSourceFolders="false"/> + <storedRefactorings deprecationInfo="true" structuralOnly="false"/> + <selectedProjects/> + <manifest generateManifest="true" manifestLocation="/Icy-Updater/META-INF/MANIFEST.MF" manifestVersion="1.0" reuseManifest="false" saveManifest="false" usesManifest="true"> + <sealing sealJar="false"> + <packagesToSeal/> + <packagesToUnSeal/> + </sealing> + </manifest> + <selectedElements exportClassFiles="true" exportJavaFiles="true" exportOutputFolder="false"> + <javaElement handleIdentifier="=Stack Rotation/src"/> + </selectedElements> +</jardesc> diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..1f96c1e --- /dev/null +++ b/pom.xml @@ -0,0 +1,89 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <!-- Inherited Icy Parent POM --> + <parent> + <groupId>org.bioimageanalysis.icy</groupId> + <artifactId>parent-pom-plugin</artifactId> + <version>1.0.3</version> + </parent> + + <!-- Project Information --> + <artifactId>stack-rotation</artifactId> + <version>1.2.1</version> + + <packaging>jar</packaging> + + <name>Stack Rotation</name> + <description>Rotate the 3D stack from Front view to Right view or from Front view to Top view. </description> + <url></url> + <inceptionYear>2020</inceptionYear> + + <organization> + <name>Institut Pasteur</name> + <url>https://pasteur.fr</url> + </organization> + + <licenses> + <license> + <name>GNU GPLv3</name> + <url>https://www.gnu.org/licenses/gpl-3.0.en.html</url> + <distribution>repo</distribution> + </license> + </licenses> + + <developers> + <developer> + <id>sdallongeville</id> + <name>Stéphane Dallongeville</name> + <url>https://research.pasteur.fr/fr/member/stephane-dallongeville/</url> + <roles> + <role>founder</role> + <role>lead</role> + <role>architect</role> + <role>developer</role> + <role>debugger</role> + <role>tester</role> + <role>maintainer</role> + <role>support</role> + </roles> + </developer> + </developers> + + <!-- Project properties --> + <properties> + + </properties> + + <!-- Project build configuration --> + <build> + + </build> + + <!-- List of project's dependencies --> + <dependencies> + <!-- The core of Icy --> + <dependency> + <groupId>org.bioimageanalysis.icy</groupId> + <artifactId>icy-kernel</artifactId> + </dependency> + + <!-- The EzPlug library, simplifies writing UI for Icy plugins. --> + <dependency> + <groupId>org.bioimageanalysis.icy</groupId> + <artifactId>ezplug</artifactId> + </dependency> + </dependencies> + + <!-- Icy Maven repository (to find parent POM) --> + <repositories> + <repository> + <id>icy</id> + <name>Icy's Nexus</name> + <url>https://icy-nexus.pasteur.fr/repository/Icy/</url> + </repository> + </repositories> +</project> \ No newline at end of file diff --git a/src/main/java/plugins/spop/rotation3D/StackRotation.class b/src/main/java/plugins/spop/rotation3D/StackRotation.class new file mode 100644 index 0000000000000000000000000000000000000000..68074344ee33ae06c785a18f06198858479a547b GIT binary patch literal 4632 zcmbVPX>?R)8GgRZOzvdn29l5)mJrsKEChz6nj&G%0#2I%O~Mk=0ymROGB8V+xf7Du z*4n0vYo%HRTdS$HQR~twBv>p^3su`5{h>X2^r%Pu)zhPYsz1tU8=vpaotp^++C!52 zt?&1)&-cDxUi;w1a{z9^8wzp+Ztjnydc(0~AlV=94<zEIZieHrTbcsxrXD)dX3rJ4 z1<Ep{dQa+5Je3F-!*V6iJiL>gf?R>6SCVu`;-MqSKtzxA1{&m8z!Q%3r%ZtrEmsmd z{C4Y!cH?Nuh=q)L0k=8SZwM^AE`5hFXp%NJo-!@&x$DERu(?sdRZ+Q{JR0LYh7T?j zs8Erwph)1Rk0RfTVyYaJD*I4~5_x>CfL76RSRc^ShP9iCaICk!a(5mC=BrTPRZuFh z<az?6!d{e7wGNu6V6i~Kl`OqjDxhvn#A9Yhye-_@#}ms1eD+F5yx)hLQLbQxK;hKk zhIl+;=rI))s1#5J^hnCsaY&$~VqayJ+BR9e4-2qT+Ep!3KZ9LeS!ZlhvsN-(($=q5 zkq4g_YZ!_hRw$%TYE}5*6`0);jv3oi(QYHrp?60Z)S{MnNRKeyVL7)K-DY1nDNybN z{JPj=)O|A6VLcKawqpDV73;v|S$a=T^KfH4+8>V@F+#4q!eMz8h8;4-Q37RyijCMr zCP~BW2uF>kaI!z54>4Z!A`zt+gGMN2QeYt(R5YSVz}st>yQQ}!K&JV6NB3bPWY#O# z%B^r{D3G-A9moLPhh}_IMG&_!mgKXewRvxAORHh(J-Vq2EUu_*iARmVU^Ehlay2lW zfKhD0b_K13k>sB;!x2fci@k~+*eOsPN*KCnOg|^Ev0^&kjL0^Fur>ya`VW)aj5dj$ zb^`tiR?|gUj$MFV(phw1F%6o+tnDBl7GbZ7PVA!{bderO276=igwd!cEw5%B$y~dA zK0@qH6-#lKz?zDd8Qn`OW?q+mKcM2EywwV0y<LworUKn6mg6ot>QP~U*T=)C><UUN zE3XZsZM%XDg+QN*Fb)g&iNQ>W1r}UWJ7TU7j8s$}@=^~QM;xXTp}^d0SYYXW^Z+xT zK)#i>TlIeHDoNW4WMisGVIU3AcHWY`R$dIstw9w-*;}1*@lz`9&R(R8n{ls-PiHT7 z$i>g7xIcTbQNakAcXc%>c!-y!iz7+*h>FkRa{_sEViN(qx041{1cSjDLGT59Nx>Ic zon*{p`VWNSkqB=PYg0f^B=n)c7TMM`rSbhJzRX-=ZFIz&;wk15YhTL9LW~WveU(zX z#~2RDJ{;A1jX*Fo)Q~!K$VeDHLAfAx{;G<{rEPv&XPKydIF7GNxSycgrT#&gE{@|H zDxScTw2z_7*jG{!yjr*<Z^lz9zJ+h6BW=kOSWa$fa{ZWTYc)+J>;62AXB2#AdaW2r znnqN`cablU(;E^H!~BR;7r{f^_JpGc2JM~+%$k$J>WLYv=P8$|cXP(}K!WGFBP1`L z5IpUohXfW{7@XN<%($MAEIh1PJw_;^Ck(4@3RGO3ckPFPm8O{fTf#}xvab*?syK^Z zq`jUg3<8xiT)F{0VLvTMm$_uTedlmN!FhW0%KAHlP!%uZm$Z)8luwMS^_(Wd&R`d% zhL`x-`7oX65wG>y;e{laugV%T=))uVw)4{UlaS)g=JUhi;cMr^D`ad9Tg7wQ8*Q~r zrc8n~hM$Km<V%DtWKFhuR$=yD?(-4Eb{1!Y)*RSaHG$bxXHnQ$G-m?ZY0TqfL1)oI z&r4X;=_*>%-svt{*6uokn<h|o8mrQ@0gJZg1#-&as}d-oY>>Mf1x#s$Sc770;QV7; zRVkB_@Nv|!7r52YqJ^jBUP)EeDa@O|TG_9Xy?X-dr??l9FZf{bqLlp0pkZ+q=MsnW zW{2~?=n3hI!;-Ok99u4+x#cXHJ6Dcl+Zo(Gfje5ItZ{T)z@nlh<JfZ&vsRu#S8KJL z?a$g==4|TR<ZOS{I6|+&TU9-dUJ}-@KO(htS-x1!cMtePQ?Y{jmSYtvQHv_9MKx~2 zYS!fdc9Bx24Pp93`e;d7TiX&9`w>H&z9}VjKSwz@N~(Og-p5)6&HP*FXMkD#NW_5V zoJ6kdh2~l>&744@m0Bh@vN=}gW;<NxVS7(qF5CO+6wOnnx%)2Rft+<-P2pJcaQ2{U zU7oAXH-<~DI{z4AuJvP>JKtMcrTI!V|2Q5d5I)~NB1Ea?8J&DfZf|kbsbi>d)#Z<2 z+59}sU#sQUYAV^49^^?5%lfqZgEeg<`9jMt8=d^yh$^`69-aJchSB*EztH@eGCFx& zvfO+Y$2&C-byBG8S0?bab$&}q@qE9gQifVvT04%DX+}Ktb~W{zPyN0rIa0>UBR-+| zwA|6jb!RYI{k#*K`{`+*p8njx+p!6=v6*PvLO(aqnT?EA6C=~im2LbDq7}EJjctg1 zgt0h^oj8U&a1YvXlKs=1|B&maNqZi9aFMT=KVl#LiY~m({(ra=A7GEj#WqoZgJO;q zb?{t)43-sTMvv>yVvM2m2|vDP#d|i-e4lGBXuKjn;K)raFXK6mJk<5Slsm?tm*YS9 z5l0I3{wIEn5#Ew5_yc}|hX{}+yn*Mr>m%|~c!487Od|289H|)QKMOzOD4#l);}os% z<Ij{L=~N4G4JeqTBm4xMke~cf@PL8`snmP$2=^SH?BuuTGQ5|O$It&h<|#NX3f@JL zLM`~FvSE6{hH3E)!BlgXO^4}43#QSJ0MpGDfYw+rU7Cg|QDi}LMwI^DLFw-@D81mI z^f4)LlSC=?xiOGR{7<2@ekPRm5v7M2xd>4jB}!wAOq`MLXRMAg+6l(lWN-$E&q1Pe zm?#}2_1)aPhbX<5?R_}Gew3r<xPFSX=ZKJ3h>bV#F#du^@D}@b_)L3`PdE=uF`G}Y zB0Oqkr8G*59h4S1DD^og^<+?rNe89xIw*a|LFvC8l>Wm(>F*tszV4vZbWnP$gVJ&v zrEfYY{nHJjv@9E?b2BKF)p6XZ9xIt6h;N9g5|nE#Jf2l{gj04Va3&3JCWRdS0&`c& zx-*WSkK-jdWSx11!zp&NtbG3j@7t5ColjY8OVUSewq$}=@hdVG__ZUT$rhkWt~F@^ cQ(S!(hiAz3*({E#!%@X=Y>ux{$sD}?f9@|`>;M1& literal 0 HcmV?d00001 diff --git a/src/main/java/plugins/spop/rotation3D/StackRotation.java b/src/main/java/plugins/spop/rotation3D/StackRotation.java new file mode 100644 index 0000000..95aa806 --- /dev/null +++ b/src/main/java/plugins/spop/rotation3D/StackRotation.java @@ -0,0 +1,168 @@ +package plugins.spop.rotation3D; + +import icy.image.IcyBufferedImage; +import icy.sequence.Sequence; +import icy.type.collection.array.Array1DUtil; +import icy.util.OMEUtil; +import plugins.adufour.blocks.lang.Block; +import plugins.adufour.blocks.util.VarList; +import plugins.adufour.ezplug.EzPlug; +import plugins.adufour.ezplug.EzVarSequence; +import plugins.adufour.ezplug.EzVarText; + +public class StackRotation extends EzPlug implements Block +{ + + EzVarSequence input = new EzVarSequence("Input"); + EzVarText type = new EzVarText("Type", new String[] { "FrontToRight", "FrontToTop" }, false); + // VarSequence output = new VarSequence("Output", false); + + EzVarSequence output = new EzVarSequence("Output"); + + @Override + public void initialize() + { + // TODO Auto-generated method stub + super.addEzComponent(input); + super.addEzComponent(type); + // super.addOutput(output); + super.setTimeDisplay(true); + + } + + @Override + public void execute() + { + + Sequence sequence = input.getValue(true); + Sequence seq_out = new Sequence(OMEUtil.createOMEXMLMetadata(sequence.getOMEXMLMetadata())); + if (type.getValue().equalsIgnoreCase("FrontToRight")) + { + seq_out = FrontToRight(sequence); + seq_out.setName("FrontToRight"); + } + if (type.getValue().equalsIgnoreCase("FrontToTop")) + { + seq_out = FrontToTop(sequence); + seq_out.setName("FrontToTop"); + + } + + if (getUI() != null) addSequence(seq_out); + output.setValue(seq_out); + + } + + public static Sequence FrontToRight(Sequence sequence) + { + + int z = 0; + + Sequence seq = new Sequence(); + + int dim_x = sequence.getSizeX(); + int dim_y = sequence.getSizeY(); + int dim_z = sequence.getSizeZ(); + int dim_t = sequence.getSizeT(); + int dim_c = sequence.getSizeC(); + double[][] tab = new double[dim_z][dim_x * dim_y]; + double[][][] tab_r = new double[dim_c][dim_x][dim_y * dim_z]; + + for (int t = 0; t < dim_t; t++) + { + for (int c = 0; c < dim_c; c++) + { + for (z = 0; z < dim_z; z++) + { + tab[z] = Array1DUtil.arrayToDoubleArray(sequence.getDataXY(t, z, c), false); + } + for (z = 0; z < dim_z; z++) + for (int y = 0; y < dim_y; y++) + for (int x = 0; x < dim_x; x++) + { + tab_r[c][x][y * dim_z + z] = tab[z][y * dim_x + x]; + } + } + + for (z = 0; z < dim_x; z++) + { + IcyBufferedImage Icy = new IcyBufferedImage(dim_z, dim_y, dim_c, sequence.getDataType()); + for (int c = 0; c < dim_c; c++) + Icy.setDataXY(c, tab_r[c][z]); + seq.setImage(t, z, Icy); + } + } + + System.gc(); + return seq; + + } + + public static Sequence FrontToTop(Sequence sequence) + { + + int z = 0; + + Sequence seq = new Sequence(); + + int dim_x = sequence.getSizeX(); + int dim_y = sequence.getSizeY(); + int dim_z = sequence.getSizeZ(); + int dim_t = sequence.getSizeT(); + int dim_c = sequence.getSizeC(); + double[][] tab = new double[dim_z][dim_x * dim_y]; + double[][][] tab_r = new double[dim_c][dim_y][dim_x * dim_z]; + + for (int t = 0; t < dim_t; t++) + { + for (int c = 0; c < dim_c; c++) + { + for (z = 0; z < dim_z; z++) + { + tab[z] = Array1DUtil.arrayToDoubleArray(sequence.getDataXY(t, z, c), false); + } + for (z = 0; z < dim_z; z++) + for (int y = 0; y < dim_y; y++) + for (int x = 0; x < dim_x; x++) + { + tab_r[c][y][z * dim_x + x] = tab[z][y * dim_x + x]; + } + } + + for (z = 0; z < dim_y; z++) + { + IcyBufferedImage Icy = new IcyBufferedImage(dim_x, dim_z, dim_c, sequence.getDataType()); + for (int c = 0; c < dim_c; c++) + Icy.setDataXY(c, tab_r[c][z]); + seq.setImage(t, z, Icy); + } + } + + System.gc(); + + return seq; + + } + + public void clean() + { + } + + @Override + public void declareInput(VarList inputMap) + { + // TODO Auto-generated method stub + inputMap.add(input.getVariable()); + inputMap.add(type.getVariable()); + + } + + @Override + public void declareOutput(VarList outputMap) + { + // TODO Auto-generated method stub + outputMap.add(output.getVariable()); + + } + +} -- GitLab