Class BlastLikeSAXParser
- java.lang.Object
-
- org.biojava.bio.program.sax.BlastLikeSAXParser
-
- All Implemented Interfaces:
org.xml.sax.XMLReader
public class BlastLikeSAXParser extends java.lang.ObjectA facade class allowing for direct SAX2-like parsing of the native output from Blast-like bioinformatics software. Because the parser is SAX2 compliant, application writers can simply pass XML ContentHandlers to the parser in order to receive notifcation of SAX2 events.The SAX2 events produced are as if the input to the parser was an XML file validating against the biojava BlastLikeDataSetCollection DTD. There is no requirement for an intermediate conversion of native output to XML format. An application of the parsing framework, however, is to create XML format files from native output files.
The biojava Blast-like parsing framework is designed to uses minimal memory,so that in principle, extremely large native outputs can be parsed and XML ContentHandlers can listen only for small amounts of information.
The framework currently supports parsing of native output from the following bioinformatics programs. Please note that if you are using different versions of NCBI or WU Blast to those listed below, it is worth considering trying setting the parsing mode to Lazy, which means parsing will be attempted if the program is recognised, regardless of version.
- NCBI Blast version 2.0.11
- NCBI Blast version 2.2.2
- NCBI Blast version 2.2.3
- WU-Blast version 2.0a19mp-washu
- HMMER 2.1.1 hmmsearch
- Support for HMMER hmmpfam almost there but not fully tested
Notes to SAX driver writers
The framework that this parser is built on is designed to be extensible with support for both different pieces of software (i.e. not just software that produces Blast-like output), and multiple versions of programs.
This class inherits from the org.biojava.bio.program.sax.AbstractNativeAppSAXParser abstract base class. The abstract base class is a good place to start looking if you want to write new native application SAX2 parsers. This and releated classes have only package-level visibility. Typically, application writers are expected to provide a facade class in this package (similar to the current class) to allow users access to functionality.
NB Support for InputSource is not complete due to the fact that URLs are not resolved and cannot, therefore, be used as an InputSource. System pathnames, ByteStreams and CharacterStreams, however, are all supported.
Copyright © 2000 Cambridge Antibody Technology.
Primary author -
- Simon Brocklehurst (CAT)
- Tim Dilks (CAT)
- Colin Hardman (CAT)
- Stuart Johnston (CAT)
- Mathieu Wiepert (Mayo Foundation)
- Travis Banks
- Version:
- 1.0
- Author:
- Cambridge Antibody Technology (CAT), Travis Banks
- See Also:
BlastLikeToXMLConverter
-
-
Field Summary
Fields Modifier and Type Field Description protected intiStateprotected java.lang.StringoFullNamespacePrefixprotected org.xml.sax.ContentHandleroHandlerprotected java.lang.StringoNamespacePrefixprotected booleantNamespacePrefixesprotected booleantNamespaces
-
Constructor Summary
Constructors Constructor Description BlastLikeSAXParser()Initialises SAXParser, and sets default namespace prefix to "biojava".
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddPrefixMapping(java.lang.String poPrefix, java.lang.String poURI)Adds a namespace prefix to URI mapping as (key,value) pairs.protected voidchangeState(int piState)Centralise chaining of iState field to help with debugging.protected voidcharacters(char[] ch, int start, int length)Utility method to centralize the sending of a SAX characters message a document handler.protected voidendElement(org.biojava.bio.program.sax.QName poQName)Utility method to centralize the sending of a SAX endElement message a document handler.org.xml.sax.ContentHandlergetContentHandler()Return the content handler.protected java.io.BufferedReadergetContentStream(org.xml.sax.InputSource poSource)Create a stream from an an InputSource, picking the correct stream according to order of precedance.org.xml.sax.DTDHandlergetDTDHandler()Do-nothing implementation of interface methodorg.xml.sax.EntityResolvergetEntityResolver()Do-nothing implementation of interface methodorg.xml.sax.ErrorHandlergetErrorHandler()Do-nothing implementation of interface methodbooleangetFeature(java.lang.String poName)Do-nothing implementation of interface methodjava.lang.StringgetNamespacePrefix()DescribegetNamespacePrefixmethod here.booleangetNamespacePrefixes()Support SAX2 configuration of namespace support of parser.booleangetNamespaces()Support SAX2 configuration of namespace support of parser.java.lang.ObjectgetProperty(java.lang.String name)Do-nothing implementation of interface methodjava.lang.StringgetURIFromPrefix(java.lang.String poPrefix)Gets the URI for a namespace prefix, given that prefix, or null if the prefix is not recognised.voidparse(java.lang.String poSystemId)Full implementation of interface method.voidparse(org.xml.sax.InputSource poSource)parseinitiates the parsing operation.java.lang.Stringprefix(java.lang.String poElementName)Given an unprefixed element name, returns a new element name with a namespace prefixvoidsetContentHandler(org.xml.sax.ContentHandler poHandler)Allow an application to register a content event handler.voidsetDTDHandler(org.xml.sax.DTDHandler handler)Do-nothing implementation of interface methodvoidsetEntityResolver(org.xml.sax.EntityResolver resolver)Do-nothing implementation of interface methodvoidsetErrorHandler(org.xml.sax.ErrorHandler handler)Do-nothing implementation of interface methodvoidsetFeature(java.lang.String poName, boolean value)Handles support for ReasoningDomain and Namespace-prefixesvoidsetModeLazy()Setting the mode to lazy means that, if the program is recognised, e.g.voidsetModeStrict()This is the default, parsing will be attempted only if both the program e.g.voidsetNamespacePrefix(java.lang.String poPrefix)voidsetProperty(java.lang.String name, java.lang.Object value)Do-nothing implementation of interface methodprotected voidstartElement(org.biojava.bio.program.sax.QName poQName, org.xml.sax.Attributes atts)Utility method to centralize sending of a SAX startElement message to document handler
-
-
-
Field Detail
-
oHandler
protected org.xml.sax.ContentHandler oHandler
-
tNamespaces
protected boolean tNamespaces
-
tNamespacePrefixes
protected boolean tNamespacePrefixes
-
oNamespacePrefix
protected java.lang.String oNamespacePrefix
-
oFullNamespacePrefix
protected java.lang.String oFullNamespacePrefix
-
iState
protected int iState
-
-
Method Detail
-
parse
public void parse(org.xml.sax.InputSource poSource) throws java.io.IOException, org.xml.sax.SAXExceptionparseinitiates the parsing operation.- Specified by:
parsein interfaceorg.xml.sax.XMLReader- Parameters:
poSource- anInputSource.- Throws:
java.io.IOException- if an error occurs.org.xml.sax.SAXException- if an error occurs.
-
setModeStrict
public void setModeStrict()
This is the default, parsing will be attempted only if both the program e.g. NCBI BlastP, and a particular version are recognised as bsing supported.
-
setModeLazy
public void setModeLazy()
Setting the mode to lazy means that, if the program is recognised, e.g. WU-TBlastX, then parsing will be attempted even if the particular version is not recognised. Using this option is more likely to result in erroneous parsing than if the strict mode is used.
-
setContentHandler
public void setContentHandler(org.xml.sax.ContentHandler poHandler)
Allow an application to register a content event handler. If the application does not register a content handler, all content events reported by the SAX parser will be silently ignored.Applications may register a new or different handler in the middle of a parse, and the SAX parser must begin using the new handler immediately.
- Specified by:
setContentHandlerin interfaceorg.xml.sax.XMLReader- Parameters:
poHandler- aContentHandlerThe XML content handler- Throws:
java.lang.NullPointerException- If the handler argument is null
-
getContentHandler
public org.xml.sax.ContentHandler getContentHandler()
Return the content handler.- Specified by:
getContentHandlerin interfaceorg.xml.sax.XMLReader- Returns:
- a
ContentHandlerThe current content handler, or null if none has been registered.
-
parse
public void parse(java.lang.String poSystemId) throws java.io.IOException, org.xml.sax.SAXExceptionFull implementation of interface method.- Specified by:
parsein interfaceorg.xml.sax.XMLReader- Throws:
java.io.IOExceptionorg.xml.sax.SAXException
-
getFeature
public boolean getFeature(java.lang.String poName) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedExceptionDo-nothing implementation of interface method- Specified by:
getFeaturein interfaceorg.xml.sax.XMLReader- Throws:
org.xml.sax.SAXNotRecognizedExceptionorg.xml.sax.SAXNotSupportedException
-
setFeature
public void setFeature(java.lang.String poName, boolean value) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedExceptionHandles support for ReasoningDomain and Namespace-prefixes- Specified by:
setFeaturein interfaceorg.xml.sax.XMLReader- Throws:
org.xml.sax.SAXNotRecognizedExceptionorg.xml.sax.SAXNotSupportedException
-
getProperty
public java.lang.Object getProperty(java.lang.String name) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedExceptionDo-nothing implementation of interface method- Specified by:
getPropertyin interfaceorg.xml.sax.XMLReader- Throws:
org.xml.sax.SAXNotRecognizedExceptionorg.xml.sax.SAXNotSupportedException
-
setProperty
public void setProperty(java.lang.String name, java.lang.Object value) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedExceptionDo-nothing implementation of interface method- Specified by:
setPropertyin interfaceorg.xml.sax.XMLReader- Throws:
org.xml.sax.SAXNotRecognizedExceptionorg.xml.sax.SAXNotSupportedException
-
setEntityResolver
public void setEntityResolver(org.xml.sax.EntityResolver resolver)
Do-nothing implementation of interface method- Specified by:
setEntityResolverin interfaceorg.xml.sax.XMLReader
-
getEntityResolver
public org.xml.sax.EntityResolver getEntityResolver()
Do-nothing implementation of interface method- Specified by:
getEntityResolverin interfaceorg.xml.sax.XMLReader
-
setDTDHandler
public void setDTDHandler(org.xml.sax.DTDHandler handler)
Do-nothing implementation of interface method- Specified by:
setDTDHandlerin interfaceorg.xml.sax.XMLReader
-
getDTDHandler
public org.xml.sax.DTDHandler getDTDHandler()
Do-nothing implementation of interface method- Specified by:
getDTDHandlerin interfaceorg.xml.sax.XMLReader
-
setErrorHandler
public void setErrorHandler(org.xml.sax.ErrorHandler handler)
Do-nothing implementation of interface method- Specified by:
setErrorHandlerin interfaceorg.xml.sax.XMLReader
-
getErrorHandler
public org.xml.sax.ErrorHandler getErrorHandler()
Do-nothing implementation of interface method- Specified by:
getErrorHandlerin interfaceorg.xml.sax.XMLReader
-
startElement
protected void startElement(org.biojava.bio.program.sax.QName poQName, org.xml.sax.Attributes atts) throws org.xml.sax.SAXExceptionUtility method to centralize sending of a SAX startElement message to document handler- Parameters:
poQName- aQNamevalueatts- anAttributesvalue- Throws:
org.xml.sax.SAXException- if an error occurs
-
endElement
protected void endElement(org.biojava.bio.program.sax.QName poQName) throws org.xml.sax.SAXExceptionUtility method to centralize the sending of a SAX endElement message a document handler.- Parameters:
poQName- -- Throws:
org.xml.sax.SAXException- thrown ifthrown- if
-
characters
protected void characters(char[] ch, int start, int length) throws org.xml.sax.SAXExceptionUtility method to centralize the sending of a SAX characters message a document handler.- Parameters:
ch- -start- -length- -- Throws:
org.xml.sax.SAXException- thrown ifthrown- if
-
getNamespaces
public boolean getNamespaces()
Support SAX2 configuration of namespace support of parser.
-
getNamespacePrefixes
public boolean getNamespacePrefixes()
Support SAX2 configuration of namespace support of parser.
-
addPrefixMapping
public void addPrefixMapping(java.lang.String poPrefix, java.lang.String poURI)Adds a namespace prefix to URI mapping as (key,value) pairs. This mapping can be looked up later to get URIs on request using the getURIFromPrefix method.- Parameters:
poPrefix- aStringrepresentation of the namespace prefixpoURI- aStringrepresentation of the URI for the namespace prefix.
-
getURIFromPrefix
public java.lang.String getURIFromPrefix(java.lang.String poPrefix)
Gets the URI for a namespace prefix, given that prefix, or null if the prefix is not recognised.- Parameters:
poPrefix- aStringThe namespace prefix.
-
setNamespacePrefix
public void setNamespacePrefix(java.lang.String poPrefix)
- Parameters:
poPrefix- aStringvalue
-
getNamespacePrefix
public java.lang.String getNamespacePrefix()
DescribegetNamespacePrefixmethod here.- Returns:
- a
Stringvalue
-
prefix
public java.lang.String prefix(java.lang.String poElementName)
Given an unprefixed element name, returns a new element name with a namespace prefix- Returns:
- a
Stringvalue
-
getContentStream
protected java.io.BufferedReader getContentStream(org.xml.sax.InputSource poSource)
Create a stream from an an InputSource, picking the correct stream according to order of precedance.- Parameters:
poSource- anInputSourcevalue- Returns:
- a
BufferedReadervalue
-
changeState
protected void changeState(int piState)
Centralise chaining of iState field to help with debugging. E.g. printing out value etc. All changes to iState should be made through this method.- Parameters:
piState- anintvalue
-
-