Dear Cryosparc developers,
it is common for helical assemblies to show a great diversity of symmetry within the same dataset. Currently, the way to improve the picking is to generate projections of an already obtained map, run filament tracer, and repeat for each symmetry. However this approach will tend to pick all types of tubes/filament, even if they do not match precisely the reference, and therefore an extensive cleaning is always required, with the risk of re-including different symmetries in the same subset, especially if tubes with same/close diameter have different symmetries. A good workaround would be to allow multimodel picking : by providing templates corresponding to different symmetries (either from 2D class averages that have been previously sorted, or best, from 2D projections of maps with different symmetries) as different inputs, the job would output filament traces for each of the input. This “competitive” cross-correlation would allow a much more efficient distinction between the different symmetries. To make this even more efficient, it would be possible to add parameters to ensure that filaments have a consistent assignment to one reference, to avoid for example having subsequent segments assigned to different symmetries. I ran tests, with good success, with a “running window” strategy, where in each window the assignment to a symmetry/templates was based on the majority of segments correlating best to those templates. This allow that a given filament has symmetry transitions : the result would then be that this filament is segmented in several filaments. Please do not hesitate if you want to discuss this topic more into details.
Ambroise
I must be missing something… if you’re generating templates and picking against them, why can’t you just provide multiple sets of templates at the same time?
As long as you don’t use output from the same job twice, CryoSPARC allows multiple template inputs.
Oh, does it then produce multiple outputs corresponding to each set of templates ? That would be great. Do you know if it also takes into account the particularities of helices for filament tracing as I mention (consistency/persistency of CC along filaments, etc… ) ?
That it doesn’t do, that I’m aware of.
However I’m sure @rposert will have some way of using cryosparc-tools to sort through by filament-id vs matched template.
Ok, thanks for your inputs ! So that means some scripting, yes sure it’s possible but I strongly believe that such an option would benefit many projects and could be included directly in the filament tracer job.
What do you think @mmclean ?
Dear @adesfosses,
Thank you very much for the insightful post and discussion, and thanks for patiently bearing with me. Template-specific tracing is a good suggestion, and is not done currently. Right now, the filament tracer first scores each pixel in the micrograph based on its maximum cross-correlation with any of the templates. Then, this cross-correlation “map” of the mic is traced looking for streaks of high-correlation. A more sophisticated version of the algorithm like you’re suggesting could allow for grouping templates together based on a known correspondence between templates and different species/symmetries/etc, then trace each of these cross-correlations separately, then compare these score maps and pick the best traces using some form of non-maximum suppression. Such an algorithm could construct a final set of picks where picks along the same filament are matched to the template that scored best (on average) for that filament, as you suggested.
Currently I don’t think there is a straightforward workaround to do anything similar using the filament tracer, since we don’t output the full cross-correlation score maps. But I have noted this suggestion for future developments on filament picking
Best,
Michael
Dear Michael, thanks much for noting this suggestion ! Please let me know in the future whether some tests to be run on my side (or some test data) could be useful to develop this.
Best,
Ambroise