From bc42e7d77aadbac20d9473f8ef492532690eda59 Mon Sep 17 00:00:00 2001 From: Jim Procter Date: Fri, 21 Oct 2022 16:08:23 +0100 Subject: [PATCH] JAL-2349 JAL-3855 experiment masking hidden columns in contact matrix --- src/jalview/renderer/ContactMapRenderer.java | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/src/jalview/renderer/ContactMapRenderer.java b/src/jalview/renderer/ContactMapRenderer.java index 58e6ab1..ca7b0c8 100644 --- a/src/jalview/renderer/ContactMapRenderer.java +++ b/src/jalview/renderer/ContactMapRenderer.java @@ -5,6 +5,7 @@ package jalview.renderer; import java.awt.Color; import java.awt.Graphics; +import java.util.Iterator; import jalview.api.AlignViewportI; import jalview.datamodel.AlignmentAnnotation; @@ -73,6 +74,11 @@ public class ContactMapRenderer implements AnnotationRowRendererI x++; continue; } + // feature still in development - highlight or omit regions hidden in + // the alignment - currently marks them as red rows + boolean maskHiddenCols = false; + // TODO: pass visible column mask to the ContactGeometry object so it maps + // only visible contacts to geometry // Bean holding mapping from contact list to pixels final ContactGeometry cgeom = new ContactGeometry(contacts, _aa.graphHeight); @@ -86,10 +92,8 @@ public class ContactMapRenderer implements AnnotationRowRendererI // cend = (int) Math.min(contact_height, // Math.ceil(cstart + contacts_per_pixel * pixels_step)); - // TODO show maximum colour for range - sort of done - // also need a 'getMaxPosForRange(start,end)' to accurately render Color col; - boolean rowsel = false; + boolean rowsel = false, containsHidden = false; if (columnSelection != null) { if (_aa.sequenceRef == null) @@ -102,10 +106,18 @@ public class ContactMapRenderer implements AnnotationRowRendererI // numbering int s = _aa.sequenceRef.findIndex(ci.cStart); int e = _aa.sequenceRef.findIndex(ci.cEnd); + if (maskHiddenCols && hasHiddenColumns) + { + // TODO: turn into function and create test !! + Iterator viscont = hiddenColumns + .getVisContigsIterator(s, e, false); + containsHidden = !viscont.hasNext(); + } if (s > 0 && s < _aa.sequenceRef.getLength()) { rowsel = columnSelection.intersects(s, e); } + } } // TODO: show selected region @@ -122,13 +134,16 @@ public class ContactMapRenderer implements AnnotationRowRendererI { col = new Color(col.getBlue(), col.getBlue(), col.getBlue()); } - g.setColor(col); } else { col = getColorForRange(min, max, contacts, ci.cStart, ci.cEnd); - g.setColor(col); } + if (containsHidden) + { + col = Color.red; + } + g.setColor(col); if (cgeom.pixels_step > 1) { g.fillRect(x * charWidth, ht, charWidth, 1 + cgeom.pixels_step); -- 1.7.10.2