## org.biojava.bio.symbol
Class SimpleGappedSymbolList

    java.lang.Object
      org.biojava.utils.AbstractChangeable
          org.biojava.bio.symbol.AbstractSymbolList
              org.biojava.bio.symbol.SimpleGappedSymbolList

All Implemented Interfaces:
  Serializable, GappedSymbolList, SymbolList, Changeable

Direct Known Subclasses:
  SimpleGappedSequence

    public class SimpleGappedSymbolList

extends AbstractSymbolList
implements GappedSymbolList, Serializable

This implementation of GappedSymbolList wraps a SymbolList, allowing you to insert gaps. Please note that this is a view onto another SymbolList. Gaps created and removed are only in the view not the underlying original. This means that any gaps present in the original cannot be manipulated in this view. To manipulate the original you would need to use Edit objects.

Since:
  1.3
Author:
  Matthew Pocock
See Also:
  Serialized Form

Nested Class Summary
`protected static class` `SimpleGappedSymbolList.Block` An aligned block.

Nested classes/interfaces inherited from class org.biojava.bio.symbol.AbstractSymbolList
`AbstractSymbolList.EditScreener, AbstractSymbolList.EditTranslater`

Field Summary

Fields inherited from interface org.biojava.bio.symbol.SymbolList
`EDIT, EMPTY_LIST`

Constructor Summary
`SimpleGappedSymbolList(GappedSymbolList gappedSource)` Create a new SimpleGappedSymbolList that will view source, inheriting all existing gaps.
`SimpleGappedSymbolList(SymbolList source)` Create a new SimpleGappedSymbolList that will view source.

Method Summary
`void` `addGapInSource(int pos)` Add a gap at pos within the source coordinates.
`void` `addGapInView(int pos)` Add a single gap at pos within the view coordintates.
`void` `addGapsInSource(int pos, int length)` Add length gaps at pos within the source coordinates.
`void` `addGapsInView(int pos, int length)` Add length gaps at pos within the view coordinates.
`List` `BlockIterator()` Get list of the un-gapped region of the SymbolList.
`void` `dumpBlocks()` Debugging method
`protected int` `findSourceBlock(int indx)` Finds the index of the block containing the source coordinate indx.
`protected int` `findSourceGap(int indx)` Finds the index of the Block before the gap at indx within the following gap.
`protected int` `findViewBlock(int indx)` Finds the index of the Block containing indx within the view ranges.
`protected int` `findViewGap(int indx)` Finds the index of the Block before the gap at indx within the view range.
`int` `firstNonGap()` Return the index of the first Symbol that is not a Gap character.
`Location` `gappedToLocation(Location l)` Translates a Location from the gapped view into the underlying sequence.
`Alphabet` `getAlphabet()` The alphabet that this SymbolList is over.
`SymbolList` `getSourceSymbolList()` Return the underlying (ungapped) SymbolList.
`Location` `getUngappedLocation()` Get a Location that contains exactly those positions that are not gaps.
`protected boolean` `isSane()`
`int` `lastNonGap()` Return the index of the last Symbol that is not a Gap character.
`int` `length()` The number of symbols in this SymbolList.
`Location` `locationToGapped(Location l)` Translate a Location onto the gapped view, splitting blocks if necessary
`void` `removeGap(int pos)` Remove a single gap at position pos in this GappedSymbolList.
`void` `removeGaps(int pos, int length)` Remove some gaps at position pos in this GappedSymbolList.
`protected void` `renumber(int i, int delta)` Renumber the view indexes from block, adding delta to each offset.
`int` `sourceToView(int indx)` Coordinate conversion from source to view.
`protected int` `sourceToView(SimpleGappedSymbolList.Block b, int indx)` Coordinate conversion from source to view.
`Symbol` `symbolAt(int indx)` Return the symbol at index, counting from 1.
`int` `viewToSource(int indx)` Coordinate conversion from view to source.
`protected int` `viewToSource(SimpleGappedSymbolList.Block b, int indx)` Coordinate conversion from view to source.

Methods inherited from class org.biojava.bio.symbol.AbstractSymbolList
`edit, equals, hashCode, iterator, seqString, subList, subStr, toList, toString`

Methods inherited from class org.biojava.utils.AbstractChangeable
`addChangeListener, addChangeListener, generateChangeSupport, getChangeSupport, hasListeners, hasListeners, isUnchanging, removeChangeListener, removeChangeListener`

