public interface SymbolList extends Changeable
This uses biological coordinates (1 to length).
Modifier and Type | Field and Description |
---|---|
static ChangeType |
EDIT
Signals that the SymbolList is being edited.
|
static SymbolList |
EMPTY_LIST
A useful object that represents an empty symbol list, to avoid returning
null.
|
Modifier and Type | Method and Description |
---|---|
void |
edit(Edit edit)
Apply an edit to the SymbolList as specified by the edit object.
|
Alphabet |
getAlphabet()
The alphabet that this SymbolList is over.
|
Iterator<Symbol> |
iterator()
An Iterator over all Symbols in this SymbolList.
|
int |
length()
The number of symbols in this SymbolList.
|
String |
seqString()
Stringify this symbol list.
|
SymbolList |
subList(int start,
int end)
Return a new SymbolList for the symbols start to end inclusive.
|
String |
subStr(int start,
int end)
Return a region of this symbol list as a String.
|
Symbol |
symbolAt(int index)
Return the symbol at index, counting from 1.
|
List<Symbol> |
toList()
Returns a List of symbols.
|
addChangeListener, addChangeListener, isUnchanging, removeChangeListener, removeChangeListener
static final ChangeType EDIT
static final SymbolList EMPTY_LIST
Alphabet getAlphabet()
Every symbol within this SymbolList is a member of this alphabet.
alphabet.contains(symbol) == true
for each symbol that is within this sequence.
int length()
Symbol symbolAt(int index) throws IndexOutOfBoundsException
index
- the offset into this SymbolListIndexOutOfBoundsException
- if index is less than 1, or greater than
the length of the symbol listList<Symbol> toList()
This is an immutable list of symbols. Do not edit it.
Iterator<Symbol> iterator()
This is an ordered iterator over the Symbols. It cannot be used to edit the underlying symbols.
SymbolList subList(int start, int end) throws IndexOutOfBoundsException
The resulting SymbolList will count from 1 to (end-start + 1) inclusive, and refer to the symbols start to end of the original sequence.
start
- the first symbol of the new SymbolListend
- the last symbol (inclusive) of the new SymbolListIndexOutOfBoundsException
String seqString()
It is expected that this will use the symbol's token to render each symbol. It should be parsable back into a SymbolList using the default token parser for this alphabet.
String subStr(int start, int end) throws IndexOutOfBoundsException
This should use the same rules as seqString.
start
- the first symbol to includeend
- the last symbol to includeIndexOutOfBoundsException
- if either start or end are not within the
SymbolListvoid edit(Edit edit) throws IndexOutOfBoundsException, IllegalAlphabetException, ChangeVetoException
All edits can be broken down into a series of operations that change contiguous blocks of the sequence. This represent a one of those operations.
When applied, this Edit will replace 'length' number of symbols starting a position 'pos' by the SymbolList 'replacement'. This allow to do insertions (length=0), deletions (replacement=SymbolList.EMPTY_LIST) and replacements (length>=1 and replacement.length()>=1).
The pos and pos+length should always be valid positions on the SymbolList to:
SymbolList seq = DNATools.createDNA("atcaaaaacgctagc");
System.out.println(seq.seqString());
// delete 5 bases from position 4
Edit ed = new Edit(4, 5, SymbolList.EMPTY_LIST);
seq.edit(ed);
System.out.println(seq.seqString());
// delete one base from the start
ed = new Edit(1, 1, SymbolList.EMPTY_LIST);
seq.edit(ed);
// delete one base from the end
ed = new Edit(seq.length(), 1, SymbolList.EMPTY_LIST);
seq.edit(ed);
System.out.println(seq.seqString());
// overwrite 2 bases from position 3 with "tt"
ed = new Edit(3, 2, DNATools.createDNA("tt"));
seq.edit(ed);
System.out.println(seq.seqString());
// add 6 bases to the start
ed = new Edit(1, 0, DNATools.createDNA("aattgg");
seq.edit(ed);
System.out.println(seq.seqString());
// add 4 bases to the end
ed = new Edit(seq.length() + 1, 0, DNATools.createDNA("tttt"));
seq.edit(ed);
System.out.println(seq.seqString());
// full edit
ed = new Edit(3, 2, DNATools.createDNA("aatagaa");
seq.edit(ed);
System.out.println(seq.seqString());
edit
- the Edit to performIndexOutOfBoundsException
- if the edit does not lie within the
SymbolListIllegalAlphabetException
- if the SymbolList to insert has an
incompatible alphabetChangeVetoException
- if either the SymboList does not support the
edit, or if the change was vetoedCopyright © 2014 BioJava. All rights reserved.