module Bio::Blast::Remote::GenomeNet::Information

Information for GenomeNet BLAST search.

Private Instance Methods

_parse_databases() click to toggle source

gets information from remote host and parses database information

# File lib/bio/appl/blast/genomenet.rb, line 97
def _parse_databases
  if defined? @parse_databases
    return nil if @parse_databases
  end
  databases = {}
  dbdescs = {}
  key = nil
  host = Bio::Blast::Remote::Genomenet::Host
  http = Bio::Command.new_http(host)
  result = http.get('/tools/blast/')
  #p result.body
  result.body.each_line do |line|
    case line
    when /\"set\_dbtype\(this\.form\,\(prot|nucl)\\)\"/
      key = $1
      databases[key] ||= []
      dbdescs[key] ||= {}
    when /\<input *type\=\"radio\" *name\=\"dbname\" *value\=\"([^\"]+)\"[^\>]*\>([^\<\>]+)/
      db = $1.freeze
      desc = $2.strip.freeze
      databases[key].push db
      dbdescs[key][db] = desc
    end
  end

  # mine-aa and mine-nt should be removed
  [ 'prot', 'nucl' ].each do |mol|
    ary  = databases[mol] || []
    hash = dbdescs[mol] || {}
    [ 'mine-aa', 'mine-nt' ].each do |k|
      ary.delete(k)
      hash.delete(k)
    end
    databases[mol] = ary.freeze
    dbdescs[mol] = hash
  end

  [ databases, dbdescs ].each do |h|
    prot = h['prot']
    nucl = h['nucl']
    h.delete('prot')
    h.delete('nucl')
    h['blastp'] = prot
    h['blastx'] = prot
    h['blastn']  = nucl
    h['tblastn'] = nucl
    h['tblastx'] = nucl
  end

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