GMOD / jbrowse-components

Source code for JBrowse 2, a modern React-based genome browser
https://jbrowse.org/jb2
Apache License 2.0
199 stars 61 forks source link

Create multi-file importer #668

Open cmdcolin opened 4 years ago

cmdcolin commented 4 years ago

We would like to have an optimized experience for adding tracks, sometimes someone has a list of URL or shift-selects a bunch of hard drives tracks.

The JBrowse 1 track selector is a good model for this

In JBrowse 2 we would need to

a) Make this available from the main menu bar b) Make this available from the hierarchical track selector (+) icon

One aspect is that each of these components should be able to request from a "service discovery" point of view, what menu options are available for it, returning ["Add connection", "Add tracks", etc]

Then, the details of the multi-file importer will need

a) All the track types b) All the data adapter types c) List of file extensions that maps to those track types and store types (this already kind of exists, but maybe needs to become a thing where plugins can register a file extension) d) The choice of which dataset to add the tracks to e) Add method to data adapters to validate their configuration "is this a valid configuration" f) A new "file type driver" method for the data adapters that registers how its configuration is loaded, see e.g. jbrowse 1 CRAMDriver.js and similar

cmdcolin commented 4 years ago

localhost_jbrowse__data=hg19 loc=NC_000001 11%3A1901426 1925909 tracks=ncbi highlight=

cmdcolin commented 4 years ago

I added this to the priority queue because I think that the app will benefit greatly from having multi-file importing. I just think the procedure of manually going through and adding files one by one with the "Add track" wizard is time consuming and not a good user experience. If multi file importing is too complicated, it should be able to be streamlined in some other way e.g. streamlined single file importing.

cmdcolin commented 4 years ago

Also opinions welcome...I just think for example, that is a missing connection in the demo script that I presented. I did not want to spend 10 more minutes in the demo individually opening each file