Giter Club home page Giter Club logo

igv.js's People

Contributors

adamkewley avatar anderspitman avatar arpanda avatar blajoie avatar brianjohnhaas avatar bw2 avatar cheehongsg avatar david-ma avatar davideby avatar davidlougheed avatar docwarren avatar eweitz avatar helgathorv avatar ishanley avatar jmtcsngr avatar jrobinso avatar kaushik51094 avatar khadley avatar llincoln3 avatar mschroering avatar pratibha-strand avatar roadroller avatar romanzenka avatar romgrk avatar schwarzmarek avatar skushch avatar turner avatar vrockai avatar wilsongen avatar zoecastillo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

igv.js's Issues

Consolidate cursor loadTrack methods

There are 3 different methods for loading tracks: loadTrack, loadTrackPath, and loadTrackFile. The latter 2 are nearly identical. Consolidate these, perhaps into a single method that takes a list of items to load.

Cursor is buggy with 3-column bed files

The session below should reproduce the bugs

  1. When loading I see the bottom track appearing and then disappearing (until you fit-to-screen)
  2. The tss_bad is the one with only 3 fields - which looks solid when zoomed out, but looks ok when zoomed in

{
"start": 0,
"end": 33156,
"regionWidth": 100,
"framePixelWidthUnitless": 0.00003016045361322234,
"trackHeight": 100,
"tracks": [
{
"label": "tss",
"color": "rgb( 3, 116, 178)",
"order": 0,
"height": 100,
"path": "http://www.broadinstitute.org/~nshoresh/BroadE/Examples/tss.bed",
"trackFilter": {
"isFilterActive": false,
"radioButtonIDPrefix": "minMaxRadio_"
}
},
{
"label": "tss_bad",
"color": "rgb( 3, 116, 178)",
"order": 1,
"height": 100,
"path": "http://www.broadinstitute.org/~nshoresh/BroadE/Examples/tss_bad.bed",
"trackFilter": {
"isFilterActive": false,
"radioButtonIDPrefix": "minMaxRadio_"
}
},
{
"label": "tss_trackline",
"color": "rgb( 3, 116, 178)",
"order": 2,
"height": 100,
"path": "http://www.broadinstitute.org/~nshoresh/BroadE/Examples/tss_trackline.bed",
"trackFilter": {
"isFilterActive": false,
"radioButtonIDPrefix": "minMaxRadio_"
}
},
{
"label": "H1_H3K4me3",
"color": "rgb( 3, 116, 178)",
"order": 3,
"height": 100,
"path": "http://www.broadinstitute.org/~nshoresh/BroadE/Examples/H1_H3K4me3.bed",
"trackFilter": {
"isFilterActive": false,
"radioButtonIDPrefix": "minMaxRadio_"
},
"designatedTrack": true
}
]
}

Create alert / message box or dialog

Create a general message widget for alerts, errors, and other messages to users. First application would be "resource not found" type messages.

tabix indexed file problems

When loading a tabix indexed file feature are only shown for the initial locus. Everywhere else is blank. Probably a caching issue.

Unable to read large BAM header which spans multiple bgzf blocks

bamReader readHeader needs some refactoring to handle larger BAM header content.

It was not sufficient to simply increase the number of bytes initially read, as only a single bgz block was uncompressed during processing despite a larger range fetched by the dataLoader.

Our BAM files for Proton have one RG entry per processed tile (96) and many CO comments to capture parameters used to generate the files, making for rather large BAM headers.

Support UCSC track hub syntax

Track hubs are important for Encode, and by extension Cursor

Guide to basics: https://genome.ucsc.edu/goldenPath/help/hubQuickStart.html

Really important for understanding structure of file: https://genome.ucsc.edu/goldenPath/help/trackDb/trackDbHub.html

Example trackDB.txt file: https://www.encodeproject.org/batch_hub/searchTerm=bernstein+k562,,type=experiment/hg19/trackDb.txt

