/** * Count Spines On Dendrite * * The tool allows you to draw the path of a dendrite, manually select the spines and count the number of spines in each group. * * written 2022 by Léo Tellez-Arenas (CNRS) at Montpellier Ressources Imagerie (www.mri.cnrs.fr) */ var helpURL = "https://github.com/MontpellierRessourcesImagerie/imagej_macros_and_scripts/wiki/Count_Spines_On_Dendrite"; var _DEFAULT_INPUT_FILE = ""; var _LUT = "Grays"; var _INVERT_LUT = true; var _ENLARGE_RADIUS = 30; //In Pixel var _MIN_DENDRITE_AREA = 5000; //In Pixel var _SPINE_CIRCLE_RADIUS = 15; function showHelp() { run("URL...", "url="+helpURL); } macro "Help Action Tool - C000T4b12?" { showHelp(); } macro "Open Image Action Tool - C000T4b12O"{ openImageAction(); } macro "Open Image Action Tool Options"{ openImageOption(); } macro "Draw Dendrite Action Tool - C000T4b12D"{ drawDendriteAction(); } macro "Draw Dendrite Action Tool Options"{ drawDendriteOption(); } macro "Draw Spines Tool - C000T4b12S"{ drawSpinesAction(); } macro "Draw Spines Tool Options"{ drawSpinesOption(); } macro "Count Spines Action Tool - C000T4b12C"{ countSpinesAction(); } macro "Add Selection to Group 1 [&1]"{ setSelectionToGroup(1);} macro "Add Selection to Group 2 [&2]"{ setSelectionToGroup(2);} macro "Add Selection to Group 3 [&3]"{ setSelectionToGroup(3);} macro "Add Selection to Group 4 [&4]"{ setSelectionToGroup(4);} macro "Add Selection to Group 5 [&5]"{ setSelectionToGroup(5);} function setSelectionToGroup(groupID){ Roi.setGroup(groupID); roiManager("add"); count = roiManager("count"); roiManager("select", count-1); roiName = Roi.getName(); roiManager("rename", groupID); } function drawSpinesAction(){ getCursorLoc(x, y, z, flags); size = _SPINE_CIRCLE_RADIUS; makeOval(x-size/2, y-size/2, size, size); } function countSpinesAction(){ roiManager("deselect"); run("Clear Results"); roiManager("measure"); spineInGroup = newArray(0,0,0,0,0); for (i = 0; i < nResults(); i++) { v = getResult("Group", i); if(0 < v && v < 6) { spineInGroup[v-1]+=1; } } print("Length of the Dendrite = " + getResult("Length", 0)); for(i=0;i