X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FAlignmentAnnotation.java;h=09facbffc22002c60200d9e87cb08e0c95e3075f;hb=af4abf989c69bbfaa30a25eff93133867bbce6c8;hp=bbd3ce46257cc56d82ead7fa0eb66a045b6c38fd;hpb=41c34ccf7054239554932deca6f64042231977b5;p=jalview.git diff --git a/src/jalview/datamodel/AlignmentAnnotation.java b/src/jalview/datamodel/AlignmentAnnotation.java index bbd3ce4..09facbf 100755 --- a/src/jalview/datamodel/AlignmentAnnotation.java +++ b/src/jalview/datamodel/AlignmentAnnotation.java @@ -96,14 +96,13 @@ public class AlignmentAnnotation * Updates the _rnasecstr field Determines the positions that base pair and * the positions of helices based on secondary structure from a Stockholm file * - * @param RNAannot + * @param rnaAnnotation */ - private void _updateRnaSecStr(CharSequence RNAannot) + private void _updateRnaSecStr(CharSequence rnaAnnotation) { try { - bps = Rna.getModeleBP(RNAannot); - _rnasecstr = Rna.getBasePairs(bps); + _rnasecstr = Rna.getHelixMap(rnaAnnotation); invalidrnastruc = -1; } catch (WUSSParseException px) { @@ -114,8 +113,6 @@ public class AlignmentAnnotation { return; } - Rna.HelixMap(_rnasecstr); - // setRNAStruc(RNAannot); if (_rnasecstr != null && _rnasecstr.length > 0) { @@ -244,19 +241,6 @@ public class AlignmentAnnotation private boolean isrna; - /* - * (non-Javadoc) - * - * @see java.lang.Object#finalize() - */ - @Override - protected void finalize() throws Throwable - { - sequenceRef = null; - groupRef = null; - super.finalize(); - } - public static int getGraphValueFromString(String string) { if (string.equalsIgnoreCase("BAR_GRAPH")) @@ -273,12 +257,6 @@ public class AlignmentAnnotation } } - // JBPNote: what does this do ? - public void ConcenStru(CharSequence RNAannot) throws WUSSParseException - { - bps = Rna.getModeleBP(RNAannot); - } - /** * Creates a new AlignmentAnnotation object. * @@ -379,49 +357,25 @@ public class AlignmentAnnotation firstChar = annotations[i].displayCharacter.charAt(0); // check to see if it looks like a sequence or is secondary structure // labelling. - if (annotations[i].secondaryStructure != ' ' - && !hasIcons - && - // Uncomment to only catch case where - // displayCharacter==secondary - // Structure - // to correctly redisplay SS annotation imported from Stockholm, - // exported to JalviewXML and read back in again. - // && - // annotations[i].displayCharacter.charAt(0)==annotations[i].secondaryStructure - firstChar != ' ' - && firstChar != '$' - && firstChar != 0xCE - && firstChar != '(' - && firstChar != '[' - && firstChar != '>' - && firstChar != '{' - && firstChar != 'A' - && firstChar != 'B' - && firstChar != 'C' - && firstChar != 'D' - && firstChar != 'E' - && firstChar != 'F' - && firstChar != 'G' - && firstChar != 'H' - && firstChar != 'I' - && firstChar != 'J' - && firstChar != 'K' - && firstChar != 'L' - && firstChar != 'M' - && firstChar != 'N' - && firstChar != 'O' - && firstChar != 'P' - && firstChar != 'Q' - && firstChar != 'R' - && firstChar != 'S' - && firstChar != 'T' - && firstChar != 'U' - && firstChar != 'V' - && firstChar != 'W' - && firstChar != 'X' - && firstChar != 'Y' - && firstChar != 'Z' + if (annotations[i].secondaryStructure != ' ' && !hasIcons && + // Uncomment to only catch case where + // displayCharacter==secondary + // Structure + // to correctly redisplay SS annotation imported from Stockholm, + // exported to JalviewXML and read back in again. + // && + // annotations[i].displayCharacter.charAt(0)==annotations[i].secondaryStructure + firstChar != ' ' && firstChar != '$' && firstChar != 0xCE + && firstChar != '(' && firstChar != '[' && firstChar != '>' + && firstChar != '{' && firstChar != 'A' && firstChar != 'B' + && firstChar != 'C' && firstChar != 'D' && firstChar != 'E' + && firstChar != 'F' && firstChar != 'G' && firstChar != 'H' + && firstChar != 'I' && firstChar != 'J' && firstChar != 'K' + && firstChar != 'L' && firstChar != 'M' && firstChar != 'N' + && firstChar != 'O' && firstChar != 'P' && firstChar != 'Q' + && firstChar != 'R' && firstChar != 'S' && firstChar != 'T' + && firstChar != 'U' && firstChar != 'V' && firstChar != 'W' + && firstChar != 'X' && firstChar != 'Y' && firstChar != 'Z' && firstChar != '-' && firstChar < jalview.schemes.ResidueProperties.aaIndex.length) { @@ -512,12 +466,17 @@ public class AlignmentAnnotation { return ((index + offset < 0) || (index + offset) >= max || annotations[index + offset] == null - || (annotations[index + offset].secondaryStructure <= ' ') ? ' ' - : annotations[index + offset].displayCharacter == null - || annotations[index + offset].displayCharacter - .length() == 0 ? annotations[index + offset].secondaryStructure - : annotations[index + offset].displayCharacter - .charAt(0)); + || (annotations[index + offset].secondaryStructure <= ' ') + ? ' ' + : annotations[index + offset].displayCharacter == null + || annotations[index + + offset].displayCharacter + .length() == 0 + ? annotations[index + + offset].secondaryStructure + : annotations[index + + offset].displayCharacter + .charAt(0)); } @Override @@ -528,10 +487,15 @@ public class AlignmentAnnotation for (int i = offset; i < mx; i++) { - string[i] = (annotations[i] == null || (annotations[i].secondaryStructure <= 32)) ? ' ' - : (annotations[i].displayCharacter == null - || annotations[i].displayCharacter.length() == 0 ? annotations[i].secondaryStructure - : annotations[i].displayCharacter.charAt(0)); + string[i] = (annotations[i] == null + || (annotations[i].secondaryStructure <= 32)) + ? ' ' + : (annotations[i].displayCharacter == null + || annotations[i].displayCharacter + .length() == 0 + ? annotations[i].secondaryStructure + : annotations[i].displayCharacter + .charAt(0)); } return new String(string); } @@ -807,8 +771,8 @@ public class AlignmentAnnotation Annotation[] temp = new Annotation[endRes - startRes + 1]; if (startRes < annotations.length) { - System.arraycopy(annotations, startRes, temp, 0, endRes - startRes - + 1); + System.arraycopy(annotations, startRes, temp, 0, + endRes - startRes + 1); } if (sequenceRef != null) { @@ -867,6 +831,10 @@ public class AlignmentAnnotation @Override public String toString() { + if (annotations == null) + { + return ""; + } StringBuilder buffer = new StringBuilder(256); for (int i = 0; i < annotations.length; i++) @@ -1024,8 +992,8 @@ public class AlignmentAnnotation { if (i + 1 < iSize) { - System.arraycopy(annotations, i + 1, annotations, i, iSize - i - - 1); + System.arraycopy(annotations, i + 1, annotations, i, + iSize - i - 1); } iSize--; } @@ -1057,14 +1025,16 @@ public class AlignmentAnnotation { if (sequenceRef != null) { - boolean rIsDs = sequenceRef.getDatasetSequence() == null, tIsDs = sequenceI - .getDatasetSequence() == null; + boolean rIsDs = sequenceRef.getDatasetSequence() == null, + tIsDs = sequenceI.getDatasetSequence() == null; if (sequenceRef != sequenceI - && (rIsDs && !tIsDs && sequenceRef != sequenceI - .getDatasetSequence()) - && (!rIsDs && tIsDs && sequenceRef.getDatasetSequence() != sequenceI) - && (!rIsDs && !tIsDs && sequenceRef.getDatasetSequence() != sequenceI - .getDatasetSequence()) + && (rIsDs && !tIsDs + && sequenceRef != sequenceI.getDatasetSequence()) + && (!rIsDs && tIsDs + && sequenceRef.getDatasetSequence() != sequenceI) + && (!rIsDs && !tIsDs + && sequenceRef.getDatasetSequence() != sequenceI + .getDatasetSequence()) && !sequenceRef.equals(sequenceI)) { // if sequenceRef isn't intersecting with sequenceI @@ -1146,14 +1116,14 @@ public class AlignmentAnnotation * @param colSel */ public AlignmentAnnotation(AlignmentAnnotation alignmentAnnotation, - ColumnSelection colSel) + HiddenColumns hidden) { this(alignmentAnnotation); if (annotations == null) { return; } - colSel.makeVisibleAnnotation(this); + hidden.makeVisibleAnnotation(this); } public void setPadGaps(boolean padgaps, char gapchar) @@ -1259,8 +1229,10 @@ public class AlignmentAnnotation throw new Error( "liftOver currently not implemented for transfer of annotation between different types of seqeunce"); } - boolean mapIsTo = (sp2sq != null) ? (sp2sq.getTo() == sq || sp2sq - .getTo() == sq.getDatasetSequence()) : false; + boolean mapIsTo = (sp2sq != null) + ? (sp2sq.getTo() == sq + || sp2sq.getTo() == sq.getDatasetSequence()) + : false; // TODO build a better annotation element map and get rid of annotations[] Map mapForsq = new HashMap(); @@ -1270,9 +1242,9 @@ public class AlignmentAnnotation { for (Entry ie : sequenceMapping.entrySet()) { - Integer mpos = Integer.valueOf(mapIsTo ? sp2sq - .getMappedPosition(ie.getKey()) : sp2sq.getPosition(ie - .getKey())); + Integer mpos = Integer + .valueOf(mapIsTo ? sp2sq.getMappedPosition(ie.getKey()) + : sp2sq.getPosition(ie.getKey())); if (mpos >= sq.getStart() && mpos <= sq.getEnd()) { mapForsq.put(mpos, ie.getValue()); @@ -1459,8 +1431,8 @@ public class AlignmentAnnotation * up to and excluding the target column; if the count is less * than 1, the opening bracket is unmatched, so return its match */ - String closer = String.valueOf(Rna - .getMatchingClosingParenthesis(symbol)); + String closer = String + .valueOf(Rna.getMatchingClosingParenthesis(symbol)); String opener = String.valueOf(symbol); int count = 0; for (int j = col + 1; j < column; j++) @@ -1490,4 +1462,13 @@ public class AlignmentAnnotation { return counter++; } + + /** + * + * @return true for rows that have a range of values in their annotation set + */ + public boolean isQuantitative() + { + return graphMin < graphMax; + } }