Class | Bio::Blast::Default::Report::Iteration
In: | lib/bio/appl/blast/format0.rb
Parent: | Object

Bio::Blast::Default::Report::Iteration stores information about a iteration. It may contain some Bio::Blast::Default::Report::Hit objects. Note that a PSI-BLAST (blastpgp command) result usually contain multiple iterations in it, and a normal BLAST (blastall command) result usually contain one iteration in it.

### Methods

converged? each hits hits_for_pattern hits_found_again hits_newly_found new pattern pattern_positions

### Attributes

database | [R] | name (title or filename) of the database
db_len | [R] | number of sequences in database
db_num | [R] | number of letters in database
eff_space | [R] | effective length of the database
entropy | [R] | entropy of the database
expect | [R] | e-value threshold specified when BLAST was executed
gapped_entropy | [R] | gapped entropy of the database
gapped_kappa | [R] | gapped kappa of the database
gapped_lambda | [R] | gapped lambda of the database
kappa | [R] | kappa of the database
lambda | [R] | lambda of the database
message | [R] | (PSI-BLAST) Messages of the iteration.
num | [R] | (PSI-BLAST) Iteration round number.
pattern_in_database | [R] | (PHI-BLAST) Number of occurrences of pattern in the database.
posted_date | [R] | posted date of the database

### Public Class methods

new(data)

Creates a new Iteration object. It is designed to be called only internally from the Bio::Blast::Default::Report class. Users shall not use the method directly.

[Source]

         # File lib/bio/appl/blast/format0.rb, line 503
    503:           def initialize(data)
    504:             @f0stat = []
    505:             @f0dbstat = AlwaysNil.instance
    506:             @f0hitlist = []
    507:             @hits = []
    508:             @num = 1
    509:             r = data.shift
    510:             @f0message = [ r ]
    511:             r.gsub!(/^Results from round (\d+).*\z/) { |x|
    512:               @num = $1.to_i
    513:               @f0message << x
    514:               ''
    515:             }
    516:             r = data.shift
    517:             while /^Number of occurrences of pattern in the database is +(\d+)/ =~ r
    518:               # PHI-BLAST
    519:               @pattern_in_database = $1.to_i
    520:               @f0message << r
    521:               r = data.shift
    522:             end
    523:             if /^Results from round (\d+)/ =~ r then
    524:               @num = $1.to_i
    525:               @f0message << r
    526:               r = data.shift
    527:             end
    528:             if r and !(/\*{5} No hits found \*{5}/ =~ r) then
    529:               @f0hitlist << r
    530:               begin
    531:                 @f0hitlist << data.shift
    532:               end until r = data[0] and /^\>/ =~ r
    533:               if r and /^CONVERGED\!/ =~ r then
    534:                 r.sub!(/(.*\n)*^CONVERGED\!.*\n/) { |x| @f0hitlist << x; '' }
    535:               end
    536:               if defined?(@pattern_in_database) and r = data.first then
    537:                 #PHI-BLAST
    538:                 while /^\>/ =~ r
    539:                   @hits << Hit.new(data)
    540:                   r = data.first
    541:                   break unless r
    542:                   while /^Significant alignments for pattern/ =~ r
    543:                     data.shift
    544:                     r = data.first
    545:                   end
    546:                 end
    547:               else
    548:                 #not PHI-BLAST
    549:                 while r = data[0] and /^\>/ =~ r
    550:                   @hits << Hit.new(data)
    551:                 end
    552:               end
    553:             end
    554:             if /^CONVERGED\!\s*$/ =~ @f0hitlist[-1].to_s then
    555:               @message = 'CONVERGED!'
    556:               @flag_converged = true
    557:             end
    558:           end

### Public Instance methods

converged?()

(PSI-BLAST) Returns true if the iteration is converged. Otherwise, returns false.

[Source]

         # File lib/bio/appl/blast/format0.rb, line 584
    584:           def converged?
    585:             @flag_converged
    586:           end

each() {|x| ...}

Iterates over each hit of the iteration. Yields a Bio::Blast::Default::Report::Hit object.

[Source]

         # File lib/bio/appl/blast/format0.rb, line 576
    576:           def each
    577:             hits.each do |x|
    578:               yield x
    579:             end
    580:           end

hits()

Returns the hits of the iteration. It returns an array of Bio::Blast::Default::Report::Hit objects.

[Source]

         # File lib/bio/appl/blast/format0.rb, line 569
    569:           def hits
    570:             parse_hitlist
    571:             @hits
    572:           end

hits_for_pattern()

(PHI-BLAST) Returns hits for pattern. ????

[Source]

         # File lib/bio/appl/blast/format0.rb, line 632
    632:           def hits_for_pattern
    633:             parse_hitlist
    634:             @hits_for_pattern
    635:           end

hits_found_again()

(PSI-BLAST) Returns hits which have been found again in the iteration. It returns an array of Bio::Blast::Default::Report::Hit objects.

[Source]

         # File lib/bio/appl/blast/format0.rb, line 618
    618:           def hits_found_again
    619:             parse_hitlist
    620:             @hits_found_again
    621:           end

hits_newly_found()

(PSI-BLAST) Returns hits which have been newly found in the iteration. It returns an array of Bio::Blast::Default::Report::Hit objects.

[Source]

         # File lib/bio/appl/blast/format0.rb, line 626
    626:           def hits_newly_found
    627:             parse_hitlist
    628:             @hits_newly_found
    629:           end

pattern()

(PHI-BLAST) Returns pattern string. Returns nil if it is not a PHI-BLAST result.

[Source]

         # File lib/bio/appl/blast/format0.rb, line 590
    590:           def pattern
    591:             #PHI-BLAST
    592:             if !defined?(@pattern) and defined?(@pattern_in_database) then
    593:               @pattern = nil
    594:               @pattern_positions = []
    595:               @f0message.each do |r|
    596:                 sc = StringScanner.new(r)
    597:                 if sc.skip_until(/^ *pattern +([^\s]+)/) then
    598:                   @pattern = sc[1] unless @pattern
    599:                   sc.skip_until(/(?:^ *| +)at position +(\d+) +of +query +sequence/)
    600:                   @pattern_positions << sc[1].to_i
    601:                 end
    602:               end
    603:             end
    604:             @pattern
    605:           end

pattern_positions()

(PHI-BLAST) Returns pattern positions. Returns nil if it is not a PHI-BLAST result.

[Source]

         # File lib/bio/appl/blast/format0.rb, line 609
    609:           def pattern_positions
    610:             #PHI-BLAST
    611:             pattern
    612:             @pattern_positions
    613:           end

[Validate]