sylfy 0.0.2 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -0
- data/Rakefile +13 -0
- data/lib/sylfy.rb +12 -25
- data/lib/sylfy/add.rb +10 -0
- data/lib/sylfy/add/bio_kegg_kgml.rb +108 -0
- data/lib/sylfy/datamodel.rb +141 -0
- data/lib/sylfy/feature.rb +128 -0
- data/lib/sylfy/mathf.rb +40 -0
- data/lib/sylfy/pattern.rb +14 -0
- data/lib/sylfy/service.rb +34 -0
- data/lib/sylfy/service/biocycrest.rb +41 -0
- data/lib/sylfy/service/cactusncirest.rb +64 -0
- data/lib/sylfy/service/cbioportal.rb +156 -0
- data/lib/sylfy/service/chembl.rb +106 -0
- data/lib/sylfy/service/ebisoap.rb +55 -0
- data/lib/sylfy/service/ensemblrest.rb +64 -0
- data/lib/sylfy/service/ensemblrest/archive.rb +35 -0
- data/lib/sylfy/service/ensemblrest/comparative.rb +146 -0
- data/lib/sylfy/service/ensemblrest/xrefs.rb +73 -0
- data/lib/sylfy/service/hgncrest.rb +52 -0
- data/lib/sylfy/service/keggrest.rb +6 -19
- data/lib/sylfy/service/keggrest/conv.rb +64 -40
- data/lib/sylfy/service/keggrest/find.rb +27 -48
- data/lib/sylfy/service/keggrest/get.rb +82 -0
- data/lib/sylfy/service/keggrest/link.rb +17 -37
- data/lib/sylfy/service/keggrest/list.rb +18 -50
- data/lib/sylfy/service/lipidmaprest.rb +228 -0
- data/lib/sylfy/service/pubchem.rb +71 -0
- data/lib/sylfy/service/pubchemrest.rb +249 -0
- data/lib/sylfy/service/rest.rb +26 -0
- data/lib/sylfy/service/soapwsdl.rb +78 -0
- data/lib/sylfy/service/unichemrest.rb +106 -0
- data/lib/sylfy/utils.rb +18 -0
- data/lib/sylfy/utils/keyhash.rb +1149 -0
- data/lib/sylfy/utils/reactionkey.rb +197 -0
- data/lib/sylfy/version.rb +1 -1
- data/sylfy.gemspec +11 -15
- data/test/test_kegg_rest.rb +58 -0
- data/test/test_reactionkey.rb +37 -0
- metadata +87 -15
- data/lib/sylfy/math.rb +0 -24
- data/lib/sylfy/service/keggrest/restKegg_get.rb +0 -130
data/lib/sylfy/mathf.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
#
|
2
|
+
# UniSysDB library in Ruby
|
3
|
+
# Copyright (C) 2012
|
4
|
+
#
|
5
|
+
# author: Natapol Pornputtapong <natapol@chalmers.se>
|
6
|
+
#
|
7
|
+
# Documentation: Natapol Pornputtapong (RDoc'd and embellished by William Webber)
|
8
|
+
#
|
9
|
+
|
10
|
+
require 'gsl'
|
11
|
+
|
12
|
+
module Sylfy
|
13
|
+
# additional Mathematic function
|
14
|
+
module Mathf
|
15
|
+
|
16
|
+
# calculate log factorial
|
17
|
+
# @param n [Int]
|
18
|
+
def self.lnfactorial(n)
|
19
|
+
return GSL::Sf::lngamma(n+1)
|
20
|
+
end
|
21
|
+
|
22
|
+
# calculate log combinatorial
|
23
|
+
# @param n [Int] the population size
|
24
|
+
# @param r [Int] the number of draws
|
25
|
+
def self.lncombinatorial(n, r)
|
26
|
+
return lnfactorial(n) - lnfactorial(r) - lnfactorial(n-r)
|
27
|
+
end
|
28
|
+
|
29
|
+
# hypergeometric function
|
30
|
+
# @param nn [Int] the population size
|
31
|
+
# @param kk [Int] the number of success states in the population
|
32
|
+
# @param n [Int] the number of draws
|
33
|
+
# @param k [Int] the number of successes
|
34
|
+
def self.hypergeometric(k, nn, kk, n)
|
35
|
+
log_h = lncombinatorial(kk, k) + lncombinatorial(nn-kk, n-k) - lncombinatorial(nn, n)
|
36
|
+
return (Math::E ** log_h)
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
#
|
2
|
+
# Sylfy library in Ruby
|
3
|
+
# Copyright (C) 2012
|
4
|
+
#
|
5
|
+
# @author Natapol Pornputtapong <natapol@chalmers.se>
|
6
|
+
#
|
7
|
+
|
8
|
+
module Sylfy
|
9
|
+
module Pattern
|
10
|
+
INCHI = /^InChI\=1S\/[A-Za-z0-9\.\+]+(\/[cnpqbtmsih][A-Za-z0-9\-\+\(\)\,\?\*\;\.]+)*$/
|
11
|
+
SPINCHI = /^InChI\=1[S]?\/[A-Za-z0-9\.\+]+(\/[cnpqbtmsih][A-Za-z0-9\-\+\(\)\,\?\*\;\.]+)*$/
|
12
|
+
INCHIKEY = /^[A-Z]{14}\-[A-Z]{10}(\-[A-N])?/
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
#
|
2
|
+
# UniSysDB library in Ruby
|
3
|
+
# Copyright (C) 2012
|
4
|
+
#
|
5
|
+
# author: Natapol Pornputtapong <natapol.por@gmail.com>
|
6
|
+
#
|
7
|
+
# Documentation: Natapol Pornputtapong (RDoc'd and embellished by William Webber)
|
8
|
+
#
|
9
|
+
|
10
|
+
require 'rubabel'
|
11
|
+
|
12
|
+
#require 'sylfy/service/keggrest'
|
13
|
+
require 'sylfy/service/ensemblrest'
|
14
|
+
require 'sylfy/service/pubchem'
|
15
|
+
require 'sylfy/service/ebisoap'
|
16
|
+
require 'sylfy/service/lipidmaprest'
|
17
|
+
require 'sylfy/service/unichemrest'
|
18
|
+
require 'sylfy/service/biocycrest'
|
19
|
+
require 'sylfy/service/cactusncirest'
|
20
|
+
require 'sylfy/service/rest'
|
21
|
+
|
22
|
+
module Sylfy
|
23
|
+
# A module supports as interfaces for web services
|
24
|
+
module Service
|
25
|
+
# Raise when puts wrong parameter
|
26
|
+
class ParameterError < Exception
|
27
|
+
|
28
|
+
end
|
29
|
+
# Raise when services return 404 error
|
30
|
+
class DataNotFound < Exception
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
#
|
2
|
+
# UniSysDB library in Ruby
|
3
|
+
# Copyright (C) 2012
|
4
|
+
#
|
5
|
+
# @author Natapol Pornputtapong <natapol@chalmers.se>
|
6
|
+
#
|
7
|
+
require 'open-uri'
|
8
|
+
require 'rexml/document'
|
9
|
+
|
10
|
+
module Sylfy
|
11
|
+
|
12
|
+
module Service
|
13
|
+
|
14
|
+
module Biocyc
|
15
|
+
module REST
|
16
|
+
@@baseuri = 'http://websvc.biocyc.org/apixml?'
|
17
|
+
#~ @@prefix = { 'CAS Registry Number'=>'cas:', 'KEGG COMPOUND'=>'kegg.compound:', 'KEGG DRUG'=>'kegg.drug:', 'DrugBank'=>'drugbank:', 'PDBeChem'=>'pdb-ccd:' }
|
18
|
+
|
19
|
+
module_function
|
20
|
+
|
21
|
+
def apixml(apifn, id, detail = 'none')
|
22
|
+
detail = 'none' if !['none', 'low', 'full'].include?(detail)
|
23
|
+
uri = "#{@@baseuri}fn=#{apifn}&id=#{id}&detail=#{detail}"
|
24
|
+
begin
|
25
|
+
doc = REXML::Document.new(URI.parse(uri).read().strip())
|
26
|
+
rescue OpenURI::HTTPError
|
27
|
+
raise Unisys::ServiceException, "Id #{id} not found."
|
28
|
+
end
|
29
|
+
|
30
|
+
return doc
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
def reaction_reactants_and_products(id, detail = 'none')
|
35
|
+
RESTBioCyc.apixml('enzymes-of-reaction', id, detail)
|
36
|
+
#~ RESTBioCyc.apixml('reaction-reactants-and-products', id, detail)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
#
|
2
|
+
# UniSysDB library in Ruby
|
3
|
+
# Copyright (C) 2012
|
4
|
+
#
|
5
|
+
# @author Natapol Pornputtapong <natapol@chalmers.se>
|
6
|
+
#
|
7
|
+
require 'open-uri'
|
8
|
+
require 'net/http'
|
9
|
+
require 'json'
|
10
|
+
|
11
|
+
module Sylfy
|
12
|
+
|
13
|
+
module Service
|
14
|
+
|
15
|
+
|
16
|
+
module CIR
|
17
|
+
|
18
|
+
module REST
|
19
|
+
@@baseuri = "http://cactus.nci.nih.gov/chemical/structure"
|
20
|
+
@@representation_type = [:stdinchi, :stdinchikey, :smiles, :ficts, :ficus, :uuuuu, :sdf, :names, :hashisy, :image, :iupac_name]
|
21
|
+
|
22
|
+
module_function
|
23
|
+
|
24
|
+
def perform(identifier, representation, xml = false)
|
25
|
+
if @@representation_type.include?(representation.to_sym)
|
26
|
+
uri = "#{@@baseuri}/#{URI.escape(identifier, "[] ")}/#{representation.to_s}"
|
27
|
+
|
28
|
+
begin
|
29
|
+
return URI.parse(uri).read().strip().chomp.split(/\n/)
|
30
|
+
rescue OpenURI::HTTPError
|
31
|
+
return []
|
32
|
+
end
|
33
|
+
|
34
|
+
else
|
35
|
+
raise Sylfy::Service::ParameterError, "Wrong representation type. Should be #{@@representation_type.join(', ')}"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
module_function
|
42
|
+
|
43
|
+
def getnames(inchi)
|
44
|
+
result = []
|
45
|
+
inchi = Rubabel[inchi, :inchi].to_s(:inchikey) if inchi =~ /^InChI\=1S\/[A-Za-z0-9]+(\/[cnpqbtmsih][A-Za-z0-9\-\+\(\)\,]+)+$/
|
46
|
+
|
47
|
+
if inchi =~ /^[A-Z]{14}\-[A-Z]{10}(\-[A-N])?/
|
48
|
+
result += REST.perform(inchi, :iupac_name)
|
49
|
+
result += REST.perform(inchi, :names)
|
50
|
+
end
|
51
|
+
|
52
|
+
return result.uniq[0..21]
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
#require './unisys.rb'
|
60
|
+
#
|
61
|
+
#a = Unisys::Service::RESTCactusNCI
|
62
|
+
#puts a.perform('Aspirin', :stdinchi)
|
63
|
+
#puts a.perform('(2E)-eicosenoyl-CoA', :stdinchi)
|
64
|
+
#puts a.perform('18-HEPE', :names)
|
@@ -0,0 +1,156 @@
|
|
1
|
+
# @author Natapol Pornputtapong <natapol@chalmers.se>
|
2
|
+
#
|
3
|
+
require 'open-uri'
|
4
|
+
require 'net/http'
|
5
|
+
require 'rexml/document'
|
6
|
+
require 'csv'
|
7
|
+
|
8
|
+
module Sylfy
|
9
|
+
|
10
|
+
module CBioPortal
|
11
|
+
|
12
|
+
module REST
|
13
|
+
|
14
|
+
BASEURI = URI.parse('http://www.cbioportal.org')
|
15
|
+
#BASEURI = URI.parse('http://www.cbioportal.org/public-portal/webservice.do?')
|
16
|
+
HTTP = Net::HTTP.new(BASEURI.host, BASEURI.port)
|
17
|
+
|
18
|
+
module_function
|
19
|
+
# internal method supporting all ENSEMBLREST service
|
20
|
+
#
|
21
|
+
# @param get_path [String] service get_path
|
22
|
+
#
|
23
|
+
# @param option_type [Array] list of option type of service
|
24
|
+
#
|
25
|
+
# @param option [String] option of service please consult {http://beta.rest.ensembl.org/documentation/info/xref_id}
|
26
|
+
#
|
27
|
+
# @return [array of Hash] results
|
28
|
+
#
|
29
|
+
def service(get_path, csv_opts = {})
|
30
|
+
request = Net::HTTP::Get.new(get_path)
|
31
|
+
response = HTTP.request(request)
|
32
|
+
|
33
|
+
if response.code != "200"
|
34
|
+
raise Sylfy::Service::ParameterError, "Invalid response: #{response.code}"
|
35
|
+
else
|
36
|
+
return CSV.parse(response.body, {col_sep: "\t", skip_lines: /^#/, headers: true}.merge(csv_opts))
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
# internal method supporting all ENSEMBLREST service
|
41
|
+
#
|
42
|
+
# @param get_path [String] service get_path
|
43
|
+
#
|
44
|
+
# @param option_type [Array] list of option type of service
|
45
|
+
#
|
46
|
+
# @param option [String] option of service please consult {http://beta.rest.ensembl.org/documentation/info/xref_id}
|
47
|
+
#
|
48
|
+
# @return [array of Hash] results
|
49
|
+
#
|
50
|
+
def getTypesOfCancer()
|
51
|
+
get_path = "/public-portal/webservice.do?cmd=getTypesOfCancer"
|
52
|
+
return Sylfy::CBioPortal::REST.service(get_path)
|
53
|
+
end
|
54
|
+
|
55
|
+
# internal method supporting all ENSEMBLREST service
|
56
|
+
#
|
57
|
+
# @param get_path [String] service get_path
|
58
|
+
#
|
59
|
+
# @param option_type [Array] list of option type of service
|
60
|
+
#
|
61
|
+
# @param option [String] option of service please consult {http://beta.rest.ensembl.org/documentation/info/xref_id}
|
62
|
+
#
|
63
|
+
# @return [array of Hash] results
|
64
|
+
#
|
65
|
+
def getCancerStudies()
|
66
|
+
get_path = "/public-portal/webservice.do?cmd=getCancerStudies"
|
67
|
+
return Sylfy::CBioPortal::REST.service(get_path)
|
68
|
+
end
|
69
|
+
|
70
|
+
# internal method supporting all ENSEMBLREST service
|
71
|
+
#
|
72
|
+
# @param cancer_study_id [String] service get_path
|
73
|
+
#
|
74
|
+
# @return [array of Hash] results
|
75
|
+
#
|
76
|
+
def getGeneticProfiles(cancer_study_id)
|
77
|
+
get_path = "/public-portal/webservice.do?cmd=getGeneticProfiles&cancer_study_id=#{cancer_study_id}"
|
78
|
+
return Sylfy::CBioPortal::REST.service(get_path)
|
79
|
+
end
|
80
|
+
|
81
|
+
# internal method supporting all ENSEMBLREST service
|
82
|
+
#
|
83
|
+
# @param cancer_study_id [String] service get_path
|
84
|
+
#
|
85
|
+
# @return [array of Hash] results
|
86
|
+
#
|
87
|
+
def getCaseLists(cancer_study_id)
|
88
|
+
get_path = "/public-portal/webservice.do?cmd=getCaseLists&cancer_study_id=#{cancer_study_id}"
|
89
|
+
return Sylfy::CBioPortal::REST.service(get_path)
|
90
|
+
end
|
91
|
+
|
92
|
+
|
93
|
+
# internal method supporting all ENSEMBLREST service
|
94
|
+
#
|
95
|
+
# @param case_set_id [String] case set ID (required)
|
96
|
+
#
|
97
|
+
# @param genetic_profile_id [String] one or more genetic profile IDs (required). Multiple genetic profile IDs must be separated by comma (,) characters, or URL encoded spaces, e.g. +
|
98
|
+
#
|
99
|
+
# @param gene_list [String] one or more genes, specified as HUGO Gene Symbols or Entrez Gene IDs (required). Multiple genes must be separated by comma (,) characters, or URL encoded spaces, e.g. +
|
100
|
+
#
|
101
|
+
# @return [array of Hash] results
|
102
|
+
#
|
103
|
+
def getProfileData(case_set_id, genetic_profile_id, gene_list)
|
104
|
+
get_path = "/public-portal/webservice.do?cmd=getProfileData&case_set_id=#{case_set_id}&genetic_profile_id=#{genetic_profile_id}&gene_list=#{gene_list}"
|
105
|
+
return Sylfy::CBioPortal::REST.service(get_path)
|
106
|
+
end
|
107
|
+
|
108
|
+
# internal method supporting all ENSEMBLREST service
|
109
|
+
#
|
110
|
+
# @param case_set_id [String] case set ID (required)
|
111
|
+
#
|
112
|
+
# @param genetic_profile_id [String] one or more genetic profile IDs (required). Multiple genetic profile IDs must be separated by comma (,) characters, or URL encoded spaces, e.g. +
|
113
|
+
#
|
114
|
+
# @param gene_list [String] one or more genes, specified as HUGO Gene Symbols or Entrez Gene IDs (required). Multiple genes must be separated by comma (,) characters, or URL encoded spaces, e.g. +
|
115
|
+
#
|
116
|
+
# @return [array of Hash] results
|
117
|
+
#
|
118
|
+
def getMutationData(case_set_id, genetic_profile_id, gene_list)
|
119
|
+
get_path = "/public-portal/webservice.do?cmd=getMutationData&case_set_id=#{case_set_id}&genetic_profile_id=#{genetic_profile_id}&gene_list=#{gene_list}"
|
120
|
+
return Sylfy::CBioPortal::REST.service(get_path)
|
121
|
+
end
|
122
|
+
|
123
|
+
# internal method supporting all ENSEMBLREST service
|
124
|
+
#
|
125
|
+
# @param case_set_id [String] case set ID (required)
|
126
|
+
#
|
127
|
+
# @return [array of Hash] results
|
128
|
+
#
|
129
|
+
def getClinicalData(case_set_id)
|
130
|
+
get_path = "/public-portal/webservice.do?cmd=getClinicalData&case_set_id=#{case_set_id}"
|
131
|
+
return Sylfy::CBioPortal::REST.service(get_path)
|
132
|
+
end
|
133
|
+
|
134
|
+
# internal method supporting all ENSEMBLREST service
|
135
|
+
#
|
136
|
+
# @param case_set_id [String] case set ID (required)
|
137
|
+
#
|
138
|
+
# @param genetic_profile_id [String] one or more genetic profile IDs (required). Multiple genetic profile IDs must be separated by comma (,) characters, or URL encoded spaces, e.g. +
|
139
|
+
#
|
140
|
+
# @param gene_list [String] one or more genes, specified as HUGO Gene Symbols or Entrez Gene IDs (required). Multiple genes must be separated by comma (,) characters, or URL encoded spaces, e.g. +
|
141
|
+
#
|
142
|
+
# @return [array of Hash] results
|
143
|
+
#
|
144
|
+
def getMutationData(case_set_id, genetic_profile_id, gene_list)
|
145
|
+
get_path = "/public-portal/webservice.do?cmd=getMutationData&case_set_id=#{case_set_id}&genetic_profile_id=#{genetic_profile_id}&gene_list=#{gene_list}"
|
146
|
+
return Sylfy::CBioPortal::REST.service(get_path)
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
end
|
151
|
+
|
152
|
+
|
153
|
+
end
|
154
|
+
|
155
|
+
|
156
|
+
Sylfy::CBioPortal::REST.getMutationData("BRAF", "skcm_tcga_mutations").each {|e| p e; exit}
|
@@ -0,0 +1,106 @@
|
|
1
|
+
#
|
2
|
+
# UniSysDB library in Ruby
|
3
|
+
# Copyright (C) 2012
|
4
|
+
#
|
5
|
+
# @author Natapol Pornputtapong <natapol@chalmers.se>
|
6
|
+
#
|
7
|
+
require 'open-uri'
|
8
|
+
require 'net/http'
|
9
|
+
require 'json'
|
10
|
+
|
11
|
+
module Sylfy
|
12
|
+
|
13
|
+
module Service
|
14
|
+
|
15
|
+
|
16
|
+
module ChEMBL
|
17
|
+
module REST
|
18
|
+
|
19
|
+
|
20
|
+
@@baseuri = "https://www.ebi.ac.uk/chemblws"
|
21
|
+
|
22
|
+
module_function
|
23
|
+
|
24
|
+
def perform(input)
|
25
|
+
|
26
|
+
uri = "#{@@baseuri}/#{input}"
|
27
|
+
p uri
|
28
|
+
begin
|
29
|
+
return URI.parse(uri).read().strip()
|
30
|
+
rescue OpenURI::HTTPError => e
|
31
|
+
raise ServiceException, e
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
private :perform
|
36
|
+
# Method for setting inchi data member
|
37
|
+
#
|
38
|
+
# == Parameters:
|
39
|
+
# id::
|
40
|
+
# LipidMap id to search
|
41
|
+
# :id, :dataPrimarySource, :xrefs, :relations :inchi, :formula, :smiles, :inchiKey :names
|
42
|
+
|
43
|
+
def compounds(id, domain = '', target = '', json = true)
|
44
|
+
input = 'compounds'
|
45
|
+
if [:stdinchikey, :smiles, :substructure].include?(domain.to_sym)
|
46
|
+
input += "/#{domain}/#{id}"
|
47
|
+
input += ".json" if json
|
48
|
+
elsif domain.to_sym == :similaritiy
|
49
|
+
input += target.class == Integer ? "/#{domain}/#{id}/#{target}" : "/#{domain}/#{id}"
|
50
|
+
input += ".json" if json
|
51
|
+
elsif target.to_sym == :bioactivities
|
52
|
+
input += "/#{id}/bioactivities"
|
53
|
+
input += ".json" if json
|
54
|
+
elsif target == :image || target =~ /^image?dimensions=(\d+)$/ || target =~ /^image=(\d+)$/
|
55
|
+
if $1
|
56
|
+
input += "/#{id}/image?dimensions=#{$1}"
|
57
|
+
else
|
58
|
+
input += "/#{id}/image?dimensions=300"
|
59
|
+
end
|
60
|
+
else
|
61
|
+
input += "/#{id}"
|
62
|
+
input += ".json" if json
|
63
|
+
end
|
64
|
+
|
65
|
+
return perform(input)
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
def targets(id, domain = '', bioactiv = false, json = true)
|
70
|
+
input = 'targets'
|
71
|
+
if id == ''
|
72
|
+
|
73
|
+
elsif [:uniprot, :refseq].include?(domain.to_sym)
|
74
|
+
input += "/#{domain}/#{id}"
|
75
|
+
|
76
|
+
elsif bioactiv
|
77
|
+
input += "/#{id}/bioactivities"
|
78
|
+
else
|
79
|
+
input += "/#{id}"
|
80
|
+
end
|
81
|
+
|
82
|
+
input += ".json" if json
|
83
|
+
return perform(input)
|
84
|
+
|
85
|
+
end
|
86
|
+
|
87
|
+
def assays(id, bioactiv = false, json = true)
|
88
|
+
input = "assays/#{id}"
|
89
|
+
input += "/bioactivities" if bioactiv
|
90
|
+
input += ".json" if json
|
91
|
+
return perform(input)
|
92
|
+
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
100
|
+
|
101
|
+
#require 'json'
|
102
|
+
#require './unisys.rb'
|
103
|
+
#
|
104
|
+
#p JSON.load(Unisys::Service::RESTChEMBL.compounds('CHEMBL1'))
|
105
|
+
#p JSON.load(Unisys::Service::RESTChEMBL.targets('CHEMBL2477'))
|
106
|
+
#p JSON.load(Unisys::Service::RESTChEMBL.assays('CHEMBL1217643'))
|