class Qu::Seqcluster::Options

Attributes

opts[R]

Public Class Methods

new(argv) click to toggle source
# File lib/qu/seqcluster/options.rb, line 26
def initialize(argv)
  @opts = parse_opts(argv)
end

Public Instance Methods

parse_opts(argv) click to toggle source
# File lib/qu/seqcluster/options.rb, line 31
      def parse_opts(argv)

        options = Seqcluster::default_options

        OptionParser.new do |opts|
          opts.banner = "#{PROGRAM} [#{VERSION}]: Cluster DNA/RNA based on k-mer algorithm
Usage: #{PROGRAM} -i seq.fasta -k 9 -c 0.9"

          opts.separator ""
          opts.separator "Required options:"
          opts.separator ""

          opts.on('-i', '--in File', String, 'Input sequence file in fasta format.') do |value|
            if File.directory?(value)
              $stderr.puts "Error: #{value} is a direcotry."
              exit
            end

            unless File.exists?(value)
              $stderr.puts "Error: #{value} is not exists."
              exit
            end
            options.in = value
          end

          opts.separator ""
          opts.separator "Optional options:"
          opts.separator ""

          opts.on('-k', '--kvalue Integer', Integer, "K value, default is #{options.kvalue}.") do |value|
            options.kvalue = value
          end

          opts.on("-o", "--out File", String, "Output file name for storing the results, default is screen.") do |value|
            options.out = File.open(value, 'w')
          end

          opts.on('-c', '--cutoff Float', Float, "Cutoff value for the similarity for cluster, default is #{options.cutoff}.") do |value|
            options.cutoff = value
          end

          opts.separator ""
          opts.separator ""

          opts.on("-h", "--help", "Show this message and quit") do
            puts opts
            exit
          end

          opts.on("-v", "--version", "Show version") do
            puts "#{PROGRAM} #{VERSION}"
            exit
          end

          opts.separator ""
          opts.separator "Author: Wubin Qu <quwubin@gmail.com>"
          opts.separator ""

          begin
            argv = ["-h"] if argv.empty?
            opts.parse!(argv)
          rescue OptionParser::ParseError => e
            $stderr.puts e.message, "\n", opts
            exit
          end

          if options.in.nil?
            $stderr.puts "Error: option -i required."
            exit
          end
        end
        return options
      end