igvteam / igv.js

Embeddable genomic visualization component based on the Integrative Genomics Viewer
MIT License
643 stars 230 forks source link

Sashimi plot #67

Open jrobinso opened 9 years ago

jrobinso commented 9 years ago

The Sashimi plot is a popular feature in IGV, lets do it for igv-web.

jrobinso commented 9 years ago

Assigning to Doug but should be done with guidance from me.

cristynkells commented 7 years ago

Was wondering if the Sashimi Plot enhancement will be revisited anytime soon? This feature would would be extremely useful.

jrobinso commented 7 years ago

We have gotten zero requests for this, until now.

hmgeiger commented 7 years ago

+1

Being able to look at splicing is extremely useful for visualizing RNA-Seq data.

rivmar1980 commented 7 years ago

Agree - we need sashimi for igv-web

jrobinso commented 7 years ago

OK everyone, let's turn the discussion to how it would work. Obviously its going to be different, we're not going to have popup windows with a sashimi plot. Is it implemented as a new track type in igv.js, or as a separate stand-alone component?

On Thu, Apr 27, 2017 at 8:21 AM, rivmar1980 notifications@github.com wrote:

Agree - we need sashimi for igv-web

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub https://github.com/igvteam/igv.js/issues/67#issuecomment-297747010, or mute the thread https://github.com/notifications/unsubscribe-auth/AA49HHPa3P3DqU1regTmzB6QZKqrUjEiks5r0LJmgaJpZM4D48Bv .

rpique commented 6 years ago

new track would be good, or a special flag for bam to show splice junctions used by more that x reads.

jimhavrilla commented 6 years ago

I think a new track type is a great idea -- if that would be easy to implement. I feel like most users would be happy with some form of it, and would accept the easier one for you to implement.

davemcg commented 5 years ago

Curious if this feature is still being considered for implementation. Thanks.

bw2 commented 5 years ago

Would it be reasonable to add this as a toggle-able feature of the BamTrack ? I'm thinking something like config.showSpliceJunctions = True to make the CoverageTrack show sashimi-style junctions connecting coverage islands.

paul-shannon commented 5 years ago

For what it's worth, a couple of users of igvR also request a sashimi track.

bw2 commented 5 years ago

Wow, I just realized "Show Splice Junction Track" already exists in IGV Desktop. I had only seen the Sashimi Plot feature before...

image

jrobinso commented 5 years ago

That would be easier to implement in igv.js than sashimi.

On Wed, Jun 26, 2019 at 1:50 PM bw2 notifications@github.com wrote:

Wow, I just realized "Show Splice Junction Track" already exists in IGV Desktop. I had only seen the Sashimi Plot feature before...

[image: image] https://user-images.githubusercontent.com/6240170/60213884-6ada7800-9832-11e9-9af8-34f01a993775.png

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub https://github.com/igvteam/igv.js/issues/67?email_source=notifications&email_token=AAHD2HE4VO5EHC6NAEBI4FTP4PI7VA5CNFSM4A7DYBX2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODYUYX6A#issuecomment-506039288, or mute the thread https://github.com/notifications/unsubscribe-auth/AAHD2HE4HSEWO32745DAJB3P4PI7VANCNFSM4A7DYBXQ .

-- Sent from Gmail Mobile

arthurchipdean commented 5 years ago

Any updates on this? We are also interested in using the sashimi plots in igv.js. Thank you!

jrobinso commented 5 years ago

@arthurchipdean I'm inching closer to starting this. Its not a simple thing and I have a lot of projects, but am committed to doing this one. Have you given any thought as to how it would work in the context of igv.js? In IGV we open it in a separate window, probably wouldn't do that here but its possible we would. The splice junction track mentioned above is a simpler visualization that is displayed inline as a track, that's one possibility for sashimi js. Not necessarily the splice junction, but inline as a track.

arthurchipdean commented 5 years ago

@jrobinso It could be setup as a movable overlay with a close button, similar to how the tool tips function right now.

bw2 commented 5 years ago

Hi Jim, I was looking at this again and thinking about how to show coverage + STAR aligner splice junction calls in one track. There isn't a format I'm aware of that stores both coverage + splice junctions in one file, so I'm thinking bigWig for coverage and .bed for splice junctions. IGV.js is already extremely fast for both formats + that MergeTrack makes it easy to render a "wig" track on top of a modified "feature" track which can render the bed features as junctions similar to the "fusionjuncspan" code. I have a demo implementation and can PR it if this sounds like a reasonable approach.

jrobinso commented 5 years ago

@bw2 Yes good suggestion, and that is the path I'm taking. I think either bed/wig or BAM should be supported. I've made a start at this here: https://github.com/igvteam/sashimi.js. The demo "sashimi.html" uses hardcoded feature + wig records which, when complete, will be supplied by igv.js. How those records get created won't matter to the sashimi plot.