The excellent Dalliance parser by Thomas Down: https://github.com/dasmoth/dalliance/blob/master/js/thub.js

Dialogs should have reasonable default behavior when closed with "return" key

Generally, when closing input dialogs with a "return" key the "OK" or similar button action should be invoked. If I close the track height button with a return key nothing happens, effectively the "Cancel" action. Perhaps the default button should also be highlighted in some way, I'm not sure what the web standards for highlighting are.

Separate file type and render type

It would be useful to distinguish between file type and rendering type, where file type determines the parsing (data model) and rendering type defines how features are drawn (data view).

ie. input is a bed file, rendering is via arcs

Alignment filter options

Add alignment filter options through the track api (no UI yet). These are user preferences in IGV, so we will effectively make them developer (embedder) preferences through the track config json.

screen shot 2015-03-12 at 4 02 26 pm

Track menu for cursor

Add a track menu for cursor with the following initial items:

change name
change color
change height
remove

The menu will be invoked from an icon, perhaps replacing the current "x" remove icon.

Rethink track height concept

The notion of track height is a bit fuzzy and confused. Refactor taking into account the following

Its useful for some track types to autosize, specifically those with a variable number of fixed height rows. For now that is feature annotation, bam, and seg tracks.

So bam, annotation, and seg tracks will autosize by default within some limits, by default 20 - 1000 pixels. If the user manually sets a track height through the menu or startup config object autosize is turned off. We need a menu item or other action to turn it back on (issue #64).

Numeric tracks with a vertical scale must have a size fixed, or a scale (units/pixel) fixed. Its most useful and natural to fix a size and compute a scale. => wig and related tracks have fixed sizes and do not automatically resize.

Sweep drag should always zoom

Sweep drag should always zoom, up to max zoom. Currently if you are zoomed in close to max and then sweep out an area that would exceed the max the swept area is grey and nothing happens. It should zoom as far as possible and center on center of the swept area. There should never be any grey no-ops. See Helga if this isn't clear.

Fix track height restrictions

From the HipChat conversation between Doug and Jim.
The Track Height min and max values are too restricted.
Perhaps make the min = the min height you need to display the gear
Not sure what the max should be.
screen shot 2015-03-19 at 9 52 35 am

Track color dialog issues

2 issues with the track color dialog.

(1) If I select a color, then later select another one, subsequent invocations of the dialog default to the first color selected, not the current color.

(2) I can't cancel the track color dialog, the button is disabled. The OK button on the other hand is enabled, even if I haven't selected a new color.

Support bigbed for Cursor

Support bigbed files in Cursor. Will need to write code to read all features from a bigbed file as CURSOR needs the entire file.

Queries on indexed files can fail if content-length is unknown

If the content-length is unknown its possible to attempt a range-byte request beyond the end of the file. We need to catch the "unsatisfied range" error and retry (this might not be possible). Alternatively, perhaps the indeces themselves (bam, tabix, bigwig, idx) has the file size information.

Pop text window problem with large value strings

The popup text window is not handling large value strings (e.g. read base or quality sequence string) very well, its much too wide and can extend off to the left of the view. The window should have a maximum width, and large strings should either wrap or be scrollable.

image

"Auto height" track menu item

We need a means to set track height to "auto". Currently we can set it to an explicit height. A quick and dirty method would be to accept the string "auto" in the dialog, but a checkbox might be better.

Implement sort-by-base

Implement sort-by-base, triggered by a call to a method on an alignment track with the genomic location for the sort as an argument. We will implement a menu item later, which might require a center-line to show sort location.

Investigate auto-complete for search box

Investigate the feasibility of auto-complete, at least for the chromosome names. The iPad app does this for features and is pretty fast. The chromosome names are in-memory and can be fetched through the current sequence object (igv.browser.genome.sequence.chromosomeNames).

Autoscaling issues

Autoscaling bigwigs, and probably other types, needs some work. Where possible, scale once for all zoom levels, otherwise you get disturbing changes in scale as you zoom as illustrated by the 2 screenshots.
screen shot 2015-03-18 at 12 52 03 pm
screen shot 2015-03-18 at 12 51 53 pm

Implement GWAS catalog SNP tick track

Ayellet attached a table with association details for 8,078 GWAS genome-wide significant SNPs from the NHGRI GWAS catalog for >600 diseases and traits. This is for the GWAS catalog SNP tick track.

Here is a proposed order of summarizing the association info in a box, when clicking on a given SNP tick:

Strongest SNP-risk allele: rs12913832-A
Chr position (GRCh37): 15:28365618
Disease/Phenotype: Eye color
P-value: 1.00E-300
Odds ratio or beta: 2.49
PUBMEDID: 20585627

Note: A given SNP may be associated with more than one trait. In that case we could list all SNP-trait associations in one box, one below the other with an empty line separating between the associations, as done in the diabetes portal (see attached picture for example).

Here's the accompanying text file information in a private github gist:

https://gist.github.com/khadley/3f8823b278682579d72f

Here's the screen shot.

screen shot 2015-04-01 at 2 47 52 pm

Alignment color options

Implement color-by options in the alignment track menu. IGV desktop has a number of options. For now lets just do 3 in such a way that is easily extended

none
read strand
first-of-pair strand

screen shot 2015-03-12 at 3 55 44 pm

Drag and drop tracks

Support drag and drop of tracks to rearrange order. We'll use a vertical bar on the left side as the "grab" handle.

Updates from meeting 4/23/15 (added by HT)

  • The handles are too far away from the track. In regular IGV (not CURSOR) eliminate the left gutter space. Put the axis (see EQTL Skin track) on the right side of the track. NOTE - moving the axis to the right has a separate issue #92
  • 4/27 we decided to try putting the drag handles on the right - then we won't have to move the left gutter
  • We like the new slightly rounded corners on left side of the bars. But the bars need to be thinner and not as noticeable. Perhaps a lighter grey color? Perhaps just a think outline?
  • Bug: Currently the highlighting does not work consistently

Cannot load session file (Cursor)

Reported by a user in Noam's tutorial against "production" Cursor. User selected a session file with the "Choose Files" button. After dismissing the file dialog there is no "load" button or other means to trigger the load. See screenshot.
screen shot 2015-03-24 at 1 34 03 pm

Cursor tracks flashing during load

NOTE: consider tackling issue #61 before this one.

There is a fair bit of flashing and weird looking redraws when loading multiple tracks or a session into cursor. To stop this perhaps we should investigate deferring adding tracks until features for all tracks are loaded. This sort of scatter and wait is done elsewhere. In pseudo code something like this

function loadAll(tracks) {
    var trackCount = tracks.length;
     tracks.forEach(function (track) {
         track.getFeatureCache(function (features) {
                trackCount--;
                if(trackCount === 0)  addAll(tracks)
         }
   }
}
function addAll(tracks) {
   tracks.forEach(function (tracks) { browser.addTrack(track) }
}                   

Implement alignment downsampling

Implement windowed downsampling as in IGV desktop. This is neccessary to prevent running out of memory when browsing deep coverage files, or specific loci with deep coverage. The downsampling needs to occur as the alignments are read, in a psuedo streaming mode. This will require breaking queries for a range into manageable sized chunks (manageable in byte size, not genomic size).

Test Safari with range byte requests

The following work around for a Safari bug had to be removed, the header is not allowed by all servers (in particular Encode DCC)

       //xhr.setRequestHeader("If-None-Match", Math.random().toString(36));  // For nasty safari bug 

So we need to re-test Safari and implement another workaround if needed that does not use request headers. The bug is Safari does not consider the byte range in its cache, so future requests for a different range can return the original results.

CURSOR session files should be validated

We should warn the user of problems with session files. There are 2 cases

(1) invalid json (e.g. missing closing bracket)
(2) unrecognized fields (e.g. mispelling "tracks")

For the first we presumably get an error message from the JSON parser we can relay. The second is more difficult.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.