solvebio 1.6.1 → 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
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