solvebio 1.6.1 → 1.7.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.
Files changed (119) hide show
  1. data/.bumpversion.cfg +6 -0
  2. data/.gitignore +5 -4
  3. data/.travis.yml +1 -1
  4. data/Gemfile +3 -0
  5. data/README.md +34 -34
  6. data/Rakefile +1 -18
  7. data/bin/solvebio.rb +14 -16
  8. data/installer +64 -0
  9. data/lib/solvebio.rb +50 -11
  10. data/lib/solvebio/acccount.rb +4 -0
  11. data/lib/solvebio/annotation.rb +11 -0
  12. data/lib/solvebio/api_operations.rb +147 -0
  13. data/lib/solvebio/api_resource.rb +32 -0
  14. data/lib/solvebio/cli.rb +75 -0
  15. data/lib/solvebio/cli/auth.rb +106 -0
  16. data/lib/solvebio/cli/credentials.rb +54 -0
  17. data/lib/{cli → solvebio/cli}/irb.rb +0 -23
  18. data/lib/solvebio/cli/irbrc.rb +48 -0
  19. data/lib/solvebio/cli/tutorial.rb +12 -0
  20. data/lib/solvebio/client.rb +149 -0
  21. data/lib/solvebio/dataset.rb +60 -0
  22. data/lib/solvebio/dataset_field.rb +12 -0
  23. data/lib/solvebio/depository.rb +38 -0
  24. data/lib/solvebio/depository_version.rb +40 -0
  25. data/lib/solvebio/errors.rb +64 -0
  26. data/lib/solvebio/filter.rb +315 -0
  27. data/lib/solvebio/list_object.rb +73 -0
  28. data/lib/solvebio/locale.rb +43 -0
  29. data/lib/solvebio/query.rb +341 -0
  30. data/lib/solvebio/sample.rb +54 -0
  31. data/lib/solvebio/singleton_api_resource.rb +25 -0
  32. data/lib/solvebio/solve_object.rb +164 -0
  33. data/lib/solvebio/tabulate.rb +589 -0
  34. data/lib/solvebio/user.rb +4 -0
  35. data/lib/solvebio/util.rb +59 -0
  36. data/lib/solvebio/version.rb +3 -0
  37. data/solvebio.gemspec +10 -18
  38. data/test/helper.rb +6 -2
  39. data/test/solvebio/data/.gitignore +1 -0
  40. data/test/solvebio/data/.netrc +6 -0
  41. data/test/{data → solvebio/data}/netrc-save +0 -0
  42. data/test/solvebio/data/sample.vcf.gz +0 -0
  43. data/test/solvebio/data/test_creds +3 -0
  44. data/test/solvebio/test_annotation.rb +45 -0
  45. data/test/solvebio/test_client.rb +29 -0
  46. data/test/solvebio/test_conversion.rb +14 -0
  47. data/test/solvebio/test_credentials.rb +67 -0
  48. data/test/solvebio/test_dataset.rb +52 -0
  49. data/test/solvebio/test_depository.rb +24 -0
  50. data/test/solvebio/test_depositoryversion.rb +22 -0
  51. data/test/solvebio/test_error.rb +31 -0
  52. data/test/solvebio/test_filter.rb +86 -0
  53. data/test/solvebio/test_query.rb +282 -0
  54. data/test/solvebio/test_query_batch.rb +38 -0
  55. data/test/solvebio/test_query_init.rb +30 -0
  56. data/test/solvebio/test_query_tabulate.rb +73 -0
  57. data/test/solvebio/test_ratelimit.rb +31 -0
  58. data/test/solvebio/test_resource.rb +29 -0
  59. data/test/solvebio/test_sample_access.rb +60 -0
  60. data/test/solvebio/test_sample_download.rb +20 -0
  61. data/test/solvebio/test_tabulate.rb +129 -0
  62. data/test/solvebio/test_util.rb +39 -0
  63. metadata +100 -85
  64. data/Makefile +0 -17
  65. data/demo/README.md +0 -14
  66. data/demo/cheatsheet.rb +0 -31
  67. data/demo/dataset/facets.rb +0 -13
  68. data/demo/dataset/field.rb +0 -13
  69. data/demo/depository/README.md +0 -24
  70. data/demo/depository/all.rb +0 -13
  71. data/demo/depository/retrieve.rb +0 -13
  72. data/demo/depository/versions-all.rb +0 -13
  73. data/demo/query/query-filter.rb +0 -30
  74. data/demo/query/query.rb +0 -13
  75. data/demo/query/range-filter.rb +0 -18
  76. data/demo/test-api.rb +0 -98
  77. data/lib/cli/auth.rb +0 -122
  78. data/lib/cli/help.rb +0 -13
  79. data/lib/cli/irbrc.rb +0 -54
  80. data/lib/cli/options.rb +0 -75
  81. data/lib/client.rb +0 -154
  82. data/lib/credentials.rb +0 -67
  83. data/lib/errors.rb +0 -81
  84. data/lib/filter.rb +0 -312
  85. data/lib/locale.rb +0 -47
  86. data/lib/main.rb +0 -46
  87. data/lib/query.rb +0 -414
  88. data/lib/resource/annotation.rb +0 -23
  89. data/lib/resource/apiresource.rb +0 -241
  90. data/lib/resource/dataset.rb +0 -91
  91. data/lib/resource/datasetfield.rb +0 -37
  92. data/lib/resource/depository.rb +0 -50
  93. data/lib/resource/depositoryversion.rb +0 -69
  94. data/lib/resource/main.rb +0 -123
  95. data/lib/resource/sample.rb +0 -75
  96. data/lib/resource/solveobject.rb +0 -122
  97. data/lib/resource/user.rb +0 -5
  98. data/lib/tabulate.rb +0 -706
  99. data/lib/util.rb +0 -29
  100. data/test/Makefile +0 -9
  101. data/test/data/sample.vcf.gz +0 -0
  102. data/test/test-annotation.rb +0 -46
  103. data/test/test-auth.rb +0 -58
  104. data/test/test-client.rb +0 -27
  105. data/test/test-conversion.rb +0 -13
  106. data/test/test-dataset.rb +0 -42
  107. data/test/test-depository.rb +0 -35
  108. data/test/test-error.rb +0 -36
  109. data/test/test-filter.rb +0 -70
  110. data/test/test-netrc.rb +0 -52
  111. data/test/test-query-batch.rb +0 -40
  112. data/test/test-query-init.rb +0 -29
  113. data/test/test-query-paging.rb +0 -102
  114. data/test/test-query.rb +0 -71
  115. data/test/test-resource.rb +0 -40
  116. data/test/test-sample-access.rb +0 -59
  117. data/test/test-sample-download.rb +0 -20
  118. data/test/test-tabulate.rb +0 -131
  119. data/test/test-util.rb +0 -42
