-
Notifications
You must be signed in to change notification settings - Fork 62
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make new CanvasFeatureRenderer #674
Comments
I'll close this for now, if there is interest we can refer back |
the new canvas features should have floating feature labels |
would be nice to be able to be zippy even at this scale, as sometimes large scale synteny patterns need that type of scale. the gene track doesn't have to be loaded for this example to work but it could be useful to call out various genes by color |
probably labels will be rendered client side possible enhancements add separate negative and positive strand genes (e.g. request from selewis, seen on some browsers like higlass, etc) |
proof of concept canvas feature renderer https://github.com/GMOD/jbrowse-components/tree/add_canvas_feature_renderer uses glyph style code adapted from jb1 |
some notes on revisiting the canvas rendering concept: here are the main reasons that SVG slows down main reasons
i have not precisely measured but i think 1, 2, 4 are sort of the main experiences of typical slowdown in the app i think canvas can solve 0,1 and 2, it would remove all the observers and dom nodes for 4. there are two paths 1) reducing need for calling out to jexl by 'detecting default settings' and not calling a callback if it is default. this is done in pileup renderer, looking for special color values like hard magenta (e.g. #f0f) and others. further work might find ways to improve inherent performance of jexl, or swap out jexl for something else for 5. the hypothesis that the webworker was causing slowness was not necessarily true, can see branch mainthread_revamp for example. browsing human GFF is quite slow on it, even though no webworker rendering is involved. the mainthread rendering does potentially have the ability to resolve 6. because the main thread can be much more like a component-level (observer-type) reactive re-render rather than doing a full webworker re-render. however, it doesn't strict have to be svg for this to gain benefits |
2mbp region https://jbrowse.org/code/jb2/main/?session=share-5GYGe1vYTY&password=yQ19P (main branch, not crashing but laggy) |
Many features in a single track can slow down the react renderer and give poor performance on the whole app. SVG gene tracks, repeat track, etc are examples of this. CanvasFeatures may improve performance
The text was updated successfully, but these errors were encountered: