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.

Files changed (758) hide show
  1. checksums.yaml +4 -4
  2. data/bin/sequenceserver +22 -30
  3. data/lib/sequenceserver/api_errors.rb +29 -3
  4. data/lib/sequenceserver/blast/constants.rb +1 -1
  5. data/lib/sequenceserver/blast/hit.rb +5 -16
  6. data/lib/sequenceserver/blast/job.rb +49 -24
  7. data/lib/sequenceserver/blast/report.rb +38 -30
  8. data/lib/sequenceserver/config.rb +52 -27
  9. data/lib/sequenceserver/database.rb +69 -9
  10. data/lib/sequenceserver/job.rb +14 -4
  11. data/lib/sequenceserver/job_remover.rb +25 -29
  12. data/lib/sequenceserver/makeblastdb.rb +40 -45
  13. data/lib/sequenceserver/refinements.rb +15 -0
  14. data/lib/sequenceserver/routes.rb +70 -4
  15. data/lib/sequenceserver/sequence.rb +8 -7
  16. data/lib/sequenceserver/sys.rb +2 -2
  17. data/lib/sequenceserver/version.rb +1 -1
  18. data/lib/sequenceserver/zip_file_generator.rb +56 -0
  19. data/lib/sequenceserver.rb +16 -11
  20. data/public/config.js +62 -55
  21. data/public/css/fonts.css +23 -22
  22. data/public/css/grapher.css +598 -594
  23. data/public/css/sequenceserver.css +130 -27
  24. data/public/css/sequenceserver.min.css +3 -3
  25. data/public/js/alignment_exporter.js +30 -22
  26. data/public/js/circos.js +370 -234
  27. data/public/js/cloud_share_modal.js +216 -0
  28. data/public/js/databases.js +144 -0
  29. data/public/js/databases_tree.js +144 -0
  30. data/public/js/dnd.js +164 -0
  31. data/public/js/download_fasta.js +1 -1
  32. data/public/js/error_modal.js +4 -11
  33. data/public/js/exporter.js +7 -3
  34. data/public/js/form.js +260 -0
  35. data/public/js/grapher.js +113 -106
  36. data/public/js/hit.js +84 -67
  37. data/public/js/hits_overview.js +3 -3
  38. data/public/js/hsp.js +343 -288
  39. data/public/js/jquery_world.js +4 -4
  40. data/public/js/length_distribution.js +5 -5
  41. data/public/js/mailto.js +36 -0
  42. data/public/js/options.js +84 -0
  43. data/public/js/query.js +321 -64
  44. data/public/js/report.js +322 -288
  45. data/public/js/report_root.js +75 -0
  46. data/public/js/search.js +28 -992
  47. data/public/js/search_button.js +195 -0
  48. data/public/js/sequence.js +2409 -2411
  49. data/public/js/sequence_modal.js +152 -159
  50. data/public/js/share_url.js +23 -0
  51. data/public/js/sidebar.js +265 -86
  52. data/public/js/svgExporter.js +12 -12
  53. data/public/js/tests/database.spec.js +60 -0
  54. data/public/js/tests/mock_data/databases.json +91 -0
  55. data/public/js/tests/mock_data/long_response.json +269 -0
  56. data/public/js/tests/mock_data/short_response.json +2240 -0
  57. data/public/js/tests/report.spec.js +99 -0
  58. data/public/js/tests/search_button.spec.js +14 -0
  59. data/public/js/tests/search_query.spec.js +41 -0
  60. data/public/js/visualisation_helpers.js +4 -5
  61. data/public/packages/circosJS@1.7.0.js +1640 -0
  62. data/public/packages/jquery-ui@1.11.4.js +16624 -0
  63. data/public/sequenceserver-report.min.js +2425 -19
  64. data/public/sequenceserver-search.min.js +2337 -11
  65. data/public/vendor/github/jspm/nodelibs-assert@0.1.0/index.js +2 -0
  66. data/public/vendor/github/jspm/{nodelibs-buffer@0.1.0 → nodelibs-assert@0.1.0}/package.json +1 -1
  67. data/public/vendor/github/jspm/nodelibs-assert@0.1.0.js +1 -0
  68. data/public/vendor/github/jspm/nodelibs-buffer@0.1.1/package.json +6 -0
  69. data/public/vendor/github/jspm/nodelibs-buffer@0.1.1.js +1 -0
  70. data/public/vendor/github/jspm/{nodelibs-process@0.1.1 → nodelibs-process@0.1.2}/package.json +2 -2
  71. data/public/vendor/github/jspm/nodelibs-process@0.1.2.js +1 -0
  72. data/public/vendor/github/jspm/nodelibs-vm@0.1.0/index.js +2 -0
  73. data/public/vendor/github/jspm/nodelibs-vm@0.1.0/package.json +6 -0
  74. data/public/vendor/github/jspm/nodelibs-vm@0.1.0.js +1 -0
  75. data/public/vendor/github/vakata/jstree@3.3.8/LICENSE-MIT +22 -0
  76. data/public/vendor/github/vakata/jstree@3.3.8/README.md +663 -0
  77. data/public/vendor/github/vakata/jstree@3.3.8/bower.json +33 -0
  78. data/public/vendor/github/vakata/jstree@3.3.8/component.json +28 -0
  79. data/public/vendor/github/vakata/jstree@3.3.8/composer.json +46 -0
  80. data/public/vendor/github/vakata/jstree@3.3.8/demo/README.md +2 -0
  81. data/public/vendor/github/vakata/jstree@3.3.8/demo/basic/index.html +146 -0
  82. data/public/vendor/github/vakata/jstree@3.3.8/demo/basic/root.json +1 -0
  83. data/public/vendor/github/vakata/jstree@3.3.8/dist/jstree.js +8612 -0
  84. data/public/vendor/github/vakata/jstree@3.3.8/dist/jstree.min.js +6 -0
  85. data/public/vendor/github/vakata/jstree@3.3.8/dist/themes/default/32px.png +0 -0
  86. data/public/vendor/github/vakata/jstree@3.3.8/dist/themes/default/40px.png +0 -0
  87. data/public/vendor/github/vakata/jstree@3.3.8/dist/themes/default/style.css +1102 -0
  88. data/public/vendor/github/vakata/jstree@3.3.8/dist/themes/default/style.min.css +1 -0
  89. data/public/vendor/github/vakata/jstree@3.3.8/dist/themes/default/throbber.gif +0 -0
  90. data/public/vendor/github/vakata/jstree@3.3.8/dist/themes/default-dark/32px.png +0 -0
  91. data/public/vendor/github/vakata/jstree@3.3.8/dist/themes/default-dark/40px.png +0 -0
  92. data/public/vendor/github/vakata/jstree@3.3.8/dist/themes/default-dark/style.css +1146 -0
  93. data/public/vendor/github/vakata/jstree@3.3.8/dist/themes/default-dark/style.min.css +1 -0
  94. data/public/vendor/github/vakata/jstree@3.3.8/dist/themes/default-dark/throbber.gif +0 -0
  95. data/public/vendor/github/vakata/jstree@3.3.8/gruntfile.js +242 -0
  96. data/public/vendor/github/vakata/jstree@3.3.8/jstree.jquery.json +28 -0
  97. data/public/vendor/github/vakata/jstree@3.3.8/package.json +58 -0
  98. data/public/vendor/github/vakata/jstree@3.3.8/src/intro.js +14 -0
  99. data/public/vendor/github/vakata/jstree@3.3.8/src/jstree.changed.js +69 -0
  100. data/public/vendor/github/vakata/jstree@3.3.8/src/jstree.checkbox.js +976 -0
  101. data/public/vendor/github/vakata/jstree@3.3.8/src/jstree.conditionalselect.js +38 -0
  102. data/public/vendor/github/vakata/jstree@3.3.8/src/jstree.contextmenu.js +661 -0
  103. data/public/vendor/github/vakata/jstree@3.3.8/src/jstree.dnd.js +669 -0
  104. data/public/vendor/github/vakata/jstree@3.3.8/src/jstree.js +4931 -0
  105. data/public/vendor/github/vakata/jstree@3.3.8/src/jstree.massload.js +137 -0
  106. data/public/vendor/github/vakata/jstree@3.3.8/src/jstree.search.js +421 -0
  107. data/public/vendor/github/vakata/jstree@3.3.8/src/jstree.sort.js +74 -0
  108. data/public/vendor/github/vakata/jstree@3.3.8/src/jstree.state.js +138 -0
  109. data/public/vendor/github/vakata/jstree@3.3.8/src/jstree.types.js +372 -0
  110. data/public/vendor/github/vakata/jstree@3.3.8/src/jstree.unique.js +164 -0
  111. data/public/vendor/github/vakata/jstree@3.3.8/src/jstree.wholerow.js +122 -0
  112. data/public/vendor/github/vakata/jstree@3.3.8/src/misc.js +656 -0
  113. data/public/vendor/github/vakata/jstree@3.3.8/src/outro.js +1 -0
  114. data/public/vendor/github/vakata/jstree@3.3.8/src/sample.js +93 -0
  115. data/public/vendor/github/vakata/jstree@3.3.8/src/themes/base.less +93 -0
  116. data/public/vendor/github/vakata/jstree@3.3.8/src/themes/default/32px.png +0 -0
  117. data/public/vendor/github/vakata/jstree@3.3.8/src/themes/default/40px.png +0 -0
  118. data/public/vendor/github/vakata/jstree@3.3.8/src/themes/default/style.css +1102 -0
  119. data/public/vendor/github/vakata/jstree@3.3.8/src/themes/default/style.less +22 -0
  120. data/public/vendor/github/vakata/jstree@3.3.8/src/themes/default/throbber.gif +0 -0
  121. data/public/vendor/github/vakata/jstree@3.3.8/src/themes/default-dark/32px.png +0 -0
  122. data/public/vendor/github/vakata/jstree@3.3.8/src/themes/default-dark/40px.png +0 -0
  123. data/public/vendor/github/vakata/jstree@3.3.8/src/themes/default-dark/style.css +1146 -0
  124. data/public/vendor/github/vakata/jstree@3.3.8/src/themes/default-dark/style.less +50 -0
  125. data/public/vendor/github/vakata/jstree@3.3.8/src/themes/default-dark/throbber.gif +0 -0
  126. data/public/vendor/github/vakata/jstree@3.3.8/src/themes/main.less +77 -0
  127. data/public/vendor/github/vakata/jstree@3.3.8/src/themes/mixins.less +104 -0
  128. data/public/vendor/github/vakata/jstree@3.3.8/src/themes/responsive.less +67 -0
  129. data/public/vendor/github/vakata/jstree@3.3.8/src/vakata-jstree.js +38 -0
  130. data/public/vendor/github/vakata/jstree@3.3.8/test/unit/index.html +16 -0
  131. data/public/vendor/github/vakata/jstree@3.3.8/test/unit/libs/qunit.css +244 -0
  132. data/public/vendor/github/vakata/jstree@3.3.8/test/unit/libs/qunit.js +2212 -0
  133. data/public/vendor/github/vakata/jstree@3.3.8/test/unit/test.js +11 -0
  134. data/public/vendor/github/vakata/jstree@3.3.8/test/visual/desktop/index.html +44 -0
  135. data/public/vendor/github/vakata/jstree@3.3.8/test/visual/mobile/index.html +42 -0
  136. data/public/vendor/github/vakata/jstree@3.3.8/test/visual/screenshots/desktop/desktop.png +0 -0
  137. data/public/vendor/github/vakata/jstree@3.3.8/test/visual/screenshots/desktop/home.png +0 -0
  138. data/public/vendor/github/vakata/jstree@3.3.8/test/visual/screenshots/mobile/home.png +0 -0
  139. data/public/vendor/github/vakata/jstree@3.3.8/test/visual/screenshots/mobile/mobile.png +0 -0
  140. data/public/vendor/github/vakata/jstree@3.3.8.js +3 -0
  141. data/public/vendor/npm/assert@1.5.0/CHANGELOG.md +8 -0
  142. data/public/vendor/npm/assert@1.5.0/README.md +105 -0
  143. data/public/vendor/npm/assert@1.5.0/assert.js +327 -0
  144. data/public/vendor/npm/assert@1.5.0/package.json +32 -0
  145. data/public/vendor/npm/assert@1.5.0/test.js +288 -0
  146. data/public/vendor/npm/assert@1.5.0.js +1 -0
  147. data/public/vendor/npm/{base64-js@0.0.8/LICENSE.MIT → base64-js@1.5.1/LICENSE} +1 -1
  148. data/public/vendor/npm/{base64-js@0.0.8 → base64-js@1.5.1}/README.md +10 -7
  149. data/public/vendor/npm/base64-js@1.5.1/base64js.min.js +3 -0
  150. data/public/vendor/npm/base64-js@1.5.1/index.d.ts +3 -0
  151. data/public/vendor/npm/base64-js@1.5.1/index.js +151 -0
  152. data/public/vendor/npm/base64-js@1.5.1/package.json +47 -0
  153. data/public/vendor/npm/base64-js@1.5.1.js +1 -0
  154. data/public/vendor/npm/buffer@5.7.1/AUTHORS.md +70 -0
  155. data/public/vendor/npm/{buffer@3.4.3 → buffer@5.7.1}/README.md +111 -41
  156. data/public/vendor/npm/buffer@5.7.1/index.d.ts +186 -0
  157. data/public/vendor/npm/buffer@5.7.1/index.js +1817 -0
  158. data/public/vendor/npm/buffer@5.7.1/package.json +96 -0
  159. data/public/vendor/npm/buffer@5.7.1.js +1 -0
  160. data/public/vendor/npm/core-util-is@1.0.3/LICENSE +19 -0
  161. data/public/vendor/npm/core-util-is@1.0.3/lib/util.js +64 -0
  162. data/public/vendor/npm/{core-util-is@1.0.1 → core-util-is@1.0.3}/package.json +13 -1
  163. data/public/vendor/npm/core-util-is@1.0.3.js +1 -0
  164. data/public/vendor/npm/events@1.0.2/tests/add-listeners.js +2 -2
  165. data/public/vendor/npm/events@1.0.2/tests/check-listener-leaks.js +3 -3
  166. data/public/vendor/npm/events@1.0.2/tests/common.js +1 -1
  167. data/public/vendor/npm/events@1.0.2/tests/index.js +13 -13
  168. data/public/vendor/npm/events@1.0.2/tests/listeners-side-effects.js +2 -2
  169. data/public/vendor/npm/events@1.0.2/tests/listeners.js +2 -2
  170. data/public/vendor/npm/events@1.0.2/tests/max-listeners.js +2 -2
  171. data/public/vendor/npm/events@1.0.2/tests/modify-in-emit.js +2 -2
  172. data/public/vendor/npm/events@1.0.2/tests/num-args.js +2 -2
  173. data/public/vendor/npm/events@1.0.2/tests/once.js +2 -2
  174. data/public/vendor/npm/events@1.0.2/tests/remove-all-listeners.js +3 -3
  175. data/public/vendor/npm/events@1.0.2/tests/remove-listeners.js +3 -3
  176. data/public/vendor/npm/events@1.0.2/tests/set-max-listeners-side-effects.js +2 -2
  177. data/public/vendor/npm/events@1.0.2/tests/subclass.js +3 -3
  178. data/public/vendor/npm/events@1.0.2.js +1 -1
  179. data/public/vendor/npm/ieee754@1.2.1/LICENSE +11 -0
  180. data/public/vendor/npm/{ieee754@1.1.6 → ieee754@1.2.1}/README.md +12 -8
  181. data/public/vendor/npm/ieee754@1.2.1/index.d.ts +10 -0
  182. data/public/vendor/npm/{ieee754@1.1.6 → ieee754@1.2.1}/index.js +6 -6
  183. data/public/vendor/npm/ieee754@1.2.1/package.json +52 -0
  184. data/public/vendor/npm/ieee754@1.2.1.js +1 -0
  185. data/public/vendor/npm/{is-array@1.0.1 → indexof@0.0.1}/Makefile +3 -3
  186. data/public/vendor/npm/indexof@0.0.1/Readme.md +15 -0
  187. data/public/vendor/npm/indexof@0.0.1/component.json +10 -0
  188. data/public/vendor/npm/indexof@0.0.1/index.js +11 -0
  189. data/public/vendor/npm/indexof@0.0.1/package.json +12 -0
  190. data/public/vendor/npm/indexof@0.0.1.js +1 -0
  191. data/public/vendor/npm/inherits@2.0.1/inherits.js +1 -1
  192. data/public/vendor/npm/inherits@2.0.1.js +1 -1
  193. data/public/vendor/npm/isarray@0.0.1.js +1 -1
  194. data/public/vendor/npm/js-tokens@4.0.0/index.js +23 -0
  195. data/public/vendor/npm/js-tokens@4.0.0/package.json +30 -0
  196. data/public/vendor/npm/js-tokens@4.0.0.js +1 -0
  197. data/public/vendor/npm/loose-envify@1.4.0/LICENSE +21 -0
  198. data/public/vendor/npm/loose-envify@1.4.0/README.md +45 -0
  199. data/public/vendor/npm/loose-envify@1.4.0/cli.js +12 -0
  200. data/public/vendor/npm/loose-envify@1.4.0/custom.js +3 -0
  201. data/public/vendor/npm/loose-envify@1.4.0/index.js +5 -0
  202. data/public/vendor/npm/loose-envify@1.4.0/loose-envify.js +33 -0
  203. data/public/vendor/npm/loose-envify@1.4.0/package.json +36 -0
  204. data/public/vendor/npm/loose-envify@1.4.0/replace.js +52 -0
  205. data/public/vendor/npm/loose-envify@1.4.0.js +1 -0
  206. data/public/vendor/npm/object-assign@4.1.1/index.js +90 -0
  207. data/public/vendor/npm/object-assign@4.1.1/package.json +42 -0
  208. data/public/vendor/npm/object-assign@4.1.1.js +1 -0
  209. data/public/vendor/npm/path-browserify@0.0.0/index.js +1 -1
  210. data/public/vendor/npm/path-browserify@0.0.0.js +1 -1
  211. data/public/vendor/npm/{process@0.10.1 → process@0.11.10}/README.md +4 -1
  212. data/public/vendor/npm/process@0.11.10/browser.js +184 -0
  213. data/public/vendor/npm/{process@0.10.1 → process@0.11.10}/package.json +10 -1
  214. data/public/vendor/npm/process@0.11.10/test.js +185 -0
  215. data/public/vendor/npm/process@0.11.10.js +1 -0
  216. data/public/vendor/npm/react-dom@18.0.0/LICENSE +21 -0
  217. data/public/vendor/npm/react-dom@18.0.0/README.md +50 -0
  218. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server-legacy.browser.development.js +4771 -0
  219. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server-legacy.browser.production.min.js +85 -0
  220. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server-legacy.node.development.js +4813 -0
  221. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server-legacy.node.production.min.js +1705 -0
  222. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server.browser.development.js +4746 -0
  223. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server.browser.production.min.js +90 -0
  224. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server.node.development.js +4714 -0
  225. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server.node.production.min.js +1746 -0
  226. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-test-utils.development.js +1017 -0
  227. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-test-utils.production.min.js +617 -0
  228. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom.development.js +20092 -0
  229. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom.production.min.js +322 -0
  230. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom.profiling.min.js +364 -0
  231. data/public/vendor/npm/react-dom@18.0.0/client.js +27 -0
  232. data/public/vendor/npm/react-dom@18.0.0/index.js +23 -0
  233. data/public/vendor/npm/react-dom@18.0.0/package.json +62 -0
  234. data/public/vendor/npm/react-dom@18.0.0/profiling.js +23 -0
  235. data/public/vendor/npm/react-dom@18.0.0/server.browser.js +19 -0
  236. data/public/vendor/npm/react-dom@18.0.0/server.js +3 -0
  237. data/public/vendor/npm/react-dom@18.0.0/server.node.js +19 -0
  238. data/public/vendor/npm/react-dom@18.0.0/test-utils.js +9 -0
  239. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-server-legacy.browser.development.js +4770 -0
  240. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-server-legacy.browser.production.min.js +72 -0
  241. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-server.browser.development.js +4745 -0
  242. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-server.browser.production.min.js +74 -0
  243. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-test-utils.development.js +1013 -0
  244. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-test-utils.production.min.js +625 -0
  245. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom.development.js +20106 -0
  246. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom.production.min.js +269 -0
  247. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom.profiling.min.js +285 -0
  248. data/public/vendor/npm/react-dom@18.0.0.js +1 -0
  249. data/public/vendor/npm/react@18.0.0/LICENSE +21 -0
  250. data/public/vendor/npm/react@18.0.0/README.md +13 -0
  251. data/public/vendor/npm/react@18.0.0/cjs/react-jsx-dev-runtime.development.js +837 -0
  252. data/public/vendor/npm/react@18.0.0/cjs/react-jsx-dev-runtime.production.min.js +10 -0
  253. data/public/vendor/npm/react@18.0.0/cjs/react-jsx-dev-runtime.profiling.min.js +10 -0
  254. data/public/vendor/npm/react@18.0.0/cjs/react-jsx-runtime.development.js +849 -0
  255. data/public/vendor/npm/react@18.0.0/cjs/react-jsx-runtime.production.min.js +38 -0
  256. data/public/vendor/npm/react@18.0.0/cjs/react-jsx-runtime.profiling.min.js +38 -0
  257. data/public/vendor/npm/react@18.0.0/cjs/react.development.js +1746 -0
  258. data/public/vendor/npm/react@18.0.0/cjs/react.production.min.js +26 -0
  259. data/public/vendor/npm/react@18.0.0/cjs/react.shared-subset.development.js +10 -0
  260. data/public/vendor/npm/react@18.0.0/cjs/react.shared-subset.production.min.js +12 -0
  261. data/public/vendor/npm/react@18.0.0/index.js +9 -0
  262. data/public/vendor/npm/react@18.0.0/jsx-dev-runtime.js +9 -0
  263. data/public/vendor/npm/react@18.0.0/jsx-runtime.js +9 -0
  264. data/public/vendor/npm/react@18.0.0/package.json +47 -0
  265. data/public/vendor/npm/react@18.0.0/react.shared-subset.js +9 -0
  266. data/public/vendor/npm/react@18.0.0/umd/react.development.js +2186 -0
  267. data/public/vendor/npm/react@18.0.0/umd/react.production.min.js +33 -0
  268. data/public/vendor/npm/react@18.0.0/umd/react.profiling.min.js +33 -0
  269. data/public/vendor/npm/react@18.0.0.js +1 -0
  270. data/public/vendor/npm/readable-stream@1.1.14/LICENSE +18 -0
  271. data/public/vendor/npm/readable-stream@1.1.14/duplex.js +2 -0
  272. data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/lib/_stream_duplex.js +5 -5
  273. data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/lib/_stream_passthrough.js +3 -3
  274. data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/lib/_stream_readable.js +10 -10
  275. data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/lib/_stream_transform.js +4 -4
  276. data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/lib/_stream_writable.js +6 -6
  277. data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/package.json +1 -1
  278. data/public/vendor/npm/readable-stream@1.1.14/passthrough.js +2 -0
  279. data/public/vendor/npm/readable-stream@1.1.14/readable.js +13 -0
  280. data/public/vendor/npm/readable-stream@1.1.14/transform.js +2 -0
  281. data/public/vendor/npm/readable-stream@1.1.14/writable.js +2 -0
  282. data/public/vendor/npm/readable-stream@1.1.14.js +1 -0
  283. data/public/vendor/npm/scheduler@0.21.0/LICENSE +21 -0
  284. data/public/vendor/npm/scheduler@0.21.0/README.md +9 -0
  285. data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler-unstable_mock.development.js +530 -0
  286. data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler-unstable_mock.production.min.js +20 -0
  287. data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler-unstable_post_task.development.js +153 -0
  288. data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler-unstable_post_task.production.min.js +14 -0
  289. data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler.development.js +444 -0
  290. data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler.production.min.js +19 -0
  291. data/public/vendor/npm/scheduler@0.21.0/index.js +9 -0
  292. data/public/vendor/npm/scheduler@0.21.0/package.json +36 -0
  293. data/public/vendor/npm/scheduler@0.21.0/umd/scheduler-unstable_mock.development.js +701 -0
  294. data/public/vendor/npm/scheduler@0.21.0/umd/scheduler-unstable_mock.production.min.js +21 -0
  295. data/public/vendor/npm/scheduler@0.21.0/umd/scheduler.development.js +154 -0
  296. data/public/vendor/npm/scheduler@0.21.0/umd/scheduler.production.min.js +148 -0
  297. data/public/vendor/npm/scheduler@0.21.0/umd/scheduler.profiling.min.js +148 -0
  298. data/public/vendor/npm/scheduler@0.21.0/unstable_mock.js +9 -0
  299. data/public/vendor/npm/scheduler@0.21.0/unstable_post_task.js +9 -0
  300. data/public/vendor/npm/scheduler@0.21.0.js +1 -0
  301. data/public/vendor/npm/stream-browserify@1.0.0/index.js +7 -7
  302. data/public/vendor/npm/stream-browserify@1.0.0/test/buf.js +5 -5
  303. data/public/vendor/npm/stream-browserify@1.0.0.js +1 -1
  304. data/public/vendor/npm/string_decoder@0.10.31/index.js +2 -2
  305. data/public/vendor/npm/string_decoder@0.10.31.js +1 -1
  306. data/public/vendor/npm/util@0.10.3/support/isBuffer.js +1 -1
  307. data/public/vendor/npm/util@0.10.3/test/browser/inspect.js +2 -2
  308. data/public/vendor/npm/util@0.10.3/test/browser/is.js +3 -3
  309. data/public/vendor/npm/util@0.10.3/test/node/debug.js +4 -4
  310. data/public/vendor/npm/util@0.10.3/test/node/format.js +2 -2
  311. data/public/vendor/npm/util@0.10.3/test/node/inspect.js +3 -3
  312. data/public/vendor/npm/util@0.10.3/test/node/log.js +3 -3
  313. data/public/vendor/npm/util@0.10.3/test/node/util.js +3 -3
  314. data/public/vendor/npm/util@0.10.3/util.js +3 -3
  315. data/public/vendor/npm/util@0.10.3.js +1 -1
  316. data/public/vendor/npm/vm-browserify@0.0.4/LICENSE +18 -0
  317. data/public/vendor/npm/vm-browserify@0.0.4/example/run/bundle.js +376 -0
  318. data/public/vendor/npm/vm-browserify@0.0.4/example/run/entry.js +6 -0
  319. data/public/vendor/npm/vm-browserify@0.0.4/example/run/index.html +9 -0
  320. data/public/vendor/npm/vm-browserify@0.0.4/example/run/server.js +6 -0
  321. data/public/vendor/npm/vm-browserify@0.0.4/index.js +139 -0
  322. data/public/vendor/npm/vm-browserify@0.0.4/package.json +46 -0
  323. data/public/vendor/npm/vm-browserify@0.0.4/readme.markdown +67 -0
  324. data/public/vendor/npm/vm-browserify@0.0.4/test/vm.js +34 -0
  325. data/public/vendor/npm/vm-browserify@0.0.4.js +1 -0
  326. data/public/vendor/npm/webshim@1.15.8/Gruntfile.js +4 -4
  327. data/public/vendor/npm/webshim@1.15.8/build/combobuild.js +2 -2
  328. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/color-picker.js +1 -1
  329. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/10.js +1 -1
  330. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/11.js +1 -1
  331. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/17.js +1 -1
  332. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/5.js +1 -1
  333. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/6.js +1 -1
  334. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/9.js +1 -1
  335. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/es6.js +1 -1
  336. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/excanvas.js +1 -1
  337. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/form-number-date-ui.js +1 -1
  338. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/moxie/js/moxie-html4.js +1 -1
  339. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/moxie/js/moxie-swf.js +1 -1
  340. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/sizzle.js +1 -1
  341. data/public/vendor/npm/webshim@1.15.8/js-webshim/minified/shims/es6.js +1 -1
  342. data/public/vendor/npm/webshim@1.15.8/src/shims/color-picker.js +1 -1
  343. data/public/vendor/npm/webshim@1.15.8/src/shims/combos/10.js +1 -1
  344. data/public/vendor/npm/webshim@1.15.8/src/shims/combos/11.js +1 -1
  345. data/public/vendor/npm/webshim@1.15.8/src/shims/combos/17.js +1 -1
  346. data/public/vendor/npm/webshim@1.15.8/src/shims/combos/5.js +1 -1
  347. data/public/vendor/npm/webshim@1.15.8/src/shims/combos/6.js +1 -1
  348. data/public/vendor/npm/webshim@1.15.8/src/shims/combos/9.js +1 -1
  349. data/public/vendor/npm/webshim@1.15.8/src/shims/es6.js +1 -1
  350. data/public/vendor/npm/webshim@1.15.8/src/shims/excanvas.js +1 -1
  351. data/public/vendor/npm/webshim@1.15.8/src/shims/form-number-date-ui.js +1 -1
  352. data/public/vendor/npm/webshim@1.15.8/src/shims/moxie/js/moxie-html4.js +1 -1
  353. data/public/vendor/npm/webshim@1.15.8/src/shims/moxie/js/moxie-swf.js +1 -1
  354. data/public/vendor/npm/webshim@1.15.8/src/shims/sizzle.js +1 -1
  355. data/public/vendor/npm/webshim@1.15.8/tests/dist/jquery.js +1 -1
  356. data/public/vendor/npm/webshim@1.15.8/tests/jquery/unit/core.js +1 -1
  357. data/public/vendor/npm/webshim@1.15.8/tests/jquery/unit/event.js +1388 -711
  358. data/public/vendor/npm/webshim@1.15.8/tests/qunit/qunit.js +1 -1
  359. data/public/vendor/npm/webshim@1.15.8/tests/test-ext/jquery-1-custom.js +1 -1
  360. data/public/vendor/npm/webshim@1.15.8/tests/test-ext/jquery-2-custom.js +1 -1
  361. data/public/vendor/npm/webshim@1.15.8/tests/test-ext/punycode.js +1 -1
  362. data/public/vendor/system-csp-production.js +3 -3
  363. data/public/vendor/system-csp-production.js.map +1 -1
  364. data/public/vendor/system-csp-production.src.js +146 -140
  365. data/public/vendor/system-polyfills.js +865 -1
  366. data/public/vendor/system-polyfills.js.map +1 -1
  367. data/public/vendor/system-polyfills.src.js +1 -0
  368. data/public/vendor/system.js +3 -3
  369. data/public/vendor/system.js.map +1 -1
  370. data/public/vendor/system.src.js +4771 -2383
  371. data/views/blastn_options.erb +291 -0
  372. data/views/blastp_options.erb +288 -0
  373. data/views/blastx_options.erb +318 -0
  374. data/views/error.erb +12 -0
  375. data/views/layout.erb +18 -47
  376. data/views/report.erb +0 -8
  377. data/views/search.erb +16 -9
  378. data/views/tblastn_options.erb +266 -0
  379. data/views/tblastx_options.erb +291 -0
  380. metadata +362 -424
  381. data/bin/chromedriver +0 -0
  382. data/bin/geckodriver +0 -0
  383. data/public/shims/form-core.js +0 -3
  384. data/public/shims/form-validation.js +0 -3
  385. data/public/shims/plugins/jquery.ui.position.js +0 -13
  386. data/public/shims/styles/shim.css +0 -1
  387. data/public/vendor/github/jspm/nodelibs-buffer@0.1.0.js +0 -1
  388. data/public/vendor/github/jspm/nodelibs-module@0.1.0/index.js +0 -1
  389. data/public/vendor/github/jspm/nodelibs-module@0.1.0.js +0 -1
  390. data/public/vendor/github/jspm/nodelibs-process@0.1.1.js +0 -1
  391. data/public/vendor/npm/amdefine@1.0.0/LICENSE +0 -58
  392. data/public/vendor/npm/amdefine@1.0.0/README.md +0 -171
  393. data/public/vendor/npm/amdefine@1.0.0/amdefine.js +0 -200
  394. data/public/vendor/npm/amdefine@1.0.0/intercept.js +0 -24
  395. data/public/vendor/npm/amdefine@1.0.0/package.json +0 -16
  396. data/public/vendor/npm/amdefine@1.0.0.js +0 -1
  397. data/public/vendor/npm/base62@0.1.1/LICENSE +0 -20
  398. data/public/vendor/npm/base62@0.1.1/Readme.md +0 -30
  399. data/public/vendor/npm/base62@0.1.1/base62.js +0 -28
  400. data/public/vendor/npm/base62@0.1.1/package.json +0 -21
  401. data/public/vendor/npm/base62@0.1.1/test/test.js +0 -13
  402. data/public/vendor/npm/base62@0.1.1.js +0 -1
  403. data/public/vendor/npm/base64-js@0.0.8/lib/b64.js +0 -125
  404. data/public/vendor/npm/base64-js@0.0.8/package.json +0 -34
  405. data/public/vendor/npm/base64-js@0.0.8/test/convert.js +0 -39
  406. data/public/vendor/npm/base64-js@0.0.8/test/url-safe.js +0 -15
  407. data/public/vendor/npm/base64-js@0.0.8.js +0 -1
  408. data/public/vendor/npm/buffer@3.4.3/index.js +0 -1533
  409. data/public/vendor/npm/buffer@3.4.3/package.json +0 -67
  410. data/public/vendor/npm/buffer@3.4.3/test/_polyfill.js +0 -152
  411. data/public/vendor/npm/buffer@3.4.3/test/base64.js +0 -33
  412. data/public/vendor/npm/buffer@3.4.3/test/basic.js +0 -58
  413. data/public/vendor/npm/buffer@3.4.3/test/compare.js +0 -53
  414. data/public/vendor/npm/buffer@3.4.3/test/constructor.js +0 -132
  415. data/public/vendor/npm/buffer@3.4.3/test/deprecated.js +0 -21
  416. data/public/vendor/npm/buffer@3.4.3/test/from-string.js +0 -105
  417. data/public/vendor/npm/buffer@3.4.3/test/methods.js +0 -109
  418. data/public/vendor/npm/buffer@3.4.3/test/node/README.txt +0 -1
  419. data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer-ascii.js +0 -20
  420. data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer-bytelength.js +0 -38
  421. data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer-concat.js +0 -26
  422. data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer-indexof.js +0 -78
  423. data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer-inspect.js +0 -31
  424. data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer.js +0 -804
  425. data/public/vendor/npm/buffer@3.4.3/test/node-es6/README.txt +0 -1
  426. data/public/vendor/npm/buffer@3.4.3/test/node-es6/test-buffer-arraybuffer.js +0 -37
  427. data/public/vendor/npm/buffer@3.4.3/test/node-es6/test-buffer-iterator.js +0 -32
  428. data/public/vendor/npm/buffer@3.4.3/test/slice.js +0 -33
  429. data/public/vendor/npm/buffer@3.4.3/test/static.js +0 -32
  430. data/public/vendor/npm/buffer@3.4.3/test/to-string.js +0 -106
  431. data/public/vendor/npm/buffer@3.4.3/test/write.js +0 -90
  432. data/public/vendor/npm/buffer@3.4.3.js +0 -1
  433. data/public/vendor/npm/core-util-is@1.0.1/float.patch +0 -604
  434. data/public/vendor/npm/core-util-is@1.0.1/lib/util.js +0 -66
  435. data/public/vendor/npm/core-util-is@1.0.1/util.js +0 -66
  436. data/public/vendor/npm/core-util-is@1.0.1.js +0 -1
  437. data/public/vendor/npm/envify@3.4.0/README.md +0 -145
  438. data/public/vendor/npm/envify@3.4.0/bin/envify +0 -17
  439. data/public/vendor/npm/envify@3.4.0/custom.js +0 -33
  440. data/public/vendor/npm/envify@3.4.0/index.js +0 -4
  441. data/public/vendor/npm/envify@3.4.0/package.json +0 -35
  442. data/public/vendor/npm/envify@3.4.0/visitors.js +0 -33
  443. data/public/vendor/npm/envify@3.4.0.js +0 -1
  444. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/bin/esparse.js +0 -90
  445. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/bin/esvalidate.js +0 -145
  446. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/esprima.js +0 -6191
  447. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/package.json +0 -72
  448. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/test/compat.js +0 -167
  449. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/test/reflect.js +0 -421
  450. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/test/run.js +0 -34
  451. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/test/runner.js +0 -418
  452. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/test/test.js +0 -34730
  453. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb.js +0 -1
  454. data/public/vendor/npm/ieee754@1.1.6/LICENSE +0 -56
  455. data/public/vendor/npm/ieee754@1.1.6/package.json +0 -34
  456. data/public/vendor/npm/ieee754@1.1.6/test/basic.js +0 -20
  457. data/public/vendor/npm/ieee754@1.1.6.js +0 -1
  458. data/public/vendor/npm/is-array@1.0.1/History.md +0 -11
  459. data/public/vendor/npm/is-array@1.0.1/Readme.md +0 -27
  460. data/public/vendor/npm/is-array@1.0.1/component.json +0 -13
  461. data/public/vendor/npm/is-array@1.0.1/index.js +0 -33
  462. data/public/vendor/npm/is-array@1.0.1/package.json +0 -10
  463. data/public/vendor/npm/is-array@1.0.1/test/test.html +0 -46
  464. data/public/vendor/npm/is-array@1.0.1.js +0 -1
  465. data/public/vendor/npm/jstransform@10.1.0/LICENSE +0 -201
  466. data/public/vendor/npm/jstransform@10.1.0/README.md +0 -98
  467. data/public/vendor/npm/jstransform@10.1.0/jestEnvironment.js +0 -3
  468. data/public/vendor/npm/jstransform@10.1.0/jestPreprocessor.js +0 -8
  469. data/public/vendor/npm/jstransform@10.1.0/package.json +0 -52
  470. data/public/vendor/npm/jstransform@10.1.0/polyfill/Object.es6.js +0 -54
  471. data/public/vendor/npm/jstransform@10.1.0/src/__tests__/jstransform-test.js +0 -246
  472. data/public/vendor/npm/jstransform@10.1.0/src/__tests__/jstransform-utils-test.js +0 -31
  473. data/public/vendor/npm/jstransform@10.1.0/src/docblock.js +0 -86
  474. data/public/vendor/npm/jstransform@10.1.0/src/jstransform.js +0 -180
  475. data/public/vendor/npm/jstransform@10.1.0/src/utils.js +0 -386
  476. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-arrow-function-visitors-test.js +0 -57
  477. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-call-spread-visitors-test.js +0 -46
  478. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-class-visitors-test.js +0 -463
  479. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-destructuring-visitors-test.js +0 -144
  480. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-es7-object-integration-test.js +0 -40
  481. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-object-concise-method-visitors-test.js +0 -47
  482. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-object-short-notation-visitors-test.js +0 -33
  483. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-rest-param-visitors-test.js +0 -119
  484. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-template-visitors-test.js +0 -138
  485. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es7-rest-property-helpers-test.js +0 -47
  486. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es7-spread-property-visitors-test.js +0 -90
  487. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/gen/generate-type-syntax-test.js +0 -40
  488. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/gen/type-syntax-test.rec.js +0 -846
  489. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/reserved-words-test.js +0 -40
  490. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-alias-syntax-test.js +0 -34
  491. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-class-syntax-test.js +0 -105
  492. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-function-syntax-test.js +0 -126
  493. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-interface-syntax-test.js +0 -29
  494. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-object-method-syntax-test.js +0 -65
  495. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-pattern-syntax-test.js +0 -45
  496. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-syntax-test.js +0 -46
  497. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-variable-declaration-syntax-test.js +0 -102
  498. data/public/vendor/npm/jstransform@10.1.0/visitors/es6-arrow-function-visitors.js +0 -66
  499. data/public/vendor/npm/jstransform@10.1.0/visitors/es6-call-spread-visitors.js +0 -72
  500. data/public/vendor/npm/jstransform@10.1.0/visitors/es6-class-visitors.js +0 -316
  501. data/public/vendor/npm/jstransform@10.1.0/visitors/es6-destructuring-visitors.js +0 -135
  502. data/public/vendor/npm/jstransform@10.1.0/visitors/es6-object-concise-method-visitors.js +0 -28
  503. data/public/vendor/npm/jstransform@10.1.0/visitors/es6-object-short-notation-visitors.js +0 -12
  504. data/public/vendor/npm/jstransform@10.1.0/visitors/es6-rest-param-visitors.js +0 -45
  505. data/public/vendor/npm/jstransform@10.1.0/visitors/es6-template-visitors.js +0 -90
  506. data/public/vendor/npm/jstransform@10.1.0/visitors/es7-rest-property-helpers.js +0 -80
  507. data/public/vendor/npm/jstransform@10.1.0/visitors/es7-spread-property-visitors.js +0 -56
  508. data/public/vendor/npm/jstransform@10.1.0/visitors/reserved-words-helper.js +0 -74
  509. data/public/vendor/npm/jstransform@10.1.0/visitors/reserved-words-visitors.js +0 -30
  510. data/public/vendor/npm/jstransform@10.1.0/visitors/type-syntax.js +0 -118
  511. data/public/vendor/npm/jstransform@10.1.0.js +0 -1
  512. data/public/vendor/npm/process@0.10.1/browser.js +0 -58
  513. data/public/vendor/npm/process@0.10.1.js +0 -1
  514. data/public/vendor/npm/qs@2.4.1/test/stringify.js +0 -162
  515. data/public/vendor/npm/react@0.13.3/README.md +0 -20
  516. data/public/vendor/npm/react@0.13.3/addons.js +0 -2
  517. data/public/vendor/npm/react@0.13.3/dist/JSXTransformer.js +0 -11346
  518. data/public/vendor/npm/react@0.13.3/dist/react-with-addons.js +0 -10483
  519. data/public/vendor/npm/react@0.13.3/dist/react-with-addons.min.js +0 -7297
  520. data/public/vendor/npm/react@0.13.3/dist/react.js +0 -9468
  521. data/public/vendor/npm/react@0.13.3/dist/react.min.js +0 -6764
  522. data/public/vendor/npm/react@0.13.3/lib/AutoFocusMixin.js +0 -9
  523. data/public/vendor/npm/react@0.13.3/lib/BeforeInputEventPlugin.js +0 -197
  524. data/public/vendor/npm/react@0.13.3/lib/CSSCore.js +0 -39
  525. data/public/vendor/npm/react@0.13.3/lib/CSSProperty.js +0 -123
  526. data/public/vendor/npm/react@0.13.3/lib/CSSPropertyOperations.js +0 -103
  527. data/public/vendor/npm/react@0.13.3/lib/CallbackQueue.js +0 -43
  528. data/public/vendor/npm/react@0.13.3/lib/ChangeEventPlugin.js +0 -174
  529. data/public/vendor/npm/react@0.13.3/lib/ClientReactRootIndex.js +0 -23
  530. data/public/vendor/npm/react@0.13.3/lib/DOMChildrenOperations.js +0 -57
  531. data/public/vendor/npm/react@0.13.3/lib/DOMProperty.js +0 -96
  532. data/public/vendor/npm/react@0.13.3/lib/DOMPropertyOperations.js +0 -99
  533. data/public/vendor/npm/react@0.13.3/lib/Danger.js +0 -67
  534. data/public/vendor/npm/react@0.13.3/lib/DefaultEventPluginOrder.js +0 -5
  535. data/public/vendor/npm/react@0.13.3/lib/EnterLeaveEventPlugin.js +0 -69
  536. data/public/vendor/npm/react@0.13.3/lib/EventConstants.js +0 -55
  537. data/public/vendor/npm/react@0.13.3/lib/EventListener.js +0 -34
  538. data/public/vendor/npm/react@0.13.3/lib/EventPluginHub.js +0 -103
  539. data/public/vendor/npm/react@0.13.3/lib/EventPluginRegistry.js +0 -115
  540. data/public/vendor/npm/react@0.13.3/lib/EventPluginUtils.js +0 -121
  541. data/public/vendor/npm/react@0.13.3/lib/EventPropagators.js +0 -62
  542. data/public/vendor/npm/react@0.13.3/lib/ExecutionEnvironment.js +0 -42
  543. data/public/vendor/npm/react@0.13.3/lib/FallbackCompositionState.js +0 -45
  544. data/public/vendor/npm/react@0.13.3/lib/HTMLDOMPropertyConfig.js +0 -155
  545. data/public/vendor/npm/react@0.13.3/lib/LinkedStateMixin.js +0 -8
  546. data/public/vendor/npm/react@0.13.3/lib/LinkedValueUtils.js +0 -74
  547. data/public/vendor/npm/react@0.13.3/lib/LocalEventTrapMixin.js +0 -26
  548. data/public/vendor/npm/react@0.13.3/lib/MobileSafariClickEventPlugin.js +0 -17
  549. data/public/vendor/npm/react@0.13.3/lib/Object.assign.js +0 -47
  550. data/public/vendor/npm/react@0.13.3/lib/PooledClass.js +0 -75
  551. data/public/vendor/npm/react@0.13.3/lib/React.js +0 -93
  552. data/public/vendor/npm/react@0.13.3/lib/ReactBrowserComponentMixin.js +0 -7
  553. data/public/vendor/npm/react@0.13.3/lib/ReactBrowserEventEmitter.js +0 -136
  554. data/public/vendor/npm/react@0.13.3/lib/ReactCSSTransitionGroup.js +0 -34
  555. data/public/vendor/npm/react@0.13.3/lib/ReactCSSTransitionGroupChild.js +0 -92
  556. data/public/vendor/npm/react@0.13.3/lib/ReactChildReconciler.js +0 -57
  557. data/public/vendor/npm/react@0.13.3/lib/ReactChildren.js +0 -67
  558. data/public/vendor/npm/react@0.13.3/lib/ReactClass.js +0 -338
  559. data/public/vendor/npm/react@0.13.3/lib/ReactComponent.js +0 -50
  560. data/public/vendor/npm/react@0.13.3/lib/ReactComponentBrowserEnvironment.js +0 -14
  561. data/public/vendor/npm/react@0.13.3/lib/ReactComponentEnvironment.js +0 -19
  562. data/public/vendor/npm/react@0.13.3/lib/ReactComponentWithPureRenderMixin.js +0 -7
  563. data/public/vendor/npm/react@0.13.3/lib/ReactCompositeComponent.js +0 -374
  564. data/public/vendor/npm/react@0.13.3/lib/ReactContext.js +0 -27
  565. data/public/vendor/npm/react@0.13.3/lib/ReactCurrentOwner.js +0 -32
  566. data/public/vendor/npm/react@0.13.3/lib/ReactDOM.js +0 -146
  567. data/public/vendor/npm/react@0.13.3/lib/ReactDOMButton.js +0 -35
  568. data/public/vendor/npm/react@0.13.3/lib/ReactDOMComponent.js +0 -267
  569. data/public/vendor/npm/react@0.13.3/lib/ReactDOMForm.js +0 -21
  570. data/public/vendor/npm/react@0.13.3/lib/ReactDOMIDOperations.js +0 -63
  571. data/public/vendor/npm/react@0.13.3/lib/ReactDOMIframe.js +0 -20
  572. data/public/vendor/npm/react@0.13.3/lib/ReactDOMImg.js +0 -21
  573. data/public/vendor/npm/react@0.13.3/lib/ReactDOMInput.js +0 -94
  574. data/public/vendor/npm/react@0.13.3/lib/ReactDOMOption.js +0 -23
  575. data/public/vendor/npm/react@0.13.3/lib/ReactDOMSelect.js +0 -112
  576. data/public/vendor/npm/react@0.13.3/lib/ReactDOMSelection.js +0 -103
  577. data/public/vendor/npm/react@0.13.3/lib/ReactDOMTextComponent.js +0 -38
  578. data/public/vendor/npm/react@0.13.3/lib/ReactDOMTextarea.js +0 -70
  579. data/public/vendor/npm/react@0.13.3/lib/ReactDefaultBatchingStrategy.js +0 -37
  580. data/public/vendor/npm/react@0.13.3/lib/ReactDefaultInjection.js +0 -93
  581. data/public/vendor/npm/react@0.13.3/lib/ReactDefaultPerf.js +0 -183
  582. data/public/vendor/npm/react@0.13.3/lib/ReactDefaultPerfAnalysis.js +0 -145
  583. data/public/vendor/npm/react@0.13.3/lib/ReactElement.js +0 -151
  584. data/public/vendor/npm/react@0.13.3/lib/ReactElementValidator.js +0 -218
  585. data/public/vendor/npm/react@0.13.3/lib/ReactEmptyComponent.js +0 -47
  586. data/public/vendor/npm/react@0.13.3/lib/ReactErrorUtils.js +0 -30
  587. data/public/vendor/npm/react@0.13.3/lib/ReactEventEmitterMixin.js +0 -12
  588. data/public/vendor/npm/react@0.13.3/lib/ReactEventListener.js +0 -93
  589. data/public/vendor/npm/react@0.13.3/lib/ReactFragment.js +0 -110
  590. data/public/vendor/npm/react@0.13.3/lib/ReactInjection.js +0 -27
  591. data/public/vendor/npm/react@0.13.3/lib/ReactInputSelection.js +0 -75
  592. data/public/vendor/npm/react@0.13.3/lib/ReactInstanceHandles.js +0 -113
  593. data/public/vendor/npm/react@0.13.3/lib/ReactInstanceMap.js +0 -47
  594. data/public/vendor/npm/react@0.13.3/lib/ReactLifeCycle.js +0 -9
  595. data/public/vendor/npm/react@0.13.3/lib/ReactLink.js +0 -16
  596. data/public/vendor/npm/react@0.13.3/lib/ReactMarkupChecksum.js +0 -17
  597. data/public/vendor/npm/react@0.13.3/lib/ReactMount.js +0 -347
  598. data/public/vendor/npm/react@0.13.3/lib/ReactMultiChild.js +0 -190
  599. data/public/vendor/npm/react@0.13.3/lib/ReactMultiChildUpdateTypes.js +0 -10
  600. data/public/vendor/npm/react@0.13.3/lib/ReactNativeComponent.js +0 -53
  601. data/public/vendor/npm/react@0.13.3/lib/ReactOwner.js +0 -21
  602. data/public/vendor/npm/react@0.13.3/lib/ReactPerf.js +0 -42
  603. data/public/vendor/npm/react@0.13.3/lib/ReactPropTransferer.js +0 -40
  604. data/public/vendor/npm/react@0.13.3/lib/ReactPropTypeLocationNames.js +0 -13
  605. data/public/vendor/npm/react@0.13.3/lib/ReactPropTypeLocations.js +0 -9
  606. data/public/vendor/npm/react@0.13.3/lib/ReactPropTypes.js +0 -225
  607. data/public/vendor/npm/react@0.13.3/lib/ReactPutListenerQueue.js +0 -31
  608. data/public/vendor/npm/react@0.13.3/lib/ReactReconcileTransaction.js +0 -66
  609. data/public/vendor/npm/react@0.13.3/lib/ReactReconciler.js +0 -44
  610. data/public/vendor/npm/react@0.13.3/lib/ReactRef.js +0 -36
  611. data/public/vendor/npm/react@0.13.3/lib/ReactRootIndex.js +0 -29
  612. data/public/vendor/npm/react@0.13.3/lib/ReactServerRendering.js +0 -44
  613. data/public/vendor/npm/react@0.13.3/lib/ReactServerRenderingTransaction.js +0 -47
  614. data/public/vendor/npm/react@0.13.3/lib/ReactStateSetters.js +0 -104
  615. data/public/vendor/npm/react@0.13.3/lib/ReactTestUtils.js +0 -249
  616. data/public/vendor/npm/react@0.13.3/lib/ReactTransitionChildMapping.js +0 -53
  617. data/public/vendor/npm/react@0.13.3/lib/ReactTransitionEvents.js +0 -68
  618. data/public/vendor/npm/react@0.13.3/lib/ReactTransitionGroup.js +0 -140
  619. data/public/vendor/npm/react@0.13.3/lib/ReactUpdateQueue.js +0 -107
  620. data/public/vendor/npm/react@0.13.3/lib/ReactUpdates.js +0 -139
  621. data/public/vendor/npm/react@0.13.3/lib/ReactWithAddons.js +0 -30
  622. data/public/vendor/npm/react@0.13.3/lib/SVGDOMPropertyConfig.js +0 -76
  623. data/public/vendor/npm/react@0.13.3/lib/SelectEventPlugin.js +0 -91
  624. data/public/vendor/npm/react@0.13.3/lib/ServerReactRootIndex.js +0 -29
  625. data/public/vendor/npm/react@0.13.3/lib/SimpleEventPlugin.js +0 -287
  626. data/public/vendor/npm/react@0.13.3/lib/SyntheticClipboardEvent.js +0 -11
  627. data/public/vendor/npm/react@0.13.3/lib/SyntheticCompositionEvent.js +0 -9
  628. data/public/vendor/npm/react@0.13.3/lib/SyntheticDragEvent.js +0 -9
  629. data/public/vendor/npm/react@0.13.3/lib/SyntheticEvent.js +0 -90
  630. data/public/vendor/npm/react@0.13.3/lib/SyntheticFocusEvent.js +0 -9
  631. data/public/vendor/npm/react@0.13.3/lib/SyntheticInputEvent.js +0 -9
  632. data/public/vendor/npm/react@0.13.3/lib/SyntheticKeyboardEvent.js +0 -43
  633. data/public/vendor/npm/react@0.13.3/lib/SyntheticMouseEvent.js +0 -38
  634. data/public/vendor/npm/react@0.13.3/lib/SyntheticTouchEvent.js +0 -19
  635. data/public/vendor/npm/react@0.13.3/lib/SyntheticUIEvent.js +0 -29
  636. data/public/vendor/npm/react@0.13.3/lib/SyntheticWheelEvent.js +0 -18
  637. data/public/vendor/npm/react@0.13.3/lib/Transaction.js +0 -90
  638. data/public/vendor/npm/react@0.13.3/lib/ViewportMetrics.js +0 -27
  639. data/public/vendor/npm/react@0.13.3/lib/accumulateInto.js +0 -26
  640. data/public/vendor/npm/react@0.13.3/lib/adler32.js +0 -32
  641. data/public/vendor/npm/react@0.13.3/lib/camelize.js +0 -30
  642. data/public/vendor/npm/react@0.13.3/lib/camelizeStyleName.js +0 -8
  643. data/public/vendor/npm/react@0.13.3/lib/cloneWithProps.js +0 -20
  644. data/public/vendor/npm/react@0.13.3/lib/containsNode.js +0 -20
  645. data/public/vendor/npm/react@0.13.3/lib/createArrayFromMixed.js +0 -15
  646. data/public/vendor/npm/react@0.13.3/lib/createFullPageComponent.js +0 -22
  647. data/public/vendor/npm/react@0.13.3/lib/createNodesFromMarkup.js +0 -39
  648. data/public/vendor/npm/react@0.13.3/lib/cx.js +0 -20
  649. data/public/vendor/npm/react@0.13.3/lib/dangerousStyleValue.js +0 -19
  650. data/public/vendor/npm/react@0.13.3/lib/emptyFunction.js +0 -32
  651. data/public/vendor/npm/react@0.13.3/lib/emptyObject.js +0 -9
  652. data/public/vendor/npm/react@0.13.3/lib/escapeTextContentForBrowser.js +0 -38
  653. data/public/vendor/npm/react@0.13.3/lib/findDOMNode.js +0 -31
  654. data/public/vendor/npm/react@0.13.3/lib/flattenChildren.js +0 -25
  655. data/public/vendor/npm/react@0.13.3/lib/focusNode.js +0 -27
  656. data/public/vendor/npm/react@0.13.3/lib/forEachAccumulated.js +0 -29
  657. data/public/vendor/npm/react@0.13.3/lib/getActiveElement.js +0 -27
  658. data/public/vendor/npm/react@0.13.3/lib/getEventCharCode.js +0 -50
  659. data/public/vendor/npm/react@0.13.3/lib/getEventKey.js +0 -72
  660. data/public/vendor/npm/react@0.13.3/lib/getEventModifierState.js +0 -45
  661. data/public/vendor/npm/react@0.13.3/lib/getEventTarget.js +0 -29
  662. data/public/vendor/npm/react@0.13.3/lib/getIteratorFn.js +0 -42
  663. data/public/vendor/npm/react@0.13.3/lib/getMarkupWrap.js +0 -73
  664. data/public/vendor/npm/react@0.13.3/lib/getNodeForCharacterOffset.js +0 -73
  665. data/public/vendor/npm/react@0.13.3/lib/getReactRootElementInContainer.js +0 -33
  666. data/public/vendor/npm/react@0.13.3/lib/getTextContentAccessor.js +0 -11
  667. data/public/vendor/npm/react@0.13.3/lib/getUnboundedScrollPosition.js +0 -38
  668. data/public/vendor/npm/react@0.13.3/lib/hyphenate.js +0 -31
  669. data/public/vendor/npm/react@0.13.3/lib/hyphenateStyleName.js +0 -8
  670. data/public/vendor/npm/react@0.13.3/lib/instantiateReactComponent.js +0 -55
  671. data/public/vendor/npm/react@0.13.3/lib/invariant.js +0 -26
  672. data/public/vendor/npm/react@0.13.3/lib/isEventSupported.js +0 -24
  673. data/public/vendor/npm/react@0.13.3/lib/isNode.js +0 -25
  674. data/public/vendor/npm/react@0.13.3/lib/isTextInputElement.js +0 -41
  675. data/public/vendor/npm/react@0.13.3/lib/isTextNode.js +0 -6
  676. data/public/vendor/npm/react@0.13.3/lib/joinClasses.js +0 -39
  677. data/public/vendor/npm/react@0.13.3/lib/keyMirror.js +0 -18
  678. data/public/vendor/npm/react@0.13.3/lib/keyOf.js +0 -34
  679. data/public/vendor/npm/react@0.13.3/lib/mapObject.js +0 -51
  680. data/public/vendor/npm/react@0.13.3/lib/memoizeStringOnly.js +0 -31
  681. data/public/vendor/npm/react@0.13.3/lib/onlyChild.js +0 -11
  682. data/public/vendor/npm/react@0.13.3/lib/performance.js +0 -8
  683. data/public/vendor/npm/react@0.13.3/lib/performanceNow.js +0 -7
  684. data/public/vendor/npm/react@0.13.3/lib/quoteAttributeValueForBrowser.js +0 -7
  685. data/public/vendor/npm/react@0.13.3/lib/setInnerHTML.js +0 -40
  686. data/public/vendor/npm/react@0.13.3/lib/setTextContent.js +0 -16
  687. data/public/vendor/npm/react@0.13.3/lib/shallowEqual.js +0 -42
  688. data/public/vendor/npm/react@0.13.3/lib/shouldUpdateReactComponent.js +0 -51
  689. data/public/vendor/npm/react@0.13.3/lib/toArray.js +0 -21
  690. data/public/vendor/npm/react@0.13.3/lib/traverseAllChildren.js +0 -104
  691. data/public/vendor/npm/react@0.13.3/lib/update.js +0 -78
  692. data/public/vendor/npm/react@0.13.3/lib/warning.js +0 -34
  693. data/public/vendor/npm/react@0.13.3/package.json +0 -34
  694. data/public/vendor/npm/react@0.13.3/react.js +0 -2
  695. data/public/vendor/npm/react@0.13.3.js +0 -1
  696. data/public/vendor/npm/readable-stream@1.1.13/duplex.js +0 -2
  697. data/public/vendor/npm/readable-stream@1.1.13/passthrough.js +0 -2
  698. data/public/vendor/npm/readable-stream@1.1.13/readable.js +0 -8
  699. data/public/vendor/npm/readable-stream@1.1.13/transform.js +0 -2
  700. data/public/vendor/npm/readable-stream@1.1.13/writable.js +0 -2
  701. data/public/vendor/npm/readable-stream@1.1.13.js +0 -1
  702. data/public/vendor/npm/source-map@0.1.31/CHANGELOG.md +0 -112
  703. data/public/vendor/npm/source-map@0.1.31/LICENSE +0 -28
  704. data/public/vendor/npm/source-map@0.1.31/Makefile.dryice.js +0 -89
  705. data/public/vendor/npm/source-map@0.1.31/README.md +0 -434
  706. data/public/vendor/npm/source-map@0.1.31/build/assert-shim.js +0 -58
  707. data/public/vendor/npm/source-map@0.1.31/build/mini-require.js +0 -154
  708. data/public/vendor/npm/source-map@0.1.31/build/prefix-source-map.jsm +0 -20
  709. data/public/vendor/npm/source-map@0.1.31/build/prefix-utils.jsm +0 -18
  710. data/public/vendor/npm/source-map@0.1.31/build/suffix-browser.js +0 -8
  711. data/public/vendor/npm/source-map@0.1.31/build/suffix-source-map.jsm +0 -6
  712. data/public/vendor/npm/source-map@0.1.31/build/suffix-utils.jsm +0 -21
  713. data/public/vendor/npm/source-map@0.1.31/build/test-prefix.js +0 -10
  714. data/public/vendor/npm/source-map@0.1.31/build/test-suffix.js +0 -5
  715. data/public/vendor/npm/source-map@0.1.31/lib/source-map/array-set.js +0 -49
  716. data/public/vendor/npm/source-map@0.1.31/lib/source-map/base64-vlq.js +0 -56
  717. data/public/vendor/npm/source-map@0.1.31/lib/source-map/base64.js +0 -44
  718. data/public/vendor/npm/source-map@0.1.31/lib/source-map/binary-search.js +0 -83
  719. data/public/vendor/npm/source-map@0.1.31/lib/source-map/source-map-consumer.js +0 -238
  720. data/public/vendor/npm/source-map@0.1.31/lib/source-map/source-map-generator.js +0 -231
  721. data/public/vendor/npm/source-map@0.1.31/lib/source-map/source-node.js +0 -234
  722. data/public/vendor/npm/source-map@0.1.31/lib/source-map/util.js +0 -207
  723. data/public/vendor/npm/source-map@0.1.31/lib/source-map.js +0 -4
  724. data/public/vendor/npm/source-map@0.1.31/package.json +0 -52
  725. data/public/vendor/npm/source-map@0.1.31/test/run-tests.js +0 -50
  726. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-api.js +0 -19
  727. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-array-set.js +0 -84
  728. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-base64-vlq.js +0 -17
  729. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-base64.js +0 -26
  730. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-binary-search.js +0 -37
  731. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-dog-fooding.js +0 -76
  732. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-source-map-consumer.js +0 -426
  733. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-source-map-generator.js +0 -480
  734. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-source-node.js +0 -307
  735. data/public/vendor/npm/source-map@0.1.31/test/source-map/util.js +0 -84
  736. data/public/vendor/npm/source-map@0.1.31.js +0 -1
  737. data/public/vendor/npm/through@2.3.8/LICENSE.APACHE2 +0 -15
  738. data/public/vendor/npm/through@2.3.8/LICENSE.MIT +0 -24
  739. data/public/vendor/npm/through@2.3.8/index.js +0 -93
  740. data/public/vendor/npm/through@2.3.8/package.json +0 -36
  741. data/public/vendor/npm/through@2.3.8/readme.markdown +0 -64
  742. data/public/vendor/npm/through@2.3.8/test/async.js +0 -26
  743. data/public/vendor/npm/through@2.3.8/test/auto-destroy.js +0 -26
  744. data/public/vendor/npm/through@2.3.8/test/buffering.js +0 -57
  745. data/public/vendor/npm/through@2.3.8/test/end.js +0 -37
  746. data/public/vendor/npm/through@2.3.8/test/index.js +0 -98
  747. data/public/vendor/npm/through@2.3.8/test.js +0 -2
  748. data/public/vendor/npm/through@2.3.8.js +0 -1
  749. data/views/_options.erb +0 -135
  750. /data/public/vendor/github/jspm/{nodelibs-buffer@0.1.0 → nodelibs-buffer@0.1.1}/index.js +0 -0
  751. /data/public/vendor/github/jspm/{nodelibs-process@0.1.1 → nodelibs-process@0.1.2}/index.js +0 -0
  752. /data/public/vendor/npm/{readable-stream@1.1.13 → assert@1.5.0}/LICENSE +0 -0
  753. /data/public/vendor/npm/{buffer@3.4.3 → buffer@5.7.1}/LICENSE +0 -0
  754. /data/public/vendor/npm/{core-util-is@1.0.1 → core-util-is@1.0.3}/README.md +0 -0
  755. /data/public/vendor/npm/{process@0.10.1 → process@0.11.10}/LICENSE +0 -0
  756. /data/public/vendor/npm/{process@0.10.1 → process@0.11.10}/index.js +0 -0
  757. /data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/README.md +0 -0
  758. /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! # database type
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
- def include?(accession)
52
- cmd = "blastdbcmd -entry '#{accession}' -db #{name}"
53
- out, = sys(cmd, path: config[:bin])
54
- !out.empty?
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=(databases_attrs)
84
- databases_attrs.each do |db_attrs|
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
@@ -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
- pool.queue { job.run }
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
- YAML.load_file(job_file)
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[:num_threads])
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 = 43200 # minutes (i.e., 30 days)
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
- begin
29
- now = Time.now
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
- # Sleep till next cleanup.
51
- sleep @next_cleanup.ceil
52
- rescue => e
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. It is
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 @fastas_to_reformat.empty?
77
- # We need to compare @fastas_to_reformat to @formatted_fastas, but the
78
- # latter contains extra attributes. However, the first attribute, i.e,
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, title, type, *rest = line.split(' ')
106
+ path, *rest = line.chomp.split("\t")
124
107
  next if multipart_database_name?(path)
