Increasing macro routine efficiency

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Increasing macro routine efficiency

Joaquin Soriano
I have  built a very large macro and know I'm thinking about increasing his
efficiency by reducing his executing time. This macro combines series of
images and always gives a result window, I think that I could reduce the
macro executing time if I could tell the program not to show me any image
but the last one. The fact is that I don't have any idea about programming
(I built the macro using the plug in "Macro Record"), but it looks intuitive
that the PC "expends time" creating this "intermediary images" and that I
could save time if this images were not created. Am I right? , How can be
that done?

 

For example, if I had to do an XOR between the image stacks 1 and 2 and then
execute a reconstruct command using the image 1 as mask and the result of
the XOR as seed, the macro written by the Macro recorder will be this:

 

imageCalculator("XOR create stack", "1.tif","2.tif");

//run("Image Calculator...", "image1=1.tif operation=XOR image2=2.tif create
stack");

run("BinaryReconstruct ", "mask=1.tif seed=[Result of 1.tif] create white");

 

Then, I would have four stacks as a result of executing this macro: the
original ones ("1.tif" and "2.tif"), the resulting stack ("Reconstructed")
and the stack "Result of 1.tif". I'm not interested in the stack "Result of
1.tif" and I think that creating this image is a waste of time. Can I modify
the "macro code" somehow, in order to avoid creating this stack?

 

PS: if any one has any idea about how to optimize the macros running time,
please let me know, all suggestions are welcome.

 

Thank you very much in advance.

 

Joaquim Soriano Felipe. PhD student.
Dpt. of Medical sciences, School of Medicine-CRIB, University of Castilla-la
Mancha  

 C/ Almansa, 14, 02006 Albacete (Spain).

Tel. +0034-967599200 Ext.2934

Fax. +0034-967599327

[hidden email]

 
Reply | Threaded
Open this post in threaded view
|

Re: Increasing macro routine efficiency

Ben.BigHair
Joaquin Soriano wrote:

> I have  built a very large macro and know I'm thinking about increasing his
> efficiency by reducing his executing time. This macro combines series of
> images and always gives a result window, I think that I could reduce the
> macro executing time if I could tell the program not to show me any image
> but the last one. The fact is that I don't have any idea about programming
> (I built the macro using the plug in "Macro Record"), but it looks intuitive
> that the PC "expends time" creating this "intermediary images" and that I
> could save time if this images were not created. Am I right? , How can be
> that done?
>
>  
>
> For example, if I had to do an XOR between the image stacks 1 and 2 and then
> execute a reconstruct command using the image 1 as mask and the result of
> the XOR as seed, the macro written by the Macro recorder will be this:
>
>  
>
> imageCalculator("XOR create stack", "1.tif","2.tif");
>
> //run("Image Calculator...", "image1=1.tif operation=XOR image2=2.tif create
> stack");
>
> run("BinaryReconstruct ", "mask=1.tif seed=[Result of 1.tif] create white");
>
>  
>
> Then, I would have four stacks as a result of executing this macro: the
> original ones ("1.tif" and "2.tif"), the resulting stack ("Reconstructed")
> and the stack "Result of 1.tif". I'm not interested in the stack "Result of
> 1.tif" and I think that creating this image is a waste of time. Can I modify
> the "macro code" somehow, in order to avoid creating this stack?
>
>  
>
> PS: if any one has any idea about how to optimize the macros running time,
> please let me know, all suggestions are welcome.
>
>  
>
> Thank you very much in advance.
>
>  

Hi,

I'm not clear on the importance of creating the stack as a result of the
calculation, but there is a nice option in the macro language
"setBatchMode" which, went set, greatly speeds things along.  You might
give that a try.

Cheers,
Ben