Is it possible to read the code for packaged IGOR functions/procedures?

Ive been poking around manually and with the search function, but I cant seem to locate the code for ImageAnalyzeParticles.

I am really curious how it works, especially as I often get multiple 'hits' on 2d-gaussian profiles and I would like to reduce this behavior (obviously preferably from my side of things). It would be nice to check things thru and see how the algorithm handles the logic of delineating everything, not to mention I would probably learn a thing or three about how to write a decent program.

Im pretty sure that the behavior I am seeing is due to thresholding of the signal+noise causing small 'islands' around the perimeters of the particles, but it would be nice to know for sure.

No. All built-in operations and functions (everything that is syntax-colored in the procedure window) are compiled to machine code when Igor is built. This provides much faster performance but there is no way to access the original code.

If you would like help figuring out what is happening then I would suggest posting some screen shots and example data that show what you're looking at.

daggaz wrote:
Ive been poking around manually and with the search function, but I cant seem to locate the code for ImageAnalyzeParticles.

I am really curious how it works, especially as I often get multiple 'hits' on 2d-gaussian profiles and I would like to reduce this behavior (obviously preferably from my side of things). It would be nice to check things thru and see how the algorithm handles the logic of delineating everything, not to mention I would probably learn a thing or three about how to write a decent program.

Im pretty sure that the behavior I am seeing is due to thresholding of the signal+noise causing small 'islands' around the perimeters of the particles, but it would be nice to know for sure.


As 741 indicated, the algorithm is in compiled code. I developed this algorithm back in 1992 and I am not particularly keen to share it with anyone. There are no known problems with the algorithm.

It is impossible for ImageAnalyzeParticles to count a pixel twice. If you need help to figure out what is happening please send me an experiment containing the image in question and the code necessary to recreate the problem.

A.G.
WaveMetrics, Inc.
Bummer (but I suspected as much), I would so very much like to learn from this one. As for the problem, I am certain that it is caused by threshold-induced islands of noise around the perimeter of the main (noisy) particles. I can see them on M_imagethreshold, and both gaussian blurring and increasing /A=min_pixel fixes the problem, tho neither solution is entirely satisfactory for my situation.
daggaz wrote:
As for the problem, I am certain that it is caused by threshold-induced islands of noise around the perimeter of the main (noisy) particles.


This makes me think your problem is not with ImageAnalyzeParticles but rather with the segmentation strategy that you're using.
daggaz wrote:
Bummer (but I suspected as much), I would so very much like to learn from this one.

I don't see how the algorithm has any bearing on your application but I'd be happy to discuss with you any issue that might help. Feel free to write to me directly.


Quote:
As for the problem, I am certain that it is caused by threshold-induced islands of noise around the perimeter of the main (noisy) particles. I can see them on M_imagethreshold, and both gaussian blurring and increasing /A=min_pixel fixes the problem, tho neither solution is entirely satisfactory for my situation.

This is yet another case where a picture would be worth 1k words. If you can "see" pixels in the threshold image then ImageAnalyzeParticles will see them too. As always, 741 has the right answer -- you need to look at the processing steps you took before particle analysis but there is no point in wasting time trying to guess at the problem without having access to the experiment.