/** * Render the site track (the top, summary view of the site). * * @param variant * @param bandRectangle * @param pX0 * @param dX * @param context */ public void renderSiteBand( Variant variant, Rectangle bandRectangle, int pX0, int dX, RenderContext context) { final boolean filtered = variant.isFiltered(); final Color alleleColor; final Color refColor; double percent; if (track.getColorMode() == VariantTrack.ColorMode.METHYLATION_RATE) { alleleColor = this.convertMethylationRateToColor((float) variant.getMethlationRate() / 100); percent = variant.getCoveredSampleFraction(); refColor = filtered ? colorAlleleRefAlpha : colorAlleleRef; // Gray } else { alleleColor = filtered ? colorAlleleBandAlpha : colorAlleleBand; // Red double af = variant.getAlleleFraction(); if (af < 0) { double[] afreqs = variant.getAlleleFreqs(); if (afreqs != null && afreqs.length > 0) { af = afreqs[0]; } } percent = Math.min(1, af); if (percent <= 0) { percent = 0; refColor = filtered ? colorAlleleRefAlpha : colorAlleleRef; // Gray } else { refColor = filtered ? blueAlpha : blue; // Blue } } final int bottomY = bandRectangle.y + bandRectangle.height - BOTTOM_MARGIN; final int barHeight = bandRectangle.height - TOP_MARGIN - BOTTOM_MARGIN; final int alleleBarHeight = (int) (percent * barHeight); final int remainderHeight = barHeight - alleleBarHeight; if (remainderHeight > 0) { Graphics2D g = context.getGraphic2DForColor(refColor); g.fillRect(pX0, bottomY - alleleBarHeight - remainderHeight, dX, remainderHeight); } if (alleleBarHeight > 0) { Graphics2D g = context.getGraphic2DForColor(alleleColor); g.fillRect(pX0, bottomY - alleleBarHeight, dX, alleleBarHeight); } }