import jalview.analysis.TreeModel;
import jalview.api.AlignViewportI;
import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.Annotation;
import jalview.datamodel.BinaryNode;
import jalview.datamodel.ColumnSelection;
import jalview.datamodel.ContactMatrixI;
import jalview.structure.SelectionSource;
import jalview.util.Format;
import jalview.util.MessageManager;
+import jalview.ws.datamodel.MappableContactMatrixI;
/**
* DOCUMENT ME!
cm.setColorForGroup(gp, colors.get(gp));
}
}
+ // stash colors in linked annotation row.
+ // doesn't work yet. TESTS!
+ int sstart = aa.sequenceRef != null ? aa.sequenceRef.getStart() - 1
+ : 0;
+ Annotation ae;
+ Color gpcol = null;
+ int[] seqpos = null;
+ for (BitSet gp : colors.keySet())
+ {
+ gpcol = colors.get(gp);
+ for (int p = gp.nextSetBit(0); p >= 0
+ && p < Integer.MAX_VALUE; p = gp.nextSetBit(p + 1))
+ {
+ if (cm instanceof MappableContactMatrixI)
+ {
+ MappableContactMatrixI mcm = (MappableContactMatrixI) cm;
+ seqpos = mcm.getMappedPositionsFor(aa.sequenceRef, p);
+ if (seqpos == null)
+ {
+ // no mapping for this column.
+ continue;
+ }
+ // TODO: handle ranges...
+ ae = aa.getAnnotationForPosition(seqpos[0]);
+ }
+ else
+ {
+ ae = aa.getAnnotationForPosition(p + sstart);
+ }
+ if (ae != null)
+ {
+ ae.colour = gpcol.brighter().darker();
+ }
+ }
+ }
}
}
return false;
}
ColumnSelection cs = av.getColumnSelection();
-
HiddenColumns hc = av.getAlignment().getHiddenColumns();
int offp = (rseq != null) ? rseq.findIndex(rseq.getStart() + colm)
: colm;
}
return false;
}
-
private BitSet createColumnGroupFor(Vector<BinaryNode> l, Color col)
{
BitSet gp = new BitSet();
{
continue;
}
+ // TODO - sort indices for faster lookup
ColumnSelection cs = av.getColumnSelection();
HiddenColumns hc = av.getAlignment().getHiddenColumns();
+ ContactMatrixI cm = av.getContactMatrix(tp.assocAnnotation);
+ MappableContactMatrixI mcm = null;
+ int offp;
+ if (cm instanceof MappableContactMatrixI)
+ {
+ mcm = (MappableContactMatrixI) cm;
+ int[] seqpos = mcm.getMappedPositionsFor(
+ tp.assocAnnotation.sequenceRef, colm);
+ if (seqpos == null)
+ {
+ // no mapping for this column.
+ continue;
+ }
+ // TODO: handle ranges...
+ offp = seqpos[0];
+ }
+ else
{
- int offp = (rseq != null) ? rseq.findIndex(rseq.getStart() + colm)
+ offp = (rseq != null) ? rseq.findIndex(rseq.getStart() + colm)
: colm;
-
- if (!av.hasHiddenColumns() || hc.isVisible(offp - 1))
+ }
+ if (!av.hasHiddenColumns() || hc.isVisible(offp - 1))
+ {
+ if (cs.contains(offp - 1))
{
- if (cs.contains(offp - 1))
- {
- cs.removeElement(offp - 1);
- }
- else
- {
- cs.addElement(offp - 1);
- }
+ cs.removeElement(offp - 1);
+ }
+ else
+ {
+ cs.addElement(offp - 1);
}
}
}