Skip to content

Commit

Permalink
Fixes igvteam#177
Browse files Browse the repository at this point in the history
  • Loading branch information
jrobinso committed Oct 20, 2015
1 parent aa2a242 commit 4fcde29
Show file tree
Hide file tree
Showing 2 changed files with 82 additions and 77 deletions.
85 changes: 82 additions & 3 deletions src/org/broad/igv/PreferenceManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,10 @@
import org.broad.igv.renderer.ContinuousColorScale;
import org.broad.igv.sam.AlignmentTrack.ShadeBasesOption;
import org.broad.igv.track.TrackType;
import org.broad.igv.ui.AboutDialog;
import org.broad.igv.ui.IGVCommandBar;
import org.broad.igv.ui.UIConstants;
import org.broad.igv.ui.*;
import org.broad.igv.ui.color.ColorUtilities;
import org.broad.igv.ui.color.PaletteColorTable;
import org.broad.igv.ui.event.AlignmentTrackEvent;
import org.broad.igv.ui.util.PropertyManager;
import org.broad.igv.util.HttpUtils;

Expand Down Expand Up @@ -486,6 +485,8 @@ public void put(String key, boolean b) {


public void putAll(Map<String, String> updatedPrefs) {


for (Map.Entry<String, String> entry : updatedPrefs.entrySet()) {
if (entry.getValue() == null || entry.getValue().trim().length() == 0) {
remove(entry.getKey());
Expand All @@ -494,10 +495,60 @@ public void putAll(Map<String, String> updatedPrefs) {
put(entry.getKey(), entry.getValue());
}
}

checkForAlignmentChanges(updatedPrefs);


clearCaches();

}

private void checkForAlignmentChanges(Map<String, String> updatedPreferenceMap) {

WaitCursorManager.CursorToken token = WaitCursorManager.showWaitCursor();
try {
boolean reloadSAM = false;
boolean updateCoverageTrack = false;
for (String key : SAM_PREFERENCE_KEYS) {
if (updatedPreferenceMap.containsKey(key)) {
reloadSAM = true;
break;
}

}
if (updatedPreferenceMap.containsKey(PreferenceManager.SAM_ALLELE_THRESHOLD)) {
updateCoverageTrack = true;
}

boolean updateSpliceJunctions = false;
for (String key : SPLICE_JUNCTION_KEYS) {
if (updatedPreferenceMap.containsKey(key)) {
updateSpliceJunctions = true;
break;
}
}


final IGV igv = IGV.getInstance();
if (updateSpliceJunctions) {
igv.notifyAlignmentTrackEvent(this, AlignmentTrackEvent.Type.SPLICE_JUNCTION);
}
if (reloadSAM) {
if (updatedPreferenceMap.containsKey(PreferenceManager.SAM_MAX_VISIBLE_RANGE)) {
igv.notifyAlignmentTrackEvent(this, AlignmentTrackEvent.Type.VISIBILITY_WINDOW);
}
igv.notifyAlignmentTrackEvent(this, AlignmentTrackEvent.Type.RELOAD);
}
if (updateCoverageTrack) {
igv.notifyAlignmentTrackEvent(this, AlignmentTrackEvent.Type.ALLELE_THRESHOLD);
}
} finally {
WaitCursorManager.removeWaitCursor(token);
}


}


public void remove(String key) {
preferences.remove(key);
Expand Down Expand Up @@ -1340,4 +1391,32 @@ public String getPersistent(String key, String def) {
}
}


/**
* List of keys that affect the alignments loaded. This list is used to trigger a reload, if required.
* Not all alignment preferences need trigger a reload, this is a subset.
*/
static java.util.List<String> SAM_PREFERENCE_KEYS = Arrays.asList(
PreferenceManager.SAM_QUALITY_THRESHOLD,
PreferenceManager.SAM_FILTER_ALIGNMENTS,
PreferenceManager.SAM_FILTER_URL,
PreferenceManager.SAM_MAX_VISIBLE_RANGE,
PreferenceManager.SAM_SHOW_DUPLICATES,
PreferenceManager.SAM_SHOW_SOFT_CLIPPED,
PreferenceManager.SAM_SAMPLING_COUNT,
PreferenceManager.SAM_SAMPLING_WINDOW,
PreferenceManager.SAM_FILTER_FAILED_READS,
PreferenceManager.SAM_DOWNSAMPLE_READS,
PreferenceManager.SAM_FILTER_SECONDARY_ALIGNMENTS,
PreferenceManager.SAM_FILTER_SUPPLEMENTARY_ALIGNMENTS
);

static java.util.List<String> SPLICE_JUNCTION_KEYS = Arrays.asList(
PreferenceManager.SAM_SHOW_JUNCTION_TRACK,
PreferenceManager.SAM_JUNCTION_MIN_FLANKING_WIDTH,
PreferenceManager.SAM_JUNCTION_MIN_COVERAGE

);


}
74 changes: 0 additions & 74 deletions src/org/broad/igv/ui/PreferencesEditor.java
Original file line number Diff line number Diff line change
Expand Up @@ -3013,7 +3013,6 @@ private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRS
}
}

