spectral plot display

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

spectral plot display

Aryeh Weiss
Does anyone have a plugin that display spectral plots, with Leica LIF
(or other) spectral stacks as input?
That is, is there a plugin that reads the metadata, figures out that the
images have a spectra dimension, and is capable of plotting a
measurement against wavelength.

I wrote something simple for XYlambda LIF files, which I am appending in
case it can be of use to someone.
However, I consider it likely that someone has already done this, and
much better.

--aryeh

--
Aryeh Weiss
Faculty of Engineering
Bar Ilan University
Ramat Gan 52900 Israel

Ph:  972-3-5317638
FAX: 972-3-7384051



/* ------------------------------------cut
here-------------------------------------- */

/*
  * This macro will produce a plot of mean intensity vs wavelength for
Leica LIF spectral images
  * At present, it only handles XYlambda stacks.
  */

// if no images are open, prompt for a LIF image
inputPath="";
if (nImages == 0) {


//  Input must be an LIF file

     inputPath = File.openDialog("choose a LIF image file");

     if (inputPath == "") {
         exit("User canceled the dialog");
     }

     inputName = File.getName(inputPath);
     inputDir = File.getParent(inputPath);
     print(inputPath);
     print(inputDir);
     print(inputName);

     inputPrefix = substring(inputName, 0, lastIndexOf(inputName, "."));
     print(inputPrefix);

     run("Bio-Formats Importer", "open=&inputPath autoscale
color_mode=Default view=Hyperstack stack_order=XYCZT series_1");
}

inputImage = getTitle();

// find the appropriate metadata entries
beginLeft =
parseFloat(getInfo("HardwareSetting|ScannerSettingRecord|dblLambdaBeginLeft_0
#1"));
beginRight =
parseFloat(getInfo("HardwareSetting|ScannerSettingRecord|dblLambdaBeginRight_0
#1"));
endLeft =
parseFloat(getInfo("HardwareSetting|ScannerSettingRecord|dblLambdaEndLeft_0
#1"));
endRight =
parseFloat(getInfo("HardwareSetting|ScannerSettingRecord|dblLambdaEndRight_0
#1"));

if (isNaN(beginLeft)) {
     exit("metadata not found. Probably not A LIF image");
}


lambdaStart = beginLeft + (beginRight - beginLeft)/2;
lambdaEnd =  endLeft + (endRight-endLeft)/2;

print(lambdaStart, lambdaEnd);
waitForUser("create selection");  // selection in which measurements
will be made

// set up the arrays for plotting
lambdaArray = newArray(nSlices);
yArray = newArray(nSlices);
for (i = 0; i<nSlices; i++) {
     setSlice(i+1);
     lambdaArray[i] = lambdaStart + (i*(lambdaEnd - lambdaStart)/nSlices);

     getStatistics(area, mean, min, max, std, histogram);
     yArray[i] = mean;
     print(round(lambdaArray[i]), yArray[i]);
}

  Plot.create("INTENSITY vs WAVELENGTH", "LAMBDA, nm", "RELATIVE
INTENSITY", lambdaArray, yArray);
  Plot.show();

/*   --------------------------------------cut
here----------------------------------- */



--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html