var helpURL = "http://dev.mri.cnrs.fr/wiki/imagej-macros/Measure_Rosette_Area_Tool" var MIN_INTENSITY = 175; var MAX_INTENSITY = 255; var MIN_GREEN_RED = 0; var MAX_GREEN_RED = 119; var MIN_BLUE_YELLOW = 0; var MAX_BLUE_YELLOW = 255; var MIN_SIZE = 50000; var WORKAROUND_RESULTS_TABLE_PROBLEM = true; macro "Unused Tool - {} macro "Help Action Tool - C110D0fD1fD2fD3fD4fD5fD9fDafDbeDbfDceDcfDd0DdeDdfDe0DecDeeDefDf0Df1DfcDfdDfeDffC780D27D38D39D49D4aD4bD5aD6aD6bD7bD7cD8bD9bDaaDabDbaDcaDd9C441D07D08D15D16D17D2bD2cD6eD7eDb0Dc3DccDd3DdbDeaC890D04D13D20D22D30D32D36D42D46D67D70D78D82D88D93D94D96D97Da4Da5C220D0aD0bD0cD0dD1bD1cD1dD2dD4eDaeDc0DcdDdcDe1De4DebDf4DfaC780D05D26D28D37D59D69D99Da3Da6Da7Da9Db5Dc1Dd6Dd7Dd8C670D29D3aD3bD4cD5bD5cD6cD6dD7dD8cD8dD9cDacDbbDbcDcbDdaC991D12D33D34D35D43D45D54D55D56D65D66D71D83D84D85D86D95C210D0eD1eD2eD3eD6fD7fD8fDddDedDf5DfbC780D31D40D48D7aD9aDa8Db8Db9Dc4Dc5Dc6Dc7Dc8Dc9C550D06D18D19D2aD3cD41D4dD5dD9dDadDb2Db3Dd1Dd4De3De9C991D03D10D11D21D60D77D80D81D87D90Db1Dd2De2C330D09D1aD3dD5eD8eD9eDa2DbdDe5Df6Df9C881D23D25D47D57D58D68D79D89D8aD98Da1Db4Db6Db7De7Df3C771D00D01D02D14D24D91D92Da0Dc2Dd5De6De8Df2Df7Df8Caa2D44D50D51D52D53D61D62D63D64D72D73D74D75D76"{ run('URL...', 'url='+helpURL); } macro "measure rosette Action Tool- C000T4b12m" { setBatchMode(true); run("Set Measurements...", "area display redirect=None decimal=3"); title = getTitle(); print("\\Clear"); print("\\Update0:Measuring image " + title); measureOneRosette(); print("\\Update1:FINISHED"); setBatchMode(false); } macro "batch measure rosette Action Tool- C000T4b12b" { showStatus("measure rosette..."); run("Clear Results"); run("Set Measurements...", "area display redirect=None decimal=3"); call("fr.cnrs.mri.macro.io.IOSettings.resetFileLists"); call("fr.cnrs.mri.macro.io.IOSettings.show"); waitForUser("Please select the input files using the IO_Settings dialog and press ok"); list = call("fr.cnrs.mri.macro.io.IOSettings.getFileList"); if (list=="none") {IJ.log("No files selected! Macro stopped."); return;} files = split(list, ","); for (fileIndex=0; fileIndex< files.length; fileIndex++) { print("\\Clear"); print("\\Update0:Measuring file " + (fileIndex+1) + " of " + files.length); setBatchMode(true); file = files[fileIndex]; open(file); folder = File.getParent(file); measureOneRosette(); run("Clear Outside"); if (!File.exists(folder + "/" + "control/")) File.makeDirectory(folder+ "/" + "control/"); saveAs("jpg", folder + "/" + "control/" + File.nameWithoutExtension + ".jpg"); close(); showProgress(fileIndex/(files.length-1)); } saveAs("Results", folder+"/Results.xls"); print("\\Update1:FINISHED"); } function measureOneRosette() { run("Select None"); idOriginal = getImageID(); run("Duplicate...", "title=[tmp]"); id = getImageID(); colorThreshold(); run("Analyze Particles...", "size="+MIN_SIZE+"-Infinity circularity=0.00-1.00 show=Masks exclude"); workaroundResultsTableProblem(); run("Create Selection"); id2 = getImageID(); selectImage(idOriginal); run("Restore Selection"); selectImage(id2); close(); selectImage("tmp"); close(); run("Measure"); } macro 'measure rosette Action Tool Options' { showOptionsDialog(); } function workaroundResultsTableProblem() { if (WORKAROUND_RESULTS_TABLE_PROBLEM) { updateResults(); IJ.deleteRows(nResults-1, nResults-1); updateResults(); } } function showOptionsDialog() { Dialog.create("Measure Rosette Tool Options"); Dialog.addNumber("min. luminosity", MIN_INTENSITY); Dialog.addNumber("max. luminosity", MAX_INTENSITY); Dialog.addNumber("min. green-red", MIN_GREEN_RED); Dialog.addNumber("max. green-red", MAX_GREEN_RED); Dialog.addNumber("min. blue-yellow", MIN_BLUE_YELLOW); Dialog.addNumber("max. blue-yellow", MAX_BLUE_YELLOW); Dialog.addNumber("min. size", MIN_SIZE); Dialog.show(); MIN_INTENSITY = Dialog.getNumber(); MAX_INTENSITY = Dialog.getNumber(); MIN_GREEN_RED = Dialog.getNumber(); MAX_GREEN_RED = Dialog.getNumber(); MIN_BLUE_YELLOW = Dialog.getNumber(); MAX_BLUE_YELLOW = Dialog.getNumber(); MIN_SIZE = Dialog.getNumber(); } function colorThreshold() { // Color Thresholder 1.47h // Autogenerated macro, single images only! min=newArray(3); max=newArray(3); filter=newArray(3); a=getTitle(); call("ij.plugin.frame.ColorThresholder.RGBtoLab"); run("RGB Stack"); run("Convert Stack to Images"); selectWindow("Red"); rename("0"); selectWindow("Green"); rename("1"); selectWindow("Blue"); rename("2"); min[0]=MIN_INTENSITY; max[0]=MAX_INTENSITY; filter[0]="pass"; min[1]=MIN_GREEN_RED; max[1]=MAX_GREEN_RED; filter[1]="pass"; min[2]=MIN_BLUE_YELLOW; max[2]=MAX_BLUE_YELLOW; filter[2]="pass"; for (i=0;i<3;i++){ selectWindow(""+i); setThreshold(min[i], max[i]); run("Convert to Mask"); if (filter[i]=="stop") run("Invert"); } imageCalculator("AND create", "0","1"); imageCalculator("AND create", "Result of 0","2"); for (i=0;i<3;i++){ selectWindow(""+i); close(); } selectWindow("Result of 0"); close(); selectWindow("Result of Result of 0"); rename(a); // Colour Thresholding------------- }