What is the demo implementation? A sashimi plot? Yes I would like to see it, either a PR or a pointer to your branch would work. A PR has the advantage of easily seeing the diffs.

This is a slow burner project, I have to fit it in with other igv.js and IGV priorities but it is moving.

bw2 commented 4 years ago

Great! From what I can tell, our implementations could be complementary. I just submitted #1019 which aims to do something like the embedded scrollable sashimi track in desktop IGV RNA-seq bam tracks image

jrobinso commented 4 years ago

Yes, I took a quick look and your PR looks great. Unfortunately it will be a few days, probably next week, before I can get to it. The "junction" track is quite popular in IGV desktop, as is the popup sashimi that I'm working on, they are complimentary.

On Tue, Nov 12, 2019 at 8:11 PM bw2 notifications@github.com wrote:

Great! From what I can tell, our implementations could be complementary. I just submitted #1019 https://github.com/igvteam/igv.js/pull/1019 which aims to do something like the embedded scrollable sashimi track in desktop IGV RNA-seq bam tracks [image: image] https://user-images.githubusercontent.com/6240170/68732460-7b9d4780-05a1-11ea-903f-71828de48d0f.png

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/igvteam/igv.js/issues/67?email_source=notifications&email_token=AAHD2HBI7BJZGWAWSVN5KILQTN47BA5CNFSM4A7DYBX2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOED42BIA#issuecomment-553230496, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAHD2HD4OZRORVGEAWD5TX3QTN47BANCNFSM4A7DYBXQ .

bw2 commented 4 years ago

Terrific. In that case I'll see if I can add more from the "future features" list

Let me know if you dislike any of these.

jrobinso commented 4 years ago

Hi @bw2 -- some quick thoughts

bw2 commented 4 years ago

I think this junction track will be useful on its own, not just as a merged track with coverage. That makes sense. I'll avoid adding things that might interfere with this.

Brian Haas in Aviv's lab has implemented a "fusion junction" track. ... Overlap is o.k., just pointing it out. I didn't realize that was from Aviv's lab. I did look through Brian's code and screenshots for ideas.

this context menu in igv.js is reserved for actions that need a location ... I suggest you leave that detail until I can get engaged next week. Oh, I didn't realize. Thanks - I'll leave that aside.

oleraj commented 4 years ago

Hi all, I see this is a long-running issue but we're interested in having this feature as well. Any plans for this being ready in the near future? Thanks.

bw2 commented 4 years ago

Hi @oleraj , this feature has been merged (https://github.com/igvteam/igv.js/pull/1019) and is ready for use.

jrobinso commented 4 years ago

@oleraj @bw2 This thread has gone in 2 directions. @bw2 splice junction track is merged and ready. There is also a SashimiPlot much like IGV desktops in development, actually very far along. See github.com/igvteam/sashimi.js. That will be merged and ready sometime around early July. I am fully occupied in grant writing or it would be sooner.

oleraj commented 4 years ago

Great, thanks @bw2 and @jrobinso . We'll try out the splice junction track for now.

alberto1189 commented 3 years ago

Hello,

Do you know if the sashimi plot and the exon junctions visualization are supported by the latest igv.js? If so, where can I find them? Thanks!

jrobinso commented 3 years ago

@alberto1189 See https://github.com/igvteam/igv.js/wiki/Splice-Junctions

alberto1189 commented 1 year ago

Thank you @jrobinso and sorry for my late reply. Do you know if something like this image http://software.broadinstitute.org/software/igv/sites/cancerinformatics.org.igv/files/SL_Sashimi1.png can be visualized or supported someway?

Thanks!

jrobinso commented 1 year ago

@alberto1189 We don't current have a web version of that plot. The closets track currently available is Splice Junction track: https://github.com/igvteam/igv.js/wiki/Splice-Junctions, but it is for a different use case and takes "bed" file input rather than bam files.

oleraj commented 1 year ago

Hi @jrobinso @bw2, do you have any recommendations on how to replicate the functionality of IGV desktop Sashimi plots to "Set Junction Coverage Min"? Or could this feature be added as a track option in the browser for Splice Junction tracks (i.e., tracks with coverage and junction bed files)? thanks.

jrobinso commented 1 year ago

@oleraj I realize I should know this, but remind us what "Set Junction Coverage Min" does.

oleraj commented 1 year ago

@jrobinso It basically turns off the junctions below a certain threshold. For example if you want to display all junctions supported by at least 2 reads, you can set the min to 2. This can clean up the track to get rid of what might be spurious junctions or mismapped reads where there is only one junction.

bw2 commented 1 year ago

@oleraj you can do this using the track's minTotalReads option https://github.com/igvteam/igv.js/blob/master/examples/spliceJunctions.html#L31-L32

oleraj commented 1 year ago

Thanks @bw2 . We're interested in having this as a user-configurable setting, maybe via the gear button to the right of the track, though not sure if this would be something to modify in the igv.js code or the application code (e.g., seqr).