125
- @formatted_fastas << [path, title, type.strip.downcase, *rest]
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 |path, title, type|
133
- required_extensions = REQUIRED_EXTENSIONS[type]
134
- exts = Dir["#{path}.*"].map { |p| p.split('.').last }.sort
135
- next if (exts & required_extensions) == required_extensions
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(database_dir) do |path|
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(File.basename(path)),
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
- taxonomy = taxid_map(file) || taxid
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
- if !File.exist?(taxid_map) || File.zero?(taxid_map)
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 ? Integer(user_response) : 0}"
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
- extract_fasta(file) unless File.exist?(file)
226
- cmd = "makeblastdb -parse_seqids -hash_index -in #{file} " \
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(db_name)
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), '')
@@ -0,0 +1,15 @@
1
+ class Hash
2
+ def deep_copy
3
+ Marshal.load Marshal.dump self
4
+ end
5
+
6
+ def deep_merge(other)
7
+ merge(other) do |key, oldval, newval|
8
+ if oldval.is_a? Hash then
9
+ oldval.deep_merge(newval)
10
+ else
11
+ newval
12
+ end
13
+ end
14
+ end
15
+ 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,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: sequences.mime,
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
- error_data.to_json
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) if !params[:query]
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
- searchdata[:options][job.method] = [job.advanced] if job.advanced
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: sequences.map(&:info)
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
- fail ArgumentError, 'Database id should be one of:' \
228
- " #{ids.join("\n")}."
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
@@ -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("#{command} 1>#{temp_files[:stdout].path}" \
51
- " 2>#{temp_files[:stderr].path}")
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.
@@ -1,4 +1,4 @@
1
1
  # Define version number.
2
2
  module SequenceServer
3
- VERSION = '2.0.0.rc8'.freeze
3
+ VERSION = '2.1.0'.freeze
4
4
  end