sequenceserver 2.0.0.beta1 → 2.0.0.beta3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,12 @@
1
+ >Query_1:1-199
2
+ MNTLWLSLWDYPGKLPLNFMVFDTKDDLQAAYWRDPYSIPLAVIFEDPQPISQRLIYEIRTNPSYTLPPPPTKLYSAPISCRKNKTGHWMDDILSIKTGESCPVNNYLHSGFLALQMITDITKIKLENSDVTIPDIKLIMFPKEPYTADWMLAFRVVIPLYMVLALSQFITYLLILIVGEKENKIKEGMKMMGLNDSVF
3
+ >Query_1:1-199_alignment_SI2.2.0_06267:1-199
4
+ MNTLWLSLWDYPGKLPLNFMVFDTKDDLQAAYWRDPYSIPLAVIFEDPQPISQRLIYEIRTNPSYTLPPPPTKLYSAPISCRKNKTGHWMDDILSIKTGESCPVNNYLHSGFLALQMITDITKIKLENSDVTIPDIKLIMFPKEPYTADWMLAFRVVIPLYMVLALSQFITYLLILIVGEKENKIKEGMKMMGLNDSVF
5
+ >SI2.2.0_06267:1-199
6
+ MNTLWLSLWDYPGKLPLNFMVFDTKDDLQAAYWRDPYSIPLAVIFEDPQPISQRLIYEIRTNPSYTLPPPPTKLYSAPISCRKNKTGHWMDDILSIKTGESCPVNNYLHSGFLALQMITDITKIKLENSDVTIPDIKLIMFPKEPYTADWMLAFRVVIPLYMVLALSQFITYLLILIVGEKENKIKEGMKMMGLNDSVF
7
+ >SI2.2.0_13722:1-186
8
+ MSANRLNVLVTLMLAVALLVTESGNAQVDGYLQFNPKRSAVSSPQKYCGKKLSNALQIICDGVYNSMFKKSGQDFPPQNKRHIAHRINGNEEESFTTLKSNFLNWCVEVYHRHYRFVFVSEMEMADYPLAYDISPYLPPFLSRARARGMLDGRFAGRRYRRESRGIHEECCINGCTINELTSYCGP
9
+ >SI2.2.0_13722:1-186_alignment_SI2.2.0_13722:1-186
10
+ MSANRLNVLVTLMLAVALLVTESGNAQVDGYLQFNPKRSAVSSPQKYCGKKLSNALQIICDGVYNSMFKKSGQDFPPQNKRHIAHRINGNEEESFTTLKSNFLNWCVEVYHRHYRFVFVSEMEMADYPLAYDISPYLPPFLSRARARGMLDGRFAGRRYRRESRGIHEECCINGCTINELTSYCGP
11
+ >SI2.2.0_13722:1-186
12
+ MSANRLNVLVTLMLAVALLVTESGNAQVDGYLQFNPKRSAVSSPQKYCGKKLSNALQIICDGVYNSMFKKSGQDFPPQNKRHIAHRINGNEEESFTTLKSNFLNWCVEVYHRHYRFVFVSEMEMADYPLAYDISPYLPPFLSRARARGMLDGRFAGRRYRRESRGIHEECCINGCTINELTSYCGP
@@ -0,0 +1,10 @@
1
+ >SI2.2.0_06267 locus=Si_gnF.scaffold02592[1282609..1284114].pep_2 quality=100.00
2
+ MNTLWLSLWDYPGKLPLNFMVFDTKDDLQAAYWRDPYSIPLAVIFEDPQPISQRLIYEIR
3
+ TNPSYTLPPPPTKLYSAPISCRKNKTGHWMDDILSIKTGESCPVNNYLHSGFLALQMITD
4
+ ITKIKLENSDVTIPDIKLIMFPKEPYTADWMLAFRVVIPLYMVLALSQFITYLLILIVGE
5
+ KENKIKEGMKMMGLNDSVF
6
+ >SI2.2.0_13722 locus=Si_gnF.scaffold06207[1925625..1928536].pep_1 quality=100.00
7
+ MSANRLNVLVTLMLAVALLVTESGNAQVDGYLQFNPKRSAVSSPQKYCGKKLSNALQIIC
8
+ DGVYNSMFKKSGQDFPPQNKRHIAHRINGNEEESFTTLKSNFLNWCVEVYHRHYRFVFVS
9
+ EMEMADYPLAYDISPYLPPFLSRARARGMLDGRFAGRRYRRESRGIHEECCINGCTINEL
10
+ TSYCGP
data/spec/spec_helper.rb CHANGED
@@ -45,7 +45,7 @@ RSpec.configure do |config|
45
45
 
