Login  Register

Re: Summarize table not writing in macro

Posted by Christine Labno-2 on Sep 23, 2013; 5:35pm
URL: http://imagej.273.s1.nabble.com/Summarize-table-not-writing-in-macro-tp5004888p5004909.html

Hi Scott,

Since you asked for guidance, here are a couple of suggestions, followed by a whole batch process macro based on your code that runs and creates a summary table for me on some test images.  Full disclosure, I am being a bit lazy and just using a folder full of tif files, so I can't comment on any problems with the .zvi file opener.  

>On Friday, September 20, 2013 9:04 PM Scott Chamberlain wrote:
>Subject: Summarize table not writing in macro

>Hello all,

>I have this macro below that works fine on a single image, but doesn't work
>in batch mode. I want to use the macro to process a single folder at a time
>of images with .zvi extension.  I'd appreciate any guidance on where to
>look for the problem!

>Thanks!
>Scott Chamberlain
>Simon Fraser University

>macro "countem [q]" {
>   title = getTitle;

If you are in batch mode, there won't be a file open at this point, so there isn't a way to get a title from it.  Best to move this downstream a little.

>   input = "/path1/";
 >  output = "/path2/";

The way this is written I'm assuming you want to "hard code" in your filepaths.  This is a totally valid.  You could also choose to go with

        input = getDirectory("Choose a Directory to PROCESS");    
     list = getFileList(input);                                                                                                
output = getDirectory("Choose a Directory for SAVING");

to make the macro a little more flexible.  This will direct the user (you) to click a folder to process and another to save to each time the macro is run.  This way you won't have to modify the code for each run.  It's up to you.  

>    function doit(input, output, title) {
>       run("ZVI Reader", "open="+intput+title)

Watch out for typos, they will wreck your code :)

>       run("Subtract Background...", "rolling=100");
>       run("Invert");
>       setAutoThreshold("Yen");
>       run("Convert to Mask");
>       run("Watershed");
>       run("Set Measurements...", "slice area count mean circularity redirect=None");
>       run("Analyze Particles...", "size=40-120 circularity=0.50-1.00 show=summarize");

This all looks lovely until this line, and this may be why you get no summary table in batch mode.  My Fiji keeps telling me summarize is not a valid choice for show.  I think you want run("Analyze Particles...", "size=40-120 circularity=0.50-1.00 show=Nothing summarize");


>       saveAs("text", output+title+".txt");
>      close();
>     }

>   setBatchMode(true);
>   list = getFileList(input);
>   for (i = 0; i < list.length; i++)
>        doit(input, output, list[i]);
>   setBatchMode(false);
>}

The batch mode bit needs to move up in your code.  Also, not sure why you have the line for setting batch mode back to false.  

Here is my code:

-----------begin----------------

        input = "/path1/";
        list = getFileList(input);                                          
        output = "/path2/";

 setBatchMode(true);              
    for (i=0; i<list.length; i++) {
        path = input+list[i];                                                            
        showProgress(i, list.length);    
        if (!endsWith(path,"/")) open(path);  
if (nImages>=1) {                                          
 
   title=getTitle();                                                                        

run("Subtract Background...", "rolling=100");
       run("Invert");
       setAutoThreshold("Yen");
       run("Convert to Mask");
       run("Watershed");
       run("Set Measurements...", "slice area count mean circularity redirect=None");
       run("Analyze Particles...", "size=40-120 circularity=0.50-1.00 show=Nothing summarize");
       saveAs("text", output+title+".txt");
       close();                                                                                                  
                             
  }
}                                                      

-----------end------------------

I hope this helps you with your troubleshooting.  Good luck!

Best,
Christine

--------------------------------------------
Christine Labno, Ph.D.
Asst. Technical Director
Light Microscopy Core
University of Chicago
Office of Shared Research Facilities
KCBD 1250 900 E. 57th St.
(773) 834-9040 (phone)


--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html