|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Objectorg.biojava.utils.AbstractChangeable
org.biojava.bio.program.das.DASSequence
Sequence reflecting a DAS reference sequence, possibly decorated with one of more annotation sets.
This is an first-pass implementation. In future, I hope to add query optimization for better performance on large sequences, and pluggable transducers to parameterize the creation of BioJava features.
| Nested Class Summary |
| Nested classes inherited from class org.biojava.bio.seq.FeatureHolder |
FeatureHolder.EmptyFeatureHolder |
| Nested classes inherited from class org.biojava.bio.Annotatable |
Annotatable.AnnotationForwarder |
| Field Summary | |
protected ChangeForwarder |
annotationForwarder
|
static ChangeType |
ANNOTATIONS
Change type which indicates that the set of annotation servers used by this DASSequence has been changed. |
static String |
PROPERTY_ANNOTATIONSERVER
|
static String |
PROPERTY_FEATUREID
|
static String |
PROPERTY_FEATURELABEL
|
static String |
PROPERTY_LINKS
|
static String |
PROPERTY_SEQUENCEVERSION
|
static int |
SIZE_THRESHOLD
|
| Fields inherited from interface org.biojava.bio.symbol.SymbolList |
EDIT, EMPTY_LIST |
| Fields inherited from interface org.biojava.bio.seq.FeatureHolder |
EMPTY_FEATURE_HOLDER, FEATURES, SCHEMA |
| Fields inherited from interface org.biojava.bio.Annotatable |
ANNOTATION |
| Method Summary | |
void |
addAnnotationSource(URL dataSourceURL)
|
boolean |
containsFeature(Feature f)
Check if the feature is present in this holder. |
int |
countFeatures()
Count how many features are contained. |
Feature |
createFeature(Feature.Template temp)
Create a new Feature, and add it to this FeatureHolder. |
Set |
dataSourceURLs()
|
void |
edit(Edit e)
Apply an edit to the SymbolList as specified by the edit object. |
Iterator |
features()
Iterate over the features in no well defined order. |
FeatureHolder |
filter(FeatureFilter ff)
Query this set of features using a supplied FeatureFilter. |
FeatureHolder |
filter(FeatureFilter ff,
boolean recurse)
Return a new FeatureHolder that contains all of the children of this one that passed the filter fc. |
Alphabet |
getAlphabet()
The alphabet that this SymbolList is over. |
Annotation |
getAnnotation()
Should return the associated annotation object. |
protected ChangeSupport |
getChangeSupport(ChangeType ct)
Called to retrieve the ChangeSupport for this object. |
String |
getName()
The name of this sequence. |
DASSequenceDB |
getParentDB()
|
FeatureFilter |
getSchema()
Return a schema-filter for this FeatureHolder. |
protected SymbolList |
getSymbols()
|
String |
getURN()
A Uniform Resource Identifier (URI) which identifies the sequence represented by this object. |
Iterator |
iterator()
An Iterator over all Symbols in this SymbolList. |
int |
length()
The number of symbols in this SymbolList. |
Feature |
realizeFeature(FeatureHolder dest,
Feature.Template temp)
Realize a feature template. |
void |
removeAnnotationSource(URL dataSourceURL)
|
void |
removeFeature(Feature f)
Remove a feature from this FeatureHolder. |
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 pos)
Return the symbol at index, counting from 1. |
List |
toList()
Returns a List of symbols. |
| Methods inherited from class org.biojava.utils.AbstractChangeable |
addChangeListener, addChangeListener, generateChangeSupport, hasListeners, hasListeners, isUnchanging, removeChangeListener, removeChangeListener |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Methods inherited from interface org.biojava.utils.Changeable |
addChangeListener, addChangeListener, isUnchanging, removeChangeListener, removeChangeListener |
| Field Detail |
public static final ChangeType ANNOTATIONS
public static final String PROPERTY_ANNOTATIONSERVER
public static final String PROPERTY_FEATUREID
public static final String PROPERTY_FEATURELABEL
public static final String PROPERTY_LINKS
public static final String PROPERTY_SEQUENCEVERSION
public static final int SIZE_THRESHOLD
protected transient ChangeForwarder annotationForwarder
| Method Detail |
public DASSequenceDB getParentDB()
getParentDB in interface org.biojava.bio.program.das.DASSequenceIpublic Set dataSourceURLs()
public void addAnnotationSource(URL dataSourceURL)
throws BioException,
ChangeVetoException
BioException
ChangeVetoExceptionprotected ChangeSupport getChangeSupport(ChangeType ct)
AbstractChangeable
Your implementation of this method should have the following structure:
It is usual for the forwarding listeners (someForwarder in this example) to
be transient and lazily instantiated. Be sure to register & unregister the
forwarder in the code that does the ChangeEvent handling in setter methods.
ChangeSupport cs = super.getChangeSupport(ct);
if(someForwarder == null && ct.isMatching(SomeInterface.SomeChangeType)) {
someForwarder = new ChangeForwarder(...
this.stateVariable.addChangeListener(someForwarder, VariableInterface.AChange);
}
return cs;
getChangeSupport in class AbstractChangeable
public void removeAnnotationSource(URL dataSourceURL)
throws ChangeVetoException,
BioException
ChangeVetoException
BioExceptionpublic Alphabet getAlphabet()
SymbolList
Every symbol within this SymbolList is a member of this alphabet.
alphabet.contains(symbol) == true
for each symbol that is within this sequence.
getAlphabet in interface SymbolListpublic Iterator iterator()
SymbolListThis is an ordered iterator over the Symbols. It cannot be used to edit the underlying symbols.
iterator in interface SymbolListpublic int length()
SymbolList
length in interface SymbolListpublic String seqString()
SymbolListIt 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.
seqString in interface SymbolList
public String subStr(int start,
int end)
SymbolListThis should use the same rules as seqString.
subStr in interface SymbolListstart - the first symbol to includeend - the last symbol to include
public SymbolList subList(int start,
int end)
SymbolListThe resulting SymbolList will count from 1 to (end-start + 1) inclusive, and refer to the symbols start to end of the original sequence.
subList in interface SymbolListstart - the first symbol of the new SymbolListend - the last symbol (inclusive) of the new SymbolListpublic Symbol symbolAt(int pos)
SymbolList
symbolAt in interface SymbolListpos - the offset into this SymbolList
public List toList()
SymbolListThis is an immutable list of symbols. Do not edit it.
toList in interface SymbolList
public void edit(Edit e)
throws ChangeVetoException
SymbolListAll 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 in interface SymbolListe - the Edit to perform
ChangeVetoException - if either the SymboList does not support the
edit, or if the change was vetoed
protected SymbolList getSymbols()
throws BioException
BioExceptionpublic String getName()
SequenceThe name may contain spaces or odd characters.
getName in interface Sequencepublic String getURN()
Sequenceurn:sequence/embl:AL121903It may also be a URL identifying a specific resource, either locally or over the network
file:///home/thomas/myseq.fa|seq22 http://www.mysequences.net/chr22.seq
getURN in interface Sequencepublic Iterator features()
FeatureHolder
features in interface FeatureHolderpublic boolean containsFeature(Feature f)
FeatureHolder
containsFeature in interface FeatureHolderf - the Feature to check
public FeatureHolder filter(FeatureFilter ff)
FeatureHolderFeatureFilter.
filter in interface FeatureHolderff - the FeatureFilter to apply.
filter.
public FeatureHolder filter(FeatureFilter ff,
boolean recurse)
FeatureHolder
filter in interface FeatureHolderff - the FeatureFilter to applyrecurse - true if all features-of-features should be scanned, and a
single flat collection of features returned, or false if
just immediate children should be filtered.public FeatureFilter getSchema()
FeatureHolderFeatureHolder. This is a filter
which all Features immediately contained by this FeatureHolder
will match. It need not directly match their child features, but it can (and should!) provide
information about them using FeatureFilter.OnlyChildren filters. In cases where there
is no feature hierarchy, this can be indicated by including FeatureFilter.leaf in
the schema filter.
For the truly non-informative case, it is possible to return FeatureFilter.all. However,
it is almost always possible to provide slightly more information that this. For example, Sequence
objects should, at a minimum, return FeatureFilter.top_level. Feature objects
should, as a minimum, return FeatureFilter.ByParent(new FeatureFilter.ByFeature(this)).
getSchema in interface FeatureHolderpublic int countFeatures()
FeatureHolder
countFeatures in interface FeatureHolder
public Feature createFeature(Feature.Template temp)
throws ChangeVetoException
FeatureHolder
createFeature in interface FeatureHolderChangeVetoException - if this FeatureHolder does not support
creation of new features, or if the change was vetoed
public void removeFeature(Feature f)
throws ChangeVetoException
FeatureHolder
removeFeature in interface FeatureHolderChangeVetoException - if this FeatureHolder does not support
feature removal or if the change was vetoed
public Feature realizeFeature(FeatureHolder dest,
Feature.Template temp)
throws BioException
RealizingFeatureHoldercreateFeature method of either
this FeatureHolder or one of our child Features.
realizeFeature in interface RealizingFeatureHolderBioExceptionpublic Annotation getAnnotation()
Annotatable
getAnnotation in interface Annotatable
|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||