conservation removed
[jalview.git] / src / jalview / datamodel / Sequence.java
index aad8014..8928425 100755 (executable)
@@ -1,18 +1,40 @@
 package jalview.datamodel;\r
 \r
-\r
+import jalview.analysis.*;\r
 import java.awt.*;\r
+import java.util.*;\r
+import MCview.*;\r
+\r
 \r
 public class Sequence implements SequenceI\r
 {\r
-  protected String   name;\r
-  protected String   sequence;\r
-  protected int      start;\r
-  protected int      end;\r
-  protected String   description;\r
-  protected int      charHeight;\r
-  protected String   displayId;\r
-  protected Color    color = Color.white;\r
+  protected String name;\r
+  protected String sequence;\r
+  protected String description;\r
+  protected int start;\r
+  protected int end;\r
+  protected String displayId;\r
+  protected Color color = Color.white;\r
+  String pdbId;\r
+\r
+   public Vector sequenceFeatures = new Vector();\r
+   public void setSequenceFeatures(Vector v)\r
+   {\r
+     sequenceFeatures = v;\r
+   }\r
+\r
+   public Vector getSequenceFeatures()\r
+   {return sequenceFeatures; }\r
+\r
+   public void setPDBId(String id)\r
+   {\r
+     pdbId = id;\r
+   }\r
+   public String getPDBId()\r
+   {\r
+     return pdbId;\r
+   }\r
+\r
 \r
   public Sequence(String name, String sequence, int start, int end)\r
   {\r
@@ -69,6 +91,8 @@ public class Sequence implements SequenceI
     return this.sequence;\r
   }\r
   public String getSequence(int start,int end) {\r
+    if(end>sequence.length())\r
+      end = sequence.length();\r
     return this.sequence.substring(start,end);\r
   }\r
 \r
@@ -93,19 +117,18 @@ public class Sequence implements SequenceI
 \r
     while (i< sequence.length() && j <= end && j <= pos) {\r
 \r
-      String s = sequence.substring(i,i+1);\r
+      char c = sequence.charAt(i);\r
 \r
-      if (!(s.equals(".") || s.equals("-") || s.equals(" "))) {\r
+      if (!jalview.util.Comparison.isGap((c)))\r
         j++;\r
-      }\r
+\r
       i++;\r
     }\r
-    if (j == end && j < pos) {\r
+    if (j == end && j < pos)\r
       return end+1;\r
-    } else {\r
-\r
+    else\r
       return i;\r
-    }\r
+\r
   }\r
 \r
   public int findPosition(int i) {\r
@@ -113,21 +136,40 @@ public class Sequence implements SequenceI
     int j   = 0;\r
     int pos = start;\r
 \r
-    while (j < i) {\r
-      String s = sequence.substring(j,j+1);\r
-\r
-      if (!(s.equals(".") || s.equals("-") || s.equals(" "))) {\r
+    while (j < i && j<sequence.length())\r
+    {\r
+      char c = sequence.charAt(j);\r
+      if (!jalview.util.Comparison.isGap((c)))\r
         pos++;\r
-      }\r
+\r
       j++;\r
     }\r
     return pos;\r
   }\r
+\r
+  public int[] gapMap() {\r
+    // Returns an int array giving the position of each residue in the sequence in the alignment\r
+    String seq = jalview.analysis.AlignSeq.extractGaps("-. ",sequence);\r
+    int[] map = new int[seq.length()];\r
+    int j=0;\r
+    int p=0;\r
+    while (j<sequence.length()) {\r
+      if (!jalview.util.Comparison.isGap(sequence.charAt(j))) {\r
+        map[p++]=j;\r
+      }\r
+      j++;\r
+    }\r
+    return map;\r
+  }\r
+\r
   public void deleteCharAt(int i)\r
   {\r
-    StringBuffer sbuffer = new StringBuffer(sequence);\r
-    sbuffer.deleteCharAt(i);\r
-    sequence = sbuffer.toString();\r
+    sequence = sequence.substring(0,i) + sequence.substring(i+1);\r
+  }\r
+\r
+  public void deleteChars(int i, int j)\r
+  {\r
+    sequence = sequence.substring(0,i) + sequence.substring(j);\r
   }\r
 \r
   public void insertCharAt(int i, char c)\r