// MANTIS Ratiometric (General Polarization) Script // Calculates the GP values from provided fluorescence images in a single hyperstack TIFF file. // Written by Wilson Adams | Vanderbilt Biophotonics Center | 23 Oct 2020 // ========================================================== // Get hyperstack to process (and it's name) hypstk = getTitle(); fn = File.getNameWithoutExtension(hypstk); // Set Channels for ratiometry chanA = 1; // di-4 = green spectra | Laurdan = blue spectra chanB = 3; // di-4 = red spectra | Laurdan = green spectra // Get images into variables selectWindow(hypstk); Stack.setChannel(chanA); run("Duplicate...", "duplicate channels=&chanA"); fluorA = getTitle(); selectWindow(hypstk); Stack.setChannel(chanB); run("Duplicate...", "duplicate channels=&chanB"); fluorB = getTitle(); // Calculate Sum and Diff images imageCalculator("Subtract create 32-bit stack", fluorA, fluorB); rename("diff"); diff = getTitle(); imageCalculator("Add create 32-bit stack", fluorB, fluorA); rename("sum"); sum = getTitle(); imageCalculator("Divide create 32-bit stack", diff, sum); run("Enhance Contrast", "saturated=5"); rename(fn+"_GPraw"); gp = getTitle(); close(diff); // Process visualization selectWindow(sum); setAutoThreshold("Huang dark"); run("Convert to Mask"); run("Divide...", "value=255"); mask = getTitle(); imageCalculator("Multiply create 32-bit stack", gp, mask); rename(fn+"_gpvis") gpvis = getTitle() run("Enhance Contrast", "saturated=5"); run("Fire"); //adjust LUT waitForUser("Adjust LUT"); run("16-bit"); run("RGB Color"); run("RGB Stack"); selectWindow(fluorA); run("Enhance Contrast", "saturated=0.5"); run("8-bit"); run("32-bit"); run("Divide...", "value=255.000000"); imageCalculator("Multiply create 32-bit stack", gpvis, fluorA); rename(fn+"_gpshow") gpshow = getTitle() run("16-bit"); run("Stack to RGB"); run("Enhance Contrast", "saturated=0.5"); gpshowfinal = getTitle(); close(gpvis) close(gpshow) close(sum); close(fluorA); close(fluorB); // Now run with background subtraction to compare //selectWindow(fluorA); //run("Subtract Background...", "rolling=50"); //selectWindow(fluorB); //run("Subtract Background...", "rolling=50"); // //imageCalculator("Subtract create 32-bit stack", fluorA, fluorB); //diff = getTitle(); // //imageCalculator("Add create 32-bit stack", fluorB, fluorA); //sum = getTitle(); // //imageCalculator("Divide create 32-bit stack", diff, sum); //gp_bkgd = getTitle(); //run("Enhance Contrast", "saturated=5"); //rename(fn+"_GPbkgdsub"); //close(diff); //close(sum); // Background subtraction doesnt bode well for GP image calculations for some reason. Huge amount of noise attenuation or something. //close(fluorA); //close(fluorB); //run("Add Image...", "image=NG108_show__010_comp-1.tif x=0 y=0 opacity=90"); //close("*");