Parent

Class/Module Index [+]

Quicksearch

Bio::KEGG::API

Description

KEGG API is a web service to use KEGG system via SOAP/WSDL.

References

For more informations on KEGG API, see the following site and read the reference manual.

List of methods

As of KEGG API v5.0

KEGG API methods implemented only in BioRuby

In BioRuby, returned values are added filter method to pick up values in a complex data type as an array.

#!/usr/bin/env ruby

require 'bio'

serv = Bio::KEGG::API.new
results = serv.get_best_neighbors_by_gene("eco:b0002", "bsu")

# case 0 : without filter
results.each do |hit|
  print hit.genes_id1, "\t", hit.genes_id2, "\t", hit.sw_score, "\n"
end

# case 1 : select gene names and SW score only
fields = [:genes_id1, :genes_id2, :sw_score]
results.each do |hit|
  puts hit.filter(fields).join("\t")
end

# case 2 : also uses aligned position in each amino acid sequence etc.
fields1 = [:genes_id1, :start_position1, :end_position1, :best_flag_1to2]
fields2 = [:genes_id2, :start_position2, :end_position2, :best_flag_2to1]
results.each do |hit|
  print "> score: ", hit.sw_score, ", identity: ", hit.identity, "\n"
  print "1:\t", hit.filter(fields1).join("\t"), "\n"
  print "2:\t", hit.filter(fields2).join("\t"), "\n"
end

Using filter method will make it easy to change fields to select and keep the script clean.

These methods are wrapper for the methods without all in its name and internally iterate to retrive all the results using start/max_results value pairs described above. For example,

#!/usr/bin/env ruby

require 'soap/wsdlDriver'

wsdl = "http://soap.genome.jp/KEGG.wsdl"
serv = SOAP::WSDLDriverFactory.new(wsdl).create_driver
serv.generate_explicit_type = true

start = 1
max_results = 100

loop do
  results = serv.get_best_neighbors_by_gene('eco:b0002', start, max_results)
  break unless results      # when no more results returned
  results.each do |hit|
    print hit.genes_id1, "\t", hit.genes_id2, "\t", hit.sw_score, "\n"
  end
  start += max_results
end

can be witten as

#!/usr/bin/env ruby

require 'bio'

serv = Bio::KEGG::API.new

results = serv.get_all_best_neighbors_by_gene('eco:b0002')
results.each do |hit|
  print hit.genes_id1, "\t", hit.genes_id2, "\t", hit.sw_score, "\n"
end

Some methods of the KEGG API will return a URL of the generated image. This method save an image specified by the URL. The filename can be specified by its second argument, otherwise basename of the URL will be used.

#!/usr/bin/env ruby

require 'bio'

serv = Bio::KEGG::API.new("http://soap.genome.jp/v3.0/KEGG.wsdl")

list = ["eco:b1002", "eco:b2388"]
url = serv.mark_pathway_by_objects("path:eco00010", list)

# Save with the original filename (eco00010.gif in this case)
serv.save_image(url)

# or save as "save_image.gif"
serv.save_image(url, "save_image.gif")

These methods are for the shortcut and backward compatibility (these methods existed in the older version of the KEGG API).

Constants

SERVER_URI

Attributes

max_results[RW]

Returns current value for the 'max_results' number for the methods having start/max_results argument pairs or changes the default value for the 'max_results' count. If your request timeouts, try smaller value for the max_results.

start[RW]

Returns current value for the 'start' count for the methods having start/max_results argument pairs or changes the default value for the 'start' count.

Public Class Methods

new(wsdl = nil) click to toggle source

Connect to the KEGG API's SOAP server. A WSDL file will be automatically downloaded and parsed to generate the SOAP client driver. The default URL for the WSDL is soap.genome.jp/KEGG.wsdl but it can be changed by the argument or by wsdl= method.

# File lib/bio/io/keggapi.rb, line 196
def initialize(wsdl = nil)
  @wsdl = wsdl || SERVER_URI
  @log = nil
  @start = 1
  @max_results = 100
  create_driver
end

Public Instance Methods

get_aaseqs(ary = []) click to toggle source
# File lib/bio/io/keggapi.rb, line 292
def get_aaseqs(ary = [])
  result = ''
  step = [@max_results, 50].min
  0.step(ary.length, step) do |i|
    str = "-f -n a " + ary[i, step].join(" ")
    if entry = @driver.send(:bget, str)
      result << entry.to_s
    end
  end
  return result
