// @int(label = "Min Diffraction spot size (pix^2)", value=7, description="Minimum number of pixels that consitutes a diffraction spot.") minSize // @String(label = "Beamstop Status:", choices={"Retracted", "Inserted"}, style="radioButtonHorizontal", description="If a beamstop was used, the center of the pattern is calculated differently than if no beamstop was used.") beamStopStatus // INITIALIZATION run("Duplicate...", " "); run("8-bit"); run("Clear Results"); resetThreshold(); setAutoThreshold("Default dark"); setThreshold(130, 255); //run("Threshold..."); // ADJUSTING THE THRESHOLDING LEVELS if (getBoolean("Did Auto Thresholding work?")==false) { Dialog.create("Adjust Threshold"); Dialog.addSlider("Lower:", 0, 255, 130); Dialog.addSlider("Upper:", 0, 255, 255); Dialog.show(); Lower = Dialog.getNumber(); Upper = Dialog.getNumber(); setThreshold(Lower, Upper); while (getBoolean("Click \"Yes\" when Thresholding is OK.")==false) { Dialog.create("Adjust Threshold"); Dialog.addSlider("Lower:", 0, 255, Lower); Dialog.addSlider("Upper:", 0, 255, Upper); Dialog.show(); Lower = Dialog.getNumber(); Upper = Dialog.getNumber(); setThreshold(Lower, Upper); } } else { } // TAKE MEASUREMENTS run("Set Measurements...", "area centroid redirect=None decimal=4"); run("Analyze Particles...", "size=" + minSize + "-Infinity pixel circularity=0.0-1.00 show=[Overlay Masks] display exclude include"); run("Labels...", "color=red font=28 show"); // BEAMSTOP STATUS if (beamStopStatus == "Retracted") { Dialog.create("Direct Beam Center"); Dialog.addMessage("Enter the label that corre-\nsponds to the direct beam.\n "); Dialog.addNumber(" (000):", 10); Dialog.show(); nextRow = Dialog.getNumber(); dbRow = nextRow-1; directBeamX = getResult("X", dbRow); directBeamY = getResult("Y", dbRow); } else if (beamStopStatus == "Inserted") { Dialog.create("Direct Beam Center"); Dialog.addMessage("Enter two spots that are mirrored about the direct \nbeam, and are equidistant from its center.\n "); Dialog.addNumber(" Spot 1:", 10); Dialog.addNumber(" Spot 2:", 30); Dialog.addMessage(""); Dialog.addNumber(" No. of Artifacts:", 2); Dialog.addMessage(""); Dialog.show(); nextRowSpotOne = Dialog.getNumber(); nextRowSpotTwo = Dialog.getNumber(); ignoreSpots = Dialog.getNumber(); rowSpotOne = nextRowSpotOne-1; rowSpotTwo = nextRowSpotTwo-1; spotOneX = getResult("X", rowSpotOne); spotOneY = getResult("Y", rowSpotOne); spotTwoX = getResult("X", rowSpotTwo); spotTwoY = getResult("Y", rowSpotTwo); // Taking the average makes the order entered irrelevant directBeamX = (spotOneX+spotTwoX)/2; directBeamY = (spotOneY+spotTwoY)/2; // print(directBeamX,directBeamY); } else { print("Warning! BeamStop stauts needs to be selected."); } // CALCULATIONS label = newArray(); area = newArray(); xPos = newArray(); yPos = newArray(); G = newArray(); dSpace = newArray(); for (row=0; row