class Bio::Blat::Report

Bio::Blat::Report is a BLAT report parser class. Its object may contain some Bio::Blat::Report::Hits objects.

In BLAT results, the start position of a sequnece is numbered as 0. On the other hand, in many other homology search programs, the start position of a sequence is numbered as 1. To keep compatibility, the BLAT parser adds 1 to every position number except Bio::Blat::Report::Seqdesc and some Bio::Blat specific methods.

Note that Bio::Blat::Report#query_def, query_id, query_len methods simply return first hit's query_*. If multiple query sequences are given, these values will be incorrect.

Constants

DELIMITER

Delimiter of each entry. Bio::FlatFile uses it. In Bio::Blat::Report, it it nil (1 entry 1 file).

FLATFILE_SPLITTER

Splitter for Bio::FlatFile

Attributes

columns[R]

Returns descriptions of columns. Returns an Array. This would be a Bio::Blat specific method.

hits[R]

hits of the result. Returns an Array of Bio::Blat::Report::Hit objects.

psl_version[R]

version of the psl format (String or nil).

Public Class Methods

new(text = '') click to toggle source

Creates a new Bio::Blat::Report object from BLAT result text (String). You can use Bio::FlatFile to read a file. Currently, results created with options -out=psl (default) or -out=pslx are supported.

   # File lib/bio/appl/blat/report.rb
56 def initialize(text = '')
57   flag = false
58   head = []
59   @hits = []
60   text.each_line do |line|
61     if flag then
62       @hits << Hit.new(line)
63     else
64       # for headerless data
65       if /^\d/ =~ line then
66         flag = true
67         redo
68       end
69       line = line.chomp
70       if /\A\-+\s*\z/ =~ line
71         flag = true
72       else
73         head << line
74       end
75     end
76   end
77   @columns = parse_header(head) unless head.empty?
78 end

Public Instance Methods

add_header_line(line) click to toggle source

Adds a header line if the header data is not yet given and the given line is suitable for header. Returns self if adding header line is succeeded. Otherwise, returns false (the line is not added).

   # File lib/bio/appl/blat/report.rb
84 def add_header_line(line)
85   return false if defined? @columns
86   line = line.chomp
87   case line
88   when /^\d/
89     @columns = (defined? @header_lines) ? parse_header(@header_lines) : []
90     return false
91   when /\A\-+\s*\z/
92     @columns = (defined? @header_lines) ? parse_header(@header_lines) : []
93     return self
94   else
95     @header_lines ||= []
96     @header_lines.push line
97   end
98 end
add_line(line) click to toggle source

Adds a line to the entry if the given line is regarded as a part of the current entry. If the current entry (self) is empty, or the line has the same query name, the line is added and returns self. Otherwise, returns false (the line is not added).

    # File lib/bio/appl/blat/report.rb
105 def add_line(line)
106   if /\A\s*\z/ =~ line then
107     return @hits.empty? ? self : false
108   end
109   hit = Hit.new(line.chomp)
110   if @hits.empty? or @hits.first.query.name == hit.query.name then
111     @hits.push hit
112     return self
113   else
114     return false
115   end
116 end
each()
Alias for: each_hit
each_hit() { |hit| ... } click to toggle source

Iterates over each Bio::Blat::Report::Hit object. Same as hits.each.

    # File lib/bio/appl/blat/report.rb
496 def each_hit(&x) #:yields: hit
497   @hits.each(&x)
498 end
Also aliased as: each
num_hits() click to toggle source

Returns number of hits. Same as hits.size.

    # File lib/bio/appl/blat/report.rb
492 def num_hits;     @hits.size;     end
query_def() click to toggle source

Returns the name of query sequence. CAUTION: query_* methods simply return first hit's query_*. If multiple query sequences are given, these values will be incorrect.

    # File lib/bio/appl/blat/report.rb
505 def query_def; (x = @hits.first) ? x.query_def : nil; end
Also aliased as: query_id
query_id()
Alias for: query_def
query_len() click to toggle source

Returns the length of query sequence. CAUTION: query_* methods simply return first hit's query_*. If multiple query sequences are given, these values will be incorrect.

    # File lib/bio/appl/blat/report.rb
511 def query_len; (x = @hits.first) ? x.query_len : nil; end