Purpose
An example JRuby script, which needs to be customized to be useful to you - the source code is here .
Code
# This is an example that find all the image.bin.gz files from channel
# 01 under a directory and makes an image stack of all the slices
# numbered 23. If this might be useful to you, copy the file and
# customize the bits preceded with "CHANGEME":
include_class 'util.BatchOpener'
# CHANGEME:
directory = '/Volumes/LaCie/corpus/central-complex/biorad/reformatted'
# CHANGEME:
match = /01_warp/
# CHANGEME:
def filename_to_slicename(f)
# Take the name of the parent directory:
f.gsub( /\/([^\/]+)\/[^\/]+$/, '\1' )
end
unless FileTest.directory? directory
error = "Couldn't find directory '#{directory}" +
"You probably need to customize the script."
ij.IJ.error error
exit(-1)
end
images = `find #{directory} -name 'image.bin.gz' -print0`.split("\0")
images = images.grep
if images.empty?
ij.IJ.error "No images found. You probably need to customize the script."
exit(-1)
end
slice_to_get = 23
width = -1
height = -1
depth = -1
stack = nil
images.each do |f|
i = BatchOpener.openFirstChannel f
if width < 0
width = i.getWidth
height = i.getHeight
depth = i.getStackSize
stack = ij.ImageStack.new width, height
else
unless
width = i.getWidth &&
height == i.getHeight &&
depth == i.getStackSize
ij.IJ.error "The image #{i.getTitle} didn't have matching dimensions"
exit(-1)
end
end
slice_name = filename_to_slicename f
processor = i.getStack.getProcessor( slice_to_get )
stack.addSlice slice_name, processor
i.close
end
result = ImagePlus.new "All slices numbered #{slice_to_get}", stack
result.show