## org.biojava.bio.alignment
Interface EditableAlignment

All Known Implementing Classes:
  FlexibleAlignment

    public interface EditableAlignment

EditableAlignment is an interface that defines methods for shifting bases within an Alignment.

Shift should work as follows. Bases within a sequence can be shifted to the right with offset > 1 to the left with offset < 1. Shifting bases will be allowed if:

- 1: Shift would remove only gaps on one side, they will be replace with gaps on the other.
- 2: Shift is at the end of a sequence. It will add gaps if the range location is less than the whole sequence.
- Shifts that would delete bases will throw a IllegalEditException

  If the Alignment is an UnequalLengthAlignment it should be acceptable to shift bases in such a way as to increase (or decrease) the size of the overall length of the alignment, i.e. shift them over the edge.

  Author:
    David Waring

  Field Summary
  `static ChangeType` `GAPS`
  `static ChangeType` `LOCATION`

  Method Summary
  `void` `edit(Object label, Edit edit)` edit() allows edits on an individual sequence, they should be reflected back to the underlying SymbolList.
  `void` `shiftAtAlignmentLoc(Object label, Location loc, int offset)` loc in this case is the Alignment Location
  `void` `shiftAtSequenceLoc(Object label, Location loc, int offset)` loc in this case is the SymbolList Location

  Field Detail

  ### LOCATION

      static final ChangeType LOCATION

  ### GAPS

      static final ChangeType GAPS

  Method Detail

  ### edit

      void edit(Object label,
                Edit edit)
                throws ChangeVetoException

    edit() allows edits on an individual sequence, they should be reflected back to the underlying SymbolList.

    Throws:
      `ChangeVetoException`

  ### shiftAtAlignmentLoc

      void shiftAtAlignmentLoc(Object label,
                               Location loc,
                               int offset)
                               throws ChangeVetoException,
                                      IllegalAlignmentEditException,
                                      IndexOutOfBoundsException

    loc in this case is the Alignment Location

    Throws:
      `ChangeVetoException`
      `IllegalAlignmentEditException`
      `IndexOutOfBoundsException`

  ### shiftAtSequenceLoc

      void shiftAtSequenceLoc(Object label,
                              Location loc,
                              int offset)
                              throws ChangeVetoException,
                                     IllegalAlignmentEditException,
                                     IndexOutOfBoundsException

    loc in this case is the SymbolList Location

    Throws:
      `ChangeVetoException`
      `IllegalAlignmentEditException`
      `IndexOutOfBoundsException`