Skip to content

Commit 264aa96

Browse files
committed
feat: another permuteImageAndMetadataForImagePlus helper method
1 parent f2cfbbf commit 264aa96

File tree

1 file changed

+27
-0
lines changed
  • src/main/java/org/janelia/saalfeldlab/n5/universe/metadata/axes

1 file changed

+27
-0
lines changed

src/main/java/org/janelia/saalfeldlab/n5/universe/metadata/axes/AxisUtils.java

+27
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import java.util.stream.IntStream;
1313
import java.util.stream.Stream;
1414

15+
import org.janelia.saalfeldlab.n5.universe.metadata.MetadataUtils;
1516
import org.janelia.saalfeldlab.n5.universe.metadata.N5Metadata;
1617
import org.janelia.saalfeldlab.n5.universe.metadata.N5SpatialDatasetMetadata;
1718
import org.janelia.saalfeldlab.n5.universe.metadata.SpatialMetadata;
@@ -312,6 +313,32 @@ public static <T, M extends N5Metadata, A extends AxisMetadata & N5Metadata> Pai
312313
return new ValuePair<>(img, meta);
313314
}
314315

316+
public static <T, M extends N5Metadata, A extends AxisMetadata & N5Metadata> Pair<RandomAccessibleInterval<T>, M> permuteImageAndMetadataForImagePlus(
317+
final int[] p, final RandomAccessibleInterval<T> img, final M meta) {
318+
319+
// store the permutation for metadata
320+
final int[] metadataPermutation = Arrays.stream(p).filter(x -> x >= 0).toArray();
321+
322+
// pad the image permutation
323+
AxisUtils.fillPermutation(p);
324+
325+
RandomAccessibleInterval<T> imgTmp = img;
326+
while (imgTmp.numDimensions() < 5)
327+
imgTmp = Views.addDimension(imgTmp, 0, 0);
328+
329+
RandomAccessibleInterval<T> imgOut;
330+
M datasetMeta;
331+
if (AxisUtils.isIdentityPermutation(p)) {
332+
imgOut = imgTmp;
333+
datasetMeta = meta;
334+
} else {
335+
imgOut = AxisUtils.permute(imgTmp, AxisUtils.invertPermutation(p));
336+
datasetMeta = (M)MetadataUtils.permuteSpatialMetadata(meta, metadataPermutation);
337+
}
338+
339+
return new ValuePair<>(imgOut, datasetMeta);
340+
}
341+
315342
public static <T> RandomAccessibleInterval<T> reverseDimensions(final RandomAccessibleInterval<T> img) {
316343

317344
final int nd = img.numDimensions();

0 commit comments

Comments
 (0)