Skip to content

Commit

Permalink
Fix broken sashimi plot
Browse files Browse the repository at this point in the history
Filter sashimi plot menu to RNA-Seq experiments
  • Loading branch information
jrobinso committed Aug 30, 2023
1 parent e9a20ea commit 818c809
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 10 deletions.
2 changes: 1 addition & 1 deletion src/main/java/org/broad/igv/sam/AlignmentTrack.java
Original file line number Diff line number Diff line change
Expand Up @@ -423,7 +423,7 @@ void setExperimentType(ExperimentType type) {
}
}

ExperimentType getExperimentType() {
public ExperimentType getExperimentType() {
return experimentType;
}

Expand Down
3 changes: 2 additions & 1 deletion src/main/java/org/broad/igv/sam/AlignmentTrackMenu.java
Original file line number Diff line number Diff line change
Expand Up @@ -162,10 +162,11 @@ class AlignmentTrackMenu extends IGVPopupMenu {
addInsertionItems(insertion);
}

// Sashimi plot, probably should be depdenent on experimentType (RNA)
// Sashimi plot
addSeparator();
JMenuItem sashimi = new JMenuItem("Sashimi Plot");
sashimi.addActionListener(e1 -> SashimiPlot.openSashimiPlot());
sashimi.setEnabled(alignmentTrack.getExperimentType() == AlignmentTrack.ExperimentType.RNA);
add(sashimi);

// Show alignments, coverage, splice junctions
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/org/broad/igv/sam/SpliceJunctionTrack.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import org.broad.igv.feature.SpliceJunctionFeature;
import org.broad.igv.renderer.DataRange;
import org.broad.igv.renderer.GraphicUtils;
import org.broad.igv.renderer.Renderer;
import org.broad.igv.renderer.SpliceJunctionRenderer;
import org.broad.igv.track.*;
import org.broad.igv.ui.IGV;
Expand Down Expand Up @@ -95,6 +96,11 @@ public SpliceJunctionTrack() {
this.renderer = new SpliceJunctionRenderer();
}

@Override
public void setRenderer(Renderer renderer) {
this.renderer = renderer;
}

@Override
public String getSample() {
if (sampleId != null) {
Expand Down
22 changes: 14 additions & 8 deletions src/main/java/org/broad/igv/sashimi/SashimiPlot.java
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
import java.io.File;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;

/**
* Window for displaying sashimi style junction plot
Expand Down Expand Up @@ -81,6 +82,8 @@ public class SashimiPlot extends JFrame implements IGVEventObserver {

private static final List<Color> plotColors;

private Map<Object, SashimiJunctionRenderer> junctionRendererMap;

static {
ColorPalette palette = ColorUtilities.getDefaultPalette();
plotColors = Arrays.asList(palette.getColors());
Expand Down Expand Up @@ -110,8 +113,11 @@ public SashimiPlot(ReferenceFrame iframe, Collection<? extends AlignmentTrack> a
sashimiPanel.add(generateControlPanel(this.referenceFrame));

spliceJunctionTracks = new ArrayList<>(alignmentTracks.size());

int colorInd = 0;

junctionRendererMap = new HashMap<>();

eventBus.subscribe(ViewChange.class, this);

for (AlignmentTrack alignmentTrack : alignmentTracks) {
Expand All @@ -125,7 +131,9 @@ public SashimiPlot(ReferenceFrame iframe, Collection<? extends AlignmentTrack> a
// Override expand/collpase setting -- expanded sashimi plots make no sense
spliceJunctionTrack.setDisplayMode(Track.DisplayMode.COLLAPSED);

spliceJunctionTrack.setRenderer(new SashimiJunctionRenderer());
SashimiJunctionRenderer renderer = new SashimiJunctionRenderer();
spliceJunctionTrack.setRenderer(renderer);
junctionRendererMap.put(spliceJunctionTrack, renderer);

Color color = plotColors.get(colorInd);
colorInd = (colorInd + 1) % plotColors.size();
Expand Down Expand Up @@ -234,7 +242,7 @@ private void initSpliceJunctionComponent(TrackComponent<SpliceJunctionTrack> tra
}

private SashimiJunctionRenderer getRenderer(SpliceJunctionTrack spliceJunctionTrack) {
return (SashimiJunctionRenderer) spliceJunctionTrack.getRenderer();
return junctionRendererMap.get(spliceJunctionTrack);
}

@Override
Expand Down Expand Up @@ -649,13 +657,11 @@ public static void openSashimiPlot() {
geneTrack = dlg.getSelectedTrack();
}

Collection<AlignmentTrack> alignmentTracks = new ArrayList<AlignmentTrack>();
for (Track track : IGV.getInstance().getAllTracks()) {
if (track instanceof AlignmentTrack) {
alignmentTracks.add((AlignmentTrack) track);
}
}


Collection<AlignmentTrack> alignmentTracks =IGV.getInstance().getAlignmentTracks().stream()
.filter(t -> t.getExperimentType() == AlignmentTrack.ExperimentType.RNA).collect(Collectors.toList());
;
if (alignmentTracks.size() > 1) {
TrackSelectionDialog<AlignmentTrack> alDlg =
new TrackSelectionDialog<AlignmentTrack>(IGV.getInstance().getMainFrame(), TrackSelectionDialog.SelectionMode.MULTIPLE, alignmentTracks);
Expand Down

0 comments on commit 818c809

Please sign in to comment.