@@ -0,0 +1,86 @@
1
+ require File.expand_path('../../helper', __FILE__)
2
+
3
+ module SolveBio
4
+ class TestFilter < Test::Unit::TestCase
5
+ def test_filter_errors
6
+ assert_raises TypeError do
7
+ SolveBio::Filter.new(:style__gtt => 5)
8
+ end
9
+ assert_raises TypeError do
10
+ SolveBio::Filter.new(:style__range => 'a')
11
+ end
12
+ assert_raises TypeError do
13
+ SolveBio::Filter.new(:style__range => [5,10,15])
14
+ end
15
+ assert_raises IndexError do
16
+ SolveBio::Filter.new(:style__range => [10,5])
17
+ end
18
+ end
19
+
20
+ def test_filter
21
+ f = SolveBio::Filter.new
22
+ assert_equal('<SolveBio::Filter []>', f.inspect, 'empty filter')
23
+ assert_equal('<SolveBio::Filter []>',
24
+ (~f).inspect, '"not" of empty filter')
25
+ f2 = SolveBio::Filter.new({:style => 'Mexican', :price => 'Free'})
26
+ assert_equal('<SolveBio::Filter [{:and=>[[:price, "Free"], [:style, "Mexican"]]}]>',
27
+ f2.inspect, 'Hash to tuple sorting'
28
+ )
29
+ assert_equal('<SolveBio::Filter [{:not=>{:and=>[[:price, "Free"], [:style, "Mexican"]]}}]>',
30
+ (~f2).inspect, '~ of a non-nil filter')
31
+ assert_equal('<SolveBio::Filter [{:and=>[[:price, "Free"], [:style, "Mexican"]]}]>',
32
+ (~~f2).inspect, '~~ has no effect')
33
+
34
+ filters3 =
35
+ SolveBio::Filter.new(:omim_id => 144650) |
36
+ SolveBio::Filter.new(:omim_id => 144600) |
37
+ SolveBio::Filter.new(:omim_id => 145300)
38
+
39
+ assert_equal('<SolveBio::Filter [{:or=>[[:omim_id, 144650], [:omim_id, 144600], [:omim_id, 145300]]}]>',
40
+ filters3.inspect,
41
+ 'combining more than one of a connector (|)')
42
+
43
+ assert_equal('<SolveBio::Filter [[:style__range, [5, 10]]]>',
44
+ SolveBio::Filter.new(:style__range => (5...11)).inspect)
45
+ assert_equal('<SolveBio::Filter [[:style__range, [5, 10]]]>',
46
+ SolveBio::Filter.new(:style__range => (5..10)).inspect)
47
+
48
+ end
49
+
50
+ def test_genomic_filter
51
+ assert_equal(
52
+ '<GenomicFilter [{:and=>[["genomic_coordinates.start", 13], ["genomic_coordinates.stop", 32200000], ["chromosome", "hg38"]]}]>',
53
+ SolveBio::GenomicFilter.
54
+ new("hg38", "13", 32200000, 32500000).inspect)
55
+ end
56
+
57
+ def test_process_filters
58
+ # FIXME: add more and put in a loop.
59
+ filters = [[:omid_id, nil]]
60
+ expect = filters
61
+ assert_equal(expect.inspect,
62
+ SolveBio::Filter.process_filters(filters).inspect)
63
+ end
64
+
65
+ def test_genomic_single_position
66
+ f = SolveBio::GenomicFilter.new('chr1', 100)
67
+ assert_equal(
68
+ '<GenomicFilter [{:and=>[["genomic_coordinates.start__gte", 100.0], ["genomic_coordinates.start__lte", 100.0], ["chromosome", "1"]]}]>',
69
+ f.inspect)
70
+
71
+ f = SolveBio::GenomicFilter.new('chr1', 100, 100, true)
72
+ assert_equal(
73
+ '<GenomicFilter [{:and=>[["genomic_coordinates.start", 100], ["genomic_coordinates.stop", 100], ["chromosome", "1"]]}]>',
74
+ f.inspect)
75
+ end
76
+
77
+ def test_range
78
+ f = SolveBio::GenomicFilter.new('chr1', 100, 200)
79
+ assert_equal('<GenomicFilter [{:and=>[{:or=>[{:and=>[["genomic_coordinates.start__gte", 200.0], ["genomic_coordinates.start__lte", 100.0]]}, ["genomic_coordinates.start__range", [100, 201]], ["genomic_coordinates.stop__range", [100, 201]]]}, ["chromosome", "1"]]}]>',
80
+ f.inspect)
81
+ f = SolveBio::GenomicFilter.new('chr1', 100, 200, true)
82
+ assert_equal('<GenomicFilter [{:and=>[["genomic_coordinates.start", 100], ["genomic_coordinates.stop", 200], ["chromosome", "1"]]}]>',
83
+ f.inspect)
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,282 @@
1
+ require File.expand_path('../../helper', __FILE__)
2
+
3
+ module SolveBio
4
+ class TestQuery < Test::Unit::TestCase
5
+ def setup
6
+ @dataset = SolveBio::Dataset.retrieve(TEST_DATASET_NAME)
7
+ end
8
+
9
+ def test_basic
10
+ results = @dataset.query.filter(:omim_ids__in => [123631, 123670, 123690, 306250])
11
+ assert_equal(results.total, results.size)
12
+ assert_equal(results.total, results.length)
13
+
14
+ _results = []
15
+ results.each_with_index.each do |r, i|
16
+ _results << r
17
+ end
18
+ assert_equal(_results.length, results.length)
19
+ end
20
+
21
+ # results.size should return the number of
22
+ # results retrieved.
23
+ def test_basic_with_limit
24
+ limit = 10
25
+ results = @dataset.query(:limit => limit)
26
+ assert_equal(results.size, limit)
27
+ assert_equal(results[results.total + 1], nil)
28
+
29
+ _results = []
30
+ results.each_with_index.each do |r, i|
31
+ _results << r
32
+ end
33
+ assert_equal(_results.length, limit)
34
+ end
35
+
36
+ def test_count
37
+ q = @dataset.query
38
+ total = q.count
39
+ assert_operator total, :>, 0
40
+
41
+ # with a filter
42
+ q = @dataset.query.filter(:omim_ids => 123631)
43
+ assert_equal(1, q.count)
44
+
45
+ # with a bogus filter
46
+ q = @dataset.query.filter(:omim_ids => 999999)
47
+ assert_equal(0, q.count)
48
+ end
49
+
50
+ def test_count_with_limit
51
+ q = @dataset.query
52
+ total = q.count
53
+ assert_operator total, :>, 0
54
+
55
+ [0, 10, 1000].each do |limit|
56
+ # with a filter
57
+ q = @dataset.query(:limit => limit).filter(:omim_ids => 123631)
58
+ assert_equal(1, q.count)
59
+
60
+ # with a bogus filter
61
+ q = @dataset.query(:limit => limit).filter(:omim_ids => 999999)
62
+ assert_equal(0, q.count)
63
+ end
64
+ end
65
+
66
+ def test_len
67
+ q = @dataset.query
68
+ total = q.count
69
+ assert_operator total, :>, 0
70
+ assert_equal total, q.size
71
+
72
+ # with a filter
73
+ q = @dataset.query.filter(:omim_ids => 123631)
74
+ assert_equal 1, q.size
75
+
76
+ # with a bogus filter
77
+ q = @dataset.query.filter(:omim_ids => 999999)
78
+ assert_equal 0, q.size
79
+ end
80
+
81
+ def test_len_with_limit
82
+ q = @dataset.query
83
+ total = q.count
84
+ assert_operator(total, :>, 0)
85
+ assert_equal(total, q.size)
86
+
87
+ [0, 10, 1000].each do |limit|
88
+ # with a filter
89
+ q = @dataset.query(:limit => limit).filter(:omim_ids => 123631)
90
+ assert_equal(limit > 0 ? 1 : 0, q.size)
91
+
92
+ # with a bogus filter
93
+ q = @dataset.query(:limit => limit).filter(:omim_ids => 999999)
94
+ assert_equal 0, q.size
95
+ end
96
+ end
97
+
98
+ # test Query when limit is specified and is GREATER THAN total available
99
+ # results.
100
+ def test_empty
101
+ # bogus filter
102
+ results = @dataset.query.filter(:omim_ids => 999999)
103
+ assert_equal(0, results.size)
104
+ assert_equal(results[0...results.size].to_a, [])
105
+ assert_equal(results[0], nil)
106
+ end
107
+
108
+ # test Query when limit is specified and is GREATER THAN total available
109
+ # results.
110
+ def test_empty_with_limit
111
+ limit = 100
112
+ # bogus filter
113
+ results = @dataset.query(:limit => limit)
114
+ .filter(:omim_ids => 999999)
115
+ assert_equal(0, results.size)
116
+ assert_equal(results[0...results.size].to_a, [])
117
+ assert_equal(results[0], nil)
118
+ end
119
+
120
+ # test Filtered Query in which limit is specified but is GREATER THAN
121
+ # the number of total available results
122
+ def test_filter
123
+ num_filters = 4
124
+ filters =
125
+ SolveBio::Filter.new(:omim_ids => 123631) |
126
+ SolveBio::Filter.new(:omim_ids => 123670) |
127
+ SolveBio::Filter.new(:omim_ids => 123690) |
128
+ SolveBio::Filter.new(:omim_ids => 306250)
129
+ results = @dataset.query(:filters => filters)
130
+ assert_equal(num_filters, results.size)
131
+ assert_equal(results[num_filters], nil)
132
+ end
133
+
134
+ # test SolveBio::Filtered Query in which limit is specified but is GREATER THAN
135
+ # the number of total available results
136
+ def test_filter_with_limit
137
+ limit = 10
138
+ num_filters = 4
139
+ filters =
140
+ SolveBio::Filter.new(:omim_ids => 123631) |
141
+ SolveBio::Filter.new(:omim_ids => 123670) |
142
+ SolveBio::Filter.new(:omim_ids => 123690) |
143
+ SolveBio::Filter.new(:omim_ids => 306250)
144
+ results = @dataset.query :limit => limit, :filters => filters
145
+ assert_equal(num_filters, results.size)
146
+ assert_equal(results[num_filters], nil)
147
+ end
148
+
149
+ def test_paging
150
+ page_size = 10
151
+ num_pages = 3
152
+ results = @dataset.query :page_size => page_size
153
+
154
+ _results = []
155
+ results.each_with_index.each do |r, i|
156
+ # break after fetching num_pages
157
+ break if i / page_size == num_pages
158
+ _results << r
159
+ end
160
+
161
+ assert_equal _results.size, num_pages * page_size
162
+ assert_equal num_pages * page_size, _results.map{|i| i}.size
163
+ end
164
+
165
+ def test_paging_with_limit
166
+ page_size = 10
167
+ num_pages = 3
168
+ limit = num_pages * page_size - 1
169
+ results = @dataset.query(:limit => limit, :page_size => page_size)
170
+
171
+ _results = []
172
+ results.each_with_index.each do |r, i|
173
+ _results << r
174
+ end
175
+
176
+ assert_equal limit, _results.size
177
+ assert_equal limit, _results.map{|i| i}.size
178
+ end
179
+
180
+ def test_slice_ranges
181
+ limit = 50
182
+
183
+ results = @dataset.query(:limit => limit)
184
+ assert_equal limit, results[0..limit].size
185
+ assert_equal 0, results[limit..limit].size
186
+ assert_equal 0, results[limit..-1].size
187
+
188
+ r0 = @dataset.query(:limit => limit)[0..limit][limit-1]
189
+ r1 = @dataset.query(:limit => limit)[limit-1..limit][0]
190
+ assert_equal(r0[:hgnc_id], r1[:hgnc_id])
191
+ end
192
+
193
+ def test_slice_ranges_with_paging
194
+ limit = 5
195
+ page_size = 2
196
+
197
+ results = @dataset.query(:limit => limit, :page_size => page_size)[0..limit]
198
+ assert_equal results.length, limit
199
+
200
+ results = @dataset.query(:limit => limit, :page_size => page_size)[limit..limit-1]
201
+ assert_equal 0, results.length, 0
202
+
203
+ r0 = @dataset.query(:limit => limit)[0..limit][limit-1]
204
+ r1 = @dataset.query(:limit => limit)[limit-1..limit][0]
205
+ assert_equal(r0[:hgnc_id], r1[:hgnc_id])
206
+ end
207
+
208
+ def test_slice_ranges_with_small_limit
209
+ # Test slices larger than 'limit'
210
+ limit = 1
211
+ results = @dataset.query(:limit => limit)
212
+ .filter(:hgnc_id__range => [1000, 2000])[0..4]
213
+ assert_equal limit, results.size
214
+ end
215
+
216
+ def hgnc_id_range_query
217
+ @dataset.query(:limit => 10)
218
+ .filter(:hgnc_id__range => [1000, 5000])
219
+ end
220
+
221
+ def test_paging_and_slice_equivalence
222
+ idx0 = 3
223
+ idx1 = 5
224
+
225
+ results_slice = hgnc_id_range_query()[idx0...idx1]
226
+ results_paging = []
227
+
228
+ hgnc_id_range_query.each_with_index do |r,i|
229
+ if i == idx1
230
+ break
231
+ elsif i >= idx0
232
+ results_paging << r
233
+ end
234
+ end
235
+
236
+ assert_equal results_paging.size, results_slice.size
237
+
238
+ 0.upto(results_slice.size-1).each do |i|
239
+ id_a = results_paging[i]['hgnc_id']
240
+ id_b = results_slice[i]['hgnc_id']
241
+ assert_equal(id_a, id_b)
242
+ end
243
+ end
244
+
245
+ def test_caching
246
+ idx0 = 60
247
+ idx1 = 81
248
+
249
+ q = @dataset.query(:limit => 100)
250
+ results_slice = q[idx0...idx1]
251
+ results_cached = q[idx0...idx1]
252
+ assert_equal results_cached.size, results_slice.size
253
+ 0.upto(results_slice.size-1).each do |i|
254
+ id_a = results_slice[i]['chromosome']
255
+ id_b = results_cached[i]['chromosome']
256
+ assert_equal(id_a, id_b)
257
+ end
258
+ end
259
+
260
+ def test_get_by_index
261
+ limit = 100
262
+ page_size = 10
263
+ idxs = [0, 1, 10, 20, 50, 99]
264
+ q = @dataset.query(:limit => limit, :page_size => page_size)
265
+ cached = []
266
+ idxs.each do |idx|
267
+ cached << q[idx]
268
+ end
269
+
270
+ # forwards
271
+ idxs.each_with_index do |idx, i|
272
+ assert_equal(cached[i], q[idx])
273
+ end
274
+
275
+ i = cached.size - 1
276
+ idxs.reverse.each do |idx|
277
+ assert_equal(cached[i], q[idx])
278
+ i -= 1
279
+ end
280
+ end
281
+ end
282
+ end
@@ -0,0 +1,38 @@
1
+ require File.expand_path('../../helper', __FILE__)
2
+
3
+ module SolveBio
4
+ class TestQueryBatch < Test::Unit::TestCase
5
+ def setup
6
+ @dataset = SolveBio::Dataset.retrieve(TEST_DATASET_NAME)
7
+ end
8
+
9
+ def test_invalid_batch_query
10
+ assert_raise SolveBio::SolveError do
11
+ SolveBio::BatchQuery
12
+ .new([
13
+ @dataset.query(:limit => 1, :fields => [:bogus_field]),
14
+ @dataset.query(:limit => 10).filter(:bogus_id__gt => 100000)
15
+ ]).execute
16
+ end
17
+
18
+ results = SolveBio::BatchQuery
19
+ .new([
20
+ @dataset.query(:limit => 10).filter(:hgnc_id__lt => 100),
21
+ @dataset.query(:limit => 10).filter(:hgnc_id__gt => 100)
22
+ ]).execute
23
+ assert_equal(2, results.length)
24
+
25
+ end
26
+
27
+ def test_batch_query
28
+ queries = [
29
+ @dataset.query(:limit => 1),
30
+ @dataset.query(:limit => 10).filter(:hgnc_id__gt => 100)
31
+ ]
32
+ results = SolveBio::BatchQuery.new(queries).execute
33
+ assert_equal(2, results.size)
34
+ assert_equal(1, results[0][:results].length)
35
+ assert_equal(10, results[1][:results].size)
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,30 @@
1
+ require File.expand_path('../../helper', __FILE__)
2
+
3
+ module SolveBio
4
+ class TestQuery < Test::Unit::TestCase
5
+ def test_query_initialize
6
+ [SolveBio::Query].each do |klass|
7
+ assert klass.new(5)
8
+ assert klass.new('clinvar/1.0.0/clinvar')
9
+
10
+ assert_raises TypeError do
11
+ klass.new(:limit => 10)
12
+ end
13
+
14
+ assert_raises TypeError do
15
+ klass.new(5.0, :limit => 10.0)
16
+ end
17
+
18
+ assert klass.new(5, :limit => 10)
19
+ assert_raises TypeError do
20
+ # limit should be > 0
21
+ assert klass.new(5, :limit => -1)
22
+ end
23
+ assert_raises TypeError do
24
+ # limit should be a Fixnum
25
+ assert klass.new(5, :limit => 'a')
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,73 @@
1
+ require File.expand_path('../../helper', __FILE__)
2
+
3
+ module SolveBio
4
+ class TestQueryTabulate < Test::Unit::TestCase
5
+ def check_result_fields(expect, got)
6
+ expect_array = expect.split("\n")
7
+ got_array = got.split("\n")
8
+ assert_equal(expect_array[0..2], got_array[0..2], "Header lines")
9
+ assert_equal(expect_array.size, got_array.size, 'Sizes of results')
10
+ got_array[3...-1].each_with_index do |line, i|
11
+ assert_equal(expect_array[i+3][0..33], line[0..33], "line #{i+3}")
12
+ end
13
+ assert_match(/^[.]{3} [0-9,]+ more results./, got_array[-1])
14
+ end
15
+
16
+ def test_query_tabulate
17
+ old_verbose = $VERBOSE
18
+ $VERBOSE=nil
19
+ SolveBio::Tabulate.const_set(:TTY_COLS, 66)
20
+ $VERBOSE=old_verbose
21
+ dataset = SolveBio::Dataset.retrieve(TEST_DATASET_NAME)
22
+ results = dataset.query().filter(:hgnc_id => 2396)
23
+ expected = <<-EOF
24
+
25
+ | Fields | Data |
26
+ |------------------------------+---------------------------------|
27
+ | accession_numbers | |
28
+ | approved_name | crystallin, beta A4 |
29
+ | approved_symbol | CRYBA4 |
30
+ | ccds_ids | ["CCDS13841.1"] |
31
+ | chromosome | 22 |
32
+ | date_approved | 1991-07-25 |
33
+ | date_modified | 2008-06-10 |
34
+ | date_name_changed | |
35
+ | date_symbol_changed | |
36
+ | ensembl_gene_id | ENSG00000196431 |
37
+ | ensembl_id_ensembl | ENSG00000196431 |
38
+ | entrez_gene_id | 1413 |
39
+ | entrez_gene_id_ncbi | 1413 |
40
+ | enzyme_ids | |
41
+ | gene_family_description | |
42
+ | gene_family_tag | |
43
+ | hgnc_id | 2396 |
44
+ | locus | 22q12.1 |
45
+ | locus_group | protein-coding gene |
46
+ | locus_specific_databases | ["LOVD - Leiden Open Variat ... |
47
+ | locus_type | gene with protein product |
48
+ | mouse_genome_database_id | [102716] |
49
+ | mouse_genome_database_id_mgi | [102716] |
50
+ | name_synonyms | |
51
+ | omim_id_ncbi | 123631 |
52
+ | omim_ids | [123631] |
53
+ | previous_names | |
54
+ | previous_symbols | |
55
+ | primary_ids | |
56
+ | pubmed_ids | ["8999933", "960806"] |
57
+ | rat_genome_database_id_rgd | 61962 |
58
+ | record_type | Standard |
59
+ | refseq_id_ncbi | NM_001886 |
60
+ | refseq_ids | ["NM_001886"] |
61
+ | secondary_ids | |
62
+ | status | Approved |
63
+ | synonyms | |
64
+ | ucsc_id_ucsc | uc003acz.4 |
65
+ | uniprot_id_uniprot | P53673 |
66
+ | vega_ids | ["OTTHUMG00000150983"] |
67
+
68
+ ... No more results.
69
+ EOF
70
+ check_result_fields(expected, results.to_s)
71
+ end
72
+ end
73
+ end