X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FAlignmentAnnotation.java;h=5a2c46e0b3e2be52032af8a67f02cfbefdde6cfc;hb=d6e1bbede5adc04f34c969213ac6a4c6d9e5d34a;hp=9cfdff6dbadd957baeb30925cdecc56a29523dfc;hpb=efc31b4a8d5cee63555586804a2b79c06bdb5a14;p=jalview.git diff --git a/src/jalview/datamodel/AlignmentAnnotation.java b/src/jalview/datamodel/AlignmentAnnotation.java index 9cfdff6..5a2c46e 100755 --- a/src/jalview/datamodel/AlignmentAnnotation.java +++ b/src/jalview/datamodel/AlignmentAnnotation.java @@ -27,6 +27,8 @@ package jalview.datamodel; */ public class AlignmentAnnotation { + public SequenceI sequenceRef; + /** DOCUMENT ME!! */ public String label; @@ -36,8 +38,7 @@ public class AlignmentAnnotation /** DOCUMENT ME!! */ public Annotation[] annotations; - /** DOCUMENT ME!! */ - public boolean isGraph = false; + public java.util.Hashtable sequenceMapping; /** DOCUMENT ME!! */ public float graphMin; @@ -45,8 +46,7 @@ public class AlignmentAnnotation /** DOCUMENT ME!! */ public float graphMax; - /** DOCUMENT ME!! */ - public int windowLength; + public GraphLine threshold; // Graphical hints and tips @@ -62,9 +62,31 @@ public class AlignmentAnnotation /** DOCUMENT ME!! */ public boolean visible = true; + public int graphGroup = -1; + /** DOCUMENT ME!! */ public int height = 0; + public int graph = 0; + + public int graphHeight = 40; + + public static final int NO_GRAPH = 0; + + public static final int BAR_GRAPH = 1; + + public static final int LINE_GRAPH = 2; + + public static int getGraphValueFromString(String string) + { + if(string.equalsIgnoreCase("BAR_GRAPH")) + return BAR_GRAPH; + else if(string.equalsIgnoreCase("LINE_GRAPH")) + return LINE_GRAPH; + else + return NO_GRAPH; + } + /** * Creates a new AlignmentAnnotation object. * @@ -109,16 +131,19 @@ public class AlignmentAnnotation * @param winLength DOCUMENT ME! */ public AlignmentAnnotation(String label, String description, - Annotation[] annotations, float min, float max, int winLength) + Annotation[] annotations, float min, float max, int graphType) { // graphs are not editable this.label = label; this.description = description; this.annotations = annotations; - isGraph = true; + graph = graphType; + + boolean drawValues = true; if (min == max) { + min = 999999999; for (int i = 0; i < annotations.length; i++) { if (annotations[i] == null) @@ -126,6 +151,11 @@ public class AlignmentAnnotation continue; } + if(drawValues && annotations[i].displayCharacter.length() > 1 ) + { + drawValues = false; + } + if (annotations[i].value > max) { max = annotations[i].value; @@ -140,23 +170,33 @@ public class AlignmentAnnotation graphMin = min; graphMax = max; - windowLength = winLength; for (int i = 0; i < annotations.length; i++) { - if ((annotations[i] != null) && - ((annotations[i].secondaryStructure == 'H') || + if (!hasIcons + && annotations[i] != null + && ((annotations[i].secondaryStructure == 'H') || (annotations[i].secondaryStructure == 'E'))) { hasIcons = true; } - if ((annotations[i] != null) && - (annotations[i].displayCharacter.length() > 0)) + if (!hasText + && annotations[i]!=null + && annotations[i].displayCharacter.length() > 0) { hasText = true; } } + + if(!drawValues && graphType!=NO_GRAPH) + { + for (int i = 0; i < annotations.length; i++) + { + if (annotations[i] != null) + annotations[i].displayCharacter = ""; + } + } } /** @@ -172,7 +212,7 @@ public class AlignmentAnnotation { if (annotations[i] != null) { - if (isGraph) + if (graph!=0) { buffer.append(annotations[i].value); } @@ -205,5 +245,85 @@ public class AlignmentAnnotation } return buffer.toString(); - } + } + + public void setThreshold(GraphLine line) + { + threshold = line; + } + + public GraphLine getThreshold() + { + return threshold; + } + + /** + * This + */ + public void createSequenceMapping(SequenceI seqRef, int startRes) + { + if(seqRef == null) + return; + + sequenceMapping = new java.util.Hashtable(); + + sequenceRef = seqRef; + + if(startRes < sequenceRef.getStart()) + startRes = sequenceRef.getStart(); + + int seqPos; + + int fileOffset = 0; + if(startRes > sequenceRef.getStart()) + { + fileOffset = startRes - sequenceRef.getStart(); + } + + for(int i = 0; i < annotations.length; i++) + { + seqPos = sequenceRef.findPosition(i + fileOffset); + if(seqPos