sequenceserver 2.0.0.beta1 → 2.0.0.beta3
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.
- checksums.yaml +5 -5
- data/.travis.yml +7 -16
- data/Dockerfile +2 -7
- data/README.md +10 -12
- data/lib/sequenceserver/version.rb +1 -1
- data/package.json +1 -1
- data/public/js/report.js +16 -25
- data/public/sequenceserver-report.min.js +2 -2
- data/sequenceserver.gemspec +3 -4
- data/spec/capybara_spec.rb +242 -57
- data/spec/sequences/alignment-2_hits.txt +12 -0
- data/spec/sequences/sequenceserver-2_hits.fa +10 -0
- data/spec/spec_helper.rb +1 -1
- data/views/layout.erb +2 -2
- metadata +55 -55
- data/spec/capybara_spec.local.rb +0 -190
|
@@ -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="
|
|
98
|
-
Priyam et al. (
|
|
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.
|
|
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-
|
|
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.
|
|
102
|
+
version: '3.15'
|
|
103
103
|
- - ">="
|
|
104
104
|
- !ruby/object:Gem::Version
|
|
105
|
-
version: 3.
|
|
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.
|
|
112
|
+
version: '3.15'
|
|
113
113
|
- - ">="
|
|
114
114
|
- !ruby/object:Gem::Version
|
|
115
|
-
version: 3.
|
|
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:
|
|
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.
|
|
222
|
+
version: '3.142'
|
|
243
223
|
- - ">="
|
|
244
224
|
- !ruby/object:Gem::Version
|
|
245
|
-
version: 3.
|
|
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.
|
|
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:
|
|
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
|
-
|
|
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!
|
data/spec/capybara_spec.local.rb
DELETED
|
@@ -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
|