sequenceserver 2.0.0.rc3 → 2.0.0.rc8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/chromedriver +0 -0
- data/bin/geckodriver +0 -0
- data/bin/sequenceserver +39 -29
- data/lib/sequenceserver.rb +48 -22
- data/lib/sequenceserver/blast/job.rb +11 -1
- data/lib/sequenceserver/database.rb +7 -168
- data/lib/sequenceserver/exceptions.rb +14 -0
- data/lib/sequenceserver/makeblastdb.rb +323 -0
- data/lib/sequenceserver/routes.rb +6 -1
- data/lib/sequenceserver/sequence.rb +1 -1
- data/lib/sequenceserver/version.rb +1 -1
- data/public/css/sequenceserver.css +10 -3
- data/public/css/sequenceserver.min.css +1 -1
- data/public/js/error_modal.js +27 -29
- data/public/js/hit.js +14 -5
- data/public/js/jquery_world.js +1 -1
- data/public/js/query.js +31 -15
- data/public/js/report.js +13 -6
- data/public/js/search.js +44 -24
- data/public/js/sequence_modal.js +10 -5
- data/public/js/sidebar.js +52 -28
- data/public/sequenceserver-report.min.js +17 -17
- data/public/sequenceserver-search.min.js +2 -2
- data/views/layout.erb +5 -1
- data/views/report.erb +1 -1
- data/views/search.erb +1 -1
- metadata +9 -450
- data/.bootstrap/config.json +0 -433
- data/.codeclimate.yml +0 -31
- data/.csslintrc +0 -2
- 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 -23
- 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 -334
- data/spec/config_spec.rb +0 -87
- data/spec/database/funky_ids/funky_ids.fa +0 -16
- data/spec/database/funky_ids/funky_ids.fa.nhd +0 -8
- data/spec/database/funky_ids/funky_ids.fa.nhi +0 -0
- data/spec/database/funky_ids/funky_ids.fa.nhr +0 -0
- data/spec/database/funky_ids/funky_ids.fa.nin +0 -0
- data/spec/database/funky_ids/funky_ids.fa.nog +0 -0
- data/spec/database/funky_ids/funky_ids.fa.nsd +0 -15
- data/spec/database/funky_ids/funky_ids.fa.nsi +0 -0
- data/spec/database/funky_ids/funky_ids.fa.nsq +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.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.nsd +0 -16
- data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nsi +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.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.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.psd +0 -2378
- data/spec/database/sample/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.psi +0 -0
- data/spec/database/sample/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.psq +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.psd +0 -18280
- data/spec/database/sample/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.psi +0 -0
- data/spec/database/sample/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.psq +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.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.nsd +0 -946
- data/spec/database/sample/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nsi +0 -0
- data/spec/database/sample/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nsq +0 -0
- data/spec/database/unformatted/Cardiocondyla_obscurior/Cobs1.4.proteins.fa +0 -148303
- 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 -127
- 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/routes_spec.rb +0 -93
- data/spec/sample.conf +0 -2
- data/spec/sequence_spec.rb +0 -100
- 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
data/public/js/hit.js
CHANGED
@@ -16,6 +16,13 @@ export default React.createClass({
|
|
16
16
|
return this.props.hit.accession;
|
17
17
|
},
|
18
18
|
|
19
|
+
/**
|
20
|
+
* Returns id of the hit sequence.
|
21
|
+
*/
|
22
|
+
sequenceID: function () {
|
23
|
+
return this.props.hit.id;
|
24
|
+
},
|
25
|
+
|
19
26
|
/**
|
20
27
|
* Returns length of the hit sequence.
|
21
28
|
*/
|
@@ -41,12 +48,14 @@ export default React.createClass({
|
|
41
48
|
},
|
42
49
|
|
43
50
|
viewSequenceLink: function () {
|
44
|
-
|
51
|
+
var sequenceIDs = encodeURIComponent(this.sequenceID());
|
52
|
+
var databaseIDs = encodeURIComponent(this.databaseIDs());
|
53
|
+
return `get_sequence/?sequence_ids=${sequenceIDs}&database_ids=${databaseIDs}`;
|
45
54
|
},
|
46
55
|
|
47
56
|
downloadFASTA: function (event) {
|
48
|
-
var
|
49
|
-
downloadFASTA(
|
57
|
+
var sequenceIDs = [this.sequenceID()];
|
58
|
+
downloadFASTA(sequenceIDs, this.databaseIDs());
|
50
59
|
},
|
51
60
|
|
52
61
|
// Event-handler for exporting alignments.
|
@@ -129,7 +138,7 @@ export default React.createClass({
|
|
129
138
|
<div className="hit-links">
|
130
139
|
<label>
|
131
140
|
<input type="checkbox" id={this.domID() + '_checkbox'}
|
132
|
-
value={this.
|
141
|
+
value={this.sequenceID()} onChange={function () {
|
133
142
|
this.props.selectHit(this.domID() + '_checkbox');
|
134
143
|
}.bind(this)} data-target={'#' + this.domID()}
|
135
144
|
/> Select
|
@@ -182,7 +191,7 @@ export default React.createClass({
|
|
182
191
|
return {
|
183
192
|
text: 'Alignment',
|
184
193
|
icon: 'fa-download',
|
185
|
-
className: 'download-
|
194
|
+
className: 'download-aln',
|
186
195
|
onClick: () => this.downloadAlignment()
|
187
196
|
};
|
188
197
|
},
|
data/public/js/jquery_world.js
CHANGED
data/public/js/query.js
CHANGED
@@ -92,10 +92,20 @@ export default React.createClass({
|
|
92
92
|
var HitsTable = React.createClass({
|
93
93
|
mixins: [Utils],
|
94
94
|
render: function () {
|
95
|
-
var
|
96
|
-
|
97
|
-
|
98
|
-
|
95
|
+
var hasName = _.every(this.props.query.hits, function(hit) {
|
96
|
+
return hit.sciname !== '';
|
97
|
+
});
|
98
|
+
|
99
|
+
// Width of sequence column is 55% when species name is not shown and
|
100
|
+
// query coverage is.
|
101
|
+
var seqwidth = 55;
|
102
|
+
// If we are going to show species name, then reduce the width of
|
103
|
+
// sequence column by the width of species column.
|
104
|
+
if (hasName) seqwidth -= 15;
|
105
|
+
// If we are not going to show query coverage (i.e. for imported XML),
|
106
|
+
// then increase the width of sequence column by the width of coverage
|
107
|
+
// column.
|
108
|
+
if (this.props.imported_xml) seqwidth += 15;
|
99
109
|
|
100
110
|
return (
|
101
111
|
<div className="table-hit-overview">
|
@@ -108,12 +118,12 @@ var HitsTable = React.createClass({
|
|
108
118
|
className="table table-hover table-condensed tabular-view ">
|
109
119
|
<thead>
|
110
120
|
<th className="text-left">#</th>
|
111
|
-
<th>Similar sequences</th>
|
112
|
-
{hasName && <th className="text-left">Species</th>}
|
113
|
-
{!this.props.imported_xml && <th className="text-right">Query coverage (%)</th>}
|
114
|
-
<th className="text-right">Total score</th>
|
115
|
-
<th className="text-right">E value</th>
|
116
|
-
<th className="text-right" data-toggle="tooltip"
|
121
|
+
<th width={`${seqwidth}%`}>Similar sequences</th>
|
122
|
+
{hasName && <th width="15%" className="text-left">Species</th>}
|
123
|
+
{!this.props.imported_xml && <th width="15%" className="text-right">Query coverage (%)</th>}
|
124
|
+
<th width="10%" className="text-right">Total score</th>
|
125
|
+
<th width="10%" className="text-right">E value</th>
|
126
|
+
<th width="10%" className="text-right" data-toggle="tooltip"
|
117
127
|
data-placement="left" title="Total identity of all hsps / total length of all hsps">
|
118
128
|
Identity (%)
|
119
129
|
</th>
|
@@ -124,12 +134,18 @@ var HitsTable = React.createClass({
|
|
124
134
|
return (
|
125
135
|
<tr key={hit.number}>
|
126
136
|
<td className="text-left">{hit.number + '.'}</td>
|
127
|
-
<td
|
128
|
-
|
129
|
-
|
130
|
-
|
137
|
+
<td className="nowrap-ellipsis"
|
138
|
+
title={`${hit.id} ${hit.title}`}
|
139
|
+
data-toggle="tooltip" data-placement="left">
|
140
|
+
<a href={'#Query_' + this.props.query.number + '_hit_' + hit.number}
|
141
|
+
className="btn-link">{hit.id} {hit.title}</a>
|
131
142
|
</td>
|
132
|
-
{hasName &&
|
143
|
+
{hasName &&
|
144
|
+
<td className="nowrap-ellipsis" title={hit.sciname}
|
145
|
+
data-toggle="tooltip" data-placement="top">
|
146
|
+
{hit.sciname}
|
147
|
+
</td>
|
148
|
+
}
|
133
149
|
{!this.props.imported_xml && <td className="text-right">{hit.qcovs}</td>}
|
134
150
|
<td className="text-right">{hit.score}</td>
|
135
151
|
<td className="text-right">{this.inExponential(hit.hsps[0].evalue)}</td>
|
data/public/js/report.js
CHANGED
@@ -9,7 +9,7 @@ import Hit from './hit';
|
|
9
9
|
import HSP from './hsp';
|
10
10
|
|
11
11
|
import SequenceModal from './sequence_modal';
|
12
|
-
import
|
12
|
+
import ErrorModal from './error_modal';
|
13
13
|
|
14
14
|
/**
|
15
15
|
* Base component of report page. This component is later rendered into page's
|
@@ -23,7 +23,8 @@ var Page = React.createClass({
|
|
23
23
|
the Report component to render itself in. */}
|
24
24
|
<div className="container">
|
25
25
|
<Report showSequenceModal={ _ => this.showSequenceModal(_) }
|
26
|
-
getCharacterWidth={ () => this.getCharacterWidth() }
|
26
|
+
getCharacterWidth={ () => this.getCharacterWidth() }
|
27
|
+
showErrorModal={ (...args) => this.showErrorModal(...args) } />
|
27
28
|
</div>
|
28
29
|
|
29
30
|
{/* Add a hidden span tag containing chars used in HSPs */}
|
@@ -34,7 +35,10 @@ var Page = React.createClass({
|
|
34
35
|
{/* Required by Grapher for SVG and PNG download */}
|
35
36
|
<canvas id="png-exporter" hidden></canvas>
|
36
37
|
|
37
|
-
<SequenceModal ref="sequenceModal"
|
38
|
+
<SequenceModal ref="sequenceModal"
|
39
|
+
showErrorModal={ (...args) => this.showErrorModal(...args) }/>
|
40
|
+
|
41
|
+
<ErrorModal ref="errorModal" />
|
38
42
|
</div>
|
39
43
|
);
|
40
44
|
},
|
@@ -48,6 +52,10 @@ var Page = React.createClass({
|
|
48
52
|
this.refs.sequenceModal.show(url);
|
49
53
|
},
|
50
54
|
|
55
|
+
showErrorModal: function (errorData, beforeShow) {
|
56
|
+
this.refs.errorModal.show(errorData, beforeShow);
|
57
|
+
},
|
58
|
+
|
51
59
|
getCharacterWidth: function () {
|
52
60
|
if (!this.characterWidth) {
|
53
61
|
var $hspChars = $(React.findDOMNode(this.refs.hspChars));
|
@@ -118,7 +126,7 @@ var Report = React.createClass({
|
|
118
126
|
case 404:
|
119
127
|
case 400:
|
120
128
|
case 500:
|
121
|
-
showErrorModal(jqXHR.responseJSON);
|
129
|
+
component.props.showErrorModal(jqXHR.responseJSON);
|
122
130
|
break;
|
123
131
|
}
|
124
132
|
});
|
@@ -157,8 +165,7 @@ var Report = React.createClass({
|
|
157
165
|
* Called for the first time after as BLAST results have been retrieved from
|
158
166
|
* the server and added to this.state by fetchResults. Only summary overview
|
159
167
|
* and circos would have been rendered at this point. At this stage we kick
|
160
|
-
* start iteratively
|
161
|
-
* 25 milli-seconds.
|
168
|
+
* start iteratively adding 1 HSP to the page every 25 milli-seconds.
|
162
169
|
*/
|
163
170
|
componentDidUpdate: function () {
|
164
171
|
// Log to console how long the last update take?
|
data/public/js/search.js
CHANGED
@@ -7,6 +7,14 @@ import _ from 'underscore';
|
|
7
7
|
*/
|
8
8
|
$.webshims.polyfill('forms');
|
9
9
|
|
10
|
+
/**
|
11
|
+
* Clear sessionStorage on reload.
|
12
|
+
*/
|
13
|
+
if (performance.navigation.type == performance.navigation.TYPE_RELOAD) {
|
14
|
+
sessionStorage.clear();
|
15
|
+
history.replaceState(null, '', location.href.split('?')[0]);
|
16
|
+
}
|
17
|
+
|
10
18
|
var Page = React.createClass({
|
11
19
|
render: function () {
|
12
20
|
return (
|
@@ -231,12 +239,13 @@ var Form = React.createClass({
|
|
231
239
|
}.bind(this));
|
232
240
|
|
233
241
|
/* Enable submitting form on Cmd+Enter */
|
234
|
-
$(document).
|
235
|
-
|
236
|
-
|
237
|
-
|
242
|
+
$(document).on('keydown', (e)=> {
|
243
|
+
var $button = $('#method');
|
244
|
+
if (!$button.is(':disabled') &&
|
245
|
+
e.ctrlKey && e.key === 'Enter') {
|
246
|
+
$button.trigger('click');
|
238
247
|
}
|
239
|
-
}
|
248
|
+
});
|
240
249
|
},
|
241
250
|
|
242
251
|
determineBlastMethod: function () {
|
@@ -303,6 +312,17 @@ var Form = React.createClass({
|
|
303
312
|
}
|
304
313
|
},
|
305
314
|
|
315
|
+
handleNewTabCheckbox: function () {
|
316
|
+
setTimeout(() => {
|
317
|
+
if ($('#toggleNewTab').is(':checked')) {
|
318
|
+
$('#blast').attr('target', '_blank');
|
319
|
+
}
|
320
|
+
else {
|
321
|
+
$('#blast').attr('target', '_self');
|
322
|
+
}
|
323
|
+
});
|
324
|
+
},
|
325
|
+
|
306
326
|
render: function () {
|
307
327
|
return (
|
308
328
|
<div className="container">
|
@@ -320,6 +340,15 @@ var Form = React.createClass({
|
|
320
340
|
onDatabaseTypeChanged={this.handleDatabaseTypeChanaged} />
|
321
341
|
<div className="form-group">
|
322
342
|
<Options ref="opts"/>
|
343
|
+
<div className="col-md-2">
|
344
|
+
<div className="form-group" style={{'textAlign': 'center', 'padding': '7px 0'}}>
|
345
|
+
<label>
|
346
|
+
<input type="checkbox" id="toggleNewTab"
|
347
|
+
onChange={()=> { this.handleNewTabCheckbox(); }}
|
348
|
+
/> Open results in new tab
|
349
|
+
</label>
|
350
|
+
</div>
|
351
|
+
</div>
|
323
352
|
<SearchButton ref="button" onAlgoChanged={this.handleAlgoChanged}/>
|
324
353
|
</div>
|
325
354
|
</form>
|
@@ -614,8 +643,7 @@ var MixedNotification = React.createClass({
|
|
614
643
|
style={{ display: 'none' }}>
|
615
644
|
<div
|
616
645
|
className="alert-danger col-md-10 col-md-offset-1">
|
617
|
-
|
618
|
-
can't handle that. Please try one sequence at a time.
|
646
|
+
Error: mixed nucleotide and amino-acid sequences detected.
|
619
647
|
</div>
|
620
648
|
</div>
|
621
649
|
);
|
@@ -628,14 +656,12 @@ var Databases = React.createClass({
|
|
628
656
|
},
|
629
657
|
|
630
658
|
databases: function (category) {
|
631
|
-
|
632
|
-
|
659
|
+
var databases = this.props.databases;
|
660
|
+
if (category) {
|
661
|
+
databases = _.select(databases, database => database.type === category);
|
633
662
|
}
|
634
663
|
|
635
|
-
return _.
|
636
|
-
function (database) {
|
637
|
-
return database.type === category;
|
638
|
-
});
|
664
|
+
return _.sortBy(databases, 'title');
|
639
665
|
},
|
640
666
|
|
641
667
|
nselected: function () {
|
@@ -649,7 +675,7 @@ var Databases = React.createClass({
|
|
649
675
|
|
650
676
|
handleClick: function (database) {
|
651
677
|
var type = this.nselected() ? database.type : '';
|
652
|
-
this.setState({type: type});
|
678
|
+
if (type != this.state.type) this.setState({type: type});
|
653
679
|
},
|
654
680
|
|
655
681
|
handleToggle: function (toggleState, type) {
|
@@ -736,10 +762,6 @@ var Databases = React.createClass({
|
|
736
762
|
);
|
737
763
|
},
|
738
764
|
|
739
|
-
//shouldComponentUpdate: function (props, state) {
|
740
|
-
//return !(state.type && state.type === this.state.type);
|
741
|
-
//},
|
742
|
-
|
743
765
|
componentDidUpdate: function () {
|
744
766
|
if (this.databases() && this.databases().length === 1) {
|
745
767
|
$('.databases').find('input').prop('checked',true);
|
@@ -749,10 +771,8 @@ var Databases = React.createClass({
|
|
749
771
|
if (this.props.preSelectedDbs) {
|
750
772
|
var selectors = this.props.preSelectedDbs.map(db => `input[value=${db.id}]`);
|
751
773
|
$(...selectors).prop('checked',true);
|
752
|
-
|
753
|
-
|
754
|
-
this.props.preSelectedDbs = null;
|
755
|
-
});
|
774
|
+
this.handleClick(this.props.preSelectedDbs[0]);
|
775
|
+
this.props.preSelectedDbs = null;
|
756
776
|
}
|
757
777
|
this.props.onDatabaseTypeChanged(this.state.type);
|
758
778
|
}
|
@@ -777,7 +797,7 @@ var Options = React.createClass({
|
|
777
797
|
classNames += ' yellow-background';
|
778
798
|
}
|
779
799
|
return (
|
780
|
-
<div className="col-md-
|
800
|
+
<div className="col-md-7">
|
781
801
|
<div className="form-group">
|
782
802
|
<div className="col-md-12">
|
783
803
|
<div className="input-group">
|
@@ -915,7 +935,7 @@ var SearchButton = React.createClass({
|
|
915
935
|
var multi = methods.length > 1;
|
916
936
|
|
917
937
|
return (
|
918
|
-
<div className="col-md-
|
938
|
+
<div className="col-md-3">
|
919
939
|
<div className="form-group">
|
920
940
|
<div className="col-md-12">
|
921
941
|
<div
|
data/public/js/sequence_modal.js
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
import './sequence';
|
2
2
|
import React from 'react';
|
3
3
|
import _ from 'underscore';
|
4
|
-
import showErrorModal from './error_modal';
|
5
4
|
|
6
5
|
/**
|
7
6
|
* Takes sequence accession as props, fetches the sequence from the server, and
|
@@ -54,6 +53,13 @@ export default class SequenceModal extends React.Component {
|
|
54
53
|
});
|
55
54
|
}
|
56
55
|
|
56
|
+
/**
|
57
|
+
* Hide sequence viewer.
|
58
|
+
*/
|
59
|
+
hide () {
|
60
|
+
this.modal().modal('hide');
|
61
|
+
}
|
62
|
+
|
57
63
|
/**
|
58
64
|
* Loads sequence using AJAX and updates modal state.
|
59
65
|
*/
|
@@ -67,10 +73,9 @@ export default class SequenceModal extends React.Component {
|
|
67
73
|
requestCompleted: true
|
68
74
|
});
|
69
75
|
}, this))
|
70
|
-
.fail(
|
71
|
-
|
72
|
-
|
73
|
-
});
|
76
|
+
.fail((jqXHR, status, error) => {
|
77
|
+
this.hide();
|
78
|
+
this.props.showErrorModal(jqXHR.responseJSON);
|
74
79
|
});
|
75
80
|
|
76
81
|
}
|
data/public/js/sidebar.js
CHANGED
@@ -9,6 +9,15 @@ import AlignmentExporter from './alignment_exporter'; // to download textual ali
|
|
9
9
|
* Renders links for navigating to each query.
|
10
10
|
*/
|
11
11
|
export default React.createClass({
|
12
|
+
/**
|
13
|
+
* Clear sessionStorage - useful to initiate a new search in the same tab.
|
14
|
+
* Passing sessionStorage.clear directly as onclick callback didn't work
|
15
|
+
* (on macOS Chrome).
|
16
|
+
*/
|
17
|
+
clearSession: function () {
|
18
|
+
sessionStorage.clear();
|
19
|
+
},
|
20
|
+
|
12
21
|
/**
|
13
22
|
* Event-handler for downloading fasta of all hits.
|
14
23
|
*/
|
@@ -16,7 +25,7 @@ export default React.createClass({
|
|
16
25
|
var sequence_ids = [];
|
17
26
|
this.props.data.queries.forEach(
|
18
27
|
(query) => query.hits.forEach(
|
19
|
-
(hit) => sequence_ids.push(hit.
|
28
|
+
(hit) => sequence_ids.push(hit.id)));
|
20
29
|
var database_ids = this.props.data.querydb.map((querydb) => querydb.id);
|
21
30
|
downloadFASTA(sequence_ids, database_ids);
|
22
31
|
return false;
|
@@ -66,7 +75,7 @@ export default React.createClass({
|
|
66
75
|
console.log('check '+sequence_ids.toString());
|
67
76
|
_.each(this.props.data.queries, _.bind(function (query) {
|
68
77
|
_.each(query.hits, function (hit) {
|
69
|
-
if (_.indexOf(sequence_ids, hit.
|
78
|
+
if (_.indexOf(sequence_ids, hit.id) != -1) {
|
70
79
|
_.each(hit.hsps, function (hsp) {
|
71
80
|
hsp.hit_id = hit.id;
|
72
81
|
hsp.query_id = query.id;
|
@@ -84,43 +93,43 @@ export default React.createClass({
|
|
84
93
|
render: function () {
|
85
94
|
return (
|
86
95
|
<div className="sidebar">
|
87
|
-
{ this.
|
88
|
-
{ this.
|
96
|
+
{ this.topPanelJSX() }
|
97
|
+
{ this.downloadsPanelJSX() }
|
89
98
|
</div>
|
90
99
|
);
|
91
100
|
},
|
92
101
|
|
93
|
-
|
102
|
+
topPanelJSX: function () {
|
103
|
+
var path = location.pathname.split('/');
|
104
|
+
// Get job id.
|
105
|
+
var job_id = path.pop();
|
106
|
+
// Deriving rootURL this way is required for subURI deployments
|
107
|
+
// - we cannot just send to '/'.
|
108
|
+
var rootURL = path.join('/');
|
109
|
+
|
94
110
|
return (
|
95
|
-
<div className="
|
96
|
-
<div
|
97
|
-
className="section-header-sidebar">
|
111
|
+
<div className="sidebar-top-panel">
|
112
|
+
<div className="section-header-sidebar">
|
98
113
|
<h4>
|
99
|
-
{ this.
|
114
|
+
{ this.summaryString() }
|
100
115
|
</h4>
|
101
116
|
</div>
|
102
|
-
<
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
</a>
|
114
|
-
</li>
|
115
|
-
);
|
116
|
-
}, this))
|
117
|
-
}
|
118
|
-
</ul>
|
117
|
+
<div>
|
118
|
+
<a href={`${rootURL}/?job_id=${job_id}`}>
|
119
|
+
<i className="fa fa-pencil"></i> Edit search
|
120
|
+
</a>
|
121
|
+
<span className="line">|</span>
|
122
|
+
<a href={`${rootURL}/`}
|
123
|
+
onClick={this.clearSession}>
|
124
|
+
<i className="fa fa-file-o"></i> New search
|
125
|
+
</a>
|
126
|
+
</div>
|
127
|
+
{ this.props.shouldShowIndex && this.indexJSX() }
|
119
128
|
</div>
|
120
129
|
);
|
121
130
|
},
|
122
131
|
|
123
|
-
|
132
|
+
summaryString: function () {
|
124
133
|
var program = this.props.data.program;
|
125
134
|
var numqueries = this.props.data.queries.length;
|
126
135
|
var numquerydb = this.props.data.querydb.length;
|
@@ -132,7 +141,22 @@ export default React.createClass({
|
|
132
141
|
);
|
133
142
|
},
|
134
143
|
|
135
|
-
|
144
|
+
indexJSX: function () {
|
145
|
+
return <ul className="nav hover-reset active-bold"> {
|
146
|
+
_.map(this.props.data.queries, (query)=> {
|
147
|
+
return <li key={'Side_bar_'+query.id}>
|
148
|
+
<a className="btn-link nowrap-ellipsis hover-bold"
|
149
|
+
title={'Query= ' + query.id + ' ' + query.title}
|
150
|
+
href={'#Query_' + query.number}>
|
151
|
+
{'Query= ' + query.id}
|
152
|
+
</a>
|
153
|
+
</li>;
|
154
|
+
})
|
155
|
+
}
|
156
|
+
</ul>;
|
157
|
+
},
|
158
|
+
|
159
|
+
downloadsPanelJSX: function () {
|
136
160
|
return (
|
137
161
|
<div className="downloads">
|
138
162
|
<div className="section-header-sidebar">
|