class Bio::MAF::Writer

Attributes

f[R]
path[R]

Public Class Methods

new(fspec) click to toggle source
# File lib/bio/maf/writer.rb, line 6
def initialize(fspec)
  if fspec.respond_to? :write
    @f = fspec
    if fspec.respond_to? :path
      @path = fspec.path
    end
  else
    @path = fspec
    @f = File.open(fspec, 'w')
  end
end

Public Instance Methods

flatten_vars(vars) click to toggle source
# File lib/bio/maf/writer.rb, line 18
def flatten_vars(vars)
  vars.to_a.collect {|k, v| "#{k}=#{v}"}.join(" ")
end
write_block(block) click to toggle source
# File lib/bio/maf/writer.rb, line 34
def write_block(block)
  lines = ["a #{flatten_vars(block.vars)}"]
  block.sequences.each do |seq| 
    write_seq(seq, lines)
  end
  lines << "\n"
  f.write(lines.join("\n"))
end
write_blocks(blocks) click to toggle source
# File lib/bio/maf/writer.rb, line 27
def write_blocks(blocks)
  blocks.each do |block|
    write_block(block)
  end
  f.flush
end
write_header(header) click to toggle source
# File lib/bio/maf/writer.rb, line 22
def write_header(header)
  f.write "##maf #{flatten_vars(header.vars)}\n"
  f.write "##{header.alignment_params}\n" if header.alignment_params
end
write_seq(s, lines) click to toggle source
# File lib/bio/maf/writer.rb, line 43
def write_seq(s, lines)
  lines << sprintf("%s %-20s %12d %2d %s %9d %s",
                   s.empty? ? "e" : "s",
                   s.source,
                   s.start,
                   s.size,
                   s.strand,
                   s.src_size,
                   s.empty? ? s.status : s.text)
  if s.quality
    lines << sprintf("q %-20s                           %s",
                     s.source, s.quality)
  end
  if s.i_data
    lines << sprintf("i %-20s %s %s %s %s",
                     s.source, *s.i_data)
  end
end