// Author: Bill Christens-Barry // License: free in every sense // Name: PlotOceanOpticsSpectrumFiles.txt // Desc: Plots all OceanOptics spectrum files in a user-chosen folder // Inputs: folder containing only OceanOptics spectrum files, each saved as a tab-delimited text file with header (first 17 header lines of each file are ignored) // Output: stack of plotted spectra; integrated intensity and coordinates of peak intensity printed in plot window; data values printed in Log window // Recursively plots the files in a user-chosen directory, // then creates a stack from these files. List of data // is printed in Log window. // File header data (first 17 lines) is discarded. macro "EQPI-OOSpectralFolderBatcher [F1]" { start = getTime(); print("\\Clear"); dir = getDirectory("Choose a Directory "); listOut = getFileList(dir); print("\\Clear"); print("Chosen directory: " + dir + " ; number of files: " + listOut.length); print(""); setBatchMode(1); bl = 17; x = newArray(2048); y = newArray(2048); for (i = 0; i < listOut.length; i++) { if (endsWith(listOut[i], ".txt")) { fullPath = dir + listOut[i]; print((i + 1) + " : " + listOut[i]); lines = split(File.openAsString(dir + listOut[i]),"\n"); file = File.name; print(""); imin = 2047; imax = 0; xmin = 2000; xmax = 0; ymin = 4000.0; ymax = 0.0; ysum = 0.0; for (j = 0; j < 2048; j++) { parts = split(lines[j + bl],"\t"); x[j] = parseFloat(parts[0]); y[j] = parseFloat(parts[1]); ysum += y[j]; if (y[j] > ymax) { xmax = x[j]; ymax = y[j]; imax = j; } if (y[j] < ymin && j > 0) { xmin = x[j]; ymin = y[j]; } print(j + " " + x[j] + " " + y[j]); } print(""); for (j = 1; j < 2048; j++) { y[j] = y[j] - ymin; } Plot.create(file, "Wavelength (nm)", "Intensity (a.u.)"); Plot.setLimits(x[0], x[2047], 0, 4000); Plot.setColor("red"); Plot.add("line", x, y); Plot.addText("Peak hgt. max (" + ymax + ") @ " + d2s(xmax, 2) + " nm", 0.4, 0.08); Plot.addText("Sum = " + d2s(ysum, 2), 0.1, 0.08); Plot.show(); if (is("Caps Lock Set")) exit; print(""); } } run("Images to Stack", "name=Spectra title=[] use"); setBatchMode(0); }