org.biojava.bio.seq.impl
Class RevCompSequence

java.lang.Object
  extended by org.biojava.utils.AbstractChangeable
      extended by org.biojava.bio.seq.impl.SimpleSequence
          extended by org.biojava.bio.seq.impl.RevCompSequence
All Implemented Interfaces:
Serializable, Annotatable, FeatureHolder, RealizingFeatureHolder, Sequence, SymbolList, Changeable

public class RevCompSequence
extends SimpleSequence

A reverse complement view onto Sequence interface.

All features of the underlying sequence are reflected onto the RevCompSequence using a ProjectedFeatureHolder

calling createFeature() on a RevCompSequence creates a feature on the underlying sequence. Non-Stranded features will return the reverse compemented view of the sequence when getSymbols() is called that is to say if you get what you expect as if your RevCompSequence was a regular Sequence.

Author:
David Waring, Thomas Down
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from interface org.biojava.bio.Annotatable
Annotatable.AnnotationForwarder
 
Nested classes/interfaces inherited from interface org.biojava.bio.seq.FeatureHolder
FeatureHolder.EmptyFeatureHolder
 
Field Summary
protected  Sequence origSeq
           
 
Fields inherited from interface org.biojava.bio.symbol.SymbolList
EDIT, EMPTY_LIST
 
Fields inherited from interface org.biojava.bio.Annotatable
ANNOTATION
 
Fields inherited from interface org.biojava.bio.seq.FeatureHolder
EMPTY_FEATURE_HOLDER, FEATURES, SCHEMA
 
Constructor Summary
RevCompSequence(Sequence seq)
          URN, Name and Annotation are copied as is from the original Sequence, unless you use the the other contructor that sets these.
RevCompSequence(Sequence seq, String urn, String name, Annotation annotation)
           
 
Method Summary
 Object clone()
          clone() should make a complete copy of the Sequence with all features (and children) and return a SimpleSequence that is unconnected from the original sequence.
 boolean containsFeature(Feature f)
          containsFeature() will return true if this seq contains the feature in question, or if if the original (non reverse complement) sequence contains the feature;
 int countFeatures()
          Count how many features are contained.
 Feature createFeature(Feature.Template ft)
          createFeature() will call createFeature() on the underlying Sequence.
 void edit(Edit e)
          edit() will try to edit the underlying Sequence.
 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.
 Feature getFeatureFromOriginal(Feature f)
          getFeatureFromOriginal() Since you can not create a feature on a projectedFeature at this time, I am including this method so that you can get the corresponding feature from the original sequence.
 void removeFeature(Feature f)
          Remove a feature attached to this sequence.
 
Methods inherited from class org.biojava.bio.seq.impl.SimpleSequence
createFeature, featureHolderAllocated, getAlphabet, getAnnotation, getChangeSupport, getFeatureHolder, getName, getSchema, getURN, iterator, length, realizeFeature, seqString, setName, setURN, subList, subStr, symbolAt, toList, toString
 
Methods inherited from class org.biojava.utils.AbstractChangeable
addChangeListener, addChangeListener, generateChangeSupport, hasListeners, hasListeners, isUnchanging, removeChangeListener, removeChangeListener
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.biojava.utils.Changeable
addChangeListener, addChangeListener, isUnchanging, removeChangeListener, removeChangeListener
 

Field Detail

origSeq

protected Sequence origSeq
Constructor Detail

RevCompSequence

public RevCompSequence(Sequence seq)
                throws IllegalAlphabetException
URN, Name and Annotation are copied as is from the original Sequence, unless you use the the other contructor that sets these.

Throws:
IllegalAlphabetException

RevCompSequence

public RevCompSequence(Sequence seq,
                       String urn,
                       String name,
                       Annotation annotation)
                throws IllegalAlphabetException
Throws:
IllegalAlphabetException
Method Detail

edit

public void edit(Edit e)
          throws ChangeVetoException,
                 IndexOutOfBoundsException
edit() will try to edit the underlying Sequence. So if it is editable this will be too

Since I have not seen and editable Sequence I have not tested this

Specified by:
edit in interface SymbolList
Overrides:
edit in class SimpleSequence
Parameters:
e - the Edit to perform
Throws:
ChangeVetoException - if either the SymboList does not support the edit, or if the change was vetoed
IndexOutOfBoundsException - if the edit does not lie within the SymbolList

features

public Iterator features()
Description copied from interface: FeatureHolder
Iterate over the features in no well defined order.

Specified by:
features in interface FeatureHolder
Overrides:
features in class SimpleSequence
Returns:
an Iterator

countFeatures

public int countFeatures()
Description copied from interface: FeatureHolder
Count how many features are contained.

Specified by:
countFeatures in interface FeatureHolder
Overrides:
countFeatures in class SimpleSequence
Returns:
a positive integer or zero, equal to the number of features contained

filter

public FeatureHolder filter(FeatureFilter ff)
Description copied from interface: FeatureHolder
Query this set of features using a supplied FeatureFilter.

Specified by:
filter in interface FeatureHolder
Overrides:
filter in class SimpleSequence
Parameters:
ff - the FeatureFilter to apply.
Returns:
all features in this container which match filter.

filter

public FeatureHolder filter(FeatureFilter ff,
                            boolean recurse)
Description copied from interface: FeatureHolder
Return a new FeatureHolder that contains all of the children of this one that passed the filter fc. This method is scheduled for deprecation. Use the 1-arg filter instead.

Specified by:
filter in interface FeatureHolder
Overrides:
filter in class SimpleSequence
Parameters:
ff - the FeatureFilter to apply
recurse - 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.

containsFeature

public boolean containsFeature(Feature f)
containsFeature() will return true if this seq contains the feature in question, or if if the original (non reverse complement) sequence contains the feature;

Specified by:
containsFeature in interface FeatureHolder
Overrides:
containsFeature in class SimpleSequence
Parameters:
f - the Feature to check
Returns:
true if f is in this set

removeFeature

public void removeFeature(Feature f)
                   throws ChangeVetoException,
                          BioException
Description copied from class: SimpleSequence
Remove a feature attached to this sequence.

Specified by:
removeFeature in interface FeatureHolder
Overrides:
removeFeature in class SimpleSequence
Throws:
ChangeVetoException - if this FeatureHolder does not support feature removal or if the change was vetoed
BioException - if there was an error removing the feature

createFeature

public Feature createFeature(Feature.Template ft)
                      throws ChangeVetoException,
                             BioException
createFeature() will call createFeature() on the underlying Sequence. returns the feature as it will be projected onto the reverse complement sequence not the actual feature that was created.

Specified by:
createFeature in interface FeatureHolder
Overrides:
createFeature in class SimpleSequence
Throws:
ChangeVetoException - if this FeatureHolder does not support creation of new features, or if the change was vetoed
BioException - if something went wrong during creating the feature

getFeatureFromOriginal

public Feature getFeatureFromOriginal(Feature f)
getFeatureFromOriginal() Since you can not create a feature on a projectedFeature at this time, I am including this method so that you can get the corresponding feature from the original sequence. (which is not projected) and do something with that such as createFeature().


clone

public Object clone()
clone() should make a complete copy of the Sequence with all features (and children) and return a SimpleSequence that is unconnected from the original sequence.

Overrides:
clone in class Object