https://github.com/csw/bioruby-maf
Tip revision: 02961d2e33d8c45ca0a115e7faa9adc43d180c1c authored by Clayton Wheeler on 12 June 2012, 15:57:24 UTC
Cleaned up code a little.
Cleaned up code a little.
Tip revision: 02961d2
maf_index
#!/usr/bin/env ruby
require 'benchmark'
require 'bio-maf'
require 'optparse'
require 'ostruct'
def build_index(maf, index)
parser = Bio::MAF::Parser.new(maf)
idx = Bio::MAF::KyotoIndex.build(parser, index)
idx.close
end
PRINTERS = {
'flat' => :FlatPrinter,
'stack' => :CallStackPrinter,
'graph' => :GraphHtmlPrinter
}
options = OpenStruct.new
options.mode = :build
op = OptionParser.new do |opts|
opts.banner = "Usage: maf_index [options] <maf> <index>"
#opts.separator ""
#opts.separator "Options:"
opts.on("--time", "print elapsed time") do
options.bench = true
end
opts.on("-d", "--dump") do
options.mode = :dump
end
opts.on("--ruby-prof PATH", "Profile with ruby-prof") do |pspec|
require 'ruby-prof'
if pspec =~ /(\w+):(.+)/
options.ruby_prof_printer = RubyProf.const_get(PRINTERS.fetch($1))
options.ruby_prof_path = $2
else
options.ruby_prof_printer = Ruby_Prof::FlatPrinter
options.ruby_prof_path = pspec
end
end
end
op.parse!(ARGV)
maf_p = ARGV.shift if options.mode == :build
index_p = ARGV.shift
unless (maf_p || options.mode == :dump) && index_p
$stderr.puts op
exit 1
end
if options.ruby_prof_path
RubyProf.start
end
case options.mode
when :build
if ! options.bench
build_index(maf_p, index_p)
else
bm_res = Benchmark.measure do
build_index(maf_p, index_p)
end
puts bm_res
end
when :dump
idx = Bio::MAF::KyotoIndex.open(index_p)
idx.dump
else
raise "Unsupported mode: #{options.mode}"
end
if options.ruby_prof_path
res = RubyProf.stop
printer = options.ruby_prof_printer.new(res)
File.open(options.ruby_prof_path, 'w') do |f|
printer.print(f)
end
end