[Biojava-l] parse blast results

Howard Ungar howard_ungar@yahoo.com
Fri, 19 Oct 2001 08:53:09 -0700 (PDT)


--0-923779484-1003506789=:91471
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

--- richard cai <cairi1@yahoo.com> wrote:
> Thanks, Howard.  This is exactly what I need. 
> 
> Richard Cai
> 
Richard,
There are four files in the attached zip file:
BlastSAXParser.java - contains changes to the parser to explicitly
create a "QueryName" attribute.
BlastHandler.java - uses the parser to read the QueryName attribute
BlastReport.java - prints the results.
Alignment.java - support object to pass data between the handler and
the report.

Let me know if you need anything else to get this working.

--- Keith James <kdj@sanger.ac.uk> wrote:
> This stems from the fact that the DTD has undergone recent
> modifications since Simon's group first commited their code. They
> refined the DTD, while incorporating a couple of suggested changes,
> one of which was adding QueryId.
> 
> This is why the DTD reads, for example:
> 
> <!ELEMENT biojava:Header (biojava:RawOutput, QueryId?, DatabaseId? )>
> 
> so that the new elements (here QueryId and DatabaseId) are not (yet)
> mandatory. This avoids breaking existing code, but leaves extraction
> of this information to the user (it's embedded in the
> biojava:RawOutput element). See Javadoc in
> org.biojava.bio.program.ssbind.BlastDBQueryHandler.

Keith,
I think I tried to get the QueryId from the RawOutput, but the parser
was not starting to include data until later in the Blast Report file. 
I don't think my changes will fit into the current DTD as you described
it.  I could modify what I did to create these attributes in the
rawOutput element if you would like me to.  Or would it be better to
consider modifying the DTD (and risk breaking existing code).
Either way, please take a look at what I did and provide some feedback
about how you would like me to proceed.

Howard



__________________________________________________
Do You Yahoo!?
Make a great connection at Yahoo! Personals.
http://personals.yahoo.com
--0-923779484-1003506789=:91471
Content-Type: application/x-zip-compressed; name="QueryID.zip"
Content-Transfer-Encoding: base64
Content-Description: QueryID.zip
Content-Disposition: attachment; filename="QueryID.zip"

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
nJhy+xhfpo7TNJ5xXCdKZzKT+gEiIQkJSbAAaElp/O89C5AUZctpqhlbFHB2
sWcvB4zjWJW1No60WaTrskitWKcXunKycm9ElRfSHO+DfHx79V6K/Ind6fnH
39aZrJ3S1V7AZVU3bqobk8l+/7O4E2njVJEe7K4pzStDNzOl/Q6+09rohRGl
d/uyENZdqS8SAdwIYzm8eHJwENMB4W8S182sUBllwFny6PfSe/0njgkfj+XP
AX0QX6QlURGoUq4zEpYUh421nGr2jgUXRxH1Nr9iWZQkzAKWdJLpXJ5NnVHV
4tPtycT/JCNrIy3SKzg7pOdA1sItK1HK3o/sskd9HknNORppjDaks6wxtoVP
/HdLzbLfjO60yqkUqkq6831UY3JLo1d24BbMo4Ah7ctCp1Q1RXG8XX6LwKlf
jqOZ1oVELI4BGRs406CQIR5O44QuhMuWtDIaDqqmnEnjqZpFU4K7RRlpKYsa
6fi7kdbZrTF4JpRwtGkhq4Vb0ukpHY277W/f4sg/eMino9sUHkRhk9EhOxyN
x4DQ0xgGjD1rBkw31sky1Y1DI6nKFVUyPn5ya/SnFQv5wrflTvucdBU8Gz6m
aToaH3/3pJ71ACLXyiU/Y7Nbvx9m9lqvUERJInOgRKKuUXbfSzgujiaTCyOF
kx6jZ59l5hKUfSVpJSpHTlOt66YAImbwuTFic6Us5uqVcGImrLzM/W+UW66o
3/dpeSPs8q2oSb9Rjr8Dpl31dCKeIEwEtVEIwihSmEVen8TR4yElHbSk9fcY
4A9HU50XBdjP0TtMwNCdNBbELbcW852xJXOcgb9RMkdCWt+plY77+Ep83YRI
ewkj3YZxSkm/OO6CAvQxq6AKuzqZ0oelsh4GqSpkOZxxju6Vznzzt/iAhAcz
F5kk640I/YEZtFSpTBYb5loK52Tu0Tg0RTKt5bEUfuroThT4D858xNQ7Aey3
UsEqnJEhQ4BmDnlT7aP18F0CHsyOoHz07hotbGludBk8d7V4TgYN3qGXSMWV
zkTh4WlbYmRs1zU6pn1AksM8JLuI8bb07UrSdlnbVv6839Vd6Ow6VExAP+bS
yCrrU7CHk+Ud4aDWlCFeiG/OfH4hhCwWi23cbSNwr+y6Sbr4x6EdJgzkIjT+
/8uNk1MnWfotDe62oSD+UcuK5qqQ/v5AH+UkioIKVXVp9puW9bByCnubOHqN
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

--0-923779484-1003506789=:91471--