Pick start and end from filament tracer


If I only want the starts and ends of the series picked from the filament tracer,
Is there a better way to deal with it?


Hi @yuhx0914,

If you have used the filament tracer, then the output fields filament/start_frac and filament/end_frac store the coordinates of the start/end of the filament associated with each particle. These are fractional values scaled from 0 to 1, so you need the micrograph shape (in location/micrograph_shape) in order to convert them to indices of the micrograph image. Does this suit your needs?

PS: see a description of the data fields held in particle.filament in this comment.


Hi @mmclean ,

I mean the starts and ends of our filament are not homogeneous as filament repetitive fractions.
So we want to extract them only to do the refinement.
extract filament/start_frac and filament/start_frac could work.

I checked the picked_particles.cs, which is a binary file.
Could you help me get this information?


Hi @yuhx0914,

I see, thank you for clarifying. In order to extract only the particles located at the edges of the filament, you would have to do some scripting via CryoSPARC Tools to find these particles as a subset of the original stack, and then output this subset as an External Job into CryoSPARC. For example, you could load the particles in, find all of the unique filament_uids in the dataset, and then look for the particles with the minimum and maximum value of position_A for each unique filament_uid.

Before going to that effort though, it may be worthwhile to take a look at the particle picks via Inspect Picks to see if the picks of the filament actually extend all the way to the physical ends of the filament. If I understand correctly, you’re interested in just the particles that are located on the physical start/end of the filament, not just the ones that the filament tracer happened to detect as the “start” and “end”. Based on how the filament tracer picks particles, these are not guaranteed to be the same thing. In any case, you may want to set Max distance to trim from end points (diameters) to 0 to preserve picks as close to the detected endpoints as possible.

One route to do this would simply be using 2D Classification to try to separate the starts/ends from the internal filament picks. This depends on the quality of the data but I’ve attached an example of trying this for Tobacco Mosaic Virus (EMPIAR-10022). See the second row, classes 3rd, 5th, and 7th from the left.

Hope this helps,