public class SubSequence extends Object implements Sequence, Serializable
All features entirely contained within the region are projected by just translating their locations. The features that overlap the region are replaced by RemoteFeature instances with fuzzy locations that are trunchated to fit inside the sub-section. All features not contained by the region are not projected.
| Modifier and Type | Class and Description | 
|---|---|
| static class  | SubSequence.SubProjectedFeatureContextTargetContext that implements the mapping between the parent sequence and this
 sub-sequence. | 
FeatureHolder.EmptyFeatureHolderAnnotatable.AnnotationForwarder| Modifier and Type | Field and Description | 
|---|---|
| protected ChangeForwarder | annotationForwarder | 
EDIT, EMPTY_LISTEMPTY_FEATURE_HOLDER, FEATURES, SCHEMAANNOTATION| Constructor and Description | 
|---|
| SubSequence(Sequence seq,
           int start,
           int end)Construct a new SubSequence of the specified sequence. | 
| SubSequence(Sequence seq,
           int start,
           int end,
           String name)Construct a new SubSequence of the specified sequence. | 
| Modifier and Type | Method and Description | 
|---|---|
| void | addChangeListener(ChangeListener cl)Add a listener that will be informed of all changes. | 
| void | addChangeListener(ChangeListener cl,
                 ChangeType ct)Add a listener that will be informed of changes of a given type. | 
| 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 templ)Create a new Feature, and add it to this FeatureHolder. | 
| void | edit(Edit edit)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. | 
| int | getEnd() | 
| protected ProjectedFeatureHolder | getFeatures() | 
| String | getName()The name of this sequence. | 
| FeatureFilter | getSchema()Return a schema-filter for this  FeatureHolder. | 
| Sequence | getSequence()Return the parent sequence of which this is a partial view | 
| int | getStart() | 
| String | getURN()A Uniform
 Resource Identifier (URI) which identifies the sequence
 represented by this object. | 
| boolean | isUnchanging(ChangeType ct)
 A particular ChangeType can never be raised by this Changeable. | 
| Iterator | iterator()An Iterator over all Symbols in this SymbolList. | 
| int | length()The number of symbols in this SymbolList. | 
| void | removeChangeListener(ChangeListener cl)Remove a listener that was interested in all types of changes. | 
| void | removeChangeListener(ChangeListener cl,
                    ChangeType ct)Remove a listener that was interested in a specific types of changes. | 
| 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. | 
protected transient ChangeForwarder annotationForwarder
public SubSequence(Sequence seq, int start, int end, String name)
seq - A sequence to viewstart - The start of the range to viewend - The end of the range to viewname - Name for the subsequenceIndexOutOfBoundsException - is the start or end position is illegal.public SubSequence(Sequence seq, int start, int end)
seq - A sequence to viewstart - The start of the range to viewend - The end of the range to viewIndexOutOfBoundsException - if the start or end position is illegal.public Symbol symbolAt(int pos)
SymbolListsymbolAt in interface SymbolListpos - the offset into this SymbolListpublic 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 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 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 SymbolListpublic 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 includepublic List toList()
SymbolListThis is an immutable list of symbols. Do not edit it.
toList in interface SymbolListpublic int length()
SymbolListlength 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 void edit(Edit edit) 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 SymbolListedit - the Edit to performChangeVetoException - if either the SymboList does not support the
         edit, or if the change was vetoedpublic int countFeatures()
FeatureHoldercountFeatures in interface FeatureHolderpublic Iterator features()
FeatureHolderfeatures in interface FeatureHolderpublic FeatureHolder filter(FeatureFilter ff, boolean recurse)
FeatureHolderfilter 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 FeatureHolder filter(FeatureFilter ff)
FeatureHolderFeatureFilter.filter in interface FeatureHolderff - the FeatureFilter to apply.filter.public boolean containsFeature(Feature f)
FeatureHoldercontainsFeature in interface FeatureHolderf - the Feature to checkpublic Feature createFeature(Feature.Template templ) throws BioException, ChangeVetoException
FeatureHoldercreateFeature in interface FeatureHolderBioException - if something went wrong during creating the featureChangeVetoException - if this FeatureHolder does not support
         creation of new features, or if the change was vetoedpublic void removeFeature(Feature f) throws ChangeVetoException, BioException
FeatureHolderremoveFeature in interface FeatureHolderChangeVetoException - if this FeatureHolder does not support
         feature removal or if the change was vetoedBioException - if there was an error removing the featurepublic 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 FeatureHolderprotected ProjectedFeatureHolder getFeatures()
public String getName()
SequenceThe name may contain spaces or odd characters.
public 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
public Annotation getAnnotation()
AnnotatablegetAnnotation in interface Annotatablepublic Sequence getSequence()
public int getStart()
public int getEnd()
public void addChangeListener(ChangeListener cl, ChangeType ct)
ChangeableaddChangeListener in interface Changeablecl - the ChangeListenerct - the ChangeType it is to be informed ofpublic void addChangeListener(ChangeListener cl)
ChangeableaddChangeListener in interface Changeablecl - the ChangeListener to addpublic void removeChangeListener(ChangeListener cl, ChangeType ct)
ChangeableremoveChangeListener in interface Changeablecl - a ChangeListener to removect - the ChangeType that it was interested inpublic void removeChangeListener(ChangeListener cl)
ChangeableremoveChangeListener in interface Changeablecl - a ChangeListener to removepublic boolean isUnchanging(ChangeType ct)
ChangeableA particular ChangeType can never be raised by this Changeable.
If this returns true, then it is guaranteed that change events of this type (and all child types) can never under any circumstances be fired by this Changeable instance. If it returns false, that does not mean that this type of event will or even can be raised, but that it is worth registering listeners incase.
isUnchanging in interface Changeablect - the ChangeType to checkCopyright © 2020 BioJava. All rights reserved.