Last active
June 19, 2023 10:33
Batch conversion to pyramidal ome-tiff using Glencoe Software optimized workflow #BIOP #Fiji #OmeTiff #MRXS
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* Batch conversion of files to OME-TIFF following this install: | |
* https://c4science.ch/w/bioimaging_and_optics_platform_biop/image-processing/qupath/ome-tiff-conversion/ | |
* | |
* Uses bioformats2raw and raw2ometiff | |
* https://www.glencoesoftware.com/blog/2019/12/09/converting-whole-slide-images-to-OME-TIFF.html | |
* | |
* Works with MRXS files | |
* | |
* Nicolas BIOP, EPFL, 2021 | |
*/ | |
#@File(label = "File to convert to ome.tiff") originalFile | |
#@Integer(label = "Number of resolution levels", value = 5) nResolutions | |
#@Boolean(label = "Check if this is a RGB image") isRGB | |
#@String(label = "Compression", choices = {"Uncompressed", "LZW", "JPEG-2000", "JPEG-2000 Lossy","JPEG", "zlib"}, value = "LZW") compression | |
bf2rawPath = "bioformats2raw.bat" | |
raw2ometiffPath = "raw2ometiff.bat" | |
// First step : create a temporary dir for raw data | |
String tmpdir = Files.createTempDirectory("raw2ometiff").toFile().getAbsolutePath(); | |
// Starts the command | |
List<String> cmd = new ArrayList<>(); | |
// bioformats2raw.bat --resolutions=4 source dest | |
cmd.add(bf2rawPath) | |
cmd.add("--resolutions="+nResolutions) | |
cmd.add(originalFile.getAbsolutePath()) | |
cmd.add(tmpdir+File.separator+"raw") | |
println("Tmp folder = "+tmpdir+File.separator+"raw") | |
ProcessBuilder pb = new ProcessBuilder(cmd); | |
println("- Starting conversion to raw data (1/2) "+originalFile.getAbsolutePath()) | |
Process p = pb.inheritIO().start(); | |
p.waitFor(); | |
println("- Done") | |
// raw2ometiff.bat --compression="LZW" source dest.tiff | |
def ometiffFileName = FilenameUtils.removeExtension(originalFile.getAbsolutePath())+".ome.tiff"; | |
cmd.clear() | |
cmd.add(raw2ometiffPath) | |
cmd.add("--compression="+compression) | |
cmd.add("--progress") | |
cmd.add(tmpdir+File.separator+"raw") | |
cmd.add(ometiffFileName) | |
pb = new ProcessBuilder(cmd); | |
//pb.redirectInput(ProcessBuilder.Redirect.INHERIT); | |
//pb.redirectOutput(ProcessBuilder.Redirect.INHERIT); | |
println("- Starting writing as ome.tiff (2/2) : "+ometiffFileName) | |
p = pb.inheritIO().start(); | |
p.waitFor(); | |
println("- Done") | |
println("Cleaning raw temp data"); | |
FileUtils.deleteDirectory(new File(tmpdir+File.separator+"raw")); | |
println("- Done"); | |
import java.io.* | |
import java.util.ArrayList | |
import java.util.List | |
import java.nio.file.Files | |
import org.apache.commons.io.FilenameUtils | |
import org.apache.commons.io.FileUtils | |
import ij.IJ | |
import ij.Prefs |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment