// This class is used extensively in calculating alignment colourschemes\r
// that depend on the amount of conservation in each alignment column.\r
\r
+\r
public static Vector calculate(Vector sequences,int start,int end) {\r
\r
Vector result = new Vector();\r
{\r
\r
Hashtable residueHash = new Hashtable();\r
- int maxCount = -1;\r
+ int maxCount = 0;\r
String maxResidue = "-";\r
int nongap = 0;\r
for (int j=0; j < sequences.size(); j++)\r
if (s.getSequence().length() > i)\r
{\r
\r
- String res = s.getSequence().substring(i,i+1);\r
+ String res = s.getSequence().charAt(i)+"";\r
\r
- if (!res.equals("-"))\r
+ if (!jalview.util.Comparison.isGap(res.charAt(0)))\r
nongap++;\r
+ else\r
+ res = "-"; // we always use this for gaps in the property vectors\r
\r
if (residueHash.containsKey(res))\r
{\r
int count = ((Integer)residueHash.get(res)).intValue() ;\r
count++;\r
\r
- if (!res.equals("-") && count >= maxCount)\r
+ if (!jalview.util.Comparison.isGap(res.charAt(0)) && count >= maxCount)\r
{\r
\r
if(count>maxCount)\r
}\r
}\r
}\r
+\r
residueHash.put("maxCount",new Integer(maxCount));\r
+ if(maxCount<0)\r
+ System.out.println("asasa "+maxCount);\r
residueHash.put("maxResidue", maxResidue);\r
residueHash.put("size", new Integer(sequences.size()));\r
residueHash.put("nongap", new Integer(nongap));\r
\r
for (int k = winstart; k <= winend; k++) {\r
String refchar = refseq.getSequence().substring(k,k+1);\r
+ if (jalview.util.Comparison.isGap(refchar.charAt(0)))\r
+ refchar="-";\r
+ else {\r
+ for (int j = 0; j < sequences.size(); j++) {\r
\r
- for (int j = 0; j < sequences.size(); j++) {\r
+ Sequence s = (Sequence)sequences.elementAt(j);\r
\r
- if (refchar.equals("-") == false) {\r
+ if (s.getSequence().length() > k) {\r
\r
- Sequence s = (Sequence)sequences.elementAt(j);\r
+ String res = s.getSequence().substring(k,k+1); // no gapchar test needed\r
\r
- if (s.getSequence().length() > k) {\r
+ if (res.equals(refchar)) {\r
+ int val = ((Integer)values.elementAt(j)).intValue();\r
+ val++;\r
+ values.setElementAt(new Integer(val),j);\r
+ }\r
+ }\r
+ }\r
+ }\r
\r
- String res = s.getSequence().substring(k,k+1);\r
+ }\r
\r
- if (res.equals(refchar)) {\r
- int val = ((Integer)values.elementAt(j)).intValue();\r
- val++;\r
- values.setElementAt(new Integer(val),j);\r
- }\r
- }\r
- }\r
- }\r
- }\r
prev = values;\r
} else {\r
int winstart = i-window/2;\r
\r
// Now substract 1 if the chars at winstart-1 match\r
\r
- if (pre_refchar.equals("-") == false && pre_char.equals(pre_refchar)) {\r
+ if (jalview.util.Comparison.isGap(pre_refchar.charAt(0)) == false\r
+ && pre_char.equals(pre_refchar)) {\r
val--;\r
}\r
\r
- if (pos_refchar.equals("-") == false && pos_char.equals(pos_refchar)) {\r
+ if (jalview.util.Comparison.isGap(pos_refchar.charAt(0)) == false\r
+ && pos_char.equals(pos_refchar)) {\r
val++;\r
}\r
\r