org.biojava.bio.seq.io
Class StreamReader

java.lang.Object
  extended byorg.biojava.bio.seq.io.StreamReader
All Implemented Interfaces:
java.util.EventListener, ParseErrorListener, SequenceIterator

public class StreamReader
extends java.lang.Object
implements SequenceIterator, ParseErrorListener

Parses a stream into sequences.

This object implements SequenceIterator, so you can loop over each sequence produced. It consumes a stream, and uses a SequenceFormat to extract each sequence from the stream.

It is assumed that the stream contains sequences that can be handled by the one format, and that they are not seperated other than by delimiters that the format can handle.

Sequences are instantiated when they are requested by nextSequence, not before, so it is safe to use this object to parse a gigabyte fasta file, and do sequence-by-sequence processing, while being guaranteed that StreamReader will not require you to keep any of the sequences in memory.

Author:
Matthew Pocock, Thomas Down

Constructor Summary
StreamReader(java.io.BufferedReader reader, SequenceFormat format, SymbolTokenization symParser, SequenceBuilderFactory sf)
           
StreamReader(java.io.InputStream is, SequenceFormat format, SymbolTokenization symParser, SequenceBuilderFactory sf)
           
 
Method Summary
 void BadLineParsed(ParseErrorEvent theEvent)
          This method determines the behaviour when a bad line is processed.
 boolean hasNext()
          Returns whether there are more sequences to iterate over.
 Sequence nextSequence()
          Pull the next sequence out of the stream.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

StreamReader

public StreamReader(java.io.InputStream is,
                    SequenceFormat format,
                    SymbolTokenization symParser,
                    SequenceBuilderFactory sf)

StreamReader

public StreamReader(java.io.BufferedReader reader,
                    SequenceFormat format,
                    SymbolTokenization symParser,
                    SequenceBuilderFactory sf)
Method Detail

nextSequence

public Sequence nextSequence()
                      throws java.util.NoSuchElementException,
                             BioException
Pull the next sequence out of the stream.

This method will delegate parsing from the stream to a SequenceFormat object, and then return the resulting sequence.

Specified by:
nextSequence in interface SequenceIterator
Returns:
the next Sequence
Throws:
java.util.NoSuchElementException - if the end of the stream has been hit
BioException - if for any reason the next sequence could not be read

hasNext

public boolean hasNext()
Description copied from interface: SequenceIterator
Returns whether there are more sequences to iterate over.

Specified by:
hasNext in interface SequenceIterator
Returns:
true if there are more sequences to get and false otherwise

BadLineParsed

public void BadLineParsed(ParseErrorEvent theEvent)
This method determines the behaviour when a bad line is processed. Some options are to log the error, throw an exception, ignore it completely, or pass the event through.

This method should be overwritten when different behavior is desired.

Specified by:
BadLineParsed in interface ParseErrorListener
Parameters:
theEvent - The event that contains the bad line and token.