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