checkForSAMChanges();

// Overlays
if (updateOverlays) {
Expand Down Expand Up @@ -4293,53 +4292,6 @@ private void updateFontField() {

}

/**
* Scan preference updates for changes affecting alignment tracks. If any force reload of all alignment tracks.
*/
private void checkForSAMChanges() {
WaitCursorManager.CursorToken token = WaitCursorManager.showWaitCursor();
try {
boolean reloadSAM = false;
for (String key : SAM_PREFERENCE_KEYS) {
if (updatedPreferenceMap.containsKey(key)) {
reloadSAM = true;
break;
}

}
if (updatedPreferenceMap.containsKey(PreferenceManager.SAM_ALLELE_THRESHOLD)) {
updateCoverageTrack = true;
}

boolean updateSpliceJunctions = false;
for (String key : SPLICE_JUNCTION_KEYS) {
if (updatedPreferenceMap.containsKey(key)) {
updateSpliceJunctions = true;
break;
}
}


final IGV igv = IGV.getInstance();
if (updateSpliceJunctions) {
igv.notifyAlignmentTrackEvent(this, AlignmentTrackEvent.Type.SPLICE_JUNCTION);
}
if (reloadSAM) {
if (updatedPreferenceMap.containsKey(PreferenceManager.SAM_MAX_VISIBLE_RANGE)) {
igv.notifyAlignmentTrackEvent(this, AlignmentTrackEvent.Type.VISIBILITY_WINDOW);
}
igv.notifyAlignmentTrackEvent(this, AlignmentTrackEvent.Type.RELOAD);
}
if (updateCoverageTrack) {
igv.notifyAlignmentTrackEvent(this, AlignmentTrackEvent.Type.ALLELE_THRESHOLD);
updateCoverageTrack = false;
}
} finally {
WaitCursorManager.removeWaitCursor(token);
}

}


private void checkForProbeChanges() {
if (updatedPreferenceMap.containsKey(PreferenceManager.PROBE_MAPPING_KEY)) {
Expand Down Expand Up @@ -4625,31 +4577,5 @@ public boolean isCanceled() {
return canceled;
}

/**
* List of keys that affect the alignments loaded. This list is used to trigger a reload, if required.
* Not all alignment preferences need trigger a reload, this is a subset.
*/
static java.util.List<String> SAM_PREFERENCE_KEYS = Arrays.asList(
PreferenceManager.SAM_QUALITY_THRESHOLD,
PreferenceManager.SAM_FILTER_ALIGNMENTS,
PreferenceManager.SAM_FILTER_URL,
PreferenceManager.SAM_MAX_VISIBLE_RANGE,
PreferenceManager.SAM_SHOW_DUPLICATES,
PreferenceManager.SAM_SHOW_SOFT_CLIPPED,
PreferenceManager.SAM_SAMPLING_COUNT,
PreferenceManager.SAM_SAMPLING_WINDOW,
PreferenceManager.SAM_FILTER_FAILED_READS,
PreferenceManager.SAM_DOWNSAMPLE_READS,
PreferenceManager.SAM_FILTER_SECONDARY_ALIGNMENTS,
PreferenceManager.SAM_FILTER_SUPPLEMENTARY_ALIGNMENTS
);

static java.util.List<String> SPLICE_JUNCTION_KEYS = Arrays.asList(
PreferenceManager.SAM_SHOW_JUNCTION_TRACK,
PreferenceManager.SAM_JUNCTION_MIN_FLANKING_WIDTH,
PreferenceManager.SAM_JUNCTION_MIN_COVERAGE

);


}

0 comments on commit 4fcde29

Please sign in to comment.