sequenceserver 0.8.6 → 0.8.7.beta1
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.
Potentially problematic release.
This version of sequenceserver might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/lib/profile_code.rb +217 -0
- data/lib/sequenceserver.rb +11 -8
- data/sequenceserver.gemspec +1 -1
- data/tests/test_ui.rb~ +104 -0
- metadata +80 -89
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 497b668eaeb852effdb0181e176e37c7c8fe746f
|
4
|
+
data.tar.gz: 1999260fc36d0d0defccbe80123f5dc85650f6a5
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 00b1a531ab3dae22b949581e8d2d73ef0948b12186284701dac14e90aa790f959c0b19f3c6daaa8b4d88e6f7b8fa5099fb7c632e7335b612b5bdaf1b4b17beca
|
7
|
+
data.tar.gz: 4600be84bc18e1ac2e93f11340355a867292bcec70d6c79758a6a9d6e88b75080870fea5e39c9faeaff0029bcc20187adb2daff2e52c3a92ef119767f1e127e7
|
data/lib/profile_code.rb
ADDED
@@ -0,0 +1,217 @@
|
|
1
|
+
require 'ruby-prof'
|
2
|
+
|
3
|
+
$:.unshift '.'
|
4
|
+
|
5
|
+
#require 'sinatra/base'
|
6
|
+
require 'yaml'
|
7
|
+
require 'logger'
|
8
|
+
require 'fileutils'
|
9
|
+
require 'sequenceserver/helpers'
|
10
|
+
require 'sequenceserver/blast'
|
11
|
+
require 'sequenceserver/sequencehelpers'
|
12
|
+
require 'sequenceserver/sinatralikeloggerformatter'
|
13
|
+
require 'sequenceserver/customisation'
|
14
|
+
require 'sequenceserver/version'
|
15
|
+
|
16
|
+
require 'sequenceserver'
|
17
|
+
|
18
|
+
|
19
|
+
query = '>1111883
|
20
|
+
GCTGGCGGCGTGCCTAACACATGTAAGTCGAACGGGACTGGGGGCAACTCCAGTTCAGTG
|
21
|
+
GCAGACGGGTGCGTAACACGTGAGCAACTTGTCCGACGGCGGGGGATAGCCGGCCCAACG
|
22
|
+
GCCGGGTAATACCGCGTACGCTCGTTTAGGGACATCCCTGAATGAGGAAAGCCGTAAGGC
|
23
|
+
ACCGACGGAGAGGCTCGCGGCCTATCAGCTAGTTGGCGGGGTAACGGCCCACCAAGGCGA
|
24
|
+
CGACGGGTAGCTGGTCTGAGAGGATGGCCAGCCACATTGGGACTGAGACACGGCCCAGAC
|
25
|
+
TCCTACGGGAGGCAGCAGTGGGGAATCTTGCGCAATGGCCGCAAGGCTGACGCAGCGACG
|
26
|
+
CCGCGTGTGGGATGACGGCCTTCGGGTTGTAAACCACTGTCGGGAGGAACGAATACTCGG
|
27
|
+
CTAGTCCGAGGGTGACGGTACCTCCAAAGGAAGCACCGGCTAACTCCGTGCCAGCAGCCG
|
28
|
+
CGGTAATACGGAGGGTGCGAGCGTTGTCCGGAATCACTGGGCGTAAAGGGCGCGTAGGTG
|
29
|
+
GCCCGTTAAGTGGCTGGTGAAATCCCGGGGCTCAACTCCGGGGCTGCCGGTCAGACTGGC
|
30
|
+
GAGCTAGAGCACGGTAGGGGCAGATGGAATTCCCGGTGTAGCGGTGGAATGCGTAGATAT
|
31
|
+
CGGGAAGAATACCAGTGGCGAAGGCGTTCTGCTGGGCCGTTGCTGACACTGAGGCGCGAC
|
32
|
+
AGCGTGGGGAGCAAACAGGATTAGATACCCTGGTAGTCCACGCCGTAAACGATGGACACT
|
33
|
+
AGACGTCGGGGGGAGCGACCCTCCCGGTGTCGTCGCTAACGCAGTAAGTGTCCCGCCTGG
|
34
|
+
GGAGTACGGCCGCAAGGCTGAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCGGTGGA
|
35
|
+
GCATGTGGTTTAATTCGAAGCAACGCGAAGAACCTTACCTGGGCTTGACATGCTGGTGCA
|
36
|
+
AGCCGGTGGAAACATCGGCCCCTCTTCGGAGCGCCAGCACAGGTGCTGCATGGCTGTCGT
|
37
|
+
CAGCTCGTGTCGTGAGATGTTGGGTTAAGTCCCGCAACGAGCGCAACTCTCGCTCCCAGT
|
38
|
+
TGCCAGCGGTTCGGCCGGGGACTCTGGGGGGACTGCCGGCGTTAAGCCGGAGGAAGGTGG
|
39
|
+
GGACGACGTCAAGTCATCATGGCCCTTACGTCCAGGGCGACACACGTGCTACAATGCCTG
|
40
|
+
GTACAGCGCGTCGCGAACTCGCAAGAGGGAGCCAATCGCCAAAAGCCGGGCTAAGTTCGG
|
41
|
+
ATTGTCGTCTGCAACTCGACGGCATGAAGCCGGAATCGCTAGTAATCGCGGATCAGCCAC
|
42
|
+
GCCGCGGTGAATACGTTCCCGGGCCTTGTACACACCGCCCGTCACGCCATGGAAGCCGGA
|
43
|
+
GGGACCCGAAACCGGTGGGCCAACCGCAAGGGGGCAGCCGTCTAAGGT'
|
44
|
+
|
45
|
+
#blastn -db '/home/ben/git/sequenceserver/db/97_otus.fasta' -query '/tmp/sequenceserver_query20140119-10926-qt2ecp' -task blastn -num_threads 1 -html
|
46
|
+
method = 'blastn'#params['method']
|
47
|
+
databases = ['/home/ben/git/sequenceserver/db/97_otus.fasta']#params[:databases]
|
48
|
+
sequence = query #params[:sequence]
|
49
|
+
advanced_opts = '-max_target_seqs 1'#params['advanced']
|
50
|
+
|
51
|
+
# evaluate empty sequence as nil, otherwise as fasta
|
52
|
+
# sequence = sequence.empty? ? nil : to_fasta(sequence)
|
53
|
+
|
54
|
+
# blastn implies blastn, not megablast; but let's not interfere if a user
|
55
|
+
# specifies `task` herself
|
56
|
+
if method == 'blastn' and not advanced_opts =~ /task/
|
57
|
+
#advanced_opts << ' -task blastn '
|
58
|
+
end
|
59
|
+
|
60
|
+
|
61
|
+
# run blast and log
|
62
|
+
blast = SequenceServer::Blast.new(method, sequence, databases.join(' '), advanced_opts)
|
63
|
+
blast.run!
|
64
|
+
puts('Ran: ' + blast.command)
|
65
|
+
|
66
|
+
|
67
|
+
def format_blast_results(result, databases)
|
68
|
+
formatted_result = ''
|
69
|
+
@all_retrievable_ids = []
|
70
|
+
string_of_used_databases = databases.join(' ')
|
71
|
+
blast_database_number = 0
|
72
|
+
line_number = 0
|
73
|
+
started_query = false
|
74
|
+
finished_database_summary = false
|
75
|
+
finished_alignments = false
|
76
|
+
reference_string = ''
|
77
|
+
database_summary_string = ''
|
78
|
+
result.each do |line|
|
79
|
+
line_number += 1
|
80
|
+
next if line_number <= 5 #skip the first 5 lines
|
81
|
+
|
82
|
+
# Add the reference to the end, not the start, of the blast result
|
83
|
+
if line_number >= 7 and line_number <= 15
|
84
|
+
reference_string += line
|
85
|
+
next
|
86
|
+
end
|
87
|
+
|
88
|
+
if !finished_database_summary and line_number > 15
|
89
|
+
database_summary_string += line
|
90
|
+
finished_database_summary = true if line.match(/total letters/)
|
91
|
+
next
|
92
|
+
end
|
93
|
+
|
94
|
+
# Remove certain lines from the output
|
95
|
+
skipped_lines = [/^<\/BODY>/,/^<\/HTML>/,/^<\/PRE>/]
|
96
|
+
skip = false
|
97
|
+
skipped_lines.each do |skippy|
|
98
|
+
# $stderr.puts "`#{line}' matches #{skippy}?"
|
99
|
+
if skippy.match(line)
|
100
|
+
skip = true
|
101
|
+
# $stderr.puts 'yes'
|
102
|
+
else
|
103
|
+
# $stderr.puts 'no'
|
104
|
+
end
|
105
|
+
end
|
106
|
+
next if skip
|
107
|
+
|
108
|
+
# Remove the javascript inclusion
|
109
|
+
line.gsub!(/^<script src=\"blastResult.js\"><\/script>/, '')
|
110
|
+
|
111
|
+
if line.match(/^>/) # If line to possibly replace
|
112
|
+
# Reposition the anchor to the end of the line, so that it both still works and
|
113
|
+
# doesn't interfere with the diagnostic space at the beginning of the line.
|
114
|
+
#
|
115
|
+
# There are two cases:
|
116
|
+
#
|
117
|
+
# database formatted _with_ -parse_seqids
|
118
|
+
line.gsub!(/^>(.+)(<a.*><\/a>)(.*)/, '>\1\3\2')
|
119
|
+
#
|
120
|
+
# database formatted _without_ -parse_seqids
|
121
|
+
line.gsub!(/^>(<a.*><\/a>)(.*)/, '>\2\1')
|
122
|
+
|
123
|
+
# get hit coordinates -- useful for linking to genome browsers
|
124
|
+
hit_length = result[line_number..-1].index{|l| l =~ />lcl|Lambda/}
|
125
|
+
hit_coordinates = result[line_number, hit_length].grep(/Sbjct/).
|
126
|
+
map(&:split).map{|l| [l[1], l[-1]]}.flatten.map(&:to_i).minmax
|
127
|
+
|
128
|
+
# Create the hyperlink (if required)
|
129
|
+
formatted_result += construct_sequence_hyperlink_line(line, databases, hit_coordinates)
|
130
|
+
else
|
131
|
+
# Surround each query's result in <div> tags so they can be coloured by CSS
|
132
|
+
if matches = line.match(/^<b>Query=<\/b> (.*)/) # If starting a new query, then surround in new <div> tag, and finish the last one off
|
133
|
+
line = "<div class=\"resultn\" id=\"#{matches[1]}\">\n<h3>Query= #{matches[1]}</h3><pre>"
|
134
|
+
unless blast_database_number == 0
|
135
|
+
line = "</pre></div>\n#{line}"
|
136
|
+
end
|
137
|
+
blast_database_number += 1
|
138
|
+
elsif line.match(/^ Database: /) and !finished_alignments
|
139
|
+
formatted_result += "</div>\n<pre>#{database_summary_string}\n\n"
|
140
|
+
finished_alignments = true
|
141
|
+
end
|
142
|
+
formatted_result += line
|
143
|
+
end
|
144
|
+
end
|
145
|
+
formatted_result << "</pre>"
|
146
|
+
|
147
|
+
link_to_fasta_of_all = "/get_sequence/?id=#{@all_retrievable_ids.join(' ')}&db=#{string_of_used_databases}"
|
148
|
+
# #dbs must be sep by ' '
|
149
|
+
retrieval_text = @all_retrievable_ids.empty? ? '' : "<a href='#{url(link_to_fasta_of_all)}'>FASTA of #{@all_retrievable_ids.length} retrievable hit(s)</a>"
|
150
|
+
|
151
|
+
"<h2>Results</h2>"+
|
152
|
+
retrieval_text +
|
153
|
+
"<br/><br/>" +
|
154
|
+
formatted_result +
|
155
|
+
"<br/>" +
|
156
|
+
"<pre>#{reference_string.strip}</pre>"
|
157
|
+
end
|
158
|
+
|
159
|
+
def construct_sequence_hyperlink_line(line, databases, hit_coordinates)
|
160
|
+
matches = line.match(/^>(.+)/)
|
161
|
+
sequence_id = matches[1]
|
162
|
+
|
163
|
+
link = nil
|
164
|
+
|
165
|
+
# If a custom sequence hyperlink method has been defined,
|
166
|
+
# use that.
|
167
|
+
options = {
|
168
|
+
:sequence_id => sequence_id,
|
169
|
+
:databases => databases,
|
170
|
+
:hit_coordinates => hit_coordinates
|
171
|
+
}
|
172
|
+
|
173
|
+
# First precedence: construct the whole line to be customised
|
174
|
+
if self.respond_to?(:construct_custom_sequence_hyperlinking_line)
|
175
|
+
settings.log.debug("Using custom hyperlinking line creator with sequence #{options.inspect}")
|
176
|
+
link_line = construct_custom_sequence_hyperlinking_line(options)
|
177
|
+
unless link_line.nil?
|
178
|
+
return link_line
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
# If we have reached here, custom construction of the
|
183
|
+
# whole line either wasn't defined, or returned nil
|
184
|
+
# (indicating failure)
|
185
|
+
if self.respond_to?(:construct_custom_sequence_hyperlink)
|
186
|
+
# settings.log.debug("Using custom hyperlink creator with sequence #{options.inspect}")
|
187
|
+
link = construct_custom_sequence_hyperlink(options)
|
188
|
+
else
|
189
|
+
# settings.log.debug("Using standard hyperlink creator with sequence `#{options.inspect}'")
|
190
|
+
link = construct_standard_sequence_hyperlink(options)
|
191
|
+
end
|
192
|
+
|
193
|
+
# Return the BLAST output line with the link in it
|
194
|
+
if link.nil?
|
195
|
+
# settings.log.debug('No link added link for: `'+ sequence_id +'\'')
|
196
|
+
return line
|
197
|
+
else
|
198
|
+
settings.log.debug('Added link for: `'+ sequence_id +'\''+ link)
|
199
|
+
return "><a href='#{url(link)}' target='_blank'>#{sequence_id}</a> \n"
|
200
|
+
end
|
201
|
+
|
202
|
+
end
|
203
|
+
|
204
|
+
# Advanced options are specified by the user. Here they are checked for interference with SequenceServer operations.
|
205
|
+
# raise ArgumentError if an error has occurred, otherwise return without value
|
206
|
+
def validate_advanced_parameters(advanced_options)
|
207
|
+
raise ArgumentError, "Invalid characters detected in the advanced options" unless advanced_options =~ /\A[a-z0-9\-_\. ']*\Z/i
|
208
|
+
disallowed_options = %w(-out -html -outfmt -db -query)
|
209
|
+
disallowed_options.each do |o|
|
210
|
+
raise ArgumentError, "The advanced BLAST option \"#{o}\" is used internally by SequenceServer and so cannot be specified by the you" if advanced_options =~ /#{o}/i
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
214
|
+
puts format_blast_results(blast.result, databases)
|
215
|
+
|
216
|
+
|
217
|
+
|
data/lib/sequenceserver.rb
CHANGED
@@ -337,8 +337,8 @@ module SequenceServer
|
|
337
337
|
<em>#{found_sequences_count > sequenceids.length ? 'more' : 'less'}</em>
|
338
338
|
sequence than expected.</strong></p>
|
339
339
|
|
340
|
-
<p>This is likely due to a problem with how databases are formatted.
|
341
|
-
<strong>Please share this text with the person managing this website so
|
340
|
+
<p>This is likely due to a problem with how databases are formatted.
|
341
|
+
<strong>Please share this text with the person managing this website so
|
342
342
|
they can resolve the issue.</strong></p>
|
343
343
|
|
344
344
|
<p> You requested #{sequenceids.length} sequence#{sequenceids.length > 1 ? 's' : ''}
|
@@ -375,7 +375,10 @@ HEADER
|
|
375
375
|
end
|
376
376
|
|
377
377
|
def format_blast_results(result, databases)
|
378
|
-
|
378
|
+
# Constructing the result in an Array and then calling Array#join is much faster than
|
379
|
+
# building up a String and using +=, as older versions of SeqServ did.
|
380
|
+
formatted_results = []
|
381
|
+
|
379
382
|
@all_retrievable_ids = []
|
380
383
|
string_of_used_databases = databases.join(' ')
|
381
384
|
blast_database_number = 0
|
@@ -436,7 +439,7 @@ HEADER
|
|
436
439
|
map(&:split).map{|l| [l[1], l[-1]]}.flatten.map(&:to_i).minmax
|
437
440
|
|
438
441
|
# Create the hyperlink (if required)
|
439
|
-
|
442
|
+
formatted_results << construct_sequence_hyperlink_line(line, databases, hit_coordinates)
|
440
443
|
else
|
441
444
|
# Surround each query's result in <div> tags so they can be coloured by CSS
|
442
445
|
if matches = line.match(/^<b>Query=<\/b> (.*)/) # If starting a new query, then surround in new <div> tag, and finish the last one off
|
@@ -446,13 +449,13 @@ HEADER
|
|
446
449
|
end
|
447
450
|
blast_database_number += 1
|
448
451
|
elsif line.match(/^ Database: /) and !finished_alignments
|
449
|
-
|
452
|
+
formatted_results << "</div>\n<pre>#{database_summary_string}\n\n"
|
450
453
|
finished_alignments = true
|
451
454
|
end
|
452
|
-
|
455
|
+
formatted_results << line
|
453
456
|
end
|
454
457
|
end
|
455
|
-
|
458
|
+
formatted_results << "</pre>"
|
456
459
|
|
457
460
|
link_to_fasta_of_all = "/get_sequence/?id=#{@all_retrievable_ids.join(' ')}&db=#{string_of_used_databases}"
|
458
461
|
# #dbs must be sep by ' '
|
@@ -461,7 +464,7 @@ HEADER
|
|
461
464
|
"<h2>Results</h2>"+
|
462
465
|
retrieval_text +
|
463
466
|
"<br/><br/>" +
|
464
|
-
|
467
|
+
formatted_results.join +
|
465
468
|
"<br/>" +
|
466
469
|
"<pre>#{reference_string.strip}</pre>"
|
467
470
|
end
|
data/sequenceserver.gemspec
CHANGED
data/tests/test_ui.rb~
ADDED
@@ -0,0 +1,104 @@
|
|
1
|
+
require 'rspec'
|
2
|
+
require 'watir-webdriver'
|
3
|
+
require 'headless'
|
4
|
+
|
5
|
+
# These shared examples should work for
|
6
|
+
shared_examples_for 'a browser' do
|
7
|
+
let(:seqserv_url){'http://localhost:4567'}
|
8
|
+
|
9
|
+
it 'should simply go the seqserv webpage' do
|
10
|
+
b.goto seqserv_url
|
11
|
+
b.url.gsub(/\/$/,'').should eq(seqserv_url)
|
12
|
+
b.ready_state.should eq('complete')
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should do a simple blastp' do
|
16
|
+
b.goto seqserv_url
|
17
|
+
|
18
|
+
# Nucleotide database should be available
|
19
|
+
b.checkbox(:value => 'e205221dd32dc53ebfc9fb48cbdecd9e').enabled?.should eq(true)
|
20
|
+
|
21
|
+
# First up the blast button should be disabled
|
22
|
+
b.button(:id => 'method').text.should eq('BLAST')
|
23
|
+
b.button(:id => 'method').enabled?.should eq(false)
|
24
|
+
|
25
|
+
# Pick a protein blast database
|
26
|
+
b.checkbox(:value => '6669b1c88665158621afc06407ce88ea').set
|
27
|
+
b.checkbox(:value => '6669b1c88665158621afc06407ce88ea').checked?.should eq(true)
|
28
|
+
|
29
|
+
# nuc dbs now disabled
|
30
|
+
b.checkbox(:value => 'e205221dd32dc53ebfc9fb48cbdecd9e').enabled?.should eq(false)
|
31
|
+
|
32
|
+
# The blast button should still be disabled
|
33
|
+
b.button(:id => 'method').text.should eq('BLAST')
|
34
|
+
b.button(:id => 'method').enabled?.should eq(false)
|
35
|
+
|
36
|
+
# Give a sequence we know should hit
|
37
|
+
b.textarea(:name => 'sequence').set 'YTLPPPPTKLYSAPISCRKNKTGHWMDDILSIKTGESCPVNNYLHSGFLA'
|
38
|
+
|
39
|
+
#blast butn now active
|
40
|
+
b.button(:id => 'method').text.should eq('BLASTP')
|
41
|
+
b.button(:id => 'method').enabled?.should eq(true)
|
42
|
+
|
43
|
+
# Run the blast
|
44
|
+
b.button(:id => 'method').click
|
45
|
+
|
46
|
+
while b.div(:id => 'result').text.include?('Waiting for BLAST to be run')
|
47
|
+
end
|
48
|
+
|
49
|
+
# blast should have worked
|
50
|
+
b.div(:id => 'result').text.include?('Sequences producing significant alignments: ').should eq(true)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
#####################################################################################
|
55
|
+
#+++++++++++ Below is admin code, hopefully not necessary to mess around with to test new UI specs
|
56
|
+
|
57
|
+
# NOT thread-safe, at least because of the interaction with headless
|
58
|
+
class BrowserAdmin
|
59
|
+
def self.setup_browser(type)
|
60
|
+
case type
|
61
|
+
when :firefox then
|
62
|
+
Watir::Browser.new :firefox
|
63
|
+
when :chrome then
|
64
|
+
Watir::Browser.new :chrome
|
65
|
+
when :headless_firefox then
|
66
|
+
@headless = Headless.new
|
67
|
+
@headless.start
|
68
|
+
Watir::Browser.new :firefox
|
69
|
+
when :headless_chrome then
|
70
|
+
@headless = Headless.new
|
71
|
+
@headless.start
|
72
|
+
Watir::Browser.new :chrome
|
73
|
+
else
|
74
|
+
raise "Unknown browser type asked for: #{type.inspect}"
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def self.teardown_browser(browser)
|
79
|
+
browser.close
|
80
|
+
|
81
|
+
# Re-head again, but maybe this makes no difference
|
82
|
+
@headless.destroy unless @headless.nil?
|
83
|
+
@headless = nil
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
|
88
|
+
describe 'ui' do
|
89
|
+
[:firefox, :chrome, :headless_firefox, :headless_chrome].each do |bro|
|
90
|
+
context bro.to_s do
|
91
|
+
it_behaves_like 'a browser' do
|
92
|
+
browser = nil
|
93
|
+
before do
|
94
|
+
browser = BrowserAdmin.setup_browser bro
|
95
|
+
end
|
96
|
+
after do
|
97
|
+
BrowserAdmin.teardown_browser browser
|
98
|
+
end
|
99
|
+
let(:b){browser}
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sequenceserver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
5
|
-
prerelease:
|
4
|
+
version: 0.8.7.beta1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Anurag Priyam
|
@@ -11,224 +10,216 @@ authors:
|
|
11
10
|
autorequire:
|
12
11
|
bindir: bin
|
13
12
|
cert_chain: []
|
14
|
-
date:
|
13
|
+
date: 2014-01-21 00:00:00.000000000 Z
|
15
14
|
dependencies:
|
16
15
|
- !ruby/object:Gem::Dependency
|
17
16
|
name: bundler
|
18
17
|
requirement: !ruby/object:Gem::Requirement
|
19
|
-
none: false
|
20
18
|
requirements:
|
21
|
-
- - ~>
|
19
|
+
- - "~>"
|
22
20
|
- !ruby/object:Gem::Version
|
23
21
|
version: '1.2'
|
24
22
|
type: :runtime
|
25
23
|
prerelease: false
|
26
24
|
version_requirements: !ruby/object:Gem::Requirement
|
27
|
-
none: false
|
28
25
|
requirements:
|
29
|
-
- - ~>
|
26
|
+
- - "~>"
|
30
27
|
- !ruby/object:Gem::Version
|
31
28
|
version: '1.2'
|
32
29
|
- !ruby/object:Gem::Dependency
|
33
30
|
name: sinatra
|
34
31
|
requirement: !ruby/object:Gem::Requirement
|
35
|
-
none: false
|
36
32
|
requirements:
|
37
|
-
- - ~>
|
33
|
+
- - "~>"
|
38
34
|
- !ruby/object:Gem::Version
|
39
35
|
version: 1.3.0
|
40
36
|
type: :runtime
|
41
37
|
prerelease: false
|
42
38
|
version_requirements: !ruby/object:Gem::Requirement
|
43
|
-
none: false
|
44
39
|
requirements:
|
45
|
-
- - ~>
|
40
|
+
- - "~>"
|
46
41
|
- !ruby/object:Gem::Version
|
47
42
|
version: 1.3.0
|
48
43
|
- !ruby/object:Gem::Dependency
|
49
44
|
name: ptools
|
50
45
|
requirement: !ruby/object:Gem::Requirement
|
51
|
-
none: false
|
52
46
|
requirements:
|
53
|
-
- -
|
47
|
+
- - ">="
|
54
48
|
- !ruby/object:Gem::Version
|
55
49
|
version: '0'
|
56
50
|
type: :runtime
|
57
51
|
prerelease: false
|
58
52
|
version_requirements: !ruby/object:Gem::Requirement
|
59
|
-
none: false
|
60
53
|
requirements:
|
61
|
-
- -
|
54
|
+
- - ">="
|
62
55
|
- !ruby/object:Gem::Version
|
63
56
|
version: '0'
|
64
57
|
- !ruby/object:Gem::Dependency
|
65
58
|
name: minitest
|
66
59
|
requirement: !ruby/object:Gem::Requirement
|
67
|
-
none: false
|
68
60
|
requirements:
|
69
|
-
- -
|
61
|
+
- - ">="
|
70
62
|
- !ruby/object:Gem::Version
|
71
63
|
version: '0'
|
72
64
|
type: :development
|
73
65
|
prerelease: false
|
74
66
|
version_requirements: !ruby/object:Gem::Requirement
|
75
|
-
none: false
|
76
67
|
requirements:
|
77
|
-
- -
|
68
|
+
- - ">="
|
78
69
|
- !ruby/object:Gem::Version
|
79
70
|
version: '0'
|
80
71
|
- !ruby/object:Gem::Dependency
|
81
72
|
name: rack-test
|
82
73
|
requirement: !ruby/object:Gem::Requirement
|
83
|
-
none: false
|
84
74
|
requirements:
|
85
|
-
- -
|
75
|
+
- - ">="
|
86
76
|
- !ruby/object:Gem::Version
|
87
77
|
version: '0'
|
88
78
|
type: :development
|
89
79
|
prerelease: false
|
90
80
|
version_requirements: !ruby/object:Gem::Requirement
|
91
|
-
none: false
|
92
81
|
requirements:
|
93
|
-
- -
|
82
|
+
- - ">="
|
94
83
|
- !ruby/object:Gem::Version
|
95
84
|
version: '0'
|
96
85
|
- !ruby/object:Gem::Dependency
|
97
86
|
name: watir-webdriver
|
98
87
|
requirement: !ruby/object:Gem::Requirement
|
99
|
-
none: false
|
100
88
|
requirements:
|
101
|
-
- -
|
89
|
+
- - ">="
|
102
90
|
- !ruby/object:Gem::Version
|
103
91
|
version: '0'
|
104
92
|
type: :development
|
105
93
|
prerelease: false
|
106
94
|
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
none: false
|
108
95
|
requirements:
|
109
|
-
- -
|
96
|
+
- - ">="
|
110
97
|
- !ruby/object:Gem::Version
|
111
98
|
version: '0'
|
112
99
|
- !ruby/object:Gem::Dependency
|
113
100
|
name: headless
|
114
101
|
requirement: !ruby/object:Gem::Requirement
|
115
|
-
none: false
|
116
102
|
requirements:
|
117
|
-
- -
|
103
|
+
- - ">="
|
118
104
|
- !ruby/object:Gem::Version
|
119
105
|
version: '0'
|
120
106
|
type: :development
|
121
107
|
prerelease: false
|
122
108
|
version_requirements: !ruby/object:Gem::Requirement
|
123
|
-
none: false
|
124
109
|
requirements:
|
125
|
-
- -
|
110
|
+
- - ">="
|
126
111
|
- !ruby/object:Gem::Version
|
127
112
|
version: '0'
|
128
113
|
- !ruby/object:Gem::Dependency
|
129
114
|
name: rspec
|
130
115
|
requirement: !ruby/object:Gem::Requirement
|
131
|
-
none: false
|
132
116
|
requirements:
|
133
|
-
- -
|
117
|
+
- - ">="
|
134
118
|
- !ruby/object:Gem::Version
|
135
119
|
version: '0'
|
136
120
|
type: :development
|
137
121
|
prerelease: false
|
138
122
|
version_requirements: !ruby/object:Gem::Requirement
|
139
|
-
none: false
|
140
123
|
requirements:
|
141
|
-
- -
|
124
|
+
- - ">="
|
142
125
|
- !ruby/object:Gem::Version
|
143
126
|
version: '0'
|
144
|
-
description:
|
145
|
-
user interface for use locally or over the web.
|
146
|
-
|
147
|
-
'
|
127
|
+
description: |
|
128
|
+
SequenceServer lets you rapidly set up a BLAST+ server with an intuitive user interface for use locally or over the web.
|
148
129
|
email: anurag08priyam@gmail.com
|
149
130
|
executables:
|
150
131
|
- sequenceserver
|
151
132
|
extensions: []
|
152
133
|
extra_rdoc_files: []
|
153
134
|
files:
|
154
|
-
-
|
155
|
-
-
|
135
|
+
- Gemfile
|
136
|
+
- LICENSE.Apache.txt
|
137
|
+
- LICENSE.txt
|
138
|
+
- README.txt
|
139
|
+
- bin/sequenceserver
|
140
|
+
- config.ru
|
141
|
+
- example.config.yml
|
142
|
+
- lib/profile_code.rb
|
143
|
+
- lib/sequenceserver.rb
|
156
144
|
- lib/sequenceserver/blast.rb
|
145
|
+
- lib/sequenceserver/customisation.rb
|
157
146
|
- lib/sequenceserver/database.rb
|
158
|
-
- lib/sequenceserver/
|
147
|
+
- lib/sequenceserver/database_formatter.rb
|
159
148
|
- lib/sequenceserver/helpers.rb
|
149
|
+
- lib/sequenceserver/sequencehelpers.rb
|
160
150
|
- lib/sequenceserver/sinatralikeloggerformatter.rb
|
161
|
-
- lib/sequenceserver/
|
162
|
-
-
|
163
|
-
-
|
164
|
-
-
|
165
|
-
- views/search.erb
|
166
|
-
- public/js/jquery.activity.js
|
167
|
-
- public/js/sequenceserver.js
|
168
|
-
- public/js/jquery.js
|
169
|
-
- public/js/jquery-scrollspy.js
|
170
|
-
- public/js/sequenceserver.blast.js
|
171
|
-
- public/js/bootstrap.dropdown.js
|
172
|
-
- public/js/store.min.js
|
173
|
-
- public/js/bootstrap.modal.js
|
174
|
-
- public/js/bootstrap.transition.js
|
175
|
-
- public/js/jquery-ui.js
|
176
|
-
- public/js/jquery.enablePlaceholder.min.js
|
151
|
+
- lib/sequenceserver/version.rb
|
152
|
+
- public/css/beige.css.css
|
153
|
+
- public/css/bootstrap.dropdown.css
|
154
|
+
- public/css/bootstrap.icons.css
|
177
155
|
- public/css/bootstrap.min.css
|
178
156
|
- public/css/bootstrap.modal.css
|
179
|
-
- public/css/bootstrap.icons.css
|
180
|
-
- public/css/bootstrap.dropdown.css
|
181
|
-
- public/css/beige.css.css
|
182
157
|
- public/css/custom.css
|
183
158
|
- public/img/glyphicons-halflings-white.png
|
184
159
|
- public/img/glyphicons-halflings.png
|
185
|
-
-
|
186
|
-
-
|
187
|
-
-
|
188
|
-
-
|
189
|
-
-
|
190
|
-
-
|
191
|
-
-
|
192
|
-
-
|
160
|
+
- public/js/bootstrap.dropdown.js
|
161
|
+
- public/js/bootstrap.modal.js
|
162
|
+
- public/js/bootstrap.transition.js
|
163
|
+
- public/js/jquery-scrollspy.js
|
164
|
+
- public/js/jquery-ui.js
|
165
|
+
- public/js/jquery.activity.js
|
166
|
+
- public/js/jquery.enablePlaceholder.min.js
|
167
|
+
- public/js/jquery.js
|
168
|
+
- public/js/sequenceserver.blast.js
|
169
|
+
- public/js/sequenceserver.js
|
170
|
+
- public/js/store.min.js
|
171
|
+
- sequenceserver.gemspec
|
172
|
+
- tests/database/nucleotide/Sinvicta2-2-3.cdna.subset.fasta
|
193
173
|
- tests/database/nucleotide/Sinvicta2-2-3.cdna.subset.fasta.nhr
|
194
174
|
- tests/database/nucleotide/Sinvicta2-2-3.cdna.subset.fasta.nin
|
195
175
|
- tests/database/nucleotide/Sinvicta2-2-3.cdna.subset.fasta.nsq
|
196
|
-
- tests/database/
|
176
|
+
- tests/database/protein/Sinvicta2-2-3.prot.subset.fasta
|
177
|
+
- tests/database/protein/Sinvicta2-2-3.prot.subset.fasta.phr
|
178
|
+
- tests/database/protein/Sinvicta2-2-3.prot.subset.fasta.pin
|
179
|
+
- tests/database/protein/Sinvicta2-2-3.prot.subset.fasta.psq
|
197
180
|
- tests/run
|
198
|
-
-
|
199
|
-
-
|
200
|
-
-
|
201
|
-
-
|
202
|
-
-
|
203
|
-
-
|
204
|
-
-
|
205
|
-
-
|
181
|
+
- tests/test_sequencehelpers.rb
|
182
|
+
- tests/test_sequenceserver_blast.rb
|
183
|
+
- tests/test_ui.rb
|
184
|
+
- tests/test_ui.rb~
|
185
|
+
- tests/ui.specs.todo
|
186
|
+
- views/500.erb
|
187
|
+
- views/_options.erb
|
188
|
+
- views/search.erb
|
206
189
|
homepage: http://sequenceserver.com
|
207
190
|
licenses:
|
208
191
|
- SequenceServer (custom)
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
192
|
+
metadata: {}
|
193
|
+
post_install_message: |2+
|
194
|
+
|
195
|
+
------------------------------------------------------------------------
|
196
|
+
Thank you for installing SequenceServer :)!
|
197
|
+
|
198
|
+
To launch SequenceServer execute 'sequenceserver' from command line.
|
199
|
+
|
200
|
+
$ sequenceserver
|
201
|
+
|
202
|
+
|
203
|
+
Visit http://sequenceserver.com for more.
|
204
|
+
------------------------------------------------------------------------
|
205
|
+
|
213
206
|
rdoc_options: []
|
214
207
|
require_paths:
|
215
208
|
- lib
|
216
209
|
required_ruby_version: !ruby/object:Gem::Requirement
|
217
|
-
none: false
|
218
210
|
requirements:
|
219
|
-
- -
|
211
|
+
- - ">="
|
220
212
|
- !ruby/object:Gem::Version
|
221
213
|
version: '0'
|
222
214
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
223
|
-
none: false
|
224
215
|
requirements:
|
225
|
-
- -
|
216
|
+
- - ">"
|
226
217
|
- !ruby/object:Gem::Version
|
227
|
-
version:
|
218
|
+
version: 1.3.1
|
228
219
|
requirements: []
|
229
220
|
rubyforge_project:
|
230
|
-
rubygems_version:
|
221
|
+
rubygems_version: 2.2.0.rc.1
|
231
222
|
signing_key:
|
232
|
-
specification_version:
|
223
|
+
specification_version: 4
|
233
224
|
summary: BLAST search made easy!
|
234
225
|
test_files: []
|