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. |
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: |
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 |
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 > |
> 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 |
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? |
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"); |
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. |
Free forum by Nabble | Edit this page |