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 #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, line 56
def initialize(text = '')
  flag = false
  head = []
  @hits = []
  text.each_line do |line|
    if flag then
      @hits << Hit.new(line)
    else
      # for headerless data
      if /^\d/ =~ line then
        flag = true
        redo
      end
      line = line.chomp
      if /\A\-+\s*\z/ =~ line
        flag = true
      else
        head << line
      end
    end
  end
  @columns = parse_header(head) unless head.empty?
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, line 84
def add_header_line(line)
  return false if defined? @columns
  line = line.chomp
  case line
  when /^\d/
    @columns = (defined? @header_lines) ? parse_header(@header_lines) : []
    return false
  when /\A\-+\s*\z/
    @columns = (defined? @header_lines) ? parse_header(@header_lines) : []
    return self
  else
    @header_lines ||= []
    @header_lines.push line
  end
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, line 105
def add_line(line)
  if /\A\s*\z/ =~ line then
    return @hits.empty? ? self : false
  end
  hit = Hit.new(line.chomp)
  if @hits.empty? or @hits.first.query.name == hit.query.name then
    @hits.push hit
    return self
  else
    return false
  end
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, line 496
def each_hit(&x) #:yields: hit
  @hits.each(&x)
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, line 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, line 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, line 511
def query_len; (x = @hits.first) ? x.query_len : nil; end