bio-sra 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,18 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+ require 'test/unit'
11
+ require 'shoulda'
12
+
13
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
14
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
15
+ require 'bio-sra'
16
+
17
+ class Test::Unit::TestCase
18
+ end
@@ -0,0 +1,78 @@
1
+ require 'helper'
2
+ require 'pp'
3
+
4
+ class TestBioSraTables < Test::Unit::TestCase
5
+ include Bio::SRA::Tables
6
+
7
+ def set
8
+ Bio::SRA.connect
9
+ end
10
+
11
+ should "test find by accession" do
12
+ set
13
+ # 1.9.3-p0 :014 > p Bio::SRA::SRA.find_by_sra_ID('2.0')
14
+ #<Bio::SRA::SRA sra_ID: 2.0, SRR_bamFile: nil, SRX_bamFile: nil, SRX_fastqFTP: nil, run_ID: 2.0, run_alias: "2008-09-12.Bsu168-Lane5", run_accession: "DRR000002", run_date: "2008-09-12", updated_date: "2011-03-04", spots: 8316737, bases: 598805064, run_center: "NIG", experiment_name: "BSU168_SEP08", run_url_link: nil, run_entrez_link: nil, run_attribute: "notes: repackaged seq prb sig2", experiment_ID: 2.0, experiment_alias: "BSU168_SEP08", experiment_accession: "DRX000002", experiment_title: "B. subtilis subsp. subtilis genome resequencing Sep...", study_name: "Resequence B. subtilis 168", sample_name: "B. subtilis 168 DNA extracted Aug 2008", design_description: "Randomly fragmented by ultrasonic waves.", library_name: "B.subtilis subtilis 168 Genomic DNA fragments, isol...", library_strategy: "WGS", library_source: "GENOMIC", library_selection: "RANDOM", library_layout: "PAIRED - NOMINAL_LENGTH: 153; NOMINAL_SDEV: 29.528;...", library_construction_protocol: "The DNA is purified through the ultracentrifugation...", adapter_spec: nil, read_spec: "READ_INDEX: 0; READ_CLASS: Application Read; READ_T...", platform: "ILLUMINA", instrument_model: "Illumina Genome Analyzer II", instrument_name: nil, platform_parameters: "INSTRUMENT_MODEL: Illumina Genome Analyzer II; CYCL...", sequence_space: "Base Space", base_caller: "Solexa primary analysis", quality_scorer: "Solexa primary analysis", number_of_levels: 80, multiplier: "1", qtype: "other", experiment_url_link: nil, experiment_entrez_link: nil, experiment_attribute: nil, sample_ID: 2.0, sample_alias: "B. subtilis 168 DNA extracted Aug 2008", sample_accession: "DRS000002", taxon_id: 224308, common_name: "Bacillus subtilis subsp. subtilis str. 168", anonymized_name: nil, individual_name: nil, description: "Genomic DNA from Bacillus subtilis subsp. subtilis ...", sample_url_link: nil, sample_entrez_link: nil, sample_attribute: "strain: str. 168: ", study_ID: 2.0, study_alias: "Resequence B. subtilis 168", study_accession: "DRP000002", study_title: "Whole genome resequencing of Bacillus subtilis subs...", study_type: "Whole Genome Sequencing", study_abstract: "Whole genome resequencing of B. subtilis subtilis 1...", center_project_name: "Whole genome resequencing of B. subtilis subtilis 1...", study_description: "Whole genome resequencing of B. subtilis subtilis 1...", study_url_link: nil, study_entrez_link: "pubmed: 20398357", study_attribute: nil, related_studies: "DB: bioproject; ID: 39275; LABEL: PRJDA39275", primary_study: "true", submission_ID: 2.0, submission_accession: "DRA000002", submission_comment: "Bacillus subtilis subsp. subtilis strain 168 resequ...", submission_center: "KEIO", submission_lab: "Bioinformatics Lab.", submission_date: "2009-07-09", sradb_updated: "2012-04-04 20:00:12">
15
+
16
+ # test experiment_accession
17
+ assert_equal 'DRR000002', SRA.accession('DRX000002').first.run_accession
18
+ assert_equal 'DRR000002', SRA.accession('DRP000002').first.run_accession
19
+ assert_equal 'DRR000002', SRA.accession('DRA000002').first.run_accession
20
+ assert_equal 'DRR000002', SRA.accession('DRS000002').first.run_accession
21
+ assert_equal 'DRR000002', SRA.accession('DRR000002').first.run_accession
22
+ end
23
+
24
+ should "find all runs from a single project" do
25
+ set
26
+ assert_equal ['ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByRun/litesra/DRR/DRR000/DRR000002/DRR000002.lite.sra'],
27
+ SRA.accession('DRR000002').first.study_download_urls
28
+
29
+ three = SRA.accession('DRR000003').first.study_download_urls.sort
30
+ assert_equal 9, three.length
31
+ assert_equal 'ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByRun/litesra/DRR/DRR000/DRR000004/DRR000004.lite.sra',
32
+ three[1]
33
+
34
+ three = SRA.accession('DRR000003').first.study_download_urls(:format => :sra).sort
35
+ assert_equal 9, three.length
36
+ assert_equal 'ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByRun/sra/DRR/DRR000/DRR000004/DRR000004.sra',
37
+ three[1]
38
+ end
39
+
40
+ should "find all by accession" do
41
+ set
42
+ assert_equal 9, SRA.accession('DRP000003').all.uniq.length
43
+ assert_equal 'DRR000004', SRA.accession('DRP000003').all.collect{|s| s.run_accession}.sort[1]
44
+ end
45
+
46
+ should "sra should have foreign key to submission" do
47
+ set
48
+ assert_equal 'KEIO', SRA.accession('DRP000001').first.submission.center_name
49
+ sras = Submission.find(1).sras
50
+ assert_equal 1, sras.length
51
+ assert_equal 'DRP000001', sras[0].study_accession
52
+
53
+ sras = Submission.find(3).sras
54
+ assert_equal 9, sras.length
55
+ assert_equal 'DRP000003', sras[0].study_accession
56
+ end
57
+ end
58
+
59
+
60
+ class TestBioSraAccession < Test::Unit::TestCase
61
+ include Bio::SRA
62
+
63
+ should "test get regular run accession" do
64
+ assert_equal 'ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByRun/litesra/DRR/DRR000/DRR000002/DRR000002.lite.sra',
65
+ Accession.run_download_url('DRR000002')
66
+ assert_equal 'ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByRun/sra/DRR/DRR000/DRR000002/DRR000002.sra',
67
+ Accession.run_download_url('DRR000002', :format => :sra)
68
+ assert_equal 'ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByRun/litesra/DRR/DRR000/DRR000002/DRR000002.lite.sra',
69
+ Accession.run_download_url('DRR000002', :format => :sralite)
70
+
71
+ assert_raise RuntimeError do
72
+ Accession.run_download_url('DRP000002')
73
+ end
74
+ assert_raise RuntimeError do
75
+ Accession.run_download_url('DRR000002', :format => :notaformat)
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,86 @@
1
+ require 'helper'
2
+ require 'pp'
3
+ require 'bio-commandeer'
4
+ require 'tmpdir'
5
+ require 'tempfile'
6
+
7
+ class TestSRADownload < Test::Unit::TestCase
8
+ include Bio::SRA::Tables
9
+
10
+ path_to_script = File.join(File.dirname(__FILE__),'..','bin','sra_download')
11
+
12
+ should "(really) download a single run file" do
13
+ expected_md5sum = '52b04843abcddb4ad4fa124c471c23ce -'+"\n"
14
+
15
+ Dir.mktmpdir do |tmp|
16
+ Dir.chdir(tmp) do
17
+ Bio::Commandeer.run "#{path_to_script} ERR229501"
18
+ assert_equal expected_md5sum,
19
+ Bio::Commandeer.run("cat ERR229501.sra |md5sum")
20
+ end
21
+ end
22
+ end
23
+
24
+ should 'download all files from a study' do
25
+ Dir.mktmpdir do |tmp|
26
+ Dir.chdir(tmp) do
27
+ expected = [
28
+ 'ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByRun/sra/SRR/SRR033/SRR033547/SRR033547.sra',
29
+ 'ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByRun/sra/SRR/SRR033/SRR033549/SRR033549.sra',
30
+ 'ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByRun/sra/SRR/SRR033/SRR033548/SRR033548.sra',
31
+ ].join("\n")+"\n"
32
+
33
+ assert_equal expected, Bio::Commandeer.run("#{path_to_script} --dry-run SRP001692 -q")
34
+ end
35
+ end
36
+ end
37
+
38
+ should 'download all files from an experiment' do
39
+ Dir.mktmpdir do |tmp|
40
+ Dir.chdir(tmp) do
41
+ expected = [
42
+ #'ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByRun/sra/SRR/SRR033/SRR033547/SRR033547.sra',
43
+ 'ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByRun/sra/SRR/SRR033/SRR033549/SRR033549.sra',
44
+ #'ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByRun/sra/SRR/SRR033/SRR033548/SRR033548.sra',
45
+ ].join("\n")+"\n"
46
+
47
+ assert_equal expected, Bio::Commandeer.run("#{path_to_script} --dry-run SRX015618 -q")
48
+ end
49
+ end
50
+ end
51
+
52
+ should 'download all files from a sample' do
53
+ Dir.mktmpdir do |tmp|
54
+ Dir.chdir(tmp) do
55
+ expected = [
56
+ 'ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByRun/sra/SRR/SRR033/SRR033547/SRR033547.sra',
57
+ 'ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByRun/sra/SRR/SRR033/SRR033549/SRR033549.sra',
58
+ 'ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByRun/sra/SRR/SRR033/SRR033548/SRR033548.sra',
59
+ ].join("\n")+"\n"
60
+
61
+ assert_equal expected, Bio::Commandeer.run("#{path_to_script} --dry-run SRS009755 -q")
62
+ end
63
+ end
64
+ end
65
+
66
+
67
+ should 'handle mixed run and experiment input in a file input' do
68
+ Dir.mktmpdir do |tmp|
69
+ Dir.chdir(tmp) do
70
+ expected = [
71
+ 'ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByRun/sra/SRR/SRR033/SRR033547/SRR033547.sra',
72
+ 'ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByRun/sra/SRR/SRR033/SRR033549/SRR033549.sra',
73
+ 'ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByRun/sra/SRR/SRR033/SRR033548/SRR033548.sra',
74
+ ].join("\n")+"\n"
75
+
76
+ Tempfile.open("t") do |infile|
77
+ infile.puts 'SRS009755'
78
+ infile.puts 'SRR033548'
79
+ infile.close
80
+
81
+ assert_equal expected, Bio::Commandeer.run("#{path_to_script} --dry-run -f #{infile.path} -q")
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
metadata ADDED
@@ -0,0 +1,216 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bio-sra
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Ben J. Woodcroft
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-12-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activerecord
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '3.2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.2'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: sqlite3
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.3'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.3'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bio-logger
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: shoulda
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.5'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.5'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rdoc
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.12'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3.12'
97
+ - !ruby/object:Gem::Dependency
98
+ name: jeweler
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: 2.0.1
104
+ - - "~>"
105
+ - !ruby/object:Gem::Version
106
+ version: '2.0'
107
+ type: :development
108
+ prerelease: false
109
+ version_requirements: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: 2.0.1
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '2.0'
117
+ - !ruby/object:Gem::Dependency
118
+ name: bundler
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '1.6'
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '1.6'
131
+ - !ruby/object:Gem::Dependency
132
+ name: bio
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: 1.4.2
138
+ - - "~>"
139
+ - !ruby/object:Gem::Version
140
+ version: '1.4'
141
+ type: :development
142
+ prerelease: false
143
+ version_requirements: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ version: 1.4.2
148
+ - - "~>"
149
+ - !ruby/object:Gem::Version
150
+ version: '1.4'
151
+ - !ruby/object:Gem::Dependency
152
+ name: bio-commandeer
153
+ requirement: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - "~>"
156
+ - !ruby/object:Gem::Version
157
+ version: '0.1'
158
+ type: :development
159
+ prerelease: false
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - "~>"
163
+ - !ruby/object:Gem::Version
164
+ version: '0.1'
165
+ description: A Sequence Read Archive (SRA) download script and Ruby interface to the
166
+ SRAdb (SRA metadata) SQLite database.
167
+ email: donttrustben near gmail.com
168
+ executables:
169
+ - sra_download
170
+ extensions: []
171
+ extra_rdoc_files:
172
+ - LICENSE.txt
173
+ - README.md
174
+ files:
175
+ - ".document"
176
+ - ".travis.yml"
177
+ - Gemfile
178
+ - LICENSE.txt
179
+ - README.md
180
+ - Rakefile
181
+ - VERSION
182
+ - bin/sra_download
183
+ - config/database.yml
184
+ - lib/bio-sra.rb
185
+ - lib/bio/sra/connect.rb
186
+ - lib/bio/sra/sra.rb
187
+ - lib/bio/sra/tables.rb
188
+ - test/helper.rb
189
+ - test/test_bio-sra.rb
190
+ - test/test_sra_download.rb
191
+ homepage: http://github.com/wwood/bioruby-sra
192
+ licenses:
193
+ - MIT
194
+ metadata: {}
195
+ post_install_message:
196
+ rdoc_options: []
197
+ require_paths:
198
+ - lib
199
+ required_ruby_version: !ruby/object:Gem::Requirement
200
+ requirements:
201
+ - - ">="
202
+ - !ruby/object:Gem::Version
203
+ version: '0'
204
+ required_rubygems_version: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ requirements: []
210
+ rubyforge_project:
211
+ rubygems_version: 2.2.2
212
+ signing_key:
213
+ specification_version: 4
214
+ summary: A Sequence Read Archive (SRA) download script and Ruby interface to the SRAdb
215
+ (SRA metadata) SQLite database
216
+ test_files: []