|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface RichSequenceHandler
An interface for classes that know how to handle subsequence operations.
Implementations may be optimized so that they perform more efficiently in
certain conditions. For example a subsequence operation on a huge BioSQL
backed RichSequence
could be optimized so that the operation
is performed more efficiently than dragging the whole sequence to memory and
then doing the operation.
Implementations of RichSequence
should generally delegate
symbolAt(int index)
, subStr(int start, int end)
,
subList(int start, int end)
and subSequence(int start, int end)
to some implementation of this interface.
Method Summary | |
---|---|
void |
edit(RichSequence seq,
Edit edit)
Apply an edit to the Sequence as specified by the edit object. |
Iterator |
iterator(RichSequence seq)
An Iterator over all Symbols in this SymbolList. |
String |
seqString(RichSequence seq)
Stringify this Sequences. |
SymbolList |
subList(RichSequence seq,
int start,
int end)
Return a new SymbolList for the symbols start to end inclusive. |
String |
subStr(RichSequence seq,
int start,
int end)
Return a region of this sequence as a String. |
Symbol |
symbolAt(RichSequence seq,
int index)
Return the symbol at index, counting from 1. |
List |
toList(RichSequence seq)
Returns a List of symbols. |
Method Detail |
---|
void edit(RichSequence seq, 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:
RichSequence seq = //code to initialize RichSequence
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 perform
IndexOutOfBoundsException
- if the edit does not lie within the
SymbolList
IllegalAlphabetException
- if the SymbolList to insert has an
incompatible alphabet
ChangeVetoException
- if either the SymboList does not support the
edit, or if the change was vetoedSymbol symbolAt(RichSequence seq, int index) throws IndexOutOfBoundsException
index
- the offset into this SymbolList
IndexOutOfBoundsException
- if index is less than 1, or greater than
the length of the symbol listList toList(RichSequence seq)
This should be an immutable list of symbols or a copy.
String subStr(RichSequence seq, int start, int end) throws IndexOutOfBoundsException
This should use the same rules as seqString.
start
- the first symbol to includeend
- the last symbol to include
IndexOutOfBoundsException
- if either start or end are not within the
SymbolListSymbolList subList(RichSequence seq, 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 SymbolList
IndexOutOfBoundsException
String seqString(RichSequence seq)
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.
Iterator iterator(RichSequence seq)
This is an ordered iterator over the Symbols. It cannot be used to edit the underlying symbols.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |