what is the algorithm of Mtrack2?

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

what is the algorithm of Mtrack2?

chenyanpei
Dear all,
we know the algorithm of Mtrack is judge the nearest distance to tracking particle. But I do not know why Mtrack2 is work better than the Mtrack? It add some loop  but why these loop make the result better? If some people understand, please tell me . Thank you very much.
Reply | Threaded
Open this post in threaded view
|

Re: what is the algorithm of Mtrack2?

chenyanpei
In the program, There arethe following sentences:
and I donot know which one it chose.


// this particle is already in another track but could have been part of this one
                                                        // We have a number of choices here:
                                                        // 1. Sort out to which track this particle really belongs (but how?)
                                                        // 2. Stop this track
                                                        // 3. Stop this track, and also delete the remainder of the other one
                                                        // 4. Stop this track and flag this particle:
Reply | Threaded
Open this post in threaded view
|

Re: what is the algorithm of Mtrack2?

Nico Stuurman-4
In reply to this post by chenyanpei
> we know the algorithm of Mtrack is judge the nearest distance to  
> tracking
> particle. But I do not know why Mtrack2 is work better than the  
> Mtrack? It
> add some loop  but why these loop make the result better?

Since I wrote that plugin, I feel compelled to answer.  However, what  
exactly do you mean with "better results"?  Like MTrack (note that  
MTrack2 development started with that fine code from Jeff Kuhn, which  
itself was based on Wayne Rasband's Object Tracker), MTrack2 creates  
tracks by looking for particles in the subsequent frames within a  
certain search range.  There is some more bookkeeping of tracks that  
overlap and particles that appear and re-appear.  More information can  
be found here: http://valelab.ucsf.edu/~nico/ijplugins/MTrack2.html

MTrack2 was originally written to automate tracking of C.elegans, but  
I am happy to see that it is still useful to many people.  Its  
original use was published here:
http://www.molbiolcell.org/cgi/content/full/15/8/3729
Please feel free to cite that paper if MTrack2 was essential for your  
work.

Best,

Nico
Reply | Threaded
Open this post in threaded view
|

Re: what is the algorithm of Mtrack2?

chenyanpei
Mr Stutrman,
Nice to meet you!
It is surprise I can meet you! Thank you very much for your reply.
Because  I want to modify your program and to use in my data processing. I
had read your program, but I can not understand some of your notes and your
algorithm. I see the following one before :
http://www.physics.georgetown.edu/matlab/
<http://www.physics.georgetown.edu/matlab/>I read your program: open the
first frame, and the first particle, then loop all the frame to get this
track, and then the second particle,until all the particle. after the second
frame····until all the frame . Is it right?
<http://www.physics.georgetown.edu/matlab/> I am confused by boolean:flag,
inTrack, searchOn,foundOne, i donot know the meaning. if one particle
dispear, how the program work?
And the following note:
/ this particle is already in another track but could have been part of this
one
                                                        // We have a number
of choices here:
                                                        // 1. Sort out to
which track this particle really belongs (but how?)
                                                        // 2. Stop this
track
                                                        // 3. Stop this
track, and also delete the remainder of the other one
                                                        // 4. Stop this
track and flag this particle:


Could you explain to me if you have time? Thank you very much.




Best Wishes,
Chen Yanpei

2010/8/18 Nico Stuurman <[hidden email]>

> we know the algorithm of Mtrack is judge the nearest distance to tracking
>> particle. But I do not know why Mtrack2 is work better than the Mtrack? It
>> add some loop  but why these loop make the result better?
>>
>
> Since I wrote that plugin, I feel compelled to answer.  However, what
> exactly do you mean with "better results"?  Like MTrack (note that MTrack2
> development started with that fine code from Jeff Kuhn, which itself was
> based on Wayne Rasband's Object Tracker), MTrack2 creates tracks by looking
> for particles in the subsequent frames within a certain search range.  There
> is some more bookkeeping of tracks that overlap and particles that appear
> and re-appear.  More information can be found here:
> http://valelab.ucsf.edu/~nico/ijplugins/MTrack2.html
>
> MTrack2 was originally written to automate tracking of C.elegans, but I am
> happy to see that it is still useful to many people.  Its original use was
> published here:
> http://www.molbiolcell.org/cgi/content/full/15/8/3729
> Please feel free to cite that paper if MTrack2 was essential for your work.
>
> Best,
>
> Nico
>
Reply | Threaded
Open this post in threaded view
|

Re: what is the algorithm of Mtrack2?

Nico Stuurman-4
> I read your program: open the
> first frame, and the first particle, then loop all the frame to get  
> this
> track, and then the second particle,until all the particle. after  
> the second
> frame····until all the frame . Is it right?

No, it first loops through all the frames and executes the ImageJ  
particle Analyzer, asking it for Centroid analysis only.  IT then  
stores the centroids for all particles in the ArrayList  
"theParticles".  It subsequently iterates through this list and tries  
to assemble the particles found in tracks (which are stores as an  
ArrayList  of an ArrayList of particles).

>  I am confused by boolean:flag,

flag - indicates that this particle could also be part of another  
track, i.e., it is flagged as dubious

> inTrack,

inTrack: member variable of class "particle", indicates that this  
particle is assigned to a track

> searchOn,foundOne,

Those flags are used for bookkeeping:

foundOne: we already found a particle within the search radius.  If  
there is another one closer by, discard the one found previously.

searchOn: flag to indicate whether or not the search for other  
particles will continue.


> i donot know the meaning. if one particle
> dispear, how the program work?

Looks like the track will stop in that case.  However, when the  
particle re-appears in a following frame, it will start a new track.

> And the following note:
> / this particle is already in another track but could have been part  
> of this
> one
>                                                        // We have a  
> number
> of choices here:
>                                                        // 1. Sort  
> out to
> which track this particle really belongs (but how?)
>                                                        // 2. Stop this
> track
>                                                        // 3. Stop this
> track, and also delete the remainder of the other one
>                                                        // 4. Stop this
> track and flag this particle:

4.

Best,

Nico
Reply | Threaded
Open this post in threaded view
|

Re: what is the algorithm of Mtrack2?

chenyanpei
Thank you very much!
So I think you set two flag for the particle,one is particle.flag.this one is for the momentarily. the other is particle.inTrack. this one is permanent. so one particle can not be tracked as two times. Is it right?
Reply | Threaded
Open this post in threaded view
|

Macro using Mtrack2

sjvinay
In reply to this post by chenyanpei
Dear All,

I am writing a macro to track nuclei from a live cell imaging movie. I am using Mtrack2 to automate the tracking. I am having several problems with this macro. It seems that the macro is not able to generate tracks from binary images of DAPI stained nuclei. However, when I invert the images to a white foreground, the Mtrack2 algorithm works when i use it manually. However, when I run Mtrack2 from my own macro. The tracking does not work. Pleas ehelp.

I have put my code below. stackpath is the path to the stack of images(binary images of nuclei)

stackPath = stackFolder + "Stack.tif";

open(stackPath);

run("Invert","stack");


call("MTrack2_.setProperty","minSize","50");
call("MTrack2_.setProperty","maxSize","2000");
call("MTrack2_.setProperty","minTrackLength","3");
call("MTrack2_.setProperty","maxVelocity","4");
call("MTrack2_.setProperty","saveResultsFile","false");
call("MTrack2_.setProperty","showPaths","true");
call("MTrack2_.setProperty","showPathLengths","true");
call("MTrack2_.setProperty","showLabels","false");
call("MTrack2_.setProperty","showPositions","true");
call("MTrack2_.setProperty","skipDialogue","true");

run("MTrack2");
Reply | Threaded
Open this post in threaded view
|

Re: Macro using Mtrack2

chenyanpei
Are you sure you could use 'call'?
because I see the demo of call is
// The methods in this class are called from the CallJavaDemo
// macro at <http://rsb.info.nih.gov/ij/macros/CallJavaDemo.txt>.
// This class can be compiled with ImageJ's
//  Plugins>Compile and Run command.

public class CallDemo {

        public static String method0() {
                return "method0";
        }

        public static String method1(String arg1) {
                return "method1"+"("+arg1+")";
        }

        public static String method2(String arg1, String arg2) {
                return "method2"+"("+arg1+", "+arg2+")";
        }

}
so it just return a string. I do  not know it can work like it.
I just used ' call ' to return the version of ImageJ.
you can change the plugin parametre in the program and then just run it if you not always change your parameter.