http://imagej.273.s1.nabble.com/Translation-error-in-ROI-generated-macros-tp5013047p5013121.html
Many thanks for your help. It works as intended now.
>> On Jun 7, 2015, at 11:29 AM, Michael Schmid <
[hidden email]>
>>wrote:
>>
>> Hi Tim,
>>
>> looking at your code, it seems clear that the roi entered by the user is
>> not kept in its original position in the Roi Manager. The command
>> roiManager("translate", lateral, vertical);
>> moves the roi position stored in the Roi Manager.
>>
>> If you just want to move the roi, but keep its position in the Roi
>>Manager
>> unchanged, you can use
>> getSelectionBounds(x, y, width, height);
>> setSelectionLocation(x+lateral, y+vertical);
>>
>> There is one more potential problem: If the original roi is not near the
>> center and would be placed outside, it seems that some feature of ImageJ
>> puts the roi back to the center.
>> On the long term, this creates too many rois in the center of the image,
>> which may affect statistical tests.
>> To prevent this, I would suggest to use setSelectionLocation on the
>> rotated roi, with a position as follows:
>> run("Rotate...", "angle=" + (random*365-180));
>> getSelectionBounds(x, y, width, height);
>> lateral = random*(getWidth-width);
>> vertical = random*(getHeight-height);
>> setSelectionLocation(lateral, vertical);
>> wait(50);
>>
>> Strange enough it seems that this does not work correctly without the
>> 'wait(50);' before adding to the Roi Manager; there must be a race
>> condition somewhere.
>
>This bug in the setSelectionLocation(x,y) macro function is fixed in the
>latest ImageJ daily build (1.49u18).
>
>-wayne
>
>> On Fri, June 5, 2015 16:07, Feinstein, Timothy N wrote:
>>> Hello,
>>>
>>> We want to know if something localizes to the axoneme of a cilium, but
>>>the
>>> signal is too noisy to do a simple Pearson's correlation. I wrote a
>>>short
>>> macro to create a large number of randomly translated 'clones' of a
>>> linear ROI made by the user over the body of a cilium; if the labeled
>>> protein is significantly in the axoneme then the profile should show
>>> greater localization (area under the curve, greater minima etc) than
>>> clones randomly positioned on the image.
>>>
>>> The macro works well, except for one annoying problem. Whenever I run
>>> this macro the first ROI, the one that the user draws, has been saved
>>>in
>>> the ROI manager in a slightly different position. Oddly it seems as if
>>> the Translate... function was applied to it with the defaults (10, 10)
>>> left in. The code is below. Any help would be greatly appreciated.
>>>
>>> Thanks,
>>>
>>>
>>> Tim
>>>
>>> Timothy Feinstein, Ph.D.
>>> Research Scientist
>>> University of Pittsburgh Department of Developmental Biology
>>>
>>> ________________________________
>>>
>>> macro "Cilia Transect Analyzer [k]" {
>>>
>>> // the user draws a segmented line over the cilium
>>>
>>> roiManager("Add");
>>>
>>> // add 20 randomly positioned ROIs:
>>>
>>> for (i=0; i<20; i++) {
>>> lateral = (((random*2)-1)*getWidth)/2;
>>> vertical = (((random*2)-1)*getHeight)/2;
>>> roiManager("Select", 0);
>>> roiManager("translate", lateral, vertical);
>>> run("Rotate...", "angle=" + (random*365-180));
>>> roiManager("Add");
>>> }
>>>
>>> // delete ROIs touching the edge
>>>
>>> n = roiManager("count");
>>> for (i=n-1; i>=0; i--) {
>>> roiManager("select", i);
>>> getSelectionBounds(x, y, w, h);
>>> if (x<=0||y<=0||x+w>=getWidth||y+h>=getHeight)
>>> roiManager("delete");
>>> }
>>>
>>> // select all ROIs and plot the transects
>>>
>>> roiManager("Deselect");
>>> roiManager("Multi Plot");
>>>
>>> }
>>>
>>> --
>>> ImageJ mailing list:
http://imagej.nih.gov/ij/list.html>>>
>>
>> --
>> ImageJ mailing list:
http://imagej.nih.gov/ij/list.html>
>--
>ImageJ mailing list:
http://imagej.nih.gov/ij/list.html