Skip to content

Instantly share code, notes, and snippets.

@NicoKiaru
Created March 29, 2022 12:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save NicoKiaru/ae1f598e734d563083eddad90ee17e2e to your computer and use it in GitHub Desktop.
Save NicoKiaru/ae1f598e734d563083eddad90ee17e2e to your computer and use it in GitHub Desktop.
Removes all 32 bits file from an Operetta dataset - crops values above 65535 #BIOP #Fiji #Operetta
#@File(label = "Select the 'Images' folder of your Operetta dataset", style = "directory") folder
#@TaskService taskService
def task = taskService.createTask("Operetta Sanitizer ")
try {
task.setStatusMessage("Listing files...")
task.setProgressMaximum(0)
def fileList = folder.list() as List
task.setStatusMessage("number of files: "+fileList.size()+" dataset:"+FilenameUtils.getName(folder.getParent()))
task.setProgressMaximum(fileList.size())
def lock = new Object()
fileList.parallelStream().forEach{filename -> {
def file = new File(folder, filename)
//IJ.log(file.getName())
String extension = FilenameUtils.getExtension(filename)
if (("tiff".equals(extension))||("tif".equals(extension))) {
def reader = new MinimalTiffReader()
try {
def omeMeta = MetadataTools.createOMEXMLMetadata()
reader.setMetadataStore(omeMeta)
reader.setId(file.getAbsolutePath())
reader.setSeries(0)
def pixelType = omeMeta.getPixelsType(0)
reader.close()
if (pixelType == PixelType.FLOAT) {
println(file.getName()+" is 32 bits! Converting to 16 bits")
def image = (new Opener()).openImage(file.getAbsolutePath())
image.getProcessor().setMinAndMax(0, 65535);
image.setProcessor(image.getProcessor().convertToShortProcessor(true))
String path = file.getAbsolutePath()
file.delete()
new FileSaver(image).saveAsTiff(path)
}
} catch (def e) {
IJ.log(e.getMessage())
}
}
synchronized(lock) {
task.setProgressValue(task.getProgressValue()+1)
}
}}
} finally {
task.run(() -> {})
}
import org.apache.commons.io.FilenameUtils
import ij.IJ
import loci.formats.in.MinimalTiffReader
import loci.formats.meta.IMetadata
import ome.xml.model.enums.PixelType
import loci.formats.MetadataTools
import ij.io.Opener
import ij.io.FileSaver
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment