+ else if (c == '+')
+ {
+ value = 10;
+ }
+
+ if (conservation != null)
+ {
+ float vprop = value - min;
+ vprop /= max;
+ int consp = i - start;
+ String conssym = (value > 0 && consp > -1
+ && consp < consSymbs.length) ? consSymbs[consp] : "";
+ conservation.annotations[i] = new Annotation(String.valueOf(c),
+ conssym, ' ', value, new Color(minR + (maxR * vprop),
+ minG + (maxG * vprop), minB + (maxB * vprop)));
+ }
+
+ // Quality calc
+ if (quality2 != null)
+ {
+ value = quality.elementAt(i).floatValue();
+ float vprop = value - qmin;
+ vprop /= qmax;
+ String description = FORMAT_3DP.form(value);
+ quality2.annotations[i] = new Annotation(" ", description, ' ',
+ value, new Color(minR + (maxR * vprop),
+ minG + (maxG * vprop), minB + (maxB * vprop)));
+ }
+ }
+ }
+
+ /**
+ * construct and call the calculation methods on a new Conservation object
+ *
+ * @param name
+ * - name of conservation
+ * @param seqs
+ * @param start
+ * first column in calculation window
+ * @param end
+ * last column in calculation window
+ * @param positiveOnly
+ * calculate positive (true) or positive and negative (false)
+ * conservation
+ * @param maxPercentGaps
+ * percentage of gaps tolerated in column
+ * @param calcQuality
+ * flag indicating if alignment quality should be calculated
+ * @return Conservation object ready for use in visualization
+ */
+ public static Conservation calculateConservation(String name,
+ List<SequenceI> seqs, int start, int end, boolean positiveOnly,
+ int maxPercentGaps, boolean calcQuality)
+ {
+ Conservation cons = new Conservation(name, seqs, start, end);
+ cons.calculate();
+ cons.verdict(positiveOnly, maxPercentGaps);
+
+ if (calcQuality)
+ {
+ cons.findQuality();