org.biojava3.core.sequence.storage
Class BitSequenceReader<C extends Compound>

java.lang.Object
  extended by org.biojava3.core.sequence.storage.BitSequenceReader<C>
Type Parameters:
C - Type of compound; must extend NucleotideCompound
All Implemented Interfaces:
Iterable<C>, Accessioned, ProxySequenceReader<C>, Sequence<C>, SequenceReader<C>
Direct Known Subclasses:
FourBitSequenceReader, TwoBitSequenceReader

public class BitSequenceReader<C extends Compound>
extends Object
implements ProxySequenceReader<C>

An implementation of the popular bit encodings. This class provides the Sequence view over what is actually carried out in the BitSequenceReader.BitArrayWorker instances. These are the objects that carry out array storage as well as indexing into those arrays. New bit encodings can be written by extending this class and a worker class. There are a number of issues with this type of storage engine:

Author:
ayates

Nested Class Summary
static class BitSequenceReader.BitArrayWorker<C extends Compound>
          The logic of working with a bit has been separated out into this class to help developers create the bit data structures without having to put the code into an intermediate format and to also use the format without the need to copy this code.
 
Constructor Summary
BitSequenceReader(BitSequenceReader.BitArrayWorker<C> worker, AccessionID accession)
          Instance which allows you to supply a different @{BitArrayWorker} object.
 
Method Summary
 int countCompounds(C... compounds)
          Counts the number of times a compound appears in this sequence store
 boolean equals(Object o)
           
 AccessionID getAccession()
          Returns the AccessionID this location is currently bound with
 List<C> getAsList()
          Returns this Sequence store as a List
 C getCompoundAt(int position)
          Returns the compound at the specified biological index
 CompoundSet<C> getCompoundSet()
          Returns the compound set backing this store
 int getIndexOf(C compound)
          Returns the first occurrence of the given compound in this store; performs a linear search
 SequenceView<C> getInverse()
          Does the right thing to get the inverse of the current Sequence.
 int getLastIndexOf(C compound)
          Returns the last occurrence of the given compound in this store; performs a linear search
 int getLength()
          Returns the length of the sequence
 String getSequenceAsString()
          Returns the sequence as a String
 SequenceView<C> getSubSequence(Integer start, Integer end)
          Returns a portion of the sequence from the different positions.
 SequenceView<C> getSubSequence(int start, int end)
          Returns a sub sequence view
 int hashCode()
           
 Iterator<C> iterator()
          Provides basic iterable access to this class
 void setCompoundSet(CompoundSet<C> compoundSet)
          Class is immutable & so this is unsupported
 void setContents(String sequence)
          Class is immutable & so this is unsupported
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BitSequenceReader

public BitSequenceReader(BitSequenceReader.BitArrayWorker<C> worker,
                         AccessionID accession)
Instance which allows you to supply a different @{BitArrayWorker} object.

Method Detail

setCompoundSet

public void setCompoundSet(CompoundSet<C> compoundSet)
Class is immutable & so this is unsupported

Specified by:
setCompoundSet in interface SequenceReader<C extends Compound>

setContents

public void setContents(String sequence)
Class is immutable & so this is unsupported

Specified by:
setContents in interface SequenceReader<C extends Compound>

countCompounds

public int countCompounds(C... compounds)
Counts the number of times a compound appears in this sequence store

Specified by:
countCompounds in interface Sequence<C extends Compound>
Parameters:
compounds - Vargs of the compounds to count
Returns:
Number of times a compound was found

getAccession

public AccessionID getAccession()
Description copied from interface: Accessioned
Returns the AccessionID this location is currently bound with

Specified by:
getAccession in interface Accessioned

getAsList

public List<C> getAsList()
Returns this Sequence store as a List

Specified by:
getAsList in interface Sequence<C extends Compound>

getCompoundAt

public C getCompoundAt(int position)
Returns the compound at the specified biological index

Specified by:
getCompoundAt in interface Sequence<C extends Compound>
Parameters:
position - Biological index (1 to n)
Returns:
Compound at the specified position

getCompoundSet

public CompoundSet<C> getCompoundSet()
Returns the compound set backing this store

Specified by:
getCompoundSet in interface Sequence<C extends Compound>

getIndexOf

public int getIndexOf(C compound)
Returns the first occurrence of the given compound in this store; performs a linear search

Specified by:
getIndexOf in interface Sequence<C extends Compound>
Parameters:
compound - Compounds to look for
Returns:
Index of the first position of the compound in the sequence (1 to n)

getLastIndexOf

public int getLastIndexOf(C compound)
Returns the last occurrence of the given compound in this store; performs a linear search

Specified by:
getLastIndexOf in interface Sequence<C extends Compound>
Parameters:
compound - Compounds to look for
Returns:
Index of the last position of the compound in the sequence (1 to n)

getLength

public int getLength()
Returns the length of the sequence

Specified by:
getLength in interface Sequence<C extends Compound>

getSequenceAsString

public String getSequenceAsString()
Returns the sequence as a String

Specified by:
getSequenceAsString in interface Sequence<C extends Compound>

getSubSequence

public SequenceView<C> getSubSequence(int start,
                                      int end)
Returns a sub sequence view


iterator

public Iterator<C> iterator()
Provides basic iterable access to this class

Specified by:
iterator in interface Iterable<C extends Compound>

getSubSequence

public SequenceView<C> getSubSequence(Integer start,
                                      Integer end)
Description copied from interface: Sequence
Returns a portion of the sequence from the different positions. This is indexed from 1

Specified by:
getSubSequence in interface Sequence<C extends Compound>
Parameters:
start - Biological index start; must be greater than 0
end - Biological end; must be less than length + 1
Returns:
A SequenceView of the offset

getInverse

public SequenceView<C> getInverse()
Description copied from interface: Sequence
Does the right thing to get the inverse of the current Sequence. This means either reversing the Sequence and optionally complementing the Sequence.

Specified by:
getInverse in interface Sequence<C extends Compound>

hashCode

public int hashCode()
Overrides:
hashCode in class Object

equals

public boolean equals(Object o)
Overrides:
equals in class Object