module RGFATools::PBubbles

Methods for the RGFA class, which involve a traversal of the graph following links

Public Instance Methods

remove_p_bubble(segment_end1, segment_end2, count_tag: @default[:count_tag], unit_length: @default[:unit_length]) click to toggle source

Removes a p-bubble between segment_end1 and segment_end2 @param [RGFA::SegmentEnd] segment_end1 a segment end @param [RGFA::SegmentEnd] segment_end2 another segment end @!macro [new] count_tag

@param count_tag [Symbol] <i>(defaults to: +:RC+ or the value set by
  {#set_default_count_tag})</i> the count tag to use for coverage
  computation

@!macro [new] unit_length

@param unit_length [Integer] <i>(defaults to: 1 or the value set by
  {#set_count_unit_length})</i> the unit length to use for coverage
  computation

@return [RGFA] self

# File lib/rgfatools/p_bubbles.rb, line 42
def remove_p_bubble(segment_end1, segment_end2,
                    count_tag: @default[:count_tag],
                    unit_length: @default[:unit_length])
  n1 = neighbours(segment_end1).sort
  n2 = neighbours(segment_end2).sort
  raise if n1 != n2.map{|se| se.invert_end_type}
  raise if n1.any? {|se| connectivity(se[0]) != [1,1]}
  remove_proven_p_bubble(segment_end1, segment_end2, n1,
                         count_tag: count_tag,
                         unit_length: unit_length)
  return self
end
remove_p_bubbles() click to toggle source

Removes all p-bubbles in the graph @return [RGFA] self

# File lib/rgfatools/p_bubbles.rb, line 11
def remove_p_bubbles
  visited = Set.new
  segment_names.each do |sn|
    next if visited.include?(sn)
    if connectivity(sn) == [1,1]
      s1 = neighbours([sn, :B])[0]
      s2 = neighbours([sn, :E])[0]
      n1 = neighbours(s1).sort
      n2 = neighbours(s2).sort
      n1.each {|se| visited << se[0].name}
      if n1 == n2.map{|se| se.invert_end_type}
        remove_proven_p_bubble(s1, s2, n1)
      end
    end
  end
  return self
end

Private Instance Methods

remove_proven_p_bubble(segment_end1, segment_end2, alternatives, count_tag: @default[:count_tag], unit_length: @default[:unit_length]) click to toggle source
# File lib/rgfatools/p_bubbles.rb, line 57
def remove_proven_p_bubble(segment_end1, segment_end2, alternatives,
                           count_tag: @default[:count_tag],
                           unit_length: @default[:unit_length])
  coverages = alternatives.map{|s|segment!(s[0]).coverage(
    count_tag: count_tag, unit_length: unit_length)}
  alternatives.delete_at(coverages.index(coverages.max))
  alternatives.each {|s| delete_segment(s[0])}
end