Hit class for the BLAT result parser. Similar to Bio::Blast::Report::Hit but lacks many methods. Its object may contain some Bio::Blat::Report::SegmentPair objects.
Creates a new Hit object from a piece of BLAT result text. It is designed to be called internally from Bio::Blat::Report object. Users shall not use it directly.
# File lib/bio/appl/blat/report.rb, line 293 def initialize(str) @data = str.chomp.split(/\t/) end
Number of blocks(exons, segment pairs).
# File lib/bio/appl/blat/report.rb, line 350 def block_count; @data[17].to_i; end
Sizes of all blocks(exons, segment pairs). Returns an array of numbers.
# File lib/bio/appl/blat/report.rb, line 354 def block_sizes unless defined?(@block_sizes) then @block_sizes = split_comma(@data[18]).collect { |x| x.to_i } end @block_sizes end
Returns blocks(exons, segment pairs) of the hit. Returns an array of Bio::Blat::Report::SegmentPair objects.
# File lib/bio/appl/blat/report.rb, line 363 def blocks unless defined?(@blocks) bs = block_sizes qst = query.starts tst = target.starts qseqs = query.seqs tseqs = target.seqs pflag = self.protein? @blocks = (0...block_count).collect do |i| SegmentPair.new(query.size, target.size, strand, bs[i], qst[i], tst[i], qseqs[i], tseqs[i], pflag) end end @blocks end
Iterates over each block(exon, segment pair) of the hit.
Yields a Bio::Blat::Report::SegmentPair object.
# File lib/bio/appl/blat/report.rb, line 404 def each(&x) #:yields: segmentpair exons.each(&x) end
Match nucleotides.
# File lib/bio/appl/blat/report.rb, line 332 def match; @data[0].to_i; end
Calculates the pslCalcMilliBad value defined in the BLAT FAQ (genome.ucsc.edu/FAQ/FAQblat#blat4).
The algorithm is taken from the BLAT FAQ (genome.ucsc.edu/FAQ/FAQblat#blat4).
# File lib/bio/appl/blat/report.rb, line 418 def milli_bad w = (self.protein? ? 3 : 1) qalen = w * (self.query.end - self.query.start) talen = self.target.end - self.target.start alen = (if qalen < talen then qalen; else talen; end) return 0 if alen <= 0 d = qalen - talen d = 0 if d < 0 total = w * (self.match + self.rep_match + self.mismatch) return 0 if total == 0 return (1000 * (self.mismatch * w + self.query.gap_count + (3 * Math.log(1 + d)).round) / total) end
Mismatch nucleotides.
# File lib/bio/appl/blat/report.rb, line 334 def mismatch; @data[1].to_i; end
"N's". Number of 'N' bases.
# File lib/bio/appl/blat/report.rb, line 342 def n_s; @data[3].to_i; end
Calculates the percent identity compatible with the BLAT web server as described in the BLAT FAQ (genome.ucsc.edu/FAQ/FAQblat#blat4).
The algorithm is taken from the BLAT FAQ (genome.ucsc.edu/FAQ/FAQblat#blat4).
# File lib/bio/appl/blat/report.rb, line 438 def percent_identity 100.0 - self.milli_bad * 0.1 end
When the output data comes from the protein query, returns true. Otherwise (nucleotide query), returns false. It returns nil if this cannot be determined.
The algorithm is taken from the BLAT FAQ (genome.ucsc.edu/FAQ/FAQblat#blat4).
Note: It seems that it returns true only when protein query with nucleotide database (blat options: -q=prot -t=dnax).
# File lib/bio/appl/blat/report.rb, line 451 def protein? return nil if self.block_sizes.empty? case self.strand[1,1] when '+' if self.target.end == self.target.starts[-1] + 3 * self.block_sizes[-1] then true else false end when '-' if self.target.start == self.target.size - self.target.starts[-1] - 3 * self.block_sizes[-1] then true else false end else nil end end
Returns sequence informations of the query. Returns a Bio::Blat::Report::SeqDesc object. This would be Bio::Blat specific method.
# File lib/bio/appl/blat/report.rb, line 310 def query unless defined?(@query) d = @data @query = SeqDesc.new(d[4], d[5], d[9], d[10], d[11], d[12], split_comma(d[19]), split_comma(d[21])) end @query end
Returns the name of query sequence.
# File lib/bio/appl/blat/report.rb, line 390 def query_def; query.name; end
Returns the length of query sequence.
# File lib/bio/appl/blat/report.rb, line 387 def query_len; query.size; end
"rep. match". Number of bases that match but are part of repeats. Note that current version of BLAT always set 0.
# File lib/bio/appl/blat/report.rb, line 339 def rep_match; @data[2].to_i; end
Calculates the score compatible with the BLAT web server as described in the BLAT FAQ (genome.ucsc.edu/FAQ/FAQblat#blat4).
The algorithm is taken from the BLAT FAQ (genome.ucsc.edu/FAQ/FAQblat#blat4).
# File lib/bio/appl/blat/report.rb, line 479 def score w = (self.protein? ? 3 : 1) w * (self.match + (self.rep_match >> 1)) - w * self.mismatch - self.query.gap_count - self.target.gap_count end
Returns strand information of the hit. Returns '+' or '-'. This would be a Bio::Blat specific method.
# File lib/bio/appl/blat/report.rb, line 347 def strand; @data[8]; end
Returns sequence informations of the target(hit). Returns a Bio::Blat::Report::SeqDesc object. This would be Bio::Blat specific method.
# File lib/bio/appl/blat/report.rb, line 322 def target unless defined?(@target) d = @data @target = SeqDesc.new(d[6], d[7], d[13], d[14], d[15], d[16], split_comma(d[20]), split_comma(d[22])) end @target end
Returns the name of the target(subject) sequence.
# File lib/bio/appl/blat/report.rb, line 398 def target_def; target.name; end
Returns the length of the target(subject) sequence.
# File lib/bio/appl/blat/report.rb, line 394 def target_len; target.size; end
Generated with the Darkfish Rdoc Generator 2.