Class FlexibleAlignment
- java.lang.Object
 - 
- org.biojava.utils.AbstractChangeable
 - 
- org.biojava.bio.symbol.AbstractSymbolList
 - 
- org.biojava.bio.alignment.AbstractULAlignment
 - 
- org.biojava.bio.alignment.FlexibleAlignment
 
 
 
 
 
- 
- All Implemented Interfaces:
 Alignment,ARAlignment,EditableAlignment,UnequalLengthAlignment,SymbolList,Changeable
public class FlexibleAlignment extends AbstractULAlignment implements ARAlignment, EditableAlignment
FlexibleAlignment is a class which implements UnequalLengthAlignment, ARAlignment and EditableAlignment It places no restriction on where any sequence can be in the alignment so there could be gaps in the alignment. You tell it where to put the sequence, it will do it. I think I will be adding an Exception NonContinuousAlignmentException. STILL UNDER CONSTRUCTION. seqString does not work because there it does not seem to support tokenization 'token' this is true for SimpleAlignment too.
- Author:
 - David Waring, Matthew Pocock
 
 
- 
- 
Nested Class Summary
- 
Nested classes/interfaces inherited from class org.biojava.bio.alignment.AbstractULAlignment
AbstractULAlignment.LeftRightLocationComparator<T>, AbstractULAlignment.SubULAlignment 
- 
Nested classes/interfaces inherited from class org.biojava.bio.symbol.AbstractSymbolList
AbstractSymbolList.EditScreener, AbstractSymbolList.EditTranslater 
- 
Nested classes/interfaces inherited from interface org.biojava.bio.alignment.Alignment
Alignment.SymbolListIterator 
 - 
 
- 
Field Summary
Fields Modifier and Type Field Description protected LocationalignmentRangeprotected Map<Object,AlignmentElement>dataprotected List<String>labelOrder- 
Fields inherited from class org.biojava.bio.alignment.AbstractULAlignment
alphabet 
- 
Fields inherited from interface org.biojava.bio.alignment.ARAlignment
ADD_LABEL, REMOVE_LABEL 
- 
Fields inherited from interface org.biojava.bio.alignment.EditableAlignment
GAPS, LOCATION 
- 
Fields inherited from interface org.biojava.bio.symbol.SymbolList
EDIT, EMPTY_LIST 
 - 
 
- 
Constructor Summary
Constructors Constructor Description FlexibleAlignment(List<AlignmentElement> seqList)construct this object with the reference sequence which can either be a gappedSymbolList or not label in all cases refers to an object that holds the display name (generally just a String). since more than one sequence in an alignment could have the same name this works as long as the labels are different objects even though they may hold the same name. 
- 
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddSequence(AlignmentElement ae)add a new a alignment usings a location to the reference sequence.protected booleanallGaps(SymbolList seq, int start, int end)make sure that all Symbols in this range are gapsvoidedit(Object label, Edit edit)edit() allows edits on an individual sequence, they should be reflected back to the underlying SymbolList.protected AlignmentElementgetAE(Object label)AlphabetgetAlphabet()The alphabet that this SymbolList is over.List<String>getLabels()getLabels will return a list of labels in left to right orderList<Object>getLabelsAt(int column)protected intgreater(int x, int y)intlength()The number of symbols in this SymbolList.protected intlesser(int x, int y)LocationlocInAlignment(Object label)The location of an individual SymbolList relative to overall Alignmentprotected LocationlocInSeq(Object label, Location viewLoc)protected intposInSeq(Object label, int column)get the position in the sequence corresponding to the postion within the alignmentvoidremoveGaps(GappedSymbolList seq, int start, int length)because there is a bug in GappedSymbolListvoidremoveSequence(Object label)protected voidresetRange()check that begining is at 1 otherwise shift everything overprotected voidshift(Object label, int offset)moves the whole sequenceprotected voidshiftAll(int offset)voidshiftAtAlignmentLoc(Object label, Location loc, int offset)loc in this case is the Alignment LocationvoidshiftAtSequenceLoc(Object label, Location loc, int offset)loc in this case is the SymbolList LocationSymbolsymbolAt(String label, int column)This gets the symbol for an individual sequence at position in the overall alignment If the sequence is not aligned at that location it returns nullSymbolListsymbolListForLabel(String label)Retrieve a single row of the alignment by label.- 
Methods inherited from class org.biojava.bio.alignment.AbstractULAlignment
debug, labelsAt, labelsInRange, leftMost, orderedLables, rightMost, subAlignment, subAlignment, symbolAt, symbolListIterator 
- 
Methods inherited from class org.biojava.bio.symbol.AbstractSymbolList
edit, equals, hashCode, iterator, seqString, subList, subStr, toList, toString 
- 
Methods inherited from class org.biojava.utils.AbstractChangeable
addChangeListener, addChangeListener, generateChangeSupport, getChangeSupport, hasListeners, hasListeners, isUnchanging, removeChangeListener, removeChangeListener 
- 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait 
- 
Methods inherited from interface org.biojava.bio.alignment.Alignment
subAlignment, symbolListIterator 
- 
Methods inherited from interface org.biojava.utils.Changeable
addChangeListener, addChangeListener, isUnchanging, removeChangeListener, removeChangeListener 
 - 
 
 - 
 
- 
- 
Field Detail
- 
data
protected Map<Object,AlignmentElement> data
 
- 
labelOrder
protected List<String> labelOrder
 
