stitch_a_day_windows_fusion_only1x.ijm 2.81 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
/*
 * 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);
	}

}