Methods inherited from class java.lang.Object
`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

Methods inherited from interface org.biojava.bio.symbol.SymbolList
`edit, iterator, seqString, subList, subStr, toList`

Methods inherited from interface org.biojava.utils.Changeable
`addChangeListener, addChangeListener, isUnchanging, removeChangeListener, removeChangeListener`

Constructor Detail

### SimpleGappedSymbolList

    public SimpleGappedSymbolList(GappedSymbolList gappedSource)

  Create a new SimpleGappedSymbolList that will view source, inheriting all existing gaps.

  Parameters:
    `gappedSource` - the underlying sequence

### SimpleGappedSymbolList

    public SimpleGappedSymbolList(SymbolList source)

  Create a new SimpleGappedSymbolList that will view source.

  Parameters:
    `source` - the underlying sequence

Method Detail

### findSourceBlock

    protected final int findSourceBlock(int indx)

  Finds the index of the block containing the source coordinate indx.

  Parameters:
    `indx` - the index to find
  Returns:
    the index of the Block containing indx

### findViewBlock

    protected final int findViewBlock(int indx)

  Finds the index of the Block containing indx within the view ranges.

  If indx is not within a view block, then it is the index of a gap. The method will return -(indx+1) where indx is the block emediately following the gap.

  Parameters:
    `indx` - the index to find within a view range.
  Returns:
    the index of the block containing index or one less than the negative of the index of the block following the gap

### findSourceGap

    protected final int findSourceGap(int indx)

  Finds the index of the Block before the gap at indx within the following gap.

  Parameters:
    `indx` - the index to find within a gap
  Returns:
    the index of the block with indx in the gap

### findViewGap

    protected final int findViewGap(int indx)

  Finds the index of the Block before the gap at indx within the view range.

  If indx is in-fact a real symbol, then there will be no Block before it. In this case, the method returns -2. It returns -1 if indx is within the leading gaps and blocks.size()-1 if it is within the trailing gaps.

  Parameters:
    `indx` - the index to find within a view range
  Returns:
    the index of the block with indx in the following gap

### viewToSource

    protected final int viewToSource(SimpleGappedSymbolList.Block b,
                                     int indx)

  Coordinate conversion from view to source.

  Parameters:
    `b` - the block containing indx
    `indx` - the index to project
  Returns:
    the position of indx projected from view to source

### viewToSource

    public final int viewToSource(int indx)
                           throws IndexOutOfBoundsException

  Description copied from interface: `GappedSymbolList`
  Coordinate conversion from view to source.

  If the index can be projected onto the source, the index it projects onto is returned. If it falls within a gap, then the index of the first symbol after the run of gaps is negated and returned. If the index is after the last block of symbols (and therefore in the trailing list of gaps), then it returns -(length + 1).

  Specified by:
    `viewToSource` in interface `GappedSymbolList`
  Parameters:
    `indx` - the index to project
  Returns:
    the position of indx projected from view to source
  Throws:
    `IndexOutOfBoundsException` - if indx is not a valid view index

### sourceToView

    protected final int sourceToView(SimpleGappedSymbolList.Block b,
                                     int indx)

  Coordinate conversion from source to view.

  Parameters:
    `b` - the block containing indx
    `indx` - the index to project
  Returns:
    the position of indx projected from source to view

### sourceToView

    public final int sourceToView(int indx)
                           throws IndexOutOfBoundsException

  Description copied from interface: `GappedSymbolList`
  Coordinate conversion from source to view.

  Specified by:
    `sourceToView` in interface `GappedSymbolList`
  Parameters:
    `indx` - the index to project
  Returns:
    the position of indx projected from source to view
  Throws:
    `IndexOutOfBoundsException` - if indx is not a valid source index

### renumber

    protected final void renumber(int i,
                                  int delta)

  Renumber the view indexes from block, adding delta to each offset.

  This adjusts viewStart and viewEnd to be += delta for each block i->blocks.size(), and sets the total length to += delta.

  Parameters:
    `i` - the first

### addGapInView

    public void addGapInView(int pos)
                      throws IndexOutOfBoundsException

  Description copied from interface: `GappedSymbolList`
  Add a single gap at pos within the view coordintates.

  this.symbolAt(pos) will then return gap. Adding a gap at 1 will prepend gaps. Adding a gap at (length+1) will append a gap.

  Specified by:
    `addGapInView` in interface `GappedSymbolList`
  Parameters:
    `pos` - the position to add a gap before
  Throws:
    `IndexOutOfBoundsException` - if pos is not within 1->length+1

### addGapsInView

    public void addGapsInView(int pos,
                              int length)
                       throws IndexOutOfBoundsException

  Description copied from interface: `GappedSymbolList`
  Add length gaps at pos within the view coordinates.

  this.symbolAt(i) will then return gap for i = (pos .. pos+count-1). Adding gaps at 1 will prepend gaps. Adding gaps at (length+1) will append gaps.

  Specified by:
    `addGapsInView` in interface `GappedSymbolList`
  Parameters:
    `pos` - the position to add a gap before
    `length` - the number of gaps to insert
  Throws:
    `IndexOutOfBoundsException` - if pos is not within 1->length+1

### addGapInSource

    public void addGapInSource(int pos)
                        throws IndexOutOfBoundsException

  Description copied from interface: `GappedSymbolList`
  Add a gap at pos within the source coordinates.

  Specified by:
    `addGapInSource` in interface `GappedSymbolList`
  Parameters:
    `pos` - where to add the gap
  Throws:
    `IndexOutOfBoundsException` - if pos is not within 1->source.length()

### addGapsInSource

    public void addGapsInSource(int pos,
                                int length)

  Description copied from interface: `GappedSymbolList`
  Add length gaps at pos within the source coordinates.

  Specified by:
    `addGapsInSource` in interface `GappedSymbolList`
  Parameters:
    `pos` - where to add the gap
    `length` - how many gaps to add

### removeGap

    public void removeGap(int pos)
                   throws IndexOutOfBoundsException,
                          IllegalSymbolException

  Description copied from interface: `GappedSymbolList`
  Remove a single gap at position pos in this GappedSymbolList.

  Specified by:
    `removeGap` in interface `GappedSymbolList`
  Parameters:
    `pos` - where to remove the gap
  Throws:
    `IndexOutOfBoundsException` - if pos is not within 1..length
    `IllegalSymbolException` - if the symbol at pos is not a gap

### removeGaps

    public void removeGaps(int pos,
                           int length)
                    throws IndexOutOfBoundsException,
                           IllegalSymbolException

  Description copied from interface: `GappedSymbolList`
  Remove some gaps at position pos in this GappedSymbolList.

  Specified by:
    `removeGaps` in interface `GappedSymbolList`
  Parameters:
    `pos` - where to remove the gaps
    `length` - how many to remove
  Throws:
    `IndexOutOfBoundsException` - if pos is not within 1..length() or if some of the Symbols within pos->(pos+length-1) are not gap Symbols
    `IllegalSymbolException` - if the symbol at pos is not a gap

### getAlphabet

    public Alphabet getAlphabet()

  Description copied from interface: `SymbolList`
  The alphabet that this SymbolList is over.

  Every symbol within this SymbolList is a member of this alphabet. `alphabet.contains(symbol) == true` for each symbol that is within this sequence.

  Specified by:
    `getAlphabet` in interface `SymbolList`
  Returns:
    the alphabet

### length

    public int length()

  Description copied from interface: `SymbolList`
  The number of symbols in this SymbolList.

  Specified by:
    `length` in interface `SymbolList`
  Returns:
    the length

### symbolAt

    public Symbol symbolAt(int indx)
                    throws IndexOutOfBoundsException

  Description copied from interface: `SymbolList`
  Return the symbol at index, counting from 1.

  Specified by:
    `symbolAt` in interface `SymbolList`
  Parameters:
    `indx` - the offset into this SymbolList
  Returns:
    the Symbol at that index
  Throws:
    `IndexOutOfBoundsException` - if index is less than 1, or greater than the length of the symbol list

### firstNonGap

    public int firstNonGap()

  Description copied from interface: `GappedSymbolList`
  Return the index of the first Symbol that is not a Gap character.

  All symbols before firstNonGap are leading gaps. firstNonGap is effectively the index in the view of symbol 1 in the original sequence.

  Specified by:
    `firstNonGap` in interface `GappedSymbolList`
  Returns:
    the index of the first character not to be a gap

### lastNonGap

    public int lastNonGap()

  Description copied from interface: `GappedSymbolList`
  Return the index of the last Symbol that is not a Gap character.

  All symbols after lastNonGap untill length are trailing gaps. lastNonGap is effectively the index in the view of symbol length in the original sequence.

  Specified by:
    `lastNonGap` in interface `GappedSymbolList`
  Returns:
    the index of the last character not to be a gap

### BlockIterator

    public List BlockIterator()

  Get list of the un-gapped region of the SymbolList.

  The gapped symbol list can be represented as a list of ungapped regions. Given a list of start-stop pairs in the ungapped coordinate system each with a corresponding pair of start-stop pairs in the gapped view, the entire gapped list can be reconstructed.

  Returns:
    a List of Block instances

### dumpBlocks

    public void dumpBlocks()

  Debugging method

### locationToGapped

    public Location locationToGapped(Location l)

  Translate a Location onto the gapped view, splitting blocks if necessary

  Since:
    1.3

### gappedToLocation

    public Location gappedToLocation(Location l)

  Translates a Location from the gapped view into the underlying sequence. End points that are in gaps are moved 'inwards' to shorten the location.

  Since:
    1.3

### getSourceSymbolList

    public SymbolList getSourceSymbolList()

  Description copied from interface: `GappedSymbolList`
  Return the underlying (ungapped) SymbolList.

  Specified by:
    `getSourceSymbolList` in interface `GappedSymbolList`

### getUngappedLocation

    public Location getUngappedLocation()

  Description copied from interface: `GappedSymbolList`
  Get a Location that contains exactly those positions that are not gaps.

  This will be a Location that contains every symbol in the underlying ungapped sequence. Every symbol not in the Location is not from the underlying sequence and is a gap.

  Specified by:
    `getUngappedLocation` in interface `GappedSymbolList`
  Returns:
    a new Location that contains all non-gap symbols

### isSane

    protected boolean isSane()