- 
alignmentRange
protected Location alignmentRange
 
 - 
 
- 
Constructor Detail
- 
FlexibleAlignment
public FlexibleAlignment(List<AlignmentElement> seqList) throws BioException
construct this object with the reference sequence which can either be a gappedSymbolList or not label in all cases refers to an object that holds the display name (generally just a String). since more than one sequence in an alignment could have the same name this works as long as the labels are different objects even though they may hold the same name.- Throws:
 BioException
 
 - 
 
- 
Method Detail
- 
addSequence
public void addSequence(AlignmentElement ae) throws ChangeVetoException, BioException
add a new a alignment usings a location to the reference sequence. This should either contain no gaps or it should be relative to a reference sequence that already has the gaps added- Specified by:
 addSequencein interfaceARAlignment- Throws:
 ChangeVetoExceptionBioException
 
- 
removeSequence
public void removeSequence(Object label) throws ChangeVetoException
- Specified by:
 removeSequencein interfaceARAlignment- Throws:
 ChangeVetoException
 
- 
locInAlignment
public Location locInAlignment(Object label) throws NoSuchElementException
The location of an individual SymbolList relative to overall Alignment- Specified by:
 locInAlignmentin interfaceUnequalLengthAlignment- Throws:
 NoSuchElementException
 
- 
getLabelsAt
public List<Object> getLabelsAt(int column) throws IndexOutOfBoundsException
- Throws:
 IndexOutOfBoundsException
 
- 
length
public int length()
Description copied from interface:SymbolListThe number of symbols in this SymbolList.- Specified by:
 lengthin interfaceSymbolList- Returns:
 - the length
 
 
- 
getAlphabet
public Alphabet getAlphabet()
Description copied from interface:SymbolListThe alphabet that this SymbolList is over.Every symbol within this SymbolList is a member of this alphabet.
alphabet.contains(symbol) == truefor each symbol that is within this sequence.- Specified by:
 getAlphabetin interfaceSymbolList- Returns:
 - the alphabet
 
 
- 
getLabels
public List<String> getLabels()
getLabels will return a list of labels in left to right order 
- 
symbolAt
public Symbol symbolAt(String label, int column) throws NoSuchElementException, IndexOutOfBoundsException
This gets the symbol for an individual sequence at position in the overall alignment If the sequence is not aligned at that location it returns null- Specified by:
 symbolAtin interfaceAlignment- Parameters:
 label- the SymbolList to retrieve fromcolumn- the index of the column to retrieve- Returns:
 - the symbol in the symbol list associated with the label at the given column
 - Throws:
 NoSuchElementException- if there is no row for 'label'IndexOutOfBoundsException
 
- 
symbolListForLabel
public SymbolList symbolListForLabel(String label) throws NoSuchElementException
Description copied from interface:AlignmentRetrieve a single row of the alignment by label.- Specified by:
 symbolListForLabelin interfaceAlignment- Parameters:
 label-- Returns:
 - Throws:
 NoSuchElementException
 
- 
edit
public void edit(Object label, Edit edit) throws ChangeVetoException
Description copied from interface:EditableAlignmentedit() allows edits on an individual sequence, they should be reflected back to the underlying SymbolList.
- Specified by:
 editin interfaceEditableAlignment- Throws:
 ChangeVetoException
 
- 
shiftAtAlignmentLoc
public void shiftAtAlignmentLoc(Object label, Location loc, int offset) throws ChangeVetoException, IllegalAlignmentEditException, IndexOutOfBoundsException
loc in this case is the Alignment Location- Specified by:
 shiftAtAlignmentLocin interfaceEditableAlignment- Throws:
 ChangeVetoExceptionIllegalAlignmentEditExceptionIndexOutOfBoundsException
 
- 
shiftAtSequenceLoc
public void shiftAtSequenceLoc(Object label, Location loc, int offset) throws ChangeVetoException, IllegalAlignmentEditException, IndexOutOfBoundsException
loc in this case is the SymbolList Location- Specified by:
 shiftAtSequenceLocin interfaceEditableAlignment- Throws:
 ChangeVetoExceptionIllegalAlignmentEditExceptionIndexOutOfBoundsException
 
- 
removeGaps
public void removeGaps(GappedSymbolList seq, int start, int length)
because there is a bug in GappedSymbolList 
- 
allGaps
protected boolean allGaps(SymbolList seq, int start, int end)
make sure that all Symbols in this range are gaps 
- 
resetRange
protected void resetRange() throws ChangeVetoException
check that begining is at 1 otherwise shift everything over- Throws:
 ChangeVetoException
 
- 
shiftAll
protected void shiftAll(int offset) throws ChangeVetoException
- Throws:
 ChangeVetoException
 
- 
shift
protected void shift(Object label, int offset) throws ChangeVetoException
moves the whole sequence- Throws:
 ChangeVetoException
 
- 
greater
protected int greater(int x, int y)
 
- 
lesser
protected int lesser(int x, int y)
 
- 
getAE
protected AlignmentElement getAE(Object label) throws NoSuchElementException
- Throws:
 NoSuchElementException
 
- 
posInSeq
protected int posInSeq(Object label, int column) throws NoSuchElementException, IndexOutOfBoundsException
get the position in the sequence corresponding to the postion within the alignment 
- 
locInSeq
protected Location locInSeq(Object label, Location viewLoc) throws NoSuchElementException, IndexOutOfBoundsException
 
 - 
 
 -