intermine 1.03.00 → 1.04.00

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
+ !binary "U0hBMQ==":
3
+ metadata.gz: 7acd7d68334244919bb203d2924ac0d83383f49e
4
+ data.tar.gz: b7b72e0ed38c01cc710ce038848698ec152c5729
5
+ !binary "U0hBNTEy":
6
+ metadata.gz: 6a6ff85383c7cc8593ed654f3dc5319cf04f115e2fb7884581c7ceac21b9ca189e9e134ef2c2f2f5bd947fa49929fc52847569d535c4e79e671949e8853d2c83
7
+ data.tar.gz: 1fdd048f8a47b4ed646b89f4791fda7e0731069f960207a39ea43ce3d478beeb0e13c45acec19cdd8569a3af7b698cb4ea6eb90bee4d2d7b5e06499d433a073b
@@ -518,12 +518,35 @@ module Metadata
518
518
 
519
519
  klass = Module.new
520
520
  fd_names = @fields.values.map { |x| x.name }
521
+ fds = @fields.values
521
522
  attr_names = @fields.values.select { |x| x.is_a?(AttributeDescriptor)}.map {|x| x.name}
522
523
  klass.class_eval do
523
524
  include *supers
524
525
  attr_reader *attr_names
525
526
  end
526
527
 
528
+ klass.class_eval do
529
+
530
+ define_method(:to_h) do
531
+ ret = Hash.new
532
+ fds.each do |fd|
533
+ if fd.is_a?(AttributeDescriptor)
534
+ ret.store(fd.name, send(fd.name))
535
+ elsif fd.is_a?(CollectionDescriptor)
536
+ ret.store(fd.name, send(fd.name).map {|v| v.to_h})
537
+ else
538
+ ret.store(fd.name, send(fd.name).to_h)
539
+ end
540
+ end
541
+ ret.store("id", objectId)
542
+ return ret
543
+ end
544
+
545
+ define_method(:to_json) do |*a|
546
+ to_h.to_json(*a)
547
+ end
548
+ end
549
+
527
550
  @fields.values.each do |fd|
528
551
  if fd.is_a?(CollectionDescriptor)
529
552
  klass.class_eval do
@@ -3,6 +3,7 @@ module Intermine
3
3
  # Webservice Client Version number
4
4
  #
5
5
  # Changes:
6
+ # 1.04.00 - Added to_h and to_json methods for result objects
6
7
  # 1.03.00 - Add support for indexed sequence service
7
8
  # 1.02.00 - Allow the lazy fetching to be optional
8
9
  # 1.01.01 - Improved lazy reference fetching
@@ -21,5 +22,5 @@ module Intermine
21
22
  # 0.98.09 - Major changes to results - now with thorough-going Enumerable support
22
23
  # 0.98.08 - Added column summary support
23
24
  #
24
- VERSION = "1.03.00"
25
+ VERSION = "1.04.00"
25
26
  end
@@ -1,5 +1,6 @@
1
1
  require File.dirname(__FILE__) + "/test_helper.rb"
2
2
  require "intermine/model"
3
+ require "json"
3
4
 
4
5
  require "test/unit"
5
6
 
@@ -220,6 +221,58 @@ class TestModel < Test::Unit::TestCase
220
221
 
221
222
  end
222
223
 
