sequenceserver 2.0.0 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/sequenceserver/api_errors.rb +24 -2
- data/lib/sequenceserver/blast/job.rb +41 -7
- data/lib/sequenceserver/blast/report.rb +36 -30
- data/lib/sequenceserver/config.rb +49 -27
- data/lib/sequenceserver/job.rb +13 -3
- data/lib/sequenceserver/job_remover.rb +25 -29
- data/lib/sequenceserver/refinements.rb +15 -0
- data/lib/sequenceserver/routes.rb +69 -7
- data/lib/sequenceserver/sequence.rb +8 -7
- data/lib/sequenceserver/sys.rb +2 -2
- data/lib/sequenceserver/version.rb +1 -1
- data/lib/sequenceserver/zip_file_generator.rb +56 -0
- data/lib/sequenceserver.rb +1 -0
- 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 +315 -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/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/short_response.json +2240 -0
- data/public/js/tests/report.spec.js +99 -0
- data/public/js/tests/search_button.spec.js +14 -0
- data/public/js/tests/search_query.spec.js +41 -0
- 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 +318 -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: 3cf703fae66ad96d285ed0556c387dabb0d69be120db5bdd3c3f9f8a03d3a814
|
4
|
+
data.tar.gz: 503bb0b69cbf773ab536d99f6782f4fff19f4872c49e6377d49a9f7820861c3b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1896b2afddf6033c98747f7eba1dabbe15b270940bd19760ebef4ed75af267760d45d40215663173ccb2f964472b458179a459316b86ef72bc26aa75d62faad0
|
7
|
+
data.tar.gz: 4ac1d9a5a205d299af4b1467521a9bc539e3833d0a571cfa90b490b19df958fc0f7ee2e1341e3d8d5e19fccbe2ee6874884fc7fbcbfbdc6abbe1e60df3c9a76e
|
@@ -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
|
@@ -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,16 +35,17 @@ 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
|
+
%i[querydb program program_version params stats
|
40
|
+
queries].inject({}) do |h, k|
|
41
41
|
h[k] = send(k)
|
42
42
|
h
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
43
|
+
end.update(search_id: job.id,
|
44
|
+
submitted_at: job.submitted_at.utc,
|
45
|
+
imported_xml: !job.imported_xml_file.nil?,
|
46
|
+
seqserv_version: SequenceServer::VERSION,
|
47
|
+
cloud_sharing_enabled: SequenceServer.config[:cloud_share_url].start_with?('http'),
|
48
|
+
non_parse_seqids: !!job.databases&.any?(&:non_parse_seqids?)).to_json
|
48
49
|
end
|
49
50
|
|
50
51
|
private
|
@@ -56,9 +57,9 @@ module SequenceServer
|
|
56
57
|
tsv_ir = nil
|
57
58
|
if job.imported_xml_file
|
58
59
|
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]=['','',[]]
|
60
|
+
tsv_ir = Hash.new do |h1, k1|
|
61
|
+
h1[k1] = Hash.new do |h2, k2|
|
62
|
+
h2[k2] = ['', '', []]
|
62
63
|
end
|
63
64
|
end
|
64
65
|
else
|
@@ -122,13 +123,13 @@ module SequenceServer
|
|
122
123
|
def extract_stats(ir)
|
123
124
|
stats = ir[8].first[5][0]
|
124
125
|
@stats = {
|
125
|
-
nsequences:
|
126
|
-
ncharacters:
|
127
|
-
hsp_length:
|
126
|
+
nsequences: stats[0],
|
127
|
+
ncharacters: stats[1],
|
128
|
+
hsp_length: stats[2],
|
128
129
|
search_space: stats[3],
|
129
|
-
kappa:
|
130
|
-
labmda:
|
131
|
-
entropy:
|
130
|
+
kappa: stats[4],
|
131
|
+
labmda: stats[5],
|
132
|
+
entropy: stats[6]
|
132
133
|
}
|
133
134
|
end
|
134
135
|
|
@@ -144,6 +145,7 @@ module SequenceServer
|
|
144
145
|
# Create Hit objects for the given query from the given ir.
|
145
146
|
def extract_hits(xml_ir, tsv_ir, query)
|
146
147
|
return if xml_ir == ["\n"] # => No hits.
|
148
|
+
|
147
149
|
xml_ir.each do |n|
|
148
150
|
# If hit comes from a non -parse_seqids database, then id (n[1]) is a
|
149
151
|
# BLAST assigned internal id of the format 'gnl|BL_ORD_ID|serial'. We
|
@@ -169,7 +171,7 @@ module SequenceServer
|
|
169
171
|
def extract_hsps(xml_ir, tsv_ir, hit)
|
170
172
|
xml_ir.each_with_index do |n, i|
|
171
173
|
n.insert(14, tsv_ir[i])
|
172
|
-
hsp = HSP.new(
|
174
|
+
hsp = HSP.new(hit, *n)
|
173
175
|
hit.hsps << hsp
|
174
176
|
end
|
175
177
|
end
|
@@ -177,8 +179,9 @@ module SequenceServer
|
|
177
179
|
def parse_xml(xml)
|
178
180
|
node_to_array Ox.parse(xml).root
|
179
181
|
rescue Ox::ParseError
|
180
|
-
|
181
|
-
|
182
|
+
raise 'Error parsing XML file' if job.imported_xml_file
|
183
|
+
|
184
|
+
raise InputError, <<~MSG
|
182
185
|
BLAST generated incorrect XML output. This can happen if sequence ids in your
|
183
186
|
databases are not unique across all files. As a temporary workaround, you can
|
184
187
|
repeat the search with one database at a time. Proper fix is to recreate the
|
@@ -231,9 +234,12 @@ module SequenceServer
|
|
231
234
|
# ...
|
232
235
|
# }
|
233
236
|
def parse_tsv(tsv)
|
234
|
-
ir = Hash.new {|h, k| h[k] = {} }
|
237
|
+
ir = Hash.new { |h, k| h[k] = {} }
|
235
238
|
tsv.each_line do |line|
|
236
|
-
next if line.start_with? '#'
|
239
|
+
next if line.start_with? '#'
|
240
|
+
|
241
|
+
row = line.chomp.split("\t")
|
242
|
+
|
237
243
|
(ir[row[0]][row[1]] ||= [row[2], row[3], []])[2] << row[4]
|
238
244
|
end
|
239
245
|
ir
|
@@ -246,14 +252,14 @@ module SequenceServer
|
|
246
252
|
|
247
253
|
param_list.each_with_index do |word, i|
|
248
254
|
nxt = param_list[i + 1]
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
255
|
+
next unless word.start_with? '-'
|
256
|
+
|
257
|
+
word.sub!('-', '')
|
258
|
+
res[word] = unless nxt.nil? || nxt.start_with?('-')
|
259
|
+
nxt
|
260
|
+
else
|
261
|
+
'True'
|
262
|
+
end
|
257
263
|
end
|
258
264
|
res
|
259
265
|
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,32 @@ 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'
|
113
135
|
}
|
114
136
|
end
|
115
137
|
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
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'json'
|
2
2
|
require 'tilt/erb'
|
3
3
|
require 'sinatra/base'
|
4
|
+
require 'rest-client'
|
4
5
|
|
5
6
|
require 'sequenceserver/job'
|
6
7
|
require 'sequenceserver/blast'
|
@@ -79,9 +80,7 @@ module SequenceServer
|
|
79
80
|
options: SequenceServer.config[:options]
|
80
81
|
}
|
81
82
|
|
82
|
-
if SequenceServer.config[:databases_widget] == 'tree'
|
83
|
-
searchdata.update(tree: Database.tree)
|
84
|
-
end
|
83
|
+
searchdata.update(tree: Database.tree) if SequenceServer.config[:databases_widget] == 'tree'
|
85
84
|
|
86
85
|
# If a job_id is specified, update searchdata from job meta data (i.e.,
|
87
86
|
# query, pre-selected databases, advanced options used). Query is only
|
@@ -138,7 +137,7 @@ module SequenceServer
|
|
138
137
|
database_ids = params['database_ids'].split(',')
|
139
138
|
sequences = Sequence::Retriever.new(sequence_ids, database_ids, true)
|
140
139
|
send_file(sequences.file.path,
|
141
|
-
type:
|
140
|
+
type: sequences.mime,
|
142
141
|
filename: sequences.filename)
|
143
142
|
end
|
144
143
|
|
@@ -149,6 +148,57 @@ module SequenceServer
|
|
149
148
|
send_file out.file, filename: out.filename, type: out.mime
|
150
149
|
end
|
151
150
|
|
151
|
+
post '/cloud_share' do
|
152
|
+
content_type :json
|
153
|
+
request_params = JSON.parse(request.body.read)
|
154
|
+
job = Job.fetch(request_params['job_id'])
|
155
|
+
|
156
|
+
unless job.done?
|
157
|
+
status 422
|
158
|
+
{ errors: ["Job #{request_params['job_id']} is not finished yet."] }.to_json
|
159
|
+
end
|
160
|
+
|
161
|
+
unless SequenceServer.config[:cloud_share_url]
|
162
|
+
status 503
|
163
|
+
{ errors: ['Sorry, cloud sharing is not enabled on this server.'] }.to_json
|
164
|
+
end
|
165
|
+
|
166
|
+
begin
|
167
|
+
job.as_archived_file do |archived_job_file|
|
168
|
+
cloud_share_response = RestClient.post(
|
169
|
+
SequenceServer.config[:cloud_share_url],
|
170
|
+
{
|
171
|
+
shared_job: {
|
172
|
+
sender: {
|
173
|
+
email: request_params['sender_email']
|
174
|
+
},
|
175
|
+
archived_job_file: archived_job_file,
|
176
|
+
original_job_id: job.id
|
177
|
+
}
|
178
|
+
}
|
179
|
+
)
|
180
|
+
|
181
|
+
return cloud_share_response.body
|
182
|
+
end
|
183
|
+
rescue RestClient::ExceptionWithResponse => e
|
184
|
+
cloud_share_response = e.response
|
185
|
+
|
186
|
+
case cloud_share_response.code
|
187
|
+
when 413
|
188
|
+
halt 413,
|
189
|
+
{ errors: ['Sorry, the results are too large to share, please consider \
|
190
|
+
using https://sequenceserver.com/cloud'] }.to_json
|
191
|
+
when 422
|
192
|
+
halt 422, JSON.parse(cloud_share_response.body).to_json
|
193
|
+
else
|
194
|
+
error cloud_share_response.code,
|
195
|
+
{ errors: ["Unexpected Cloudshare response: #{cloud_share_response.code}"] }.to_json
|
196
|
+
end
|
197
|
+
rescue Errno::ECONNREFUSED
|
198
|
+
error 503, { errors: ['Sorry, the cloud sharing server may not be running. Try again later.'] }.to_json
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
152
202
|
# Catches any exception raised within the app and returns JSON
|
153
203
|
# representation of the error:
|
154
204
|
# {
|
@@ -173,6 +223,7 @@ module SequenceServer
|
|
173
223
|
# more_info.
|
174
224
|
error 400..500 do
|
175
225
|
error = env['sinatra.error']
|
226
|
+
return unless error
|
176
227
|
|
177
228
|
# All errors will have a message.
|
178
229
|
error_data = { message: error.message }
|
@@ -193,7 +244,13 @@ module SequenceServer
|
|
193
244
|
error_data[:more_info] = error.backtrace.join("\n")
|
194
245
|
end
|
195
246
|
|
196
|
-
|
247
|
+
if request.env['HTTP_ACCEPT'].to_s.include?('application/json')
|
248
|
+
content_type :json
|
249
|
+
error_data.to_json
|
250
|
+
else
|
251
|
+
content_type :html
|
252
|
+
erb :error, locals: { error_data: error_data }, layout: true
|
253
|
+
end
|
197
254
|
end
|
198
255
|
|
199
256
|
# Get the query sequences, selected databases, and advanced params used.
|
@@ -202,7 +259,7 @@ module SequenceServer
|
|
202
259
|
return if job.imported_xml_file
|
203
260
|
|
204
261
|
# Only read job.qfile if we are not going to use Database.retrieve.
|
205
|
-
searchdata[:query] = File.read(job.qfile)
|
262
|
+
searchdata[:query] = File.read(job.qfile) unless params[:query]
|
206
263
|
|
207
264
|
# Which databases to pre-select.
|
208
265
|
searchdata[:preSelectedDbs] = job.databases
|
@@ -213,7 +270,12 @@ module SequenceServer
|
|
213
270
|
# default advanced parameters from the advanced params input field. In
|
214
271
|
# this case, we do want the advanced params input field to be empty when
|
215
272
|
# the user hits the back button. Thus we do not test for empty string.
|
216
|
-
|
273
|
+
method = job.method.to_sym
|
274
|
+
if job.advanced && job.advanced !=
|
275
|
+
searchdata[:options][method][:default].join(' ')
|
276
|
+
searchdata[:options] = searchdata[:options].deep_copy
|
277
|
+
searchdata[:options][method]['last search'] = [job.advanced]
|
278
|
+
end
|
217
279
|
end
|
218
280
|
end
|
219
281
|
end
|