[BioRuby-cvs] bioruby/lib/bio/appl/blast xmlparser.rb,1.13,1.14
Mitsuteru C. Nakao
nakao at dev.open-bio.org
Sun Apr 30 07:11:30 UTC 2006
Update of /home/repository/bioruby/bioruby/lib/bio/appl/blast
In directory dev.open-bio.org:/tmp/cvs-serv18631/lib/bio/appl/blast
Modified Files:
xmlparser.rb
Log Message:
* changed license to Ruby's
Index: xmlparser.rb
===================================================================
RCS file: /home/repository/bioruby/bioruby/lib/bio/appl/blast/xmlparser.rb,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -d -r1.13 -r1.14
*** xmlparser.rb 8 Sep 2005 01:22:08 -0000 1.13
--- xmlparser.rb 30 Apr 2006 07:11:28 -0000 1.14
***************
*** 1,23 ****
#
! # bio/appl/blast/xmlparser.rb - BLAST XML output (-m 7) parser by XMLParser
#
! # Copyright (C) 2001 Mitsuteru C. Nakao <n at bioruby.org>
! # Copyright (C) 2003 KATAYAMA Toshiaki <k at bioruby.org>
#
! # This library is free software; you can redistribute it and/or
! # modify it under the terms of the GNU Lesser General Public
! # License as published by the Free Software Foundation; either
! # version 2 of the License, or (at your option) any later version.
#
! # This library is distributed in the hope that it will be useful,
! # but WITHOUT ANY WARRANTY; without even the implied warranty of
! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
! # Lesser General Public License for more details.
#
! # You should have received a copy of the GNU Lesser General Public
! # License along with this library; if not, write to the Free Software
! # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
! # $Id$
#
--- 1,31 ----
#
! # = bio/appl/blast/xmlparser.rb - BLAST XML output (-m 7) parser by XMLParser
#
! # Copyright:: Copyright (C) 2001
! # Mitsuteru C. Nakao <n at bioruby.org>
! # Copyright:: Copyright (C) 2003
! # KATAYAMA Toshiaki <k at bioruby.org>
! # Lisence:: Ruby's
#
! # $Id$
#
! # == Description
! #
! # A parser for blast XML report (format 7) based on the XMLParser.
! # This file is automatically loaded by bio/appl/blast/report.rb if
! # the XMLParser installed.
#
! # BioRuby provides two implements of the paser for the blast XML format report
! # (format 7) based on the XMLParser and the REXML.
#
! # == Examples
! #
! # == References
! #
! # * Blast
! # http://
! #
! # * XMLParser
! # http://
#
***************
*** 28,217 ****
module Bio
! class Blast
! class Report
! private
! def xmlparser_parse(xml)
! parser = XMLParser.new
! def parser.default; end
!
! begin
! tag_stack = Array.new
! hash = Hash.new
! parser.parse(xml) do |type, name, data|
! #print "type=#{type.inspect} name=#{name.inspect} data=#{data.inspect}\n" # for DEBUG
! case type
! when XMLParser::START_ELEM
! tag_stack.push(name)
! hash.update(data)
! case name
! when 'Iteration'
! iteration = Iteration.new
! @iterations.push(iteration)
! when 'Hit'
! hit = Hit.new
! hit.query_id = @query_id
! hit.query_def = @query_def
! hit.query_len = @query_len
! @iterations.last.hits.push(hit)
! when 'Hsp'
! hsp = Hsp.new
! @iterations.last.hits.last.hsps.push(hsp)
! end
! when XMLParser::END_ELEM
! case name
! when /^BlastOutput/
! xmlparser_parse_program(name,hash)
! hash = Hash.new
! when /^Parameters$/
! xmlparser_parse_parameters(hash)
! hash = Hash.new
! when /^Iteration/
! xmlparser_parse_iteration(name, hash)
! hash = Hash.new
! when /^Hit/
! xmlparser_parse_hit(name, hash)
! hash = Hash.new
! when /^Hsp$/
! xmlparser_parse_hsp(hash)
! hash = Hash.new
! when /^Statistics$/
! xmlparser_parse_statistics(hash)
! hash = Hash.new
! end
! tag_stack.pop
! when XMLParser::CDATA
! if hash[tag_stack.last].nil?
! hash[tag_stack.last] = data unless data.strip.empty?
! else
! hash[tag_stack.last].concat(data) if data
! end
! when XMLParser::PI
end
end
- rescue XMLParserError
- line = parser.line
- column = parser.column
- print "Parse error at #{line}(#{column}) : #{$!}\n"
end
end
! def xmlparser_parse_program(tag, hash)
! case tag
! when 'BlastOutput_program'
! @program = hash[tag]
! when 'BlastOutput_version'
! @version = hash[tag]
! when 'BlastOutput_reference'
! @reference = hash[tag]
! when 'BlastOutput_db'
! @db = hash[tag].strip
! when 'BlastOutput_query-ID'
! @query_id = hash[tag]
! when 'BlastOutput_query-def'
! @query_def = hash[tag]
! when 'BlastOutput_query-len'
! @query_len = hash[tag].to_i
! end
end
! def xmlparser_parse_parameters(hash)
! labels = {
! 'matrix' => 'Parameters_matrix',
! 'expect' => 'Parameters_expect',
! 'include' => 'Parameters_include',
! 'sc-match' => 'Parameters_sc-match',
! 'sc-mismatch' => 'Parameters_sc-mismatch',
! 'gap-open' => 'Parameters_gap-open',
! 'gap-extend' => 'Parameters_gap-extend',
! 'filter' => 'Parameters_filter',
! 'pattern' => 'Parameters_pattern',
! 'entrez-query'=> 'Parameters_entrez-query',
! }
! labels.each do |k,v|
! case k
! when 'filter', 'matrix'
! @parameters[k] = hash[v].to_s
! else
! @parameters[k] = hash[v].to_i
! end
end
end
! def xmlparser_parse_iteration(tag, hash)
! case tag
! when 'Iteration_iter-num'
! @iterations.last.num = hash[tag].to_i
! when 'Iteration_message'
! @iterations.last.message = hash[tag].to_s
! end
end
! def xmlparser_parse_hit(tag, hash)
! hit = @iterations.last.hits.last
! case tag
! when 'Hit_num'
! hit.num = hash[tag].to_i
! when 'Hit_id'
! hit.hit_id = hash[tag].clone
! when 'Hit_def'
! hit.definition = hash[tag].clone
! when 'Hit_accession'
! hit.accession = hash[tag].clone
! when 'Hit_len'
! hit.len = hash[tag].clone.to_i
! end
end
! def xmlparser_parse_hsp(hash)
! hsp = @iterations.last.hits.last.hsps.last
! hsp.num = hash['Hsp_num'].to_i
! hsp.bit_score = hash['Hsp_bit-score'].to_f
! hsp.score = hash['Hsp_score'].to_i
! hsp.evalue = hash['Hsp_evalue'].to_f
! hsp.query_from = hash['Hsp_query-from'].to_i
! hsp.query_to = hash['Hsp_query-to'].to_i
! hsp.hit_from = hash['Hsp_hit-from'].to_i
! hsp.hit_to = hash['Hsp_hit-to'].to_i
! hsp.pattern_from = hash['Hsp_pattern-from'].to_i
! hsp.pattern_to = hash['Hsp_pattern-to'].to_i
! hsp.query_frame = hash['Hsp_query-frame'].to_i
! hsp.hit_frame = hash['Hsp_hit-frame'].to_i
! hsp.identity = hash['Hsp_identity'].to_i
! hsp.positive = hash['Hsp_positive'].to_i
! hsp.gaps = hash['Hsp_gaps'].to_i
! hsp.align_len = hash['Hsp_align-len'].to_i
! hsp.density = hash['Hsp_density'].to_i
! hsp.qseq = hash['Hsp_qseq']
! hsp.hseq = hash['Hsp_hseq']
! hsp.midline = hash['Hsp_midline']
! end
! def xmlparser_parse_statistics(hash)
! labels = {
! 'db-num' => 'Statistics_db-num',
! 'db-len' => 'Statistics_db-len',
! 'hsp-len' => 'Statistics_hsp-len',
! 'eff-space' => 'Statistics_eff-space',
! 'kappa' => 'Statistics_kappa',
! 'lambda' => 'Statistics_lambda',
! 'entropy' => 'Statistics_entropy'
! }
! labels.each do |k,v|
! case k
! when 'db-num', 'db-len', 'hsp-len'
! @iterations.last.statistics[k] = hash[v].to_i
! else
! @iterations.last.statistics[k] = hash[v].to_f
! end
end
end
-
end
! end
! end
--- 36,224 ----
module Bio
! class Blast
! class Report
! private
! def xmlparser_parse(xml)
! parser = XMLParser.new
! def parser.default; end
!
! begin
! tag_stack = Array.new
! hash = Hash.new
! parser.parse(xml) do |type, name, data|
! case type
! when XMLParser::START_ELEM
! tag_stack.push(name)
! hash.update(data)
! case name
! when 'Iteration'
! iteration = Iteration.new
! @iterations.push(iteration)
! when 'Hit'
! hit = Hit.new
! hit.query_id = @query_id
! hit.query_def = @query_def
! hit.query_len = @query_len
! @iterations.last.hits.push(hit)
! when 'Hsp'
! hsp = Hsp.new
! @iterations.last.hits.last.hsps.push(hsp)
end
+ when XMLParser::END_ELEM
+ case name
+ when /^BlastOutput/
+ xmlparser_parse_program(name,hash)
+ hash = Hash.new
+ when /^Parameters$/
+ xmlparser_parse_parameters(hash)
+ hash = Hash.new
+ when /^Iteration/
+ xmlparser_parse_iteration(name, hash)
+ hash = Hash.new
+ when /^Hit/
+ xmlparser_parse_hit(name, hash)
+ hash = Hash.new
+ when /^Hsp$/
+ xmlparser_parse_hsp(hash)
+ hash = Hash.new
+ when /^Statistics$/
+ xmlparser_parse_statistics(hash)
+ hash = Hash.new
+ end
+ tag_stack.pop
+ when XMLParser::CDATA
+ if hash[tag_stack.last].nil?
+ hash[tag_stack.last] = data unless data.strip.empty?
+ else
+ hash[tag_stack.last].concat(data) if data
+ end
+ when XMLParser::PI
end
end
+ rescue XMLParserError
+ line = parser.line
+ column = parser.column
+ print "Parse error at #{line}(#{column}) : #{$!}\n"
end
+ end
! def xmlparser_parse_program(tag, hash)
! case tag
! when 'BlastOutput_program'
! @program = hash[tag]
! when 'BlastOutput_version'
! @version = hash[tag]
! when 'BlastOutput_reference'
! @reference = hash[tag]
! when 'BlastOutput_db'
! @db = hash[tag].strip
! when 'BlastOutput_query-ID'
! @query_id = hash[tag]
! when 'BlastOutput_query-def'
! @query_def = hash[tag]
! when 'BlastOutput_query-len'
! @query_len = hash[tag].to_i
end
+ end
! def xmlparser_parse_parameters(hash)
! labels = {
! 'matrix' => 'Parameters_matrix',
! 'expect' => 'Parameters_expect',
! 'include' => 'Parameters_include',
! 'sc-match' => 'Parameters_sc-match',
! 'sc-mismatch' => 'Parameters_sc-mismatch',
! 'gap-open' => 'Parameters_gap-open',
! 'gap-extend' => 'Parameters_gap-extend',
! 'filter' => 'Parameters_filter',
! 'pattern' => 'Parameters_pattern',
! 'entrez-query' => 'Parameters_entrez-query',
! }
! labels.each do |k,v|
! case k
! when 'filter', 'matrix'
! @parameters[k] = hash[v].to_s
! else
! @parameters[k] = hash[v].to_i
end
end
+ end
! def xmlparser_parse_iteration(tag, hash)
! case tag
! when 'Iteration_iter-num'
! @iterations.last.num = hash[tag].to_i
! when 'Iteration_message'
! @iterations.last.message = hash[tag].to_s
end
+ end
! def xmlparser_parse_hit(tag, hash)
! hit = @iterations.last.hits.last
! case tag
! when 'Hit_num'
! hit.num = hash[tag].to_i
! when 'Hit_id'
! hit.hit_id = hash[tag].clone
! when 'Hit_def'
! hit.definition = hash[tag].clone
! when 'Hit_accession'
! hit.accession = hash[tag].clone
! when 'Hit_len'
! hit.len = hash[tag].clone.to_i
end
+ end
! def xmlparser_parse_hsp(hash)
! hsp = @iterations.last.hits.last.hsps.last
! hsp.num = hash['Hsp_num'].to_i
! hsp.bit_score = hash['Hsp_bit-score'].to_f
! hsp.score = hash['Hsp_score'].to_i
! hsp.evalue = hash['Hsp_evalue'].to_f
! hsp.query_from = hash['Hsp_query-from'].to_i
! hsp.query_to = hash['Hsp_query-to'].to_i
! hsp.hit_from = hash['Hsp_hit-from'].to_i
! hsp.hit_to = hash['Hsp_hit-to'].to_i
! hsp.pattern_from = hash['Hsp_pattern-from'].to_i
! hsp.pattern_to = hash['Hsp_pattern-to'].to_i
! hsp.query_frame = hash['Hsp_query-frame'].to_i
! hsp.hit_frame = hash['Hsp_hit-frame'].to_i
! hsp.identity = hash['Hsp_identity'].to_i
! hsp.positive = hash['Hsp_positive'].to_i
! hsp.gaps = hash['Hsp_gaps'].to_i
! hsp.align_len = hash['Hsp_align-len'].to_i
! hsp.density = hash['Hsp_density'].to_i
! hsp.qseq = hash['Hsp_qseq']
! hsp.hseq = hash['Hsp_hseq']
! hsp.midline = hash['Hsp_midline']
! end
! def xmlparser_parse_statistics(hash)
! labels = {
! 'db-num' => 'Statistics_db-num',
! 'db-len' => 'Statistics_db-len',
! 'hsp-len' => 'Statistics_hsp-len',
! 'eff-space' => 'Statistics_eff-space',
! 'kappa' => 'Statistics_kappa',
! 'lambda' => 'Statistics_lambda',
! 'entropy' => 'Statistics_entropy'
! }
! labels.each do |k,v|
! case k
! when 'db-num', 'db-len', 'hsp-len'
! @iterations.last.statistics[k] = hash[v].to_i
! else
! @iterations.last.statistics[k] = hash[v].to_f
end
end
end
!
! end # class Report
! end # class Blast
! end # module Bio
More information about the bioruby-cvs
mailing list