Module: Bio::Big::FrameCodonHelpers::CreateShortFrame

Defined in:
lib/bigbio/db/emitters/orf_emitter.rb

Overview

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

Class Method Summary collapse

Class Method Details

.create_left(fr, orfs, nseq) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# 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) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
# 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