https://github.com/csw/bioruby-maf
Revision f443fdc142c5992c47b6639f3a613d2496350f7e authored by Clayton Wheeler on 04 August 2012, 22:34:14 UTC, committed by Clayton Wheeler on 04 August 2012, 22:34:14 UTC
1 parent 4fc31e2
Tip revision: f443fdc142c5992c47b6639f3a613d2496350f7e authored by Clayton Wheeler on 04 August 2012, 22:34:14 UTC
Use GZipReader instead of a gzip pipe. Performs better.
Use GZipReader instead of a gzip pipe. Performs better.
Tip revision: f443fdc
maf_index
#!/usr/bin/env ruby
require 'benchmark'
require 'bio-maf'
require 'optparse'
require 'ostruct'
PRINTERS = {
'flat' => :FlatPrinter,
'stack' => :CallStackPrinter,
'graph' => :GraphHtmlPrinter
}
$options = OpenStruct.new
$options.mode = :build
$options.ref_only = true
def build_index(maf, index)
parser = Bio::MAF::Parser.new(maf,
:parse_extended => false)
idx = Bio::MAF::KyotoIndex.build(parser, index, $options.ref_only)
idx.close
end
op = OptionParser.new do |opts|
opts.banner = "Usage: maf_index [options] <maf> <index>"
opts.separator ""
opts.separator "Options:"
opts.on("-a", "--all", "Index all sequences, not just reference seq") do
$options.ref_only = false
end
Bio::MAF::handle_logging_options(opts)
opts.on("--time", "print elapsed time") do
$options.bench = true
end
opts.on("-d", "--dump", "Dump contents of given INDEX") 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)
Bio::Log::CLI.configure('bio-maf')
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
Computing file changes ...