sequenceserver 2.0.0 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of sequenceserver might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/bin/sequenceserver +7 -2
- data/lib/sequenceserver/api_errors.rb +24 -2
- data/lib/sequenceserver/blast/formatter.rb +13 -4
- data/lib/sequenceserver/blast/job.rb +41 -7
- data/lib/sequenceserver/blast/report.rb +69 -33
- data/lib/sequenceserver/config.rb +52 -27
- data/lib/sequenceserver/job.rb +13 -3
- data/lib/sequenceserver/job_remover.rb +25 -29
- data/lib/sequenceserver/makeblastdb.rb +80 -72
- data/lib/sequenceserver/pool.rb +1 -1
- data/lib/sequenceserver/refinements.rb +15 -0
- data/lib/sequenceserver/report.rb +1 -5
- data/lib/sequenceserver/routes.rb +92 -9
- data/lib/sequenceserver/sequence.rb +8 -7
- data/lib/sequenceserver/sys.rb +3 -3
- data/lib/sequenceserver/version.rb +1 -1
- data/lib/sequenceserver/zip_file_generator.rb +56 -0
- data/lib/sequenceserver.rb +9 -2
- data/public/config.js +149 -143
- data/public/css/sequenceserver.css +44 -3
- data/public/css/sequenceserver.min.css +3 -3
- data/public/js/alignment_exporter.js +16 -8
- data/public/js/circos.js +370 -234
- data/public/js/cloud_share_modal.js +216 -0
- data/public/js/databases.js +144 -0
- data/public/js/databases_tree.js +42 -113
- data/public/js/dnd.js +164 -0
- data/public/js/error_modal.js +4 -11
- data/public/js/exporter.js +7 -3
- data/public/js/form.js +260 -0
- data/public/js/grapher.js +113 -106
- data/public/js/hit.js +80 -67
- data/public/js/hits_overview.js +2 -2
- data/public/js/hsp.js +343 -288
- data/public/js/jquery_world.js +4 -4
- data/public/js/mailto.js +36 -0
- data/public/js/options.js +84 -0
- data/public/js/query.js +319 -59
- data/public/js/report.js +369 -269
- data/public/js/report_root.js +75 -0
- data/public/js/search.js +28 -1011
- data/public/js/search_button.js +195 -0
- data/public/js/sequence.js +2409 -2411
- data/public/js/sequence_modal.js +152 -159
- data/public/js/share_url.js +23 -0
- data/public/js/sidebar.js +262 -83
- data/public/js/tests/advanced_parameters.spec.js +36 -0
- data/public/js/tests/database.spec.js +60 -0
- data/public/js/tests/mock_data/databases.json +91 -0
- data/public/js/tests/mock_data/long_response.json +269 -0
- data/public/js/tests/mock_data/sequences.js +32 -0
- data/public/js/tests/mock_data/short_response.json +2240 -0
- data/public/js/tests/report.spec.js +155 -0
- data/public/js/tests/search_button.spec.js +14 -0
- data/public/js/tests/search_query.spec.js +58 -0
- data/public/js/visualisation_helpers.js +1 -1
- data/public/packages/circosJS@1.7.0.js +1640 -0
- data/public/packages/jquery-ui@1.11.4.js +16624 -0
- data/public/sequenceserver-report.min.js +2425 -19
- data/public/sequenceserver-search.min.js +2337 -15
- data/public/vendor/github/jspm/nodelibs-assert@0.1.0/index.js +2 -0
- data/public/vendor/github/jspm/{nodelibs-buffer@0.1.0 → nodelibs-assert@0.1.0}/package.json +1 -1
- data/public/vendor/github/jspm/nodelibs-assert@0.1.0.js +1 -0
- data/public/vendor/github/jspm/nodelibs-buffer@0.1.1/package.json +6 -0
- data/public/vendor/github/jspm/nodelibs-buffer@0.1.1.js +1 -0
- data/public/vendor/github/jspm/{nodelibs-process@0.1.1 → nodelibs-process@0.1.2}/package.json +2 -2
- data/public/vendor/github/jspm/nodelibs-process@0.1.2.js +1 -0
- data/public/vendor/github/jspm/nodelibs-vm@0.1.0/index.js +2 -0
- data/public/vendor/github/jspm/nodelibs-vm@0.1.0/package.json +6 -0
- data/public/vendor/github/jspm/nodelibs-vm@0.1.0.js +1 -0
- data/public/vendor/npm/assert@1.5.0/CHANGELOG.md +8 -0
- data/public/vendor/npm/assert@1.5.0/README.md +105 -0
- data/public/vendor/npm/assert@1.5.0/assert.js +327 -0
- data/public/vendor/npm/assert@1.5.0/package.json +32 -0
- data/public/vendor/npm/assert@1.5.0/test.js +288 -0
- data/public/vendor/npm/assert@1.5.0.js +1 -0
- data/public/vendor/npm/{base64-js@0.0.8/LICENSE.MIT → base64-js@1.5.1/LICENSE} +1 -1
- data/public/vendor/npm/{base64-js@0.0.8 → base64-js@1.5.1}/README.md +10 -7
- data/public/vendor/npm/base64-js@1.5.1/base64js.min.js +3 -0
- data/public/vendor/npm/base64-js@1.5.1/index.d.ts +3 -0
- data/public/vendor/npm/base64-js@1.5.1/index.js +151 -0
- data/public/vendor/npm/base64-js@1.5.1/package.json +47 -0
- data/public/vendor/npm/base64-js@1.5.1.js +1 -0
- data/public/vendor/npm/buffer@5.7.1/AUTHORS.md +70 -0
- data/public/vendor/npm/{buffer@3.4.3 → buffer@5.7.1}/README.md +111 -41
- data/public/vendor/npm/buffer@5.7.1/index.d.ts +186 -0
- data/public/vendor/npm/buffer@5.7.1/index.js +1817 -0
- data/public/vendor/npm/buffer@5.7.1/package.json +96 -0
- data/public/vendor/npm/buffer@5.7.1.js +1 -0
- data/public/vendor/npm/core-util-is@1.0.3/LICENSE +19 -0
- data/public/vendor/npm/core-util-is@1.0.3/lib/util.js +64 -0
- data/public/vendor/npm/{core-util-is@1.0.1 → core-util-is@1.0.3}/package.json +13 -1
- data/public/vendor/npm/core-util-is@1.0.3.js +1 -0
- data/public/vendor/npm/events@1.0.2/tests/add-listeners.js +2 -2
- data/public/vendor/npm/events@1.0.2/tests/check-listener-leaks.js +3 -3
- data/public/vendor/npm/events@1.0.2/tests/common.js +1 -1
- data/public/vendor/npm/events@1.0.2/tests/index.js +13 -13
- data/public/vendor/npm/events@1.0.2/tests/listeners-side-effects.js +2 -2
- data/public/vendor/npm/events@1.0.2/tests/listeners.js +2 -2
- data/public/vendor/npm/events@1.0.2/tests/max-listeners.js +2 -2
- data/public/vendor/npm/events@1.0.2/tests/modify-in-emit.js +2 -2
- data/public/vendor/npm/events@1.0.2/tests/num-args.js +2 -2
- data/public/vendor/npm/events@1.0.2/tests/once.js +2 -2
- data/public/vendor/npm/events@1.0.2/tests/remove-all-listeners.js +3 -3
- data/public/vendor/npm/events@1.0.2/tests/remove-listeners.js +3 -3
- data/public/vendor/npm/events@1.0.2/tests/set-max-listeners-side-effects.js +2 -2
- data/public/vendor/npm/events@1.0.2/tests/subclass.js +3 -3
- data/public/vendor/npm/events@1.0.2.js +1 -1
- data/public/vendor/npm/ieee754@1.2.1/LICENSE +11 -0
- data/public/vendor/npm/{ieee754@1.1.6 → ieee754@1.2.1}/README.md +12 -8
- data/public/vendor/npm/ieee754@1.2.1/index.d.ts +10 -0
- data/public/vendor/npm/{ieee754@1.1.6 → ieee754@1.2.1}/index.js +6 -6
- data/public/vendor/npm/ieee754@1.2.1/package.json +52 -0
- data/public/vendor/npm/ieee754@1.2.1.js +1 -0
- data/public/vendor/npm/{is-array@1.0.1 → indexof@0.0.1}/Makefile +3 -3
- data/public/vendor/npm/indexof@0.0.1/Readme.md +15 -0
- data/public/vendor/npm/indexof@0.0.1/component.json +10 -0
- data/public/vendor/npm/indexof@0.0.1/index.js +11 -0
- data/public/vendor/npm/indexof@0.0.1/package.json +12 -0
- data/public/vendor/npm/indexof@0.0.1.js +1 -0
- data/public/vendor/npm/inherits@2.0.1/inherits.js +1 -1
- data/public/vendor/npm/inherits@2.0.1.js +1 -1
- data/public/vendor/npm/isarray@0.0.1.js +1 -1
- data/public/vendor/npm/js-tokens@4.0.0/index.js +23 -0
- data/public/vendor/npm/js-tokens@4.0.0/package.json +30 -0
- data/public/vendor/npm/js-tokens@4.0.0.js +1 -0
- data/public/vendor/npm/loose-envify@1.4.0/LICENSE +21 -0
- data/public/vendor/npm/loose-envify@1.4.0/README.md +45 -0
- data/public/vendor/npm/loose-envify@1.4.0/cli.js +12 -0
- data/public/vendor/npm/loose-envify@1.4.0/custom.js +3 -0
- data/public/vendor/npm/loose-envify@1.4.0/index.js +5 -0
- data/public/vendor/npm/loose-envify@1.4.0/loose-envify.js +33 -0
- data/public/vendor/npm/loose-envify@1.4.0/package.json +36 -0
- data/public/vendor/npm/loose-envify@1.4.0/replace.js +52 -0
- data/public/vendor/npm/loose-envify@1.4.0.js +1 -0
- data/public/vendor/npm/object-assign@4.1.1/index.js +90 -0
- data/public/vendor/npm/object-assign@4.1.1/package.json +42 -0
- data/public/vendor/npm/object-assign@4.1.1.js +1 -0
- data/public/vendor/npm/path-browserify@0.0.0/index.js +1 -1
- data/public/vendor/npm/path-browserify@0.0.0.js +1 -1
- data/public/vendor/npm/{process@0.10.1 → process@0.11.10}/README.md +4 -1
- data/public/vendor/npm/process@0.11.10/browser.js +184 -0
- data/public/vendor/npm/{process@0.10.1 → process@0.11.10}/package.json +10 -1
- data/public/vendor/npm/process@0.11.10/test.js +185 -0
- data/public/vendor/npm/process@0.11.10.js +1 -0
- data/public/vendor/npm/react-dom@18.0.0/LICENSE +21 -0
- data/public/vendor/npm/react-dom@18.0.0/README.md +50 -0
- data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server-legacy.browser.development.js +4771 -0
- data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server-legacy.browser.production.min.js +85 -0
- data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server-legacy.node.development.js +4813 -0
- data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server-legacy.node.production.min.js +1705 -0
- data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server.browser.development.js +4746 -0
- data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server.browser.production.min.js +90 -0
- data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server.node.development.js +4714 -0
- data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server.node.production.min.js +1746 -0
- data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-test-utils.development.js +1017 -0
- data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-test-utils.production.min.js +617 -0
- data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom.development.js +20092 -0
- data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom.production.min.js +322 -0
- data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom.profiling.min.js +364 -0
- data/public/vendor/npm/react-dom@18.0.0/client.js +27 -0
- data/public/vendor/npm/react-dom@18.0.0/index.js +23 -0
- data/public/vendor/npm/react-dom@18.0.0/package.json +62 -0
- data/public/vendor/npm/react-dom@18.0.0/profiling.js +23 -0
- data/public/vendor/npm/react-dom@18.0.0/server.browser.js +19 -0
- data/public/vendor/npm/react-dom@18.0.0/server.js +3 -0
- data/public/vendor/npm/react-dom@18.0.0/server.node.js +19 -0
- data/public/vendor/npm/react-dom@18.0.0/test-utils.js +9 -0
- data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-server-legacy.browser.development.js +4770 -0
- data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-server-legacy.browser.production.min.js +72 -0
- data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-server.browser.development.js +4745 -0
- data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-server.browser.production.min.js +74 -0
- data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-test-utils.development.js +1013 -0
- data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-test-utils.production.min.js +625 -0
- data/public/vendor/npm/react-dom@18.0.0/umd/react-dom.development.js +20106 -0
- data/public/vendor/npm/react-dom@18.0.0/umd/react-dom.production.min.js +269 -0
- data/public/vendor/npm/react-dom@18.0.0/umd/react-dom.profiling.min.js +285 -0
- data/public/vendor/npm/react-dom@18.0.0.js +1 -0
- data/public/vendor/npm/react@18.0.0/LICENSE +21 -0
- data/public/vendor/npm/react@18.0.0/README.md +13 -0
- data/public/vendor/npm/react@18.0.0/cjs/react-jsx-dev-runtime.development.js +837 -0
- data/public/vendor/npm/react@18.0.0/cjs/react-jsx-dev-runtime.production.min.js +10 -0
- data/public/vendor/npm/react@18.0.0/cjs/react-jsx-dev-runtime.profiling.min.js +10 -0
- data/public/vendor/npm/react@18.0.0/cjs/react-jsx-runtime.development.js +849 -0
- data/public/vendor/npm/react@18.0.0/cjs/react-jsx-runtime.production.min.js +38 -0
- data/public/vendor/npm/react@18.0.0/cjs/react-jsx-runtime.profiling.min.js +38 -0
- data/public/vendor/npm/react@18.0.0/cjs/react.development.js +1746 -0
- data/public/vendor/npm/react@18.0.0/cjs/react.production.min.js +26 -0
- data/public/vendor/npm/react@18.0.0/cjs/react.shared-subset.development.js +10 -0
- data/public/vendor/npm/react@18.0.0/cjs/react.shared-subset.production.min.js +12 -0
- data/public/vendor/npm/react@18.0.0/index.js +9 -0
- data/public/vendor/npm/react@18.0.0/jsx-dev-runtime.js +9 -0
- data/public/vendor/npm/react@18.0.0/jsx-runtime.js +9 -0
- data/public/vendor/npm/react@18.0.0/package.json +47 -0
- data/public/vendor/npm/react@18.0.0/react.shared-subset.js +9 -0
- data/public/vendor/npm/react@18.0.0/umd/react.development.js +2186 -0
- data/public/vendor/npm/react@18.0.0/umd/react.production.min.js +33 -0
- data/public/vendor/npm/react@18.0.0/umd/react.profiling.min.js +33 -0
- data/public/vendor/npm/react@18.0.0.js +1 -0
- data/public/vendor/npm/readable-stream@1.1.14/LICENSE +18 -0
- data/public/vendor/npm/readable-stream@1.1.14/duplex.js +2 -0
- data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/lib/_stream_duplex.js +5 -5
- data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/lib/_stream_passthrough.js +3 -3
- data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/lib/_stream_readable.js +10 -10
- data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/lib/_stream_transform.js +4 -4
- data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/lib/_stream_writable.js +6 -6
- data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/package.json +1 -1
- data/public/vendor/npm/readable-stream@1.1.14/passthrough.js +2 -0
- data/public/vendor/npm/readable-stream@1.1.14/readable.js +13 -0
- data/public/vendor/npm/readable-stream@1.1.14/transform.js +2 -0
- data/public/vendor/npm/readable-stream@1.1.14/writable.js +2 -0
- data/public/vendor/npm/readable-stream@1.1.14.js +1 -0
- data/public/vendor/npm/scheduler@0.21.0/LICENSE +21 -0
- data/public/vendor/npm/scheduler@0.21.0/README.md +9 -0
- data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler-unstable_mock.development.js +530 -0
- data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler-unstable_mock.production.min.js +20 -0
- data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler-unstable_post_task.development.js +153 -0
- data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler-unstable_post_task.production.min.js +14 -0
- data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler.development.js +444 -0
- data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler.production.min.js +19 -0
- data/public/vendor/npm/scheduler@0.21.0/index.js +9 -0
- data/public/vendor/npm/scheduler@0.21.0/package.json +36 -0
- data/public/vendor/npm/scheduler@0.21.0/umd/scheduler-unstable_mock.development.js +701 -0
- data/public/vendor/npm/scheduler@0.21.0/umd/scheduler-unstable_mock.production.min.js +21 -0
- data/public/vendor/npm/scheduler@0.21.0/umd/scheduler.development.js +154 -0
- data/public/vendor/npm/scheduler@0.21.0/umd/scheduler.production.min.js +148 -0
- data/public/vendor/npm/scheduler@0.21.0/umd/scheduler.profiling.min.js +148 -0
- data/public/vendor/npm/scheduler@0.21.0/unstable_mock.js +9 -0
- data/public/vendor/npm/scheduler@0.21.0/unstable_post_task.js +9 -0
- data/public/vendor/npm/scheduler@0.21.0.js +1 -0
- data/public/vendor/npm/stream-browserify@1.0.0/index.js +7 -7
- data/public/vendor/npm/stream-browserify@1.0.0/test/buf.js +5 -5
- data/public/vendor/npm/stream-browserify@1.0.0.js +1 -1
- data/public/vendor/npm/string_decoder@0.10.31/index.js +2 -2
- data/public/vendor/npm/string_decoder@0.10.31.js +1 -1
- data/public/vendor/npm/util@0.10.3/support/isBuffer.js +1 -1
- data/public/vendor/npm/util@0.10.3/test/browser/inspect.js +2 -2
- data/public/vendor/npm/util@0.10.3/test/browser/is.js +3 -3
- data/public/vendor/npm/util@0.10.3/test/node/debug.js +4 -4
- data/public/vendor/npm/util@0.10.3/test/node/format.js +2 -2
- data/public/vendor/npm/util@0.10.3/test/node/inspect.js +3 -3
- data/public/vendor/npm/util@0.10.3/test/node/log.js +3 -3
- data/public/vendor/npm/util@0.10.3/test/node/util.js +3 -3
- data/public/vendor/npm/util@0.10.3/util.js +3 -3
- data/public/vendor/npm/util@0.10.3.js +1 -1
- data/public/vendor/npm/vm-browserify@0.0.4/LICENSE +18 -0
- data/public/vendor/npm/vm-browserify@0.0.4/example/run/bundle.js +376 -0
- data/public/vendor/npm/vm-browserify@0.0.4/example/run/entry.js +6 -0
- data/public/vendor/npm/vm-browserify@0.0.4/example/run/index.html +9 -0
- data/public/vendor/npm/vm-browserify@0.0.4/example/run/server.js +6 -0
- data/public/vendor/npm/vm-browserify@0.0.4/index.js +139 -0
- data/public/vendor/npm/vm-browserify@0.0.4/package.json +46 -0
- data/public/vendor/npm/vm-browserify@0.0.4/readme.markdown +67 -0
- data/public/vendor/npm/vm-browserify@0.0.4/test/vm.js +34 -0
- data/public/vendor/npm/vm-browserify@0.0.4.js +1 -0
- data/public/vendor/npm/webshim@1.15.8/Gruntfile.js +4 -4
- data/public/vendor/npm/webshim@1.15.8/build/combobuild.js +2 -2
- data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/color-picker.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/10.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/11.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/17.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/5.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/6.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/9.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/es6.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/excanvas.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/form-number-date-ui.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/moxie/js/moxie-html4.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/moxie/js/moxie-swf.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/sizzle.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/js-webshim/minified/shims/es6.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/src/shims/color-picker.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/src/shims/combos/10.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/src/shims/combos/11.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/src/shims/combos/17.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/src/shims/combos/5.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/src/shims/combos/6.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/src/shims/combos/9.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/src/shims/es6.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/src/shims/excanvas.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/src/shims/form-number-date-ui.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/src/shims/moxie/js/moxie-html4.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/src/shims/moxie/js/moxie-swf.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/src/shims/sizzle.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/tests/dist/jquery.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/tests/jquery/unit/core.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/tests/jquery/unit/event.js +1388 -711
- data/public/vendor/npm/webshim@1.15.8/tests/qunit/qunit.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/tests/test-ext/jquery-1-custom.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/tests/test-ext/jquery-2-custom.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/tests/test-ext/punycode.js +1 -1
- data/public/vendor/system-polyfills.js +865 -1
- data/views/blastn_options.erb +291 -0
- data/views/blastp_options.erb +288 -0
- data/views/blastx_options.erb +318 -0
- data/views/error.erb +12 -0
- data/views/layout.erb +2 -30
- data/views/report.erb +0 -8
- data/views/search.erb +16 -9
- data/views/tblastn_options.erb +266 -0
- data/views/tblastx_options.erb +291 -0
- metadata +320 -439
- data/public/vendor/github/jspm/nodelibs-buffer@0.1.0.js +0 -1
- data/public/vendor/github/jspm/nodelibs-module@0.1.0/index.js +0 -1
- data/public/vendor/github/jspm/nodelibs-module@0.1.0.js +0 -1
- data/public/vendor/github/jspm/nodelibs-process@0.1.1.js +0 -1
- data/public/vendor/npm/amdefine@1.0.0/LICENSE +0 -58
- data/public/vendor/npm/amdefine@1.0.0/README.md +0 -171
- data/public/vendor/npm/amdefine@1.0.0/amdefine.js +0 -200
- data/public/vendor/npm/amdefine@1.0.0/intercept.js +0 -24
- data/public/vendor/npm/amdefine@1.0.0/package.json +0 -16
- data/public/vendor/npm/amdefine@1.0.0.js +0 -1
- data/public/vendor/npm/base62@0.1.1/LICENSE +0 -20
- data/public/vendor/npm/base62@0.1.1/Readme.md +0 -30
- data/public/vendor/npm/base62@0.1.1/base62.js +0 -28
- data/public/vendor/npm/base62@0.1.1/package.json +0 -21
- data/public/vendor/npm/base62@0.1.1/test/test.js +0 -13
- data/public/vendor/npm/base62@0.1.1.js +0 -1
- data/public/vendor/npm/base64-js@0.0.8/lib/b64.js +0 -125
- data/public/vendor/npm/base64-js@0.0.8/package.json +0 -34
- data/public/vendor/npm/base64-js@0.0.8/test/convert.js +0 -39
- data/public/vendor/npm/base64-js@0.0.8/test/url-safe.js +0 -15
- data/public/vendor/npm/base64-js@0.0.8.js +0 -1
- data/public/vendor/npm/buffer@3.4.3/index.js +0 -1533
- data/public/vendor/npm/buffer@3.4.3/package.json +0 -67
- data/public/vendor/npm/buffer@3.4.3/test/_polyfill.js +0 -152
- data/public/vendor/npm/buffer@3.4.3/test/base64.js +0 -33
- data/public/vendor/npm/buffer@3.4.3/test/basic.js +0 -58
- data/public/vendor/npm/buffer@3.4.3/test/compare.js +0 -53
- data/public/vendor/npm/buffer@3.4.3/test/constructor.js +0 -132
- data/public/vendor/npm/buffer@3.4.3/test/deprecated.js +0 -21
- data/public/vendor/npm/buffer@3.4.3/test/from-string.js +0 -105
- data/public/vendor/npm/buffer@3.4.3/test/methods.js +0 -109
- data/public/vendor/npm/buffer@3.4.3/test/node/README.txt +0 -1
- data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer-ascii.js +0 -20
- data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer-bytelength.js +0 -38
- data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer-concat.js +0 -26
- data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer-indexof.js +0 -78
- data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer-inspect.js +0 -31
- data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer.js +0 -804
- data/public/vendor/npm/buffer@3.4.3/test/node-es6/README.txt +0 -1
- data/public/vendor/npm/buffer@3.4.3/test/node-es6/test-buffer-arraybuffer.js +0 -37
- data/public/vendor/npm/buffer@3.4.3/test/node-es6/test-buffer-iterator.js +0 -32
- data/public/vendor/npm/buffer@3.4.3/test/slice.js +0 -33
- data/public/vendor/npm/buffer@3.4.3/test/static.js +0 -32
- data/public/vendor/npm/buffer@3.4.3/test/to-string.js +0 -106
- data/public/vendor/npm/buffer@3.4.3/test/write.js +0 -90
- data/public/vendor/npm/buffer@3.4.3.js +0 -1
- data/public/vendor/npm/core-util-is@1.0.1/float.patch +0 -604
- data/public/vendor/npm/core-util-is@1.0.1/lib/util.js +0 -66
- data/public/vendor/npm/core-util-is@1.0.1/util.js +0 -66
- data/public/vendor/npm/core-util-is@1.0.1.js +0 -1
- data/public/vendor/npm/envify@3.4.0/README.md +0 -145
- data/public/vendor/npm/envify@3.4.0/bin/envify +0 -17
- data/public/vendor/npm/envify@3.4.0/custom.js +0 -33
- data/public/vendor/npm/envify@3.4.0/index.js +0 -4
- data/public/vendor/npm/envify@3.4.0/package.json +0 -35
- data/public/vendor/npm/envify@3.4.0/visitors.js +0 -33
- data/public/vendor/npm/envify@3.4.0.js +0 -1
- data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/bin/esparse.js +0 -90
- data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/bin/esvalidate.js +0 -145
- data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/esprima.js +0 -6191
- data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/package.json +0 -72
- data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/test/compat.js +0 -167
- data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/test/reflect.js +0 -421
- data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/test/run.js +0 -34
- data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/test/runner.js +0 -418
- data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/test/test.js +0 -34730
- data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb.js +0 -1
- data/public/vendor/npm/ieee754@1.1.6/LICENSE +0 -56
- data/public/vendor/npm/ieee754@1.1.6/package.json +0 -34
- data/public/vendor/npm/ieee754@1.1.6/test/basic.js +0 -20
- data/public/vendor/npm/ieee754@1.1.6.js +0 -1
- data/public/vendor/npm/is-array@1.0.1/History.md +0 -11
- data/public/vendor/npm/is-array@1.0.1/Readme.md +0 -27
- data/public/vendor/npm/is-array@1.0.1/component.json +0 -13
- data/public/vendor/npm/is-array@1.0.1/index.js +0 -33
- data/public/vendor/npm/is-array@1.0.1/package.json +0 -10
- data/public/vendor/npm/is-array@1.0.1/test/test.html +0 -46
- data/public/vendor/npm/is-array@1.0.1.js +0 -1
- data/public/vendor/npm/jstransform@10.1.0/LICENSE +0 -201
- data/public/vendor/npm/jstransform@10.1.0/README.md +0 -98
- data/public/vendor/npm/jstransform@10.1.0/jestEnvironment.js +0 -3
- data/public/vendor/npm/jstransform@10.1.0/jestPreprocessor.js +0 -8
- data/public/vendor/npm/jstransform@10.1.0/package.json +0 -52
- data/public/vendor/npm/jstransform@10.1.0/polyfill/Object.es6.js +0 -54
- data/public/vendor/npm/jstransform@10.1.0/src/__tests__/jstransform-test.js +0 -246
- data/public/vendor/npm/jstransform@10.1.0/src/__tests__/jstransform-utils-test.js +0 -31
- data/public/vendor/npm/jstransform@10.1.0/src/docblock.js +0 -86
- data/public/vendor/npm/jstransform@10.1.0/src/jstransform.js +0 -180
- data/public/vendor/npm/jstransform@10.1.0/src/utils.js +0 -386
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-arrow-function-visitors-test.js +0 -57
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-call-spread-visitors-test.js +0 -46
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-class-visitors-test.js +0 -463
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-destructuring-visitors-test.js +0 -144
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-es7-object-integration-test.js +0 -40
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-object-concise-method-visitors-test.js +0 -47
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-object-short-notation-visitors-test.js +0 -33
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-rest-param-visitors-test.js +0 -119
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-template-visitors-test.js +0 -138
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es7-rest-property-helpers-test.js +0 -47
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es7-spread-property-visitors-test.js +0 -90
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/gen/generate-type-syntax-test.js +0 -40
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/gen/type-syntax-test.rec.js +0 -846
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/reserved-words-test.js +0 -40
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-alias-syntax-test.js +0 -34
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-class-syntax-test.js +0 -105
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-function-syntax-test.js +0 -126
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-interface-syntax-test.js +0 -29
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-object-method-syntax-test.js +0 -65
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-pattern-syntax-test.js +0 -45
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-syntax-test.js +0 -46
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-variable-declaration-syntax-test.js +0 -102
- data/public/vendor/npm/jstransform@10.1.0/visitors/es6-arrow-function-visitors.js +0 -66
- data/public/vendor/npm/jstransform@10.1.0/visitors/es6-call-spread-visitors.js +0 -72
- data/public/vendor/npm/jstransform@10.1.0/visitors/es6-class-visitors.js +0 -316
- data/public/vendor/npm/jstransform@10.1.0/visitors/es6-destructuring-visitors.js +0 -135
- data/public/vendor/npm/jstransform@10.1.0/visitors/es6-object-concise-method-visitors.js +0 -28
- data/public/vendor/npm/jstransform@10.1.0/visitors/es6-object-short-notation-visitors.js +0 -12
- data/public/vendor/npm/jstransform@10.1.0/visitors/es6-rest-param-visitors.js +0 -45
- data/public/vendor/npm/jstransform@10.1.0/visitors/es6-template-visitors.js +0 -90
- data/public/vendor/npm/jstransform@10.1.0/visitors/es7-rest-property-helpers.js +0 -80
- data/public/vendor/npm/jstransform@10.1.0/visitors/es7-spread-property-visitors.js +0 -56
- data/public/vendor/npm/jstransform@10.1.0/visitors/reserved-words-helper.js +0 -74
- data/public/vendor/npm/jstransform@10.1.0/visitors/reserved-words-visitors.js +0 -30
- data/public/vendor/npm/jstransform@10.1.0/visitors/type-syntax.js +0 -118
- data/public/vendor/npm/jstransform@10.1.0.js +0 -1
- data/public/vendor/npm/process@0.10.1/browser.js +0 -58
- data/public/vendor/npm/process@0.10.1.js +0 -1
- data/public/vendor/npm/qs@2.4.1/test/stringify.js +0 -162
- data/public/vendor/npm/react@0.13.3/README.md +0 -20
- data/public/vendor/npm/react@0.13.3/addons.js +0 -2
- data/public/vendor/npm/react@0.13.3/dist/JSXTransformer.js +0 -11346
- data/public/vendor/npm/react@0.13.3/dist/react-with-addons.js +0 -10483
- data/public/vendor/npm/react@0.13.3/dist/react-with-addons.min.js +0 -7297
- data/public/vendor/npm/react@0.13.3/dist/react.js +0 -9468
- data/public/vendor/npm/react@0.13.3/dist/react.min.js +0 -6764
- data/public/vendor/npm/react@0.13.3/lib/AutoFocusMixin.js +0 -9
- data/public/vendor/npm/react@0.13.3/lib/BeforeInputEventPlugin.js +0 -197
- data/public/vendor/npm/react@0.13.3/lib/CSSCore.js +0 -39
- data/public/vendor/npm/react@0.13.3/lib/CSSProperty.js +0 -123
- data/public/vendor/npm/react@0.13.3/lib/CSSPropertyOperations.js +0 -103
- data/public/vendor/npm/react@0.13.3/lib/CallbackQueue.js +0 -43
- data/public/vendor/npm/react@0.13.3/lib/ChangeEventPlugin.js +0 -174
- data/public/vendor/npm/react@0.13.3/lib/ClientReactRootIndex.js +0 -23
- data/public/vendor/npm/react@0.13.3/lib/DOMChildrenOperations.js +0 -57
- data/public/vendor/npm/react@0.13.3/lib/DOMProperty.js +0 -96
- data/public/vendor/npm/react@0.13.3/lib/DOMPropertyOperations.js +0 -99
- data/public/vendor/npm/react@0.13.3/lib/Danger.js +0 -67
- data/public/vendor/npm/react@0.13.3/lib/DefaultEventPluginOrder.js +0 -5
- data/public/vendor/npm/react@0.13.3/lib/EnterLeaveEventPlugin.js +0 -69
- data/public/vendor/npm/react@0.13.3/lib/EventConstants.js +0 -55
- data/public/vendor/npm/react@0.13.3/lib/EventListener.js +0 -34
- data/public/vendor/npm/react@0.13.3/lib/EventPluginHub.js +0 -103
- data/public/vendor/npm/react@0.13.3/lib/EventPluginRegistry.js +0 -115
- data/public/vendor/npm/react@0.13.3/lib/EventPluginUtils.js +0 -121
- data/public/vendor/npm/react@0.13.3/lib/EventPropagators.js +0 -62
- data/public/vendor/npm/react@0.13.3/lib/ExecutionEnvironment.js +0 -42
- data/public/vendor/npm/react@0.13.3/lib/FallbackCompositionState.js +0 -45
- data/public/vendor/npm/react@0.13.3/lib/HTMLDOMPropertyConfig.js +0 -155
- data/public/vendor/npm/react@0.13.3/lib/LinkedStateMixin.js +0 -8
- data/public/vendor/npm/react@0.13.3/lib/LinkedValueUtils.js +0 -74
- data/public/vendor/npm/react@0.13.3/lib/LocalEventTrapMixin.js +0 -26
- data/public/vendor/npm/react@0.13.3/lib/MobileSafariClickEventPlugin.js +0 -17
- data/public/vendor/npm/react@0.13.3/lib/Object.assign.js +0 -47
- data/public/vendor/npm/react@0.13.3/lib/PooledClass.js +0 -75
- data/public/vendor/npm/react@0.13.3/lib/React.js +0 -93
- data/public/vendor/npm/react@0.13.3/lib/ReactBrowserComponentMixin.js +0 -7
- data/public/vendor/npm/react@0.13.3/lib/ReactBrowserEventEmitter.js +0 -136
- data/public/vendor/npm/react@0.13.3/lib/ReactCSSTransitionGroup.js +0 -34
- data/public/vendor/npm/react@0.13.3/lib/ReactCSSTransitionGroupChild.js +0 -92
- data/public/vendor/npm/react@0.13.3/lib/ReactChildReconciler.js +0 -57
- data/public/vendor/npm/react@0.13.3/lib/ReactChildren.js +0 -67
- data/public/vendor/npm/react@0.13.3/lib/ReactClass.js +0 -338
- data/public/vendor/npm/react@0.13.3/lib/ReactComponent.js +0 -50
- data/public/vendor/npm/react@0.13.3/lib/ReactComponentBrowserEnvironment.js +0 -14
- data/public/vendor/npm/react@0.13.3/lib/ReactComponentEnvironment.js +0 -19
- data/public/vendor/npm/react@0.13.3/lib/ReactComponentWithPureRenderMixin.js +0 -7
- data/public/vendor/npm/react@0.13.3/lib/ReactCompositeComponent.js +0 -374
- data/public/vendor/npm/react@0.13.3/lib/ReactContext.js +0 -27
- data/public/vendor/npm/react@0.13.3/lib/ReactCurrentOwner.js +0 -32
- data/public/vendor/npm/react@0.13.3/lib/ReactDOM.js +0 -146
- data/public/vendor/npm/react@0.13.3/lib/ReactDOMButton.js +0 -35
- data/public/vendor/npm/react@0.13.3/lib/ReactDOMComponent.js +0 -267
- data/public/vendor/npm/react@0.13.3/lib/ReactDOMForm.js +0 -21
- data/public/vendor/npm/react@0.13.3/lib/ReactDOMIDOperations.js +0 -63
- data/public/vendor/npm/react@0.13.3/lib/ReactDOMIframe.js +0 -20
- data/public/vendor/npm/react@0.13.3/lib/ReactDOMImg.js +0 -21
- data/public/vendor/npm/react@0.13.3/lib/ReactDOMInput.js +0 -94
- data/public/vendor/npm/react@0.13.3/lib/ReactDOMOption.js +0 -23
- data/public/vendor/npm/react@0.13.3/lib/ReactDOMSelect.js +0 -112
- data/public/vendor/npm/react@0.13.3/lib/ReactDOMSelection.js +0 -103
- data/public/vendor/npm/react@0.13.3/lib/ReactDOMTextComponent.js +0 -38
- data/public/vendor/npm/react@0.13.3/lib/ReactDOMTextarea.js +0 -70
- data/public/vendor/npm/react@0.13.3/lib/ReactDefaultBatchingStrategy.js +0 -37
- data/public/vendor/npm/react@0.13.3/lib/ReactDefaultInjection.js +0 -93
- data/public/vendor/npm/react@0.13.3/lib/ReactDefaultPerf.js +0 -183
- data/public/vendor/npm/react@0.13.3/lib/ReactDefaultPerfAnalysis.js +0 -145
- data/public/vendor/npm/react@0.13.3/lib/ReactElement.js +0 -151
- data/public/vendor/npm/react@0.13.3/lib/ReactElementValidator.js +0 -218
- data/public/vendor/npm/react@0.13.3/lib/ReactEmptyComponent.js +0 -47
- data/public/vendor/npm/react@0.13.3/lib/ReactErrorUtils.js +0 -30
- data/public/vendor/npm/react@0.13.3/lib/ReactEventEmitterMixin.js +0 -12
- data/public/vendor/npm/react@0.13.3/lib/ReactEventListener.js +0 -93
- data/public/vendor/npm/react@0.13.3/lib/ReactFragment.js +0 -110
- data/public/vendor/npm/react@0.13.3/lib/ReactInjection.js +0 -27
- data/public/vendor/npm/react@0.13.3/lib/ReactInputSelection.js +0 -75
- data/public/vendor/npm/react@0.13.3/lib/ReactInstanceHandles.js +0 -113
- data/public/vendor/npm/react@0.13.3/lib/ReactInstanceMap.js +0 -47
- data/public/vendor/npm/react@0.13.3/lib/ReactLifeCycle.js +0 -9
- data/public/vendor/npm/react@0.13.3/lib/ReactLink.js +0 -16
- data/public/vendor/npm/react@0.13.3/lib/ReactMarkupChecksum.js +0 -17
- data/public/vendor/npm/react@0.13.3/lib/ReactMount.js +0 -347
- data/public/vendor/npm/react@0.13.3/lib/ReactMultiChild.js +0 -190
- data/public/vendor/npm/react@0.13.3/lib/ReactMultiChildUpdateTypes.js +0 -10
- data/public/vendor/npm/react@0.13.3/lib/ReactNativeComponent.js +0 -53
- data/public/vendor/npm/react@0.13.3/lib/ReactOwner.js +0 -21
- data/public/vendor/npm/react@0.13.3/lib/ReactPerf.js +0 -42
- data/public/vendor/npm/react@0.13.3/lib/ReactPropTransferer.js +0 -40
- data/public/vendor/npm/react@0.13.3/lib/ReactPropTypeLocationNames.js +0 -13
- data/public/vendor/npm/react@0.13.3/lib/ReactPropTypeLocations.js +0 -9
- data/public/vendor/npm/react@0.13.3/lib/ReactPropTypes.js +0 -225
- data/public/vendor/npm/react@0.13.3/lib/ReactPutListenerQueue.js +0 -31
- data/public/vendor/npm/react@0.13.3/lib/ReactReconcileTransaction.js +0 -66
- data/public/vendor/npm/react@0.13.3/lib/ReactReconciler.js +0 -44
- data/public/vendor/npm/react@0.13.3/lib/ReactRef.js +0 -36
- data/public/vendor/npm/react@0.13.3/lib/ReactRootIndex.js +0 -29
- data/public/vendor/npm/react@0.13.3/lib/ReactServerRendering.js +0 -44
- data/public/vendor/npm/react@0.13.3/lib/ReactServerRenderingTransaction.js +0 -47
- data/public/vendor/npm/react@0.13.3/lib/ReactStateSetters.js +0 -104
- data/public/vendor/npm/react@0.13.3/lib/ReactTestUtils.js +0 -249
- data/public/vendor/npm/react@0.13.3/lib/ReactTransitionChildMapping.js +0 -53
- data/public/vendor/npm/react@0.13.3/lib/ReactTransitionEvents.js +0 -68
- data/public/vendor/npm/react@0.13.3/lib/ReactTransitionGroup.js +0 -140
- data/public/vendor/npm/react@0.13.3/lib/ReactUpdateQueue.js +0 -107
- data/public/vendor/npm/react@0.13.3/lib/ReactUpdates.js +0 -139
- data/public/vendor/npm/react@0.13.3/lib/ReactWithAddons.js +0 -30
- data/public/vendor/npm/react@0.13.3/lib/SVGDOMPropertyConfig.js +0 -76
- data/public/vendor/npm/react@0.13.3/lib/SelectEventPlugin.js +0 -91
- data/public/vendor/npm/react@0.13.3/lib/ServerReactRootIndex.js +0 -29
- data/public/vendor/npm/react@0.13.3/lib/SimpleEventPlugin.js +0 -287
- data/public/vendor/npm/react@0.13.3/lib/SyntheticClipboardEvent.js +0 -11
- data/public/vendor/npm/react@0.13.3/lib/SyntheticCompositionEvent.js +0 -9
- data/public/vendor/npm/react@0.13.3/lib/SyntheticDragEvent.js +0 -9
- data/public/vendor/npm/react@0.13.3/lib/SyntheticEvent.js +0 -90
- data/public/vendor/npm/react@0.13.3/lib/SyntheticFocusEvent.js +0 -9
- data/public/vendor/npm/react@0.13.3/lib/SyntheticInputEvent.js +0 -9
- data/public/vendor/npm/react@0.13.3/lib/SyntheticKeyboardEvent.js +0 -43
- data/public/vendor/npm/react@0.13.3/lib/SyntheticMouseEvent.js +0 -38
- data/public/vendor/npm/react@0.13.3/lib/SyntheticTouchEvent.js +0 -19
- data/public/vendor/npm/react@0.13.3/lib/SyntheticUIEvent.js +0 -29
- data/public/vendor/npm/react@0.13.3/lib/SyntheticWheelEvent.js +0 -18
- data/public/vendor/npm/react@0.13.3/lib/Transaction.js +0 -90
- data/public/vendor/npm/react@0.13.3/lib/ViewportMetrics.js +0 -27
- data/public/vendor/npm/react@0.13.3/lib/accumulateInto.js +0 -26
- data/public/vendor/npm/react@0.13.3/lib/adler32.js +0 -32
- data/public/vendor/npm/react@0.13.3/lib/camelize.js +0 -30
- data/public/vendor/npm/react@0.13.3/lib/camelizeStyleName.js +0 -8
- data/public/vendor/npm/react@0.13.3/lib/cloneWithProps.js +0 -20
- data/public/vendor/npm/react@0.13.3/lib/containsNode.js +0 -20
- data/public/vendor/npm/react@0.13.3/lib/createArrayFromMixed.js +0 -15
- data/public/vendor/npm/react@0.13.3/lib/createFullPageComponent.js +0 -22
- data/public/vendor/npm/react@0.13.3/lib/createNodesFromMarkup.js +0 -39
- data/public/vendor/npm/react@0.13.3/lib/cx.js +0 -20
- data/public/vendor/npm/react@0.13.3/lib/dangerousStyleValue.js +0 -19
- data/public/vendor/npm/react@0.13.3/lib/emptyFunction.js +0 -32
- data/public/vendor/npm/react@0.13.3/lib/emptyObject.js +0 -9
- data/public/vendor/npm/react@0.13.3/lib/escapeTextContentForBrowser.js +0 -38
- data/public/vendor/npm/react@0.13.3/lib/findDOMNode.js +0 -31
- data/public/vendor/npm/react@0.13.3/lib/flattenChildren.js +0 -25
- data/public/vendor/npm/react@0.13.3/lib/focusNode.js +0 -27
- data/public/vendor/npm/react@0.13.3/lib/forEachAccumulated.js +0 -29
- data/public/vendor/npm/react@0.13.3/lib/getActiveElement.js +0 -27
- data/public/vendor/npm/react@0.13.3/lib/getEventCharCode.js +0 -50
- data/public/vendor/npm/react@0.13.3/lib/getEventKey.js +0 -72
- data/public/vendor/npm/react@0.13.3/lib/getEventModifierState.js +0 -45
- data/public/vendor/npm/react@0.13.3/lib/getEventTarget.js +0 -29
- data/public/vendor/npm/react@0.13.3/lib/getIteratorFn.js +0 -42
- data/public/vendor/npm/react@0.13.3/lib/getMarkupWrap.js +0 -73
- data/public/vendor/npm/react@0.13.3/lib/getNodeForCharacterOffset.js +0 -73
- data/public/vendor/npm/react@0.13.3/lib/getReactRootElementInContainer.js +0 -33
- data/public/vendor/npm/react@0.13.3/lib/getTextContentAccessor.js +0 -11
- data/public/vendor/npm/react@0.13.3/lib/getUnboundedScrollPosition.js +0 -38
- data/public/vendor/npm/react@0.13.3/lib/hyphenate.js +0 -31
- data/public/vendor/npm/react@0.13.3/lib/hyphenateStyleName.js +0 -8
- data/public/vendor/npm/react@0.13.3/lib/instantiateReactComponent.js +0 -55
- data/public/vendor/npm/react@0.13.3/lib/invariant.js +0 -26
- data/public/vendor/npm/react@0.13.3/lib/isEventSupported.js +0 -24
- data/public/vendor/npm/react@0.13.3/lib/isNode.js +0 -25
- data/public/vendor/npm/react@0.13.3/lib/isTextInputElement.js +0 -41
- data/public/vendor/npm/react@0.13.3/lib/isTextNode.js +0 -6
- data/public/vendor/npm/react@0.13.3/lib/joinClasses.js +0 -39
- data/public/vendor/npm/react@0.13.3/lib/keyMirror.js +0 -18
- data/public/vendor/npm/react@0.13.3/lib/keyOf.js +0 -34
- data/public/vendor/npm/react@0.13.3/lib/mapObject.js +0 -51
- data/public/vendor/npm/react@0.13.3/lib/memoizeStringOnly.js +0 -31
- data/public/vendor/npm/react@0.13.3/lib/onlyChild.js +0 -11
- data/public/vendor/npm/react@0.13.3/lib/performance.js +0 -8
- data/public/vendor/npm/react@0.13.3/lib/performanceNow.js +0 -7
- data/public/vendor/npm/react@0.13.3/lib/quoteAttributeValueForBrowser.js +0 -7
- data/public/vendor/npm/react@0.13.3/lib/setInnerHTML.js +0 -40
- data/public/vendor/npm/react@0.13.3/lib/setTextContent.js +0 -16
- data/public/vendor/npm/react@0.13.3/lib/shallowEqual.js +0 -42
- data/public/vendor/npm/react@0.13.3/lib/shouldUpdateReactComponent.js +0 -51
- data/public/vendor/npm/react@0.13.3/lib/toArray.js +0 -21
- data/public/vendor/npm/react@0.13.3/lib/traverseAllChildren.js +0 -104
- data/public/vendor/npm/react@0.13.3/lib/update.js +0 -78
- data/public/vendor/npm/react@0.13.3/lib/warning.js +0 -34
- data/public/vendor/npm/react@0.13.3/package.json +0 -34
- data/public/vendor/npm/react@0.13.3/react.js +0 -2
- data/public/vendor/npm/react@0.13.3.js +0 -1
- data/public/vendor/npm/readable-stream@1.1.13/duplex.js +0 -2
- data/public/vendor/npm/readable-stream@1.1.13/passthrough.js +0 -2
- data/public/vendor/npm/readable-stream@1.1.13/readable.js +0 -8
- data/public/vendor/npm/readable-stream@1.1.13/transform.js +0 -2
- data/public/vendor/npm/readable-stream@1.1.13/writable.js +0 -2
- data/public/vendor/npm/readable-stream@1.1.13.js +0 -1
- data/public/vendor/npm/source-map@0.1.31/CHANGELOG.md +0 -112
- data/public/vendor/npm/source-map@0.1.31/LICENSE +0 -28
- data/public/vendor/npm/source-map@0.1.31/Makefile.dryice.js +0 -89
- data/public/vendor/npm/source-map@0.1.31/README.md +0 -434
- data/public/vendor/npm/source-map@0.1.31/build/assert-shim.js +0 -58
- data/public/vendor/npm/source-map@0.1.31/build/mini-require.js +0 -154
- data/public/vendor/npm/source-map@0.1.31/build/prefix-source-map.jsm +0 -20
- data/public/vendor/npm/source-map@0.1.31/build/prefix-utils.jsm +0 -18
- data/public/vendor/npm/source-map@0.1.31/build/suffix-browser.js +0 -8
- data/public/vendor/npm/source-map@0.1.31/build/suffix-source-map.jsm +0 -6
- data/public/vendor/npm/source-map@0.1.31/build/suffix-utils.jsm +0 -21
- data/public/vendor/npm/source-map@0.1.31/build/test-prefix.js +0 -10
- data/public/vendor/npm/source-map@0.1.31/build/test-suffix.js +0 -5
- data/public/vendor/npm/source-map@0.1.31/lib/source-map/array-set.js +0 -49
- data/public/vendor/npm/source-map@0.1.31/lib/source-map/base64-vlq.js +0 -56
- data/public/vendor/npm/source-map@0.1.31/lib/source-map/base64.js +0 -44
- data/public/vendor/npm/source-map@0.1.31/lib/source-map/binary-search.js +0 -83
- data/public/vendor/npm/source-map@0.1.31/lib/source-map/source-map-consumer.js +0 -238
- data/public/vendor/npm/source-map@0.1.31/lib/source-map/source-map-generator.js +0 -231
- data/public/vendor/npm/source-map@0.1.31/lib/source-map/source-node.js +0 -234
- data/public/vendor/npm/source-map@0.1.31/lib/source-map/util.js +0 -207
- data/public/vendor/npm/source-map@0.1.31/lib/source-map.js +0 -4
- data/public/vendor/npm/source-map@0.1.31/package.json +0 -52
- data/public/vendor/npm/source-map@0.1.31/test/run-tests.js +0 -50
- data/public/vendor/npm/source-map@0.1.31/test/source-map/test-api.js +0 -19
- data/public/vendor/npm/source-map@0.1.31/test/source-map/test-array-set.js +0 -84
- data/public/vendor/npm/source-map@0.1.31/test/source-map/test-base64-vlq.js +0 -17
- data/public/vendor/npm/source-map@0.1.31/test/source-map/test-base64.js +0 -26
- data/public/vendor/npm/source-map@0.1.31/test/source-map/test-binary-search.js +0 -37
- data/public/vendor/npm/source-map@0.1.31/test/source-map/test-dog-fooding.js +0 -76
- data/public/vendor/npm/source-map@0.1.31/test/source-map/test-source-map-consumer.js +0 -426
- data/public/vendor/npm/source-map@0.1.31/test/source-map/test-source-map-generator.js +0 -480
- data/public/vendor/npm/source-map@0.1.31/test/source-map/test-source-node.js +0 -307
- data/public/vendor/npm/source-map@0.1.31/test/source-map/util.js +0 -84
- data/public/vendor/npm/source-map@0.1.31.js +0 -1
- data/public/vendor/npm/through@2.3.8/LICENSE.APACHE2 +0 -15
- data/public/vendor/npm/through@2.3.8/LICENSE.MIT +0 -24
- data/public/vendor/npm/through@2.3.8/index.js +0 -93
- data/public/vendor/npm/through@2.3.8/package.json +0 -36
- data/public/vendor/npm/through@2.3.8/readme.markdown +0 -64
- data/public/vendor/npm/through@2.3.8/test/async.js +0 -26
- data/public/vendor/npm/through@2.3.8/test/auto-destroy.js +0 -26
- data/public/vendor/npm/through@2.3.8/test/buffering.js +0 -57
- data/public/vendor/npm/through@2.3.8/test/end.js +0 -37
- data/public/vendor/npm/through@2.3.8/test/index.js +0 -98
- data/public/vendor/npm/through@2.3.8/test.js +0 -2
- data/public/vendor/npm/through@2.3.8.js +0 -1
- data/views/_options.erb +0 -156
- /data/public/vendor/github/jspm/{nodelibs-buffer@0.1.0 → nodelibs-buffer@0.1.1}/index.js +0 -0
- /data/public/vendor/github/jspm/{nodelibs-process@0.1.1 → nodelibs-process@0.1.2}/index.js +0 -0
- /data/public/vendor/npm/{readable-stream@1.1.13 → assert@1.5.0}/LICENSE +0 -0
- /data/public/vendor/npm/{buffer@3.4.3 → buffer@5.7.1}/LICENSE +0 -0
- /data/public/vendor/npm/{core-util-is@1.0.1 → core-util-is@1.0.3}/README.md +0 -0
- /data/public/vendor/npm/{process@0.10.1 → process@0.11.10}/LICENSE +0 -0
- /data/public/vendor/npm/{process@0.10.1 → process@0.11.10}/index.js +0 -0
- /data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/README.md +0 -0
- /data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/float.patch +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 61b15f95cdc065739de70f2ba94d3022e6beec789dd9c64199ee1be3a2459c63
|
4
|
+
data.tar.gz: d6c108bd39cb8c6a832787d2cbaa52b2c5a3653c0b08b289cb149b7221a9870c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d4c2b1785980dd4e46a24a8a5a6d36652fb23f5389f9b7320cd9360f081cbad82b6dc6bfe735b5321738611094052631af0de635b77676587d703d466bd5f604
|
7
|
+
data.tar.gz: 235e35e8ba4331894a7ac9f107d950462d3b3d892ddafc6f58d3ba48fbe6a03cfc016ac64798921472e296a0cb5577245aca49cbb517d897094a501ec4483beb
|
data/bin/sequenceserver
CHANGED
@@ -119,6 +119,11 @@ begin
|
|
119
119
|
'Port to run SequenceServer on',
|
120
120
|
argument: true
|
121
121
|
|
122
|
+
on 'o', 'optimistic=',
|
123
|
+
'Optimistic mode does not perform database compatibility checks, which can be faster. ' \
|
124
|
+
'Only use this if you format FASTAs with "sequenceserver -make-blast-databases"',
|
125
|
+
argument: true
|
126
|
+
|
122
127
|
on 's', 'set',
|
123
128
|
'Set configuration value in default or given config file'
|
124
129
|
|
@@ -296,7 +301,7 @@ begin
|
|
296
301
|
unless response =~ /^[n]$/i
|
297
302
|
puts
|
298
303
|
puts 'Searching ...'
|
299
|
-
if SequenceServer.makeblastdb.
|
304
|
+
if SequenceServer.makeblastdb.any_to_format?
|
300
305
|
formatted = SequenceServer.makeblastdb.format
|
301
306
|
exit! if formatted.empty? && !set?
|
302
307
|
redo unless set?
|
@@ -353,7 +358,7 @@ begin
|
|
353
358
|
end
|
354
359
|
|
355
360
|
if make_blast_databases?
|
356
|
-
if SequenceServer.makeblastdb.
|
361
|
+
if SequenceServer.makeblastdb.any_to_format_or_reformat?
|
357
362
|
puts
|
358
363
|
puts <<~MSG
|
359
364
|
SequenceServer has scanned your databases directory and will now offer
|
@@ -1,8 +1,30 @@
|
|
1
1
|
module SequenceServer
|
2
|
+
Error = Class.new(StandardError)
|
3
|
+
|
4
|
+
# DatabaseUnreachableError is raised when the serialised Job object is
|
5
|
+
# refering to a database that is not present in the current filesystem.
|
6
|
+
class DatabaseUnreachableError < Error
|
7
|
+
attr_reader :more_info
|
8
|
+
|
9
|
+
def initialize(more_info)
|
10
|
+
super
|
11
|
+
@more_info = more_info
|
12
|
+
end
|
13
|
+
|
14
|
+
def title
|
15
|
+
'Sequence database unreachable'
|
16
|
+
end
|
17
|
+
|
18
|
+
def message
|
19
|
+
"The action you're trying to perform is not possible because \
|
20
|
+
the database is unreachable. This can happen if the database has \
|
21
|
+
been deleted or you are performing an action on an imported job."
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
2
25
|
# API errors have an http status, title, message, and additional information
|
3
26
|
# like stacktrace or information from program output.
|
4
|
-
|
5
|
-
end
|
27
|
+
APIError = Class.new(Error)
|
6
28
|
|
7
29
|
# Job not found (404).
|
8
30
|
class NotFound < APIError
|
@@ -25,23 +25,32 @@ module SequenceServer
|
|
25
25
|
|
26
26
|
attr_reader :format, :mime, :specifiers
|
27
27
|
|
28
|
-
def
|
29
|
-
@
|
28
|
+
def filepath
|
29
|
+
@filepath ||= File.join(job.dir, filename)
|
30
|
+
end
|
31
|
+
|
32
|
+
def size
|
33
|
+
File.size(filepath)
|
30
34
|
end
|
31
35
|
|
32
36
|
def filename
|
33
37
|
@filename ||= "sequenceserver-#{type}_report.#{mime}"
|
34
38
|
end
|
35
39
|
|
40
|
+
def read_file
|
41
|
+
File.read(filepath)
|
42
|
+
end
|
43
|
+
|
36
44
|
private
|
37
45
|
|
38
46
|
attr_reader :job, :type
|
39
47
|
|
40
48
|
def run
|
41
|
-
return if File.exist?(
|
49
|
+
return if File.exist?(filepath)
|
50
|
+
|
42
51
|
command = "blast_formatter -archive '#{job.stdout}'" \
|
43
52
|
" -outfmt '#{format} #{specifiers}'"
|
44
|
-
sys(command, path: config[:bin], dir: DOTDIR, stdout:
|
53
|
+
sys(command, path: config[:bin], dir: DOTDIR, stdout: filepath)
|
45
54
|
rescue CommandFailed => e
|
46
55
|
# Mostly we will never get here: empty archive file,
|
47
56
|
# file permissions, broken BLAST binaries, etc. will
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'sequenceserver/job'
|
2
|
+
require 'sequenceserver/zip_file_generator'
|
2
3
|
|
3
4
|
module SequenceServer
|
4
5
|
# BLAST module.
|
@@ -24,13 +25,18 @@ module SequenceServer
|
|
24
25
|
@databases = Database[params[:databases]]
|
25
26
|
@advanced = params[:advanced].to_s.strip
|
26
27
|
@options = @advanced + defaults
|
28
|
+
# The following params are for analytics only
|
29
|
+
@num_threads = config[:num_threads]
|
30
|
+
@query_length = calculate_query_size
|
31
|
+
@databases_ncharacters_total = calculate_databases_ncharacters_total
|
27
32
|
end
|
28
33
|
end
|
29
34
|
end
|
30
35
|
|
31
36
|
# :nodoc:
|
32
37
|
# Attributes used by us - should be considered private.
|
33
|
-
attr_reader :
|
38
|
+
attr_reader :advanced
|
39
|
+
attr_reader :databases, :databases_ncharacters_total, :method, :num_threads, :options, :qfile, :query_length
|
34
40
|
|
35
41
|
# :nodoc:
|
36
42
|
# Deprecated; see Report#extract_params
|
@@ -53,7 +59,6 @@ module SequenceServer
|
|
53
59
|
# Override Job#raise! to raise specific API errors based on exitstatus
|
54
60
|
# and using contents of stderr to provide context about the error.
|
55
61
|
#
|
56
|
-
# rubocop:disable Metrics/CyclomaticComplexity
|
57
62
|
def raise!
|
58
63
|
# Return true exit status is 0 and stdout is not empty.
|
59
64
|
return true if exitstatus.zero? && !File.zero?(stdout)
|
@@ -92,10 +97,38 @@ module SequenceServer
|
|
92
97
|
MSG
|
93
98
|
end
|
94
99
|
end
|
95
|
-
|
100
|
+
|
101
|
+
# Use it with a block to get a self-cleaning temporary archive file
|
102
|
+
# of the contents of the job directory.
|
103
|
+
# job.as_archived_file do |tmp_file|
|
104
|
+
# # do things with tmp_file
|
105
|
+
# end
|
106
|
+
def as_archived_file(&block)
|
107
|
+
Dir.mktmpdir(id.to_s) do |tmp_dir|
|
108
|
+
file_path = "#{tmp_dir}/#{id}.zip"
|
109
|
+
ZipFileGenerator.new(dir, file_path).write
|
110
|
+
File.open(file_path, 'r') do |file|
|
111
|
+
block.call(file)
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
96
115
|
|
97
116
|
private
|
98
117
|
|
118
|
+
def calculate_databases_ncharacters_total
|
119
|
+
databases.map(&:ncharacters).map(&:to_i).reduce(:+)
|
120
|
+
end
|
121
|
+
|
122
|
+
def calculate_query_size
|
123
|
+
size = 0
|
124
|
+
IO.foreach(@qfile) do |line|
|
125
|
+
next if line[0] == '>'
|
126
|
+
|
127
|
+
size += line.gsub(/\s+/, '').length
|
128
|
+
end
|
129
|
+
size
|
130
|
+
end
|
131
|
+
|
99
132
|
def validate(params)
|
100
133
|
validate_method params[:method]
|
101
134
|
validate_sequences params[:sequence]
|
@@ -109,12 +142,14 @@ module SequenceServer
|
|
109
142
|
|
110
143
|
def validate_method(method)
|
111
144
|
return true if ALGORITHMS.include? method
|
145
|
+
|
112
146
|
fail InputError, 'BLAST algorithm should be one of:' \
|
113
147
|
" #{ALGORITHMS.join(', ')}."
|
114
148
|
end
|
115
149
|
|
116
150
|
def validate_sequences(sequences)
|
117
151
|
return true if sequences.is_a?(String) && !sequences.empty?
|
152
|
+
|
118
153
|
fail InputError, 'Sequences should be a non-empty string.'
|
119
154
|
end
|
120
155
|
|
@@ -122,6 +157,7 @@ module SequenceServer
|
|
122
157
|
ids = Database.ids
|
123
158
|
return true if database_ids.is_a?(Array) && !database_ids.empty? &&
|
124
159
|
(ids & database_ids).length == database_ids.length
|
160
|
+
|
125
161
|
fail InputError, "Database id should be one of: #{ids.join("\n")}."
|
126
162
|
end
|
127
163
|
|
@@ -133,9 +169,7 @@ module SequenceServer
|
|
133
169
|
return true if !options || (options.is_a?(String) &&
|
134
170
|
options.strip.empty?)
|
135
171
|
|
136
|
-
unless allowed_chars.match(options)
|
137
|
-
fail InputError, 'Invalid characters detected in options.'
|
138
|
-
end
|
172
|
+
fail InputError, 'Invalid characters detected in options.' unless allowed_chars.match(options)
|
139
173
|
|
140
174
|
if disallowed_options.match(options)
|
141
175
|
failedopt = Regexp.last_match[0]
|
@@ -146,7 +180,7 @@ module SequenceServer
|
|
146
180
|
end
|
147
181
|
|
148
182
|
def allowed_chars
|
149
|
-
/\A[a-z0-9\-_
|
183
|
+
/\A[a-z0-9\-_. ',]*\Z/i
|
150
184
|
end
|
151
185
|
|
152
186
|
def disallowed_options
|
@@ -35,41 +35,72 @@ module SequenceServer
|
|
35
35
|
# Attributes parsed from job metadata and BLAST output.
|
36
36
|
attr_reader :querydb, :dbtype, :params
|
37
37
|
|
38
|
-
def to_json
|
39
|
-
|
40
|
-
|
38
|
+
def to_json(*_args)
|
39
|
+
generate
|
40
|
+
|
41
|
+
%i[querydb program program_version params stats
|
42
|
+
queries].inject({}) do |h, k|
|
41
43
|
h[k] = send(k)
|
42
44
|
h
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
45
|
+
end.update(search_id: job.id,
|
46
|
+
submitted_at: job.submitted_at.utc,
|
47
|
+
imported_xml: !job.imported_xml_file.nil?,
|
48
|
+
seqserv_version: SequenceServer::VERSION,
|
49
|
+
cloud_sharing_enabled: SequenceServer.config[:cloud_share_url].start_with?('http'),
|
50
|
+
non_parse_seqids: !!job.databases&.any?(&:non_parse_seqids?)).to_json
|
48
51
|
end
|
49
52
|
|
50
|
-
|
53
|
+
def xml_file_size
|
54
|
+
return File.size(job.imported_xml_file) if job.imported_xml_file
|
55
|
+
|
56
|
+
generate
|
57
|
+
|
58
|
+
xml_formatter.size
|
59
|
+
end
|
51
60
|
|
52
61
|
# Generate report.
|
53
62
|
def generate
|
63
|
+
return self if @_generated
|
64
|
+
|
54
65
|
job.raise!
|
55
66
|
xml_ir = nil
|
56
67
|
tsv_ir = nil
|
57
68
|
if job.imported_xml_file
|
58
69
|
xml_ir = parse_xml File.read(job.imported_xml_file)
|
59
|
-
tsv_ir = Hash.new do |h1,k1|
|
60
|
-
h1[k1] = Hash.new do |h2,k2|
|
61
|
-
h2[k2]=['','',[]]
|
70
|
+
tsv_ir = Hash.new do |h1, k1|
|
71
|
+
h1[k1] = Hash.new do |h2, k2|
|
72
|
+
h2[k2] = ['', '', []]
|
62
73
|
end
|
63
74
|
end
|
64
75
|
else
|
65
|
-
xml_ir = parse_xml
|
66
|
-
tsv_ir = parse_tsv
|
76
|
+
xml_ir = parse_xml(xml_formatter.read_file)
|
77
|
+
tsv_ir = parse_tsv(tsv_formatter.read_file)
|
67
78
|
end
|
68
79
|
extract_program_info xml_ir
|
69
80
|
extract_db_info xml_ir
|
70
81
|
extract_params xml_ir
|
71
82
|
extract_stats xml_ir
|
72
83
|
extract_queries xml_ir, tsv_ir
|
84
|
+
|
85
|
+
@_generated = true
|
86
|
+
|
87
|
+
self
|
88
|
+
end
|
89
|
+
|
90
|
+
def done?
|
91
|
+
return true if job.imported_xml_file
|
92
|
+
|
93
|
+
File.exist?(xml_formatter.filepath) && File.exist?(tsv_formatter.filepath)
|
94
|
+
end
|
95
|
+
|
96
|
+
private
|
97
|
+
|
98
|
+
def xml_formatter
|
99
|
+
@xml_formatter ||= Formatter.run(job, 'xml')
|
100
|
+
end
|
101
|
+
|
102
|
+
def tsv_formatter
|
103
|
+
@tsv_formatter ||= Formatter.run(job, 'custom_tsv')
|
73
104
|
end
|
74
105
|
|
75
106
|
# Make program name and program name + version available via `program`
|
@@ -122,13 +153,13 @@ module SequenceServer
|
|
122
153
|
def extract_stats(ir)
|
123
154
|
stats = ir[8].first[5][0]
|
124
155
|
@stats = {
|
125
|
-
nsequences:
|
126
|
-
ncharacters:
|
127
|
-
hsp_length:
|
156
|
+
nsequences: stats[0],
|
157
|
+
ncharacters: stats[1],
|
158
|
+
hsp_length: stats[2],
|
128
159
|
search_space: stats[3],
|
129
|
-
kappa:
|
130
|
-
labmda:
|
131
|
-
entropy:
|
160
|
+
kappa: stats[4],
|
161
|
+
labmda: stats[5],
|
162
|
+
entropy: stats[6]
|
132
163
|
}
|
133
164
|
end
|
134
165
|
|
@@ -144,6 +175,7 @@ module SequenceServer
|
|
144
175
|
# Create Hit objects for the given query from the given ir.
|
145
176
|
def extract_hits(xml_ir, tsv_ir, query)
|
146
177
|
return if xml_ir == ["\n"] # => No hits.
|
178
|
+
|
147
179
|
xml_ir.each do |n|
|
148
180
|
# If hit comes from a non -parse_seqids database, then id (n[1]) is a
|
149
181
|
# BLAST assigned internal id of the format 'gnl|BL_ORD_ID|serial'. We
|
@@ -169,7 +201,7 @@ module SequenceServer
|
|
169
201
|
def extract_hsps(xml_ir, tsv_ir, hit)
|
170
202
|
xml_ir.each_with_index do |n, i|
|
171
203
|
n.insert(14, tsv_ir[i])
|
172
|
-
hsp = HSP.new(
|
204
|
+
hsp = HSP.new(hit, *n)
|
173
205
|
hit.hsps << hsp
|
174
206
|
end
|
175
207
|
end
|
@@ -177,8 +209,9 @@ module SequenceServer
|
|
177
209
|
def parse_xml(xml)
|
178
210
|
node_to_array Ox.parse(xml).root
|
179
211
|
rescue Ox::ParseError
|
180
|
-
|
181
|
-
|
212
|
+
raise 'Error parsing XML file' if job.imported_xml_file
|
213
|
+
|
214
|
+
raise InputError, <<~MSG
|
182
215
|
BLAST generated incorrect XML output. This can happen if sequence ids in your
|
183
216
|
databases are not unique across all files. As a temporary workaround, you can
|
184
217
|
repeat the search with one database at a time. Proper fix is to recreate the
|
@@ -231,9 +264,12 @@ module SequenceServer
|
|
231
264
|
# ...
|
232
265
|
# }
|
233
266
|
def parse_tsv(tsv)
|
234
|
-
ir = Hash.new {|h, k| h[k] = {} }
|
267
|
+
ir = Hash.new { |h, k| h[k] = {} }
|
235
268
|
tsv.each_line do |line|
|
236
|
-
next if line.start_with? '#'
|
269
|
+
next if line.start_with? '#'
|
270
|
+
|
271
|
+
row = line.chomp.split("\t")
|
272
|
+
|
237
273
|
(ir[row[0]][row[1]] ||= [row[2], row[3], []])[2] << row[4]
|
238
274
|
end
|
239
275
|
ir
|
@@ -246,14 +282,14 @@ module SequenceServer
|
|
246
282
|
|
247
283
|
param_list.each_with_index do |word, i|
|
248
284
|
nxt = param_list[i + 1]
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
285
|
+
next unless word.start_with? '-'
|
286
|
+
|
287
|
+
word.sub!('-', '')
|
288
|
+
res[word] = unless nxt.nil? || nxt.start_with?('-')
|
289
|
+
nxt
|
290
|
+
else
|
291
|
+
'True'
|
292
|
+
end
|
257
293
|
end
|
258
294
|
res
|
259
295
|
end
|
@@ -11,12 +11,19 @@ module SequenceServer
|
|
11
11
|
|
12
12
|
def initialize(data = {})
|
13
13
|
@data = normalize data
|
14
|
+
|
14
15
|
@config_file = @data.delete(:config_file)
|
15
16
|
if @config_file
|
16
17
|
@config_file = File.expand_path(@config_file)
|
17
|
-
@data = parse_config_file.
|
18
|
+
@data = parse_config_file.deep_merge @data
|
18
19
|
end
|
19
|
-
|
20
|
+
|
21
|
+
@data = defaults.deep_merge @data
|
22
|
+
|
23
|
+
return unless @upgraded
|
24
|
+
|
25
|
+
logger.info 'You are using old configuration syntax. ' \
|
26
|
+
'Run `sequenceserver -s` to update your config file syntax.'
|
20
27
|
end
|
21
28
|
|
22
29
|
attr_reader :data, :config_file
|
@@ -39,6 +46,7 @@ module SequenceServer
|
|
39
46
|
# Write config data to config file.
|
40
47
|
def write_config_file
|
41
48
|
return unless config_file
|
49
|
+
|
42
50
|
File.open(config_file, 'w') do |f|
|
43
51
|
f.puts(data.delete_if { |_, v| v.nil? }.to_yaml)
|
44
52
|
end
|
@@ -46,32 +54,34 @@ module SequenceServer
|
|
46
54
|
|
47
55
|
private
|
48
56
|
|
49
|
-
# Symbolizes keys.
|
57
|
+
# Symbolizes keys. Rename/reformat key-values.
|
50
58
|
def normalize(data)
|
51
59
|
return {} unless data
|
52
60
|
|
53
61
|
# Symbolize keys.
|
54
|
-
data =
|
62
|
+
data = data.transform_keys(&:to_sym)
|
55
63
|
|
56
|
-
#
|
57
|
-
#
|
64
|
+
# Very old config files may have a key called `database`.
|
65
|
+
# Rename it to `database_dir`
|
58
66
|
if data[:database]
|
59
67
|
database_dir = data.delete(:database)
|
60
68
|
data[:database_dir] ||= database_dir
|
69
|
+
@upgrade = true
|
61
70
|
end
|
62
71
|
|
63
|
-
#
|
64
|
-
#
|
65
|
-
#
|
66
|
-
#
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
72
|
+
# Old config files may have an options hash with array values. We turn the
|
73
|
+
# array values into a hash. The logic is simple: If the array value is the
|
74
|
+
# same as default, we give it the key 'default', otherwise we give it the
|
75
|
+
# key 'custom'
|
76
|
+
data[:options]&.each do |key, val|
|
77
|
+
next if val.is_a? Hash
|
78
|
+
|
79
|
+
data[:options][key] = if val == defaults[:options][key][:default]
|
80
|
+
{ default: val }
|
81
|
+
else
|
82
|
+
{ custom: val }
|
83
|
+
end
|
84
|
+
@upgraded = true
|
75
85
|
end
|
76
86
|
|
77
87
|
data
|
@@ -86,8 +96,8 @@ module SequenceServer
|
|
86
96
|
end
|
87
97
|
logger.info "Reading configuration file: #{config_file}."
|
88
98
|
normalize YAML.load_file(config_file)
|
89
|
-
rescue =>
|
90
|
-
raise CONFIG_FILE_ERROR.new(config_file,
|
99
|
+
rescue StandardError => e
|
100
|
+
raise CONFIG_FILE_ERROR.new(config_file, e)
|
91
101
|
end
|
92
102
|
|
93
103
|
def file?(file)
|
@@ -96,20 +106,35 @@ module SequenceServer
|
|
96
106
|
|
97
107
|
# Default configuration data.
|
98
108
|
def defaults
|
99
|
-
{
|
109
|
+
@defaults ||= {
|
100
110
|
host: '0.0.0.0',
|
101
111
|
port: 4567,
|
102
112
|
databases_widget: 'classic',
|
103
113
|
options: {
|
104
|
-
blastn:
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
114
|
+
blastn: {
|
115
|
+
default: ['-task blastn', '-evalue 1e-5']
|
116
|
+
},
|
117
|
+
blastp: {
|
118
|
+
default: ['-evalue 1e-5']
|
119
|
+
},
|
120
|
+
blastx: {
|
121
|
+
default: ['-evalue 1e-5']
|
122
|
+
},
|
123
|
+
tblastx: {
|
124
|
+
default: ['-evalue 1e-5']
|
125
|
+
},
|
126
|
+
tblastn: {
|
127
|
+
default: ['-evalue 1e-5']
|
128
|
+
}
|
109
129
|
},
|
110
130
|
num_threads: 1,
|
111
131
|
num_jobs: 1,
|
112
|
-
job_lifetime:
|
132
|
+
job_lifetime: 43_200,
|
133
|
+
# Set cloud_share_url to 'disabled' to disable the cloud sharing feature
|
134
|
+
cloud_share_url: 'https://share.sequenceserver.com/api/v1/shared-job',
|
135
|
+
# Warn in the UI before rendering results larger than this value
|
136
|
+
large_result_warning_threshold: 250 * 1024 * 1024,
|
137
|
+
optimistic: false # Faster, but does not perform DB compatibility checks
|
113
138
|
}
|
114
139
|
end
|
115
140
|
end
|
data/lib/sequenceserver/job.rb
CHANGED
@@ -25,15 +25,19 @@ module SequenceServer
|
|
25
25
|
# Creates and queues a job. Returns created job object.
|
26
26
|
def create(params)
|
27
27
|
job = BLAST::Job.new(params) # TODO: Dynamic dispatch.
|
28
|
-
|
29
|
-
job
|
28
|
+
enqueue(job)
|
30
29
|
end
|
31
30
|
|
32
31
|
# Fetches job with the given id.
|
33
32
|
def fetch(id)
|
34
33
|
job_file = File.join(DOTDIR, id, 'job.yaml')
|
35
34
|
fail NotFound unless File.exist?(job_file)
|
36
|
-
|
35
|
+
if RUBY_VERSION < '3.1.0'
|
36
|
+
YAML.load_file(job_file)
|
37
|
+
else
|
38
|
+
YAML.load_file(job_file, permitted_classes: [Time, Symbol, SequenceServer::BLAST::Job, \
|
39
|
+
SequenceServer::Database, SequenceServer::Job])
|
40
|
+
end
|
37
41
|
end
|
38
42
|
|
39
43
|
# Deletes job with the given id.
|
@@ -47,6 +51,12 @@ module SequenceServer
|
|
47
51
|
.map { |f| fetch File.basename File.dirname f }
|
48
52
|
end
|
49
53
|
|
54
|
+
# Enqueues a job that is already created, returns the job object
|
55
|
+
def enqueue(job)
|
56
|
+
pool.queue { job.run }
|
57
|
+
job
|
58
|
+
end
|
59
|
+
|
50
60
|
private
|
51
61
|
|
52
62
|
# Thread pool used for running BLAST searches.
|
@@ -1,18 +1,18 @@
|
|
1
1
|
require 'sequenceserver/job'
|
2
2
|
|
3
3
|
module SequenceServer
|
4
|
-
|
5
4
|
# Removes expired jobs in a background thread.
|
6
5
|
#
|
7
6
|
# Job lifetime is provided in minutes. It can be zero in which case jobs will
|
8
7
|
# be deleted as soon as they are done, or it can be Infinity in which case
|
9
8
|
# jobs will never be deleted. Default is to delete finished jobs after 7 days.
|
10
9
|
class JobRemover
|
11
|
-
DEFAULT_JOB_LIFETIME =
|
10
|
+
DEFAULT_JOB_LIFETIME = 43_200 # minutes (i.e., 30 days)
|
12
11
|
|
13
12
|
def initialize(job_lifetime)
|
14
13
|
@job_lifetime = job_lifetime || DEFAULT_JOB_LIFETIME
|
15
|
-
return if @job_lifetime == Float::INFINITY
|
14
|
+
return if @job_lifetime == 'Infinity' || @job_lifetime == Float::INFINITY
|
15
|
+
|
16
16
|
@job_lifetime = Integer(@job_lifetime) * 60
|
17
17
|
spawn_cleanup
|
18
18
|
end
|
@@ -25,34 +25,30 @@ module SequenceServer
|
|
25
25
|
def spawn_cleanup
|
26
26
|
Thread.new do
|
27
27
|
loop do
|
28
|
-
|
29
|
-
|
30
|
-
finished_jobs = Job.all.select { |f| f.done? }
|
31
|
-
|
32
|
-
# Cleanup finished jobs that have lived a lifetime.
|
33
|
-
expired_jobs = finished_jobs.select do |job|
|
34
|
-
(job.completed_at + @job_lifetime) <= now
|
35
|
-
end
|
36
|
-
expired_jobs.each { |job| Job.delete job.id }
|
37
|
-
unless expired_jobs.empty?
|
38
|
-
logger.info "#{logid}: deleted #{expired_jobs.count} old jobs."
|
39
|
-
end
|
40
|
-
|
41
|
-
# Decide when to cleanup next.
|
42
|
-
remaining_jobs = finished_jobs - expired_jobs
|
43
|
-
oldest_time = remaining_jobs.map(&:completed_at).min
|
44
|
-
if oldest_time && now < (oldest_time + @job_lifetime)
|
45
|
-
@next_cleanup = (oldest_time + @job_lifetime) - now
|
46
|
-
else
|
47
|
-
@next_cleanup = @job_lifetime
|
48
|
-
end
|
28
|
+
now = Time.now
|
29
|
+
finished_jobs = Job.all.select(&:done?)
|
49
30
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
logger.fatal("#{logid}: #{e.inspect}\n#{e.backtrace.join("\n")}")
|
54
|
-
Thread.exit
|
31
|
+
# Cleanup finished jobs that have lived a lifetime.
|
32
|
+
expired_jobs = finished_jobs.select do |job|
|
33
|
+
(job.completed_at + @job_lifetime) <= now
|
55
34
|
end
|
35
|
+
expired_jobs.each { |job| Job.delete job.id }
|
36
|
+
logger.info "#{logid}: deleted #{expired_jobs.count} old jobs." unless expired_jobs.empty?
|
37
|
+
|
38
|
+
# Decide when to cleanup next.
|
39
|
+
remaining_jobs = finished_jobs - expired_jobs
|
40
|
+
oldest_time = remaining_jobs.map(&:completed_at).min
|
41
|
+
@next_cleanup = if oldest_time && now < (oldest_time + @job_lifetime)
|
42
|
+
(oldest_time + @job_lifetime) - now
|
43
|
+
else
|
44
|
+
@job_lifetime
|
45
|
+
end
|
46
|
+
|
47
|
+
# Sleep till next cleanup.
|
48
|
+
sleep @next_cleanup.ceil
|
49
|
+
rescue StandardError => e
|
50
|
+
logger.fatal("#{logid}: #{e.inspect}\n#{e.backtrace.join("\n")}")
|
51
|
+
Thread.exit
|
56
52
|
end
|
57
53
|
end
|
58
54
|
end
|