module Bio::Blast::Remote::DDBJ::Information

Information about DDBJ BLAST.

Private Instance Methods

_parse_databases() click to toggle source

(private) parse database information

# File lib/bio/appl/blast/ddbj.rb, line 33
def _parse_databases
  if defined? @parse_databases
    return nil if @parse_databases
  end
  drv = Bio::DDBJ::REST::Blast.new
  str = drv.getSupportDatabaseList

  databases = {}
  dbdescs = {}
  keys = [ 'blastn', 'blastp' ]
  keys.each do |key|
    databases[key] ||= []
    dbdescs[key] ||= {}
  end
  prefix = ''
  prefix_count = 0
  str.each_line do |line|
    a = line.strip.split(/\s*\-\s*/, 2)
    case a.size
    when 1
      prefix = a[0].to_s.strip
      prefix += ': ' unless prefix.empty?
      prefix_count = 0
      next #each_line
    when 0
      prefix = '' if prefix_count > 0
      next #each_line
    end
    name = a[0].to_s.strip.freeze
    desc = a[1].to_s.strip
    key = case desc
          when /\(NT\)\s*$/
            'blastn'
          when /\(AA\)\s*$/
            'blastp'
          else
            warn "DDBJ BLAST: could not determine the database is NT or AA: #{line.chomp}" if $VERBOSE
            next #each_line
          end
    desc = (prefix + desc).freeze
    prefix_count += 1
    databases[key].push name
    dbdescs[key][name] = desc
  end

  databases['blastp'] ||= []
  dbdescs['blastp'] ||= []

  databases['blastn'].freeze
  databases['blastp'].freeze

  databases['blastx']  = databases['blastp']
  dbdescs['blastx']    = dbdescs['blastp']
  databases['tblastn'] = databases['blastn']
  dbdescs['tblastn']   = dbdescs['blastn']
  databases['tblastx'] = databases['blastn']
  dbdescs['tblastx']   = dbdescs['blastn']

  @databases = databases
  @database_descriptions = dbdescs
  @parse_databases = true
  true
end