sequenceserver 2.0.0.rc7 → 2.0.0.rc8
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.
- checksums.yaml +4 -4
- data/bin/chromedriver +0 -0
- data/bin/geckodriver +0 -0
- data/bin/sequenceserver +31 -4
- data/lib/sequenceserver.rb +6 -1
- data/lib/sequenceserver/database.rb +7 -42
- data/lib/sequenceserver/exceptions.rb +14 -0
- data/lib/sequenceserver/makeblastdb.rb +121 -41
- data/lib/sequenceserver/routes.rb +1 -1
- data/lib/sequenceserver/version.rb +1 -1
- data/public/css/sequenceserver.css +8 -2
- data/public/css/sequenceserver.min.css +1 -1
- data/public/js/jquery_world.js +1 -1
- data/public/js/report.js +1 -2
- data/public/js/search.js +40 -18
- data/public/js/sidebar.js +50 -26
- data/public/sequenceserver-report.min.js +17 -17
- data/public/sequenceserver-search.min.js +2 -2
- data/views/layout.erb +1 -1
- data/views/report.erb +1 -1
- data/views/search.erb +1 -1
- metadata +4 -510
- data/.bootstrap/config.json +0 -433
- data/.codeclimate.yml +0 -31
- data/.csslintrc +0 -2
- data/.dockerignore +0 -1
- data/.eslintignore +0 -1
- data/.eslintrc.json +0 -36
- data/.gitignore +0 -56
- data/.mailmap +0 -5
- data/.rspec +0 -3
- data/.rubocop.yml +0 -61
- data/.travis.yml +0 -74
- data/AppImage/recipe.yml +0 -15
- data/AppImage/sequenceserver.desktop +0 -8
- data/AppImage/sequenceserver.png +0 -0
- data/AppImage/sequenceserver.sh +0 -16
- data/Dockerfile +0 -25
- data/LICENSE.txt +0 -661
- data/LICENSE/Apache.txt +0 -176
- data/LICENSE/d3.txt +0 -26
- data/README.md +0 -161
- data/package.json +0 -48
- data/public/vendor/.dependencies.json +0 -18
- data/public/vendor/.loaderversions +0 -1
- data/public/vendor/github/components/jquery@2.1.4/.gitignore +0 -1
- data/public/vendor/github/components/jquery@2.1.4/.jspm-hash +0 -1
- data/public/vendor/github/components/jquery@2.1.4/.jspm.json +0 -37
- data/public/vendor/github/components/jqueryui@1.11.4/.gitignore +0 -4
- data/public/vendor/github/components/jqueryui@1.11.4/.jspm-hash +0 -1
- data/public/vendor/github/components/jqueryui@1.11.4/.jspm.json +0 -136
- data/public/vendor/github/components/jqueryui@1.11.4/ui/.jshintrc +0 -24
- data/public/vendor/github/jspm/nodelibs-buffer@0.1.0/.jspm-hash +0 -1
- data/public/vendor/github/jspm/nodelibs-buffer@0.1.0/.jspm.json +0 -10
- data/public/vendor/github/jspm/nodelibs-events@0.1.1/.jspm-hash +0 -1
- data/public/vendor/github/jspm/nodelibs-events@0.1.1/.jspm.json +0 -10
- data/public/vendor/github/jspm/nodelibs-fs@0.1.2/.jspm-hash +0 -1
- data/public/vendor/github/jspm/nodelibs-module@0.1.0/.jspm-hash +0 -1
- data/public/vendor/github/jspm/nodelibs-module@0.1.0/.jspm.json +0 -3
- data/public/vendor/github/jspm/nodelibs-path@0.1.0/.jspm-hash +0 -1
- data/public/vendor/github/jspm/nodelibs-path@0.1.0/.jspm.json +0 -10
- data/public/vendor/github/jspm/nodelibs-process@0.1.1/.jspm-hash +0 -1
- data/public/vendor/github/jspm/nodelibs-stream@0.1.0/.jspm-hash +0 -1
- data/public/vendor/github/jspm/nodelibs-stream@0.1.0/.jspm.json +0 -10
- data/public/vendor/github/jspm/nodelibs-util@0.1.0/.jspm-hash +0 -1
- data/public/vendor/github/jspm/nodelibs-util@0.1.0/.jspm.json +0 -10
- data/public/vendor/github/mbostock/d3@3.5.6/.jspm-hash +0 -1
- data/public/vendor/github/mbostock/d3@3.5.6/.jspm.json +0 -76
- data/public/vendor/github/nicgirault/circosJs@1.7.0/.gitignore +0 -10
- data/public/vendor/github/nicgirault/circosJs@1.7.0/.jspm-hash +0 -1
- data/public/vendor/github/systemjs/plugin-css@0.1.15/.gitignore +0 -1
- data/public/vendor/github/systemjs/plugin-css@0.1.15/.jspm-hash +0 -1
- data/public/vendor/github/systemjs/plugin-css@0.1.15/.jspm.json +0 -4
- data/public/vendor/github/systemjs/plugin-json@0.1.0/.jspm-hash +0 -1
- data/public/vendor/github/twbs/bootstrap@3.3.5/.jspm-hash +0 -1
- data/public/vendor/github/twbs/bootstrap@3.3.5/.jspm.json +0 -100
- data/public/vendor/npm/amdefine@1.0.0/.jspm-hash +0 -1
- data/public/vendor/npm/amdefine@1.0.0/.jspm.json +0 -55
- data/public/vendor/npm/babel-core@5.8.23/.jspm-hash +0 -1
- data/public/vendor/npm/babel-runtime@5.8.20/.jspm-hash +0 -1
- data/public/vendor/npm/babel-runtime@5.8.20/.npmignore +0 -2
- data/public/vendor/npm/base62@0.1.1/.jspm-hash +0 -1
- data/public/vendor/npm/base62@0.1.1/.jspm.json +0 -49
- data/public/vendor/npm/base62@0.1.1/.travis.yml +0 -4
- data/public/vendor/npm/base64-js@0.0.8/.jspm-hash +0 -1
- data/public/vendor/npm/base64-js@0.0.8/.jspm.json +0 -77
- data/public/vendor/npm/base64-js@0.0.8/.travis.yml +0 -5
- data/public/vendor/npm/buffer@3.4.3/.jspm-hash +0 -1
- data/public/vendor/npm/buffer@3.4.3/.jspm.json +0 -105
- data/public/vendor/npm/buffer@3.4.3/.npmignore +0 -1
- data/public/vendor/npm/buffer@3.4.3/.travis.yml +0 -8
- data/public/vendor/npm/buffer@3.4.3/.zuul.yml +0 -20
- data/public/vendor/npm/core-js@1.1.2/.eslintrc +0 -36
- data/public/vendor/npm/core-js@1.1.2/.gitattributes +0 -1
- data/public/vendor/npm/core-js@1.1.2/.jspm-hash +0 -1
- data/public/vendor/npm/core-js@1.1.2/.npmignore +0 -10
- data/public/vendor/npm/core-js@1.1.2/.travis.yml +0 -3
- data/public/vendor/npm/core-util-is@1.0.1/.jspm-hash +0 -1
- data/public/vendor/npm/core-util-is@1.0.1/.jspm.json +0 -58
- data/public/vendor/npm/envify@3.4.0/.jspm-hash +0 -1
- data/public/vendor/npm/envify@3.4.0/.jspm.json +0 -72
- data/public/vendor/npm/envify@3.4.0/.npmignore +0 -2
- data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/.jspm-hash +0 -1
- data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/.jspm.json +0 -102
- data/public/vendor/npm/events@1.0.2/.jspm-hash +0 -1
- data/public/vendor/npm/events@1.0.2/.jspm.json +0 -67
- data/public/vendor/npm/events@1.0.2/.npmignore +0 -1
- data/public/vendor/npm/events@1.0.2/.travis.yml +0 -7
- data/public/vendor/npm/events@1.0.2/.zuul.yml +0 -12
- data/public/vendor/npm/font-awesome@4.4.0/.jspm-hash +0 -1
- data/public/vendor/npm/font-awesome@4.4.0/.jspm.json +0 -81
- data/public/vendor/npm/font-awesome@4.4.0/.npmignore +0 -42
- data/public/vendor/npm/ieee754@1.1.6/.jspm-hash +0 -1
- data/public/vendor/npm/ieee754@1.1.6/.jspm.json +0 -70
- data/public/vendor/npm/ieee754@1.1.6/.travis.yml +0 -7
- data/public/vendor/npm/ieee754@1.1.6/.zuul.yml +0 -20
- data/public/vendor/npm/inherits@2.0.1/.jspm-hash +0 -1
- data/public/vendor/npm/inherits@2.0.1/.jspm.json +0 -60
- data/public/vendor/npm/is-array@1.0.1/.jepso-ci.json +0 -3
- data/public/vendor/npm/is-array@1.0.1/.jspm-hash +0 -1
- data/public/vendor/npm/is-array@1.0.1/.jspm.json +0 -42
- data/public/vendor/npm/is-array@1.0.1/.npmignore +0 -0
- data/public/vendor/npm/isarray@0.0.1/.jspm-hash +0 -1
- data/public/vendor/npm/isarray@0.0.1/.jspm.json +0 -51
- data/public/vendor/npm/jstransform@10.1.0/.jshintrc +0 -28
- data/public/vendor/npm/jstransform@10.1.0/.jspm-hash +0 -1
- data/public/vendor/npm/jstransform@10.1.0/.jspm.json +0 -95
- data/public/vendor/npm/jstransform@10.1.0/.npmignore +0 -4
- data/public/vendor/npm/jstransform@10.1.0/.travis.yml +0 -8
- data/public/vendor/npm/path-browserify@0.0.0/.jspm-hash +0 -1
- data/public/vendor/npm/path-browserify@0.0.0/.jspm.json +0 -56
- data/public/vendor/npm/process@0.10.1/.jspm-hash +0 -1
- data/public/vendor/npm/react@0.13.3/.jspm-hash +0 -1
- data/public/vendor/npm/react@0.13.3/.jspm.json +0 -77
- data/public/vendor/npm/readable-stream@1.1.13/.jspm-hash +0 -1
- data/public/vendor/npm/readable-stream@1.1.13/.jspm.json +0 -95
- data/public/vendor/npm/readable-stream@1.1.13/.npmignore +0 -5
- data/public/vendor/npm/source-map@0.1.31/.jspm-hash +0 -1
- data/public/vendor/npm/source-map@0.1.31/.jspm.json +0 -133
- data/public/vendor/npm/source-map@0.1.31/.npmignore +0 -2
- data/public/vendor/npm/source-map@0.1.31/.travis.yml +0 -4
- data/public/vendor/npm/stream-browserify@1.0.0/.jspm-hash +0 -1
- data/public/vendor/npm/stream-browserify@1.0.0/.jspm.json +0 -77
- data/public/vendor/npm/stream-browserify@1.0.0/.travis.yml +0 -4
- data/public/vendor/npm/string_decoder@0.10.31/.jspm-hash +0 -1
- data/public/vendor/npm/string_decoder@0.10.31/.jspm.json +0 -58
- data/public/vendor/npm/string_decoder@0.10.31/.npmignore +0 -2
- data/public/vendor/npm/through@2.3.8/.jspm-hash +0 -1
- data/public/vendor/npm/through@2.3.8/.jspm.json +0 -72
- data/public/vendor/npm/through@2.3.8/.travis.yml +0 -5
- data/public/vendor/npm/underscore@1.8.3/.jspm-hash +0 -1
- data/public/vendor/npm/underscore@1.8.3/.jspm.json +0 -74
- data/public/vendor/npm/util@0.10.3/.jspm-hash +0 -1
- data/public/vendor/npm/util@0.10.3/.jspm.json +0 -58
- data/public/vendor/npm/util@0.10.3/.npmignore +0 -1
- data/public/vendor/npm/util@0.10.3/.travis.yml +0 -8
- data/public/vendor/npm/util@0.10.3/.zuul.yml +0 -10
- data/public/vendor/npm/webshim@1.15.8/.gitattributes +0 -12
- data/public/vendor/npm/webshim@1.15.8/.jspm-hash +0 -1
- data/public/vendor/npm/webshim@1.15.8/.jspm.json +0 -92
- data/public/vendor/npm/webshim@1.15.8/.npmignore +0 -16
- data/public/vendor/npm/webshim@1.15.8/.project +0 -12
- data/public/vendor/npm/webshim@1.15.8/demos/demos/filereader/upload/.keep +0 -0
- data/sequenceserver.gemspec +0 -55
- data/spec/blast_versions/blast_2.2.30/blast_2.2.30_spec.rb +0 -228
- data/spec/blast_versions/blast_2.2.30/import_spec_capybara_local_2.2.30.rb +0 -583
- data/spec/blast_versions/blast_2.2.31/blast_2.2.31_spec.rb +0 -228
- data/spec/blast_versions/blast_2.2.31/import_spec_capybara_local_2.2.31.rb +0 -587
- data/spec/blast_versions/blast_2.3.0/blast_2.3.0_spec.rb +0 -229
- data/spec/blast_versions/blast_2.3.0/import_spec_capybara_local_2.3.0.rb +0 -587
- data/spec/blast_versions/blast_2.4.0/blast_2.4.0_spec.rb +0 -228
- data/spec/blast_versions/blast_2.4.0/import_spec_capybara_local_2.4.0.rb +0 -588
- data/spec/blast_versions/blast_2.5.0/blast_2.5.0_spec.rb +0 -228
- data/spec/blast_versions/blast_2.5.0/import_spec_capybara_local_2.5.0.rb +0 -587
- data/spec/blast_versions/blast_2.6.0/blast_2.6.0_spec.rb +0 -228
- data/spec/blast_versions/blast_2.6.0/import_spec_capybara_local_2.6.0.rb +0 -587
- data/spec/blast_versions/blast_2.7.1/blast_2.7.1_spec.rb +0 -228
- data/spec/blast_versions/blast_2.7.1/import_spec_capybara_local_2.7.1.rb +0 -587
- data/spec/blast_versions/blast_2.8.1/blast_2.8.1_spec.rb +0 -228
- data/spec/blast_versions/blast_2.8.1/import_spec_capybara_local_2.8.1.rb +0 -587
- data/spec/blast_versions/blast_2.9.0/blast_2.9.0_spec.rb +0 -228
- data/spec/blast_versions/blast_2.9.0/import_spec_capybara_local_2.9.0.rb +0 -585
- data/spec/blast_versions/diamond_0.9.24/diamond_0.9.24_spec.rb +0 -176
- data/spec/blast_versions/diamond_0.9.24/import_spec_capybara_local_0.9.24.rb +0 -237
- data/spec/capybara_spec.rb +0 -345
- data/spec/config_spec.rb +0 -87
- data/spec/database/funky_ids/funky_ids.fa +0 -16
- data/spec/database/funky_ids/v4/funky_ids.fa.nhd +0 -8
- data/spec/database/funky_ids/v4/funky_ids.fa.nhi +0 -0
- data/spec/database/funky_ids/v4/funky_ids.fa.nhr +0 -0
- data/spec/database/funky_ids/v4/funky_ids.fa.nin +0 -0
- data/spec/database/funky_ids/v4/funky_ids.fa.nog +0 -0
- data/spec/database/funky_ids/v4/funky_ids.fa.nsd +0 -15
- data/spec/database/funky_ids/v4/funky_ids.fa.nsi +0 -0
- data/spec/database/funky_ids/v4/funky_ids.fa.nsq +0 -0
- data/spec/database/funky_ids/v5/funky_ids.fa.ndb +0 -0
- data/spec/database/funky_ids/v5/funky_ids.fa.nhd +0 -8
- data/spec/database/funky_ids/v5/funky_ids.fa.nhi +0 -0
- data/spec/database/funky_ids/v5/funky_ids.fa.nhr +0 -0
- data/spec/database/funky_ids/v5/funky_ids.fa.nin +0 -0
- data/spec/database/funky_ids/v5/funky_ids.fa.nog +0 -0
- data/spec/database/funky_ids/v5/funky_ids.fa.nos +0 -0
- data/spec/database/funky_ids/v5/funky_ids.fa.not +0 -0
- data/spec/database/funky_ids/v5/funky_ids.fa.nsq +0 -0
- data/spec/database/funky_ids/v5/funky_ids.fa.ntf +0 -0
- data/spec/database/funky_ids/v5/funky_ids.fa.nto +0 -0
- data/spec/database/funky_sequences/README.md +0 -14
- data/spec/database/funky_sequences/funky_aa_sequences.fa +0 -7
- data/spec/database/funky_sequences/funky_aa_sequences.fa.phd +0 -3
- data/spec/database/funky_sequences/funky_aa_sequences.fa.phi +0 -0
- data/spec/database/funky_sequences/funky_aa_sequences.fa.phr +0 -0
- data/spec/database/funky_sequences/funky_aa_sequences.fa.pin +0 -0
- data/spec/database/funky_sequences/funky_aa_sequences.fa.pog +0 -0
- data/spec/database/funky_sequences/funky_aa_sequences.fa.psd +0 -6
- data/spec/database/funky_sequences/funky_aa_sequences.fa.psi +0 -0
- data/spec/database/funky_sequences/funky_aa_sequences.fa.psq +0 -0
- data/spec/database/funky_sequences/funky_na_sequences.fa +0 -2
- data/spec/database/funky_sequences/funky_na_sequences.fa.nhr +0 -0
- data/spec/database/funky_sequences/funky_na_sequences.fa.nin +0 -0
- data/spec/database/funky_sequences/funky_na_sequences.fa.nog +0 -0
- data/spec/database/funky_sequences/funky_na_sequences.fa.nsd +0 -2
- data/spec/database/funky_sequences/funky_na_sequences.fa.nsi +0 -0
- data/spec/database/funky_sequences/funky_na_sequences.fa.nsq +0 -0
- data/spec/database/ox_parse_error/query.fa +0 -1
- data/spec/database/ox_parse_error/rand1.fa +0 -2
- data/spec/database/ox_parse_error/rand1.fa.nhd +0 -1
- data/spec/database/ox_parse_error/rand1.fa.nhi +0 -0
- data/spec/database/ox_parse_error/rand1.fa.nhr +0 -0
- data/spec/database/ox_parse_error/rand1.fa.nin +0 -0
- data/spec/database/ox_parse_error/rand1.fa.nog +0 -0
- data/spec/database/ox_parse_error/rand1.fa.nsd +0 -2
- data/spec/database/ox_parse_error/rand1.fa.nsi +0 -0
- data/spec/database/ox_parse_error/rand1.fa.nsq +0 -0
- data/spec/database/ox_parse_error/rand2.fa +0 -2
- data/spec/database/ox_parse_error/rand2.fa.nhd +0 -1
- data/spec/database/ox_parse_error/rand2.fa.nhi +0 -0
- data/spec/database/ox_parse_error/rand2.fa.nhr +0 -0
- data/spec/database/ox_parse_error/rand2.fa.nin +0 -0
- data/spec/database/ox_parse_error/rand2.fa.nog +0 -0
- data/spec/database/ox_parse_error/rand2.fa.nsd +0 -2
- data/spec/database/ox_parse_error/rand2.fa.nsi +0 -0
- data/spec/database/ox_parse_error/rand2.fa.nsq +0 -0
- data/spec/database/ox_parse_error_unique_ids/query.fa +0 -1
- data/spec/database/ox_parse_error_unique_ids/rand1.fa +0 -2
- data/spec/database/ox_parse_error_unique_ids/rand1.fa.nhd +0 -1
- data/spec/database/ox_parse_error_unique_ids/rand1.fa.nhi +0 -0
- data/spec/database/ox_parse_error_unique_ids/rand1.fa.nhr +0 -0
- data/spec/database/ox_parse_error_unique_ids/rand1.fa.nin +0 -0
- data/spec/database/ox_parse_error_unique_ids/rand1.fa.nog +0 -0
- data/spec/database/ox_parse_error_unique_ids/rand1.fa.nsd +0 -2
- data/spec/database/ox_parse_error_unique_ids/rand1.fa.nsi +0 -0
- data/spec/database/ox_parse_error_unique_ids/rand1.fa.nsq +0 -0
- data/spec/database/ox_parse_error_unique_ids/rand2.fa +0 -2
- data/spec/database/ox_parse_error_unique_ids/rand2.fa.nhd +0 -1
- data/spec/database/ox_parse_error_unique_ids/rand2.fa.nhi +0 -0
- data/spec/database/ox_parse_error_unique_ids/rand2.fa.nhr +0 -0
- data/spec/database/ox_parse_error_unique_ids/rand2.fa.nin +0 -0
- data/spec/database/ox_parse_error_unique_ids/rand2.fa.nog +0 -0
- data/spec/database/ox_parse_error_unique_ids/rand2.fa.nsd +0 -2
- data/spec/database/ox_parse_error_unique_ids/rand2.fa.nsi +0 -0
- data/spec/database/ox_parse_error_unique_ids/rand2.fa.nsq +0 -0
- data/spec/database/pipe_in_seqid/pipe_in_seqid.fa +0 -6
- data/spec/database/pipe_in_seqid/pipe_in_seqid.fa.nhd +0 -1
- data/spec/database/pipe_in_seqid/pipe_in_seqid.fa.nhi +0 -0
- data/spec/database/pipe_in_seqid/pipe_in_seqid.fa.nhr +0 -0
- data/spec/database/pipe_in_seqid/pipe_in_seqid.fa.nin +0 -0
- data/spec/database/pipe_in_seqid/pipe_in_seqid.fa.nog +0 -0
- data/spec/database/pipe_in_seqid/pipe_in_seqid.fa.nsd +0 -2
- data/spec/database/pipe_in_seqid/pipe_in_seqid.fa.nsi +0 -0
- data/spec/database/pipe_in_seqid/pipe_in_seqid.fa.nsq +0 -0
- data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.ndb +0 -0
- data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nhd +0 -8
- data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nhi +0 -0
- data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nhr +0 -0
- data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nin +0 -0
- data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nog +0 -0
- data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nos +0 -0
- data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.not +0 -0
- data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nsq +0 -0
- data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.ntf +0 -0
- data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nto +0 -0
- data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.txt +0 -8
- data/spec/database/sample/links.rb +0 -23
- data/spec/database/sample/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta +0 -6449
- data/spec/database/sample/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.pdb +0 -0
- data/spec/database/sample/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.phd +0 -1189
- data/spec/database/sample/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.phi +0 -0
- data/spec/database/sample/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.phr +0 -0
- data/spec/database/sample/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.pin +0 -0
- data/spec/database/sample/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.pog +0 -0
- data/spec/database/sample/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.pos +0 -0
- data/spec/database/sample/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.pot +0 -0
- data/spec/database/sample/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.psq +0 -0
- data/spec/database/sample/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.ptf +0 -0
- data/spec/database/sample/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.pto +0 -0
- data/spec/database/sample/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.pdb +0 -0
- data/spec/database/sample/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.phd +0 -9140
- data/spec/database/sample/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.phi +0 -0
- data/spec/database/sample/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.phr +0 -0
- data/spec/database/sample/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.pin +0 -0
- data/spec/database/sample/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.pog +0 -0
- data/spec/database/sample/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.pos +0 -0
- data/spec/database/sample/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.pot +0 -0
- data/spec/database/sample/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.psq +0 -0
- data/spec/database/sample/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.ptf +0 -0
- data/spec/database/sample/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.pto +0 -0
- data/spec/database/sample/proteins/uniprot/URL +0 -1
- data/spec/database/sample/si_uniprot_idmap.yml +0 -14180
- data/spec/database/sample/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta +0 -5486
- data/spec/database/sample/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.ndb +0 -0
- data/spec/database/sample/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nhd +0 -473
- data/spec/database/sample/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nhi +0 -0
- data/spec/database/sample/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nhr +0 -0
- data/spec/database/sample/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nin +0 -0
- data/spec/database/sample/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nog +0 -0
- data/spec/database/sample/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nos +0 -0
- data/spec/database/sample/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.not +0 -0
- data/spec/database/sample/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nsq +0 -0
- data/spec/database/sample/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.ntf +0 -0
- data/spec/database/sample/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nto +0 -0
- data/spec/database/unformatted/Cardiocondyla_obscurior/Cobs1.4.proteins.fa +0 -148303
- data/spec/database/v4/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nhd +0 -8
- data/spec/database/v4/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nhi +0 -0
- data/spec/database/v4/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nhr +0 -0
- data/spec/database/v4/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nin +0 -0
- data/spec/database/v4/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nog +0 -0
- data/spec/database/v4/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nsd +0 -16
- data/spec/database/v4/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nsi +0 -0
- data/spec/database/v4/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nsq +0 -0
- data/spec/database/v4/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.txt +0 -8
- data/spec/database/v4/links.rb +0 -23
- data/spec/database/v4/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta +0 -6449
- data/spec/database/v4/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.phd +0 -1189
- data/spec/database/v4/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.phi +0 -0
- data/spec/database/v4/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.phr +0 -0
- data/spec/database/v4/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.pin +0 -0
- data/spec/database/v4/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.pog +0 -0
- data/spec/database/v4/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.psd +0 -2378
- data/spec/database/v4/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.psi +0 -0
- data/spec/database/v4/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.psq +0 -0
- data/spec/database/v4/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.phd +0 -9140
- data/spec/database/v4/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.phi +0 -0
- data/spec/database/v4/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.phr +0 -0
- data/spec/database/v4/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.pin +0 -0
- data/spec/database/v4/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.pog +0 -0
- data/spec/database/v4/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.psd +0 -18280
- data/spec/database/v4/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.psi +0 -0
- data/spec/database/v4/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.psq +0 -0
- data/spec/database/v4/proteins/uniprot/URL +0 -1
- data/spec/database/v4/si_uniprot_idmap.yml +0 -14180
- data/spec/database/v4/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta +0 -5486
- data/spec/database/v4/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nhd +0 -473
- data/spec/database/v4/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nhi +0 -0
- data/spec/database/v4/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nhr +0 -0
- data/spec/database/v4/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nin +0 -0
- data/spec/database/v4/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nog +0 -0
- data/spec/database/v4/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nsd +0 -946
- data/spec/database/v4/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nsi +0 -0
- data/spec/database/v4/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nsq +0 -0
- data/spec/database/without_parse_seqids/without_parse_seqids.fa +0 -10
- data/spec/database/without_parse_seqids/without_parse_seqids.fa.phr +0 -0
- data/spec/database/without_parse_seqids/without_parse_seqids.fa.pin +0 -0
- data/spec/database/without_parse_seqids/without_parse_seqids.fa.psq +0 -0
- data/spec/database_spec.rb +0 -51
- data/spec/doctor_spec.disabled.rb +0 -107
- data/spec/dotdir/blast_2.2.30/blastn/BLASTN_XML_2.2.30.xml +0 -1201
- data/spec/dotdir/blast_2.2.30/blastn/job.yaml +0 -8
- data/spec/dotdir/blast_2.2.30/blastn_nohits/BLASTN_NO_HITS_XML_2.2.30.xml +0 -866
- data/spec/dotdir/blast_2.2.30/blastn_nohits/job.yaml +0 -8
- data/spec/dotdir/blast_2.2.30/blastp/BLASTP_XML_2.2.30.xml +0 -1181
- data/spec/dotdir/blast_2.2.30/blastp/job.yaml +0 -8
- data/spec/dotdir/blast_2.2.30/blastx/BLASTX_XML_2.2.30.xml +0 -1181
- data/spec/dotdir/blast_2.2.30/blastx/job.yaml +0 -8
- data/spec/dotdir/blast_2.2.30/tblastn/TBLASTN_XML_2.2.30.xml +0 -1181
- data/spec/dotdir/blast_2.2.30/tblastn/job.yaml +0 -8
- data/spec/dotdir/blast_2.2.30/tblastx/TBLASTX_XML_2.2.30.xml +0 -8857
- data/spec/dotdir/blast_2.2.30/tblastx/job.yaml +0 -8
- data/spec/dotdir/blast_2.2.31/blastn/BLASTN_XML_2.2.31.xml +0 -1201
- data/spec/dotdir/blast_2.2.31/blastn/job.yaml +0 -8
- data/spec/dotdir/blast_2.2.31/blastn_nohits/BLASTN_NO_HITS_XML_2.2.31.xml +0 -866
- data/spec/dotdir/blast_2.2.31/blastn_nohits/job.yaml +0 -8
- data/spec/dotdir/blast_2.2.31/blastp/BLASTP_XML_2.2.31.xml +0 -1181
- data/spec/dotdir/blast_2.2.31/blastp/job.yaml +0 -8
- data/spec/dotdir/blast_2.2.31/blastx/BLASTX_XML_2.2.31.xml +0 -1181
- data/spec/dotdir/blast_2.2.31/blastx/job.yaml +0 -8
- data/spec/dotdir/blast_2.2.31/tblastn/TBLASTN_XML_2.2.31.xml +0 -1181
- data/spec/dotdir/blast_2.2.31/tblastn/job.yaml +0 -8
- data/spec/dotdir/blast_2.2.31/tblastx/TBLASTX_XML_2.2.31.xml +0 -8857
- data/spec/dotdir/blast_2.2.31/tblastx/job.yaml +0 -8
- data/spec/dotdir/blast_2.3.0/blastn/BLASTN_XML_2.3.0.xml +0 -1201
- data/spec/dotdir/blast_2.3.0/blastn/job.yaml +0 -8
- data/spec/dotdir/blast_2.3.0/blastn_nohits/BLASTN_NO_HITS_XML_2.3.0.xml +0 -866
- data/spec/dotdir/blast_2.3.0/blastn_nohits/job.yaml +0 -8
- data/spec/dotdir/blast_2.3.0/blastp/BLASTP_XML_2.3.0.xml +0 -1181
- data/spec/dotdir/blast_2.3.0/blastp/job.yaml +0 -8
- data/spec/dotdir/blast_2.3.0/blastx/BLASTX_XML_2.3.0.xml +0 -1181
- data/spec/dotdir/blast_2.3.0/blastx/job.yaml +0 -8
- data/spec/dotdir/blast_2.3.0/tblastn/TBLASTN_XML_2.3.0.xml +0 -1181
- data/spec/dotdir/blast_2.3.0/tblastn/job.yaml +0 -8
- data/spec/dotdir/blast_2.3.0/tblastx/TBLASTX_XML_2.3.0.xml +0 -8857
- data/spec/dotdir/blast_2.3.0/tblastx/job.yaml +0 -8
- data/spec/dotdir/blast_2.4.0/blastn/BLASTN_XML_2.4.0.xml +0 -1201
- data/spec/dotdir/blast_2.4.0/blastn/job.yaml +0 -8
- data/spec/dotdir/blast_2.4.0/blastn_nohits/BLASTN_NO_HITS_XML_2.4.0.xml +0 -866
- data/spec/dotdir/blast_2.4.0/blastn_nohits/job.yaml +0 -8
- data/spec/dotdir/blast_2.4.0/blastp/BLASTP_XML_2.4.0.xml +0 -1181
- data/spec/dotdir/blast_2.4.0/blastp/job.yaml +0 -8
- data/spec/dotdir/blast_2.4.0/blastx/BLASTX_XML_2.4.0.xml +0 -1181
- data/spec/dotdir/blast_2.4.0/blastx/job.yaml +0 -8
- data/spec/dotdir/blast_2.4.0/tblastn/TBLASTN_XML_2.4.0.xml +0 -1181
- data/spec/dotdir/blast_2.4.0/tblastn/job.yaml +0 -8
- data/spec/dotdir/blast_2.4.0/tblastx/TBLASTX_XML_2.4.0.xml +0 -8857
- data/spec/dotdir/blast_2.4.0/tblastx/job.yaml +0 -8
- data/spec/dotdir/blast_2.5.0/blastn/BLASTN_XML_2.5.0.xml +0 -1201
- data/spec/dotdir/blast_2.5.0/blastn/job.yaml +0 -8
- data/spec/dotdir/blast_2.5.0/blastn_nohits/BLASTN_NO_HITS_XML_2.5.0.xml +0 -866
- data/spec/dotdir/blast_2.5.0/blastn_nohits/job.yaml +0 -8
- data/spec/dotdir/blast_2.5.0/blastp/BLASTP +0 -2161
- data/spec/dotdir/blast_2.5.0/blastp/BLASTP_XML_2.5.0.xml +0 -1181
- data/spec/dotdir/blast_2.5.0/blastp/job.yaml +0 -8
- data/spec/dotdir/blast_2.5.0/blastx/BLASTX +0 -28080
- data/spec/dotdir/blast_2.5.0/blastx/BLASTX_XML_2.5.0.xml +0 -1181
- data/spec/dotdir/blast_2.5.0/blastx/job.yaml +0 -8
- data/spec/dotdir/blast_2.5.0/tblastn/TBLASTN +0 -29486
- data/spec/dotdir/blast_2.5.0/tblastn/TBLASTN_XML_2.5.0.xml +0 -1181
- data/spec/dotdir/blast_2.5.0/tblastn/job.yaml +0 -8
- data/spec/dotdir/blast_2.5.0/tblastx/TBLASTX +0 -180859
- data/spec/dotdir/blast_2.5.0/tblastx/TBLASTX_XML_2.5.0.xml +0 -8857
- data/spec/dotdir/blast_2.5.0/tblastx/job.yaml +0 -8
- data/spec/dotdir/blast_2.6.0/blastn/BLASTN_XML_2.6.0.xml +0 -1201
- data/spec/dotdir/blast_2.6.0/blastn/job.yaml +0 -8
- data/spec/dotdir/blast_2.6.0/blastn_nohits/BLASTN_NO_HITS_XML_2.6.0.xml +0 -866
- data/spec/dotdir/blast_2.6.0/blastn_nohits/job.yaml +0 -8
- data/spec/dotdir/blast_2.6.0/blastp/BLASTP_XML_2.6.0.xml +0 -1181
- data/spec/dotdir/blast_2.6.0/blastp/job.yaml +0 -8
- data/spec/dotdir/blast_2.6.0/blastx/BLASTX_XML_2.6.0.xml +0 -1181
- data/spec/dotdir/blast_2.6.0/blastx/job.yaml +0 -8
- data/spec/dotdir/blast_2.6.0/tblastn/TBLASTN_XML_2.6.0.xml +0 -1181
- data/spec/dotdir/blast_2.6.0/tblastn/job.yaml +0 -8
- data/spec/dotdir/blast_2.6.0/tblastx/TBLASTX_XML_2.6.0.xml +0 -8857
- data/spec/dotdir/blast_2.6.0/tblastx/job.yaml +0 -8
- data/spec/dotdir/blast_2.7.1/blastn/BLASTN_XML_2.7.1.xml +0 -1201
- data/spec/dotdir/blast_2.7.1/blastn/job.yaml +0 -8
- data/spec/dotdir/blast_2.7.1/blastn_nohits/BLASTN_NO_HITS_XML_2.7.1.xml +0 -866
- data/spec/dotdir/blast_2.7.1/blastn_nohits/job.yaml +0 -8
- data/spec/dotdir/blast_2.7.1/blastp/BLASTP_XML_2.7.1.xml +0 -1181
- data/spec/dotdir/blast_2.7.1/blastp/job.yaml +0 -8
- data/spec/dotdir/blast_2.7.1/blastx/BLASTX_XML_2.7.1.xml +0 -1181
- data/spec/dotdir/blast_2.7.1/blastx/job.yaml +0 -8
- data/spec/dotdir/blast_2.7.1/tblastn/TBLASTN_XML_2.7.1.xml +0 -1181
- data/spec/dotdir/blast_2.7.1/tblastn/job.yaml +0 -8
- data/spec/dotdir/blast_2.7.1/tblastx/TBLASTX_XML_2.7.1.xml +0 -8857
- data/spec/dotdir/blast_2.7.1/tblastx/job.yaml +0 -8
- data/spec/dotdir/blast_2.8.1/blastn/BLASTN_XML_2.8.1.xml +0 -1201
- data/spec/dotdir/blast_2.8.1/blastn/job.yaml +0 -8
- data/spec/dotdir/blast_2.8.1/blastn_nohits/BLASTN_NO_HITS_XML_2.8.1.xml +0 -866
- data/spec/dotdir/blast_2.8.1/blastn_nohits/job.yaml +0 -8
- data/spec/dotdir/blast_2.8.1/blastp/BLASTP_XML_2.8.1.xml +0 -1181
- data/spec/dotdir/blast_2.8.1/blastp/job.yaml +0 -8
- data/spec/dotdir/blast_2.8.1/blastx/BLASTX_XML_2.8.1.xml +0 -1181
- data/spec/dotdir/blast_2.8.1/blastx/job.yaml +0 -8
- data/spec/dotdir/blast_2.8.1/tblastn/TBLASTN_XML_2.8.1.xml +0 -1181
- data/spec/dotdir/blast_2.8.1/tblastn/job.yaml +0 -8
- data/spec/dotdir/blast_2.8.1/tblastx/TBLASTX_XML_2.8.1.xml +0 -8857
- data/spec/dotdir/blast_2.8.1/tblastx/job.yaml +0 -8
- data/spec/dotdir/blast_2.9.0/blastn/BLASTN_XML_2.9.0.xml +0 -1201
- data/spec/dotdir/blast_2.9.0/blastn/job.yaml +0 -8
- data/spec/dotdir/blast_2.9.0/blastn_nohits/BLASTN_NO_HITS_XML_2.9.0.xml +0 -866
- data/spec/dotdir/blast_2.9.0/blastn_nohits/job.yaml +0 -8
- data/spec/dotdir/blast_2.9.0/blastp/BLASTP_XML_2.9.0.xml +0 -1181
- data/spec/dotdir/blast_2.9.0/blastp/job.yaml +0 -8
- data/spec/dotdir/blast_2.9.0/blastx/BLASTX_XML_2.9.0.xml +0 -1181
- data/spec/dotdir/blast_2.9.0/blastx/job.yaml +0 -8
- data/spec/dotdir/blast_2.9.0/tblastn/TBLASTN_XML_2.9.0.xml +0 -1181
- data/spec/dotdir/blast_2.9.0/tblastn/job.yaml +0 -8
- data/spec/dotdir/blast_2.9.0/tblastx/TBLASTX_XML_2.9.0.xml +0 -8857
- data/spec/dotdir/blast_2.9.0/tblastx/job.yaml +0 -8
- data/spec/dotdir/diamond_0.9.24/blastp/DIAMOND_BLASTP_0.9.24.xml +0 -1040
- data/spec/dotdir/diamond_0.9.24/blastp/job.yaml +0 -8
- data/spec/dotdir/diamond_0.9.24/blastx/DIAMOND_BLASTX_0.9.24.xml +0 -1040
- data/spec/dotdir/diamond_0.9.24/blastx/job.yaml +0 -8
- data/spec/dotdir/diamond_0.9.24/blastx_nohits/DIAMOND_BLASTX_NOHITS_0.9.24.xml +0 -41
- data/spec/dotdir/diamond_0.9.24/blastx_nohits/job.yaml +0 -8
- data/spec/download_helper.rb +0 -35
- data/spec/empty_config.yml +0 -0
- data/spec/makeblastdb_spec.rb +0 -121
- data/spec/routes_spec.rb +0 -93
- data/spec/sample.conf +0 -2
- data/spec/sequence_spec.rb +0 -99
- data/spec/sequences/MH011443_1_gi_1486783306_gb_MH011443_1.txt +0 -6
- data/spec/sequences/MH011443_1_gi_1486783307_gb_AYF55702_1.txt +0 -6
- data/spec/sequences/MH011443_1_gi_1528997474_gb_MH447967_1.txt +0 -30
- data/spec/sequences/MH011443_1_sp_P04637_P53_HUMAN.txt +0 -6
- data/spec/sequences/Nucleotide_TP53_COX41.fasta +0 -15
- data/spec/sequences/Protein_TP53_COX41.fasta +0 -12
- data/spec/sequences/Query_1_SI2_2_0_06267.txt +0 -6
- data/spec/sequences/alignment-2_hits.txt +0 -12
- data/spec/sequences/alignment-35_hits_diamond_blastp.txt +0 -210
- data/spec/sequences/alignment-35_hits_diamond_blastx.txt +0 -210
- data/spec/sequences/alignment-3_hits.txt +0 -18
- data/spec/sequences/alignment-40_hits_blastn.txt +0 -246
- data/spec/sequences/alignment-40_hits_blastp.txt +0 -240
- data/spec/sequences/alignment-40_hits_blastp_2.2.30.txt +0 -240
- data/spec/sequences/alignment-40_hits_blastx.txt +0 -240
- data/spec/sequences/alignment-40_hits_tblastn.txt +0 -240
- data/spec/sequences/alignment-40_hits_tblastn_2.2.30.txt +0 -240
- data/spec/sequences/alignment-40_hits_tblastx.txt +0 -2664
- data/spec/sequences/alignment-4_hits.txt +0 -24
- data/spec/sequences/alignment-4_hits_blastn.txt +0 -24
- data/spec/sequences/alignment-4_hits_blastp.txt +0 -24
- data/spec/sequences/alignment-4_hits_blastp_2.2.30.txt +0 -24
- data/spec/sequences/alignment-4_hits_blastx.txt +0 -24
- data/spec/sequences/alignment-4_hits_diamond_blastp.txt +0 -24
- data/spec/sequences/alignment-4_hits_diamond_blastx.txt +0 -24
- data/spec/sequences/alignment-4_hits_tblastn.txt +0 -24
- data/spec/sequences/alignment-4_hits_tblastn_2.2.30.txt +0 -24
- data/spec/sequences/alignment-4_hits_tblastx.txt +0 -318
- data/spec/sequences/nucleotide_query.fa +0 -21
- data/spec/sequences/problematic_query.fa +0 -5
- data/spec/sequences/protein_query.fa +0 -9
- data/spec/sequences/sample_query_fire_ant_obps.fa +0 -44
- data/spec/sequences/sequenceserver-2_hits.fa +0 -10
- data/spec/sequences/sequenceserver-SI2.2.0_06267.fa +0 -5
- data/spec/sequences/sp_P04637_P53_HUMAN_gi_1099170394_ref_XP_018868681_1.txt +0 -6
- data/spec/sequences/sp_P04637_P53_HUMAN_gi_120407068_ref_NP_000537_3.txt +0 -6
- data/spec/sequences/sp_P04637_P53_HUMAN_gi_1484127324_gb_MG595988_1.txt +0 -6
- data/spec/sequences/sp_P04637_P53_HUMAN_gi_395440626_gb_JQ694049_1.txt +0 -6
- data/spec/sequences/sp_P04637_P53_HUMAN_sp_P04637_P53_HUMAN.txt +0 -6
- data/spec/sequenceserver_spec.rb +0 -90
- data/spec/spec_helper.rb +0 -63
@@ -1,176 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
# Test BLAST module.
|
4
|
-
module SequenceServer
|
5
|
-
|
6
|
-
with_hits = Job.fetch('diamond_0.9.24/blastx')
|
7
|
-
no_hits = Job.fetch('diamond_0.9.24/blastx_nohits')
|
8
|
-
|
9
|
-
init
|
10
|
-
|
11
|
-
describe 'Report' do
|
12
|
-
hits_report = BLAST::Report.new(with_hits)
|
13
|
-
no_hits_report = BLAST::Report.new(no_hits)
|
14
|
-
|
15
|
-
it 'will return an Array of queries' do
|
16
|
-
hits_report.queries.should be_a Array
|
17
|
-
no_hits_report.queries.should be_a Array
|
18
|
-
end
|
19
|
-
|
20
|
-
it 'will return a Hash of stats' do
|
21
|
-
hits_report.stats.should be_a Hash
|
22
|
-
no_hits_report.stats.should be_a Hash
|
23
|
-
end
|
24
|
-
|
25
|
-
it 'contains all the necessary stats' do
|
26
|
-
hits_report.stats.length.should eql(7)
|
27
|
-
no_hits_report.stats.length.should eql(7)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
describe 'Query' do
|
32
|
-
hits_report = BLAST::Report.new(with_hits)
|
33
|
-
no_hits_report = BLAST::Report.new(no_hits)
|
34
|
-
|
35
|
-
it 'will return queries with valid length' do
|
36
|
-
hits_report.queries.first.length.should be_a Integer
|
37
|
-
hits_report.queries.first.length.should satisfy { |n| n > 0 }
|
38
|
-
no_hits_report.queries.first.length.should be_a Integer
|
39
|
-
no_hits_report.queries.first.length.should satisfy { |n| n > 0 }
|
40
|
-
end
|
41
|
-
|
42
|
-
it 'will return an Array of hits' do
|
43
|
-
hits_report.queries.first.hits.should be_a Array
|
44
|
-
no_hits_report.queries.first.hits.should be_a Array
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
describe 'Hits' do
|
49
|
-
hits_report = BLAST::Report.new(with_hits)
|
50
|
-
no_hits_report = BLAST::Report.new(no_hits)
|
51
|
-
|
52
|
-
it 'will have non zero length' do
|
53
|
-
hits_report.queries.last.hits.first.length.should satisfy { |n| n > 0 }
|
54
|
-
end
|
55
|
-
|
56
|
-
it 'will return an Array of HSPs' do
|
57
|
-
hits_report.queries.first.hits.first.hsps.should be_a Array
|
58
|
-
end
|
59
|
-
|
60
|
-
it 'will return an Array with atleast one HSP' do
|
61
|
-
hits_report.queries.first.hits.first.hsps.length.should be >= 1
|
62
|
-
end
|
63
|
-
|
64
|
-
it 'will contain no element if no hits were obtained' do
|
65
|
-
no_hits_report.queries.first.hits.length.should eql(0)
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
# Test general features of HSPs. Algorithm specific customizations are
|
70
|
-
# tested separetly.
|
71
|
-
describe 'HSPs' do
|
72
|
-
hits_report = BLAST::Report.new(with_hits)
|
73
|
-
|
74
|
-
# Currently using all 17 HSP parameters in BLAST Report + 1 to refer to the
|
75
|
-
# hit object it belongs to.
|
76
|
-
it 'have all the necessary values' do
|
77
|
-
hits_report.queries.last.hits.first.hsps.last.count.should eql(19)
|
78
|
-
end
|
79
|
-
|
80
|
-
# Test Random HSPs to ensure that all the values from HSP struct are valid.
|
81
|
-
it 'have correct alignment values' do
|
82
|
-
hits_report.queries.last.hits.first.hsps.last.bit_score.should be_a Float
|
83
|
-
hits_report.queries.last.hits.first.hsps.last.score.should be_a Integer
|
84
|
-
|
85
|
-
hits_report.queries.first.hits.first.hsps.first.evalue.should be_a Float
|
86
|
-
hits_report.queries.first.hits.first.hsps.first.evalue
|
87
|
-
.should_not satisfy { |n| n < 0 }
|
88
|
-
|
89
|
-
hits_report.queries.first.hits.last.hsps.first.qstart.should be_a Integer
|
90
|
-
hits_report.queries.first.hits.last.hsps.first.qstart
|
91
|
-
.should_not satisfy { |n| n < 0 }
|
92
|
-
|
93
|
-
hits_report.queries.first.hits.last.hsps.first.qend.should be_a Integer
|
94
|
-
hits_report.queries.first.hits.last.hsps.first.qend
|
95
|
-
.should_not satisfy { |n| n < 0 }
|
96
|
-
|
97
|
-
hits_report.queries.last.hits.last.hsps.last.sstart.should be_a Integer
|
98
|
-
hits_report.queries.last.hits.last.hsps.last.sstart
|
99
|
-
.should_not satisfy { |n| n < 0 }
|
100
|
-
|
101
|
-
hits_report.queries.first.hits.first.hsps.last.send.should be_a Integer
|
102
|
-
hits_report.queries.first.hits.first.hsps.last.send
|
103
|
-
.should_not satisfy { |n| n < 0 }
|
104
|
-
|
105
|
-
hits_report.queries.first.hits.first.hsps.last.qframe.should be_a Integer
|
106
|
-
hits_report.queries.first.hits.first.hsps.last.sframe.should be_a Integer
|
107
|
-
|
108
|
-
hits_report.queries.first.hits.first.hsps.last.identity.should be_a Integer
|
109
|
-
hits_report.queries.first.hits.first.hsps.last.identity
|
110
|
-
.should_not satisfy { |n| n < 0 }
|
111
|
-
|
112
|
-
hits_report.queries.first.hits.first.hsps.last.gaps.should be_a Integer
|
113
|
-
hits_report.queries.first.hits.first.hsps.last.gaps
|
114
|
-
.should_not satisfy { |n| n < 0 }
|
115
|
-
|
116
|
-
hits_report.queries.first.hits.first.hsps.last.positives
|
117
|
-
.should be_a Integer
|
118
|
-
hits_report.queries.first.hits.first.hsps.last.positives
|
119
|
-
.should_not satisfy { |n| n < 0 }
|
120
|
-
|
121
|
-
hits_report.queries.first.hits.first.hsps.last.length.should be_a Integer
|
122
|
-
hits_report.queries.first.hits.first.hsps.last.length
|
123
|
-
.should satisfy { |n| n > 0 }
|
124
|
-
|
125
|
-
hits_report.queries.last.hits.last.hsps.first.qseq.should be_a String
|
126
|
-
hits_report.queries.last.hits.last.hsps.first.sseq.should be_a String
|
127
|
-
hits_report.queries.last.hits.last.hsps.first.midline.should be_a String
|
128
|
-
end
|
129
|
-
|
130
|
-
it 'have correctly matched query, hit and midline alignments' do
|
131
|
-
hsp = hits_report.queries.last.hits.last.hsps.first
|
132
|
-
hsp.qseq.length.should eql(hsp.sseq.length)
|
133
|
-
hsp.sseq.length.should eql(hsp.midline.length)
|
134
|
-
hsp.midline.length.should eql(hsp.qseq.length)
|
135
|
-
end
|
136
|
-
end
|
137
|
-
|
138
|
-
# Individually test different DIAMOND BLASTP/BLASTX algorithms
|
139
|
-
#
|
140
|
-
|
141
|
-
describe 'diamond BLASTP' do
|
142
|
-
let 'hsp' do
|
143
|
-
report = BLAST::Report.new(Job.fetch('diamond_0.9.24/blastp'))
|
144
|
-
report.queries.first.hits.last.hsps.first
|
145
|
-
end
|
146
|
-
|
147
|
-
it 'have correct query and subject frame' do
|
148
|
-
hsp.qframe.should eql(0)
|
149
|
-
hsp.sframe.should eql(0)
|
150
|
-
end
|
151
|
-
|
152
|
-
it 'have correct qstart, qend, sstart, send values' do
|
153
|
-
hsp.qstart.should be <= hsp.qend
|
154
|
-
hsp.sstart.should be <= hsp.send
|
155
|
-
end
|
156
|
-
|
157
|
-
end
|
158
|
-
|
159
|
-
describe 'diamond BLASTX' do
|
160
|
-
let 'hsp' do
|
161
|
-
report = BLAST::Report.new(Job.fetch('diamond_0.9.24/blastx'))
|
162
|
-
report.queries.first.hits.last.hsps.first
|
163
|
-
end
|
164
|
-
|
165
|
-
it 'have correct query and subject frame' do
|
166
|
-
hsp.qframe.should_not eql(0)
|
167
|
-
hsp.sframe.should eql(0)
|
168
|
-
end
|
169
|
-
|
170
|
-
it 'have correct qstart, qend, sstart, send' do
|
171
|
-
hsp.qstart.should be <= hsp.qend
|
172
|
-
hsp.sstart.should be <= hsp.send
|
173
|
-
end
|
174
|
-
end
|
175
|
-
end
|
176
|
-
|
@@ -1,237 +0,0 @@
|
|
1
|
-
describe 'report generated from imported XML', type: :feature, js: true do
|
2
|
-
# Fasta files used for testing consist of TP53 and COX41 protein/nucleotide
|
3
|
-
# sequences for reproducibility.
|
4
|
-
it 'loads diamond BLASTP xml and tests hit alignment and sidebar Alignment download' do
|
5
|
-
access_by_uuid('diamond_0.9.24/blastp')
|
6
|
-
# Click on the first Alignment download button on the page and wait for the
|
7
|
-
# download to finish.
|
8
|
-
page.execute_script("$('.download-aln:eq(0)').click()")
|
9
|
-
wait_for_download
|
10
|
-
expect(File.basename(downloaded_file)).to eq('sp_P04637_P53_HUMAN_sp_P04637_P53_HUMAN.txt')
|
11
|
-
expect(File.read(downloaded_file)).to eq(File.read('spec/sequences/sp_P04637_P53_HUMAN_sp_P04637_P53_HUMAN.txt'))
|
12
|
-
|
13
|
-
clear_downloads
|
14
|
-
|
15
|
-
# Click on the Alignment of all hits download and compare the downloaded
|
16
|
-
# content
|
17
|
-
|
18
|
-
page.click_link('Alignment of all hits')
|
19
|
-
wait_for_download
|
20
|
-
|
21
|
-
expect(File.basename(downloaded_file)).to eq('alignment-35_hits.txt')
|
22
|
-
expect(File.read(downloaded_file)).to eq(File.read('spec/sequences/alignment-35_hits_diamond_blastp.txt'))
|
23
|
-
clear_downloads
|
24
|
-
|
25
|
-
# Check the cheboxes of indicted hits and click on the download of Alignment
|
26
|
-
# of selected hits and compare the downloaded content
|
27
|
-
|
28
|
-
page.check('Query_1_hit_1_checkbox')
|
29
|
-
page.check('Query_1_hit_2_checkbox')
|
30
|
-
page.check('Query_2_hit_1_checkbox')
|
31
|
-
page.check('Query_2_hit_2_checkbox')
|
32
|
-
page.click_link('Alignment of 4 selected hit(s)')
|
33
|
-
wait_for_download
|
34
|
-
|
35
|
-
expect(File.basename(downloaded_file)).to eq('alignment-4_hits.txt')
|
36
|
-
expect(File.read(downloaded_file)).to eq(File.read('spec/sequences/alignment-4_hits_diamond_blastp.txt'))
|
37
|
-
page.should have_content('BLASTP')
|
38
|
-
end
|
39
|
-
|
40
|
-
it 'loads diamond BLASTP XML and tests alignment overview and hit PNG/SVG download' do
|
41
|
-
access_by_uuid('diamond_0.9.24/blastp')
|
42
|
-
|
43
|
-
# Click on the PNG/SVG download button of the alignment overview and compare
|
44
|
-
# the downloaded content.
|
45
|
-
|
46
|
-
page.execute_script("$('.export-to-png:eq(0)').click()")
|
47
|
-
wait_for_download
|
48
|
-
expect(File.basename(downloaded_file)).to eq('Alignment-Overview-sp_P04637_P53_HUMAN.png')
|
49
|
-
|
50
|
-
clear_downloads
|
51
|
-
|
52
|
-
page.execute_script("$('.export-to-svg:eq(0)').click()")
|
53
|
-
wait_for_download
|
54
|
-
expect(File.basename(downloaded_file)).to eq('Alignment-Overview-sp_P04637_P53_HUMAN.svg')
|
55
|
-
|
56
|
-
clear_downloads
|
57
|
-
|
58
|
-
# Click on the PNG/SVG download button of the first hit available and
|
59
|
-
# compare the downloaded content.
|
60
|
-
page.execute_script("$('.export-to-png:eq(1)').click()")
|
61
|
-
wait_for_download
|
62
|
-
expect(File.basename(downloaded_file)).to eq('Kablammo-sp_P04637_P53_HUMAN-sp_P04637_P53_HUMAN.png')
|
63
|
-
|
64
|
-
clear_downloads
|
65
|
-
|
66
|
-
page.execute_script("$('.export-to-svg:eq(1)').click()")
|
67
|
-
wait_for_download
|
68
|
-
expect(File.basename(downloaded_file)).to eq('Kablammo-sp_P04637_P53_HUMAN-sp_P04637_P53_HUMAN.svg')
|
69
|
-
page.should have_content('BLASTP')
|
70
|
-
end
|
71
|
-
|
72
|
-
it 'loads diamond BLASTP XML and tests Circos download' do
|
73
|
-
access_by_uuid('diamond_0.9.24/blastp')
|
74
|
-
|
75
|
-
# Click on the Circos expanding button, wait for animation, click on the
|
76
|
-
# download of PNG/SVG file and test that it initiated a file download in a
|
77
|
-
# right format.
|
78
|
-
|
79
|
-
page.should have_content('Queries and their top hits: chord diagram')
|
80
|
-
page.execute_script("$('.circos > .grapher-header > h4').click()")
|
81
|
-
sleep 1
|
82
|
-
|
83
|
-
page.execute_script("$('.export-to-png:eq(0)').click()")
|
84
|
-
wait_for_download
|
85
|
-
expect(File.basename(downloaded_file)).to eq('Circos-visualisation.png')
|
86
|
-
|
87
|
-
clear_downloads
|
88
|
-
|
89
|
-
page.execute_script("$('.export-to-svg:eq(0)').click()")
|
90
|
-
wait_for_download
|
91
|
-
expect(File.basename(downloaded_file)).to eq('Circos-visualisation.svg')
|
92
|
-
end
|
93
|
-
|
94
|
-
it 'loads BLASTP XML and tests Length distribution download' do
|
95
|
-
access_by_uuid('diamond_0.9.24/blastp')
|
96
|
-
|
97
|
-
# Click on the Length distribution expanding button, wait for animation,
|
98
|
-
# click on the download of PNG/SVG file and test that it initiated a file
|
99
|
-
# download in a right format.
|
100
|
-
|
101
|
-
page.should have_content('Length distribution of hits')
|
102
|
-
page.execute_script("$('.length-distribution > .grapher-header > h4').click()")
|
103
|
-
sleep 1
|
104
|
-
|
105
|
-
page.execute_script("$('.export-to-png:eq(1)').click()")
|
106
|
-
wait_for_download
|
107
|
-
expect(File.basename(downloaded_file)).to eq('length-distribution-sp_P04637_P53_HUMAN.png')
|
108
|
-
|
109
|
-
clear_downloads
|
110
|
-
|
111
|
-
page.execute_script("$('.export-to-svg:eq(1)').click()")
|
112
|
-
wait_for_download
|
113
|
-
expect(File.basename(downloaded_file)).to eq('length-distribution-sp_P04637_P53_HUMAN.svg')
|
114
|
-
end
|
115
|
-
|
116
|
-
# BLASTX test scenarios
|
117
|
-
|
118
|
-
it 'loads diamond BLASTX XML and tests hit alignment and sidebar Alignment download' do
|
119
|
-
access_by_uuid('diamond_0.9.24/blastx')
|
120
|
-
|
121
|
-
# Click on the first Alignment download button on the page and wait for the
|
122
|
-
# download to finish.
|
123
|
-
page.execute_script("$('.download-aln:eq(0)').click()")
|
124
|
-
wait_for_download
|
125
|
-
|
126
|
-
expect(File.basename(downloaded_file)).to eq('MH011443_1_sp_P04637_P53_HUMAN.txt')
|
127
|
-
expect(File.read(downloaded_file)).to eq(File.read('spec/sequences/MH011443_1_sp_P04637_P53_HUMAN.txt'))
|
128
|
-
|
129
|
-
clear_downloads
|
130
|
-
|
131
|
-
# Click on the Alignment of all hits download and compare the downloaded
|
132
|
-
# content
|
133
|
-
|
134
|
-
page.click_link('Alignment of all hits')
|
135
|
-
wait_for_download
|
136
|
-
|
137
|
-
expect(File.basename(downloaded_file)).to eq('alignment-35_hits.txt')
|
138
|
-
expect(File.read(downloaded_file)).to eq(File.read('spec/sequences/alignment-35_hits_diamond_blastx.txt'))
|
139
|
-
clear_downloads
|
140
|
-
|
141
|
-
# Select four hit checkboxes and click on the Alignment of selected hits.
|
142
|
-
# Compare the downloaded content.
|
143
|
-
page.check('Query_1_hit_3_checkbox')
|
144
|
-
page.check('Query_1_hit_4_checkbox')
|
145
|
-
page.check('Query_2_hit_3_checkbox')
|
146
|
-
page.check('Query_2_hit_4_checkbox')
|
147
|
-
page.click_link('Alignment of 4 selected hit(s)')
|
148
|
-
wait_for_download
|
149
|
-
|
150
|
-
expect(File.basename(downloaded_file)).to eq('alignment-4_hits.txt')
|
151
|
-
expect(File.read(downloaded_file)).to eq(File.read('spec/sequences/alignment-4_hits_diamond_blastx.txt'))
|
152
|
-
|
153
|
-
page.should have_content('BLASTX')
|
154
|
-
end
|
155
|
-
|
156
|
-
it 'loads diamond BLASTX XML and tests alignment overview and hit PNG/SVG download' do
|
157
|
-
access_by_uuid('diamond_0.9.24/blastx')
|
158
|
-
|
159
|
-
# Click on the PNG/SVG download button of the alignment overview and compare
|
160
|
-
# the downloaded content.
|
161
|
-
page.execute_script("$('.export-to-png:eq(0)').click()")
|
162
|
-
wait_for_download
|
163
|
-
expect(File.basename(downloaded_file)).to eq('Alignment-Overview-MH011443_1.png')
|
164
|
-
|
165
|
-
clear_downloads
|
166
|
-
|
167
|
-
page.execute_script("$('.export-to-svg:eq(0)').click()")
|
168
|
-
wait_for_download
|
169
|
-
expect(File.basename(downloaded_file)).to eq('Alignment-Overview-MH011443_1.svg')
|
170
|
-
|
171
|
-
clear_downloads
|
172
|
-
# Click on the PNG/SVG download button of the first hit available and
|
173
|
-
# compare the downloaded content.
|
174
|
-
page.execute_script("$('.export-to-png:eq(1)').click()")
|
175
|
-
|
176
|
-
wait_for_download
|
177
|
-
expect(File.basename(downloaded_file)).to eq('Kablammo-MH011443_1-sp_P04637_P53_HUMAN.png')
|
178
|
-
|
179
|
-
clear_downloads
|
180
|
-
|
181
|
-
page.execute_script("$('.export-to-svg:eq(1)').click()")
|
182
|
-
wait_for_download
|
183
|
-
expect(File.basename(downloaded_file)).to eq('Kablammo-MH011443_1-sp_P04637_P53_HUMAN.svg')
|
184
|
-
page.should have_content('BLASTX')
|
185
|
-
end
|
186
|
-
|
187
|
-
it 'loads diamond BLASTX XML and tests Circos download' do
|
188
|
-
access_by_uuid('diamond_0.9.24/blastx')
|
189
|
-
# Click on the Circos expanding button, wait for animation, click on the
|
190
|
-
# download of PNG/SVG file and test that it initiated a file download in a
|
191
|
-
# right format.
|
192
|
-
|
193
|
-
page.should have_content('Queries and their top hits: chord diagram')
|
194
|
-
page.execute_script("$('.circos > .grapher-header > h4').click()")
|
195
|
-
sleep 1
|
196
|
-
|
197
|
-
page.execute_script("$('.export-to-png:eq(0)').click()")
|
198
|
-
wait_for_download
|
199
|
-
expect(File.basename(downloaded_file)).to eq('Circos-visualisation.png')
|
200
|
-
|
201
|
-
clear_downloads
|
202
|
-
|
203
|
-
page.execute_script("$('.export-to-svg:eq(0)').click()")
|
204
|
-
wait_for_download
|
205
|
-
expect(File.basename(downloaded_file)).to eq('Circos-visualisation.svg')
|
206
|
-
end
|
207
|
-
|
208
|
-
it 'loads diamond BLASTX XML and tests Length distribution download' do
|
209
|
-
access_by_uuid('diamond_0.9.24/blastx')
|
210
|
-
|
211
|
-
# Click on the Length distribution expanding button, wait for animation,
|
212
|
-
# click on the download of PNG/SVG file and test that it initiated a file
|
213
|
-
# download in a right format.
|
214
|
-
|
215
|
-
page.should have_content('Length distribution of hits')
|
216
|
-
page.execute_script("$('.length-distribution > .grapher-header > h4').click()")
|
217
|
-
sleep 1
|
218
|
-
|
219
|
-
page.execute_script("$('.export-to-png:eq(1)').click()")
|
220
|
-
wait_for_download
|
221
|
-
expect(File.basename(downloaded_file)).to eq('length-distribution-MH011443_1.png')
|
222
|
-
|
223
|
-
clear_downloads
|
224
|
-
|
225
|
-
page.execute_script("$('.export-to-svg:eq(1)').click()")
|
226
|
-
wait_for_download
|
227
|
-
expect(File.basename(downloaded_file)).to eq('length-distribution-MH011443_1.svg')
|
228
|
-
end
|
229
|
-
|
230
|
-
## Helpers ##
|
231
|
-
|
232
|
-
def access_by_uuid(id)
|
233
|
-
url = url_encode(id)
|
234
|
-
visit "/#{url}"
|
235
|
-
page.should have_content('Query')
|
236
|
-
end
|
237
|
-
end
|
data/spec/capybara_spec.rb
DELETED
@@ -1,345 +0,0 @@
|
|
1
|
-
describe 'a browser', type: :feature, js: true do
|
2
|
-
it 'sorts databases alphabetically' do
|
3
|
-
visit '/'
|
4
|
-
fill_in('sequence', with: nucleotide_query)
|
5
|
-
|
6
|
-
prot = page.evaluate_script("$('.protein .database').text().trim()")
|
7
|
-
prot.should eq("2018-04 Swiss-Prot insecta Sinvicta 2-2-3 prot subset")
|
8
|
-
|
9
|
-
nucl = page.evaluate_script("$('.nucleotide .database').text().trim()")
|
10
|
-
nucl.should eq("Sinvicta 2-2-3 cdna subset Solenopsis invicta gnG subset")
|
11
|
-
end
|
12
|
-
|
13
|
-
it 'properly controls blast button' do
|
14
|
-
visit '/'
|
15
|
-
|
16
|
-
fill_in('sequence', with: nucleotide_query)
|
17
|
-
page.evaluate_script("$('#method').is(':disabled')").should eq(true)
|
18
|
-
|
19
|
-
check(nucleotide_databases.first)
|
20
|
-
page.evaluate_script("$('#method').is(':disabled')").should eq(false)
|
21
|
-
end
|
22
|
-
|
23
|
-
it 'properly controls interaction with database listing' do
|
24
|
-
visit '/'
|
25
|
-
fill_in('sequence', with: nucleotide_query)
|
26
|
-
check(nucleotide_databases.first)
|
27
|
-
page.evaluate_script("$('.protein .database').first().hasClass('disabled')")
|
28
|
-
.should eq(true)
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'shows a dropdown menu when other blast methods are available' do
|
32
|
-
visit '/'
|
33
|
-
fill_in('sequence', with: nucleotide_query)
|
34
|
-
check(nucleotide_databases.first)
|
35
|
-
page.has_css?('button.dropdown-toggle').should eq(true)
|
36
|
-
end
|
37
|
-
|
38
|
-
it 'can run a simple blastn search' do
|
39
|
-
perform_search query: nucleotide_query,
|
40
|
-
databases: nucleotide_databases
|
41
|
-
page.should have_content('BLASTN')
|
42
|
-
end
|
43
|
-
|
44
|
-
it 'can run a simple blastp search' do
|
45
|
-
perform_search query: protein_query,
|
46
|
-
databases: protein_databases
|
47
|
-
page.should have_content('BLASTP')
|
48
|
-
end
|
49
|
-
|
50
|
-
it 'can run a simple blastx search' do
|
51
|
-
perform_search query: nucleotide_query,
|
52
|
-
databases: protein_databases
|
53
|
-
page.should have_content('BLASTX')
|
54
|
-
end
|
55
|
-
|
56
|
-
it 'can run a simple tblastx search' do
|
57
|
-
perform_search query: nucleotide_query,
|
58
|
-
databases: nucleotide_databases,
|
59
|
-
method: 'tblastx'
|
60
|
-
page.should have_content('TBLASTX')
|
61
|
-
end
|
62
|
-
|
63
|
-
it 'can run a simple tblastn search' do
|
64
|
-
perform_search query: protein_query,
|
65
|
-
databases: nucleotide_databases
|
66
|
-
page.should have_content('TBLASTN')
|
67
|
-
end
|
68
|
-
|
69
|
-
### Test aspects of the generated report.
|
70
|
-
|
71
|
-
it 'can download FASTA of each hit' do
|
72
|
-
# Do a BLASTP search. protein_query refers to the first two sequence in
|
73
|
-
# protein_databases[0], so the top hits are the query sequences themselves.
|
74
|
-
perform_search(query: protein_query,
|
75
|
-
databases: protein_databases.values_at(0))
|
76
|
-
|
77
|
-
# Click on the first FASTA download button on the page and wait for the
|
78
|
-
# download to finish.
|
79
|
-
page.execute_script("$('.download-fa:eq(0)').click()")
|
80
|
-
wait_for_download
|
81
|
-
|
82
|
-
# Test name and content of the downloaded file.
|
83
|
-
expect(File.basename(downloaded_file))
|
84
|
-
.to eq('sequenceserver-SI2.2.0_06267.fa')
|
85
|
-
expect(File.read(downloaded_file))
|
86
|
-
.to eq(File.read("#{__dir__}/sequences/sequenceserver-SI2.2.0_06267.fa"))
|
87
|
-
end
|
88
|
-
|
89
|
-
it 'can download FASTA of selected hits' do
|
90
|
-
# Do a BLASTP search. protein_query refers to the first two sequence in
|
91
|
-
# protein_databases[0], so the top hits are the query sequences themselves.
|
92
|
-
perform_search(query: protein_query,
|
93
|
-
databases: protein_databases.values_at(0))
|
94
|
-
|
95
|
-
# Select first hit for each query and click 'FASTA of 2 selected hits'.
|
96
|
-
page.check('Query_1_hit_1_checkbox')
|
97
|
-
page.check('Query_2_hit_1_checkbox')
|
98
|
-
page.click_link('FASTA of 2 selected hit(s)')
|
99
|
-
wait_for_download
|
100
|
-
|
101
|
-
expect(File.basename(downloaded_file)).to eq('sequenceserver-2_hits.fa')
|
102
|
-
expect(File.read(downloaded_file)).to eq(File.read('spec/sequences/sequenceserver-2_hits.fa'))
|
103
|
-
end
|
104
|
-
|
105
|
-
it 'can download FASTA of all hits' do
|
106
|
-
# Do a BLASTP search. protein_query refers to the first two sequence in
|
107
|
-
# protein_databases[0], so the top hits are the query sequences themselves.
|
108
|
-
perform_search(query: protein_query,
|
109
|
-
databases: protein_databases.values_at(0))
|
110
|
-
|
111
|
-
# Click 'FASTA of all hits'.
|
112
|
-
page.click_link('FASTA of all hits')
|
113
|
-
wait_for_download
|
114
|
-
|
115
|
-
expect(File.basename(downloaded_file)).to eq('sequenceserver-2_hits.fa')
|
116
|
-
expect(File.read(downloaded_file)).to eq(File.read('spec/sequences/sequenceserver-2_hits.fa'))
|
117
|
-
end
|
118
|
-
|
119
|
-
it 'can download alignment for each hit' do
|
120
|
-
# Do a BLASTP search. protein_query refers to the first two sequence in
|
121
|
-
# protein_databases[0], so the top hits are the query sequences themselves.
|
122
|
-
perform_search(query: protein_query,
|
123
|
-
databases: protein_databases.values_at(0))
|
124
|
-
|
125
|
-
# Click on the first Alignment download button on the page and wait for the
|
126
|
-
# download to finish.
|
127
|
-
page.execute_script("$('.download-aln:eq(0)').click()")
|
128
|
-
wait_for_download
|
129
|
-
|
130
|
-
# Test name and content of the downloaded file.
|
131
|
-
expect(File.basename(downloaded_file)).to eq('Query_1_SI2_2_0_06267.txt')
|
132
|
-
expect(File.read(downloaded_file))
|
133
|
-
.to eq(File.read("#{__dir__}/sequences/Query_1_SI2_2_0_06267.txt"))
|
134
|
-
end
|
135
|
-
|
136
|
-
it 'can download Alignment of selected hits' do
|
137
|
-
# Do a BLASTP search. protein_query refers to the first two sequence in
|
138
|
-
# protein_databases[0], so the top hits are the query sequences themselves.
|
139
|
-
perform_search(query: protein_query,
|
140
|
-
databases: protein_databases.values_at(0))
|
141
|
-
|
142
|
-
# Select first hit for each query and click 'Alignment of 2 selected hits'.
|
143
|
-
page.check('Query_1_hit_1_checkbox')
|
144
|
-
page.check('Query_2_hit_1_checkbox')
|
145
|
-
page.click_link('Alignment of 2 selected hit(s)')
|
146
|
-
wait_for_download
|
147
|
-
|
148
|
-
expect(File.basename(downloaded_file)).to eq('alignment-2_hits.txt')
|
149
|
-
expect(File.read(downloaded_file)).to eq(File.read('spec/sequences/alignment-2_hits.txt'))
|
150
|
-
end
|
151
|
-
|
152
|
-
it 'can download Alignment of all hits' do
|
153
|
-
# Do a BLASTP search. protein_query refers to the first two sequence in
|
154
|
-
# protein_databases[0], so the top hits are the query sequences themselves.
|
155
|
-
perform_search(query: protein_query,
|
156
|
-
databases: protein_databases.values_at(0))
|
157
|
-
|
158
|
-
# Click 'Alignment of all hits'.
|
159
|
-
page.click_link('Alignment of all hits')
|
160
|
-
wait_for_download
|
161
|
-
|
162
|
-
expect(File.basename(downloaded_file)).to eq('alignment-2_hits.txt')
|
163
|
-
expect(File.read(downloaded_file)).to eq(File.read('spec/sequences/alignment-2_hits.txt'))
|
164
|
-
end
|
165
|
-
|
166
|
-
it 'can download BLAST results in XML and tabular formats' do
|
167
|
-
# Do a BLASTP search. protein_query refers to the first two sequence in
|
168
|
-
# protein_databases[0], so the top hits are the query sequences themselves.
|
169
|
-
perform_search(query: protein_query,
|
170
|
-
databases: protein_databases.values_at(0))
|
171
|
-
|
172
|
-
page.click_link('Standard tabular report')
|
173
|
-
wait_for_download
|
174
|
-
expect(File.basename(downloaded_file)).to eq('sequenceserver-std_tsv_report.tsv')
|
175
|
-
clear_downloads
|
176
|
-
|
177
|
-
page.click_link('Full tabular report')
|
178
|
-
wait_for_download
|
179
|
-
expect(File.basename(downloaded_file)).to eq('sequenceserver-full_tsv_report.tsv')
|
180
|
-
clear_downloads
|
181
|
-
|
182
|
-
page.click_link('Full XML report')
|
183
|
-
wait_for_download
|
184
|
-
expect(File.basename(downloaded_file)).to eq('sequenceserver-xml_report.xml')
|
185
|
-
clear_downloads
|
186
|
-
end
|
187
|
-
|
188
|
-
it 'can show hit sequences in a modal' do
|
189
|
-
# Do a BLASTP search. protein_query refers to the first two sequence in
|
190
|
-
# protein_databases[0], so the top hits are the query sequences themselves.
|
191
|
-
perform_search(query: protein_query,
|
192
|
-
databases: protein_databases.values_at(0))
|
193
|
-
|
194
|
-
# Click on the first sequence viewer link in the report.
|
195
|
-
page.execute_script("$('.view-sequence:eq(0)').click()")
|
196
|
-
|
197
|
-
within('.sequence-viewer') do
|
198
|
-
page.should have_content('SI2.2.0_06267')
|
199
|
-
page.should have_content(<<~SEQ.chomp)
|
200
|
-
MNTLWLSLWDYPGKLPLNFMVFDTKDDLQAAYWRDPYSIP
|
201
|
-
LAVIFEDPQPISQRLIYEIRTNPSYTLPPPPTKLYSAPIS
|
202
|
-
CRKNKTGHWMDDILSIKTGESCPVNNYLHSGFLALQMITD
|
203
|
-
ITKIKLENSDVTIPDIKLIMFPKEPYTADWMLAFRVVIPL
|
204
|
-
YMVLALSQFITYLLILIVGEKENKIKEGMKMMGLNDSVF
|
205
|
-
SEQ
|
206
|
-
end
|
207
|
-
|
208
|
-
# Dismiss the first modal.
|
209
|
-
page.execute_script("$('.sequence-viewer').modal('hide')")
|
210
|
-
|
211
|
-
# Click on the second sequence viewer link in the report.
|
212
|
-
page.execute_script("$('.view-sequence:eq(1)').click()")
|
213
|
-
|
214
|
-
within('.sequence-viewer') do
|
215
|
-
page.should have_content('SI2.2.0_13722')
|
216
|
-
page.should have_content(<<~SEQ.chomp)
|
217
|
-
MSANRLNVLVTLMLAVALLVTESGNAQVDGYLQFNPKRSA
|
218
|
-
VSSPQKYCGKKLSNALQIICDGVYNSMFKKSGQDFPPQNK
|
219
|
-
RHIAHRINGNEEESFTTLKSNFLNWCVEVYHRHYRFVFVS
|
220
|
-
EMEMADYPLAYDISPYLPPFLSRARARGMLDGRFAGRRYR
|
221
|
-
RESRGIHEECCINGCTINELTSYCGP
|
222
|
-
SEQ
|
223
|
-
end
|
224
|
-
end
|
225
|
-
|
226
|
-
it 'disables sequence viewer links if hits are longer than 10kb' do
|
227
|
-
# BLASTN transcripts against genome. nucleotide_query refers to two fire
|
228
|
-
# ant transcripts and nucleotide_databases[0] is subset of the fire ant
|
229
|
-
# genome (few longest scaffolds). We expect sequence viewer links to be
|
230
|
-
# disabled for all hits of this search.
|
231
|
-
perform_search(query: nucleotide_query,
|
232
|
-
databases: nucleotide_databases.values_at(0))
|
233
|
-
|
234
|
-
# Check that the sequence viewer links are disabled.
|
235
|
-
page.evaluate_script("$('.view-sequence').is(':disabled')").should eq(true)
|
236
|
-
end
|
237
|
-
|
238
|
-
it 'can download visualisations in svg and png format' do
|
239
|
-
# Do a BLASTP search. protein_query refers to the first two sequence in
|
240
|
-
# protein_databases[0], so the top hits are the query sequences themselves.
|
241
|
-
perform_search(query: protein_query,
|
242
|
-
databases: protein_databases.values_at(0))
|
243
|
-
|
244
|
-
## Check that there is a circos vis and unfold it.
|
245
|
-
page.should have_content('Queries and their top hits: chord diagram')
|
246
|
-
page.execute_script("$('.circos > .grapher-header > h4').click()")
|
247
|
-
sleep 1
|
248
|
-
|
249
|
-
page.execute_script("$('.export-to-svg:eq(0)').click()")
|
250
|
-
wait_for_download
|
251
|
-
expect(File.basename(downloaded_file)).to eq('Circos-visualisation.svg')
|
252
|
-
clear_downloads
|
253
|
-
|
254
|
-
page.execute_script("$('.export-to-png:eq(0)').click()")
|
255
|
-
wait_for_download
|
256
|
-
expect(File.basename(downloaded_file)).to eq('Circos-visualisation.png')
|
257
|
-
clear_downloads
|
258
|
-
|
259
|
-
## Check that there is a graphical overview of hits.
|
260
|
-
page.should have_content('Graphical overview of hits')
|
261
|
-
|
262
|
-
page.execute_script("$('.export-to-svg:eq(1)').click()")
|
263
|
-
wait_for_download
|
264
|
-
expect(File.basename(downloaded_file)).to eq('Alignment-Overview-Query_1.svg')
|
265
|
-
clear_downloads
|
266
|
-
|
267
|
-
page.execute_script("$('.export-to-png:eq(1)').click()")
|
268
|
-
wait_for_download
|
269
|
-
expect(File.basename(downloaded_file)).to eq('Alignment-Overview-Query_1.png')
|
270
|
-
clear_downloads
|
271
|
-
|
272
|
-
## Check that there is a length distribution of hits.
|
273
|
-
page.should have_content('Length distribution of hits')
|
274
|
-
page.execute_script("$('.length-distribution > .grapher-header > h4').click()")
|
275
|
-
sleep 1
|
276
|
-
|
277
|
-
page.execute_script("$('.export-to-svg:eq(2)').click()")
|
278
|
-
wait_for_download
|
279
|
-
expect(File.basename(downloaded_file)).to eq('length-distribution-Query_1.svg')
|
280
|
-
clear_downloads
|
281
|
-
|
282
|
-
page.execute_script("$('.export-to-png:eq(2)').click()")
|
283
|
-
wait_for_download
|
284
|
-
expect(File.basename(downloaded_file)).to eq('length-distribution-Query_1.png')
|
285
|
-
clear_downloads
|
286
|
-
|
287
|
-
## Check that there is a kablammo vis of query vs hit.
|
288
|
-
page.should have_content('Graphical overview of aligning region(s)')
|
289
|
-
|
290
|
-
page.execute_script("$('.export-to-svg:eq(3)').click()")
|
291
|
-
wait_for_download
|
292
|
-
expect(File.basename(downloaded_file)).to eq('Kablammo-Query_1-SI2_2_0_06267.svg')
|
293
|
-
clear_downloads
|
294
|
-
|
295
|
-
page.execute_script("$('.export-to-png:eq(3)').click()")
|
296
|
-
wait_for_download
|
297
|
-
expect(File.basename(downloaded_file)).to eq('Kablammo-Query_1-SI2_2_0_06267.png')
|
298
|
-
clear_downloads
|
299
|
-
end
|
300
|
-
|
301
|
-
## Helpers ##
|
302
|
-
|
303
|
-
def perform_search(query:, databases:, method: nil)
|
304
|
-
# Load search form.
|
305
|
-
visit '/'
|
306
|
-
|
307
|
-
# Fill in query, select databases, submit form.
|
308
|
-
fill_in('sequence', with: query)
|
309
|
-
databases.each { |db| check db }
|
310
|
-
if method == 'tblastx'
|
311
|
-
find('.dropdown-toggle').click
|
312
|
-
find('.dropdown-menu li').click
|
313
|
-
end
|
314
|
-
click_button('method')
|
315
|
-
|
316
|
-
# Switch to new window because link opens in new window
|
317
|
-
page.driver.browser.switch_to.window(page.driver.browser.window_handles.last)
|
318
|
-
|
319
|
-
# It is important to have this line or the examples end prematurely with a
|
320
|
-
# failure.
|
321
|
-
page.should have_content('Query')
|
322
|
-
end
|
323
|
-
|
324
|
-
def nucleotide_query
|
325
|
-
File.read File.join(__dir__, 'sequences', 'nucleotide_query.fa')
|
326
|
-
end
|
327
|
-
|
328
|
-
def protein_query
|
329
|
-
File.read File.join(__dir__, 'sequences', 'protein_query.fa')
|
330
|
-
end
|
331
|
-
|
332
|
-
def nucleotide_databases
|
333
|
-
[
|
334
|
-
'Solenopsis invicta gnG subset',
|
335
|
-
'Sinvicta 2-2-3 cdna subset'
|
336
|
-
]
|
337
|
-
end
|
338
|
-
|
339
|
-
def protein_databases
|
340
|
-
[
|
341
|
-
'Sinvicta 2-2-3 prot subset',
|
342
|
-
'2018-04 Swiss-Prot insecta'
|
343
|
-
]
|
344
|
-
end
|
345
|
-
end
|