genevalidator 1.6.12 → 2.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +30 -1
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +13 -12
  5. data/Gemfile +4 -1
  6. data/Gemfile.lock +135 -0
  7. data/README.md +104 -122
  8. data/Rakefile +377 -5
  9. data/aux/gv_results.slim +155 -0
  10. data/aux/html_files/css/gv.compiled.min.css +8 -0
  11. data/aux/{files → html_files}/css/src/bootstrap.min.css +0 -0
  12. data/aux/{files → html_files}/css/src/font-awesome.min.css +0 -0
  13. data/aux/{files → html_files}/css/src/style.css +0 -0
  14. data/aux/{files → html_files}/fonts/FontAwesome.otf +0 -0
  15. data/aux/{files → html_files}/fonts/fontawesome-webfont.eot +0 -0
  16. data/aux/{files → html_files}/fonts/fontawesome-webfont.svg +0 -0
  17. data/aux/{files → html_files}/fonts/fontawesome-webfont.ttf +0 -0
  18. data/aux/{files → html_files}/fonts/fontawesome-webfont.woff +0 -0
  19. data/aux/{files → html_files}/img/gene.png +0 -0
  20. data/aux/html_files/js/gv.compiled.min.js +1 -0
  21. data/aux/{files → html_files}/js/src/bootstrap.min.js +0 -0
  22. data/aux/{files → html_files}/js/src/d3.v3.min.js +0 -0
  23. data/aux/{files → html_files}/js/src/jquery-2.1.1.min.js +0 -0
  24. data/aux/{files → html_files}/js/src/jquery.tablesorter.min.js +0 -0
  25. data/aux/{files → html_files}/js/src/plots.js +1 -1
  26. data/aux/{files → html_files}/js/src/script.js +0 -0
  27. data/aux/{files → html_files}/json/.gitkeep +0 -0
  28. data/bin/genevalidator +393 -56
  29. data/exemplar_data/README.md +60 -0
  30. data/{data/mrna_data.fasta → exemplar_data/mrna_data.fa} +1 -1
  31. data/{data/protein_data.fasta → exemplar_data/protein_data.fa} +0 -0
  32. data/genevalidator.gemspec +35 -20
  33. data/install.sh +92 -0
  34. data/lib/genevalidator.rb +171 -56
  35. data/lib/genevalidator/arg_validation.rb +26 -55
  36. data/lib/genevalidator/blast.rb +44 -99
  37. data/lib/genevalidator/clusterization.rb +18 -22
  38. data/lib/genevalidator/exceptions.rb +17 -17
  39. data/lib/genevalidator/ext/array.rb +21 -4
  40. data/lib/genevalidator/get_raw_sequences.rb +32 -31
  41. data/lib/genevalidator/hsp.rb +31 -2
  42. data/lib/genevalidator/json_to_gv_results.rb +38 -122
  43. data/lib/genevalidator/output.rb +158 -172
  44. data/lib/genevalidator/output_files.rb +134 -0
  45. data/lib/genevalidator/pool.rb +2 -5
  46. data/lib/genevalidator/query.rb +1 -1
  47. data/lib/genevalidator/tabular_parser.rb +8 -29
  48. data/lib/genevalidator/validation.rb +48 -90
  49. data/lib/genevalidator/validation_alignment.rb +64 -75
  50. data/lib/genevalidator/validation_blast_reading_frame.rb +13 -9
  51. data/lib/genevalidator/validation_duplication.rb +85 -84
  52. data/lib/genevalidator/validation_gene_merge.rb +46 -35
  53. data/lib/genevalidator/validation_length_cluster.rb +18 -15
  54. data/lib/genevalidator/validation_length_rank.rb +19 -15
  55. data/lib/genevalidator/validation_maker_qi.rb +13 -12
  56. data/lib/genevalidator/validation_open_reading_frame.rb +16 -13
  57. data/lib/genevalidator/validation_report.rb +1 -1
  58. data/lib/genevalidator/validation_test.rb +1 -1
  59. data/lib/genevalidator/version.rb +1 -1
  60. data/test/overall.rb +1 -1
  61. data/test/test_all_validations.rb +36 -24
  62. data/test/test_blast.rb +39 -24
  63. data/test/test_clusterization_2d.rb +4 -4
  64. data/test/test_helper.rb +2 -2
  65. data/test/test_query.rb +16 -20
  66. data/test/test_validation_open_reading_frame.rb +122 -122
  67. data/test/test_validations.rb +12 -10
  68. metadata +94 -79
  69. data/aux/files/css/genevalidator.compiled.min.css +0 -16
  70. data/aux/files/js/genevalidator.compiled.min.js +0 -28
  71. data/aux/json_footer.erb +0 -8
  72. data/aux/json_header.erb +0 -19
  73. data/aux/json_query.erb +0 -15
  74. data/aux/template_footer.erb +0 -8
  75. data/aux/template_header.erb +0 -19
  76. data/aux/template_query.erb +0 -14
  77. data/data/README.md +0 -57
  78. data/data/mrna_data.fasta.blast_tabular +0 -3567
  79. data/data/mrna_data.fasta.blast_tabular.raw_seq +0 -53998
  80. data/data/mrna_data.fasta.blast_tabular.raw_seq.idx +0 -5440
  81. data/data/mrna_data.fasta.blast_xml +0 -39800
  82. data/data/mrna_data.fasta.blast_xml.raw_seq +0 -2554
  83. data/data/mrna_data.fasta.blast_xml.raw_seq.idx +0 -3127
  84. data/data/mrna_data.fasta.json +0 -1
  85. data/data/protein_data.fasta.blast_tabular +0 -3278
  86. data/data/protein_data.fasta.blast_tabular.raw_seq +0 -61295
  87. data/data/protein_data.fasta.blast_tabular.raw_seq.idx +0 -4438
  88. data/data/protein_data.fasta.blast_xml +0 -26228
  89. data/data/protein_data.fasta.blast_xml.raw_seq +0 -9803
  90. data/data/protein_data.fasta.blast_xml.raw_seq.idx +0 -1777
  91. data/data/protein_data.fasta.json +0 -1
