header updated
[jalview.git] / src / jalview / datamodel / Alignment.java
index 507102e..90a8b31 100755 (executable)
@@ -1,6 +1,6 @@
 /*
  * Jalview - A Sequence Alignment Editor and Viewer
- * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
+ * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -172,11 +172,17 @@ public class Alignment implements AlignmentI
     {
         return groups;
     }
-
     /** Takes out columns consisting entirely of gaps (-,.," ")
      */
-    public void removeGaps()
-    {
+    public void removeGaps() {
+      removeGaps((ShiftList)null);
+    }
+    /**
+     * remove gaps in alignment - recording any frame shifts in shiftrecord
+     * intended to be passed to ColumnSelection.compensateForEdits(shiftrecord)
+     * @param shiftrecord
+     */
+    public void removeGaps(ShiftList shiftrecord) {
         SequenceI[] seqs = getVisibleAndRepresentedSeqs();
         int j, jSize = seqs.length;
 
@@ -219,6 +225,9 @@ public class Alignment implements AlignmentI
             if (!delete && startCol > -1)
             {
               deleteColumns(seqs, startCol, endCol);
+              if (shiftrecord!=null) {
+                shiftrecord.addShift(startCol, 1+endCol-startCol);
+              }
               width -= (endCol - startCol);
               i -= (endCol - startCol);
               startCol = -1;
@@ -229,6 +238,9 @@ public class Alignment implements AlignmentI
         if (delete && startCol > -1)
         {
           deleteColumns(seqs, startCol, endCol);
+          if (shiftrecord!=null) {
+            shiftrecord.addShift(startCol, 1+endCol-startCol);
+          }
         }
     }
 
@@ -427,6 +439,28 @@ public class Alignment implements AlignmentI
         return null;
     }
 
+    public SequenceI [] findSequenceMatch(String name)
+    {
+      Vector matches = new Vector();
+      int i = 0;
+
+      while (i < sequences.size())
+      {
+          if (getSequenceAt(i).getName().equals(name))
+          {
+              matches.addElement(getSequenceAt(i));
+          }
+          i++;
+      }
+
+      SequenceI [] result = new SequenceI[matches.size()];
+      for(i=0; i<result.length; i++)
+        result[i] = (SequenceI)matches.elementAt(i);
+
+      return result;
+
+    }
+
 
     /**    */
     public int findIndex(SequenceI s)
@@ -711,7 +745,8 @@ public class Alignment implements AlignmentI
                                    ),
                                    getSequenceAt(i).getStart(),
                                    getSequenceAt(i).getEnd());
-
+            seqs[i].sequenceFeatures = getSequenceAt(i).getSequenceFeatures();
+            getSequenceAt(i).setSequenceFeatures(null);
             getSequenceAt(i).setDatasetSequence(seqs[i]);
           }
         }