import java.util.ArrayList;
import java.util.BitSet;
import java.util.Enumeration;
+import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
}
else
{
- // System.err.println("Skipping NaN - not valid value.");
+ // jalview.bin.Console.errPrintln("Skipping NaN - not valid
+ // value.");
text.append(comma + 0f);// row.annotations[j].value);
}
comma = ",";
} catch (Exception ex)
{
ex.printStackTrace();
- System.out.println("Problem reading annotation file: " + ex);
+ jalview.bin.Console
+ .outPrintln("Problem reading annotation file: " + ex);
if (nlinesread > 0)
{
- System.out.println("Last read line " + nlinesread + ": '" + lastread
- + "' (first 80 chars) ...");
+ jalview.bin.Console.outPrintln("Last read line " + nlinesread
+ + ": '" + lastread + "' (first 80 chars) ...");
}
return false;
}
if (refSeqIndex < 1)
{
refSeqIndex = 1;
- System.out.println(
+ jalview.bin.Console.outPrintln(
"WARNING: SEQUENCE_REF index must be > 0 in AnnotationFile");
}
} catch (Exception ex)
{
if (hidden == null)
{
- System.err.println(
+ jalview.bin.Console.errPrintln(
"Cannot process HIDE_INSERTIONS without an alignment view: Ignoring line: "
+ line);
}
{
// TODO: specify and implement duplication of alignment annotation
// for multiple group references.
- System.err.println(
+ jalview.bin.Console.errPrintln(
"Ignoring 1:many group reference mappings for group name '"
+ groupRef + "'");
}
}
else
{
- System.err.println(
+ jalview.bin.Console.errPrintln(
"Couldn't combine annotations. None are added to alignment yet!");
}
}
value = Float.valueOf(nextToken);
} catch (NumberFormatException e)
{
- System.err.println("line " + nlinesread + ": Threshold '" + nextToken
- + "' invalid, setting to zero");
+ jalview.bin.Console.errPrintln("line " + nlinesread + ": Threshold '"
+ + nextToken + "' invalid, setting to zero");
}
String label = st.hasMoreTokens() ? st.nextToken() : null;
Color colour = null;
}
} catch (Exception e)
{
- System.err.println(
+ jalview.bin.Console.errPrintln(
"Couldn't parse Group Start or End Field as '*' or a valid column or sequence index: '"
+ rng + "' - assuming alignment width for group.");
// assume group is full width
}
String name = st.nextToken();
- SequenceGroup sg = null;
- for (SequenceGroup _sg : al.getGroups())
+
+ Map<String, String> properties = new HashMap<>();
+ while (st.hasMoreTokens())
{
- if ((sg = _sg).getName().equals(name))
- {
- break;
- }
- else
+ String keyValue = st.nextToken();
+ String key = keyValue.substring(0, keyValue.indexOf("="));
+ String value = keyValue.substring(keyValue.indexOf("=") + 1);
+ properties.put(key, value);
+ }
+
+ for (SequenceGroup sg : al.getGroups())
+ {
+ if (sg.getName().equals(name))
{
- sg = null;
+ addProperties(sg, properties, al);
}
}
+ }
- if (sg != null)
+ /**
+ * Helper method that applies any specified properties to a SequenceGroup
+ *
+ * @param sg
+ * @param properties
+ * @param al
+ */
+ private void addProperties(SequenceGroup sg,
+ Map<String, String> properties, AlignmentI al)
+ {
+ ColourSchemeI def = sg.getColourScheme();
+ for (String key : properties.keySet())
{
- String keyValue, key, value;
- ColourSchemeI def = sg.getColourScheme();
- while (st.hasMoreTokens())
+ String value = properties.get(key);
+ if (key.equalsIgnoreCase("description"))
{
- keyValue = st.nextToken();
- key = keyValue.substring(0, keyValue.indexOf("="));
- value = keyValue.substring(keyValue.indexOf("=") + 1);
-
- if (key.equalsIgnoreCase("description"))
- {
- sg.setDescription(value);
- }
- else if (key.equalsIgnoreCase("colour"))
- {
- // TODO need to notify colourscheme of view reference once it is
- // available
- sg.cs.setColourScheme(
- ColourSchemeProperty.getColourScheme(null, al, value));
- }
- else if (key.equalsIgnoreCase("pidThreshold"))
- {
- sg.cs.setThreshold(Integer.parseInt(value), true);
+ sg.setDescription(value);
+ }
+ else if (key.equalsIgnoreCase("colour"))
+ {
+ // TODO need to notify colourscheme of view reference once it is
+ // available
+ sg.cs.setColourScheme(
+ ColourSchemeProperty.getColourScheme(null, al, value));
+ }
+ else if (key.equalsIgnoreCase("pidThreshold"))
+ {
+ sg.cs.setThreshold(Integer.parseInt(value), true);
- }
- else if (key.equalsIgnoreCase("consThreshold"))
- {
- sg.cs.setConservationInc(Integer.parseInt(value));
- Conservation c = new Conservation("Group", sg.getSequences(null),
- sg.getStartRes(), sg.getEndRes() + 1);
+ }
+ else if (key.equalsIgnoreCase("consThreshold"))
+ {
+ sg.cs.setConservationInc(Integer.parseInt(value));
+ Conservation c = new Conservation("Group", sg.getSequences(null),
+ sg.getStartRes(), sg.getEndRes() + 1);
- c.calculate();
- c.verdict(false, 25); // TODO: refer to conservation percent threshold
+ c.calculate();
+ c.verdict(false, 25); // TODO: refer to conservation percent threshold
- sg.cs.setConservation(c);
+ sg.cs.setConservation(c);
- }
- else if (key.equalsIgnoreCase("outlineColour"))
- {
- sg.setOutlineColour(ColorUtils.parseColourString(value));
- }
- else if (key.equalsIgnoreCase("displayBoxes"))
- {
- sg.setDisplayBoxes(Boolean.valueOf(value).booleanValue());
- }
- else if (key.equalsIgnoreCase("showUnconserved"))
- {
- sg.setShowNonconserved(Boolean.valueOf(value).booleanValue());
- }
- else if (key.equalsIgnoreCase("displayText"))
- {
- sg.setDisplayText(Boolean.valueOf(value).booleanValue());
- }
- else if (key.equalsIgnoreCase("colourText"))
- {
- sg.setColourText(Boolean.valueOf(value).booleanValue());
- }
- else if (key.equalsIgnoreCase("textCol1"))
- {
- sg.textColour = ColorUtils.parseColourString(value);
- }
- else if (key.equalsIgnoreCase("textCol2"))
- {
- sg.textColour2 = ColorUtils.parseColourString(value);
- }
- else if (key.equalsIgnoreCase("textColThreshold"))
- {
- sg.thresholdTextColour = Integer.parseInt(value);
- }
- else if (key.equalsIgnoreCase("idColour"))
- {
- Color idColour = ColorUtils.parseColourString(value);
- sg.setIdColour(idColour == null ? Color.black : idColour);
- }
- else if (key.equalsIgnoreCase("hide"))
- {
- // see bug https://mantis.lifesci.dundee.ac.uk/view.php?id=25847
- sg.setHidereps(true);
- }
- else if (key.equalsIgnoreCase("hidecols"))
- {
- // see bug https://mantis.lifesci.dundee.ac.uk/view.php?id=25847
- sg.setHideCols(true);
- }
- sg.recalcConservation();
}
- if (sg.getColourScheme() == null)
+ else if (key.equalsIgnoreCase("outlineColour"))
{
- sg.setColourScheme(def);
+ sg.setOutlineColour(ColorUtils.parseColourString(value));
}
+ else if (key.equalsIgnoreCase("displayBoxes"))
+ {
+ sg.setDisplayBoxes(Boolean.valueOf(value).booleanValue());
+ }
+ else if (key.equalsIgnoreCase("showUnconserved"))
+ {
+ sg.setShowNonconserved(Boolean.valueOf(value).booleanValue());
+ }
+ else if (key.equalsIgnoreCase("displayText"))
+ {
+ sg.setDisplayText(Boolean.valueOf(value).booleanValue());
+ }
+ else if (key.equalsIgnoreCase("colourText"))
+ {
+ sg.setColourText(Boolean.valueOf(value).booleanValue());
+ }
+ else if (key.equalsIgnoreCase("textCol1"))
+ {
+ sg.textColour = ColorUtils.parseColourString(value);
+ }
+ else if (key.equalsIgnoreCase("textCol2"))
+ {
+ sg.textColour2 = ColorUtils.parseColourString(value);
+ }
+ else if (key.equalsIgnoreCase("textColThreshold"))
+ {
+ sg.thresholdTextColour = Integer.parseInt(value);
+ }
+ else if (key.equalsIgnoreCase("idColour"))
+ {
+ Color idColour = ColorUtils.parseColourString(value);
+ sg.setIdColour(idColour == null ? Color.black : idColour);
+ }
+ else if (key.equalsIgnoreCase("hide"))
+ {
+ // see bug https://mantis.lifesci.dundee.ac.uk/view.php?id=25847
+ sg.setHidereps(true);
+ }
+ else if (key.equalsIgnoreCase("hidecols"))
+ {
+ // see bug https://mantis.lifesci.dundee.ac.uk/view.php?id=25847
+ sg.setHideCols(true);
+ }
+ sg.recalcConservation();
+ }
+
+ if (sg.getColourScheme() == null)
+ {
+ sg.setColourScheme(def);
}
}