224
+ def test_to_h
225
+
226
+ manager = @model.make_new("Manager", {
227
+ "name" => "David Brent",
228
+ "seniority" => 42,
229
+ "age" => 39,
230
+ "fullTime" => true,
231
+ "department" => {
232
+ "name" => "Sales",
233
+ "employees" => [
234
+ { "name" => "Tom" },
235
+ { "name" => "Dick" },
236
+ { "name" => "Harry" }
237
+ ]
238
+ }
239
+ })
240
+
241
+ manager_h = manager.to_h
242
+
243
+ assert_equal(manager_h["name"], "David Brent")
244
+ assert_equal(manager_h["age"], 39)
245
+ assert_equal(manager_h["department"]["name"], "Sales")
246
+ assert_equal(manager_h["department"]["employees"][1]["name"], "Dick")
247
+ assert_equal(manager_h["department"]["employees"].size, 3)
248
+ end
249
+
250
+ def test_to_json
251
+
252
+ manager = @model.make_new("Manager", {
253
+ "name" => "David Brent",
254
+ "seniority" => 42,
255
+ "age" => 39,
256
+ "fullTime" => true,
257
+ "department" => {
258
+ "name" => "Sales",
259
+ "employees" => [
260
+ { "name" => "Tom" },
261
+ { "name" => "Dick" },
262
+ { "name" => "Harry" }
263
+ ]
264
+ }
265
+ })
266
+
267
+ manager_h = JSON[manager.to_h.to_json]
268
+
269
+ assert_equal(manager_h["name"], "David Brent")
270
+ assert_equal(manager_h["age"], 39)
271
+ assert_equal(manager_h["department"]["name"], "Sales")
272
+ assert_equal(manager_h["department"]["employees"][1]["name"], "Dick")
273
+ assert_equal(manager_h["department"]["employees"].size, 3)
274
+ end
275
+
223
276
  def test_inheritance
224
277
 
225
278
  manager = @model.make_new("Manager", { "name" => "David Brent" })
metadata CHANGED
@@ -1,185 +1,126 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: intermine
3
- version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 1.03.00
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.04.00
6
5
  platform: ruby
