module Bio::Big::FrameCodonHelpers::CreateShortFrame

Functions that move a frame forward, or backward, creating new short frames.

Public Class Methods

create_left(fr,orfs,nseq) click to toggle source
# File lib/bigbio/db/emitters/orf_emitter.rb, line 43
def CreateShortFrame.create_left fr,orfs,nseq
  # Reversed (real locations on contig):
  #
  # |  3                21  B |
  # ttaaatgtaatttaggtaaatttat atgtaaattaggta (reversed)
  # ...^--============xxx^=======xxx
  #       ^                     ^
  # Actual feed:
  #
  # s2=              s1=
  # "atggattaaatgta" "tatttaaatggatttaatgtaaatt"
  #  ......xxx=====   ~===xx^============--^...
  #  0  1  2  3        0  1  2  3
  seq1 = fr.seq             # original sequence
  len1 = seq1.size
  ntseq_pos1 = fr.ntseq_pos # right side of seq (|)
  bridge = len1 % 3    # chomp left side (B)
  remove = if orfs.size > 0
    len1 - bridge - (orfs.first.pos)*3 + 1
  else 
    0
  end
  ntseq_pos2 = ntseq_pos1+remove-1  # pos against main contig
  seq2 = nseq + seq1[0..(len1-remove)]
  ShortReversedFrameState.new seq2,ntseq_pos2,fr.min_size_codons*3
end
create_right(fr,orfs,rseq) click to toggle source
# File lib/bigbio/db/emitters/orf_emitter.rb, line 30
def CreateShortFrame.create_right fr,orfs,rseq
  seq = fr.seq
  ntseq_pos = fr.ntseq_pos
  remove = if orfs.size > 0
    orfs.last.rpos*3
  else 
    0
  end
  ntseq_pos += remove
  nseq = seq[remove..-1] + rseq
  ShortFrameState.new nseq,ntseq_pos,fr.min_size_codons*3
end