sequenceserver 2.0.0.rc8 → 2.1.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 +22 -30
- data/lib/sequenceserver/api_errors.rb +29 -3
- data/lib/sequenceserver/blast/constants.rb +1 -1
- data/lib/sequenceserver/blast/hit.rb +5 -16
- data/lib/sequenceserver/blast/job.rb +49 -24
- data/lib/sequenceserver/blast/report.rb +38 -30
- data/lib/sequenceserver/config.rb +52 -27
- data/lib/sequenceserver/database.rb +69 -9
- data/lib/sequenceserver/job.rb +14 -4
- data/lib/sequenceserver/job_remover.rb +25 -29
- data/lib/sequenceserver/makeblastdb.rb +40 -45
- data/lib/sequenceserver/refinements.rb +15 -0
- data/lib/sequenceserver/routes.rb +70 -4
- 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 +16 -11
- data/public/config.js +62 -55
- data/public/css/fonts.css +23 -22
- data/public/css/grapher.css +598 -594
- data/public/css/sequenceserver.css +130 -27
- data/public/css/sequenceserver.min.css +3 -3
- data/public/js/alignment_exporter.js +30 -22
- 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 +144 -0
- data/public/js/dnd.js +164 -0
- data/public/js/download_fasta.js +1 -1
- 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 +84 -67
- data/public/js/hits_overview.js +3 -3
- data/public/js/hsp.js +343 -288
- data/public/js/jquery_world.js +4 -4
- data/public/js/length_distribution.js +5 -5
- data/public/js/mailto.js +36 -0
- data/public/js/options.js +84 -0
- data/public/js/query.js +321 -64
- data/public/js/report.js +322 -288
- data/public/js/report_root.js +75 -0
- data/public/js/search.js +28 -992
- 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 +265 -86
- data/public/js/svgExporter.js +12 -12
- 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/js/visualisation_helpers.js +4 -5
- 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 -11
- 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/github/vakata/jstree@3.3.8/LICENSE-MIT +22 -0
- data/public/vendor/github/vakata/jstree@3.3.8/README.md +663 -0
- data/public/vendor/github/vakata/jstree@3.3.8/bower.json +33 -0
- data/public/vendor/github/vakata/jstree@3.3.8/component.json +28 -0
- data/public/vendor/github/vakata/jstree@3.3.8/composer.json +46 -0
- data/public/vendor/github/vakata/jstree@3.3.8/demo/README.md +2 -0
- data/public/vendor/github/vakata/jstree@3.3.8/demo/basic/index.html +146 -0
- data/public/vendor/github/vakata/jstree@3.3.8/demo/basic/root.json +1 -0
- data/public/vendor/github/vakata/jstree@3.3.8/dist/jstree.js +8612 -0
- data/public/vendor/github/vakata/jstree@3.3.8/dist/jstree.min.js +6 -0
- data/public/vendor/github/vakata/jstree@3.3.8/dist/themes/default/32px.png +0 -0
- data/public/vendor/github/vakata/jstree@3.3.8/dist/themes/default/40px.png +0 -0
- data/public/vendor/github/vakata/jstree@3.3.8/dist/themes/default/style.css +1102 -0
- data/public/vendor/github/vakata/jstree@3.3.8/dist/themes/default/style.min.css +1 -0
- data/public/vendor/github/vakata/jstree@3.3.8/dist/themes/default/throbber.gif +0 -0
- data/public/vendor/github/vakata/jstree@3.3.8/dist/themes/default-dark/32px.png +0 -0
- data/public/vendor/github/vakata/jstree@3.3.8/dist/themes/default-dark/40px.png +0 -0
- data/public/vendor/github/vakata/jstree@3.3.8/dist/themes/default-dark/style.css +1146 -0
- data/public/vendor/github/vakata/jstree@3.3.8/dist/themes/default-dark/style.min.css +1 -0
- data/public/vendor/github/vakata/jstree@3.3.8/dist/themes/default-dark/throbber.gif +0 -0
- data/public/vendor/github/vakata/jstree@3.3.8/gruntfile.js +242 -0
- data/public/vendor/github/vakata/jstree@3.3.8/jstree.jquery.json +28 -0
- data/public/vendor/github/vakata/jstree@3.3.8/package.json +58 -0
- data/public/vendor/github/vakata/jstree@3.3.8/src/intro.js +14 -0
- data/public/vendor/github/vakata/jstree@3.3.8/src/jstree.changed.js +69 -0
- data/public/vendor/github/vakata/jstree@3.3.8/src/jstree.checkbox.js +976 -0
- data/public/vendor/github/vakata/jstree@3.3.8/src/jstree.conditionalselect.js +38 -0
- data/public/vendor/github/vakata/jstree@3.3.8/src/jstree.contextmenu.js +661 -0
- data/public/vendor/github/vakata/jstree@3.3.8/src/jstree.dnd.js +669 -0
- data/public/vendor/github/vakata/jstree@3.3.8/src/jstree.js +4931 -0
- data/public/vendor/github/vakata/jstree@3.3.8/src/jstree.massload.js +137 -0
- data/public/vendor/github/vakata/jstree@3.3.8/src/jstree.search.js +421 -0
- data/public/vendor/github/vakata/jstree@3.3.8/src/jstree.sort.js +74 -0
- data/public/vendor/github/vakata/jstree@3.3.8/src/jstree.state.js +138 -0
- data/public/vendor/github/vakata/jstree@3.3.8/src/jstree.types.js +372 -0
- data/public/vendor/github/vakata/jstree@3.3.8/src/jstree.unique.js +164 -0
- data/public/vendor/github/vakata/jstree@3.3.8/src/jstree.wholerow.js +122 -0
- data/public/vendor/github/vakata/jstree@3.3.8/src/misc.js +656 -0
- data/public/vendor/github/vakata/jstree@3.3.8/src/outro.js +1 -0
- data/public/vendor/github/vakata/jstree@3.3.8/src/sample.js +93 -0
- data/public/vendor/github/vakata/jstree@3.3.8/src/themes/base.less +93 -0
- data/public/vendor/github/vakata/jstree@3.3.8/src/themes/default/32px.png +0 -0
- data/public/vendor/github/vakata/jstree@3.3.8/src/themes/default/40px.png +0 -0
- data/public/vendor/github/vakata/jstree@3.3.8/src/themes/default/style.css +1102 -0
- data/public/vendor/github/vakata/jstree@3.3.8/src/themes/default/style.less +22 -0
- data/public/vendor/github/vakata/jstree@3.3.8/src/themes/default/throbber.gif +0 -0
- data/public/vendor/github/vakata/jstree@3.3.8/src/themes/default-dark/32px.png +0 -0
- data/public/vendor/github/vakata/jstree@3.3.8/src/themes/default-dark/40px.png +0 -0
- data/public/vendor/github/vakata/jstree@3.3.8/src/themes/default-dark/style.css +1146 -0
- data/public/vendor/github/vakata/jstree@3.3.8/src/themes/default-dark/style.less +50 -0
- data/public/vendor/github/vakata/jstree@3.3.8/src/themes/default-dark/throbber.gif +0 -0
- data/public/vendor/github/vakata/jstree@3.3.8/src/themes/main.less +77 -0
- data/public/vendor/github/vakata/jstree@3.3.8/src/themes/mixins.less +104 -0
- data/public/vendor/github/vakata/jstree@3.3.8/src/themes/responsive.less +67 -0
- data/public/vendor/github/vakata/jstree@3.3.8/src/vakata-jstree.js +38 -0
- data/public/vendor/github/vakata/jstree@3.3.8/test/unit/index.html +16 -0
- data/public/vendor/github/vakata/jstree@3.3.8/test/unit/libs/qunit.css +244 -0
- data/public/vendor/github/vakata/jstree@3.3.8/test/unit/libs/qunit.js +2212 -0
- data/public/vendor/github/vakata/jstree@3.3.8/test/unit/test.js +11 -0
- data/public/vendor/github/vakata/jstree@3.3.8/test/visual/desktop/index.html +44 -0
- data/public/vendor/github/vakata/jstree@3.3.8/test/visual/mobile/index.html +42 -0
- data/public/vendor/github/vakata/jstree@3.3.8/test/visual/screenshots/desktop/desktop.png +0 -0
- data/public/vendor/github/vakata/jstree@3.3.8/test/visual/screenshots/desktop/home.png +0 -0
- data/public/vendor/github/vakata/jstree@3.3.8/test/visual/screenshots/mobile/home.png +0 -0
- data/public/vendor/github/vakata/jstree@3.3.8/test/visual/screenshots/mobile/mobile.png +0 -0
- data/public/vendor/github/vakata/jstree@3.3.8.js +3 -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-csp-production.js +3 -3
- data/public/vendor/system-csp-production.js.map +1 -1
- data/public/vendor/system-csp-production.src.js +146 -140
- data/public/vendor/system-polyfills.js +865 -1
- data/public/vendor/system-polyfills.js.map +1 -1
- data/public/vendor/system-polyfills.src.js +1 -0
- data/public/vendor/system.js +3 -3
- data/public/vendor/system.js.map +1 -1
- data/public/vendor/system.src.js +4771 -2383
- 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 +18 -47
- 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 +362 -424
- data/bin/chromedriver +0 -0
- data/bin/geckodriver +0 -0
- data/public/shims/form-core.js +0 -3
- data/public/shims/form-validation.js +0 -3
- data/public/shims/plugins/jquery.ui.position.js +0 -13
- data/public/shims/styles/shim.css +0 -1
- 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 -135
- /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
@@ -19,14 +19,14 @@ module SequenceServer
|
|
19
19
|
# SequenceServer will always place BLAST database files alongside input FASTA,
|
20
20
|
# and use `parse_seqids` option of `makeblastdb` to format databases.
|
21
21
|
Database = Struct.new(:name, :title, :type, :nsequences, :ncharacters,
|
22
|
-
:updated_on) do
|
22
|
+
:updated_on, :format, :categories) do
|
23
23
|
|
24
24
|
extend Forwardable
|
25
25
|
|
26
26
|
def_delegators SequenceServer, :config, :sys
|
27
27
|
|
28
28
|
def initialize(*args)
|
29
|
-
args[2].downcase!
|
29
|
+
args[2].downcase! # type
|
30
30
|
args.each(&:freeze)
|
31
31
|
super
|
32
32
|
|
@@ -34,6 +34,7 @@ module SequenceServer
|
|
34
34
|
end
|
35
35
|
|
36
36
|
attr_reader :id
|
37
|
+
alias path name
|
37
38
|
|
38
39
|
def retrieve(accession, coords = nil)
|
39
40
|
cmd = "blastdbcmd -db #{name} -entry '#{accession}'"
|
@@ -48,10 +49,36 @@ module SequenceServer
|
|
48
49
|
nil
|
49
50
|
end
|
50
51
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
52
|
+
# Returns true if the database contains the given sequence id.
|
53
|
+
# Returns false otherwise.
|
54
|
+
def include?(id)
|
55
|
+
cmd = "blastdbcmd -entry '#{id}' -db #{name}"
|
56
|
+
sys(cmd, path: config[:bin]) rescue false
|
57
|
+
end
|
58
|
+
|
59
|
+
def v4?
|
60
|
+
format == '4'
|
61
|
+
end
|
62
|
+
|
63
|
+
def v5?
|
64
|
+
format == '5'
|
65
|
+
end
|
66
|
+
|
67
|
+
# Return true if the database was _not_ created using the -parse_seqids
|
68
|
+
# option of makeblastdb.
|
69
|
+
def non_parse_seqids?
|
70
|
+
return if alias?
|
71
|
+
case format
|
72
|
+
when '5'
|
73
|
+
(%w[nog nos pog pos] & extensions).length != 2
|
74
|
+
when '4'
|
75
|
+
(%w[nog nsd nsi pod psd psi] & extensions).length != 3
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
# Returns true if the database was created using blastdb_aliastool.
|
80
|
+
def alias?
|
81
|
+
(%w[nal pal] & extensions).length == 1 && extensions.count == 1
|
55
82
|
end
|
56
83
|
|
57
84
|
def ==(other)
|
@@ -65,6 +92,16 @@ module SequenceServer
|
|
65
92
|
def to_json(*args)
|
66
93
|
to_h.update(id: id).to_json(*args)
|
67
94
|
end
|
95
|
+
|
96
|
+
private
|
97
|
+
|
98
|
+
def extensions
|
99
|
+
# The glob pattern used here is quite relaxed. This is to capture
|
100
|
+
# multipart databases as well. It is possible that non-blast-database
|
101
|
+
# extensions may also be picked. However, that shouldn't be a problem
|
102
|
+
# as we only check whether certain required extensions are present or not.
|
103
|
+
@extensions ||= Dir["#{path}*{n,p}*"].map { |p| p.split('.').last }.sort.uniq
|
104
|
+
end
|
68
105
|
end
|
69
106
|
|
70
107
|
# Model Database's eigenclass as a collection of Database objects.
|
@@ -80,9 +117,8 @@ module SequenceServer
|
|
80
117
|
@collection ||= {}
|
81
118
|
end
|
82
119
|
|
83
|
-
def collection=(
|
84
|
-
|
85
|
-
db = Database.new(*db_attrs)
|
120
|
+
def collection=(databases)
|
121
|
+
databases.each do |db|
|
86
122
|
collection[db.id] = db
|
87
123
|
end
|
88
124
|
end
|
@@ -102,6 +138,30 @@ module SequenceServer
|
|
102
138
|
collection.values
|
103
139
|
end
|
104
140
|
|
141
|
+
def tree
|
142
|
+
all.each_with_object({}) do |db, data|
|
143
|
+
data[db.type] ||= []
|
144
|
+
use_parent = '#'
|
145
|
+
db.categories.each_with_index do |entry, index|
|
146
|
+
parent = index.zero? ? '#' : db.categories[0..(index - 1)].join('-')
|
147
|
+
use_id = db.categories[0..index].join('-')
|
148
|
+
element = { id: use_id, parent: parent, text: entry }
|
149
|
+
data[db.type] << element unless data[db.type].include?(element)
|
150
|
+
use_parent = use_id
|
151
|
+
end
|
152
|
+
|
153
|
+
data[db.type] <<
|
154
|
+
{
|
155
|
+
id: db.id,
|
156
|
+
parent: use_parent,
|
157
|
+
text: db.title,
|
158
|
+
icon: 'glyphicon glyphicon-file'
|
159
|
+
}
|
160
|
+
|
161
|
+
yield(db, data[db.type].last) if block_given?
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
105
165
|
def each(&block)
|
106
166
|
all.each(&block)
|
107
167
|
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,11 +51,17 @@ 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.
|
53
63
|
def pool
|
54
|
-
@pool ||= Pool.new(SequenceServer.config[:
|
64
|
+
@pool ||= Pool.new(SequenceServer.config[:num_jobs] || 1)
|
55
65
|
end
|
56
66
|
end
|
57
67
|
|
@@ -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
|
@@ -11,17 +11,6 @@ module SequenceServer
|
|
11
11
|
# makeblastdb.scan && makeblastdb.run
|
12
12
|
#
|
13
13
|
class MAKEBLASTDB
|
14
|
-
# We want V5 databases created using -parse_seqids for proper function of
|
15
|
-
# SequenceServer. This means each database should be comprised of at least 9
|
16
|
-
# files with the following extensions. Databases created by us will have two
|
17
|
-
# additional files with the extensions nhd and nhi, or phd and phi, due to
|
18
|
-
# the use of -hash_index option. Finally, multipart databases will have one
|
19
|
-
# additional file with the extension nal or pal.
|
20
|
-
REQUIRED_EXTENSIONS = {
|
21
|
-
'nucleotide' => %w{ndb nhr nin nog nos not nsq ntf nto}.freeze,
|
22
|
-
'protein' => %w{pdb phr pin pog pos pot psq ptf pto}.freeze
|
23
|
-
}
|
24
|
-
|
25
14
|
extend Forwardable
|
26
15
|
|
27
16
|
def_delegators SequenceServer, :config, :sys
|
@@ -70,18 +59,12 @@ module SequenceServer
|
|
70
59
|
# Returns true if the databases directory contains one or more incompatible
|
71
60
|
# databases.
|
72
61
|
#
|
73
|
-
# Note that it is okay to only use V4 databases or only V5 databases.
|
62
|
+
# Note that it is okay to only use V4 databases or only V5 databases.
|
74
63
|
# Incompatibility arises when they are mixed.
|
75
64
|
def any_incompatible?
|
76
|
-
return false if @
|
77
|
-
|
78
|
-
|
79
|
-
# path is common to both and sufficient for our needs.
|
80
|
-
to_reformat = @fastas_to_reformat.map(&:first)
|
81
|
-
formatted = @formatted_fastas.map(&:first)
|
82
|
-
# Check that they are not equal. Using intersection operator ensures
|
83
|
-
# comparison even if their order differs.
|
84
|
-
formatted & to_reformat != formatted
|
65
|
+
return false if @formatted_fastas.all? { |ff| ff.v4? || ff.alias? }
|
66
|
+
return false if @formatted_fastas.all? { |ff| ff.v5? || ff.alias? }
|
67
|
+
true
|
85
68
|
end
|
86
69
|
|
87
70
|
# Runs makeblastdb on each file in `@fastas_to_format` and
|
@@ -109,8 +92,8 @@ module SequenceServer
|
|
109
92
|
# Make the intent clear as well as ensure the program won't crash if
|
110
93
|
# we accidentally call reformat before calling scan.
|
111
94
|
return unless @fastas_to_reformat
|
112
|
-
@fastas_to_reformat.select do |path, title, type|
|
113
|
-
make_blast_database('reformat', path, title, type)
|
95
|
+
@fastas_to_reformat.select do |path, title, type, non_parse_seqids|
|
96
|
+
make_blast_database('reformat', path, title, type, non_parse_seqids)
|
114
97
|
end
|
115
98
|
end
|
116
99
|
|
@@ -120,34 +103,36 @@ module SequenceServer
|
|
120
103
|
# formatted. Adds to @formatted_fastas.
|
121
104
|
def determine_formatted_fastas
|
122
105
|
blastdbcmd.each_line do |line|
|
123
|
-
path,
|
106
|
+
path, *rest = line.chomp.split("\t")
|
124
107
|
next if multipart_database_name?(path)
|
125
|
-
|
108
|
+
rest << get_categories(path)
|
109
|
+
@formatted_fastas << Database.new(path, *rest)
|
126
110
|
end
|
127
111
|
end
|
128
112
|
|
129
113
|
# Determines which FASTA files in the database directory require
|
130
114
|
# reformatting. Adds to @fastas_to_format.
|
131
115
|
def determine_fastas_to_reformat
|
132
|
-
@formatted_fastas.each do |
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
@fastas_to_reformat << [path, title, type]
|
116
|
+
@formatted_fastas.each do |ff|
|
117
|
+
if ff.v4? || ff.non_parse_seqids?
|
118
|
+
@fastas_to_reformat << [ff.path, ff.title, ff.type, ff.non_parse_seqids?]
|
119
|
+
end
|
138
120
|
end
|
139
121
|
end
|
140
122
|
|
141
123
|
# Determines which FASTA files in the database directory are
|
142
124
|
# unformatted. Adds to @fastas_to_format.
|
143
125
|
def determine_unformatted_fastas
|
144
|
-
Find.find
|
126
|
+
# Add a trailing slash to database_dir - Find.find doesn't work as
|
127
|
+
# expected without the trailing slash if database_dir is a symlink
|
128
|
+
# inside a docker container.
|
129
|
+
Find.find(database_dir + '/') do |path|
|
145
130
|
next if File.directory?(path)
|
146
131
|
next unless probably_fasta?(path)
|
147
132
|
next if @formatted_fastas.any? { |f| f[0] == path }
|
148
133
|
|
149
134
|
@fastas_to_format << [path,
|
150
|
-
make_db_title(
|
135
|
+
make_db_title(path),
|
151
136
|
guess_sequence_type_in_fasta(path)]
|
152
137
|
end
|
153
138
|
end
|
@@ -157,7 +142,7 @@ module SequenceServer
|
|
157
142
|
# by `determine_formatted_fastas`.
|
158
143
|
def blastdbcmd
|
159
144
|
cmd = "blastdbcmd -recursive -list #{config[:database_dir]}" \
|
160
|
-
' -list_outfmt "%f %t %p %n %l %d"'
|
145
|
+
' -list_outfmt "%f %t %p %n %l %d %v"'
|
161
146
|
out, err = sys(cmd, path: config[:bin])
|
162
147
|
errpat = /BLAST Database error/
|
163
148
|
fail BLAST_DATABASE_ERROR.new(cmd, err) if err.match(errpat)
|
@@ -167,10 +152,11 @@ module SequenceServer
|
|
167
152
|
end
|
168
153
|
|
169
154
|
# Create BLAST database, given FASTA file and sequence type in FASTA file.
|
170
|
-
def make_blast_database(action, file, title, type)
|
155
|
+
def make_blast_database(action, file, title, type, non_parse_seqids = false)
|
171
156
|
return unless make_blast_database?(action, file, type)
|
172
157
|
title = confirm_database_title(title)
|
173
|
-
|
158
|
+
extract_fasta(file) unless File.exist?(file)
|
159
|
+
taxonomy = taxid_map(file, non_parse_seqids) || taxid
|
174
160
|
_make_blast_database(file, type, title, taxonomy)
|
175
161
|
end
|
176
162
|
|
@@ -200,11 +186,10 @@ module SequenceServer
|
|
200
186
|
|
201
187
|
# Check if a '.taxid_map.txt' file exists. If not, try getting it
|
202
188
|
# using blastdbcmd.
|
203
|
-
def taxid_map(db)
|
189
|
+
def taxid_map(db, non_parse_seqids)
|
190
|
+
return if non_parse_seqids
|
204
191
|
taxid_map = db.sub(/#{File.extname(db)}$/, '.taxid_map.txt')
|
205
|
-
|
206
|
-
extract_taxid_map(db, taxid_map)
|
207
|
-
end
|
192
|
+
extract_taxid_map(db, taxid_map) if !File.exist?(taxid_map)
|
208
193
|
"-taxid_map #{taxid_map}" if !File.zero?(taxid_map)
|
209
194
|
end
|
210
195
|
|
@@ -213,22 +198,23 @@ module SequenceServer
|
|
213
198
|
# Using 0 as taxid is equivalent to not setting taxid for the database
|
214
199
|
# that will be created.
|
215
200
|
def taxid
|
201
|
+
default = 0
|
216
202
|
print 'Enter taxid (optional): '
|
217
203
|
user_response = STDIN.gets.strip
|
218
|
-
"-taxid #{user_response
|
204
|
+
"-taxid #{user_response.empty? && default || Integer(user_response)}"
|
219
205
|
rescue ArgumentError # presumably from call to Interger()
|
220
206
|
puts 'taxid should be a number'
|
221
207
|
retry
|
222
208
|
end
|
223
209
|
|
224
210
|
def _make_blast_database(file, type, title, taxonomy)
|
225
|
-
|
226
|
-
|
227
|
-
"-dbtype #{type.to_s.slice(0, 4)} -title '#{title}'" \
|
211
|
+
cmd = "makeblastdb -parse_seqids -hash_index -in '#{file}'" \
|
212
|
+
" -dbtype #{type.to_s.slice(0, 4)} -title '#{title}'" \
|
228
213
|
" #{taxonomy}"
|
229
214
|
out, err = sys(cmd, path: config[:bin])
|
230
215
|
puts out.strip
|
231
216
|
puts err.strip
|
217
|
+
return true
|
232
218
|
rescue CommandFailed => e
|
233
219
|
puts <<~MSG
|
234
220
|
Could not create BLAST database for: #{file}
|
@@ -278,8 +264,16 @@ module SequenceServer
|
|
278
264
|
!(db_name.match(%r{.+/\S+\.\d{2,3}$}).nil?)
|
279
265
|
end
|
280
266
|
|
267
|
+
def get_categories(path)
|
268
|
+
path
|
269
|
+
.gsub(config[:database_dir], '') # remove database_dir from path
|
270
|
+
.split('/')
|
271
|
+
.reject(&:empty?)[0..-2] # the first entry might be '' if database_dir does not end with /
|
272
|
+
end
|
273
|
+
|
281
274
|
# Returns true if first character of the file is '>'.
|
282
275
|
def probably_fasta?(file)
|
276
|
+
return false unless file.match(/((cds)|(fasta)|(fna)|(pep)|(cdna)|(fa)|(prot)|(fas)|(genome)|(nuc)|(dna)|(nt))$/i)
|
283
277
|
File.read(file, 1) == '>'
|
284
278
|
end
|
285
279
|
|
@@ -288,7 +282,8 @@ module SequenceServer
|
|
288
282
|
# For example:
|
289
283
|
# Cobs1.4.proteins.fasta -> Cobs 1.4 proteins
|
290
284
|
# S_invicta.xx.2.5.small.nucl.fa -> S invicta xx 2.5 small nucl
|
291
|
-
def make_db_title(
|
285
|
+
def make_db_title(path)
|
286
|
+
db_name = File.basename(path)
|
292
287
|
db_name.tr!('"', "'")
|
293
288
|
# removes .fasta like extension names
|
294
289
|
db_name.gsub!(File.extname(db_name), '')
|
@@ -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,6 +80,8 @@ module SequenceServer
|
|
79
80
|
options: SequenceServer.config[:options]
|
80
81
|
}
|
81
82
|
|
83
|
+
searchdata.update(tree: Database.tree) if SequenceServer.config[:databases_widget] == 'tree'
|
84
|
+
|
82
85
|
# If a job_id is specified, update searchdata from job meta data (i.e.,
|
83
86
|
# query, pre-selected databases, advanced options used). Query is only
|
84
87
|
# updated if params[:query] is not specified.
|
@@ -134,7 +137,7 @@ module SequenceServer
|
|
134
137
|
database_ids = params['database_ids'].split(',')
|
135
138
|
sequences = Sequence::Retriever.new(sequence_ids, database_ids, true)
|
136
139
|
send_file(sequences.file.path,
|
137
|
-
type:
|
140
|
+
type: sequences.mime,
|
138
141
|
filename: sequences.filename)
|
139
142
|
end
|
140
143
|
|
@@ -145,6 +148,57 @@ module SequenceServer
|
|
145
148
|
send_file out.file, filename: out.filename, type: out.mime
|
146
149
|
end
|
147
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
|
+
|
148
202
|
# Catches any exception raised within the app and returns JSON
|
149
203
|
# representation of the error:
|
150
204
|
# {
|
@@ -169,6 +223,7 @@ module SequenceServer
|
|
169
223
|
# more_info.
|
170
224
|
error 400..500 do
|
171
225
|
error = env['sinatra.error']
|
226
|
+
return unless error
|
172
227
|
|
173
228
|
# All errors will have a message.
|
174
229
|
error_data = { message: error.message }
|
@@ -189,7 +244,13 @@ module SequenceServer
|
|
189
244
|
error_data[:more_info] = error.backtrace.join("\n")
|
190
245
|
end
|
191
246
|
|
192
|
-
|
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
|
193
254
|
end
|
194
255
|
|
195
256
|
# Get the query sequences, selected databases, and advanced params used.
|
@@ -198,7 +259,7 @@ module SequenceServer
|
|
198
259
|
return if job.imported_xml_file
|
199
260
|
|
200
261
|
# Only read job.qfile if we are not going to use Database.retrieve.
|
201
|
-
searchdata[:query] = File.read(job.qfile)
|
262
|
+
searchdata[:query] = File.read(job.qfile) unless params[:query]
|
202
263
|
|
203
264
|
# Which databases to pre-select.
|
204
265
|
searchdata[:preSelectedDbs] = job.databases
|
@@ -209,7 +270,12 @@ module SequenceServer
|
|
209
270
|
# default advanced parameters from the advanced params input field. In
|
210
271
|
# this case, we do want the advanced params input field to be empty when
|
211
272
|
# the user hits the back button. Thus we do not test for empty string.
|
212
|
-
|
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
|
213
279
|
end
|
214
280
|
end
|
215
281
|
end
|
@@ -136,6 +136,7 @@ module SequenceServer
|
|
136
136
|
# Returns a file name to use for the temporary file.
|
137
137
|
def filename
|
138
138
|
return @filename if @filename
|
139
|
+
|
139
140
|
name = sequence_ids.first if sequence_ids.length == 1
|
140
141
|
name = "#{sequence_ids.length}_hits" if sequence_ids.length >= 2
|
141
142
|
@filename = "sequenceserver-#{name}.fa"
|
@@ -182,14 +183,12 @@ module SequenceServer
|
|
182
183
|
validate && run
|
183
184
|
end
|
184
185
|
|
185
|
-
attr_reader :sequence_ids, :database_ids, :in_file
|
186
|
-
|
187
|
-
attr_reader :sequences
|
186
|
+
attr_reader :sequence_ids, :database_ids, :in_file, :sequences
|
188
187
|
|
189
|
-
def to_json
|
188
|
+
def to_json(*_args)
|
190
189
|
{
|
191
190
|
error_msgs: error_msgs,
|
192
|
-
sequences:
|
191
|
+
sequences: sequences.map(&:info)
|
193
192
|
}.to_json
|
194
193
|
end
|
195
194
|
|
@@ -224,13 +223,15 @@ module SequenceServer
|
|
224
223
|
ids = Database.ids
|
225
224
|
return true if database_ids.is_a?(Array) && !database_ids.empty? &&
|
226
225
|
(ids & database_ids).length == database_ids.length
|
227
|
-
|
228
|
-
|
226
|
+
|
227
|
+
fail DatabaseUnreachableError, 'Database id should be one of:' \
|
228
|
+
" #{ids.join("\n")}"
|
229
229
|
end
|
230
230
|
|
231
231
|
# rubocop:disable Metrics/MethodLength
|
232
232
|
def error_msgs
|
233
233
|
return [] if sequences.length == sequence_ids.length
|
234
|
+
|
234
235
|
[
|
235
236
|
['ERROR: incorrect number of sequences found.',
|
236
237
|
<<~MSG
|
data/lib/sequenceserver/sys.rb
CHANGED
@@ -47,8 +47,8 @@ module SequenceServer
|
|
47
47
|
|
48
48
|
# Execute the shell command, redirect stdout and stderr to the
|
49
49
|
# temporary files.
|
50
|
-
exec(
|
51
|
-
|
50
|
+
exec(command, out: temp_files[:stdout].path.to_s, \
|
51
|
+
err: temp_files[:stderr].path.to_s)
|
52
52
|
end
|
53
53
|
|
54
54
|
# Wait for the termination of the child process.
|