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
data/Makefile DELETED
@@ -1,17 +0,0 @@
1
- # I'll admit it -- I'm an absent-minded old-timer who has trouble
2
- # learning new tricks.
3
-
4
- .PHONY: test
5
-
6
- RUBY ?= ruby
7
- RAKE ?= rake
8
-
9
- test: check
10
-
11
- #: Default target; same as "make check"
12
- all: check
13
- true
14
-
15
- #: Same as corresponding rake task
16
- %:
17
- $(RAKE) $@
@@ -1,14 +0,0 @@
1
- # Intro
2
-
3
- SolveBio aims to provide robust access to highly curated biological datasets. While our datasets do not conform to any proprietary formats, they are organized in a systematic way.
4
-
5
- *Depositories* (data repositories) are simply versioned containers of datasets
6
-
7
- A depository contains many versions, which in turn contain many datasets. Each dataset represents an independent “datastore”. Datasets store semi-structured data similar to typical “NoSQL” databases.
8
-
9
- The [depository folder](https://github.com/solvebio/solvebio-ruby/blob/master/demo/depository) has examples involving retrieving, getting version information or listing depositories.
10
-
11
- *Datasets* are access points to data. Dataset names are unique within versions of a depository. The
12
- [dataset folder](https://github.com/solvebio/solvebio-ruby/blob/master/demo/dataset) has programs for retrieving properties of a dataset.
13
-
14
- However, issuing queries on a dataset is probably what you will most want to do. The [query folder](https://github.com/solvebio/solvebio-ruby/blob/master/demo/query) contains examples of queries.
@@ -1,31 +0,0 @@
1
- # Cheet sheet for SolveBio API
2
- require 'solvebio'
3
-
4
- # Load the Dataset object
5
- dataset = SolveBio::Dataset.retrieve('ClinVar/2.0.0-1/Variants')
6
-
7
- # Print the Dataset
8
- puts dataset.query()
9
-
10
- # Get help (fields/facets)
11
- dataset.help()
12
-
13
- # Query the dataset (filterless)
14
- q = dataset.query()
15
-
16
- filters = SolveBio::Filter.new :gene_symbols => "BRCA2"
17
-
18
- puts dataset.query(:filters => filters)
19
-
20
- # Multiple keyword filter (boolean 'or')
21
- filters = SolveBio::Filter.new :gene_symbols => "BRCA2"
22
- filters |= SolveBio::Filter.new :gene_symbols => "BRCA1"
23
-
24
- # Same as above 'or' in one go using 'in'
25
- filters = SolveBio::Filter.new :gene_symbols__in => ["BRCA2", "BRCA1"]
26
-
27
- puts dataset.query(:filters => filters)
28
-
29
- # Range filter. Like 'in' for a contiguous numeric range
30
- dataset.query(filters =>
31
- SolveBio::RangeFilter.new('hg38', "13", 32_200_000, 32_200_500))
@@ -1,13 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Simple use of SolveBio::DatsetField.retrieve ... facets
3
-
4
- require 'solvebio'
5
-
6
- # SolveBio.api_key = 'set-me-correctly'
7
- unless SolveBio.api_key
8
- puts 'Please set SolveBio.api_key. Hint: solvebio.rb login'
9
- exit 1
10
- end
11
-
12
- fields = SolveBio::DatasetField.retrieve(691).facets
13
- puts fields
@@ -1,13 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Simple use of SolveBio::DatsetField.retrieve
3
-
4
- require 'solvebio'
5
-
6
- # SolveBio.api_key = 'set-me-correctly'
7
- unless SolveBio.api_key
8
- puts 'Please set SolveBio.api_key. Hint: solvebio.rb login'
9
- exit 1
10
- end
11
-
12
- fields = SolveBio::DatasetField.retrieve(1)
13
- puts fields
@@ -1,24 +0,0 @@
1
- # Depositories
2
-
3
- A *depository* (or data repository) is like a source code repository,
4
- but for datasets. Depositories have one or more versions, which in
5
- turn contain one or more datasets. Typically, depositories contain a
6
- series of datasets that are compatible with each other (i.e. they come
7
- from the same data source or project).
8
-
9
- Right now, all depositories are curated by the SolveBio team.
10
-
11
- * retrieve a depository
12
-
13
- The [retrieve.rb](https://github.com/solvebio/solvebio-ruby/blob/master/demo/depository/retrieve.rb) Ruby program shows how to retrieve a single depository
14
-
15
- * listing a depository
16
-
17
- The [all.rb](https://github.com/solvebio/solvebio-ruby/blob/master/demo/depository/all.rb) Ruby program shows how to list all depositories
18
-
19
- * list all versions of a depository
20
-
21
- The [versions-all.rb](https://github.com/solvebio/solvebio-ruby/blob/master/demo/depository/all.rb) Ruby program shows how to list all versions
22
- of a depository
23
-
24
- See also the [SolveBio Depository API](https://www.solvebio.com/docs/api/#depositories)
@@ -1,13 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Simple use of SolveBio::Depository.all
3
-
4
- require 'solvebio'
5
-
6
- # SolveBio.api_key = 'set-me-correctly'
7
- unless SolveBio.api_key
8
- puts 'Please set SolveBio::api_key. Hint: solvebio.rb login'
9
- exit 1
10
- end
11
-
12
- depo = SolveBio::Depository.all
13
- puts depo.to_s
@@ -1,13 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Simple use of SolveBio::Depository.retrieve
3
-
4
- require 'solvebio'
5
-
6
- # SolveBio.api_key = 'set-me-correctly'
7
- unless SolveBio.api_key
8
- puts 'Please set SolveBio.api_key. Hint: solvebio.rb login'
9
- exit 1
10
- end
11
-
12
- depo = SolveBio::Depository.retrieve('ClinVar')
13
- puts depo.to_s
@@ -1,13 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Simple use of SolveBio::Depository.retrieve({DEPOSITORY_ID}).versions.all
3
-
4
- require 'solvebio'
5
-
6
- # SolveBio.api_key = 'set-me-correctly'
7
- unless SolveBio.api_key
8
- puts 'Please set SolveBio.api_key. Hint: solvebio.rb login'
9
- exit 1
10
- end
11
-
12
- depo = SolveBio::Depository.retrieve('ClinVar').versions.all
13
- puts depo.to_s
@@ -1,30 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Simple use of SolveBio::Query with simple equality tests, sometimes
3
- # with "and" or "or"
4
-
5
- require 'solvebio'
6
-
7
- # SolveBio.api_key = 'set-me-correctly'
8
- unless SolveBio.api_key
9
- puts 'Please set SolveBio.api_key. Hint: solvebio.rb login'
10
- exit 1
11
- end
12
-
13
- ds = SolveBio::Dataset.retrieve('ClinVar/2.0.0-1/Variants')
14
-
15
- results = ds.query.filter :hg19_start__in => [148562304, 148459988]
16
-
17
- puts results.to_h # Show as a hash
18
- puts '=' * 10
19
- puts results # show in a more formatted way
20
-
21
- # Here is the same thing but a little more inefficiently
22
-
23
- filters2 =
24
- SolveBio::Filter.new(:hg19_start => 148459988) |
25
- SolveBio::Filter.new(:hg19_start => 148562304) |
26
-
27
- results = ds.query(:filters => filters2)
28
-
29
- puts '=' * 10
30
- puts results
@@ -1,13 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Simple use of SolveBio::Query
3
-
4
- require 'solvebio'
5
-
6
- # SolveBio.api_key = 'set-me-correctly'
7
- unless SolveBio.api_key
8
- puts 'Please set SolveBio.api_key. Hint: solvebio.rb login'
9
- exit 1
10
- end
11
-
12
- dataset = SolveBio::Dataset.retrieve('ClinVar/2.0.0-1/Variants')
13
- puts dataset.query
@@ -1,18 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Simple use of SolveBio::Query
3
-
4
- require 'solvebio'
5
-
6
- # SolveBio.api_key = 'set-me-correctly'
7
- unless SolveBio.api_key
8
- puts 'Please set SolveBio.api_key. Hint: solvebio.rb login'
9
- exit 1
10
- end
11
-
12
- filters = SolveBio::RangeFilter.
13
- new "hg38", "13", 32200000, 32500000
14
-
15
- ds = SolveBio::Dataset.retrieve 'ClinVar/2.0.0-1/Variants'
16
-
17
- results = ds.query(:filters => filters)
18
- puts results
@@ -1,98 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Test SolveBio API
3
- require_relative '../lib/solvebio'
4
-
5
- DEPOSITORY = 'ClinVar'
6
- DEPOSITORY_VERSION = "#{DEPOSITORY}/2.0.0-1"
7
- DATASET = "#{DEPOSITORY_VERSION}/Variants"
8
-
9
- # Custom Exception class for running basic tests
10
- class TestFail < RuntimeError
11
- end
12
-
13
- DEBUG = ARGV.size > 1
14
-
15
- # Function for running small tests with nice printing and checks
16
- def run_and_verify(func, title='run a test', check_func_symbols)
17
- puts "Trying to #{title}..."
18
- response = func.call
19
- check_func_symbols.each do |sym|
20
- unless response.send(sym)
21
- raise TestFail, "Failed on #{DATASET} using #{sym}"
22
- end
23
- end
24
- puts "\x1b[32mOK!\x1b[39m\n"
25
- return response
26
- end
27
-
28
- creds = SolveBio::Credentials.get_credentials
29
- unless creds
30
- puts 'You must be logged in as a SolveBio user ' +
31
- 'in order to run the test suite!'
32
- exit(1)
33
- end
34
-
35
- SolveBio::Client.client.api_key = creds[1]
36
-
37
- begin
38
- # depository things
39
- load_depo = proc { SolveBio::DepositoryVersion.
40
- retrieve(DEPOSITORY_VERSION) }
41
- begin
42
- dataset = run_and_verify(load_depo, 'load a depository version',
43
- [:id, :to_s, :inspect, :instance_url])
44
- rescue SolveBio::Error => exc
45
- raise TestFail, "Loading #{DEPOSITORY_VERSION} failed! (#{exc})"
46
- end
47
-
48
- # depository things
49
- load_depo = proc { SolveBio::Depository.retrieve(DEPOSITORY) }
50
- begin
51
- dataset = run_and_verify(load_depo, 'load a depository',
52
- [:to_s, :versions, :versions_url,
53
- :first, :max, :min])
54
- rescue SolveBio::Error => exc
55
- raise TestFail, "Loading #{DEPOSITORY} failed! (#{exc})"
56
- end
57
-
58
- # try loading a Dataset
59
- load_dataset = proc { SolveBio::Dataset.retrieve(DATASET) }
60
- begin
61
- dataset = run_and_verify(load_dataset, 'load a dataset',
62
- [:depository, :depository_version, :fields])
63
- rescue SolveBio::Error => exc
64
- raise TestFail, "Loading #{DATASET} failed! (#{exc})"
65
- end
66
-
67
- # try loading a DatasetField
68
- load_dataset = proc { SolveBio::DatasetField.retrieve(1) }
69
- begin
70
- dataset = run_and_verify(load_dataset, 'load a dataset field',
71
- [:facets, :instance_url])
72
- rescue SolveBio::Error => exc
73
- raise TestFail, "Loading DataSetField 1 failed! (#{exc})"
74
- end
75
-
76
- # run a basic query
77
- query_dataset = proc {
78
- dataset = SolveBio::Dataset.retrieve(DATASET)
79
- dataset.query({:paging=>true, :limit => 10})
80
- }
81
- query = run_and_verify(query_dataset, 'run a basic query',
82
- [:size, :inspect, :clone])
83
-
84
- # # run a basic filter
85
- # basic_filter = proc { query.filter(clinical_significance='Pathogenic') }
86
- # run_and_verify(basic_filter, 'run a basic filter')
87
-
88
- # # run a range filter
89
- # range_filter = solvebio.RangeFilter(build="hg19",
90
- # chromosome=1,
91
- # start=100000,
92
- # last=900000)
93
- # run_and_verify(proc { query.filter(range_filter) },
94
- # 'run a range filter')
95
-
96
- rescue TestFail, exc
97
- puts "\n\n\x1b[31mFAIL!\x1b[39m #{exc}"
98
- end
@@ -1,122 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # -*- coding: utf-8 -*-
3
-
4
- require 'readline'
5
- require 'io/console'
6
-
7
- require_relative '../errors'
8
- require_relative '../credentials'
9
- require_relative '../client'
10
-
11
- module SolveBio::Auth
12
-
13
- def ask_for_credentials(email=nil)
14
- while true
15
- email ||= Readline.readline('Email address: ', true)
16
- print 'Password (typing will be hidden): '
17
- password = STDIN.noecho(&:gets).chomp
18
- puts
19
- # FIXME: validate email address?
20
- if email and password
21
- return email, password
22
- else
23
- # FIXME: could say which one is needed.
24
- print 'Email and password are both required.'
25
- return nil, nil
26
- end
27
- end
28
- end
29
-
30
- def send_install_report
31
- require 'socket';
32
- data = {
33
- :hostname => Socket.gethostname(),
34
- :ruby_version => SolveBio::RUBY_VERSION,
35
- :ruby_implementation => SolveBio::RUBY_IMPLEMENTATION,
36
- # :platform => platform(),
37
- :architecture => SolveBio::ARCHITECTURE,
38
- # :processor => processor(),
39
- }
40
- SolveBio::Client.client
41
- .request('post', '/v1/reports/install',
42
- {:params => data}) rescue nil
43
- end
44
-
45
-
46
- include SolveBio::Credentials
47
-
48
- module_function
49
-
50
- #
51
- # Prompt user for login information (email/password).
52
- # Email and password are used to get the user's auth_token key.
53
- #
54
- def login(email=nil)
55
- delete_credentials
56
-
57
- email, password = ask_for_credentials email unless
58
- email and password
59
- data = {
60
- :email => email,
61
- :password => password
62
- }
63
-
64
- # FIXME: begin/rescue is a direct translation of the Python
65
- # code. Not sure if it's valid here, or what the equivalent
66
- # is.
67
- begin
68
- response = SolveBio::Client.client
69
- .request 'post', '/v1/auth/token', {:payload => data}
70
- rescue SolveBio::Error => e
71
- puts "Login failed: #{e.to_s}"
72
- return false
73
- else
74
- save_credentials(email.downcase, response['token'])
75
- # reset the default client's auth token
76
- SolveBio::Client.client.api_key = response['token']
77
- send_install_report
78
- puts 'You are now logged-in.'
79
- return true
80
- end
81
- end
82
-
83
- def logout
84
- if get_credentials()
85
- delete_credentials()
86
- SolveBio::Client.client.api_key = nil
87
- puts 'You have been logged out.'
88
- return true
89
- else
90
- puts 'You are not logged-in.'
91
- return false
92
- end
93
- end
94
-
95
- def whoami
96
- creds = get_credentials()
97
- if creds
98
- puts creds[0]
99
- return creds[0]
100
- else
101
- puts 'You are not logged-in.'
102
- return nil
103
- end
104
- end
105
-
106
- end # SolveBio::Auth
107
-
108
- # Demo code
109
- if __FILE__ == $0
110
- include SolveBio::Auth
111
- case ARGV[0]
112
- when 'password'
113
- email, password = ask_for_credentials
114
- puts email, password
115
- when 'login'
116
- login
117
- when 'logout'
118
- logout
119
- when 'whoami'
120
- whoami
121
- end
122
- end