X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FAlignmentAnnotation.java;h=c3ccb0ba99b0eba2867bdc5ec17bf02a2e84eb07;hb=14bad6b2390493bb6ad030c6f3ea7cde4cba1b53;hp=35297b56bce55cbf0a93f2fbd00c22d17b95d05f;hpb=588042b69abf8e60bcc950b24c283933c7dd422f;p=jalview.git diff --git a/src/jalview/datamodel/AlignmentAnnotation.java b/src/jalview/datamodel/AlignmentAnnotation.java index 35297b5..c3ccb0b 100755 --- a/src/jalview/datamodel/AlignmentAnnotation.java +++ b/src/jalview/datamodel/AlignmentAnnotation.java @@ -18,63 +18,148 @@ */ package jalview.datamodel; -public class AlignmentAnnotation { + +/** + * DOCUMENT ME! + * + * @author $author$ + * @version $Revision$ + */ +public class AlignmentAnnotation +{ + public SequenceI sequenceRef; + + /** This annotation is the original loaded annotation + * without any gaps. It is necessary to adjust the annotation + * if sequences are updated */ + public AlignmentAnnotation datasetAnnotation; + + /** DOCUMENT ME!! */ public String label; + + /** DOCUMENT ME!! */ public String description; + + /** DOCUMENT ME!! */ public Annotation[] annotations; - public boolean isGraph = false; + + + /** DOCUMENT ME!! */ public float graphMin; + + /** DOCUMENT ME!! */ public float graphMax; - public int windowLength; + + public GraphLine threshold; // Graphical hints and tips + + /** DOCUMENT ME!! */ public boolean editable = false; + + /** DOCUMENT ME!! */ public boolean hasIcons; // + + /** DOCUMENT ME!! */ public boolean hasText; + + /** 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. + * + * @param label DOCUMENT ME! + * @param description DOCUMENT ME! + * @param annotations DOCUMENT ME! + */ public AlignmentAnnotation(String label, String description, - Annotation[] annotations) { + Annotation[] annotations) + { // always editable? editable = true; this.label = label; this.description = description; this.annotations = annotations; - for (int i = 0; i < annotations.length; i++) { + for (int i = 0; i < annotations.length; i++) + { if ((annotations[i] != null) && ((annotations[i].secondaryStructure == 'H') || - (annotations[i].secondaryStructure == 'E'))) { + (annotations[i].secondaryStructure == 'E'))) + { hasIcons = true; } if ((annotations[i] != null) && - (annotations[i].displayCharacter.length() > 0)) { + (annotations[i].displayCharacter.length() > 0)) + { hasText = true; } } } + /** + * Creates a new AlignmentAnnotation object. + * + * @param label DOCUMENT ME! + * @param description DOCUMENT ME! + * @param annotations DOCUMENT ME! + * @param min DOCUMENT ME! + * @param max DOCUMENT ME! + * @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; - if (min == max) { - for (int i = 0; i < annotations.length; i++) { - if (annotations[i] == null) { + if (min == max) + { + min = 999999999; + for (int i = 0; i < annotations.length; i++) + { + if (annotations[i] == null) + { continue; } - if (annotations[i].value > max) { + if (annotations[i].value > max) + { max = annotations[i].value; } - if (annotations[i].value < min) { + if (annotations[i].value < min) + { min = annotations[i].value; } } @@ -82,32 +167,47 @@ public class AlignmentAnnotation { graphMin = min; graphMax = max; - windowLength = winLength; - for (int i = 0; i < annotations.length; i++) { + for (int i = 0; i < annotations.length; i++) + { if ((annotations[i] != null) && ((annotations[i].secondaryStructure == 'H') || - (annotations[i].secondaryStructure == 'E'))) { + (annotations[i].secondaryStructure == 'E'))) + { hasIcons = true; } if ((annotations[i] != null) && - (annotations[i].displayCharacter.length() > 0)) { + (annotations[i].displayCharacter.length() > 0)) + { hasText = true; } } } - public String toString() { + /** + * DOCUMENT ME! + * + * @return DOCUMENT ME! + */ + public String toString() + { StringBuffer buffer = new StringBuffer(); - for (int i = 0; i < annotations.length; i++) { - if (annotations[i] != null) { - if (isGraph) { + for (int i = 0; i < annotations.length; i++) + { + if (annotations[i] != null) + { + if (graph!=0) + { buffer.append(annotations[i].value); - } else if (hasIcons) { + } + else if (hasIcons) + { buffer.append(annotations[i].secondaryStructure); - } else { + } + else + { buffer.append(annotations[i].displayCharacter); } } @@ -115,11 +215,14 @@ public class AlignmentAnnotation { buffer.append(", "); } - if (label.equals("Consensus")) { + if (label.equals("Consensus")) + { buffer.append("\n"); - for (int i = 0; i < annotations.length; i++) { - if (annotations[i] != null) { + for (int i = 0; i < annotations.length; i++) + { + if (annotations[i] != null) + { buffer.append(annotations[i].description); } @@ -128,5 +231,37 @@ public class AlignmentAnnotation { } return buffer.toString(); - } + } + + public void setThreshold(GraphLine line) + { + threshold = line; + } + + public GraphLine getThreshold() + { + return threshold; + } + + public void adjustForAlignment() + { + int a=0, aSize = sequenceRef.getLength(); + + int index = 0; + Annotation[] temp = new Annotation[aSize]; + + for (a = 0; a < aSize; a++) + { + if (!jalview.util.Comparison.isGap(sequenceRef.getCharAt(a))) + { + index = sequenceRef.findPosition(a); + if(datasetAnnotation.annotations.length>index) + temp[a] = datasetAnnotation.annotations[index]; + } + } + + annotations = temp; + } } + +