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

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

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

(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

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

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

(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

(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

(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

(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

(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]