class Bio::DB::Exonerate::Vulgar

Attributes

label[R]
query_end[R]
query_length[R]
query_start[R]
record[R]
snp_in_gap[R]
target_end[R]
target_length[R]
target_start[R]

Public Class Methods

new(label, ql, tl, target_start, target_multiply, query_start, query_multiply, record) click to toggle source
# File lib/bio/db/exonerate.rb, line 231
def initialize(label, ql, tl, target_start, target_multiply, query_start, query_multiply, record)
  @label = label
  @query_length = ql
  @target_length = tl
  @query_start = query_start
  @query_end = query_start + (query_multiply   * query_length)
  @target_start = target_start
  @target_end = target_start + (target_multiply * target_length)
  @record = record
  @snp_in_gap = false
end

Public Instance Methods

query_id() click to toggle source
# File lib/bio/db/exonerate.rb, line 249
def query_id
  record.query_id
end
query_region() click to toggle source
# File lib/bio/db/exonerate.rb, line 298
def query_region
  reg = Bio::DB::Fasta::Region.new()
  reg.entry = query_id
  reg.orientation = record.query_strand 
  if record.query_strand == :forward
    reg.start = @query_start + 1
    reg.end =  @query_end 
  elsif record.query_strand == :reverse
    reg.start = @query_end + 1
    reg.end =  @query_start 
  else
    raise  ExonerateException.new(), "Ivalid query orientation #{@query_strand}"
  end
  reg
end
target_flanking_region_from_position(position, flanking_size) click to toggle source
# File lib/bio/db/exonerate.rb, line 257
def target_flanking_region_from_position(position, flanking_size)
  reg = reg = Bio::DB::Fasta::Region.new()
  reg.entry = target_id
  target_snp_pos = target_position_from_query(position)
  return nil if snp_in_gap 
  reg.orientation = record.target_strand
  reg.start = target_snp_pos - flanking_size
  reg.end = target_snp_pos + flanking_size
  raise  ExonerateException.new "Target Query out of bounds!" unless position.between?(query_start, query_end)

  reg
end
target_id() click to toggle source
# File lib/bio/db/exonerate.rb, line 253
def target_id
  record.target_id
end
target_position_from_query(position) click to toggle source
# File lib/bio/db/exonerate.rb, line 270
def target_position_from_query(position)
  raise ExonerateException.new(), "Position: #{position} not in range (#{query_start}-#{query_end}) #{self.to_s} " unless position.between?(query_start, query_end) or position.between?(query_end, query_start) 
  offset = 0
  ret = 0
  if record.query_strand == :forward
    offset = position - query_start
  elsif record.query_strand == :reverse
    offset = query_start - position
  else
    raise ExonerateException.new(), "The strand is not forward or reverse (#{record.query_strand}) ! #{self.inspect}"
  end

  if record.target_strand == :forward
    ret = target_start + offset
  elsif record.target_strand == :reverse
    ret = target_start - offset + 1
  else
    raise ExonerateException.new(), "The strand is not forward or reverse! #{self.inspect}"
  end
  #THis is in case the position is on a gap.
  if @target_length == 0 and label == :G
    @snp_in_gap = true
    ret = target_start
  end
  raise ExonerateException.new(), "Return position #{ret} outside block (#{target_start}-#{target_end}, #{self.inspect})" unless ret.between?(target_start, target_end) or ret.between?(target_end, target_start)
  ret
end
target_region() click to toggle source
# File lib/bio/db/exonerate.rb, line 314
def target_region
  reg = Bio::DB::Fasta::Region.new()

  reg.entry = target_id
  reg.orientation = record.target_strand 
  if record.target_strand == :forward
    reg.start = @target_start + 1
    reg.end =  @target_end 
  elsif record.target_strand == :reverse
    reg.start = @target_end + 1
    reg.end =  @target_start 
  else
    raise  ExonerateException.new(), "Ivalid target orientation #{@target_strand}"
  end
  reg
end
to_s() click to toggle source
# File lib/bio/db/exonerate.rb, line 243
def to_s
  out = String.new
  out << @label.to_s << "\t" << @query_length.to_s << "\t" << @target_length.to_s << "\t" << @query_start.to_s << "\t" << @query_end.to_s << "\t" << @target_start.to_s << "\t" << @target_end.to_s 
  out
end