X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FAnnotationFile.java;h=10976176c3bb1bba539f8ce0205be95d6401b78b;hb=b0cee3aaf7d8873910939f97b6acb217d518968d;hp=937826a50ced537c583dcb13da1f18083a16e9b1;hpb=0873fd1ab406be7ef121f466c7b53e4b6315bbca;p=jalview.git diff --git a/src/jalview/io/AnnotationFile.java b/src/jalview/io/AnnotationFile.java index 937826a..1097617 100755 --- a/src/jalview/io/AnnotationFile.java +++ b/src/jalview/io/AnnotationFile.java @@ -32,9 +32,10 @@ import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; import jalview.schemes.ColourSchemeI; import jalview.schemes.ColourSchemeProperty; -import jalview.schemes.ResidueProperties; import jalview.schemes.UserColourScheme; +import jalview.util.ColorUtils; +import java.awt.Color; import java.io.BufferedReader; import java.io.FileReader; import java.io.InputStreamReader; @@ -88,8 +89,8 @@ public class AnnotationFile } /** - * convenience method for pre-2.8.3 annotation files which have no view, - * hidden columns or hidden row keywords. + * convenience method for pre-2.9 annotation files which have no view, hidden + * columns or hidden row keywords. * * @param annotations * @param list @@ -294,8 +295,7 @@ public class AnnotationFile } else { - graphGroup_refs.put(key, new Object[] - { refSeq, refGroup }); + graphGroup_refs.put(key, new Object[] { refSeq, refGroup }); graphGroup.put(key, row.label); } } @@ -337,7 +337,7 @@ public class AnnotationFile } else { - System.err.println("Skipping NaN - not valid value."); + // System.err.println("Skipping NaN - not valid value."); text.append(comma + 0f);// row.annotations[j].value); } comma = ","; @@ -472,8 +472,9 @@ public class AnnotationFile text.append(properties.get(key)); } // TODO: output alignment visualization settings here if required - // iterate through one or more views, defining, marking columns and rows as visible/hidden, and emmitting view properties. - // View specific annotation is + // iterate through one or more views, defining, marking columns and rows + // as visible/hidden, and emmitting view properties. + // View specific annotation is } return text.toString(); @@ -582,7 +583,7 @@ public class AnnotationFile if (sg.cs != null) { text.append("colour="); - text.append(ColourSchemeProperty.getColourName(sg.cs)); + text.append(sg.cs.toString()); text.append("\t"); if (sg.cs.getThreshold() != 0) { @@ -661,7 +662,7 @@ public class AnnotationFile String refSeqId = null; public boolean annotateAlignmentView(AlignViewportI viewport, - String file, String protocol) + String file, DataSourceType protocol) { ColumnSelection colSel = viewport.getColumnSelection(); if (colSel == null) @@ -670,40 +671,40 @@ public class AnnotationFile } boolean rslt = readAnnotationFile(viewport.getAlignment(), colSel, file, protocol); - if (rslt - && (colSel.hasSelectedColumns() || colSel.hasHiddenColumns())) + if (rslt && (colSel.hasSelectedColumns() || colSel.hasHiddenColumns())) { viewport.setColumnSelection(colSel); } return rslt; } + public boolean readAnnotationFile(AlignmentI al, String file, - String protocol) + DataSourceType sourceType) { - return readAnnotationFile(al, null, file, protocol); + return readAnnotationFile(al, null, file, sourceType); } public boolean readAnnotationFile(AlignmentI al, ColumnSelection colSel, - String file, String protocol) + String file, DataSourceType sourceType) { BufferedReader in = null; try { - if (protocol.equals(AppletFormatAdapter.FILE)) + if (sourceType == DataSourceType.FILE) { in = new BufferedReader(new FileReader(file)); } - else if (protocol.equals(AppletFormatAdapter.URL)) + else if (sourceType == DataSourceType.URL) { URL url = new URL(file); in = new BufferedReader(new InputStreamReader(url.openStream())); } - else if (protocol.equals(AppletFormatAdapter.PASTE)) + else if (sourceType == DataSourceType.PASTE) { in = new BufferedReader(new StringReader(file)); } - else if (protocol.equals(AppletFormatAdapter.CLASSLOADER)) + else if (sourceType == DataSourceType.CLASSLOADER) { java.io.InputStream is = getClass().getResourceAsStream("/" + file); if (is != null) @@ -737,8 +738,7 @@ public class AnnotationFile private static String GRAPHLINE = "GRAPHLINE", COMBINE = "COMBINE"; public boolean parseAnnotationFrom(AlignmentI al, ColumnSelection colSel, - BufferedReader in) - throws Exception + BufferedReader in) throws Exception { nlinesread = 0; ArrayList combineAnnotation_calls = new ArrayList(); @@ -831,8 +831,8 @@ public class AnnotationFile else if (token.equalsIgnoreCase(COMBINE)) { // keep a record of current state and resolve groupRef at end - combineAnnotation_calls.add(new Object[] - { st, refSeq, groupRef }); + combineAnnotation_calls + .add(new Object[] { st, refSeq, groupRef }); modified = true; continue; } @@ -845,8 +845,8 @@ public class AnnotationFile else if (token.equalsIgnoreCase(GRAPHLINE)) { // resolve at end - deferredAnnotation_calls.add(new Object[] - { GRAPHLINE, st, refSeq, groupRef }); + deferredAnnotation_calls.add(new Object[] { GRAPHLINE, st, + refSeq, groupRef }); modified = true; continue; } @@ -1154,7 +1154,7 @@ public class AnnotationFile (SequenceI) _deferred_args[2], // refSeq (_deferred_args[3] == null) ? null : groupRefLookup .get(_deferred_args[3]) // the reference - // group, or null + // group, or null ); } } @@ -1174,7 +1174,7 @@ public class AnnotationFile (SequenceI) _combine_args[1], // refSeq (_combine_args[2] == null) ? null : groupRefLookup .get(_combine_args[2]) // the reference group, - // or null + // or null ); } } @@ -1183,7 +1183,7 @@ public class AnnotationFile private void parseHideCols(ColumnSelection colSel, String nextToken) { - StringTokenizer inval = new StringTokenizer(nextToken,","); + StringTokenizer inval = new StringTokenizer(nextToken, ","); while (inval.hasMoreTokens()) { String range = inval.nextToken().trim(); @@ -1225,29 +1225,21 @@ public class AnnotationFile Annotation parseAnnotation(String string, int graphStyle) { - boolean hasSymbols = (graphStyle == AlignmentAnnotation.NO_GRAPH); // don't - // do the - // glyph - // test - // if we - // don't - // want - // secondary - // structure + // don't do the glyph test if we don't want secondary structure + boolean hasSymbols = (graphStyle == AlignmentAnnotation.NO_GRAPH); String desc = null, displayChar = null; char ss = ' '; // secondaryStructure float value = 0; boolean parsedValue = false, dcset = false; // find colour here - java.awt.Color colour = null; + Color colour = null; int i = string.indexOf("["); int j = string.indexOf("]"); if (i > -1 && j > -1) { - UserColourScheme ucs = new UserColourScheme(); - - colour = ucs.getColourFromString(string.substring(i + 1, j)); + colour = ColorUtils.parseColourString(string.substring(i + 1, + j)); if (i > 0 && string.charAt(i - 1) == ',') { // clip the preceding comma as well @@ -1301,8 +1293,8 @@ public class AnnotationFile } } if (hasSymbols - && (token.equals("H") || token.equals("E") - || token.equals("S") || token.equals(" "))) + && (token.length() == 1 && "()<>[]{}AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz" + .contains(token))) { // Either this character represents a helix or sheet // or an integer which can be displayed @@ -1349,7 +1341,7 @@ public class AnnotationFile void colourAnnotations(AlignmentI al, String label, String colour) { - UserColourScheme ucs = new UserColourScheme(colour); + Color awtColour = ColorUtils.parseColourString(colour); Annotation[] annotations; for (int i = 0; i < al.getAlignmentAnnotation().length; i++) { @@ -1360,7 +1352,7 @@ public class AnnotationFile { if (annotations[j] != null) { - annotations[j].colour = ucs.findColour('A'); + annotations[j].colour = awtColour; } } } @@ -1430,15 +1422,22 @@ public class AnnotationFile SequenceGroup groupRef) { String group = st.nextToken(); - AlignmentAnnotation annotation = null, alannot[] = al - .getAlignmentAnnotation(); - float value = new Float(st.nextToken()).floatValue(); + AlignmentAnnotation[] alannot = al.getAlignmentAnnotation(); + String nextToken = st.nextToken(); + float value = 0f; + try + { + value = Float.valueOf(nextToken); + } catch (NumberFormatException e) + { + System.err.println("Threshold '" + nextToken + + "' invalid, setting to zero"); + } String label = st.hasMoreTokens() ? st.nextToken() : null; - java.awt.Color colour = null; + Color colour = null; if (st.hasMoreTokens()) { - UserColourScheme ucs = new UserColourScheme(st.nextToken()); - colour = ucs.findColour('A'); + colour = ColorUtils.parseColourString(st.nextToken()); } if (alannot != null) { @@ -1452,10 +1451,6 @@ public class AnnotationFile } } } - if (annotation == null) - { - return; - } } void addGroup(AlignmentI al, StringTokenizer st) @@ -1639,8 +1634,7 @@ public class AnnotationFile else if (key.equalsIgnoreCase("consThreshold")) { sg.cs.setConservationInc(Integer.parseInt(value)); - Conservation c = new Conservation("Group", - ResidueProperties.propHash, 3, sg.getSequences(null), + Conservation c = new Conservation("Group", sg.getSequences(null), sg.getStartRes(), sg.getEndRes() + 1); c.calculate(); @@ -1651,7 +1645,7 @@ public class AnnotationFile } else if (key.equalsIgnoreCase("outlineColour")) { - sg.setOutlineColour(new UserColourScheme(value).findColour('A')); + sg.setOutlineColour(ColorUtils.parseColourString(value)); } else if (key.equalsIgnoreCase("displayBoxes")) { @@ -1671,11 +1665,11 @@ public class AnnotationFile } else if (key.equalsIgnoreCase("textCol1")) { - sg.textColour = new UserColourScheme(value).findColour('A'); + sg.textColour = ColorUtils.parseColourString(value); } else if (key.equalsIgnoreCase("textCol2")) { - sg.textColour2 = new UserColourScheme(value).findColour('A'); + sg.textColour2 = ColorUtils.parseColourString(value); } else if (key.equalsIgnoreCase("textColThreshold")) { @@ -1684,8 +1678,8 @@ public class AnnotationFile else if (key.equalsIgnoreCase("idColour")) { // consider warning if colour doesn't resolve to a real colour - sg.setIdColour((def = new UserColourScheme(value)) - .findColour('A')); + def = new UserColourScheme(value); + sg.setIdColour(def.findColour()); } else if (key.equalsIgnoreCase("hide")) { @@ -1761,6 +1755,10 @@ public class AnnotationFile */ public String printCSVAnnotations(AlignmentAnnotation[] annotations) { + if (annotations == null) + { + return ""; + } StringBuffer sp = new StringBuffer(); for (int i = 0; i < annotations.length; i++) {