data/Rakefile CHANGED
@@ -1,16 +1,16 @@
1
1
  require 'rake/testtask'
2
+ GEMSPEC = Gem::Specification.load('genevalidator.gemspec')
2
3
 
3
4
  task default: [:build]
4
5
 
5
6
  desc 'Builds and installs'
6
7
  task install: [:build] do
7
- require_relative 'lib/genevalidator/version'
8
- sh "gem install ./genevalidator-#{GeneValidator::VERSION}.gem"
8
+ sh "gem install #{Rake.original_dir}/genevalidator-#{GEMSPEC.version}.gem"
9
9
  end
10
10
 
11
11
  desc 'Runs tests, generates documentation, builds gem (default)'
12
- task build: [:test, :doc] do
13
- sh 'gem build genevalidator.gemspec'
12
+ task build: %i[test doc] do
13
+ sh "gem build #{Rake.original_dir}/genevalidator.gemspec"
14
14
  end
15
15
 
16
16
  desc 'Runs tests'
@@ -18,11 +18,383 @@ task :test do
18
18
  Rake::TestTask.new do |t|
19
19
  t.libs.push 'lib'
20
20
  t.test_files = FileList['test/test_*.rb']
21
- t.verbose = true
21
+ t.verbose = false
22
+ t.warning = false
22
23
  end
23
24
  end
24
25
 
26
+ desc 'Build Assets'
27
+ task :assets do
28
+ # Requires uglifycss and uglifyjs
29
+ # npm install uglifycss -g
30
+ # npm install uglify-js -g
31
+ assets_dir = File.expand_path('aux/html_files', __dir__)
32
+ `rm #{assets_dir}/css/gv.compiled.min.css`
33
+ `rm #{assets_dir}/js/gv.compiled.min.js`
34
+ sh "uglifycss --output '#{assets_dir}/css/gv.compiled.min.css'" \
35
+ " '#{assets_dir}/css/src/font-awesome.min.css'" \
36
+ " '#{assets_dir}/css/src/bootstrap.min.css'" \
37
+ " '#{assets_dir}/css/src/style.css'"
38
+
39
+ sh "uglifyjs '#{assets_dir}/js/src/jquery-2.1.1.min.js'" \
40
+ " '#{assets_dir}/js/src/bootstrap.min.js'" \
41
+ " '#{assets_dir}/js/src/jquery.tablesorter.min.js'" \
42
+ " '#{assets_dir}/js/src/d3.v3.min.js'" \
43
+ " '#{assets_dir}/js/src/plots.js' '#{assets_dir}/js/src/script.js'" \
44
+ " -m -c -o '#{assets_dir}/js/gv.compiled.min.js'"
45
+ end
46
+
25
47
  desc 'Generates documentation'