46
46
  # Suppress "open with / save" dialog for FASTA, XML, and TSV file types.
47
47
  options.profile['browser.helperApps.neverAsk.saveToDisk'] =
48
- 'text/fasta,text/xml,text/tsv'
48
+ 'text/fasta,text/xml,text/tsv,image/png'
49
49
 
50
50
  Capybara::Selenium::Driver.new(app, browser: :firefox, options: options)
51
51
  end
data/views/layout.erb CHANGED
@@ -94,8 +94,8 @@
94
94
  </a>
95
95
  <br>
96
96
  Please cite relevant data sources and:
97
- <a href="http://www.biorxiv.org/content/early/2015/11/27/033142">
98
- Priyam et al. (2015) Sequenceserver: a modern graphical user interface for custom BLAST databases</a>.
97
+ <a href="https://doi.org/10.1093/molbev/msz185">
98
+ Priyam et al. (2019) Sequenceserver: a modern graphical user interface for custom BLAST databases</a>.
99
99
  </p>
100
100
  </div> <!-- /container -->
101
101
  </div>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequenceserver
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.beta1
4
+ version: 2.0.0.beta3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anurag Priyam
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2019-07-24 00:00:00.000000000 Z
14
+ date: 2019-08-21 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: json_pure
@@ -57,62 +57,62 @@ dependencies:
57
57
  name: sinatra
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - "~>"
61
- - !ruby/object:Gem::Version
62
- version: '2.0'
63
60
  - - ">="
64
61
  - !ruby/object:Gem::Version
65
62
  version: 2.0.0
63
+ - - "~>"
64
+ - !ruby/object:Gem::Version
65
+ version: '2.0'
66
66
  type: :runtime
67
67
  prerelease: false
68
68
  version_requirements: !ruby/object:Gem::Requirement
69
69
  requirements:
70
- - - "~>"
71
- - !ruby/object:Gem::Version
72
- version: '2.0'
73
70
  - - ">="
74
71
  - !ruby/object:Gem::Version
75
72
  version: 2.0.0
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '2.0'
76
76
  - !ruby/object:Gem::Dependency
77
77
  name: slop
78
78
  requirement: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '3.6'
83
80
  - - ">="
84
81
  - !ruby/object:Gem::Version
85
82
  version: 3.6.0
83
+ - - "~>"
84
+ - !ruby/object:Gem::Version
85
+ version: '3.6'
86
86
  type: :runtime
87
87
  prerelease: false
88
88
  version_requirements: !ruby/object:Gem::Requirement
89
89
  requirements:
90
- - - "~>"
91
- - !ruby/object:Gem::Version
92
- version: '3.6'
93
90
  - - ">="
94
91
  - !ruby/object:Gem::Version
95
92
  version: 3.6.0
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '3.6'
96
96
  - !ruby/object:Gem::Dependency
97
97
  name: capybara
98
98
  requirement: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
- version: '3.12'
102
+ version: '3.15'
103
103
  - - ">="
104
104
  - !ruby/object:Gem::Version
105
- version: 3.12.0
105
+ version: 3.15.1
106
106
  type: :development
107
107
  prerelease: false
108
108
  version_requirements: !ruby/object:Gem::Requirement
109
109
  requirements:
110
110
  - - "~>"
111
111
  - !ruby/object:Gem::Version
112
- version: '3.12'
112
+ version: '3.15'
113
113
  - - ">="
114
114
  - !ruby/object:Gem::Version
115
- version: 3.12.0
115
+ version: 3.15.1
116
116
  - !ruby/object:Gem::Dependency
117
117
  name: capybara-screenshot
118
118
  requirement: !ruby/object:Gem::Requirement
@@ -134,45 +134,25 @@ dependencies:
134
134
  - !ruby/object:Gem::Version
135
135
  version: 1.0.23
136
136
  - !ruby/object:Gem::Dependency
137
- name: codeclimate-test-reporter
137
+ name: rack-test
138
138
  requirement: !ruby/object:Gem::Requirement
139
139
  requirements:
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ version: 1.0.0
140
143
  - - "~>"
141
144
  - !ruby/object:Gem::Version
