Skip to content

Instantly share code, notes, and snippets.

@NicoKiaru
Last active June 19, 2023 10:33
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save NicoKiaru/15e8d39d4d18174a22402c2ca939bb81 to your computer and use it in GitHub Desktop.
Save NicoKiaru/15e8d39d4d18174a22402c2ca939bb81 to your computer and use it in GitHub Desktop.
Batch conversion to pyramidal ome-tiff using Glencoe Software optimized workflow #BIOP #Fiji #OmeTiff #MRXS
/* 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