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. InBio::Blat::Report
, it it nil (1 entry 1 file).- FLATFILE_SPLITTER
Splitter for
Bio::FlatFile
Attributes
Returns descriptions of columns. Returns an Array. This would be a Bio::Blat
specific method.
hits of the result. Returns an Array of Bio::Blat::Report::Hit
objects.
version of the psl format (String or nil).
Public Class Methods
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
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
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
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
Returns number of hits. Same as hits.size.
# File lib/bio/appl/blat/report.rb 492 def num_hits; @hits.size; end
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
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