class Bio::Bam::File

Class providing access to BAM files

Public Class Methods

new(filename) click to toggle source

Creates an object for access to BAM file

# File lib/bio-sambamba/bamfile.rb, line 20
def initialize(filename)
  @filename = filename
  check_file_existence filename
end

Public Instance Methods

[](chr) click to toggle source
# File lib/bio-sambamba/bamfile.rb, line 62
def [](chr)
  fetch(chr, nil)
end
alignments() click to toggle source

Returns an AlignmentIterator object for iterating over all alignments in the file

# File lib/bio-sambamba/bamfile.rb, line 31
def alignments
  cmdline = ['sambamba', 'view', '--format', 'msgpack', @filename]
  Bio::Bam::AlignmentIterator.new(cmdline, reference_sequence_names)
end
fetch(chr, region) click to toggle source

Fetches alignments overlapping a region. Returns an AlignmentIterator object.


Arguments:

  • chr: reference sequence

  • region: a Range representing an interval. Coordinates are 1-based.

# File lib/bio-sambamba/bamfile.rb, line 50
def fetch(chr, region)
  cmdline = ['sambamba', 'view', '--format=msgpack', @filename]
  iter = Bio::Bam::AlignmentIterator.new(cmdline, reference_sequence_names)
  iter.chromosome = chr
  iter.region = region
  iter
end
has_index?() click to toggle source

True if index file was found

# File lib/bio-sambamba/bamfile.rb, line 37
def has_index?
  fn1 = @filename + '.bai'
  fn2 = @filename.chomp(RubyFile.extname(@filename)) + '.bai'
  RubyFile.exists?(fn1) || RubyFile.exists?(fn2)
end
header() click to toggle source

SAM header

# File lib/bio-sambamba/bamfile.rb, line 26
def header
  @header ||= Bio::Bam::SamHeader.new(@filename)
end
reference_sequences() click to toggle source
# File lib/bio-sambamba/bamfile.rb, line 58
def reference_sequences
  @reference_sequences ||= JSON.parse(Bio::Command.query_command ['sambamba', 'view', '-I', @filename])
end

Private Instance Methods

reference_sequence_names() click to toggle source
# File lib/bio-sambamba/bamfile.rb, line 67
def reference_sequence_names
  @reference_sequence_names ||= reference_sequences.map {|ref| ref['name']}
end