sequenceserver 0.7.9 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of sequenceserver might be problematic. Click here for more details.
- data/lib/sequenceserver.rb +55 -57
- data/lib/sequenceserver/blast.rb +51 -158
- data/lib/sequenceserver/database.rb +8 -2
- data/lib/sequenceserver/helpers.rb +14 -12
- data/lib/sequenceserver/options.rb +132 -0
- data/lib/sequenceserver/sequencehelpers.rb +4 -30
- data/public/css/bootstrap.dropdown.css +29 -0
- data/public/css/bootstrap.icons.css +155 -0
- data/public/css/bootstrap.min.css +399 -314
- data/public/css/bootstrap.modal.css +28 -0
- data/public/css/custom.css +183 -23
- data/public/img/glyphicons-halflings-white.png +0 -0
- data/public/img/glyphicons-halflings.png +0 -0
- data/public/js/bootstrap-typeahead.js +298 -0
- data/public/js/bootstrap.dropdown.js +92 -0
- data/public/js/bootstrap.modal.js +7 -0
- data/public/js/bootstrap.transition.js +7 -0
- data/public/js/jquery.index.js +67 -0
- data/public/js/jquery.scrollspy.js +74 -0
- data/public/js/jquery.ui.js +57 -0
- data/public/js/sequenceserver.blast.js +96 -37
- data/public/js/sequenceserver.js +157 -85
- data/public/js/store.min.js +2 -0
- data/public/js/yaml.js +24 -0
- data/sequenceserver.gemspec +5 -2
- data/tests/run +26 -0
- data/tests/test_sequencehelpers.rb +10 -18
- data/tests/test_sequenceserver_blast.rb +60 -0
- data/views/_options.erb +144 -0
- data/views/search.erb +133 -145
- metadata +135 -52
data/views/_options.erb
ADDED
@@ -0,0 +1,144 @@
|
|
1
|
+
<%#
|
2
|
+
|
3
|
+
NOTE: The markup below is displayed in a modal window. Use less than 70
|
4
|
+
characters per line to preserve formatting.
|
5
|
+
%>
|
6
|
+
|
7
|
+
<h6>General Search Options</h6>
|
8
|
+
|
9
|
+
<br/>
|
10
|
+
|
11
|
+
<ul class="unstyled">
|
12
|
+
<li>
|
13
|
+
<pre><%= ERB::Util.h %q|-evalue <Real>
|
14
|
+
Expectation value (E) threshold for saving hits
|
15
|
+
Default = '10'| %></pre>
|
16
|
+
</li>
|
17
|
+
<li>
|
18
|
+
<pre><%= ERB::Util.h %q|-word_size <Integer, >=2>
|
19
|
+
Word size for wordfinder algorithm| %></pre>
|
20
|
+
</li>
|
21
|
+
<li>
|
22
|
+
<pre><%= ERB::Util.h %q|-gapopen <Integer>
|
23
|
+
Cost to open a gap| %></pre>
|
24
|
+
</li>
|
25
|
+
<li>
|
26
|
+
<pre><%= ERB::Util.h %q|-gapextend <Integer>
|
27
|
+
Cost to extend a gap| %></pre>
|
28
|
+
</li>
|
29
|
+
<li>
|
30
|
+
<pre><%= ERB::Util.h %q|-matrix <String>
|
31
|
+
Scoring matrix name (normally BLOSUM62)| %></pre>
|
32
|
+
</li>
|
33
|
+
<li>
|
34
|
+
<pre><%= ERB::Util.h %q|-threshold <Real, >=0>
|
35
|
+
Minimum word score such that the word is added to the BLAST lookup
|
36
|
+
table| %></pre>
|
37
|
+
</li>
|
38
|
+
<li>
|
39
|
+
<pre><%= ERB::Util.h %q|-comp_based_stats <String>
|
40
|
+
Use composition-based statistics for blastp / tblastn:
|
41
|
+
D or d: default (equivalent to 2)
|
42
|
+
0 or F or f: no composition-based statistics
|
43
|
+
1: Composition-based statistics as in NAR 29:2994-3005, 2001
|
44
|
+
2 or T or t : Composition-based score adjustment as in
|
45
|
+
Bioinformatics 21:902-911, 2005, conditioned on sequence
|
46
|
+
properties
|
47
|
+
3: Composition-based score adjustment as in Bioinformatics
|
48
|
+
21:902-911, 2005, unconditionally
|
49
|
+
For programs other than tblastn, must either be absent or be D, F
|
50
|
+
or 0
|
51
|
+
Default = `2'| %></pre>
|
52
|
+
</li>
|
53
|
+
<li>
|
54
|
+
<pre><%= ERB::Util.h %q|-num_descriptions <Integer, >=0>
|
55
|
+
Number of database sequences to show one-line descriptions for
|
56
|
+
Default = `500'| %></pre>
|
57
|
+
</li>
|
58
|
+
<li>
|
59
|
+
<pre><%= ERB::Util.h %q| -num_alignments <Integer, >=0>
|
60
|
+
Number of database sequences to show alignments for
|
61
|
+
Default = `250'| %></pre>
|
62
|
+
</li>
|
63
|
+
</ul>
|
64
|
+
|
65
|
+
<br/>
|
66
|
+
|
67
|
+
<h6>Query filtering options</h6>
|
68
|
+
|
69
|
+
<br/>
|
70
|
+
|
71
|
+
<ul class="unstyled">
|
72
|
+
<li>
|
73
|
+
<pre><%= ERB::Util.h %q|-seg <String>
|
74
|
+
Filter query sequence with SEG (Format: 'yes', 'window locut hicut',
|
75
|
+
or 'no' to disable)
|
76
|
+
Default = `no'| %></pre>
|
77
|
+
</li>
|
78
|
+
<li>
|
79
|
+
<pre><%= ERB::Util.h %q|-soft_masking <Boolean>
|
80
|
+
Apply filtering locations as soft masks
|
81
|
+
Default = `false'| %></pre>
|
82
|
+
</li>
|
83
|
+
<li>
|
84
|
+
<pre><%= ERB::Util.h %q|-lcase_masking
|
85
|
+
Use lower case filtering in query and subject sequence(s)?| %></pre>
|
86
|
+
</li>
|
87
|
+
</ul>
|
88
|
+
|
89
|
+
<br/>
|
90
|
+
|
91
|
+
<h6>Restrict search or results</h6>
|
92
|
+
|
93
|
+
<br/>
|
94
|
+
|
95
|
+
<ul class="unstyled">
|
96
|
+
<li>
|
97
|
+
<pre><%= ERB::Util.h %q|-gilist <String>
|
98
|
+
Restrict search of database to list of GI's
|
99
|
+
* Incompatible with: negative_gilist, seqidlist, remote, subject,
|
100
|
+
subject_loc| %></pre>
|
101
|
+
</li>
|
102
|
+
<li>
|
103
|
+
<pre><%= ERB::Util.h %q|-seqidlist <String>
|
104
|
+
Restrict search of database to list of SeqId's
|
105
|
+
* Incompatible with: gilist, negative_gilist, remote, subject,
|
106
|
+
subject_loc| %></pre>
|
107
|
+
</li>
|
108
|
+
<li>
|
109
|
+
<pre><%= ERB::Util.h %q|-negative_gilist <String>
|
110
|
+
Restrict search of database to everything except the listed GIs
|
111
|
+
* Incompatible with: gilist, seqidlist, remote, subject,
|
112
|
+
subject_loc| %></pre>
|
113
|
+
</li>
|
114
|
+
<li>
|
115
|
+
<pre><%= ERB::Util.h %q|-entrez_query <String>
|
116
|
+
Restrict search with the given Entrez query
|
117
|
+
* Requires: remote| %></pre>
|
118
|
+
</li>
|
119
|
+
<li>
|
120
|
+
<pre><%= ERB::Util.h %q|-db_soft_mask <String>
|
121
|
+
Filtering algorithm ID to apply to the BLAST database as soft masking
|
122
|
+
* Incompatible with: subject, subject_loc| %></pre>
|
123
|
+
</li>
|
124
|
+
<li>
|
125
|
+
<pre><%= ERB::Util.h %q|-culling_limit <Integer, >=0>
|
126
|
+
If the query range of a hit is enveloped by that of at least this
|
127
|
+
many higher-scoring hits, delete the hit
|
128
|
+
* Incompatible with: best_hit_overhang, best_hit_score_edge| %></pre>
|
129
|
+
</li>
|
130
|
+
<li>
|
131
|
+
<pre><%= ERB::Util.h %q|-best_hit_overhang <Real, (>0 and <0.5)>
|
132
|
+
Best Hit algorithm overhang value (recommended value: 0.1)
|
133
|
+
* Incompatible with: culling_limit| %></pre>
|
134
|
+
</li>
|
135
|
+
<li>
|
136
|
+
<pre><%= ERB::Util.h %q|-best_hit_score_edge <Real, (>0 and <0.5)>
|
137
|
+
Best Hit algorithm score edge value (recommended value: 0.1)
|
138
|
+
* Incompatible with: culling_limit| %></pre>
|
139
|
+
</li>
|
140
|
+
<li>
|
141
|
+
<pre><%= ERB::Util.h %q|-max_target_seqs <Integer, >=1>
|
142
|
+
Maximum number of aligned sequences to keep| %></pre>
|
143
|
+
</li>
|
144
|
+
</ul>
|
data/views/search.erb
CHANGED
@@ -8,93 +8,83 @@
|
|
8
8
|
<meta name="author" content="Cedric Wurm" />
|
9
9
|
<meta name="description" content="Custom BLAST server provided by SequenceServer (http://www.sequenceserver.com)"/>
|
10
10
|
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
|
11
|
+
<script type="text/javascript" src="<%= uri('/js/store.min.js') %>"></script>
|
11
12
|
<script type="text/javascript" src="<%= uri('/js/jquery.js') %>"></script>
|
13
|
+
<script type="text/javascript" src="<%= uri('/js/jquery.ui.js') %>"></script>
|
12
14
|
<script type="text/javascript" src="<%= uri('/js/jquery.enablePlaceholder.min.js') %>"></script>
|
13
15
|
<script type="text/javascript" src="<%= uri('/js/jquery.activity.js') %>"></script>
|
16
|
+
<script type="text/javascript" src="<%= uri('/js/jquery.scrollspy.js') %>"></script>
|
17
|
+
<script type="text/javascript" src="<%= uri('/js/jquery.index.js') %>"></script>
|
18
|
+
<script type="text/javascript" src="<%= uri('/js/bootstrap.transition.js') %>"></script>
|
19
|
+
<script type="text/javascript" src="<%= uri('/js/bootstrap.dropdown.js') %>"></script>
|
20
|
+
<script type="text/javascript" src="<%= uri('/js/bootstrap.modal.js') %>"></script>
|
14
21
|
<script type="text/javascript" src="<%= uri('/js/sequenceserver.js') %>"></script>
|
15
22
|
<script type="text/javascript" src="<%= uri('/js/sequenceserver.blast.js') %>"></script>
|
16
23
|
|
17
24
|
<%# without a space after erb's closing tag, a / gets appended to css' path %>
|
18
25
|
<link rel="stylesheet" media="screen" type="text/css" href="<%= uri('/css/bootstrap.min.css') %>" />
|
26
|
+
<link rel="stylesheet" media="screen" type="text/css" href="<%= uri('/css/bootstrap.dropdown.css') %>" />
|
27
|
+
<link rel="stylesheet" media="screen" type="text/css" href="<%= uri('/css/bootstrap.modal.css') %>" />
|
28
|
+
<link rel="stylesheet" media="screen" type="text/css" href="<%= uri('/css/bootstrap.icons.css') %>" />
|
19
29
|
<link rel="stylesheet" media="screen" type="text/css" href="<%= uri('/css/custom.css') %>" />
|
20
30
|
</head>
|
21
31
|
|
22
32
|
<body>
|
23
33
|
<div class="container">
|
34
|
+
<noscript>
|
35
|
+
<div class="nojs-error">
|
36
|
+
<h3>SequenceServer can't work without JavaScript.</h3>
|
37
|
+
<ul>
|
38
|
+
<li>Please see if you can enable JavaScript in your browser's preferences.</li>
|
39
|
+
<li>If your browser doesn't support JavaScript, please consider upgrading to the latest version or using Firefox or Chrome.</li>
|
40
|
+
</ul>
|
41
|
+
</div>
|
42
|
+
</noscript>
|
43
|
+
|
24
44
|
<div class="page">
|
25
|
-
<div
|
45
|
+
<div id="banner">
|
26
46
|
<h1>BLAST Sequence(s)</h1>
|
27
47
|
</div>
|
28
48
|
|
29
49
|
<form method="post" id="blast" action="<%= uri('/#result') %>">
|
30
50
|
<div class="row">
|
31
|
-
<div class="
|
32
|
-
<div class="
|
33
|
-
<
|
34
|
-
<textarea name="sequence" id="sequence" rows="11" spellcheck="false" <%= 'autofocus="true"' unless @blast %> placeholder="Paste your sequence(s) here..." ></textarea>
|
35
|
-
</div>
|
51
|
+
<div class="span16">
|
52
|
+
<div class="control-group">
|
53
|
+
<textarea name="sequence" id="sequence" spellcheck="false" autofocus="true" placeholder="Paste your sequence(s) here..." ></textarea>
|
36
54
|
</div>
|
37
55
|
</div>
|
56
|
+
</div>
|
38
57
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
</li>
|
51
|
-
<li>
|
52
|
-
<label title="Protein query; six frame translated nucleotide database.">
|
53
|
-
<input type="radio" name="method" value="tblastn" id="tblastn"/>
|
54
|
-
<span>tblastn</span>
|
55
|
-
</label>
|
56
|
-
</li>
|
57
|
-
<li>
|
58
|
-
<label title="Nucleotide query; nucleotide database.">
|
59
|
-
<input type="radio" name="method" value="blastn" id="blastn"/>
|
60
|
-
<span>blastn</span>
|
61
|
-
</label>
|
62
|
-
</li>
|
63
|
-
<li>
|
64
|
-
<label title="Translated nucleotide query; protein database">
|
65
|
-
<input type="radio" name="method" value="blastx" id="blastx"/>
|
66
|
-
<span>blastx</span>
|
67
|
-
</label>
|
68
|
-
</li>
|
69
|
-
<li>
|
70
|
-
<label title="Six-frame translated nucleotide query; six-frame translated nucleotide database">
|
71
|
-
<input type="radio" name="method" value="tblastx" id="tblastx"/>
|
72
|
-
<span>tblastx</span>
|
73
|
-
</label>
|
74
|
-
</li>
|
75
|
-
</ul>
|
76
|
-
</fieldset>
|
77
|
-
</div>
|
78
|
-
</div>
|
58
|
+
<div class="notifications">
|
59
|
+
<div class="notification alert-info hide" id="nucleotide-sequence-notification">
|
60
|
+
Detected: nucleotide sequence(s).
|
61
|
+
</div>
|
62
|
+
|
63
|
+
<div class="notification alert-info hide" id="protein-sequence-notification">
|
64
|
+
Detected: protein sequence(s).
|
65
|
+
</div>
|
66
|
+
|
67
|
+
<div class="notification alert-error hide" id="mixed-sequence-notification">
|
68
|
+
Detected: mixed nucleotide and protein sequences. We can't handle that. Please try one sequence at a time.
|
79
69
|
</div>
|
80
70
|
</div>
|
81
71
|
|
72
|
+
<br class="large"/>
|
73
|
+
|
82
74
|
<div class="row">
|
83
75
|
<div class="span8">
|
84
76
|
<div class="offset-left box databases nucleotide">
|
85
77
|
<div class="clearfix">
|
86
78
|
<fieldset>
|
87
|
-
<legend
|
88
|
-
<
|
89
|
-
<% settings.databases
|
90
|
-
<
|
91
|
-
<
|
92
|
-
|
93
|
-
|
94
|
-
</label>
|
95
|
-
</li>
|
79
|
+
<legend>Nucleotide databases</legend>
|
80
|
+
<div class="controls offset-left">
|
81
|
+
<% settings.databases.values.select{|database| database.type == :nucleotide}.sort.each do |database| %>
|
82
|
+
<label class="checkbox">
|
83
|
+
<input type="checkbox" name="databases[]" value="<%=database.hash%>" data-type="<%=database.type%>" />
|
84
|
+
<span> <%= database.title or database.name %></span>
|
85
|
+
</label>
|
96
86
|
<% end %>
|
97
|
-
</
|
87
|
+
</div>
|
98
88
|
</fieldset>
|
99
89
|
</div>
|
100
90
|
</div>
|
@@ -104,115 +94,80 @@
|
|
104
94
|
<div class="offset-right box databases protein">
|
105
95
|
<div class="clearfix">
|
106
96
|
<fieldset>
|
107
|
-
<legend
|
108
|
-
<
|
109
|
-
<% settings.databases
|
110
|
-
<
|
111
|
-
<
|
112
|
-
|
113
|
-
|
114
|
-
</label>
|
115
|
-
</li>
|
97
|
+
<legend>Protein databases</legend>
|
98
|
+
<div class="controls offset-left">
|
99
|
+
<% settings.databases.values.select{|database| database.type == :protein}.sort.each do |database| %>
|
100
|
+
<label class="checkbox">
|
101
|
+
<input type="checkbox" name="databases[]" value="<%=database.hash%>" data-type="<%=database.type%>" />
|
102
|
+
<span> <%= database.title or database.name %></span>
|
103
|
+
</label>
|
116
104
|
<% end %>
|
117
|
-
</
|
105
|
+
</div>
|
118
106
|
</fieldset>
|
119
107
|
</div>
|
120
108
|
</div>
|
121
109
|
</div>
|
122
110
|
</div>
|
123
111
|
|
112
|
+
<br class="large"/>
|
113
|
+
|
124
114
|
<div class="row">
|
125
115
|
<div class="span12">
|
126
116
|
<div class="offset-left box advanced">
|
127
117
|
<div class="clearfix">
|
128
|
-
<label
|
118
|
+
<label for="advanced">Advanced Parameters:</label>
|
129
119
|
<input class="span8" type="text" name="advanced" id="advanced" title="View, and enter advanced parameters." placeholder="eg: -evalue 1.0e-5 -num_alignments 100"/>
|
120
|
+
<span class="icon-question-sign" data-toggle="modal" href="#help"></span>
|
121
|
+
</div>
|
122
|
+
|
123
|
+
<div class="modal hide fade" id="help">
|
124
|
+
<div class="modal-header">
|
125
|
+
<h3>Advanced Options</h3>
|
126
|
+
</div>
|
127
|
+
<div class="modal-body">
|
128
|
+
<%= erb :_options %>
|
129
|
+
</div>
|
130
|
+
<div class="modal-footer">
|
131
|
+
<button class="btn btn-primary" data-dismiss="modal">Got it!</button>
|
132
|
+
</div>
|
130
133
|
</div>
|
131
|
-
|
132
|
-
<%= ERB::Util.h %q|
|
133
|
-
-evalue <Real>
|
134
|
-
Expectation value (E) threshold for saving hits
|
135
|
-
Default = `10'
|
136
|
-
-word_size <Integer, >=2>
|
137
|
-
Word size for wordfinder algorithm
|
138
|
-
-gapopen <Integer>
|
139
|
-
Cost to open a gap
|
140
|
-
-gapextend <Integer>
|
141
|
-
Cost to extend a gap
|
142
|
-
-matrix <String>
|
143
|
-
Scoring matrix name (normally BLOSUM62)
|
144
|
-
-threshold <Real, >=0>
|
145
|
-
Minimum word score such that the word is added to the BLAST lookup table
|
146
|
-
-comp_based_stats <String>
|
147
|
-
Use composition-based statistics for blastp / tblastn:
|
148
|
-
D or d: default (equivalent to 2)
|
149
|
-
0 or F or f: no composition-based statistics
|
150
|
-
1: Composition-based statistics as in NAR 29:2994-3005, 2001
|
151
|
-
2 or T or t : Composition-based score adjustment as in Bioinformatics
|
152
|
-
21:902-911,
|
153
|
-
2005, conditioned on sequence properties
|
154
|
-
3: Composition-based score adjustment as in Bioinformatics 21:902-911,
|
155
|
-
2005, unconditionally
|
156
|
-
For programs other than tblastn, must either be absent or be D, F or 0
|
157
|
-
Default = `2'
|
158
|
-
-num_descriptions <Integer, >=0>
|
159
|
-
Number of database sequences to show one-line descriptions for
|
160
|
-
Default = `500'
|
161
|
-
-num_alignments <Integer, >=0>
|
162
|
-
Number of database sequences to show alignments for
|
163
|
-
Default = `250'
|
164
|
-
*** Query filtering options
|
165
|
-
-seg <String>
|
166
|
-
Filter query sequence with SEG (Format: 'yes', 'window locut hicut', or
|
167
|
-
'no' to disable)
|
168
|
-
Default = `no'
|
169
|
-
-soft_masking <Boolean>
|
170
|
-
Apply filtering locations as soft masks
|
171
|
-
Default = `false'
|
172
|
-
-lcase_masking
|
173
|
-
Use lower case filtering in query and subject sequence(s)?
|
174
|
-
*** Restrict search or results
|
175
|
-
-gilist <String>
|
176
|
-
Restrict search of database to list of GI's
|
177
|
-
* Incompatible with: negative_gilist, seqidlist, remote, subject,
|
178
|
-
subject_loc
|
179
|
-
-seqidlist <String>
|
180
|
-
Restrict search of database to list of SeqId's
|
181
|
-
* Incompatible with: gilist, negative_gilist, remote, subject,
|
182
|
-
subject_loc
|
183
|
-
-negative_gilist <String>
|
184
|
-
Restrict search of database to everything except the listed GIs
|
185
|
-
* Incompatible with: gilist, seqidlist, remote, subject, subject_loc
|
186
|
-
-entrez_query <String>
|
187
|
-
Restrict search with the given Entrez query
|
188
|
-
* Requires: remote
|
189
|
-
-db_soft_mask <String>
|
190
|
-
Filtering algorithm ID to apply to the BLAST database as soft masking
|
191
|
-
* Incompatible with: subject, subject_loc
|
192
|
-
-culling_limit <Integer, >=0>
|
193
|
-
If the query range of a hit is enveloped by that of at least this many
|
194
|
-
higher-scoring hits, delete the hit
|
195
|
-
* Incompatible with: best_hit_overhang, best_hit_score_edge
|
196
|
-
-best_hit_overhang <Real, (>0 and <0.5)>
|
197
|
-
Best Hit algorithm overhang value (recommended value: 0.1)
|
198
|
-
* Incompatible with: culling_limit
|
199
|
-
-best_hit_score_edge <Real, (>0 and <0.5)>
|
200
|
-
Best Hit algorithm score edge value (recommended value: 0.1)
|
201
|
-
* Incompatible with: culling_limit
|
202
|
-
-max_target_seqs <Integer, >=1>
|
203
|
-
Maximum number of aligned sequences to keep | %>
|
204
|
-
</pre>
|
134
|
+
</div>
|
205
135
|
</div>
|
206
|
-
</div>
|
207
136
|
|
208
137
|
<div class="span4">
|
209
|
-
<
|
138
|
+
<div id="methods">
|
139
|
+
<button type="submit" class="span3 btn btn-large btn-primary" id="method" disabled="disabled">blast</button>
|
140
|
+
<button class="btn btn-primary btn-large dropdown-toggle hide" data-toggle="dropdown">
|
141
|
+
<span class="caret"></span>
|
142
|
+
</button>
|
143
|
+
<ul class="dropdown-menu"></ul>
|
144
|
+
</div>
|
210
145
|
</div>
|
211
146
|
</div>
|
212
147
|
</form>
|
213
148
|
|
214
|
-
<div id="
|
215
|
-
|
149
|
+
<div class="modal hide" id="spinner" data-keyboard="false" data-backdrop="static">
|
150
|
+
<div class="modal-body">
|
151
|
+
</div>
|
152
|
+
</div>
|
153
|
+
|
154
|
+
<div class="results hide">
|
155
|
+
<div id="result">
|
156
|
+
</div>
|
157
|
+
</div>
|
158
|
+
|
159
|
+
<div class="modal hide fade" id="error">
|
160
|
+
<div class="modal-header">
|
161
|
+
<h3 id="error-short">Oops! BLAST Failed</h3>
|
162
|
+
</div>
|
163
|
+
<div class="modal-body">
|
164
|
+
<h4 id="error-type"></h4>
|
165
|
+
<br/>
|
166
|
+
<p id="error-message"></p>
|
167
|
+
</div>
|
168
|
+
<div class="modal-footer">
|
169
|
+
<button class="btn btn-danger" data-dismiss="modal">Close</button>
|
170
|
+
</div>
|
216
171
|
</div>
|
217
172
|
|
218
173
|
<div id="underbar">
|
@@ -229,5 +184,38 @@
|
|
229
184
|
</div>
|
230
185
|
</div> <!-- /page -->
|
231
186
|
</div> <!-- /container -->
|
187
|
+
|
188
|
+
<div id="social" class="modal hide fade">
|
189
|
+
<div class="modal-header">
|
190
|
+
<h3 id="error-short">Looks like you are fond of SequenceServer :).</h3>
|
191
|
+
</div>
|
192
|
+
<div class="modal-body">
|
193
|
+
<p>Please consider giving us a plus-one and/or tweeting about us. Thanks!</p>
|
194
|
+
<br/>
|
195
|
+
<div class="buttons">
|
196
|
+
<div class="button-container well">
|
197
|
+
<div class="g-plusone" data-annotation="none" data-href="http://www.sequenceserver.com"></div>
|
198
|
+
</div>
|
199
|
+
<div class="button-container well">
|
200
|
+
<a href="https://twitter.com/share" class="twitter-share-button" data-url="http://www.sequenceserver.com" data-text="SequenceServer: BLAST search made easy." data-via="yeban" data-size="large" data-count="none" data-hashtags="bioinformatics">Tweet</a>
|
201
|
+
</div>
|
202
|
+
</div>
|
203
|
+
</div>
|
204
|
+
<div class="modal-footer">
|
205
|
+
<button class="btn btn-primary" data-dismiss="modal">Done</button>
|
206
|
+
</div>
|
207
|
+
</div> <!-- /social -->
|
208
|
+
|
209
|
+
<!-- google plus -->
|
210
|
+
<script type="text/javascript">
|
211
|
+
(function() {
|
212
|
+
var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
|
213
|
+
po.src = 'https://apis.google.com/js/plusone.js';
|
214
|
+
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
|
215
|
+
})();
|
216
|
+
</script>
|
217
|
+
|
218
|
+
<!-- twitter -->
|
219
|
+
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
|
232
220
|
</body>
|
233
221
|
</html>
|