Login  Register

Re: "pattern cropping"

Posted by zezh1112 on Jul 30, 2011; 2:04am
URL: http://imagej.273.s1.nabble.com/pattern-cropping-tp3683610p3683612.html

After successfully cropping 8 wells from a folder (in the first post I just
aimed to crop 4 wells in first row, now I add another variant j to include
second row), I moved on to make it easier for batch process:
 select a folder with raw data, pattern crop, create 8 subfolders in the
same folder with raw data, the cropped images are saved in these 8
subfolders.

This is what I did:

*sdir = getDirectory("choose source directory ");
run("Image Sequence...", "open=sdir number=20 starting=1 increment=1

scale=100 file=[] or=[] sort");
for (i=0; i<4; i++) {
   for (j=0; j<2; j++) {
      makeRectangle(78+251*i, 349+303*j, 216, 216);
      well ="well-"+i+j + File.separator;
      ddir = sdir+well;
      File.makeDirectory(ddir);
      run("Duplicate...", "title="+j+1+"_"+i+1+" duplicate range=6-

20");
      run("Image Sequence... ", "format=TIFF name=   ["+well+"]
start=0 digits=4 save=["+ddir+"]");
   run("Close");
   }
}*

The problem is there are 5 subfolders created, with name such as "well-0" to
"well-4", inside the cropped images respond to 0-0,1-0,2-0,3-0,3-1, if I
name the 8 wells by "i-j" format:

0-0     1-0    2-0   3-0
0-1     1-1    2-1   3-1

My guess is imageJ read my macro "+i+j" in "*well ="well-"+i+j +
File.separator;*" as a math addition, so 0-0 go into fldler well-0, 1-0 go
into folder well-1, and so on, because 1-0 and 0-1' addition result are the
same (0+1=1+0), somehow imageJ skip 0-1, the same for 1-1 and 2-1 were
skipped.

How can I fix this? Thanks again for the gracious help!

Zheng

2011/7/27 Peter Haub <[hidden email]>

> Hi Zheng,
>
> correct the last 'saveAs' statement
>
> saveAs("tiff", "C:\\Documents and Settings\\WangLab\\Desktop\\**
> TRYZZ\\"+i+");
>
> to
>
> saveAs("tiff", "C:\\Documents and Settings\\WangLab\\Desktop\\**
> TRYZZ\\"+i+"");
>
> or
>
> saveAs("tiff", "C:\\Documents and Settings\\WangLab\\Desktop\\**
> TRYZZ\\"+i);
>
> peter
>
>
>
> On 28.07.2011 05:33, zezh1112 wrote:
>
>> Hi everyone,
>>
>> This is my first time to try to write a ImageJ micro, so sorry for the
>> easy
>> question I will ask,
>>
>> The situation is that I have a plate within which there are 8 wells (4
>> wells
>> in one row, 2 rows together, in the attachment you can find one pic
>> showing
>> this pattern), one fruit fly is moving around in each well. I recorded
>> these
>> 8 flies at a certain frequency within observation time, so I got a bunch
>> of
>> images in the end (the only thing moving is flies) . I want to crop each
>> well from the whole plate picture, then run the object tracking plugin to
>> check locomotion of this fly. Since the pattern of 8 wells is constant,
>> instead of manually cropping each well, I hope I can write a macro to
>> "pattern crop" the 8 wells at the same time.
>>
>> My main logic is by changing the x and y value of "makeRectangle" to crop
>> consequential wells. (below is two trials hoping to crop the 4 wells in
>> the
>> first row, after success I would go on to add the second row)
>>
>> *I tried first the most straight-forward way, and it works:*
>>
>> run("Image Sequence...", "open=[C:\\Documents and
>> Settings\\WangLab\\Desktop\\**20110628D\\ZZ20100628D100] number=20
>> starting=1 increment=1 scale=100 file=[] or=[] sort");
>>
>>
>>
>> makeRectangle(60+100*0, 120, 200, 200);
>>
>> run("Duplicate...", "title=0 duplicate range=3-20");
>>
>> saveAs("tiff", "C:\\Documents and Settings\\Wang Lab\\Desktop\\TRY
>> ZZ\\0");
>>
>> run("Close");
>>
>> makeRectangle(60+100*1, 120, 200, 200);
>>
>> run("Duplicate...", "title=1 duplicate range=3-20");
>>
>> saveAs("tiff", "C:\\Documents and Settings\\Wang Lab\\Desktop\\TRY
>> ZZ\\1");
>>
>> run("Close");
>>
>> makeRectangle(60+100*2, 120, 200, 200);
>>
>> run("Duplicate...", "title=2 duplicate range=3-20");
>>
>> saveAs("tiff", "C:\\Documents and Settings\\Wang Lab\\Desktop\\TRY
>> ZZ\\2");
>>
>> run("Close");
>>
>> makeRectangle(60+100*3, 120, 200, 200);
>>
>> run("Duplicate...", "title=3 duplicate range=3-20");
>>
>> saveAs("tiff", "C:\\Documents and Settings\\Wang Lab\\Desktop\\TRY
>> ZZ\\3");
>>
>> run("Close");
>>
>>
>> *Then I used "for" loop as follows:*
>>
>> run("Image Sequence...", "open=[C:\\Documents and
>> Settings\\WangLab\\Desktop\\**20110628D\\ZZ20100628D100] number=20
>> starting=1 increment=1
>>
>> scale=100 file=[] or=[] sort");
>> for (i=0; i<4; i++) {
>>    makeRectangle(60+100*i, 120, 200, 200);
>>    run("Duplicate...", "title="+i+" duplicate range=3-20");
>>    saveAs("tiff", "C:\\Documents and Settings\\WangLab\\Desktop\\**
>> TRYZZ\\"+i+");
>>
>>    run("close");
>>    }
>>
>> After I run this macro, an error pop out:
>> ")" expected in line 6
>> <run>("close");
>>
>> How can I correct this? Anyone can help me? Thanks a lot in advance!
>>
>> Zheng
>>
>>
>> --
>> View this message in context: http://imagej.588099.n2.**
>> nabble.com/pattern-cropping-**tp6628531p6628531.html<http://imagej.588099.n2.nabble.com/pattern-cropping-tp6628531p6628531.html>
>> Sent from the ImageJ mailing list archive at Nabble.com.
>>
>>