142
145
  version: '1.0'
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- version: 1.0.8
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - "~>"
151
- - !ruby/object:Gem::Version
152
- version: '1.0'
153
- - - ">="
154
- - !ruby/object:Gem::Version
155
- version: 1.0.8
156
- - !ruby/object:Gem::Dependency
157
- name: rack-test
158
- requirement: !ruby/object:Gem::Requirement
159
- requirements:
160
- - - "~>"
161
- - !ruby/object:Gem::Version
162
- version: '1.0'
163
150
  - - ">="
164
151
  - !ruby/object:Gem::Version
165
152
  version: 1.0.0
166
- type: :development
167
- prerelease: false
168
- version_requirements: !ruby/object:Gem::Requirement
169
- requirements:
170
153
  - - "~>"
171
154
  - !ruby/object:Gem::Version
172
155
  version: '1.0'
173
- - - ">="
174
- - !ruby/object:Gem::Version
175
- version: 1.0.0
176
156
  - !ruby/object:Gem::Dependency
177
157
  name: rake
178
158
  requirement: !ruby/object:Gem::Requirement
@@ -197,22 +177,22 @@ dependencies:
197
177
  name: rspec
198
178
  requirement: !ruby/object:Gem::Requirement
199
179
  requirements:
200
- - - "~>"
201
- - !ruby/object:Gem::Version
202
- version: '3.7'
203
180
  - - ">="
204
181
  - !ruby/object:Gem::Version
205
182
  version: 3.7.0
183
+ - - "~>"
184
+ - !ruby/object:Gem::Version
185
+ version: '3.7'
206
186
  type: :development
207
187
  prerelease: false
208
188
  version_requirements: !ruby/object:Gem::Requirement
209
189
  requirements:
210
- - - "~>"
211
- - !ruby/object:Gem::Version
212
- version: '3.7'
213
190
  - - ">="
214
191
  - !ruby/object:Gem::Version
215
192
  version: 3.7.0
193
+ - - "~>"
194
+ - !ruby/object:Gem::Version
195
+ version: '3.7'
216
196
  - !ruby/object:Gem::Dependency
217
197
  name: sauce_whisk
218
198
  requirement: !ruby/object:Gem::Requirement
@@ -239,20 +219,40 @@ dependencies:
239
219
  requirements:
240
220
  - - "~>"
241
221
  - !ruby/object:Gem::Version
242
- version: '3.141'
222
+ version: '3.142'
243
223
  - - ">="
244
224
  - !ruby/object:Gem::Version
245
- version: 3.141.0
225
+ version: 3.142.3
246
226
  type: :development
247
227
  prerelease: false
248
228
  version_requirements: !ruby/object:Gem::Requirement
249
229
  requirements:
250
230
  - - "~>"
251
231
  - !ruby/object:Gem::Version
252
- version: '3.141'
232
+ version: '3.142'
233
+ - - ">="
234
+ - !ruby/object:Gem::Version
235
+ version: 3.142.3
236
+ - !ruby/object:Gem::Dependency
237
+ name: simplecov
238
+ requirement: !ruby/object:Gem::Requirement
239
+ requirements:
253
240
  - - ">="
254
241
  - !ruby/object:Gem::Version
255
- version: 3.141.0
242
+ version: 0.17.0
243
+ - - "~>"
244
+ - !ruby/object:Gem::Version
245
+ version: 0.17.0
246
+ type: :development
247
+ prerelease: false
248
+ version_requirements: !ruby/object:Gem::Requirement
249
+ requirements:
250
+ - - ">="
251
+ - !ruby/object:Gem::Version
252
+ version: 0.17.0
253
+ - - "~>"
254
+ - !ruby/object:Gem::Version
255
+ version: 0.17.0
256
256
  description: |
257
257
  SequenceServer lets you rapidly set up a BLAST+ server with an intuitive
258
258
  user interface for use locally or over the web.
@@ -3714,7 +3714,6 @@ files:
3714
3714
  - spec/blast_versions/blast_2.9.0/import_spec_capybara_local_2.9.0.rb
3715
3715
  - spec/blast_versions/diamond_0.9.24/diamond_0.9.24_spec.rb
3716
3716
  - spec/blast_versions/diamond_0.9.24/import_spec_capybara_local_0.9.24.rb
3717
- - spec/capybara_spec.local.rb
3718
3717
  - spec/capybara_spec.rb
3719
3718
  - spec/config_spec.rb
3720
3719
  - spec/database/funky_ids/funky_ids.fa
@@ -3964,10 +3963,12 @@ files:
3964
3963
  - spec/sequences/Nucleotide_TP53_COX41.fasta
3965
3964
  - spec/sequences/Protein_TP53_COX41.fasta