7
- authors:
8
- - Alex Kalderimis
6
+ authors:
7
+ - Alex Kalderimis
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
-
13
- date: 2013-07-04 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: json
17
- version_requirements: &id001 !ruby/object:Gem::Requirement
18
- none: false
19
- requirements:
20
- - - ">="
21
- - !ruby/object:Gem::Version
22
- version: "0"
23
- requirement: *id001
24
- prerelease: false
25
- type: :runtime
26
- description: |
27
- = Webservice Client Library for InterMine Data-Warehouses
28
-
29
- This library provides an interface to the InterMine webservices
30
- API. It makes construction and execution of queries more
31
- straightforward, safe and convenient, and allows for results
32
- to be used directly in Ruby code. As well as traditional row based
33
- access, the library provides an object-orientated record result
34
- format (similar to ActiveRecords), and allows for fast, memory
35
- efficient iteration of result sets.
36
-
37
- == Example
38
-
39
- Get all protein domains associated with a set of genes and print their names:
40
-
41
- require "intermine/service"
42
-
43
- Service.new("www.flymine.org/query").
44
- new_query("Pathway")
45
- select(:name).
46
- where("genes.symbol" => ["zen", "hox", "h", "bib"]).
47
- each_row { |row| puts row[:name]}
48
-
49
- == Who is this for?
50
-
51
- InterMine data warehouses are typically constructed to hold
52
- Biological data, and as this library facilitates programmatic
53
- access to these data, this install is primarily aimed at
54
- bioinformaticians. In particular, users of the following services
55
- may find it especially useful:
56
- * FlyMine (http://www.flymine.org/query)
57
- * YeastMine (http://yeastmine.yeastgenome.org/yeastmine)
58
- * RatMine (http://ratmine.mcw.edu/ratmine)
59
- * modMine (http://intermine.modencode.org/release-23)
60
- * metabolicMine (http://www.metabolicmine.org/beta)
61
-
62
- == How to use this library:
63
-
64
- We have tried to construct an interface to this library that
65
- does not require you to learn an entirely new set of concepts.
66
- As such, as well as the underlying methods that are common
67
- to all libraries, there is an additional set of aliases and sugar
68
- methods that emulate the DSL style of SQL:
69
-
70
- === SQL style
71
-
72
- service = Service.new("www.flymine.org/query")
73
- service.model.
74
- table("Gene").
75
- select("*", "pathways.*").
76
- where(:symbol => "zen").
77
- order_by(:symbol).
78
- outerjoin(:pathways).
79
- each_row do |r|
80
- puts r
81
- end
82
-
83
- === Common InterMine interface
84
-
85
- service = Service.new("www.flymine.org/query")
86
- query = service.new_query("Gene")
87
- query.add_views("*", "pathways.*")
88
- query.add_constraint("symbol", "=", "zen")
89
- query.add_sort_order(:symbol)
90
- query.add_join(:pathways)
91
- query.each_row do |r|
92
- puts r
93
- end
94
-
95
- For more details, see the accompanying documentation and the unit tests
96
- for interface examples. Further documentation is available at www.intermine.org.
97
-
98
- == Support
99
-
100
- Support is available on our development mailing list: dev@intermine.org
101
-
102
- == License
103
-
104
- This code is Open Source under the LGPL. Source code for all InterMine code
105
- can be checked out from svn://subversion.flymine.org/flymine
106
-
107
- email:
108
- - dev@intermine.org
11
+ date: 2013-07-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: json
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: "= Webservice Client Library for InterMine Data-Warehouses\n\nThis library
28
+ provides an interface to the InterMine webservices\nAPI. It makes construction and
29
+ execution of queries more \nstraightforward, safe and convenient, and allows for
30
+ results\nto be used directly in Ruby code. As well as traditional row based\naccess,
31
+ the library provides an object-orientated record result\nformat (similar to ActiveRecords),
32
+ and allows for fast, memory \nefficient iteration of result sets.\n\n== Example\n\nGet
33
+ all protein domains associated with a set of genes and print their names:\n\n require
34
+ \"intermine/service\"\n\n Service.new(\"www.flymine.org/query\").\n new_query(\"Pathway\")\n
35
+ \ select(:name).\n where(\"genes.symbol\" => [\"zen\", \"hox\", \"h\",
36
+ \"bib\"]).\n each_row { |row| puts row[:name]}\n\n== Who is this for?\n\nInterMine
37
+ data warehouses are typically constructed to hold\nBiological data, and as this
38
+ library facilitates programmatic\naccess to these data, this install is primarily
39
+ aimed at \nbioinformaticians. In particular, users of the following services\nmay
40
+ find it especially useful:\n * FlyMine (http://www.flymine.org/query)\n * YeastMine
41
+ (http://yeastmine.yeastgenome.org/yeastmine)\n * RatMine (http://ratmine.mcw.edu/ratmine)\n
42
+ * modMine (http://intermine.modencode.org/release-23)\n * metabolicMine (http://www.metabolicmine.org/beta)\n\n==
43
+ How to use this library:\n\nWe have tried to construct an interface to this library
44
+ that\ndoes not require you to learn an entirely new set of concepts. \nAs such,
45
+ as well as the underlying methods that are common\nto all libraries, there is an
46
+ additional set of aliases and sugar\nmethods that emulate the DSL style of SQL:\n\n===
47
+ SQL style\n\n service = Service.new(\"www.flymine.org/query\")\n service.model.\n
48
+ \ table(\"Gene\").\n select(\"*\", \"pathways.*\").\n where(:symbol =>
49
+ \"zen\").\n order_by(:symbol).\n outerjoin(:pathways).\n each_row do
50
+ |r|\n puts r\n end\n\n=== Common InterMine interface\n\n service = Service.new(\"www.flymine.org/query\")\n
51
+ \ query = service.new_query(\"Gene\")\n query.add_views(\"*\", \"pathways.*\")\n
52
+ \ query.add_constraint(\"symbol\", \"=\", \"zen\")\n query.add_sort_order(:symbol)\n
53
+ \ query.add_join(:pathways)\n query.each_row do |r|\n puts r\n end\n\nFor more
54
+ details, see the accompanying documentation and the unit tests\nfor interface examples.
55
+ Further documentation is available at www.intermine.org.\n\n== Support\n\nSupport
56
+ is available on our development mailing list: dev@intermine.org\n\n== License\n\nThis
57
+ code is Open Source under the LGPL. Source code for all InterMine code\ncan be checked
58
+ out from svn://subversion.flymine.org/flymine\n"
59
+ email:
60
+ - dev@intermine.org
109
61
  executables: []
110
-
111
62
  extensions: []
112
-
113
63
  extra_rdoc_files: []
114
-
115
- files:
116
- - lib/intermine/lists.rb
117
- - lib/intermine/model.rb
118
- - lib/intermine/query.rb
119
- - lib/intermine/results.rb
120
- - lib/intermine/service.rb
121
- - lib/intermine/version.rb
122
- - test/data/lists.json
123
- - test/data/model.json
124
- - test/data/resultobjs.json
125
- - test/data/resultrow.json
126
- - test/data/resultset.json
127
- - test/data/testmodel_model.xml
128
- - test/live_results.rb
129
- - test/live_summary_test.rb
130
- - test/live_test.rb
131
- - test/test.rb
132
- - test/test_helper.rb
133
- - test/test_lists.rb
134
- - test/test_model.rb
135
- - test/test_query.rb
136
- - test/test_result_row.rb
137
- - test/test_results.rb
138
- - test/test_service.rb
139
- - test/test_sugar.rb
140
- - test/unit_tests.rb
141
- - MANIFEST
142
- - LICENCE
143
- - Rakefile
144
- - README.rdoc
145
- - Gemfile
146
- - contact_header.rdoc
64
+ files:
65
+ - lib/intermine/lists.rb
66
+ - lib/intermine/model.rb
67
+ - lib/intermine/query.rb
68
+ - lib/intermine/results.rb
69
+ - lib/intermine/service.rb
70
+ - lib/intermine/version.rb
71
+ - test/data/lists.json
72
+ - test/data/model.json
73
+ - test/data/resultobjs.json
74
+ - test/data/resultrow.json
75
+ - test/data/resultset.json
76
+ - test/data/testmodel_model.xml
77
+ - test/live_results.rb
78
+ - test/live_summary_test.rb
79
+ - test/live_test.rb
80
+ - test/test.rb
81
+ - test/test_helper.rb
82
+ - test/test_lists.rb
83
+ - test/test_model.rb
84
+ - test/test_query.rb
85
+ - test/test_result_row.rb
86
+ - test/test_results.rb
87
+ - test/test_service.rb
88
+ - test/test_sugar.rb
89
+ - test/unit_tests.rb
90
+ - MANIFEST
91
+ - LICENCE
92
+ - Rakefile
93
+ - README.rdoc
94
+ - Gemfile
95
+ - contact_header.rdoc
147
96
  homepage: http://www.intermine.org
148
- licenses:
149
- - LGPL
97
+ licenses:
98
+ - LGPL
99
+ metadata: {}
150
100
  post_install_message:
151
- rdoc_options:
152
- - --title
153
- - InterMine Webservice Client
154
- - --main
155
- - README.rdoc
156
- - --line-numbers
157
- require_paths:
158
- - lib
159
- required_ruby_version: !ruby/object:Gem::Requirement
160
- none: false
161
- requirements:
162
- - - ">="
163
- - !ruby/object:Gem::Version
164
- hash: 2
165
- segments:
166
- - 0
167
- version: "0"
168
- required_rubygems_version: !ruby/object:Gem::Requirement
169
- none: false
170
- requirements:
171
- - - ">="
172
- - !ruby/object:Gem::Version
173
- hash: 2
174
- segments:
175
- - 0
176
- version: "0"
101
+ rdoc_options:
102
+ - "--title"
103
+ - InterMine Webservice Client
104
+ - "--main"
105
+ - README.rdoc
106
+ - "--line-numbers"
107
+ require_paths:
108
+ - lib
109
+ required_ruby_version: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ required_rubygems_version: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
177
119
  requirements: []
178
-
179
120
  rubyforge_project: intermine
180
- rubygems_version: 1.8.25
121
+ rubygems_version: 2.0.0.preview3.1
181
122
  signing_key:
182
- specification_version: 3
123
+ specification_version: 4
183
124
  summary: Webservice Client Library for InterMine Data-Warehouses
184
- test_files:
185
- - test/unit_tests.rb
125
+ test_files:
126
+ - test/unit_tests.rb