class BlastHit

Class for a Blast Hit (a concordance between a query and a subject)

Attributes

acc[R]
align_len[R]
bit_score[R]
definition[R]
e_val[R]
full_subject_length[R]
gaps[R]
ident[R]
mismatches[R]
q_beg[RW]

readers and accessor for properties

q_end[RW]

readers and accessor for properties

q_frame[R]
q_len[R]
q_seq[R]
reversed[RW]
s_beg[RW]

readers and accessor for properties

s_end[RW]

readers and accessor for properties

s_frame[R]
s_len[R]
s_seq[R]
score[R]
subject_id[R]

Public Class Methods

new(q_beg,q_end,s_beg,s_end) click to toggle source

initializes a new hit

# File lib/scbi_blast/blast_hit.rb, line 27
def initialize(q_beg,q_end,s_beg,s_end)
  set_limits(q_beg,q_end,s_beg,s_end)
end

Public Instance Methods

acc=(v) click to toggle source
# File lib/scbi_blast/blast_hit.rb, line 91
def acc=(v)
  @acc = v
end
align_len=(v) click to toggle source
# File lib/scbi_blast/blast_hit.rb, line 66
def align_len=(v)
  @align_len = v.to_i
end
bit_score=(v) click to toggle source
# File lib/scbi_blast/blast_hit.rb, line 82
def bit_score=(v)
  @bit_score = v.to_f
end
compare?(hit) click to toggle source
# File lib/scbi_blast/blast_hit.rb, line 147
def compare?(hit)
  res=true
  
  res &&=( @q_beg==hit.q_beg)
  res &&=( @q_end==hit.q_end)
  res &&=( @s_beg==hit.s_beg)
  res &&=( @s_end==hit.s_end)
  
  res &&=( @subject_id==hit.subject_id)
  res &&=( @align_len==hit.align_len)
  res &&=( @gaps==hit.gaps)
  res &&=( @mismatches==hit.mismatches)
  
  
  res &&=( @reversed==hit.reversed)
  res &&=( @score==hit.score)
  res &&=( @acc==hit.acc)
  res &&=( @definition==hit.definition)
  
  
  res &&=( @q_frame==hit.q_frame)
  res &&=( @s_frame==hit.s_frame)
  res &&=( @full_subject_length==hit.full_subject_length)
  res &&=( @ident==hit.ident)
  
  
  res &&=( @e_val==hit.e_val)
  res &&=( @bit_score==hit.bit_score)
  res &&=( @q_seq==hit.q_seq)
  res &&=( @s_seq==hit.s_seq)
  
  if !res 
    puts "Hits not equal:"
    puts inspect
    puts "="*20
    puts hit.inspect
  end
  
  return res
end
definition=(v) click to toggle source
# File lib/scbi_blast/blast_hit.rb, line 95
def definition=(v)
  @definition = v
end
e_val=(v) click to toggle source
# File lib/scbi_blast/blast_hit.rb, line 78
def e_val=(v)
  @e_val = v.to_f
end
full_subject_length=(v) click to toggle source
# File lib/scbi_blast/blast_hit.rb, line 123
def full_subject_length=(v)
  @full_subject_length = v.to_i
end
gaps=(v) click to toggle source
# File lib/scbi_blast/blast_hit.rb, line 74
def gaps=(v)
  @gaps = v.to_i
end
get_subject() click to toggle source
# File lib/scbi_blast/blast_hit.rb, line 135
def get_subject
  return @subject_id
end
ident=(v) click to toggle source
# File lib/scbi_blast/blast_hit.rb, line 62
def ident=(v)
  @ident = v.to_f
end
inspect() click to toggle source

puts all hit info on a string

# File lib/scbi_blast/blast_hit.rb, line 128
def inspect
  res =  "Hit: #{@subject_id.ljust(10)} #{@ident.to_s.rjust(4)} #{@align_len.to_s.rjust(2)} #{@mismatches.to_s.rjust(2)} #{@gaps.to_s.rjust(2)} #{@q_beg.to_s.rjust(5)} #{@q_end.to_s.rjust(5)} #{@s_beg.to_s.rjust(5)} #{@s_end.to_s.rjust(5)} #{@e_val.to_s.rjust(5)}  #{@bit_score.to_s.rjust(5)} #{@reversed.to_s.rjust(5)}"
  res += " #{@score.to_s.rjust(5)} #{@acc.ljust(10)} #{@definition.ljust(10)} #{@q_frame.to_s.rjust(2)} #{@s_frame.to_s.rjust(2)} #{@full_subject_length.to_s.rjust(5)} #{@q_seq}.#{@s_seq}.#{@q_len}.#{@s_len}"

  return res
end
mismatches=(v) click to toggle source
# File lib/scbi_blast/blast_hit.rb, line 70
def mismatches=(v)
  @mismatches = v.to_i
end
q_frame=(v) click to toggle source
# File lib/scbi_blast/blast_hit.rb, line 99
def q_frame=(v)
  @q_frame = v.to_i
end
q_len=(v) click to toggle source
# File lib/scbi_blast/blast_hit.rb, line 119
def q_len=(v)
  @q_len = v.to_i
end
q_seq=(v) click to toggle source
# File lib/scbi_blast/blast_hit.rb, line 111
def q_seq=(v)
  @q_seq = v
end
query_overlaps?(hit,threshold=0) click to toggle source
# File lib/scbi_blast/blast_hit.rb, line 139
def query_overlaps?(hit,threshold=0)
  return ((@q_beg<=(hit.q_end+threshold)) and ((@q_end+threshold)>=hit.q_beg))
end
s_frame=(v) click to toggle source
# File lib/scbi_blast/blast_hit.rb, line 103
def s_frame=(v)
  @s_frame = v.to_i
end
s_len=(v) click to toggle source
# File lib/scbi_blast/blast_hit.rb, line 115
def s_len=(v)
  @s_len = v.to_i
end
s_seq=(v) click to toggle source
# File lib/scbi_blast/blast_hit.rb, line 107
def s_seq=(v)
  @s_seq = v
end
score=(v) click to toggle source
# File lib/scbi_blast/blast_hit.rb, line 86
def score=(v)

  @score = v.to_f
end
set_limits(q_beg,q_end,s_beg,s_end) click to toggle source
# File lib/scbi_blast/blast_hit.rb, line 31
def set_limits(q_beg,q_end,s_beg,s_end)
  # puts "Set limits #{[q_beg,q_end,s_beg,s_end].join(',')}"
  @q_beg = q_beg.to_i-1  #blast indexes are 1 based
  @q_end = q_end.to_i-1
  @s_beg = s_beg.to_i-1
  @s_end = s_end.to_i-1
  # puts "Set limits2 #{[@q_beg,@q_end,@s_beg,@s_end].join(',')}"
  
  @s_len=0
  @q_len=0

  @reversed = false

  # TODO -Reversed should be taken from q_frame and s_frame instead of s_end. In proteins comes from q_frame. In nt from s_frames.

  # check if reversed
  if @s_beg > @s_end
    @s_beg = s_end.to_i-1
    @s_end = s_beg.to_i-1
    @reversed = true
  end
  # puts "Set limits3 #{[@q_beg,@q_end,@s_beg,@s_end].join(',')}"
  # puts "Set limits4 #{[q_beg,q_end,s_beg,s_end].join(',')}"
  
end
size() click to toggle source
# File lib/scbi_blast/blast_hit.rb, line 143
def size
  return (@q_end-@q_beg+1)
end
subject_id=(v) click to toggle source

some accessors

# File lib/scbi_blast/blast_hit.rb, line 58
def subject_id=(v)
  @subject_id = v
end