X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FAnnotationFile.java;h=773633238ace37a835129e194cc4593d3fefc9cd;hb=7ab5d6b0ba5fec1ea4a4239e79c476d841622485;hp=668aa3cdb717897b02f801945862204a1dc7f2cd;hpb=1889827c44c51f6353fe8619e5d44b421158af23;p=jalview.git diff --git a/src/jalview/io/AnnotationFile.java b/src/jalview/io/AnnotationFile.java index 668aa3c..7736332 100755 --- a/src/jalview/io/AnnotationFile.java +++ b/src/jalview/io/AnnotationFile.java @@ -134,8 +134,8 @@ public class AnnotationFile StringBuffer colours = new StringBuffer(); StringBuffer graphLine = new StringBuffer(); StringBuffer rowprops = new StringBuffer(); - Hashtable graphGroup = new Hashtable(); - Hashtable graphGroup_refs = new Hashtable(); + Hashtable graphGroup = new Hashtable(); + Hashtable graphGroup_refs = new Hashtable(); BitSet graphGroupSeen = new BitSet(); java.awt.Color color; @@ -144,16 +144,19 @@ public class AnnotationFile { row = annotations[i]; - if (!row.visible && !row.hasScore() && !(row.graphGroup>-1 && graphGroupSeen.get(row.graphGroup))) + if (!row.visible + && !row.hasScore() + && !(row.graphGroup > -1 && graphGroupSeen + .get(row.graphGroup))) { continue; } color = null; oneColour = true; - + // mark any sequence references for the row - writeSequence_Ref(refSeq ,row.sequenceRef); + writeSequence_Ref(refSeq, row.sequenceRef); refSeq = row.sequenceRef; // mark any group references for the row writeGroup_Ref(refGroup, row.groupRef); @@ -220,11 +223,12 @@ public class AnnotationFile if (graphGroup.containsKey(key)) { graphGroup.put(key, graphGroup.get(key) + "\t" + row.label); - + } else { - graphGroup_refs.put(key, new Object[] { refSeq, refGroup}); + graphGroup_refs.put(key, new Object[] + { refSeq, refGroup }); graphGroup.put(key, row.label); } } @@ -341,7 +345,8 @@ public class AnnotationFile rowprops.append(row.centreColLabels); rowprops.append(newline); } - if (graphLine.length()>0) { + if (graphLine.length() > 0) + { text.append(graphLine.toString()); graphLine.setLength(0); } @@ -354,22 +359,24 @@ public class AnnotationFile { SequenceI oldRefSeq = refSeq; SequenceGroup oldRefGroup = refGroup; - for (Map.Entry combine_statement:graphGroup.entrySet()) - { - Object[] seqRefAndGroup=graphGroup_refs.get(combine_statement.getKey()); - - writeSequence_Ref(refSeq, (SequenceI)seqRefAndGroup[0]); - refSeq = (SequenceI)seqRefAndGroup[0]; - - writeGroup_Ref(refGroup, (SequenceGroup)seqRefAndGroup[1]); - refGroup = (SequenceGroup)seqRefAndGroup[1]; + for (Map.Entry combine_statement : graphGroup + .entrySet()) + { + Object[] seqRefAndGroup = graphGroup_refs.get(combine_statement + .getKey()); + + writeSequence_Ref(refSeq, (SequenceI) seqRefAndGroup[0]); + refSeq = (SequenceI) seqRefAndGroup[0]; + + writeGroup_Ref(refGroup, (SequenceGroup) seqRefAndGroup[1]); + refGroup = (SequenceGroup) seqRefAndGroup[1]; text.append("COMBINE\t"); text.append(combine_statement.getValue()); text.append(newline); } writeSequence_Ref(refSeq, oldRefSeq); refSeq = oldRefSeq; - + writeGroup_Ref(refGroup, oldRefGroup); refGroup = oldRefGroup; } @@ -402,7 +409,8 @@ public class AnnotationFile return text.toString(); } - private Object writeGroup_Ref(SequenceGroup refGroup, SequenceGroup next_refGroup) + private Object writeGroup_Ref(SequenceGroup refGroup, + SequenceGroup next_refGroup) { if (next_refGroup == null) { @@ -427,13 +435,13 @@ public class AnnotationFile return true; } } - return false; + return false; } - + private boolean writeSequence_Ref(SequenceI refSeq, SequenceI next_refSeq) { - if (next_refSeq==null) + if (next_refSeq == null) { if (refSeq != null) { @@ -618,16 +626,22 @@ public class AnnotationFile { ex.printStackTrace(); System.out.println("Problem reading annotation file: " + ex); - if (nlinesread>0) { - System.out.println("Last read line "+nlinesread+": '"+lastread+"' (first 80 chars) ..."); + if (nlinesread > 0) + { + System.out.println("Last read line " + nlinesread + ": '" + + lastread + "' (first 80 chars) ..."); } return false; } return false; } - long nlinesread=0; - String lastread=""; - private static String GRAPHLINE="GRAPHLINE", COMBINE="COMBINE"; + + long nlinesread = 0; + + String lastread = ""; + + private static String GRAPHLINE = "GRAPHLINE", COMBINE = "COMBINE"; + public boolean parseAnnotationFrom(AlignmentI al, BufferedReader in) throws Exception { @@ -678,7 +692,8 @@ public class AnnotationFile boolean jvAnnotationFile = false; while ((line = in.readLine()) != null) { - nlinesread++;lastread = new String(line); + nlinesread++; + lastread = new String(line); if (line.indexOf("#") == 0) { continue; @@ -699,7 +714,8 @@ public class AnnotationFile while ((line = in.readLine()) != null) { - nlinesread++;lastread = new String(line); + nlinesread++; + lastread = new String(line); if (line.indexOf("#") == 0 || line.indexOf("JALVIEW_ANNOTATION") > -1 || line.length() == 0) @@ -720,7 +736,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; } @@ -733,7 +750,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; } @@ -793,7 +811,7 @@ public class AnnotationFile else if (token.equalsIgnoreCase("SEQUENCE_GROUP")) { addGroup(al, st); - modified=true; + modified = true; continue; } @@ -938,7 +956,7 @@ public class AnnotationFile modified = true; } // Resolve the groupRefs - Hashtable groupRefLookup=new Hashtable(); + Hashtable groupRefLookup = new Hashtable(); Enumeration en = groupRefRows.keys(); while (en.hasMoreElements()) @@ -962,7 +980,7 @@ public class AnnotationFile { matched = true; Vector rowset = (Vector) groupRefRows.get(groupRef); - groupRefLookup.put(groupRef, theGroup); + groupRefLookup.put(groupRef, theGroup); if (rowset != null && rowset.size() > 0) { AlignmentAnnotation alan = null; @@ -990,20 +1008,25 @@ public class AnnotationFile // group, or null ); } - } + } // finally, combine all the annotation rows within each context. /** - * number of combine statements in this annotation file. Used to create new groups for combined annotation graphs without disturbing existing ones + * number of combine statements in this annotation file. Used to create + * new groups for combined annotation graphs without disturbing existing + * ones */ int combinecount = 0; - for (Object[] _combine_args:combineAnnotation_calls) { - combineAnnotations(al, + for (Object[] _combine_args : combineAnnotation_calls) + { + combineAnnotations(al, ++combinecount, (StringTokenizer) _combine_args[0], // st (SequenceI) _combine_args[1], // refSeq - (_combine_args[2]==null) ? null : groupRefLookup.get((String)_combine_args[2]) // the reference group, or null - ); + (_combine_args[2] == null) ? null : groupRefLookup + .get((String) _combine_args[2]) // the reference group, + // or null + ); } } return modified; @@ -1161,31 +1184,35 @@ public class AnnotationFile } } - void combineAnnotations(AlignmentI al, int combineCount, StringTokenizer st, SequenceI seqRef, SequenceGroup groupRef) + void combineAnnotations(AlignmentI al, int combineCount, + StringTokenizer st, SequenceI seqRef, SequenceGroup groupRef) { String group = st.nextToken(); // First make sure we are not overwriting the graphIndex - int graphGroup=0; + int graphGroup = 0; if (al.getAlignmentAnnotation() != null) { for (int i = 0; i < al.getAlignmentAnnotation().length; i++) { AlignmentAnnotation aa = al.getAlignmentAnnotation()[i]; - - if (aa.graphGroup>graphGroup) + + if (aa.graphGroup > graphGroup) { // try to number graphGroups in order of occurence. - graphGroup=aa.graphGroup+1; + graphGroup = aa.graphGroup + 1; } - if (aa.sequenceRef==seqRef && aa.groupRef==groupRef && aa.label.equalsIgnoreCase(group)) + if (aa.sequenceRef == seqRef && aa.groupRef == groupRef + && aa.label.equalsIgnoreCase(group)) { - if (aa.graphGroup>-1) + if (aa.graphGroup > -1) { graphGroup = aa.graphGroup; - } else { + } + else + { if (graphGroup <= combineCount) { - graphGroup=combineCount+1; + graphGroup = combineCount + 1; } aa.graphGroup = graphGroup; } @@ -1200,7 +1227,8 @@ public class AnnotationFile for (int i = 0; i < al.getAlignmentAnnotation().length; i++) { AlignmentAnnotation aa = al.getAlignmentAnnotation()[i]; - if (aa.sequenceRef==seqRef && aa.groupRef==groupRef && aa.label.equalsIgnoreCase(group)) + if (aa.sequenceRef == seqRef && aa.groupRef == groupRef + && aa.label.equalsIgnoreCase(group)) { aa.graphGroup = graphGroup; break; @@ -1215,7 +1243,8 @@ public class AnnotationFile } } - void addLine(AlignmentI al, StringTokenizer st, SequenceI seqRef, SequenceGroup groupRef) + void addLine(AlignmentI al, StringTokenizer st, SequenceI seqRef, + SequenceGroup groupRef) { String group = st.nextToken(); AlignmentAnnotation annotation = null, alannot[] = al @@ -1232,7 +1261,9 @@ public class AnnotationFile { for (int i = 0; i < alannot.length; i++) { - if (alannot[i].label.equalsIgnoreCase(group) && (seqRef==null || alannot[i].sequenceRef==seqRef) && (groupRef==null || alannot[i].groupRef==groupRef)) + if (alannot[i].label.equalsIgnoreCase(group) + && (seqRef == null || alannot[i].sequenceRef == seqRef) + && (groupRef == null || alannot[i].groupRef == groupRef)) { alannot[i].setThreshold(new GraphLine(value, label, colour)); }