/* * Author: Stephan Janosch, janosch@mpi-cbg.de, ORCID * */ #@ File (label = "Input directory", style = "directory") input #@ File (label = "Output directory", style = "directory") output #@ String (label = "File suffix", value = ".tif") suffix #@ String (label = "File stiching indicator", value = "_stitch_") filenameStitchCondition // See also Process_Folder.py for a version of this code // in the Python scripting language. print("\\Clear"); processFolder(input); print("Macro done"); return; // function to scan folders/subfolders/files to find files with correct suffix function processFolder(input) { //skip folder Notes if ( endsWith(input, "Notes/") ) return; list = getFileList(input); list = Array.sort(list); print("Processing Folder: " + input); for (i = 0; i < list.length; i++) { if(File.isDirectory(input + File.separator + list[i])) { processFolder(input + File.separator + list[i]); } if(endsWith(list[i], suffix)) processFile(input, output, list[i]); } } function processFile(input, output, file) { //don't process files not intended for stitching if (! matches(file, ".*"+filenameStitchCondition+".*")) { //print("Ignoring: " + input + File.separator + file); return; } //be nice, don't redo Files already stitched print("Processing: " + input + File.separator + file); pathElements = split(input,File.separator); date = split(pathElements[1], " "); date=date[0]; specimen = pathElements[2]; doneFileName=input+File.separator+replace(file, suffix, "")+".macrodone"; filename_without_suffix = replace(file, suffix, ""); filename_without_suffix = replace(filename_without_suffix, filenameStitchCondition, ""); //print(input); //print(filename_without_suffix); //print(specimen); //print(date); //create dataset xmlfile = input+filename_without_suffix+".xml"; outputPath = output+File.separator+specimen+File.separator+date+File.separator+filename_without_suffix+File.separator; File.makeDirectory(output+File.separator+specimen); File.makeDirectory(output+File.separator+specimen+File.separator+date); File.makeDirectory(output+File.separator+specimen+File.separator+date+File.separator+filename_without_suffix); print("created: "+outputPath); run("Fuse dataset ...", "process_angle=[All angles] process_channel=[All channels] process_illumination=[All illuminations] process_tile=[All tiles] process_timepoint=[All Timepoints] bounding_box=[Currently Selected Views] downsampling=1 pixel_type=[16-bit unsigned integer] interpolation=[Linear Interpolation] image=[Precompute Image] blend preserve_original produce=[Each timepoint & channel] fused_image=[Save as (compressed) TIFF stacks] lossless "+ "select=["+xmlfile+"] "+ "output_file_directory=["+outputPath+"] "); if ( !File.exists(doneFileName)) { donefile = File.open(doneFileName); File.close(donefile); } }