+ /**\r
+ * Calculates the conservation values for given set of sequences\r
+ */\r
+ public void calculate()\r
+ {\r
+ Hashtable resultHash, residueHash, ht;\r
+ int count, thresh, j, jSize = sequences.size();\r
+ String sequence, res, type;\r
+ Enumeration enumeration, enumeration2;\r
+\r
+ for (int i = start; i <= end; i++)\r
+ {\r
+ resultHash = new Hashtable();\r
+ residueHash = new Hashtable();\r
+\r
+ for (j = 0; j < jSize; j++)\r
+ {\r
+ // JBPNote - have to make sure elements of the sequences vector\r
+ // are tested like this everywhere...\r
+ if (sequences.elementAt(j) instanceof Sequence)\r
+ {\r
+ sequence = ((Sequence) sequences.elementAt(j)).getSequence();\r
+\r
+ if (sequence.length() > i)\r
+ {\r
+ res = String.valueOf(Character.toUpperCase(sequence.charAt(i)));\r
+\r
+ if (residueHash.containsKey(res))\r
+ {\r
+ count = ((Integer) residueHash.get(res)).intValue();\r
+ count++;\r
+ residueHash.put(res, new Integer(count));\r
+ }\r
+ else\r
+ {\r
+ residueHash.put(res, new Integer(1));\r
+ }\r
+ }\r
+ else\r
+ {\r
+ if (residueHash.containsKey("-"))\r
+ {\r
+ count = ((Integer) residueHash.get("-")).intValue();\r
+ count++;\r
+ residueHash.put("-", new Integer(count));\r
+ }\r
+ else\r
+ {\r
+ residueHash.put("-", new Integer(1));\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ //What is the count threshold to count the residues in residueHash()\r
+ thresh = (threshold * (sequences.size())) / 100;\r
+\r
+ //loop over all the found residues\r
+ enumeration = residueHash.keys();\r
+\r
+ while (enumeration.hasMoreElements())\r
+ {\r
+ res = (String) enumeration.nextElement();\r
+\r
+ if (((Integer) residueHash.get(res)).intValue() > thresh)\r
+ {\r
+ //Now loop over the properties\r
+ enumeration2 = propHash.keys();\r
+\r
+ while (enumeration2.hasMoreElements())\r
+ {\r
+ type = (String) enumeration2.nextElement();\r
+ ht = (Hashtable) propHash.get(type);\r
+\r
+ //Have we ticked this before?\r
+ if (!resultHash.containsKey(type))\r
+ {\r
+ if (ht.containsKey(res))\r
+ {\r
+ resultHash.put(type, ht.get(res));\r
+ }\r
+ else\r
+ {\r
+ resultHash.put(type, ht.get("-"));\r
+ }\r
+ }\r
+ else if (((Integer) resultHash.get(type)).equals(\r
+ (Integer) ht.get(res)) == false)\r
+ {\r
+ resultHash.put(type, new Integer(-1));\r
+ }\r
+ }\r
+ }\r
+ }\r