end
get_all_best_best_neighbors_by_gene(genes_id) click to toggle source

def get_all_neighbors_by_gene(genes_id, org)

get_all(:get_neighbors_by_gene, genes_id, org)

end

# File lib/bio/io/keggapi.rb, line 230
def get_all_best_best_neighbors_by_gene(genes_id)
  get_all(:get_best_best_neighbors_by_gene, genes_id)
end
get_all_best_neighbors_by_gene(genes_id) click to toggle source
# File lib/bio/io/keggapi.rb, line 234
def get_all_best_neighbors_by_gene(genes_id)
  get_all(:get_best_neighbors_by_gene, genes_id)
end
get_all_genes_by_motifs(motif_id_list) click to toggle source
# File lib/bio/io/keggapi.rb, line 246
def get_all_genes_by_motifs(motif_id_list)
  get_all(:get_genes_by_motifs, motif_id_list)
end
get_all_genes_by_organism(org) click to toggle source
# File lib/bio/io/keggapi.rb, line 258
def get_all_genes_by_organism(org)
  get_all(:get_genes_by_organism, org)
end
get_all_linkdb_by_entry(entry_id, db) click to toggle source
# File lib/bio/io/keggapi.rb, line 262
def get_all_linkdb_by_entry(entry_id, db)
  get_all(:get_linkdb_by_entry, entry_id, db)
end
get_all_oc_members_by_gene(genes_id) click to toggle source
# File lib/bio/io/keggapi.rb, line 250
def get_all_oc_members_by_gene(genes_id)
  get_all(:get_oc_members_by_gene, genes_id)
end
get_all_paralogs_by_gene(genes_id) click to toggle source
# File lib/bio/io/keggapi.rb, line 242
def get_all_paralogs_by_gene(genes_id)
  get_all(:get_paralogs_by_gene, genes_id)
end
get_all_pc_members_by_gene(genes_id) click to toggle source
# File lib/bio/io/keggapi.rb, line 254
def get_all_pc_members_by_gene(genes_id)
  get_all(:get_pc_members_by_gene, genes_id)
end
get_all_reverse_best_neighbors_by_gene(genes_id) click to toggle source
# File lib/bio/io/keggapi.rb, line 238
def get_all_reverse_best_neighbors_by_gene(genes_id)
  get_all(:get_reverse_best_neighbors_by_gene, genes_id)
end
get_definitions(ary = []) click to toggle source
# File lib/bio/io/keggapi.rb, line 316
def get_definitions(ary = [])
  result = ''
  step = [@max_results, 50].min
  0.step(ary.length, step) do |i|
    str = ary[i, step].join(" ")
    if entry = @driver.send(:btit, str)
      result << entry.to_s
    end
  end
  return result
end
get_entries(ary = []) click to toggle source
# File lib/bio/io/keggapi.rb, line 280
def get_entries(ary = [])
  result = ''
  step = [@max_results, 50].min
  0.step(ary.length, step) do |i|
    str = ary[i, step].join(" ")
    if entry = @driver.send(:bget, str)
      result << entry.to_s
    end
  end
  return result
end
get_naseqs(ary = []) click to toggle source
# File lib/bio/io/keggapi.rb, line 304
def get_naseqs(ary = [])
  result = ''
  step = [@max_results, 50].min
  0.step(ary.length, step) do |i|
    str = "-f -n n " + ary[i, step].join(" ")
    if entry = @driver.send(:bget, str)
      result << entry.to_s
    end
  end
  return result
end
method_missing(*arg) click to toggle source
# File lib/bio/io/keggapi.rb, line 215
def method_missing(*arg)
  begin
    results = @driver.send(*arg)
  rescue Timeout::Error
    retry
  end
  results = add_filter(results)
  return results
end
save_image(url, filename = nil) click to toggle source
# File lib/bio/io/keggapi.rb, line 267
def save_image(url, filename = nil)
  schema, user, host, port, reg, path, = URI.split(url)
  filename ||= File.basename(path)

  http = Bio::Command.new_http(host, port)
  response = http.get(path)
  File.open(filename, "w+") do |f|
    f.print response.body
  end
  return filename
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.