* along with this program; if not, write to the Free Software\r
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA\r
*/\r
-\r
package jalview.analysis;\r
\r
import jalview.datamodel.*;\r
+\r
import jalview.io.*;\r
\r
import java.util.*;\r
\r
-public class CompareAlignments {\r
\r
+public class CompareAlignments {\r
Vector align;\r
String refId;\r
Vector ids;\r
\r
public CompareAlignments(Vector align) {\r
+ this.align = align;\r
\r
- this.align = align;\r
-\r
- ids = new Vector();\r
+ ids = new Vector();\r
\r
- Alignment al0 = (Alignment)align.elementAt(0);\r
+ Alignment al0 = (Alignment) align.elementAt(0);\r
\r
- for (int i = 0; i < al0.getHeight(); i++) {\r
- SequenceI seq = al0.getSequenceAt(i);\r
+ for (int i = 0; i < al0.getHeight(); i++) {\r
+ SequenceI seq = al0.getSequenceAt(i);\r
\r
- ids.addElement(seq.getName());\r
-\r
- if (i == 0) {\r
- setReferenceId(seq.getName());\r
- }\r
- }\r
+ ids.addElement(seq.getName());\r
\r
+ if (i == 0) {\r
+ setReferenceId(seq.getName());\r
+ }\r
+ }\r
}\r
\r
public void compare() {\r
+ Hashtable positions = new Hashtable();\r
\r
- Hashtable positions = new Hashtable();\r
-\r
- for (int k = 0; k < ids.size(); k++) {\r
-\r
- String id = (String)ids.elementAt(k);\r
-\r
- System.out.println("Ids " + id + " " + refId);\r
+ for (int k = 0; k < ids.size(); k++) {\r
+ String id = (String) ids.elementAt(k);\r
\r
- if (!id.equals(refId)) {\r
+ System.out.println("Ids " + id + " " + refId);\r
\r
- Hashtable fullhash = new Hashtable();\r
+ if (!id.equals(refId)) {\r
+ Hashtable fullhash = new Hashtable();\r
\r
- for (int i = 0; i < align.size(); i++) {\r
- System.out.println("Alignment " + i);\r
+ for (int i = 0; i < align.size(); i++) {\r
+ System.out.println("Alignment " + i);\r
\r
- Alignment al = (Alignment)align.elementAt(i);\r
+ Alignment al = (Alignment) align.elementAt(i);\r
\r
- SequenceI refseq = null;\r
+ SequenceI refseq = null;\r
\r
- for (int j = 0; j < al.getHeight(); j++) {\r
- if (((SequenceI)al.getSequenceAt(j)).getName().equals(refId)) {\r
- refseq = (SequenceI)al.getSequenceAt(j);\r
- }\r
- }\r
+ for (int j = 0; j < al.getHeight(); j++) {\r
+ if (((SequenceI) al.getSequenceAt(j)).getName().equals(refId)) {\r
+ refseq = (SequenceI) al.getSequenceAt(j);\r
+ }\r
+ }\r
\r
- if (refseq != null) {\r
+ if (refseq != null) {\r
+ System.out.println("Refseq " + refseq.getName());\r
\r
- System.out.println("Refseq " + refseq.getName());\r
+ for (int jj = 0; jj < al.getHeight(); jj++) {\r
+ SequenceI seq = (SequenceI) al.getSequenceAt(jj);\r
\r
- for (int jj = 0; jj < al.getHeight(); jj++) {\r
- SequenceI seq = (SequenceI)al.getSequenceAt(jj);\r
+ if (seq.getName().equals(id)) {\r
+ Hashtable hash = getAlignPositions(seq, refseq);\r
\r
- if (seq.getName().equals(id)) {\r
- Hashtable hash = getAlignPositions(seq,refseq);\r
+ Enumeration keys = hash.keys();\r
\r
- Enumeration keys = hash.keys();\r
+ while (keys.hasMoreElements()) {\r
+ Integer key = (Integer) keys.nextElement();\r
\r
- while (keys.hasMoreElements()) {\r
- Integer key = (Integer)keys.nextElement();\r
- // System.out.println(key + " " + hash.get(key));\r
- if (fullhash.get(key) == null) {\r
- fullhash.put(key,new Vector());\r
- }\r
+ // System.out.println(key + " " + hash.get(key));\r
+ if (fullhash.get(key) == null) {\r
+ fullhash.put(key, new Vector());\r
+ }\r
\r
- Vector tmp = (Vector)fullhash.get(key);\r
+ Vector tmp = (Vector) fullhash.get(key);\r
\r
- tmp.addElement(hash.get(key));\r
- }\r
- }\r
+ tmp.addElement(hash.get(key));\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
\r
- }\r
- }\r
- }\r
+ System.out.println("\nId " + id);\r
\r
- System.out.println ("\nId " + id);\r
+ Enumeration keys = fullhash.keys();\r
\r
- Enumeration keys = fullhash.keys();\r
+ int totdiff = 0;\r
\r
+ while (keys.hasMoreElements()) {\r
+ Integer key = (Integer) keys.nextElement();\r
\r
- int totdiff = 0;\r
- while (keys.hasMoreElements()) {\r
- Integer key = (Integer)keys.nextElement();\r
+ Vector tmp = (Vector) fullhash.get(key);\r
\r
- Vector tmp = (Vector)fullhash.get(key);\r
+ int diff0 = ((Integer) tmp.elementAt(0)).intValue();\r
+ ;\r
\r
+ int diff = 0;\r
\r
+ for (int l = 1; l < tmp.size(); l++) {\r
+ diff += Math.abs(diff0 -\r
+ ((Integer) tmp.elementAt(l)).intValue());\r
+ }\r
\r
- int diff0 = ((Integer)tmp.elementAt(0)).intValue();;\r
- int diff = 0;\r
+ if (diff > 0) {\r
+ totdiff++;\r
+ System.out.print(id + " Ref pos " + key + " : " +\r
+ diff0 + " " + diff + " : ");\r
\r
- for (int l = 1; l < tmp.size(); l++) {\r
- diff += Math.abs(diff0 - ((Integer)tmp.elementAt(l)).intValue());\r
+ for (int l = 1; l < tmp.size(); l++) {\r
+ System.out.print(diff0 -\r
+ ((Integer) tmp.elementAt(l)).intValue() + " ");\r
+ }\r
\r
- }\r
+ System.out.println();\r
+ }\r
+ }\r
\r
- if (diff > 0) {\r
- totdiff++;\r
- System.out.print(id + " Ref pos " + key + " : " + diff0 + " " + diff + " : ");\r
-\r
- for (int l = 1; l < tmp.size(); l++) {\r
- System.out.print(diff0 - ((Integer)tmp.elementAt(l)).intValue() + " ");\r
- }\r
- System.out.println();\r
- }\r
- }\r
-\r
- System.out.println("Total " + id + " " + totdiff);\r
-\r
- }\r
- }\r
+ System.out.println("Total " + id + " " + totdiff);\r
+ }\r
+ }\r
}\r
\r
-\r
public void setReferenceId(String id) {\r
- this.refId = id;\r
+ this.refId = id;\r
}\r
\r
public Hashtable getAlignPositions(SequenceI seq1, SequenceI seq2) {\r
+ Hashtable hash = new Hashtable();\r
\r
- Hashtable hash = new Hashtable();\r
+ int i = 0;\r
\r
- int i = 0;\r
+ int pos1 = 0;\r
+ int pos2 = 0;\r
\r
- int pos1 = 0;\r
- int pos2 = 0;\r
+ while (i < seq1.getLength()) {\r
+ char c1 = seq1.getCharAt(i);\r
+ char c2 = seq2.getCharAt(i);\r
\r
- while (i < seq1.getLength()) {\r
+ if (c1 != '-') {\r
+ pos1++;\r
+ }\r
\r
- char c1 = seq1.getCharAt(i);\r
- char c2 = seq2.getCharAt(i);\r
+ if (c2 != '-') {\r
+ pos2++;\r
+ }\r
\r
- if (c1 != '-') {\r
- pos1++;\r
- }\r
+ if (c1 != '-') {\r
+ hash.put(new Integer(pos1), new Integer(pos2));\r
+ }\r
\r
- if (c2 != '-') {\r
- pos2++;\r
- }\r
+ i++;\r
+ }\r
\r
- if (c1 != '-') {\r
- hash.put(new Integer(pos1),new Integer(pos2));\r
- }\r
-\r
- i++;\r
- }\r
- return hash;\r
+ return hash;\r
}\r
-\r
-\r
-\r
}\r