bio-old-biofetch-emulator 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1acb392f7fea461ab1f0be3309f787a0bcc12cd7
4
+ data.tar.gz: 7ea00a53bcfb15ff82c7a868bfba893153b50476
5
+ SHA512:
6
+ metadata.gz: b83d93062361505b405e173cc87a955ec946d3111273b278348f20d56ed275650e83f2c4eb7c3ef8f1f861572b06b9c75c82d3f0a8a5cfa8339cdf10999b6f60
7
+ data.tar.gz: ab26f02e799f83c75f7d849572312eca527d648db9f3a1420652c2b5673c134f847ba396852f370c67a08a6bf102d6404101b21b8dc9446290df4fc1f95952a1
@@ -0,0 +1,5 @@
1
+ lib/**/*.rb
2
+ bin/*
3
+ -
4
+ features/**/*.feature
5
+ LICENSE.txt
@@ -0,0 +1,13 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.2
4
+ - 1.9.3
5
+ - jruby-19mode # JRuby in 1.9 mode
6
+
7
+ # - rbx-19mode
8
+ # - 1.8.7
9
+ # - jruby-18mode # JRuby in 1.8 mode
10
+ # - rbx-18mode
11
+
12
+ # uncomment this line if your project needs to run something other than `rake`:
13
+ # script: bundle exec rspec spec
data/Gemfile ADDED
@@ -0,0 +1,15 @@
1
+ source "http://rubygems.org"
2
+ # Add dependencies required to use your gem here.
3
+ # Example:
4
+ # gem "activesupport", ">= 2.3.5"
5
+
6
+ gem "bio", ">= 1.4.2"
7
+
8
+ # Add dependencies to develop your gem here.
9
+ # Include everything needed to run rake, tests, features, etc.
10
+ group :development do
11
+ gem "rake"
12
+ gem "rdoc"
13
+ gem "jeweler"
14
+ gem "bundler", ">= 1.0.21"
15
+ end
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2014 Naohisa Goto
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,47 @@
1
+ # bio-old-biofetch-emulator
2
+
3
+ [![Build Status](https://secure.travis-ci.org/ngoto/bioruby-old-biofetch-emulator.png)](http://travis-ci.org/ngoto/bioruby-old-biofetch-emulator)
4
+
5
+ Full description goes here
6
+
7
+ Note: this software is under active development!
8
+
9
+ ## Installation
10
+
11
+ ```sh
12
+ gem install bio-old-biofetch-emulator
13
+ ```
14
+
15
+ ## Usage
16
+
17
+ ```ruby
18
+ require 'bio-old-biofetch-emulator'
19
+ ```
20
+
21
+ The API doc is online. For more code examples see the test files in
22
+ the source tree.
23
+
24
+ ## Project home page
25
+
26
+ Information on the source tree, documentation, examples, issues and
27
+ how to contribute, see
28
+
29
+ http://github.com/ngoto/bioruby-old-biofetch-emulator
30
+
31
+ The BioRuby community is on IRC server: irc.freenode.org, channel: #bioruby.
32
+
33
+ ## Cite
34
+
35
+ If you use this software, please cite one of
36
+
37
+ * [BioRuby: bioinformatics software for the Ruby programming language](http://dx.doi.org/10.1093/bioinformatics/btq475)
38
+ * [Biogem: an effective tool-based approach for scaling up open source software development in bioinformatics](http://dx.doi.org/10.1093/bioinformatics/bts080)
39
+
40
+ ## Biogems.info
41
+
42
+ This Biogem is published at (http://biogems.info/index.html#bio-old-biofetch-emulator)
43
+
44
+ ## Copyright
45
+
46
+ Copyright (c) 2014 Naohisa Goto. See LICENSE.txt for further details.
47
+
@@ -0,0 +1,48 @@
1
+ = bio-old-biofetch-emulator
2
+
3
+ {<img
4
+ src="https://secure.travis-ci.org/ngoto/bioruby-old-biofetch-emulator.png"
5
+ />}[http://travis-ci.org/#!/ngoto/bioruby-old-biofetch-emulator]
6
+
7
+ Full description goes here
8
+
9
+ Note: this software is under active development!
10
+
11
+ == Installation
12
+
13
+ gem install bio-old-biofetch-emulator
14
+
15
+ == Usage
16
+
17
+ == Developers
18
+
19
+ To use the library
20
+
21
+ require 'bio-old-biofetch-emulator'
22
+
23
+ The API doc is online. For more code examples see also the test files in
24
+ the source tree.
25
+
26
+ == Project home page
27
+
28
+ Information on the source tree, documentation, issues and how to contribute, see
29
+
30
+ http://github.com/ngoto/bioruby-old-biofetch-emulator
31
+
32
+ The BioRuby community is on IRC server: irc.freenode.org, channel: #bioruby.
33
+
34
+ == Cite
35
+
36
+ If you use this software, please cite one of
37
+
38
+ * [BioRuby: bioinformatics software for the Ruby programming language](http://dx.doi.org/10.1093/bioinformatics/btq475)
39
+ * [Biogem: an effective tool-based approach for scaling up open source software development in bioinformatics](http://dx.doi.org/10.1093/bioinformatics/bts080)
40
+
41
+ == Biogems.info
42
+
43
+ This Biogem is published at http://biogems.info/index.html#bio-old-biofetch-emulator
44
+
45
+ == Copyright
46
+
47
+ Copyright (c) 2014 Naohisa Goto. See LICENSE.txt for further details.
48
+
@@ -0,0 +1,51 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rubygems'
4
+ require 'bundler'
5
+ begin
6
+ Bundler.setup(:default, :development)
7
+ rescue Bundler::BundlerError => e
8
+ $stderr.puts e.message
9
+ $stderr.puts "Run `bundle install` to install missing gems"
10
+ exit e.status_code
11
+ end
12
+ require 'rake'
13
+
14
+ require 'jeweler'
15
+ Jeweler::Tasks.new do |gem|
16
+ # gem is a Gem::Specification... see http://guides.rubygems.org/specification-reference/ for more options
17
+ gem.name = "bio-old-biofetch-emulator"
18
+ gem.homepage = "http://github.com/ngoto/bioruby-old-biofetch-emulator"
19
+ gem.license = "MIT"
20
+ gem.summary = %Q{Emulates as if old BioRuby BioFetch alives}
21
+ gem.description = %Q{Emulator that emulates Bio::Fetch object in BioRuby as if old BioRuby BioFetch server were still alive. It overrides methods and objects in Bio::Fetch, and if the old BioRuby BioFetch server's URL is given, it intercepts all requests and converts them into existing web services such as TogoWS, KEGG REST API, NCBI E-Utilities, and GenomeNet(genome.jp).}
22
+ gem.email = "ng@bioruby.org"
23
+ gem.authors = ["Naohisa Goto"]
24
+ # dependencies defined in Gemfile
25
+ end
26
+ Jeweler::RubygemsDotOrgTasks.new
27
+
28
+ require 'rake/testtask'
29
+ Rake::TestTask.new(:test) do |test|
30
+ test.libs << 'lib' << 'test'
31
+ test.pattern = 'test/**/test_*.rb'
32
+ test.verbose = true
33
+ end
34
+
35
+ desc "Code coverage detail"
36
+ task :simplecov do
37
+ ENV['COVERAGE'] = "true"
38
+ Rake::Task['test'].execute
39
+ end
40
+
41
+ task :default => :test
42
+
43
+ require 'rdoc/task'
44
+ Rake::RDocTask.new do |rdoc|
45
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
46
+
47
+ rdoc.rdoc_dir = 'rdoc'
48
+ rdoc.title = "bio-old-biofetch-emulator #{version}"
49
+ rdoc.rdoc_files.include('README*')
50
+ rdoc.rdoc_files.include('lib/**/*.rb')
51
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.0
@@ -0,0 +1,12 @@
1
+ # Please require your code below, respecting the naming conventions in the
2
+ # bioruby directory tree.
3
+ #
4
+ # For example, say you have a plugin named bio-plugin, the only uncommented
5
+ # line in this file would be
6
+ #
7
+ # require 'bio/bio-plugin/plugin'
8
+ #
9
+ # In this file only require other files. Avoid other source code.
10
+
11
+ require 'bio-old-biofetch-emulator/emulator.rb'
12
+
@@ -0,0 +1,415 @@
1
+
2
+ require 'bio'
3
+ require 'cgi'
4
+
5
+ module Bio
6
+
7
+ module OldBioFetchEmulator
8
+
9
+ URL = "http://bioruby.org/cgi-bin/biofetch.rb".freeze
10
+
11
+ MAX_ID_NUM = 50
12
+
13
+ class Client < Bio::Fetch
14
+
15
+ # https://web.archive.org/web/20070803003306/http://www.genome.jp/about_genomenet/service.html
16
+ # https://web.archive.org/web/20110525080429/http://www.genome.jp/dbget/
17
+
18
+ # https://web.archive.org/web/20070306215757/http://bioruby.org/cgi-bin/biofetch.rb?info=dbs
19
+ # aa aax bl cpd dgenes dr ec eg emb embu epd est exp
20
+ # gb gbu genes gl gn gp gpu gss htgs ko ld lit mim nt
21
+ # og path pd pdb pdoc pf pir pmd pr prf ps rn rp rs
22
+ # rsaa rsnt sp str sts tr vg
23
+
24
+ Databases = {
25
+ # fetching via Bio::PubMed (NCBI E-Utilities)
26
+ "pubmed" => [ :PubMed, true ],
27
+
28
+ # fetching via TogoWS REST API
29
+ "genbank" => [ :TogoWS, "ncbi-nucleotide" ],
30
+ "gb" => "genbank",
31
+
32
+ "genpept" => [ :TogoWS, "ncbi-protein" ],
33
+ "gp" => "genpept",
34
+
35
+ "refseq" => [ :TogoWS, "ncbi-nucleotide", "ncbi-protein" ],
36
+ "rs" => "refseq",
37
+ "refnuc" => [ :TogoWS, "ncbi-nucleotide" ],
38
+ "rsnt" => "refnuc",
39
+ "refpep" => [ :TogoWS, "ncbi-protein" ],
40
+ "rsaa" => "refpep",
41
+
42
+ "embl" => [ :TogoWS, "ebi-ena" ],
43
+ "emb" => "embl",
44
+
45
+ "uniprot" => [ :TogoWS, true ],
46
+ "up" => "uniprot",
47
+ "swissprot" => "uniprot",
48
+ "sp" => "uniprot",
49
+ "trembl" => "uniprot",
50
+ "tr" => "uniprot",
51
+
52
+ "pdb" => [ :TogoWS, true ],
53
+
54
+ #"genes" => [ :TogoWS, "kegg-genes" ],
55
+
56
+ # fetching via KEGG REST API
57
+ "pathway" => [ :KEGG, true ],
58
+ "path" => "pathway",
59
+ "brite" => [ :KEGG, true ],
60
+ "br" => "brite",
61
+ "module" => [ :KEGG, true ],
62
+ "md" => "module",
63
+ "orthology" => [ :KEGG, true ],
64
+ "ko" => "orthology",
65
+ "genome" => [ :KEGG, true ],
66
+ "genomes" => [ :KEGG, true ],
67
+ "gn" => "genomes",
68
+ "genes" => [ :KEGG, true ],
69
+ "ligand" => [ :KEGG, true ],
70
+ "compound" => [ :KEGG, true ],
71
+ "cpd" => "compound",
72
+ "glycan" => [ :KEGG, true ],
73
+ "gl" => "glycan",
74
+ "reaction" => [ :KEGG, true ],
75
+ "rn" => "reaction",
76
+ "rpair" => [ :KEGG, true ],
77
+ "rp" => "rpair",
78
+ "rclass" => [ :KEGG, true ],
79
+ "rc" => "rclass",
80
+ "enzyme" => [ :KEGG, true ],
81
+ "ec" => "enzyme",
82
+ "disease" => [ :KEGG, true ],
83
+ "ds" => "disease",
84
+ "drug" => [ :KEGG, true ],
85
+ "dr" => "drug",
86
+ "dgroup" => [ :KEGG, true ],
87
+ "dg" => "dgroup",
88
+ "environ" => [ :KEGG, true ],
89
+ "ev" => "environ",
90
+
91
+ "expression" => [ nil ], #[ :KEGG, true ],
92
+ "ex" => "expression",
93
+ "exp" => "expression",
94
+
95
+ "dgenes" => [ :KEGG, true ],
96
+ "egenes" => [ :KEGG, true ],
97
+ "eg" => "egenes",
98
+ "mgenes" => [ nil ], #[ :KEGG, true ],
99
+ "mgenome" => [ nil ], #[ :KEGG, true ],
100
+ "mgnm" => "mgenome",
101
+
102
+ "vgenome" => [ :KEGG, true ],
103
+ "vgnm" => "vgenome",
104
+ "vgenes" => [ :KEGG, true ],
105
+ "vg" => "vgenes",
106
+
107
+ # fetching from GenemeNet
108
+ "aaindex" => [ :DBGET, true ],
109
+ "aax" => "aaindex",
110
+ "aaindex1" => [ :DBGET, true ],
111
+ "aax1" => "aaindex1",
112
+ "aaindex2" => [ :DBGET, true ],
113
+ "aax2" => "aaindex2",
114
+ "aaindex3" => [ :DBGET, true ],
115
+ "aax3" => "aaindex3",
116
+
117
+ # formerly can be get from GenomeNet but not available now
118
+ "prf" => [ nil ], #[ :DBGET, true ],
119
+ "litdb" => [ nil ], #[ :DBGET, true ],
120
+ "lit" => [ nil ], #"litdb",
121
+
122
+ "pdbstr" => [ nil ], # Protein sequence generated from PDB (GenomeNet)
123
+
124
+ "aa" => [ nil ], # nr-aa ???
125
+ #"aax" # AAindex (KEGG)
126
+ "bl" => [ nil ], # Blocks (http://blocks.fhcrc.org/)
127
+ #"cpd" # KEGG Compound
128
+ #"dgenes" # KEGG DGenes
129
+ #"dr" # KEGG Drug
130
+ #"ec" # KEGG Enzyme
131
+ #"eg" # KEGG EGenes
132
+ #"emb" # EMBL
133
+ "embu" => [ nil ], # EMBL UniGene ???
134
+ "epd" => [ nil ], # The Eukaryotic Promoter Database
135
+ "est" => [ nil ], # NCBI EST ???
136
+ #"gb" # GenBank
137
+ "gbu" => [ nil ], # NCBI UniGene ???
138
+ #"genes" # KEGG Genes
139
+ #"gl" # KEGG Glycan
140
+ #"gn" # KEGG Genomes
141
+ #"gp" # GenPept ???
142
+ "gpu" => [ nil ], # ???
143
+ "gss" => [ nil ], # NCBI GSS ???
144
+ "htgs" => [ nil ], # NCBI HTGS ???
145
+ #"ko" # KEGG Orthology
146
+ "ld" => [ nil ], # ???
147
+ #"lit" # PRF LitDB
148
+ "mim" => [ nil ], # ???
149
+ "nt" => [ nil ], # nr-nt ???
150
+ "og" => [ nil ], # ???
151
+ #"path" # KEGG Pathway
152
+ "pd" => [ nil ], # prodom
153
+ #"pdb" # PDB
154
+ "pdoc" => [ nil ], # Prosite literature (GenomeNet)
155
+ "pf" => [ nil ], # Pfam
156
+ "pir" => [ nil ], # pir
157
+ "pmd" => [ nil ], # Protein mutants (DDBJ) (GenomeNet)
158
+ "pr" => [ nil ], # prints
159
+ #"prf" # PRF (Protein Research Foundation)
160
+ "ps" => [ nil ], # prosite
161
+ #"rn" # KEGG Reaction
162
+ #"rp" # KEGG RPair
163
+ #"rs" # NCBI RefSeq
164
+ #"rsaa" # NCBI RefSeq Amino Acide
165
+ #"rsnt" # NCBI RefSeq NucleoTide
166
+ #"sp" # SwissProt
167
+ "str" => [ nil ], # ???
168
+ "sts" => [ nil ], # NCBI STS ???
169
+ #"tr" # TrEMBL
170
+ #"vg" # KEGG VGenes
171
+ }
172
+
173
+ def initialize(url = URL)
174
+ super
175
+ end
176
+
177
+ def fetch(db, id, style = 'raw', format = nil)
178
+ _fetch(:fetch, db, id, style, format)
179
+ end
180
+
181
+ def databases
182
+ Databases.collect do |key, val|
183
+ while val && val.is_a?(String)
184
+ val = Databases[val]
185
+ end
186
+ if val && val.is_a?(Array) && val[0] then
187
+ key
188
+ else
189
+ nil
190
+ end
191
+ end.compact
192
+ end
193
+
194
+ def formats(database = @database)
195
+ if database
196
+ [ "default" ]
197
+ end
198
+ end
199
+
200
+ def maxids
201
+ MAX_ID_NUM
202
+ end
203
+
204
+ private
205
+ def _fetch(cmd, db, id, style, format)
206
+ db_orig = db
207
+ db = db.to_s.downcase
208
+ while a = Databases[db]
209
+ case a
210
+ when Array
211
+ break
212
+ when String
213
+ db = a
214
+ else
215
+ break
216
+ end
217
+ end
218
+
219
+ if !a and /[a-z]{3}/ =~ db then
220
+ remote = :KEGG
221
+ dbs = [ 'genes' ]
222
+ id_prefix = db
223
+ elsif a.is_a?(Array) then
224
+ remote = a[0]
225
+ dbs = a[1..-1]
226
+ dbs.collect! { |x| x == true ? db : x }
227
+ end
228
+
229
+ if !remote then
230
+ return "ERROR 1 Unknown database [#{db_orig.inspect}]"
231
+ end
232
+
233
+ ids = id.strip.split(/(?:\s*\,\s*|\s+)/)
234
+ if ids.size > MAX_ID_NUM then
235
+ return "ERROR 5 Too many IDs [#{ids.size}]. Max [#{MAX_ID_NUM}] allowed."
236
+ end
237
+ if id_prefix then
238
+ ids.collect! { |x| "#{id_prefix}:#{x.strip}" }
239
+ end
240
+
241
+ case cmd
242
+ when :fetch
243
+ ret = case remote
244
+ when :TogoWS
245
+ _fetch_togows(cmd, dbs, ids)
246
+ when :KEGG
247
+ _fetch_kegg(cmd, dbs, ids)
248
+ when :DBGET
249
+ _fetch_dbget(cmd, dbs, ids)
250
+ when :PubMed
251
+ _fetch_pubmed(cmd, dbs, ids)
252
+ else
253
+ raise "Bug: unknown remote site #{remote.inspect}"
254
+ end
255
+ end
256
+ ret
257
+ end
258
+
259
+ def _fetch_pubmed(cmd, dbs, ids)
260
+ a = Bio::PubMed.efetch(ids)
261
+ if a && a.size > 0 then
262
+ a.join("\n\n") + "\n"
263
+ else
264
+ "Error 4 ID not found [#{ids.inspect}]"
265
+ end
266
+ end
267
+
268
+ def _fetch_togows(cmd, dbs, ids)
269
+ all = []
270
+ ids.each do |id|
271
+ ret = nil
272
+ dbs.each do |db|
273
+ url = "http://togows.org/entry/#{CGI.escape(db)}/#{CGI.escape(id)}"
274
+ begin
275
+ ret = Bio::Command.read_uri(url)
276
+ rescue OpenURI::HTTPError
277
+ ret = nil
278
+ end
279
+ if ret && /\AError/ !~ ret && ret.strip.size > 0 then
280
+ break
281
+ else
282
+ ret = nil
283
+ end
284
+ end
285
+ all.push ret if ret
286
+ end
287
+ if all.empty?
288
+ return "Error 4 ID not found [#{ids.inspect}]"
289
+ else
290
+ return all.join("")
291
+ end
292
+ end
293
+
294
+ def _fetch_kegg(cmd, dbs, ids)
295
+ all = []
296
+ ids.each do |id|
297
+ ret = nil
298
+ dbs.each do |db|
299
+ if db == "genes" then
300
+ url = "http://rest.kegg.jp/get/#{CGI.escape(id)}"
301
+ else
302
+ url = "http://rest.kegg.jp/get/#{CGI.escape(db)}:#{CGI.escape(id)}"
303
+ end
304
+ begin
305
+ ret = Bio::Command.read_uri(url)
306
+ rescue OpenURI::HTTPError
307
+ ret = nil
308
+ end
309
+ if ret && ret.strip.size > 0 then
310
+ break
311
+ else
312
+ ret = nil
313
+ end
314
+ end
315
+ all.push ret if ret
316
+ end
317
+ if all.empty?
318
+ return "Error 4 ID not found [#{ids.inspect}]"
319
+ else
320
+ return all.join("")
321
+ end
322
+ end
323
+
324
+ def _fetch_dbget(cmd, dbs, ids)
325
+ all = []
326
+ ids.each do |id|
327
+ ret = nil
328
+ dbs.each do |db|
329
+ url = "http://www.genome.jp/dbget-bin/www_bget?#{CGI.escape(db)}:#{CGI.escape(id)}"
330
+ begin
331
+ ret = Bio::Command.read_uri(url)
332
+ rescue OpenURI::HTTPError
333
+ ret = nil
334
+ end
335
+ if ret then
336
+ ret = _scrape_dbget(ret)
337
+ break if ret
338
+ end
339
+ ret = nil
340
+ end
341
+ all.push ret if ret
342
+ end
343
+ if all.empty?
344
+ return "Error 4 ID not found [#{ids.inspect}]"
345
+ else
346
+ return all.join("")
347
+ end
348
+ end
349
+
350
+ def _scrape_dbget(orig_str)
351
+ a = orig_str.split(/^\s*\<\!\-\- bget\:result \-\-\>$\s*/)
352
+ if a[1] then
353
+ str = a[1]
354
+ str.sub!(/\A\s*\<pre\>$\s*/, "")
355
+ str.sub!(/^\s*\<\/pre\>.*/m, "")
356
+ str.gsub!(/\<[^\>]+\>/, "")
357
+ return str
358
+ end
359
+ nil
360
+ end
361
+
362
+ end #class Client
363
+
364
+ module Query
365
+ # Shortcut for using BioRuby's BioFetch server. You can fetch an entry
366
+ # without creating an instance of BioFetch server. This method uses the
367
+ # default dbfetch server, which is http://bioruby.org/cgi-bin/biofetch.rb
368
+ #
369
+ # Example:
370
+ # puts Bio::Fetch.query('refseq','NM_123456')
371
+ #
372
+ # ---
373
+ # *Arguments*:
374
+ # * _database_: name of database to query (see Bio::Fetch#databases to get list of supported databases)
375
+ # * _id_: single ID or ID list separated by commas or white space
376
+ # * _style_: [raw|html] (default = 'raw')
377
+ # * _format_: name of output format (see Bio::Fetch#formats)
378
+ def query(*args)
379
+ Client.new.fetch(*args)
380
+ end
381
+ end #module Query
382
+
383
+ DONT_OVERRIDE = ::Bio::Fetch.const_defined?(:EBI) ?
384
+ [ Client, ::Bio::Fetch::EBI ] : [ Client ]
385
+
386
+ class << ::Bio::Fetch
387
+
388
+ alias_method :new_without_old_biofetch_emulator, :new
389
+
390
+ def new_with_old_biofetch_emulator(*arg)
391
+ tmp = self.ancestors
392
+ if (tmp - DONT_OVERRIDE).size == tmp.size then
393
+ $stderr.puts self
394
+ case arg.size
395
+ when 0
396
+ return Client.new
397
+ when 1
398
+ case arg[0]
399
+ when URL
400
+ return Client.new(*arg)
401
+ end
402
+ end
403
+ end
404
+ new_without_old_biofetch_emulator(*arg)
405
+ end
406
+
407
+ alias_method :new, :new_with_old_biofetch_emulator
408
+
409
+ include Query
410
+
411
+ end #class << Bio::Fetch
412
+
413
+ end #module OldBioFetchEmulator
414
+
415
+ end #module Bio
@@ -0,0 +1,35 @@
1
+ #
2
+ #require 'simplecov'
3
+ #
4
+ #module SimpleCov::Configuration
5
+ # def clean_filters
6
+ # @filters = []
7
+ # end
8
+ #end
9
+ #
10
+ #SimpleCov.configure do
11
+ # clean_filters
12
+ # load_adapter 'test_frameworks'
13
+ #end
14
+ #
15
+ #ENV["COVERAGE"] && SimpleCov.start do
16
+ # add_filter "/.rvm/"
17
+ #end
18
+ require 'rubygems'
19
+ #require 'bundler'
20
+ #begin
21
+ # Bundler.setup(:default, :development)
22
+ #rescue Bundler::BundlerError => e
23
+ # $stderr.puts e.message
24
+ # $stderr.puts "Run `bundle install` to install missing gems"
25
+ # exit e.status_code
26
+ #end
27
+ require 'test/unit'
28
+ #require 'shoulda'
29
+
30
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
31
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
32
+ require 'bio-old-biofetch-emulator'
33
+
34
+ class Test::Unit::TestCase
35
+ end
@@ -0,0 +1,96 @@
1
+ require 'helper'
2
+
3
+ module FuncTestBioOldBiofetchEmulator
4
+
5
+ module CommonTestMethods
6
+
7
+ def fetch_and_check_ids(db, ids, regexp)
8
+ tmp_ids = ids.dup
9
+ str = @bf.fetch(db, ids.join(","))
10
+ str.scan(regexp) do |x|
11
+ assert_equal(tmp_ids.shift.to_s, $1)
12
+ end
13
+ assert(tmp_ids.empty?)
14
+
15
+ str2 = @bf.fetch(db, ids.join(" "))
16
+ assert_equal(str, str2)
17
+ end
18
+ private :fetch_and_check_ids
19
+
20
+ def test_fetch_pubmed
21
+ db = "pubmed"
22
+ ids = [ 20739307, 22332238 ]
23
+ regexp = /^PMID- +(\d+)/
24
+ fetch_and_check_ids(db, ids, regexp)
25
+ end
26
+
27
+ def test_fetch_refseq
28
+ db = "rs"
29
+ ids = [ "NM_123456", "NP_198907" ]
30
+ regexp = /^ACCESSION +([\_A-Z0-9]+)/
31
+ fetch_and_check_ids(db, ids, regexp)
32
+ end
33
+
34
+ def test_fetch_kegg_genes
35
+ db = "hal"
36
+ ids = [ "VNG1467G", "VNG6476G", "VNG2243G" ]
37
+ regexp = /^ENTRY +([A-Z0-9]+)/
38
+ fetch_and_check_ids(db, ids, regexp)
39
+ end
40
+
41
+ def test_fetch_aaindex
42
+ db = "aax"
43
+ ids = [ "PRAM900102", "DAYM780301" ] # (aaindex1, aaindex2)
44
+ regexp = /^H +([A-Z0-9]+)$/
45
+ fetch_and_check_ids(db, ids, regexp)
46
+ end
47
+
48
+ def test_class
49
+ assert_instance_of(Bio::OldBioFetchEmulator::Client, @bf)
50
+ assert_equal(Bio::OldBioFetchEmulator::Client, @bf.class)
51
+ end
52
+ end #module CommonTestMethods
53
+
54
+ class TestClient < Test::Unit::TestCase
55
+ include CommonTestMethods
56
+
57
+ def setup
58
+ Bio::NCBI.default_email ||= "staff@bioruby.org"
59
+ @bf = Bio::OldBioFetchEmulator::Client.new
60
+ end
61
+ end #class TestClient
62
+
63
+ class TestBioFetch < Test::Unit::TestCase
64
+ include CommonTestMethods
65
+
66
+ def setup
67
+ Bio::NCBI.default_email ||= "staff@bioruby.org"
68
+ @bf = Bio::Fetch.new
69
+ end
70
+
71
+ end #class TestClient
72
+
73
+ class TestBioFetchWithURL < Test::Unit::TestCase
74
+ include CommonTestMethods
75
+
76
+ def setup
77
+ Bio::NCBI.default_email ||= "staff@bioruby.org"
78
+ @bf = Bio::Fetch.new("http://bioruby.org/cgi-bin/biofetch.rb")
79
+ end
80
+
81
+ end #class TestClient
82
+
83
+ class TestBioFetchWithOtherURL < Test::Unit::TestCase
84
+ def setup
85
+ Bio::NCBI.default_email ||= "staff@bioruby.org"
86
+ @bf = Bio::Fetch.new("http://www.ebi.ac.uk/Tools/dbfetch/dbfetch")
87
+ end
88
+
89
+ def test_class
90
+ assert_instance_of(Bio::Fetch, @bf)
91
+ assert_equal(Bio::Fetch, @bf.class)
92
+ end
93
+ end #class TestClient
94
+
95
+ end #module FuncTestBioOldBiofetchEmulator
96
+
metadata ADDED
@@ -0,0 +1,132 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bio-old-biofetch-emulator
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Naohisa Goto
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-11-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bio
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 1.4.2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 1.4.2
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rdoc
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: jeweler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: bundler
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: 1.0.21
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 1.0.21
83
+ description: Emulator that emulates Bio::Fetch object in BioRuby as if old BioRuby
84
+ BioFetch server were still alive. It overrides methods and objects in Bio::Fetch,
85
+ and if the old BioRuby BioFetch server's URL is given, it intercepts all requests
86
+ and converts them into existing web services such as TogoWS, KEGG REST API, NCBI
87
+ E-Utilities, and GenomeNet(genome.jp).
88
+ email: ng@bioruby.org
89
+ executables: []
90
+ extensions: []
91
+ extra_rdoc_files:
92
+ - LICENSE.txt
93
+ - README.md
94
+ - README.rdoc
95
+ files:
96
+ - ".document"
97
+ - ".travis.yml"
98
+ - Gemfile
99
+ - LICENSE.txt
100
+ - README.md
101
+ - README.rdoc
102
+ - Rakefile
103
+ - VERSION
104
+ - lib/bio-old-biofetch-emulator.rb
105
+ - lib/bio-old-biofetch-emulator/emulator.rb
106
+ - test/helper.rb
107
+ - test/test_bio-old-biofetch-emulator.rb
108
+ homepage: http://github.com/ngoto/bioruby-old-biofetch-emulator
109
+ licenses:
110
+ - MIT
111
+ metadata: {}
112
+ post_install_message:
113
+ rdoc_options: []
114
+ require_paths:
115
+ - lib
116
+ required_ruby_version: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ required_rubygems_version: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ requirements: []
127
+ rubyforge_project:
128
+ rubygems_version: 2.2.2
129
+ signing_key:
130
+ specification_version: 4
131
+ summary: Emulates as if old BioRuby BioFetch alives
132
+ test_files: []