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.



498
499
500
501
502
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
# File 'lib/bio/appl/blast/format0.rb', line 498

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



776
777
778
# File 'lib/bio/appl/blast/format0.rb', line 776

def database
  @database
end

#db_lenObject (readonly)

number of sequences in database



786
787
788
# File 'lib/bio/appl/blast/format0.rb', line 786

def db_len
  @db_len
end

#db_numObject (readonly)

number of letters in database



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

def db_num
  @db_num
end

#eff_spaceObject (readonly)

effective length of the database



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

def eff_space
  @eff_space
end

#entropyObject (readonly)

entropy of the database



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

def entropy
  @entropy
end

#expectObject (readonly)

e-value threshold specified when BLAST was executed



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

def expect
  @expect
end

#gapped_entropyObject (readonly)

gapped entropy of the database



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

def gapped_entropy
  @gapped_entropy
end

#gapped_kappaObject (readonly)

gapped kappa of the database



761
762
763
# File 'lib/bio/appl/blast/format0.rb', line 761

def gapped_kappa
  @gapped_kappa
end

#gapped_lambdaObject (readonly)

gapped lambda of the database



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

def gapped_lambda
  @gapped_lambda
end

#kappaObject (readonly)

kappa of the database



751
752
753
# File 'lib/bio/appl/blast/format0.rb', line 751

def kappa
  @kappa
end

#lambdaObject (readonly)

lambda of the database



748
749
750
# File 'lib/bio/appl/blast/format0.rb', line 748

def lambda
  @lambda
end

#messageObject (readonly)

(PSI-BLAST) Messages of the iteration.



558
559
560
# File 'lib/bio/appl/blast/format0.rb', line 558

def message
  @message
end

#numObject (readonly)

(PSI-BLAST) Iteration round number.



556
557
558
# File 'lib/bio/appl/blast/format0.rb', line 556

def num
  @num
end

#pattern_in_databaseObject (readonly)

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



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

def pattern_in_database
  @pattern_in_database
end

#posted_dateObject (readonly)

posted date of the database



779
780
781
# File 'lib/bio/appl/blast/format0.rb', line 779

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)


579
580
581
# File 'lib/bio/appl/blast/format0.rb', line 579

def converged?
  @flag_converged
end

#eachObject

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



571
572
573
574
575
# File 'lib/bio/appl/blast/format0.rb', line 571

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.



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

def hits
  parse_hitlist
  @hits
end

#hits_for_patternObject

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



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

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.



613
614
615
616
# File 'lib/bio/appl/blast/format0.rb', line 613

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.



621
622
623
624
# File 'lib/bio/appl/blast/format0.rb', line 621

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.



585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
# File 'lib/bio/appl/blast/format0.rb', line 585

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.



604
605
606
607
608
# File 'lib/bio/appl/blast/format0.rb', line 604

def pattern_positions
  #PHI-BLAST
  pattern
  @pattern_positions
end