3966
3965
  - spec/sequences/Query_1_SI2_2_0_06267.txt
3966
+ - spec/sequences/alignment-2_hits.txt
3967
3967
  - spec/sequences/nucleotide_query.fa
3968
3968
  - spec/sequences/problematic_query.fa
3969
3969
  - spec/sequences/protein_query.fa
3970
3970
  - spec/sequences/sample_query_fire_ant_obps.fa
3971
+ - spec/sequences/sequenceserver-2_hits.fa
3971
3972
  - spec/sequences/sequenceserver-SI2.2.0_06267.fa
3972
3973
  - spec/sequenceserver_spec.rb
3973
3974
  - spec/spec_helper.rb
@@ -4006,8 +4007,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
4006
4007
  - !ruby/object:Gem::Version
4007
4008
  version: 1.3.1
4008
4009
  requirements: []
4009
- rubyforge_project:
4010
- rubygems_version: 2.5.2.3
4010
+ rubygems_version: 3.0.1
4011
4011
  signing_key:
4012
4012
  specification_version: 4
4013
4013
  summary: BLAST search made easy!
@@ -1,190 +0,0 @@
1
- describe 'a browser', type: :feature, js: true do
2
- it 'properly controls blast button' do
3
- visit '/'
4
-
5
- fill_in('sequence', with: nucleotide_query)
6
- page.evaluate_script("$('#method').is(':disabled')").should eq(true)
7
-
8
- check(nucleotide_databases.first)
9
- page.evaluate_script("$('#method').is(':disabled')").should eq(false)
10
- end
11
-
12
- it 'properly controls interaction with database listing' do
13
- visit '/'
14
- fill_in('sequence', with: nucleotide_query)
15
- check(nucleotide_databases.first)
16
- page.evaluate_script("$('.protein .database').first().hasClass('disabled')")
17
- .should eq(true)
18
- end
19
-
20
- it 'shows a dropdown menu when other blast methods are available' do
21
- visit '/'
22
- fill_in('sequence', with: nucleotide_query)
23
- check(nucleotide_databases.first)
24
- page.save_screenshot('screenshot.png')
25
- page.has_css?('button.dropdown-toggle').should eq(true)
26
- end
27
-
28
- it 'can run a simple blastn search' do
29
- perform_search query: nucleotide_query,
30
- databases: nucleotide_databases
31
- page.should have_content('BLASTN')
32
- end
33
-
34
- it 'can run a simple blastp search' do
35
- perform_search query: protein_query,
36
- databases: protein_databases
37
- page.should have_content('BLASTP')
38
- end
39
-
40
- it 'can run a simple blastx search' do
41
- perform_search query: nucleotide_query,
42
- databases: protein_databases
43
- page.should have_content('BLASTX')
44
- end
45
-
46
- it 'can run a simple tblastx search' do
47
- perform_search query: nucleotide_query,
48
- databases: nucleotide_databases,
49
- method: 'tblastx'
50
- page.should have_content('TBLASTX')
51
- end
52
-
53
- it 'can run a simple tblastn search' do
54
- perform_search query: protein_query,
55
- databases: nucleotide_databases
56
- page.should have_content('TBLASTN')
57
- end
58
-
59
- ### Test aspects of the generated report.
60
-
61
- it 'can show hit sequences in a modal' do
62
- # Do a BLASTP search. protein_query refers to the first two sequence in
63
- # protein_databases[0], so the top hits are the query sequences themselves.
64
- perform_search(query: protein_query,
65
- databases: protein_databases.values_at(0))
66
-
67
- # Click on the first sequence viewer link in the report.
68
- page.execute_script("$('.view-sequence:eq(0)').click()")
69
-
70
- within('.sequence-viewer') do
71
- page.should have_content('SI2.2.0_06267')
72
- page.should have_content(<<~SEQ.chomp)
73
- MNTLWLSLWDYPGKLPLNFMVFDTKDDLQAAYWRDPYSIP
74
- LAVIFEDPQPISQRLIYEIRTNPSYTLPPPPTKLYSAPIS
75
- CRKNKTGHWMDDILSIKTGESCPVNNYLHSGFLALQMITD
76
- ITKIKLENSDVTIPDIKLIMFPKEPYTADWMLAFRVVIPL
77
- YMVLALSQFITYLLILIVGEKENKIKEGMKMMGLNDSVF
78
- SEQ
79
- end
80
-
81
- # Dismiss the first modal.
82
- page.execute_script("$('.sequence-viewer').modal('hide')")
83
-
84
- # Click on the second sequence viewer link in the report.
85
- page.execute_script("$('.view-sequence:eq(1)').click()")
86
-
87
- within('.sequence-viewer') do
88
- page.should have_content('SI2.2.0_13722')
89
- page.should have_content(<<~SEQ.chomp)
90
- MSANRLNVLVTLMLAVALLVTESGNAQVDGYLQFNPKRSA
91
- VSSPQKYCGKKLSNALQIICDGVYNSMFKKSGQDFPPQNK
92
- RHIAHRINGNEEESFTTLKSNFLNWCVEVYHRHYRFVFVS
93
- EMEMADYPLAYDISPYLPPFLSRARARGMLDGRFAGRRYR
94
- RESRGIHEECCINGCTINELTSYCGP
95
- SEQ
96
- end
97
- end
98
-
99
- it "can download hit sequences" do
100
- # Do a BLASTP search. protein_query refers to the first two sequence in
101
- # protein_databases[0], so the top hits are the query sequences themselves.
102
- perform_search(query: protein_query,
103
- databases: protein_databases.values_at(0))
104
-
105
- # Click on the first FASTA download button on the page and wait for the
106
- # download to finish.
107
- page.execute_script("$('.download-fa:eq(0)').click()")
108
- wait_for_download
109
-
110
- # Test name and content of the downloaded file.
111
- expect(File.basename(downloaded_file)).
112
- to eq('sequenceserver-SI2.2.0_06267.fa')
113
- expect(File.read(downloaded_file)).
114
- to eq(File.read("#{__dir__}/sequences/sequenceserver-SI2.2.0_06267.fa"))
115
- end
116
-
117
- it "can download alignment for each hit" do
118
- # Do a BLASTP search. protein_query refers to the first two sequence in
119
- # protein_databases[0], so the top hits are the query sequences themselves.
120
- perform_search(query: protein_query,
121
- databases: protein_databases.values_at(0))
122
-
123
- # Click on the first Alignment download button on the page and wait for the
124
- # download to finish.
125
- page.execute_script("$('.download-aln:eq(0)').click()")
126
- wait_for_download
127
-
128
- # Test name and content of the downloaded file.
129
- expect(File.basename(downloaded_file)).to eq('Query_1_SI2_2_0_06267.txt')
130
- expect(File.read(downloaded_file)).
131
- to eq(File.read("#{__dir__}/sequences/Query_1_SI2_2_0_06267.txt"))
132
- end
133
-
134
- it 'disables sequence viewer links if hits are longer than 10kb' do
135
- # BLASTN transcripts against genome. nucleotide_query refers to two fire
136
- # ant transcripts and nucleotide_databases[0] is subset of the fire ant
137
- # genome (few longest scaffolds). We expect sequence viewer links to be
138
- # disabled for all hits of this search.
139
- perform_search(query: nucleotide_query,
140
- databases: nucleotide_databases.values_at(0))
141
-
142
- # Check that the sequence viewer links are disabled.
143
- page.evaluate_script("$('.view-sequence').is(':disabled')").should eq(true)
144
- end
145
-
146
- ## Helpers ##
147
-
148
- def perform_search(query: , databases: , method: nil)
149
- # Load search form.
150
- visit '/'
151
-
152
- # Fill in query, select databases, submit form.
153
- fill_in('sequence', with: query)
154
- databases.each { |db| check db }
155
- if method == 'tblastx'
156
- find('.dropdown-toggle').click
157
- find('.dropdown-menu li').click
158
- end
159
- click_button('method')
160
-
161
- # Switch to new window because link opens in new window
162
- page.driver.browser.switch_to.window(page.driver.browser.window_handles.last)
163
-
164
- # It is important to have this line or the examples end prematurely with a
165
- # failure.
166
- page.should have_content('Query')
167
- end
168
-
169
- def nucleotide_query
170
- File.read File.join(__dir__, 'sequences', 'nucleotide_query.fa')
171
- end
172
-
173
- def protein_query
174
- File.read File.join(__dir__, 'sequences', 'protein_query.fa')
175
- end
176
-
177
- def nucleotide_databases
178
- [
179
- 'Solenopsis invicta gnG subset',
180
- 'Sinvicta 2-2-3 cdna subset'
181
- ]
182
- end
183
-
184
- def protein_databases
185
- [
186
- 'Sinvicta 2-2-3 prot subset',
187
- '2018-04 Swiss-Prot insecta'
188
- ]
189
- end
190
- end