26
48
  task :doc do
27
49
  sh "yardoc 'lib/**/*.rb'"
28
50
  end
51
+
52
+ ##
53
+ #### TRAVELLING RUBY
54
+ ##
55
+
56
+ # For Bundler.with_clean_env
57
+ require 'bundler/setup'
58
+
59
+ TMP_DIR = "#{Rake.original_dir}/tmp".freeze
60
+ APP_NAME = "#{GEMSPEC.name}-#{GEMSPEC.version}".freeze
61
+ PLATFORMS = %w[linux-x86 linux-x86_64 osx].freeze
62
+ TRAVELING_RUBY_VERSION = 'traveling-ruby-20150715-2.2.2'.freeze
63
+ TRAVELING_RUBYGEMS_VERSION = 'traveling-ruby-gems-20150715-2.2.2'.freeze
64
+ NOKOGIRI_VERSION = 'nokogiri-1.6.6.2'.freeze
65
+ MAFFT = {
66
+ version: '7.397',
67
+ 'linux-x86': 'https://mafft.cbrc.jp/alignment/software/mafft-7.397-linux.tgz',
68
+ 'linux-x86_64': 'https://mafft.cbrc.jp/alignment/software/mafft-7.397-linux.tgz',
69
+ osx: 'https://mafft.cbrc.jp/alignment/software/mafft-7.397-mac.zip'
70
+ }.freeze
71
+ BLAST = {
72
+ version: '2.7.1+',
73
+ 'linux-x86': 'https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/2.7.1/ncbi-blast-2.7.1+-x64-linux.tar.gz',
74
+ 'linux-x86_64': 'https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/2.7.1/ncbi-blast-2.7.1+-x64-linux.tar.gz',
75
+ osx: 'https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/2.7.1/ncbi-blast-2.7.1+-x64-macosx.tar.gz'
76
+ }.freeze
77
+ JQ = {
78
+ version: '1.5',
79
+ 'linux-x86': 'https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux32',
80
+ 'linux-x86_64': 'https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64',
81
+ osx: 'https://github.com/stedolan/jq/releases/download/jq-1.5/jq-osx-amd64'
82
+ }.freeze
83
+ CSVTK = {
84
+ version: '0.14.0',
85
+ 'linux-x86': 'https://github.com/shenwei356/csvtk/releases/download/v0.14.0/csvtk_linux_386.tar.gz',
86
+ 'linux-x86_64': 'https://github.com/shenwei356/csvtk/releases/download/v0.14.0/csvtk_linux_amd64.tar.gz',
87
+ osx: 'https://github.com/shenwei356/csvtk/releases/download/v0.14.0/csvtk_darwin_amd64.tar.gz'
88
+ }.freeze
89
+
90
+ desc 'Create standalone GeneValidator packages'
91
+ task :package do
92
+ rm_rf TMP_DIR
93
+ mkdir TMP_DIR
94
+ task('package:build' => ['package:linux-x86', 'package:linux-x86_64', 'package:osx']).invoke
95
+ rm_rf TMP_DIR
96
+ end
97
+
98
+ # Usage:
99
+ # - Complete run
100
+ # rake package
101
+ # - Just create directories and don't compress
102
+ # rake package DIR_ONLY=1
103
+ namespace :package do
104
+ PLATFORMS.each do |platform|
105
+ task platform => [
106
+ :bundle_install, :reduce_bundle_size,
107
+ "#{TMP_DIR}/#{TRAVELING_RUBY_VERSION}-#{platform}.tar.gz",
108
+ "#{TMP_DIR}/#{TRAVELING_RUBY_VERSION}-#{platform}-#{NOKOGIRI_VERSION}.tar.gz"
109
+ ] do
110
+ package_dir = "#{Rake.original_dir}/#{APP_NAME}-#{platform}"
111
+ lib_dir = "#{package_dir}/lib/"
112
+ bin_dir = "#{package_dir}/bin/"
113
+ exemplar_dir = "#{package_dir}/exemplar_data/"
114
+ blast_db_dir = "#{package_dir}/blast_db"
115
+ app_dir = "#{lib_dir}/app/"
116
+ vendor_dir = "#{lib_dir}/vendor/"
117
+ ruby_dir = "#{lib_dir}/ruby/"
118
+ pack_dir = "#{lib_dir}/packages/"
119
+ nokogiri_path = "#{TMP_DIR}/#{TRAVELING_RUBY_VERSION}-#{platform}-" \
120
+ "#{NOKOGIRI_VERSION}.tar.gz"
121
+ ruby_path = "#{TMP_DIR}/#{TRAVELING_RUBY_VERSION}-#{platform}.tar.gz"
122
+
123
+ # set up dir structure
124
+ rm_rf package_dir
125
+ mkdir_p app_dir
126
+ mkdir bin_dir
127
+ mkdir exemplar_dir
128
+ mkdir vendor_dir
129
+ mkdir ruby_dir
130
+ mkdir pack_dir
131
+
132
+ cp_r "#{Rake.original_dir}/bin", app_dir
133
+ cp_r "#{TMP_DIR}/vendor", lib_dir
134
+
135
+ cp "#{Rake.original_dir}/exemplar_data/mrna_data.fa", exemplar_dir
136
+ cp "#{Rake.original_dir}/exemplar_data/protein_data.fa", exemplar_dir
137
+
138
+ cd vendor_dir do
139
+ File.write('Gemfile', GEMFILE_CONTENTS)
140
+ mkdir '.bundle'
141
+ File.write('.bundle/config', BUNDLER_CONFIG)
142
+
143
+ sh "tar -xzf #{nokogiri_path} -C ruby"
144
+ end
145
+
146
+ cd lib_dir do
147
+ sh "tar -xzf #{ruby_path} -C ruby"
148
+ end
149
+
150
+ cd pack_dir do
151
+ process_package(MAFFT[platform.to_sym], 'mafft')
152
+ process_package(BLAST[platform.to_sym], 'blast')
153
+ end
154
+
155
+ cd package_dir do
156
+ File.write(GEMSPEC.name, SCRIPT_CONTENTS)
157
+ sh "chmod +x #{GEMSPEC.name}"
158
+ File.write('Readme.txt', readme_contents(platform))
159
+ end
160
+
161
+ cd bin_dir do
162
+ Dir['../lib/packages/blast/bin/*'].each do |bin|
163
+ ln_s bin, File.basename(bin)
164
+ end
165
+
166
+ # Copy a version of GV script into the bin directory
167
+ sh "sed 's|SELFDIR}/|SELFDIR}/../|g' #{package_dir}/#{GEMSPEC.name} > #{GEMSPEC.name}"
168
+ sh "chmod +x #{GEMSPEC.name}"
169
+
170
+ # Install JQ
171
+ sh "curl -L #{JQ[platform.to_sym]} -o jq"
172
+ sh 'chmod +x jq'
173
+
174
+ # Install CSVTK
175
+ sh "curl -L #{CSVTK[platform.to_sym]} | tar zxf -"
176
+ end
177
+
178
+ cp_r "#{TMP_DIR}/blast_db", blast_db_dir
179
+
180
+ unless ENV['DIR_ONLY']
181
+ cd Rake.original_dir do
182
+ sh "tar -czf #{APP_NAME}-#{platform}.tar.gz #{APP_NAME}-#{platform}"
183
+ rm_rf package_dir
184
+ end
185
+ end
186
+ end
187
+ end
188
+
189
+ desc 'Install gems to local directory'
190
+ task :bundle_install do
191
+ if RUBY_VERSION !~ /^2\.2\./
192
+ abort "You can only 'bundle install' using Ruby 2.2, because that's " \
193
+ 'what Traveling Ruby uses.'
194
+ end
195
+
196
+ cd Rake.original_dir do
197
+ cp 'Gemfile', TMP_DIR
198
+ File.write("#{TMP_DIR}/#{GEMSPEC.name}.gemspec", edited_gemspec_content)
199
+ end
200
+
201
+ cd TMP_DIR do
202
+ Bundler.with_clean_env do
203
+ sh 'env BUNDLE_IGNORE_CONFIG=1 bundle install --path vendor ' \
204
+ '--without development test'
205
+ end
206
+
207
+ cd 'vendor/ruby/2.2.0' do
208
+ cd 'gems' do
209
+ mkdir APP_NAME
210
+ %w[aux lib].each { |d| cp_r "#{Rake.original_dir}/#{d}", APP_NAME }
211
+ end
212
+
213
+ cd 'specifications' do
214
+ cp "#{TMP_DIR}/#{GEMSPEC.name}.gemspec", "#{APP_NAME}.gemspec"
215
+ end
216
+ end
217
+
218
+ mkdir 'blast_db'
219
+ cd 'blast_db' do
220
+ sh 'update_blastdb.pl --decompress swissprot' do |_, e|
221
+ abort 'update_blastdb.pl failed to run.' if e.exitstatus == 2
222
+ # This script returns 0 on successful operations that result in no
223
+ # downloads, 1 on successful operations that downloaded files,
224
+ # and 2 on errors.
225
+ end
226
+ end
227
+ end
228
+ end
229
+
230
+ desc 'Reduce Vendor size'
231
+ task :reduce_bundle_size do
232
+ cd "#{TMP_DIR}/vendor" do
233
+ sh 'rm -f */*/cache/*'
234
+ sh 'rm -rf ruby/*/extensions'
235
+ sh "find ruby/2.2.0/gems -name '*.so' | xargs rm -f"
236
+ sh "find ruby/2.2.0/gems -name '*.bundle' | xargs rm -f"
237
+ sh "find ruby/2.2.0/gems -name '*.o' | xargs rm -f"
238
+
239
+ # Remove tests
240
+ %w[test tests spec features benchmark].each do |dir|
241
+ sh "rm -rf ruby/*/gems/*/#{dir}"
242
+ end
243
+
244
+ # Remove documentation
245
+ %w[README* CHANGE* Change* COPYING* LICENSE* MIT-LICENSE* TODO *.txt *.md *.rdoc].each do |file|
246
+ sh "rm -f ruby/*/gems/*/#{file}"
247
+ end
248
+ %w[doc docs example examples sample doc-api].each do |dir|
249
+ sh "rm -rf ruby/*/gems/*/#{dir}"
250
+ end
251
+ sh "find ruby -name '*.md' | xargs rm -f"
252
+
253
+ # Remove misc unnecessary files
254
+ sh 'rm -rf ruby/*/gems/*/.gitignore'
255
+ sh 'rm -rf ruby/*/gems/*/.travis.yml'
256
+
257
+ # Remove leftover native extension sources and compilation objects
258
+ sh 'rm -f ruby/*/gems/*/ext/Makefile'
259
+ sh 'rm -f ruby/*/gems/*/ext/*/Makefile'
260
+ sh 'rm -f ruby/*/gems/*/ext/*/tmp'
261
+ sh "find ruby -name '*.c' | xargs rm -f"
262
+ sh "find ruby -name '*.cpp' | xargs rm -f"
263
+ sh "find ruby -name '*.h' | xargs rm -f"
264
+ sh "find ruby -name '*.rl' | xargs rm -f"
265
+ sh "find ruby -name 'extconf.rb' | xargs rm -f"
266
+ sh "find ruby/2.2.0/gems -name '*.o' | xargs rm -f"
267
+ sh "find ruby/2.2.0/gems -name '*.so' | xargs rm -f"
268
+ sh "find ruby/2.2.0/gems -name '*.bundle' | xargs rm -f"
269
+
270
+ # Remove Java files. They're only used for JRuby support
271
+ sh "find ruby -name '*.java' | xargs rm -f"
272
+ sh "find ruby -name '*.class' | xargs rm -f"
273
+ end
274
+ end
275
+ end
276
+
277
+ PLATFORMS.each do |platform|
278
+ file "#{TMP_DIR}/#{TRAVELING_RUBY_VERSION}-#{platform}.tar.gz" do
279
+ download_runtime(platform)
280
+ end
281
+ file "#{TMP_DIR}/#{TRAVELING_RUBY_VERSION}-#{platform}-#{NOKOGIRI_VERSION}.tar.gz" do
282
+ download_native_extension(platform, NOKOGIRI_VERSION)
283
+ end
284
+ end
285
+
286
+ def download_runtime(platform)
287
+ sh "curl -L --fail -o #{TMP_DIR}/#{TRAVELING_RUBY_VERSION}-#{platform}.tar.gz " \
288
+ "https://d6r77u77i8pq3.cloudfront.net/releases/#{TRAVELING_RUBY_VERSION}-#{platform}.tar.gz"
289
+ end
290
+
291
+ def download_native_extension(platform, gem_name_and_version)
292
+ sh "curl -L --fail -o #{TMP_DIR}/#{TRAVELING_RUBY_VERSION}-#{platform}-#{gem_name_and_version}.tar.gz " \
293
+ "https://d6r77u77i8pq3.cloudfront.net/releases/#{TRAVELING_RUBYGEMS_VERSION}-#{platform}/#{gem_name_and_version}.tar.gz"
294
+ end
295
+
296
+ def process_package(url, package_name)
297
+ if url.end_with?('.tar.gz', '.tgz')
298
+ mkdir package_name
299
+ cd package_name do
300
+ sh "curl -L --fail #{url} | tar -xzf - --strip-components=1"
301
+ end
302
+ elsif url.end_with?('.zip')
303
+ sh "curl -L --fail #{url} -o #{package_name}.zip"
304
+ sh "unzip #{package_name}.zip"
305
+ mv 'mafft-mac', package_name
306
+ rm "#{package_name}.zip"
307
+ end
308
+ end
309
+
310
+ def edited_gemspec_content
311
+ file_list = Dir['lib/**/**'] + Dir['aux/**/**']
312
+ edited_gemspec = []
313
+ File.readlines('genevalidator.gemspec').each_with_index do |l, index|
314
+ next if index < 4 # skip first four lines
315
+ l = "s.version = '#{GEMSPEC.version}'\n" if l =~ /^\s+s.version/
316
+ l = "s.files = ['#{file_list.join("','")}']\n" if l =~ /^\s+s.files/
317
+ l = "s.add_dependency 'nokogiri', '1.6.6.2'\nend" if l =~ /^end/
318
+ edited_gemspec << l
319
+ end
320
+ edited_gemspec.join
321
+ end
322
+
323
+ GEMFILE_CONTENTS = <<-GEMFILE.freeze
324
+ source 'http://rubygems.org'
325
+
326
+ gem 'bio', '~> 1.4'
327
+ gem 'bio-blastxmlparser', '~> 2.0'
328
+ gem '#{GEMSPEC.name}', '#{GEMSPEC.version}'
329
+ gem 'nokogiri', '1.6.6.2'
330
+ gem 'statsample', '2.1.0'
331
+ GEMFILE
332
+
333
+ SCRIPT_CONTENTS = <<-SCRIPT.freeze
334
+ #!/bin/bash
335
+ set -e
336
+
337
+ # Figure out where this script is located.
338
+ SELFDIR="$(dirname "$0")"
339
+ SELFDIR="$(cd "$SELFDIR" && pwd)"
340
+
341
+ # Tell Bundler where the Gemfile and gems are.
342
+ export BUNDLE_GEMFILE="${SELFDIR}/lib/vendor/Gemfile"
343
+ unset BUNDLE_IGNORE_CONFIG
344
+
345
+ MAFFT_DIR="${SELFDIR}/lib/packages/mafft/mafftdir"
346
+ BLAST_BIN="${SELFDIR}/lib/packages/blast/bin"
347
+ GV_BLAST_DB_DIR="${SELFDIR}/blast_db"; export GV_BLAST_DB_DIR
348
+
349
+ MAFFT_BINARIES="${MAFFT_DIR}/libexec"; export MAFFT_BINARIES;
350
+
351
+ # Run the actual app using the bundled Ruby interpreter, with Bundler activated.
352
+ PATH=${MAFFT_DIR}/bin:${BLAST_BIN}:$PATH exec "${SELFDIR}/lib/ruby/bin/ruby" -rbundler/setup "${SELFDIR}/lib/app/bin/genevalidator" --db "${GV_BLAST_DB_DIR}/swissprot" "$@"
353
+
354
+ SCRIPT
355
+
356
+ BUNDLER_CONFIG = <<-CONFIG.freeze
357
+ BUNDLE_PATH: .
358
+ BUNDLE_WITHOUT: "development:test"
359
+ BUNDLE_DISABLE_SHARED_GEMS: '1'
360
+ CONFIG
361
+
362
+ def readme_contents(platform)
363
+ <<-README
364
+
365
+ --------------------------------------------------------------------------------
366
+ GeneValidator (v#{GEMSPEC.version})
367
+ Website: https://wurmlab.github.io/tools/genevalidator/
368
+ Paper: https://doi.org/10.1093/bioinformatics/btw015
369
+
370
+ Standalone Package for #{platform}.
371
+ This package includes BLAST+ (v#{BLAST[:version]}), MAFFT (v#{MAFFT[:version]}), JQ (v#{JQ[:version]}), CSVTK (v#{CSVTK[:version]}) and the Swissprot BLAST database.
372
+
373
+ Please cite as follows:
374
+ Dragan M‡, Moghul MI‡, Priyam A, Bustos C & Wurm Y. 2015.
375
+ GeneValidator: identify problems with protein-coding gene predictions".
376
+ Bioinformatics, doi: 10.1093/bioinformatics/btw015.
377
+ -------------------------------------------------------------------------------
378
+
379
+ Running GeneValidator with Exemplar Data:
380
+
381
+ cd /path/to/genevalidator/package/
382
+ genevalidator -d blast_db/swissprot exemplar_data/protein_data.fa
383
+
384
+ Run the following to see all options available.
385
+
386
+ genevalidator -h
387
+
388
+ See https://github.com/wurmlab/genevalidator for more usage information.
389
+
390
+ Please contact us if you require any further information.
391
+
392
+ -------------------------------------------------------------------------------
393
+ Genevalidator is licensed under the AGPL-3.0 License.
394
+
395
+ Dependencies packaged with GeneValidator are licensed under their respective licenses:
396
+ BLAST+ (Public Domain), Mafft (BSD), JQ (MIT), CSVTK (MIT) and SwissProt BLAST DB (CC BY-ND 3.0).
397
+ -------------------------------------------------------------------------------
398
+
399
+ README
400
+ end
@@ -0,0 +1,155 @@
1
+ doctype html
2
+ html
3
+ head
4
+ title GeneValidator: identify problems with gene predictions
5
+ script src="html_files/js/gv.compiled.min.js" type="text/javascript"
6
+ link href="html_files/css/gv.compiled.min.css" rel="stylesheet" type="text/css" /
7
+ body
8
+ #spinner1.modal aria-hidden="true" role="dialog" tabindex="-1"
9
+ .modal-dialog
10
+ .modal-content
11
+ .modal-body.text-center
12
+ h2 Loading ...
13
+ i.fa.fa-spinner.fa-5x.fa-spin
14
+ #alert.modal.fade aria-hidden="true" role="dialog" tabindex="-1"
15
+ .modal-dialog
16
+ .modal-content
17
+ .modal-header
18
+ button.close data-dismiss="modal" type="button"
19
+ span aria-hidden="true" &times;
20
+ span.sr-only Close
21
+ h4.modal-title Oops, Something went wrong!
22
+ .modal-body
23
+ p This operation is not posible. There seems to be too many queries...
24
+ .modal-footer
25
+ button.btn.btn-default data-dismiss="modal" type="button" Close
26
+ #browseralert.modal.fade aria-hidden="true" role="dialog" tabindex="-1"
27
+ .modal-dialog
28
+ .modal-content.browser-alert
29
+ .modal-header
30
+ button.close data-dismiss="modal" type="button"
31
+ span aria-hidden="true" &times;
32
+ span.sr-only Close
33
+ h4.modal-title Incompatible Browser!
34
+ #browseralertbody.modal-body
35
+ p#browseralertText
36
+ strong#mainbrowseralertText Sorry, this feature is not supported in your browser.
37
+ br
38
+ strong Please run the following command in your terminal:
39
+ pre style="background-color: #f2dede"
40
+ | genevalidator serve #{@dirs[:output_dir]}
41
+ p This is because some browsers do not allow access to local files.
42
+ p
43
+ | Alternatively, you can use
44
+ strong Mozilla FireFox
45
+ | to view this file without running the above web server.
46
+ .container
47
+ span.menu_icon.pull-right
48
+ a href="#" onclick="GV.toggleAllPlots(this);"
49
+ i.fa.fa-2x.fa-bar-chart-o
50
+ br/
51
+ span#show_all_plots Show All Charts
52
+ span.menu_icon.pull-right
53
+ a href="https://github.com/wurmlab/genevalidator" target="_blank"
54
+ i.fa.fa-2x.fa-github
55
+ br/
56
+ | Source Code
57
+ span.menu_icon.pull-right
58
+ a href="http://wurmlab.github.io/tools/genevalidator/"
59
+ i.fa.fa-2x.fa-info-circle
60
+ br/
61
+ | About
62
+ .clearfix
63
+ img.logo alt="logo" src="html_files/img/gene.png" /
64
+ .page-title
65
+ h1
66
+ | Gene Validator
67
+ small
68
+ | v#{GeneValidator::VERSION}
69
+ h4.subheading Identify Problems with Gene Predictions
70
+ #overview.text-left style="margin-top:20px"
71
+ #overview_text
72
+ button#overview_btn.btn.btn-primary.btn-sm data-toggle="button" onclick="GV.toggleOverviewBtn();" data-overviewjson="html_files/json/overview.json"
73
+ - if @all_html_fnames.length > 1
74
+ nav
75
+ ul.pagination
76
+ - @all_html_fnames.each_with_index do |file, idx|
77
+ li
78
+ a href="#{File.basename(file)}"
79
+ = idx + 1
80
+ table#sortable_table.table.table-striped.table-collapsed.table-bordered.table-condensed.tablesorter style="margin-top:20px"
81
+ thead
82
+ tr#header
83
+ th #
84
+ th Ranking
85
+ th
86
+ | Sequence Definition
87
+ span data-placement="top" data-toggle="tooltip" title=("Query definition as it apears in the input fasta file.")
88
+ i.fa.fa-question-circle
89
+ th
90
+ | No. Hits
91
+ span data-placement="top" data-toggle="tooltip" title=("Number of non-identical hits found by BLAST.")
92
+ i.fa.fa-question-circle
93
+ - @json_data_section[0][:validations].each do |_short_header, item|
94
+ th.sorter-false
95
+ strong
96
+ = item[:header]
97
+ |
98
+ - if item[:header] == "Length Cluster" || item[:header] == "Gene Merge" || item[:header] == "Main ORF" || item[:header] == "Missing/Extra Sequences"
99
+ span data-placement="top" data-toggle="tooltip" title=("Charts available for this validation")
100
+ i.fa.fa-bar-chart-o.chartIcon
101
+ |
102
+ span data-placement="top" data-toggle="tooltip" title="#{item[:description]}"
103
+ i.fa.fa-question-circle
104
+ th.sorter-false.chart-column
105
+ tbody
106
+ - @json_data_section.each do |row|
107
+ tr data-jsonfile="html_files/json/#{@dirs[:filename]}_#{row[:idx]}.json" data-target="toggle#{row[:idx]}"
108
+ td title="idx" = row[:idx]
109
+ td data-score="#{row[:overall_score]}"
110
+ .ratings
111
+ .empty-stars
112
+ .full-stars style=("width:#{row[:overall_score]}%;")
113
+ td title="Definition" = row[:definition]
114
+ td title=("No. Hits") = row[:no_hits]
115
+ - row[:validations].each do |_short_header, item|
116
+ td class="#{item[:status]}" title="#{item[:header]}"
117
+ == item[:print].gsub(' ', '&nbsp;').gsub(';&nbsp;', '; ')
118
+ - if row[:validations].select { |_short_header, item| item[:graphs] != nil }.map{ |_short_header, item| item[:graphs].length }.inject(0) { |r, e| r + e } != 0
119
+ td
120
+ button.plot_btn.btn.btn-default title=("Show plots")
121
+ i.fa.fa-bar-chart-o
122
+ - else
123
+ td
124
+ - if @all_html_fnames.length > 1
125
+ nav
126
+ ul.pagination
127
+ - @all_html_fnames.each_with_index do |file, idx|
128
+ li
129
+ a href="#{File.basename(file)}"
130
+ = idx + 1
131
+ footer
132
+ .container.center-block
133
+ p.text-muted.text-center
134
+ | Please cite:
135
+ a href="https://academic.oup.com/bioinformatics/article/32/10/1559/1742817/GeneValidator-identify-problems-with-protein"
136
+ | "Dragan M
137
+ sup> ‡
138
+ | , Moghul MI
139
+ sup> ‡
140
+ | , Priyam A, Bustos C &amp; Wurm Y
141
+ em (2016)
142
+ | GeneValidator: identify problematic gene predictions"
143
+ br/
144
+ | Developed at
145
+ a href="https://wurmlab.github.io" target="_blank" Wurm Lab
146
+ | ,
147
+ a href="http://www.sbcs.qmul.ac.uk" target="_blank" QMUL
148
+ | with funding by
149
+ a href="http://www.bbsrc.ac.uk/home/home.aspx" target="_blank" BBSRC
150
+ | and
151
+ a href="https://www.google-melange.com/gsoc/homepage/google/gsoc2013" target="_blank" Google Summer of Code 2013
152
+ br/
153
+ | This page was created by
154
+ a href="https://wurmlab.github.io/tools/genevalidator/" target="_blank" GeneValidator
155
+ | v#{GeneValidator::VERSION}