![JAR search and dependency download from the Maven repository](/logo.png)
org.biojava.bio.program.sax.DomainSectionSAXParser Maven / Gradle / Ivy
/*
* BioJava development code
*
* This code may be freely distributed and modified under the
* terms of the GNU Lesser General Public Licence. This should
* be distributed with the code. If you do not have a copy,
* see:
*
* http://www.gnu.org/copyleft/lesser.html
*
* Copyright for this code is held jointly by the individual
* authors. These should be listed in @author doc comments.
*
* For more information on the BioJava project and its aims,
* or to join the biojava-l mailing list, visit the home page
* at:
*
* http://www.biojava.org/
*
*/
package org.biojava.bio.program.sax;
import java.io.BufferedReader;
import java.util.StringTokenizer;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
/**
* A reusable class for parsing Hmmr Domain Summary Section
*
* Primary author -
* Colin Hardman (CAT)
* Other authors -
* Tim Dilks (CAT)
* Simon Brocklehurst (CAT)
* Stuart Johnston (CAT)
* Lawerence Bower (CAT)
* Derek Crockford (CAT)
* Neil Benn (CAT)
*
* Copyright 2001 Cambridge Antibody Technology Group plc.
*
*
* This code released to the biojava project, May 2001
* under the LGPL license.
*
* @author Cambridge Antibody Technology Group plc
* @version 0.1
*
*/
class DomainSectionSAXParser extends AbstractNativeAppSAXParser {
private BufferedReader oContents;
private AttributesImpl oAtts = new AttributesImpl();
private QName oAttQName = new QName(this);
private String oLine;
/**
* Creates a new domain section parser.
*
* @param poVersion BlastLikeVersionSupport
* @param poNamespacePrefix - the namespace prefix
*/
DomainSectionSAXParser( BlastLikeVersionSupport poVersion,
String poNamespacePrefix ) {
this.setNamespacePrefix(poNamespacePrefix);
//For XSLT Parser Compliance
this.addPrefixMapping("biojava","http://www.biojava.org");
}
/**
* Parse the buffer from the current position, until domain hits
* are parsed.
*
* @param poContents BufferedReader
to parse.
* @param poLine - the value of the current line.
* @exception SAXException if an error occurs
*/
public void parse( BufferedReader poContents, String poLine )
throws SAXException {
oContents = poContents;
try {
oLine = poLine;
while (! oLine.startsWith( "----" )) { // skip headers
oLine = oContents.readLine();
}
oLine = oContents.readLine();
if ( oLine.trim().equals( "[no hits above thresholds]" ) ) {
oLine = oContents.readLine();
return;
}
while (!(oLine.trim().equals(""))) {
// System.out.println( "->" + oLine + "<-" );
StringTokenizer st = new StringTokenizer( oLine );
oAtts.clear();
oAttQName.setQName("modelId");
oAtts.addAttribute(oAttQName.getURI(),
oAttQName.getLocalName(),
oAttQName.getQName(),
"CDATA", st.nextToken() );
StringTokenizer st2 = new StringTokenizer
( st.nextToken(), "/");
oAttQName.setQName("domainPosition");
oAtts.addAttribute(oAttQName.getURI(),
oAttQName.getLocalName(),
oAttQName.getQName(),
"CDATA", st2.nextToken() );
oAttQName.setQName("sequenceFrom");
oAtts.addAttribute(oAttQName.getURI(),
oAttQName.getLocalName(),
oAttQName.getQName(),
"CDATA", st.nextToken() );
oAttQName.setQName("sequenceTo");
oAtts.addAttribute(oAttQName.getURI(),
oAttQName.getLocalName(),
oAttQName.getQName(),
"CDATA", st.nextToken() );
String oTemp = st.nextToken();
oAttQName.setQName("startPositionOfSequence");
if(oTemp.charAt(0) == '.') {
oAtts.addAttribute(oAttQName.getURI(),
oAttQName.getLocalName(),
oAttQName.getQName(),
"NMTOKEN", "internal" );
}else{
oAtts.addAttribute(oAttQName.getURI(),
oAttQName.getLocalName(),
oAttQName.getQName(),
"NMTOKEN", "end" );
}
oAttQName.setQName("endPositionOfSequence");
if(oTemp.charAt(1) == '.') {
oAtts.addAttribute(oAttQName.getURI(),
oAttQName.getLocalName(),
oAttQName.getQName(),
"NMTOKEN", "internal" );
}else{
oAtts.addAttribute(oAttQName.getURI(),
oAttQName.getLocalName(),
oAttQName.getQName(),
"NMTOKEN", "end" );
}
oAttQName.setQName("hmmFrom");
oAtts.addAttribute(oAttQName.getURI(),
oAttQName.getLocalName(),
oAttQName.getQName(),
"CDATA", st.nextToken() );
oAttQName.setQName("hmmTo");
oAtts.addAttribute(oAttQName.getURI(),
oAttQName.getLocalName(),
oAttQName.getQName(),
"CDATA", st.nextToken() );
oTemp = st.nextToken();
oAttQName.setQName("startPositionOfModel");
if(oTemp.charAt(0) == '.') {
oAtts.addAttribute(oAttQName.getURI(),
oAttQName.getLocalName(),
oAttQName.getQName(),
"NMTOKEN", "internal" );
}else{
oAtts.addAttribute(oAttQName.getURI(),
oAttQName.getLocalName(),
oAttQName.getQName(),
"NMTOKEN", "end" );
}
oAttQName.setQName("endPositionOfModel");
if(oTemp.charAt(1) == '.') {
oAtts.addAttribute(oAttQName.getURI(),
oAttQName.getLocalName(),
oAttQName.getQName(),
"NMTOKEN", "internal" );
}else{
oAtts.addAttribute(oAttQName.getURI(),
oAttQName.getLocalName(),
oAttQName.getQName(),
"NMTOKEN", "end" );
}
oAttQName.setQName("score");
oAtts.addAttribute(oAttQName.getURI(),
oAttQName.getLocalName(),
oAttQName.getQName(),
"CDATA", st.nextToken() );
oAttQName.setQName("expectValue");
oAtts.addAttribute(oAttQName.getURI(),
oAttQName.getLocalName(),
oAttQName.getQName(),
"CDATA", st.nextToken() );
this.startElement(new QName(this,this.prefix("DomainHit")),
(Attributes)oAtts);
this.endElement(new QName(this,this.prefix("DomainHit")));
oLine = oContents.readLine();
} // end while in domain summary
} catch (java.io.IOException x) {
System.out.println(x.getMessage());
System.out.println("File read interupted");
} // end try/catch
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy