Class: Bio::Blast::Default::Report::Iteration

Inherits:
Object
  • Object
show all
Defined in:
lib/bio/appl/blast/format0.rb

Overview

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.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data) ⇒ Iteration

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.



503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
# File 'lib/bio/appl/blast/format0.rb', line 503

def initialize(data)
  @f0stat = []
  @f0dbstat = AlwaysNil.instance
  @f0hitlist = []
  @hits = []
  @num = 1
  r = data.shift
  @f0message = [ r ]
  r.gsub!(/^Results from round (\d+).*\z/) { |x|
    @num = $1.to_i
    @f0message << x
    ''
  }
  r = data.shift
  while /^Number of occurrences of pattern in the database is +(\d+)/ =~ r
    # PHI-BLAST
    @pattern_in_database = $1.to_i
    @f0message << r
    r = data.shift
  end
  if /^Results from round (\d+)/ =~ r then
    @num = $1.to_i
    @f0message << r
    r = data.shift
  end
  if r and !(/\*{5} No hits found \*{5}/ =~ r) then
    @f0hitlist << r
    begin
      @f0hitlist << data.shift
    end until r = data[0] and /^\>/ =~ r
    if r and /^CONVERGED\!/ =~ r then
      r.sub!(/(.*\n)*^CONVERGED\!.*\n/) { |x| @f0hitlist << x; '' }
    end
    if defined?(@pattern_in_database) and r = data.first then
      #PHI-BLAST
      while /^\>/ =~ r
        @hits << Hit.new(data)
        r = data.first
        break unless r
        while /^Significant alignments for pattern/ =~ r
          data.shift
          r = data.first
        end
      end
    else
      #not PHI-BLAST
      while r = data[0] and /^\>/ =~ r
        @hits << Hit.new(data)
      end
    end
  end
  if /^CONVERGED\!\s*$/ =~ @f0hitlist[-1].to_s then
    @message = 'CONVERGED!'
    @flag_converged = true
  end
end

Instance Attribute Details

#databaseObject (readonly)

name (title or filename) of the database



781
782
783
# File 'lib/bio/appl/blast/format0.rb', line 781

def database
  @database
end

#db_lenObject (readonly)

number of sequences in database



791
792
793
# File 'lib/bio/appl/blast/format0.rb', line 791

def db_len
  @db_len
end

#db_numObject (readonly)

number of letters in database



788
789
790
# File 'lib/bio/appl/blast/format0.rb', line 788

def db_num
  @db_num
end

#eff_spaceObject (readonly)

effective length of the database



794
795
796
# File 'lib/bio/appl/blast/format0.rb', line 794

def eff_space
  @eff_space
end

#entropyObject (readonly)

entropy of the database



759
760
761
# File 'lib/bio/appl/blast/format0.rb', line 759

def entropy
  @entropy
end

#expectObject (readonly)

e-value threshold specified when BLAST was executed



798
799
800
# File 'lib/bio/appl/blast/format0.rb', line 798

def expect
  @expect
end

#gapped_entropyObject (readonly)

gapped entropy of the database



769
770
771
# File 'lib/bio/appl/blast/format0.rb', line 769

def gapped_entropy
  @gapped_entropy
end

#gapped_kappaObject (readonly)

gapped kappa of the database



766
767
768
# File 'lib/bio/appl/blast/format0.rb', line 766

def gapped_kappa
  @gapped_kappa
end

#gapped_lambdaObject (readonly)

gapped lambda of the database



763
764
765
# File 'lib/bio/appl/blast/format0.rb', line 763

def gapped_lambda
  @gapped_lambda
end

#kappaObject (readonly)

kappa of the database



756
757
758
# File 'lib/bio/appl/blast/format0.rb', line 756

def kappa
  @kappa
end

#lambdaObject (readonly)

lambda of the database



753
754
755
# File 'lib/bio/appl/blast/format0.rb', line 753

def lambda
  @lambda
end

#messageObject (readonly)

(PSI-BLAST) Messages of the iteration.



563
564
565
# File 'lib/bio/appl/blast/format0.rb', line 563

def message
  @message
end

#numObject (readonly)

(PSI-BLAST) Iteration round number.



561
562
563
# File 'lib/bio/appl/blast/format0.rb', line 561

def num
  @num
end

#pattern_in_databaseObject (readonly)

(PHI-BLAST) Number of occurrences of pattern in the database.



565
566
567
# File 'lib/bio/appl/blast/format0.rb', line 565

def pattern_in_database
  @pattern_in_database
end

#posted_dateObject (readonly)

posted date of the database



784
785
786
# File 'lib/bio/appl/blast/format0.rb', line 784

def posted_date
  @posted_date
end

Instance Method Details

#converged?Boolean

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

Returns:

  • (Boolean)


584
585
586
# File 'lib/bio/appl/blast/format0.rb', line 584

def converged?
  @flag_converged
end

#eachObject

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



576
577
578
579
580
# File 'lib/bio/appl/blast/format0.rb', line 576

def each
  hits.each do |x|
    yield x
  end
end

#hitsObject

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



569
570
571
572
# File 'lib/bio/appl/blast/format0.rb', line 569

def hits
  parse_hitlist
  @hits
end

#hits_for_patternObject

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



632
633
634
635
# File 'lib/bio/appl/blast/format0.rb', line 632

def hits_for_pattern
  parse_hitlist
  @hits_for_pattern
end

#hits_found_againObject

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



618
619
620
621
# File 'lib/bio/appl/blast/format0.rb', line 618

def hits_found_again
  parse_hitlist
  @hits_found_again
end

#hits_newly_foundObject

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



626
627
628
629
# File 'lib/bio/appl/blast/format0.rb', line 626

def hits_newly_found
  parse_hitlist
  @hits_newly_found
end

#patternObject

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



590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
# File 'lib/bio/appl/blast/format0.rb', line 590

def pattern
  #PHI-BLAST
  if !defined?(@pattern) and defined?(@pattern_in_database) then
    @pattern = nil
    @pattern_positions = []
    @f0message.each do |r|
      sc = StringScanner.new(r)
      if sc.skip_until(/^ *pattern +([^\s]+)/) then
        @pattern = sc[1] unless @pattern
        sc.skip_until(/(?:^ *| +)at position +(\d+) +of +query +sequence/)
        @pattern_positions << sc[1].to_i
      end
    end
  end
  @pattern
end

#pattern_positionsObject

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



609
610
611
612
613
# File 'lib/bio/appl/blast/format0.rb', line 609

def pattern_positions
  #PHI-BLAST
  pattern
  @pattern_positions
end