class Bio::Blast::NCBIOptions

A class to parse and store NCBI-tools style command-line options. It is internally used in Bio::Blast and some other classes.

Attributes

option_pairs[R]

(protected) option pairs. internal use only.

Public Class Methods

new(options = []) click to toggle source

creates a new object from an array

# File lib/bio/appl/blast/ncbioptions.rb, line 30
def initialize(options = [])
  #@option_pairs = []
  @option_pairs = _parse_options(options)
end
parse(str) click to toggle source

parses a string and returns a new object

# File lib/bio/appl/blast/ncbioptions.rb, line 99
def self.parse(str)
  options = Shellwords.shellwords(str)
  self.new(options)
end

Public Instance Methods

==(other) click to toggle source

If self == other, returns true. Otherwise, returns false.

Calls superclass method
# File lib/bio/appl/blast/ncbioptions.rb, line 198
def ==(other)
  return true if super(other)
  begin
    oopts = other.options
  rescue
    return false
  end
  return self.options == oopts 
end
add_options(options) click to toggle source

Adds options from given array. Note that existing options will also be normalized.


Arguments:

  • options: options as an Array of String objects.

Returns

self

# File lib/bio/appl/blast/ncbioptions.rb, line 191
def add_options(options)
  @option_pairs.concat _parse_options(options)
  self.normalize!
  self
end
delete(key) click to toggle source

Delete the given option.


Arguments:

  • key: option name as a string, e.g. 'm', 'p', or '-m', '-p'.

Returns

String or nil

# File lib/bio/appl/blast/ncbioptions.rb, line 135
def delete(key)
  re = _key_to_regexp(key)

  # Note: the last option is used for return value
  # when two or more same option exist.
  oldvalue = nil
  @option_pairs = @option_pairs.delete_if do |pair|
    if re =~ pair[0] then
      oldvalue = pair[1]
      true
    else
      false
    end
  end
  return oldvalue
end
get(key) click to toggle source

Return the option.


Arguments:

  • key: option name as a string, e.g. 'm', 'p', or '-m', '-p'.

Returns

String or nil

# File lib/bio/appl/blast/ncbioptions.rb, line 116
def get(key)
  re = _key_to_regexp(key)

  # Note: the last option is used when two or more same option exist.
  value = nil
  @option_pairs.reverse_each do |pair|
    if re =~ pair[0] then
      value = pair[1]
      break
    end
  end
  return value
end
make_command_line_options(prior_options = []) click to toggle source

Returns an array for command-line options. prior_options are preferred to be used.

# File lib/bio/appl/blast/ncbioptions.rb, line 210
def make_command_line_options(prior_options = [])
  newopts = self.class.new(self.options)
  #newopts.normalize!
  prior_pairs = _parse_options(prior_options)
  prior_pairs.each do |pair|
    newopts.delete(pair[0])
  end
  newopts.option_pairs[0, 0] = prior_pairs
  newopts.options
end
normalize!() click to toggle source

Normalize options. For two or more same options (e.g. '-p blastn -p blastp'), only the last option is used. (e.g. '-p blastp' for above example).

Note that completely illegal options are left untouched.


Returns

self

# File lib/bio/appl/blast/ncbioptions.rb, line 74
def normalize!
  hash = {}
  newpairs = []
  @option_pairs.reverse_each do |pair|
    if pair.size == 2 then
      key = pair[0]
      unless hash[key] then
        newpairs.push pair
        hash[key] = pair
      end
    else
      newpairs.push pair
    end
  end
  newpairs.reverse!
  @option_pairs = newpairs
  self
end
options() click to toggle source

current options as an array of strings

# File lib/bio/appl/blast/ncbioptions.rb, line 94
def options
  @option_pairs.flatten
end
set(key, value) click to toggle source

Sets the option to given value.

For example, if you want to set '-p blastall' option,

obj.set('p', 'blastall')

or

obj.set('-p', 'blastall')

(above two are equivalent).


Arguments:

  • key: option name as a string, e.g. 'm', 'p'.

  • value: value as a string, e.g. '7', 'blastp'.

Returns

previous value; String or nil

# File lib/bio/appl/blast/ncbioptions.rb, line 165
def set(key, value)
  re = _key_to_regexp(key)
  oldvalue = nil
  flag = false
  # Note: only the last options is modified for multiple same options.
  @option_pairs.reverse_each do |pair|
    if re =~ pair[0] then
      oldvalue = pair[1]
      pair[1] = value
      flag = true
      break
    end
  end
  unless flag then
    key = "-#{key}" unless key[0, 1] == '-'
    @option_pairs.push([ key, value ])
  end
  oldvalue
end