Skip to content

Commit

Permalink
Goto mate added
Browse files Browse the repository at this point in the history
  • Loading branch information
dror27 committed Nov 29, 2023
1 parent e0e9270 commit d11c776
Showing 1 changed file with 45 additions and 0 deletions.
45 changes: 45 additions & 0 deletions src/main/java/org/broad/igv/variant/VariantMenu.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@

package org.broad.igv.variant;

import org.broad.igv.feature.FeatureDB;
import org.broad.igv.feature.NamedFeature;
import org.broad.igv.logging.*;
import org.broad.igv.jbrowse.CircularViewUtilities;
import org.broad.igv.prefs.Constants;
Expand All @@ -35,7 +37,10 @@
import org.broad.igv.track.TrackMenuUtils;
import org.broad.igv.ui.IGV;
import org.broad.igv.ui.action.GroupTracksMenuAction;
import org.broad.igv.ui.action.SearchCommand;
import org.broad.igv.ui.panel.FrameManager;
import org.broad.igv.ui.panel.IGVPopupMenu;
import org.broad.igv.variant.vcf.VCFVariant;

import javax.swing.*;
import java.awt.*;
Expand All @@ -50,6 +55,7 @@
*/
public class VariantMenu extends IGVPopupMenu {

public static final String VARIANT_ATTR_MATEID = "MATEID";
private static Logger log = LogManager.getLogger(VariantMenu.class);
private VariantTrack track;
private Collection<String> selectedSamples;
Expand Down Expand Up @@ -124,6 +130,13 @@ public VariantMenu(final VariantTrack variantTrack, final Variant variant, Track
item.setEnabled(variant != null);
}

// goto mate
if ( variant != null ) {
addSeparator();
JMenuItem item = getGotoMateMenuItem(variant);
add(item);
}

if (AttributeManager.getInstance().getVisibleAttributes().size() > 0) {
addSeparator();
add(getGenotypeGroupItem());
Expand Down Expand Up @@ -387,6 +400,38 @@ public void actionPerformed(ActionEvent evt) {
return item;
}

private JMenuItem getGotoMateMenuItem(final Variant variant) {
final String mateId = variant.getAttributeAsString(VARIANT_ATTR_MATEID);
final String mateLocation = getMateLocation(variant);
final String title = "Goto mate" + ((mateId != null) ? (" (" + mateId + ")") : "");
final JMenuItem item = new JMenuItem(title);
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {

(new SearchCommand(FrameManager.getDefaultFrame(), mateLocation)).execute();

}
});
item.setEnabled(mateLocation != null);
return item;
}

private String getMateLocation(Variant variant) {

// sample alt: [chr9:85289982[CCC
if ( variant instanceof VCFVariant ) {
VCFVariant vcfVariant = (VCFVariant)variant;
final List<Allele> alleles = vcfVariant.getAlternateAlleles();
if ( alleles.size() > 0 ) {
String[] toks = alleles.get(0).getDisplayString().split("(\\[)|(\\])");
if ( toks.length >= 2 ) {
return toks[1];
}
}
}

return null;
}

static class GenotypeComparator implements Comparator<String> {

Expand Down

0 comments on commit d11c776

Please sign in to comment.