Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions src/main/java/org/igv/Globals.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import org.igv.logging.Logger;

import javax.swing.*;
import java.awt.*;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
Expand All @@ -15,6 +16,8 @@
* Date: Feb 3, 2010
*/
public class Globals {
public static final Color DULL_BLUE = new Color(0, 0, 200);
public static final Color DULL_RED = new Color(200, 0, 0);
private static Logger log = LogManager.getLogger(Globals.class);

public static final int DESIGN_DPI = 96;
Expand Down
7 changes: 2 additions & 5 deletions src/main/java/org/igv/bedpe/HicInteractionTrack.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import org.igv.hic.HicFile;
import org.igv.renderer.ContinuousColorScale;
import org.igv.track.RenderContext;
import org.igv.track.TrackClickEvent;
import org.igv.ui.IGV;
import org.igv.ui.panel.FrameManager;
Expand Down Expand Up @@ -31,9 +30,9 @@ public HicInteractionTrack(ResourceLocator locator, HicSource source) {
// HiC-specific defaults
maxFeatureCount = 5000;
graphType = GraphType.NESTED_ARC;
useScore = true;
isHIC = true;
setColor(Color.red);
setUseScore(false); // Alpha score is set in the renderer based
setDefaultColor(Color.red);
}

@Override
Expand Down Expand Up @@ -147,8 +146,6 @@ void addHICItems(TrackClickEvent te, IGVPopupMenu menu) {
menu.add(mapItem);
}



@Override
public void marshalXML(Document document, Element element) {
super.marshalXML(document, element);
Expand Down
12 changes: 8 additions & 4 deletions src/main/java/org/igv/bedpe/InteractionTrack.java
Original file line number Diff line number Diff line change
Expand Up @@ -71,13 +71,9 @@ enum ArcOption {ALL, ONE_END, BOTH_ENDS}
double maxScore = -1;
int gap = 5;
boolean showBlocks = false;
protected boolean useScore = false;
protected boolean isHIC = false;
private Map<GraphType, BedPERenderer> renderers;

private Color defaultColor = new Color(180, 25, 137);


ContactMapView contactMapView;
float transparency = 1.0f;
protected String normalization = "NONE";
Expand All @@ -99,6 +95,7 @@ public InteractionTrack(ResourceLocator locator, InteractionSource src) {
this.featureSource = src;

setHeight(250, true);
setDefaultColor( new Color(180, 25, 137));

renderers = new HashMap<>();
renderers.put(GraphType.NESTED_ARC, new NestedArcRenderer(this));
Expand Down Expand Up @@ -305,6 +302,13 @@ public IGVPopupMenu getPopupMenu(TrackClickEvent te) {
item.addActionListener(evt -> TrackMenuUtils.changeTrackColor(Collections.singleton(InteractionTrack.this)));
menu.add(item);

item = new JMenuItem("Unset Track Color");
item.addActionListener(evt -> {
this.setColor(null);
repaint();
});
menu.add(item);

if (!isHIC) {
menu.addSeparator();
menu.add(new JLabel("<html><b>Graph Type</b>"));
Expand Down
15 changes: 9 additions & 6 deletions src/main/java/org/igv/bedpe/NestedArcRenderer.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ public void render(List<BedPE> features,
g = (Graphics2D) context.getGraphics().create();
double origin = context.getOrigin();
double locScale = context.getScale();
Color trackColor = track.getColor() == null ? DEFAULT_TRACK_COLOR : track.getColor();
int gap = track.gap;

if (track.thickness > 1) {
Expand Down Expand Up @@ -100,12 +99,16 @@ public void render(List<BedPE> features,
}


Color fcolor = feature.getColor() == null ? trackColor : feature.getColor();
float alpha = track.transparency;
if (track.useScore) {
alpha = track.transparency * Math.min(1.0f, Math.max(0.1f, feature.getScore() / 1000f));
Color fcolor = track.getFeatureColor(feature);

if(track.isHIC) {
float alpha = track.transparency;
if (track.isUseScore()) {
alpha = track.transparency * Math.min(1.0f, Math.max(0.1f, feature.getScore() / 1000f));
}
fcolor = getAlphaColor(fcolor, alpha);
}
fcolor = getAlphaColor(fcolor, alpha);

g.setColor(fcolor);

final int trackBaseLine = trackRectangle.y + trackRectangle.height;
Expand Down
2 changes: 0 additions & 2 deletions src/main/java/org/igv/feature/genome/load/GenomeLoader.java
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,6 @@ public static FeatureTrack createGeneTrack(Genome genome, List<htsjdk.tribble.Fe
geneFeatureTrack = new FeatureTrack(id, name, new FeatureCollectionSource(features, genome));
geneFeatureTrack.setMinimumHeight(5);
geneFeatureTrack.setHeight(35);
//geneFeatureTrack.setRendererClass(GeneRenderer.class);
geneFeatureTrack.setColor(Color.BLUE.darker());

return geneFeatureTrack;
}
Expand Down
74 changes: 3 additions & 71 deletions src/main/java/org/igv/renderer/IGVFeatureRenderer.java
Original file line number Diff line number Diff line change
@@ -1,17 +1,15 @@
package org.igv.renderer;


import org.igv.Globals;
import org.igv.logging.*;
import org.igv.feature.*;
import org.igv.feature.aa.AminoAcidSequence;
import org.igv.feature.aa.CodonAA;
import org.igv.feature.genome.Genome;
import org.igv.feature.genome.GenomeManager;
import org.igv.prefs.PreferencesManager;
import org.igv.track.FeatureTrack;
import org.igv.track.RenderContext;
import org.igv.track.Track;
import org.igv.track.TrackType;
import org.igv.track.*;
import org.igv.ui.FontManager;
import org.igv.ui.color.ColorUtilities;

Expand All @@ -38,8 +36,6 @@ public class IGVFeatureRenderer extends FeatureRenderer {
static final int THIN_BLOCK_HEIGHT = 6;
protected Color AA_COLOR_1 = new Color(92, 92, 164);
protected Color AA_COLOR_2 = new Color(12, 12, 120);
public static final Color DULL_BLUE = new Color(0, 0, 200);
public static final Color DULL_RED = new Color(200, 0, 0);
static final int NON_CODING_HEIGHT = 8;

private static final Color VARIANT_HET_COLOR = Color.blue.brighter();
Expand Down Expand Up @@ -118,8 +114,6 @@ public void render(List<IGVFeature> featureList,


boolean alternateExonColor = (track instanceof FeatureTrack && ((FeatureTrack) track).isAlternateExonColor());
Color trackPosColor = track.getColor();
Color trackNegColor = alternateExonColor ? track.getColor() : track.getAltColor();
String labelField = track.getLabelField();

for (IGVFeature feature : featureList) {
Expand Down Expand Up @@ -176,7 +170,7 @@ public void render(List<IGVFeature> featureList,
continue;
}

Color color = getFeatureColor(feature, track, trackPosColor, trackNegColor);
Color color = ((AbstractTrack) track).getFeatureColor(feature);
Graphics2D g2D = context.getGraphic2DForColor(color);

// Draw block representing entire feature
Expand Down Expand Up @@ -699,68 +693,6 @@ public String getDisplayName() {
return "Basic Feature";
}

protected Color getFeatureColor(IGVFeature feature, Track track, Color defaultPosColor, Color defaultNegColor) {

// Set color used to draw the feature
Color color = null;

// If an alt color is explicitly set use it for negative strand features;
if (feature.getStrand() == Strand.NEGATIVE) {
color = track.getExplicitAltColor();
}

// If color is explicitly set use it
if (color == null) {
color = track.getExplicitColor();
}

// No explicitly set color, try the feature itself
if (color == null && track.isItemRGB()) {
color = feature.getColor();
}

// If still no color use defaults
if (color == null) {
if (track.getTrackType() == TrackType.CNV) {
color = feature.getName().equals("gain") ? DULL_RED : DULL_BLUE;
} else {
color = feature.getStrand() == Strand.NEGATIVE ? defaultNegColor : defaultPosColor;
}
}

if (track.isUseScore()) {
float min = getViewLimitMin(track);
float max = getViewLimitMax(track);

float score = feature.getScore();
float alpha = Float.isNaN(score) ? 1 : getAlpha(min, max, feature.getScore());
color = ColorUtilities.getCompositeColor(color, alpha);
}

return color;
}

float getViewLimitMin(Track track) {
if (Float.isNaN(viewLimitMin)) {
viewLimitMin = Float.isNaN(track.getViewLimitMin()) ? 0 : track.getViewLimitMin();
}
return viewLimitMin;
}

float getViewLimitMax(Track track) {
if (Float.isNaN(viewLimitMax)) {
viewLimitMax = Float.isNaN(track.getViewLimitMax()) ? 1000 : track.getViewLimitMax();
}
return viewLimitMax;
}

private float getAlpha(float minRange, float maxRange, float value) {
float binWidth = (maxRange - minRange) / 9;
int binNumber = (int) ((value - minRange) / binWidth);
return Math.min(1.0f, 0.2f + (binNumber * 0.8f) / 9);
}


protected int getPixelFromChromosomeLocation(String chr, int chromosomeLocation, double origin,
double locationScale) {
return (int) Math.round((chromosomeLocation - origin) / locationScale);
Expand Down
5 changes: 4 additions & 1 deletion src/main/java/org/igv/renderer/SpliceJunctionRenderer.java
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,10 @@ protected void drawFeature(SpliceJunctionFeature junctionFeature, boolean should
We modify the alpha value of the chosen color to indicate if it is highlighted
*/
final Color color;
final Color trackColor = isPositiveStrand ? track.getExplicitColor() : track.getExplicitAltColor();
Color trackColor = isPositiveStrand ? track.getColor() : track.getAltColor();
if(trackColor == null) {
trackColor = track.getDefaultColor();
}
if (trackColor != null) {
color = adjustAlpha(trackColor, highlight);
} else if (featureColor != null) {
Expand Down
9 changes: 2 additions & 7 deletions src/main/java/org/igv/sam/CoverageTrack.java
Original file line number Diff line number Diff line change
Expand Up @@ -107,14 +107,9 @@ public CoverageTrack(ResourceLocator locator, String name, AlignmentTrack alignm

@Override
public Color getColor() {
return _color == null ?
return color == null ?
ColorUtilities.slightlyDarker(alignmentTrack.getColor()) :
_color;
}

@Override
public void setColor(Color color) {
_color = color;
color;
}

@Override
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/org/igv/seg/CNFreqTrack.java
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ public CNFreqTrack(ResourceLocator rl, String id, String name, FreqData fd) {

float nSamples = data.getNumberOfSamples();
this.setDataRange(new DataRange(-nSamples, 0, nSamples));
this.posColor = Color.red;
this.color = Color.red;
this.altColor = Color.blue;

renderer = new BarChartRenderer();
Expand Down
Loading
Loading