Class: Bio::DB::Exonerate::Vulgar

Inherits:
Object
  • Object
show all
Defined in:
lib/bio/db/exonerate.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(label, ql, tl, target_start, target_multiply, query_start, query_multiply, record) ⇒ Vulgar

Returns a new instance of Vulgar.



231
232
233
234
235
236
237
238
239
240
241
# 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

Instance Attribute Details

#labelObject (readonly)

Returns the value of attribute label.



230
231
232
# File 'lib/bio/db/exonerate.rb', line 230

def label
  @label
end

#query_endObject (readonly)

Returns the value of attribute query_end.



230
231
232
# File 'lib/bio/db/exonerate.rb', line 230

def query_end
  @query_end
end

#query_lengthObject (readonly)

Returns the value of attribute query_length.



230
231
232
# File 'lib/bio/db/exonerate.rb', line 230

def query_length
  @query_length
end

#query_startObject (readonly)

Returns the value of attribute query_start.



230
231
232
# File 'lib/bio/db/exonerate.rb', line 230

def query_start
  @query_start
end

#recordObject (readonly)

Returns the value of attribute record.



230
231
232
# File 'lib/bio/db/exonerate.rb', line 230

def record
  @record
end

#snp_in_gapObject (readonly)

Returns the value of attribute snp_in_gap.



230
231
232
# File 'lib/bio/db/exonerate.rb', line 230

def snp_in_gap
  @snp_in_gap
end

#target_endObject (readonly)

Returns the value of attribute target_end.



230
231
232
# File 'lib/bio/db/exonerate.rb', line 230

def target_end
  @target_end
end

#target_lengthObject (readonly)

Returns the value of attribute target_length.



230
231
232
# File 'lib/bio/db/exonerate.rb', line 230

def target_length
  @target_length
end

#target_startObject (readonly)

Returns the value of attribute target_start.



230
231
232
# File 'lib/bio/db/exonerate.rb', line 230

def target_start
  @target_start
end

Instance Method Details

#query_idObject



249
250
251
# File 'lib/bio/db/exonerate.rb', line 249

def query_id
  record.query_id
end

#query_regionObject



298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
# 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) ⇒ Object



257
258
259
260
261
262
263
264
265
266
267
268
# 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_idObject



253
254
255
# File 'lib/bio/db/exonerate.rb', line 253

def target_id
  record.target_id
end

#target_position_from_query(position) ⇒ Object

Raises:



270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
# 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_regionObject



314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
# 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_sObject



243
244
245
246
247
# 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