sequenceserver 2.0.0 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of sequenceserver might be problematic. Click here for more details.

Files changed (675) hide show
  1. checksums.yaml +4 -4
  2. data/bin/sequenceserver +7 -2
  3. data/lib/sequenceserver/api_errors.rb +24 -2
  4. data/lib/sequenceserver/blast/formatter.rb +13 -4
  5. data/lib/sequenceserver/blast/job.rb +41 -7
  6. data/lib/sequenceserver/blast/report.rb +69 -33
  7. data/lib/sequenceserver/config.rb +52 -27
  8. data/lib/sequenceserver/job.rb +13 -3
  9. data/lib/sequenceserver/job_remover.rb +25 -29
  10. data/lib/sequenceserver/makeblastdb.rb +80 -72
  11. data/lib/sequenceserver/pool.rb +1 -1
  12. data/lib/sequenceserver/refinements.rb +15 -0
  13. data/lib/sequenceserver/report.rb +1 -5
  14. data/lib/sequenceserver/routes.rb +92 -9
  15. data/lib/sequenceserver/sequence.rb +8 -7
  16. data/lib/sequenceserver/sys.rb +3 -3
  17. data/lib/sequenceserver/version.rb +1 -1
  18. data/lib/sequenceserver/zip_file_generator.rb +56 -0
  19. data/lib/sequenceserver.rb +9 -2
  20. data/public/config.js +149 -143
  21. data/public/css/sequenceserver.css +44 -3
  22. data/public/css/sequenceserver.min.css +3 -3
  23. data/public/js/alignment_exporter.js +16 -8
  24. data/public/js/circos.js +370 -234
  25. data/public/js/cloud_share_modal.js +216 -0
  26. data/public/js/databases.js +144 -0
  27. data/public/js/databases_tree.js +42 -113
  28. data/public/js/dnd.js +164 -0
  29. data/public/js/error_modal.js +4 -11
  30. data/public/js/exporter.js +7 -3
  31. data/public/js/form.js +260 -0
  32. data/public/js/grapher.js +113 -106
  33. data/public/js/hit.js +80 -67
  34. data/public/js/hits_overview.js +2 -2
  35. data/public/js/hsp.js +343 -288
  36. data/public/js/jquery_world.js +4 -4
  37. data/public/js/mailto.js +36 -0
  38. data/public/js/options.js +84 -0
  39. data/public/js/query.js +319 -59
  40. data/public/js/report.js +369 -269
  41. data/public/js/report_root.js +75 -0
  42. data/public/js/search.js +28 -1011
  43. data/public/js/search_button.js +195 -0
  44. data/public/js/sequence.js +2409 -2411
  45. data/public/js/sequence_modal.js +152 -159
  46. data/public/js/share_url.js +23 -0
  47. data/public/js/sidebar.js +262 -83
  48. data/public/js/tests/advanced_parameters.spec.js +36 -0
  49. data/public/js/tests/database.spec.js +60 -0
  50. data/public/js/tests/mock_data/databases.json +91 -0
  51. data/public/js/tests/mock_data/long_response.json +269 -0
  52. data/public/js/tests/mock_data/sequences.js +32 -0
  53. data/public/js/tests/mock_data/short_response.json +2240 -0
  54. data/public/js/tests/report.spec.js +155 -0
  55. data/public/js/tests/search_button.spec.js +14 -0
  56. data/public/js/tests/search_query.spec.js +58 -0
  57. data/public/js/visualisation_helpers.js +1 -1
  58. data/public/packages/circosJS@1.7.0.js +1640 -0
  59. data/public/packages/jquery-ui@1.11.4.js +16624 -0
  60. data/public/sequenceserver-report.min.js +2425 -19
  61. data/public/sequenceserver-search.min.js +2337 -15
  62. data/public/vendor/github/jspm/nodelibs-assert@0.1.0/index.js +2 -0
  63. data/public/vendor/github/jspm/{nodelibs-buffer@0.1.0 → nodelibs-assert@0.1.0}/package.json +1 -1
  64. data/public/vendor/github/jspm/nodelibs-assert@0.1.0.js +1 -0
  65. data/public/vendor/github/jspm/nodelibs-buffer@0.1.1/package.json +6 -0
  66. data/public/vendor/github/jspm/nodelibs-buffer@0.1.1.js +1 -0
  67. data/public/vendor/github/jspm/{nodelibs-process@0.1.1 → nodelibs-process@0.1.2}/package.json +2 -2
  68. data/public/vendor/github/jspm/nodelibs-process@0.1.2.js +1 -0
  69. data/public/vendor/github/jspm/nodelibs-vm@0.1.0/index.js +2 -0
  70. data/public/vendor/github/jspm/nodelibs-vm@0.1.0/package.json +6 -0
  71. data/public/vendor/github/jspm/nodelibs-vm@0.1.0.js +1 -0
  72. data/public/vendor/npm/assert@1.5.0/CHANGELOG.md +8 -0
  73. data/public/vendor/npm/assert@1.5.0/README.md +105 -0
  74. data/public/vendor/npm/assert@1.5.0/assert.js +327 -0
  75. data/public/vendor/npm/assert@1.5.0/package.json +32 -0
  76. data/public/vendor/npm/assert@1.5.0/test.js +288 -0
  77. data/public/vendor/npm/assert@1.5.0.js +1 -0
  78. data/public/vendor/npm/{base64-js@0.0.8/LICENSE.MIT → base64-js@1.5.1/LICENSE} +1 -1
  79. data/public/vendor/npm/{base64-js@0.0.8 → base64-js@1.5.1}/README.md +10 -7
  80. data/public/vendor/npm/base64-js@1.5.1/base64js.min.js +3 -0
  81. data/public/vendor/npm/base64-js@1.5.1/index.d.ts +3 -0
  82. data/public/vendor/npm/base64-js@1.5.1/index.js +151 -0
  83. data/public/vendor/npm/base64-js@1.5.1/package.json +47 -0
  84. data/public/vendor/npm/base64-js@1.5.1.js +1 -0
  85. data/public/vendor/npm/buffer@5.7.1/AUTHORS.md +70 -0
  86. data/public/vendor/npm/{buffer@3.4.3 → buffer@5.7.1}/README.md +111 -41
  87. data/public/vendor/npm/buffer@5.7.1/index.d.ts +186 -0
  88. data/public/vendor/npm/buffer@5.7.1/index.js +1817 -0
  89. data/public/vendor/npm/buffer@5.7.1/package.json +96 -0
  90. data/public/vendor/npm/buffer@5.7.1.js +1 -0
  91. data/public/vendor/npm/core-util-is@1.0.3/LICENSE +19 -0
  92. data/public/vendor/npm/core-util-is@1.0.3/lib/util.js +64 -0
  93. data/public/vendor/npm/{core-util-is@1.0.1 → core-util-is@1.0.3}/package.json +13 -1
  94. data/public/vendor/npm/core-util-is@1.0.3.js +1 -0
  95. data/public/vendor/npm/events@1.0.2/tests/add-listeners.js +2 -2
  96. data/public/vendor/npm/events@1.0.2/tests/check-listener-leaks.js +3 -3
  97. data/public/vendor/npm/events@1.0.2/tests/common.js +1 -1
  98. data/public/vendor/npm/events@1.0.2/tests/index.js +13 -13
  99. data/public/vendor/npm/events@1.0.2/tests/listeners-side-effects.js +2 -2
  100. data/public/vendor/npm/events@1.0.2/tests/listeners.js +2 -2
  101. data/public/vendor/npm/events@1.0.2/tests/max-listeners.js +2 -2
  102. data/public/vendor/npm/events@1.0.2/tests/modify-in-emit.js +2 -2
  103. data/public/vendor/npm/events@1.0.2/tests/num-args.js +2 -2
  104. data/public/vendor/npm/events@1.0.2/tests/once.js +2 -2
  105. data/public/vendor/npm/events@1.0.2/tests/remove-all-listeners.js +3 -3
  106. data/public/vendor/npm/events@1.0.2/tests/remove-listeners.js +3 -3
  107. data/public/vendor/npm/events@1.0.2/tests/set-max-listeners-side-effects.js +2 -2
  108. data/public/vendor/npm/events@1.0.2/tests/subclass.js +3 -3
  109. data/public/vendor/npm/events@1.0.2.js +1 -1
  110. data/public/vendor/npm/ieee754@1.2.1/LICENSE +11 -0
  111. data/public/vendor/npm/{ieee754@1.1.6 → ieee754@1.2.1}/README.md +12 -8
  112. data/public/vendor/npm/ieee754@1.2.1/index.d.ts +10 -0
  113. data/public/vendor/npm/{ieee754@1.1.6 → ieee754@1.2.1}/index.js +6 -6
  114. data/public/vendor/npm/ieee754@1.2.1/package.json +52 -0
  115. data/public/vendor/npm/ieee754@1.2.1.js +1 -0
  116. data/public/vendor/npm/{is-array@1.0.1 → indexof@0.0.1}/Makefile +3 -3
  117. data/public/vendor/npm/indexof@0.0.1/Readme.md +15 -0
  118. data/public/vendor/npm/indexof@0.0.1/component.json +10 -0
  119. data/public/vendor/npm/indexof@0.0.1/index.js +11 -0
  120. data/public/vendor/npm/indexof@0.0.1/package.json +12 -0
  121. data/public/vendor/npm/indexof@0.0.1.js +1 -0
  122. data/public/vendor/npm/inherits@2.0.1/inherits.js +1 -1
  123. data/public/vendor/npm/inherits@2.0.1.js +1 -1
  124. data/public/vendor/npm/isarray@0.0.1.js +1 -1
  125. data/public/vendor/npm/js-tokens@4.0.0/index.js +23 -0
  126. data/public/vendor/npm/js-tokens@4.0.0/package.json +30 -0
  127. data/public/vendor/npm/js-tokens@4.0.0.js +1 -0
  128. data/public/vendor/npm/loose-envify@1.4.0/LICENSE +21 -0
  129. data/public/vendor/npm/loose-envify@1.4.0/README.md +45 -0
  130. data/public/vendor/npm/loose-envify@1.4.0/cli.js +12 -0
  131. data/public/vendor/npm/loose-envify@1.4.0/custom.js +3 -0
  132. data/public/vendor/npm/loose-envify@1.4.0/index.js +5 -0
  133. data/public/vendor/npm/loose-envify@1.4.0/loose-envify.js +33 -0
  134. data/public/vendor/npm/loose-envify@1.4.0/package.json +36 -0
  135. data/public/vendor/npm/loose-envify@1.4.0/replace.js +52 -0
  136. data/public/vendor/npm/loose-envify@1.4.0.js +1 -0
  137. data/public/vendor/npm/object-assign@4.1.1/index.js +90 -0
  138. data/public/vendor/npm/object-assign@4.1.1/package.json +42 -0
  139. data/public/vendor/npm/object-assign@4.1.1.js +1 -0
  140. data/public/vendor/npm/path-browserify@0.0.0/index.js +1 -1
  141. data/public/vendor/npm/path-browserify@0.0.0.js +1 -1
  142. data/public/vendor/npm/{process@0.10.1 → process@0.11.10}/README.md +4 -1
  143. data/public/vendor/npm/process@0.11.10/browser.js +184 -0
  144. data/public/vendor/npm/{process@0.10.1 → process@0.11.10}/package.json +10 -1
  145. data/public/vendor/npm/process@0.11.10/test.js +185 -0
  146. data/public/vendor/npm/process@0.11.10.js +1 -0
  147. data/public/vendor/npm/react-dom@18.0.0/LICENSE +21 -0
  148. data/public/vendor/npm/react-dom@18.0.0/README.md +50 -0
  149. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server-legacy.browser.development.js +4771 -0
  150. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server-legacy.browser.production.min.js +85 -0
  151. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server-legacy.node.development.js +4813 -0
  152. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server-legacy.node.production.min.js +1705 -0
  153. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server.browser.development.js +4746 -0
  154. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server.browser.production.min.js +90 -0
  155. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server.node.development.js +4714 -0
  156. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server.node.production.min.js +1746 -0
  157. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-test-utils.development.js +1017 -0
  158. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-test-utils.production.min.js +617 -0
  159. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom.development.js +20092 -0
  160. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom.production.min.js +322 -0
  161. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom.profiling.min.js +364 -0
  162. data/public/vendor/npm/react-dom@18.0.0/client.js +27 -0
  163. data/public/vendor/npm/react-dom@18.0.0/index.js +23 -0
  164. data/public/vendor/npm/react-dom@18.0.0/package.json +62 -0
  165. data/public/vendor/npm/react-dom@18.0.0/profiling.js +23 -0
  166. data/public/vendor/npm/react-dom@18.0.0/server.browser.js +19 -0
  167. data/public/vendor/npm/react-dom@18.0.0/server.js +3 -0
  168. data/public/vendor/npm/react-dom@18.0.0/server.node.js +19 -0
  169. data/public/vendor/npm/react-dom@18.0.0/test-utils.js +9 -0
  170. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-server-legacy.browser.development.js +4770 -0
  171. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-server-legacy.browser.production.min.js +72 -0
  172. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-server.browser.development.js +4745 -0
  173. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-server.browser.production.min.js +74 -0
  174. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-test-utils.development.js +1013 -0
  175. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-test-utils.production.min.js +625 -0
  176. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom.development.js +20106 -0
  177. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom.production.min.js +269 -0
  178. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom.profiling.min.js +285 -0
  179. data/public/vendor/npm/react-dom@18.0.0.js +1 -0
  180. data/public/vendor/npm/react@18.0.0/LICENSE +21 -0
  181. data/public/vendor/npm/react@18.0.0/README.md +13 -0
  182. data/public/vendor/npm/react@18.0.0/cjs/react-jsx-dev-runtime.development.js +837 -0
  183. data/public/vendor/npm/react@18.0.0/cjs/react-jsx-dev-runtime.production.min.js +10 -0
  184. data/public/vendor/npm/react@18.0.0/cjs/react-jsx-dev-runtime.profiling.min.js +10 -0
  185. data/public/vendor/npm/react@18.0.0/cjs/react-jsx-runtime.development.js +849 -0
  186. data/public/vendor/npm/react@18.0.0/cjs/react-jsx-runtime.production.min.js +38 -0
  187. data/public/vendor/npm/react@18.0.0/cjs/react-jsx-runtime.profiling.min.js +38 -0
  188. data/public/vendor/npm/react@18.0.0/cjs/react.development.js +1746 -0
  189. data/public/vendor/npm/react@18.0.0/cjs/react.production.min.js +26 -0
  190. data/public/vendor/npm/react@18.0.0/cjs/react.shared-subset.development.js +10 -0
  191. data/public/vendor/npm/react@18.0.0/cjs/react.shared-subset.production.min.js +12 -0
  192. data/public/vendor/npm/react@18.0.0/index.js +9 -0
  193. data/public/vendor/npm/react@18.0.0/jsx-dev-runtime.js +9 -0
  194. data/public/vendor/npm/react@18.0.0/jsx-runtime.js +9 -0
  195. data/public/vendor/npm/react@18.0.0/package.json +47 -0
  196. data/public/vendor/npm/react@18.0.0/react.shared-subset.js +9 -0
  197. data/public/vendor/npm/react@18.0.0/umd/react.development.js +2186 -0
  198. data/public/vendor/npm/react@18.0.0/umd/react.production.min.js +33 -0
  199. data/public/vendor/npm/react@18.0.0/umd/react.profiling.min.js +33 -0
  200. data/public/vendor/npm/react@18.0.0.js +1 -0
  201. data/public/vendor/npm/readable-stream@1.1.14/LICENSE +18 -0
  202. data/public/vendor/npm/readable-stream@1.1.14/duplex.js +2 -0
  203. data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/lib/_stream_duplex.js +5 -5
  204. data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/lib/_stream_passthrough.js +3 -3
  205. data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/lib/_stream_readable.js +10 -10
  206. data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/lib/_stream_transform.js +4 -4
  207. data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/lib/_stream_writable.js +6 -6
  208. data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/package.json +1 -1
  209. data/public/vendor/npm/readable-stream@1.1.14/passthrough.js +2 -0
  210. data/public/vendor/npm/readable-stream@1.1.14/readable.js +13 -0
  211. data/public/vendor/npm/readable-stream@1.1.14/transform.js +2 -0
  212. data/public/vendor/npm/readable-stream@1.1.14/writable.js +2 -0
  213. data/public/vendor/npm/readable-stream@1.1.14.js +1 -0
  214. data/public/vendor/npm/scheduler@0.21.0/LICENSE +21 -0
  215. data/public/vendor/npm/scheduler@0.21.0/README.md +9 -0
  216. data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler-unstable_mock.development.js +530 -0
  217. data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler-unstable_mock.production.min.js +20 -0
  218. data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler-unstable_post_task.development.js +153 -0
  219. data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler-unstable_post_task.production.min.js +14 -0
  220. data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler.development.js +444 -0
  221. data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler.production.min.js +19 -0
  222. data/public/vendor/npm/scheduler@0.21.0/index.js +9 -0
  223. data/public/vendor/npm/scheduler@0.21.0/package.json +36 -0
  224. data/public/vendor/npm/scheduler@0.21.0/umd/scheduler-unstable_mock.development.js +701 -0
  225. data/public/vendor/npm/scheduler@0.21.0/umd/scheduler-unstable_mock.production.min.js +21 -0
  226. data/public/vendor/npm/scheduler@0.21.0/umd/scheduler.development.js +154 -0
  227. data/public/vendor/npm/scheduler@0.21.0/umd/scheduler.production.min.js +148 -0
  228. data/public/vendor/npm/scheduler@0.21.0/umd/scheduler.profiling.min.js +148 -0
  229. data/public/vendor/npm/scheduler@0.21.0/unstable_mock.js +9 -0
  230. data/public/vendor/npm/scheduler@0.21.0/unstable_post_task.js +9 -0
  231. data/public/vendor/npm/scheduler@0.21.0.js +1 -0
  232. data/public/vendor/npm/stream-browserify@1.0.0/index.js +7 -7
  233. data/public/vendor/npm/stream-browserify@1.0.0/test/buf.js +5 -5
  234. data/public/vendor/npm/stream-browserify@1.0.0.js +1 -1
  235. data/public/vendor/npm/string_decoder@0.10.31/index.js +2 -2
  236. data/public/vendor/npm/string_decoder@0.10.31.js +1 -1
  237. data/public/vendor/npm/util@0.10.3/support/isBuffer.js +1 -1
  238. data/public/vendor/npm/util@0.10.3/test/browser/inspect.js +2 -2
  239. data/public/vendor/npm/util@0.10.3/test/browser/is.js +3 -3
  240. data/public/vendor/npm/util@0.10.3/test/node/debug.js +4 -4
  241. data/public/vendor/npm/util@0.10.3/test/node/format.js +2 -2
  242. data/public/vendor/npm/util@0.10.3/test/node/inspect.js +3 -3
  243. data/public/vendor/npm/util@0.10.3/test/node/log.js +3 -3
  244. data/public/vendor/npm/util@0.10.3/test/node/util.js +3 -3
  245. data/public/vendor/npm/util@0.10.3/util.js +3 -3
  246. data/public/vendor/npm/util@0.10.3.js +1 -1
  247. data/public/vendor/npm/vm-browserify@0.0.4/LICENSE +18 -0
  248. data/public/vendor/npm/vm-browserify@0.0.4/example/run/bundle.js +376 -0
  249. data/public/vendor/npm/vm-browserify@0.0.4/example/run/entry.js +6 -0
  250. data/public/vendor/npm/vm-browserify@0.0.4/example/run/index.html +9 -0
  251. data/public/vendor/npm/vm-browserify@0.0.4/example/run/server.js +6 -0
  252. data/public/vendor/npm/vm-browserify@0.0.4/index.js +139 -0
  253. data/public/vendor/npm/vm-browserify@0.0.4/package.json +46 -0
  254. data/public/vendor/npm/vm-browserify@0.0.4/readme.markdown +67 -0
  255. data/public/vendor/npm/vm-browserify@0.0.4/test/vm.js +34 -0
  256. data/public/vendor/npm/vm-browserify@0.0.4.js +1 -0
  257. data/public/vendor/npm/webshim@1.15.8/Gruntfile.js +4 -4
  258. data/public/vendor/npm/webshim@1.15.8/build/combobuild.js +2 -2
  259. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/color-picker.js +1 -1
  260. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/10.js +1 -1
  261. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/11.js +1 -1
  262. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/17.js +1 -1
  263. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/5.js +1 -1
  264. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/6.js +1 -1
  265. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/9.js +1 -1
  266. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/es6.js +1 -1
  267. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/excanvas.js +1 -1
  268. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/form-number-date-ui.js +1 -1
  269. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/moxie/js/moxie-html4.js +1 -1
  270. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/moxie/js/moxie-swf.js +1 -1
  271. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/sizzle.js +1 -1
  272. data/public/vendor/npm/webshim@1.15.8/js-webshim/minified/shims/es6.js +1 -1
  273. data/public/vendor/npm/webshim@1.15.8/src/shims/color-picker.js +1 -1
  274. data/public/vendor/npm/webshim@1.15.8/src/shims/combos/10.js +1 -1
  275. data/public/vendor/npm/webshim@1.15.8/src/shims/combos/11.js +1 -1
  276. data/public/vendor/npm/webshim@1.15.8/src/shims/combos/17.js +1 -1
  277. data/public/vendor/npm/webshim@1.15.8/src/shims/combos/5.js +1 -1
  278. data/public/vendor/npm/webshim@1.15.8/src/shims/combos/6.js +1 -1
  279. data/public/vendor/npm/webshim@1.15.8/src/shims/combos/9.js +1 -1
  280. data/public/vendor/npm/webshim@1.15.8/src/shims/es6.js +1 -1
  281. data/public/vendor/npm/webshim@1.15.8/src/shims/excanvas.js +1 -1
  282. data/public/vendor/npm/webshim@1.15.8/src/shims/form-number-date-ui.js +1 -1
  283. data/public/vendor/npm/webshim@1.15.8/src/shims/moxie/js/moxie-html4.js +1 -1
  284. data/public/vendor/npm/webshim@1.15.8/src/shims/moxie/js/moxie-swf.js +1 -1
  285. data/public/vendor/npm/webshim@1.15.8/src/shims/sizzle.js +1 -1
  286. data/public/vendor/npm/webshim@1.15.8/tests/dist/jquery.js +1 -1
  287. data/public/vendor/npm/webshim@1.15.8/tests/jquery/unit/core.js +1 -1
  288. data/public/vendor/npm/webshim@1.15.8/tests/jquery/unit/event.js +1388 -711
  289. data/public/vendor/npm/webshim@1.15.8/tests/qunit/qunit.js +1 -1
  290. data/public/vendor/npm/webshim@1.15.8/tests/test-ext/jquery-1-custom.js +1 -1
  291. data/public/vendor/npm/webshim@1.15.8/tests/test-ext/jquery-2-custom.js +1 -1
  292. data/public/vendor/npm/webshim@1.15.8/tests/test-ext/punycode.js +1 -1
  293. data/public/vendor/system-polyfills.js +865 -1
  294. data/views/blastn_options.erb +291 -0
  295. data/views/blastp_options.erb +288 -0
  296. data/views/blastx_options.erb +318 -0
  297. data/views/error.erb +12 -0
  298. data/views/layout.erb +2 -30
  299. data/views/report.erb +0 -8
  300. data/views/search.erb +16 -9
  301. data/views/tblastn_options.erb +266 -0
  302. data/views/tblastx_options.erb +291 -0
  303. metadata +320 -439
  304. data/public/vendor/github/jspm/nodelibs-buffer@0.1.0.js +0 -1
  305. data/public/vendor/github/jspm/nodelibs-module@0.1.0/index.js +0 -1
  306. data/public/vendor/github/jspm/nodelibs-module@0.1.0.js +0 -1
  307. data/public/vendor/github/jspm/nodelibs-process@0.1.1.js +0 -1
  308. data/public/vendor/npm/amdefine@1.0.0/LICENSE +0 -58
  309. data/public/vendor/npm/amdefine@1.0.0/README.md +0 -171
  310. data/public/vendor/npm/amdefine@1.0.0/amdefine.js +0 -200
  311. data/public/vendor/npm/amdefine@1.0.0/intercept.js +0 -24
  312. data/public/vendor/npm/amdefine@1.0.0/package.json +0 -16
  313. data/public/vendor/npm/amdefine@1.0.0.js +0 -1
  314. data/public/vendor/npm/base62@0.1.1/LICENSE +0 -20
  315. data/public/vendor/npm/base62@0.1.1/Readme.md +0 -30
  316. data/public/vendor/npm/base62@0.1.1/base62.js +0 -28
  317. data/public/vendor/npm/base62@0.1.1/package.json +0 -21
  318. data/public/vendor/npm/base62@0.1.1/test/test.js +0 -13
  319. data/public/vendor/npm/base62@0.1.1.js +0 -1
  320. data/public/vendor/npm/base64-js@0.0.8/lib/b64.js +0 -125
  321. data/public/vendor/npm/base64-js@0.0.8/package.json +0 -34
  322. data/public/vendor/npm/base64-js@0.0.8/test/convert.js +0 -39
  323. data/public/vendor/npm/base64-js@0.0.8/test/url-safe.js +0 -15
  324. data/public/vendor/npm/base64-js@0.0.8.js +0 -1
  325. data/public/vendor/npm/buffer@3.4.3/index.js +0 -1533
  326. data/public/vendor/npm/buffer@3.4.3/package.json +0 -67
  327. data/public/vendor/npm/buffer@3.4.3/test/_polyfill.js +0 -152
  328. data/public/vendor/npm/buffer@3.4.3/test/base64.js +0 -33
  329. data/public/vendor/npm/buffer@3.4.3/test/basic.js +0 -58
  330. data/public/vendor/npm/buffer@3.4.3/test/compare.js +0 -53
  331. data/public/vendor/npm/buffer@3.4.3/test/constructor.js +0 -132
  332. data/public/vendor/npm/buffer@3.4.3/test/deprecated.js +0 -21
  333. data/public/vendor/npm/buffer@3.4.3/test/from-string.js +0 -105
  334. data/public/vendor/npm/buffer@3.4.3/test/methods.js +0 -109
  335. data/public/vendor/npm/buffer@3.4.3/test/node/README.txt +0 -1
  336. data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer-ascii.js +0 -20
  337. data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer-bytelength.js +0 -38
  338. data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer-concat.js +0 -26
  339. data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer-indexof.js +0 -78
  340. data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer-inspect.js +0 -31
  341. data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer.js +0 -804
  342. data/public/vendor/npm/buffer@3.4.3/test/node-es6/README.txt +0 -1
  343. data/public/vendor/npm/buffer@3.4.3/test/node-es6/test-buffer-arraybuffer.js +0 -37
  344. data/public/vendor/npm/buffer@3.4.3/test/node-es6/test-buffer-iterator.js +0 -32
  345. data/public/vendor/npm/buffer@3.4.3/test/slice.js +0 -33
  346. data/public/vendor/npm/buffer@3.4.3/test/static.js +0 -32
  347. data/public/vendor/npm/buffer@3.4.3/test/to-string.js +0 -106
  348. data/public/vendor/npm/buffer@3.4.3/test/write.js +0 -90
  349. data/public/vendor/npm/buffer@3.4.3.js +0 -1
  350. data/public/vendor/npm/core-util-is@1.0.1/float.patch +0 -604
  351. data/public/vendor/npm/core-util-is@1.0.1/lib/util.js +0 -66
  352. data/public/vendor/npm/core-util-is@1.0.1/util.js +0 -66
  353. data/public/vendor/npm/core-util-is@1.0.1.js +0 -1
  354. data/public/vendor/npm/envify@3.4.0/README.md +0 -145
  355. data/public/vendor/npm/envify@3.4.0/bin/envify +0 -17
  356. data/public/vendor/npm/envify@3.4.0/custom.js +0 -33
  357. data/public/vendor/npm/envify@3.4.0/index.js +0 -4
  358. data/public/vendor/npm/envify@3.4.0/package.json +0 -35
  359. data/public/vendor/npm/envify@3.4.0/visitors.js +0 -33
  360. data/public/vendor/npm/envify@3.4.0.js +0 -1
  361. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/bin/esparse.js +0 -90
  362. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/bin/esvalidate.js +0 -145
  363. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/esprima.js +0 -6191
  364. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/package.json +0 -72
  365. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/test/compat.js +0 -167
  366. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/test/reflect.js +0 -421
  367. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/test/run.js +0 -34
  368. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/test/runner.js +0 -418
  369. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/test/test.js +0 -34730
  370. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb.js +0 -1
  371. data/public/vendor/npm/ieee754@1.1.6/LICENSE +0 -56
  372. data/public/vendor/npm/ieee754@1.1.6/package.json +0 -34
  373. data/public/vendor/npm/ieee754@1.1.6/test/basic.js +0 -20
  374. data/public/vendor/npm/ieee754@1.1.6.js +0 -1
  375. data/public/vendor/npm/is-array@1.0.1/History.md +0 -11
  376. data/public/vendor/npm/is-array@1.0.1/Readme.md +0 -27
  377. data/public/vendor/npm/is-array@1.0.1/component.json +0 -13
  378. data/public/vendor/npm/is-array@1.0.1/index.js +0 -33
  379. data/public/vendor/npm/is-array@1.0.1/package.json +0 -10
  380. data/public/vendor/npm/is-array@1.0.1/test/test.html +0 -46
  381. data/public/vendor/npm/is-array@1.0.1.js +0 -1
  382. data/public/vendor/npm/jstransform@10.1.0/LICENSE +0 -201
  383. data/public/vendor/npm/jstransform@10.1.0/README.md +0 -98
  384. data/public/vendor/npm/jstransform@10.1.0/jestEnvironment.js +0 -3
  385. data/public/vendor/npm/jstransform@10.1.0/jestPreprocessor.js +0 -8
  386. data/public/vendor/npm/jstransform@10.1.0/package.json +0 -52
  387. data/public/vendor/npm/jstransform@10.1.0/polyfill/Object.es6.js +0 -54
  388. data/public/vendor/npm/jstransform@10.1.0/src/__tests__/jstransform-test.js +0 -246
  389. data/public/vendor/npm/jstransform@10.1.0/src/__tests__/jstransform-utils-test.js +0 -31
  390. data/public/vendor/npm/jstransform@10.1.0/src/docblock.js +0 -86
  391. data/public/vendor/npm/jstransform@10.1.0/src/jstransform.js +0 -180
  392. data/public/vendor/npm/jstransform@10.1.0/src/utils.js +0 -386
  393. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-arrow-function-visitors-test.js +0 -57
  394. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-call-spread-visitors-test.js +0 -46
  395. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-class-visitors-test.js +0 -463
  396. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-destructuring-visitors-test.js +0 -144
  397. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-es7-object-integration-test.js +0 -40
  398. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-object-concise-method-visitors-test.js +0 -47
  399. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-object-short-notation-visitors-test.js +0 -33
  400. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-rest-param-visitors-test.js +0 -119
  401. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-template-visitors-test.js +0 -138
  402. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es7-rest-property-helpers-test.js +0 -47
  403. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es7-spread-property-visitors-test.js +0 -90
  404. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/gen/generate-type-syntax-test.js +0 -40
  405. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/gen/type-syntax-test.rec.js +0 -846
  406. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/reserved-words-test.js +0 -40
  407. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-alias-syntax-test.js +0 -34
  408. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-class-syntax-test.js +0 -105
  409. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-function-syntax-test.js +0 -126
  410. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-interface-syntax-test.js +0 -29
  411. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-object-method-syntax-test.js +0 -65
  412. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-pattern-syntax-test.js +0 -45
  413. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-syntax-test.js +0 -46
  414. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-variable-declaration-syntax-test.js +0 -102
  415. data/public/vendor/npm/jstransform@10.1.0/visitors/es6-arrow-function-visitors.js +0 -66
  416. data/public/vendor/npm/jstransform@10.1.0/visitors/es6-call-spread-visitors.js +0 -72
  417. data/public/vendor/npm/jstransform@10.1.0/visitors/es6-class-visitors.js +0 -316
  418. data/public/vendor/npm/jstransform@10.1.0/visitors/es6-destructuring-visitors.js +0 -135
  419. data/public/vendor/npm/jstransform@10.1.0/visitors/es6-object-concise-method-visitors.js +0 -28
  420. data/public/vendor/npm/jstransform@10.1.0/visitors/es6-object-short-notation-visitors.js +0 -12
  421. data/public/vendor/npm/jstransform@10.1.0/visitors/es6-rest-param-visitors.js +0 -45
  422. data/public/vendor/npm/jstransform@10.1.0/visitors/es6-template-visitors.js +0 -90
  423. data/public/vendor/npm/jstransform@10.1.0/visitors/es7-rest-property-helpers.js +0 -80
  424. data/public/vendor/npm/jstransform@10.1.0/visitors/es7-spread-property-visitors.js +0 -56
  425. data/public/vendor/npm/jstransform@10.1.0/visitors/reserved-words-helper.js +0 -74
  426. data/public/vendor/npm/jstransform@10.1.0/visitors/reserved-words-visitors.js +0 -30
  427. data/public/vendor/npm/jstransform@10.1.0/visitors/type-syntax.js +0 -118
  428. data/public/vendor/npm/jstransform@10.1.0.js +0 -1
  429. data/public/vendor/npm/process@0.10.1/browser.js +0 -58
  430. data/public/vendor/npm/process@0.10.1.js +0 -1
  431. data/public/vendor/npm/qs@2.4.1/test/stringify.js +0 -162
  432. data/public/vendor/npm/react@0.13.3/README.md +0 -20
  433. data/public/vendor/npm/react@0.13.3/addons.js +0 -2
  434. data/public/vendor/npm/react@0.13.3/dist/JSXTransformer.js +0 -11346
  435. data/public/vendor/npm/react@0.13.3/dist/react-with-addons.js +0 -10483
  436. data/public/vendor/npm/react@0.13.3/dist/react-with-addons.min.js +0 -7297
  437. data/public/vendor/npm/react@0.13.3/dist/react.js +0 -9468
  438. data/public/vendor/npm/react@0.13.3/dist/react.min.js +0 -6764
  439. data/public/vendor/npm/react@0.13.3/lib/AutoFocusMixin.js +0 -9
  440. data/public/vendor/npm/react@0.13.3/lib/BeforeInputEventPlugin.js +0 -197
  441. data/public/vendor/npm/react@0.13.3/lib/CSSCore.js +0 -39
  442. data/public/vendor/npm/react@0.13.3/lib/CSSProperty.js +0 -123
  443. data/public/vendor/npm/react@0.13.3/lib/CSSPropertyOperations.js +0 -103
  444. data/public/vendor/npm/react@0.13.3/lib/CallbackQueue.js +0 -43
  445. data/public/vendor/npm/react@0.13.3/lib/ChangeEventPlugin.js +0 -174
  446. data/public/vendor/npm/react@0.13.3/lib/ClientReactRootIndex.js +0 -23
  447. data/public/vendor/npm/react@0.13.3/lib/DOMChildrenOperations.js +0 -57
  448. data/public/vendor/npm/react@0.13.3/lib/DOMProperty.js +0 -96
  449. data/public/vendor/npm/react@0.13.3/lib/DOMPropertyOperations.js +0 -99
  450. data/public/vendor/npm/react@0.13.3/lib/Danger.js +0 -67
  451. data/public/vendor/npm/react@0.13.3/lib/DefaultEventPluginOrder.js +0 -5
  452. data/public/vendor/npm/react@0.13.3/lib/EnterLeaveEventPlugin.js +0 -69
  453. data/public/vendor/npm/react@0.13.3/lib/EventConstants.js +0 -55
  454. data/public/vendor/npm/react@0.13.3/lib/EventListener.js +0 -34
  455. data/public/vendor/npm/react@0.13.3/lib/EventPluginHub.js +0 -103
  456. data/public/vendor/npm/react@0.13.3/lib/EventPluginRegistry.js +0 -115
  457. data/public/vendor/npm/react@0.13.3/lib/EventPluginUtils.js +0 -121
  458. data/public/vendor/npm/react@0.13.3/lib/EventPropagators.js +0 -62
  459. data/public/vendor/npm/react@0.13.3/lib/ExecutionEnvironment.js +0 -42
  460. data/public/vendor/npm/react@0.13.3/lib/FallbackCompositionState.js +0 -45
  461. data/public/vendor/npm/react@0.13.3/lib/HTMLDOMPropertyConfig.js +0 -155
  462. data/public/vendor/npm/react@0.13.3/lib/LinkedStateMixin.js +0 -8
  463. data/public/vendor/npm/react@0.13.3/lib/LinkedValueUtils.js +0 -74
  464. data/public/vendor/npm/react@0.13.3/lib/LocalEventTrapMixin.js +0 -26
  465. data/public/vendor/npm/react@0.13.3/lib/MobileSafariClickEventPlugin.js +0 -17
  466. data/public/vendor/npm/react@0.13.3/lib/Object.assign.js +0 -47
  467. data/public/vendor/npm/react@0.13.3/lib/PooledClass.js +0 -75
  468. data/public/vendor/npm/react@0.13.3/lib/React.js +0 -93
  469. data/public/vendor/npm/react@0.13.3/lib/ReactBrowserComponentMixin.js +0 -7
  470. data/public/vendor/npm/react@0.13.3/lib/ReactBrowserEventEmitter.js +0 -136
  471. data/public/vendor/npm/react@0.13.3/lib/ReactCSSTransitionGroup.js +0 -34
  472. data/public/vendor/npm/react@0.13.3/lib/ReactCSSTransitionGroupChild.js +0 -92
  473. data/public/vendor/npm/react@0.13.3/lib/ReactChildReconciler.js +0 -57
  474. data/public/vendor/npm/react@0.13.3/lib/ReactChildren.js +0 -67
  475. data/public/vendor/npm/react@0.13.3/lib/ReactClass.js +0 -338
  476. data/public/vendor/npm/react@0.13.3/lib/ReactComponent.js +0 -50
  477. data/public/vendor/npm/react@0.13.3/lib/ReactComponentBrowserEnvironment.js +0 -14
  478. data/public/vendor/npm/react@0.13.3/lib/ReactComponentEnvironment.js +0 -19
  479. data/public/vendor/npm/react@0.13.3/lib/ReactComponentWithPureRenderMixin.js +0 -7
  480. data/public/vendor/npm/react@0.13.3/lib/ReactCompositeComponent.js +0 -374
  481. data/public/vendor/npm/react@0.13.3/lib/ReactContext.js +0 -27
  482. data/public/vendor/npm/react@0.13.3/lib/ReactCurrentOwner.js +0 -32
  483. data/public/vendor/npm/react@0.13.3/lib/ReactDOM.js +0 -146
  484. data/public/vendor/npm/react@0.13.3/lib/ReactDOMButton.js +0 -35
  485. data/public/vendor/npm/react@0.13.3/lib/ReactDOMComponent.js +0 -267
  486. data/public/vendor/npm/react@0.13.3/lib/ReactDOMForm.js +0 -21
  487. data/public/vendor/npm/react@0.13.3/lib/ReactDOMIDOperations.js +0 -63
  488. data/public/vendor/npm/react@0.13.3/lib/ReactDOMIframe.js +0 -20
  489. data/public/vendor/npm/react@0.13.3/lib/ReactDOMImg.js +0 -21
  490. data/public/vendor/npm/react@0.13.3/lib/ReactDOMInput.js +0 -94
  491. data/public/vendor/npm/react@0.13.3/lib/ReactDOMOption.js +0 -23
  492. data/public/vendor/npm/react@0.13.3/lib/ReactDOMSelect.js +0 -112
  493. data/public/vendor/npm/react@0.13.3/lib/ReactDOMSelection.js +0 -103
  494. data/public/vendor/npm/react@0.13.3/lib/ReactDOMTextComponent.js +0 -38
  495. data/public/vendor/npm/react@0.13.3/lib/ReactDOMTextarea.js +0 -70
  496. data/public/vendor/npm/react@0.13.3/lib/ReactDefaultBatchingStrategy.js +0 -37
  497. data/public/vendor/npm/react@0.13.3/lib/ReactDefaultInjection.js +0 -93
  498. data/public/vendor/npm/react@0.13.3/lib/ReactDefaultPerf.js +0 -183
  499. data/public/vendor/npm/react@0.13.3/lib/ReactDefaultPerfAnalysis.js +0 -145
  500. data/public/vendor/npm/react@0.13.3/lib/ReactElement.js +0 -151
  501. data/public/vendor/npm/react@0.13.3/lib/ReactElementValidator.js +0 -218
  502. data/public/vendor/npm/react@0.13.3/lib/ReactEmptyComponent.js +0 -47
  503. data/public/vendor/npm/react@0.13.3/lib/ReactErrorUtils.js +0 -30
  504. data/public/vendor/npm/react@0.13.3/lib/ReactEventEmitterMixin.js +0 -12
  505. data/public/vendor/npm/react@0.13.3/lib/ReactEventListener.js +0 -93
  506. data/public/vendor/npm/react@0.13.3/lib/ReactFragment.js +0 -110
  507. data/public/vendor/npm/react@0.13.3/lib/ReactInjection.js +0 -27
  508. data/public/vendor/npm/react@0.13.3/lib/ReactInputSelection.js +0 -75
  509. data/public/vendor/npm/react@0.13.3/lib/ReactInstanceHandles.js +0 -113
  510. data/public/vendor/npm/react@0.13.3/lib/ReactInstanceMap.js +0 -47
  511. data/public/vendor/npm/react@0.13.3/lib/ReactLifeCycle.js +0 -9
  512. data/public/vendor/npm/react@0.13.3/lib/ReactLink.js +0 -16
  513. data/public/vendor/npm/react@0.13.3/lib/ReactMarkupChecksum.js +0 -17
  514. data/public/vendor/npm/react@0.13.3/lib/ReactMount.js +0 -347
  515. data/public/vendor/npm/react@0.13.3/lib/ReactMultiChild.js +0 -190
  516. data/public/vendor/npm/react@0.13.3/lib/ReactMultiChildUpdateTypes.js +0 -10
  517. data/public/vendor/npm/react@0.13.3/lib/ReactNativeComponent.js +0 -53
  518. data/public/vendor/npm/react@0.13.3/lib/ReactOwner.js +0 -21
  519. data/public/vendor/npm/react@0.13.3/lib/ReactPerf.js +0 -42
  520. data/public/vendor/npm/react@0.13.3/lib/ReactPropTransferer.js +0 -40
  521. data/public/vendor/npm/react@0.13.3/lib/ReactPropTypeLocationNames.js +0 -13
  522. data/public/vendor/npm/react@0.13.3/lib/ReactPropTypeLocations.js +0 -9
  523. data/public/vendor/npm/react@0.13.3/lib/ReactPropTypes.js +0 -225
  524. data/public/vendor/npm/react@0.13.3/lib/ReactPutListenerQueue.js +0 -31
  525. data/public/vendor/npm/react@0.13.3/lib/ReactReconcileTransaction.js +0 -66
  526. data/public/vendor/npm/react@0.13.3/lib/ReactReconciler.js +0 -44
  527. data/public/vendor/npm/react@0.13.3/lib/ReactRef.js +0 -36
  528. data/public/vendor/npm/react@0.13.3/lib/ReactRootIndex.js +0 -29
  529. data/public/vendor/npm/react@0.13.3/lib/ReactServerRendering.js +0 -44
  530. data/public/vendor/npm/react@0.13.3/lib/ReactServerRenderingTransaction.js +0 -47
  531. data/public/vendor/npm/react@0.13.3/lib/ReactStateSetters.js +0 -104
  532. data/public/vendor/npm/react@0.13.3/lib/ReactTestUtils.js +0 -249
  533. data/public/vendor/npm/react@0.13.3/lib/ReactTransitionChildMapping.js +0 -53
  534. data/public/vendor/npm/react@0.13.3/lib/ReactTransitionEvents.js +0 -68
  535. data/public/vendor/npm/react@0.13.3/lib/ReactTransitionGroup.js +0 -140
  536. data/public/vendor/npm/react@0.13.3/lib/ReactUpdateQueue.js +0 -107
  537. data/public/vendor/npm/react@0.13.3/lib/ReactUpdates.js +0 -139
  538. data/public/vendor/npm/react@0.13.3/lib/ReactWithAddons.js +0 -30
  539. data/public/vendor/npm/react@0.13.3/lib/SVGDOMPropertyConfig.js +0 -76
  540. data/public/vendor/npm/react@0.13.3/lib/SelectEventPlugin.js +0 -91
  541. data/public/vendor/npm/react@0.13.3/lib/ServerReactRootIndex.js +0 -29
  542. data/public/vendor/npm/react@0.13.3/lib/SimpleEventPlugin.js +0 -287
  543. data/public/vendor/npm/react@0.13.3/lib/SyntheticClipboardEvent.js +0 -11
  544. data/public/vendor/npm/react@0.13.3/lib/SyntheticCompositionEvent.js +0 -9
  545. data/public/vendor/npm/react@0.13.3/lib/SyntheticDragEvent.js +0 -9
  546. data/public/vendor/npm/react@0.13.3/lib/SyntheticEvent.js +0 -90
  547. data/public/vendor/npm/react@0.13.3/lib/SyntheticFocusEvent.js +0 -9
  548. data/public/vendor/npm/react@0.13.3/lib/SyntheticInputEvent.js +0 -9
  549. data/public/vendor/npm/react@0.13.3/lib/SyntheticKeyboardEvent.js +0 -43
  550. data/public/vendor/npm/react@0.13.3/lib/SyntheticMouseEvent.js +0 -38
  551. data/public/vendor/npm/react@0.13.3/lib/SyntheticTouchEvent.js +0 -19
  552. data/public/vendor/npm/react@0.13.3/lib/SyntheticUIEvent.js +0 -29
  553. data/public/vendor/npm/react@0.13.3/lib/SyntheticWheelEvent.js +0 -18
  554. data/public/vendor/npm/react@0.13.3/lib/Transaction.js +0 -90
  555. data/public/vendor/npm/react@0.13.3/lib/ViewportMetrics.js +0 -27
  556. data/public/vendor/npm/react@0.13.3/lib/accumulateInto.js +0 -26
  557. data/public/vendor/npm/react@0.13.3/lib/adler32.js +0 -32
  558. data/public/vendor/npm/react@0.13.3/lib/camelize.js +0 -30
  559. data/public/vendor/npm/react@0.13.3/lib/camelizeStyleName.js +0 -8
  560. data/public/vendor/npm/react@0.13.3/lib/cloneWithProps.js +0 -20
  561. data/public/vendor/npm/react@0.13.3/lib/containsNode.js +0 -20
  562. data/public/vendor/npm/react@0.13.3/lib/createArrayFromMixed.js +0 -15
  563. data/public/vendor/npm/react@0.13.3/lib/createFullPageComponent.js +0 -22
  564. data/public/vendor/npm/react@0.13.3/lib/createNodesFromMarkup.js +0 -39
  565. data/public/vendor/npm/react@0.13.3/lib/cx.js +0 -20
  566. data/public/vendor/npm/react@0.13.3/lib/dangerousStyleValue.js +0 -19
  567. data/public/vendor/npm/react@0.13.3/lib/emptyFunction.js +0 -32
  568. data/public/vendor/npm/react@0.13.3/lib/emptyObject.js +0 -9
  569. data/public/vendor/npm/react@0.13.3/lib/escapeTextContentForBrowser.js +0 -38
  570. data/public/vendor/npm/react@0.13.3/lib/findDOMNode.js +0 -31
  571. data/public/vendor/npm/react@0.13.3/lib/flattenChildren.js +0 -25
  572. data/public/vendor/npm/react@0.13.3/lib/focusNode.js +0 -27
  573. data/public/vendor/npm/react@0.13.3/lib/forEachAccumulated.js +0 -29
  574. data/public/vendor/npm/react@0.13.3/lib/getActiveElement.js +0 -27
  575. data/public/vendor/npm/react@0.13.3/lib/getEventCharCode.js +0 -50
  576. data/public/vendor/npm/react@0.13.3/lib/getEventKey.js +0 -72
  577. data/public/vendor/npm/react@0.13.3/lib/getEventModifierState.js +0 -45
  578. data/public/vendor/npm/react@0.13.3/lib/getEventTarget.js +0 -29
  579. data/public/vendor/npm/react@0.13.3/lib/getIteratorFn.js +0 -42
  580. data/public/vendor/npm/react@0.13.3/lib/getMarkupWrap.js +0 -73
  581. data/public/vendor/npm/react@0.13.3/lib/getNodeForCharacterOffset.js +0 -73
  582. data/public/vendor/npm/react@0.13.3/lib/getReactRootElementInContainer.js +0 -33
  583. data/public/vendor/npm/react@0.13.3/lib/getTextContentAccessor.js +0 -11
  584. data/public/vendor/npm/react@0.13.3/lib/getUnboundedScrollPosition.js +0 -38
  585. data/public/vendor/npm/react@0.13.3/lib/hyphenate.js +0 -31
  586. data/public/vendor/npm/react@0.13.3/lib/hyphenateStyleName.js +0 -8
  587. data/public/vendor/npm/react@0.13.3/lib/instantiateReactComponent.js +0 -55
  588. data/public/vendor/npm/react@0.13.3/lib/invariant.js +0 -26
  589. data/public/vendor/npm/react@0.13.3/lib/isEventSupported.js +0 -24
  590. data/public/vendor/npm/react@0.13.3/lib/isNode.js +0 -25
  591. data/public/vendor/npm/react@0.13.3/lib/isTextInputElement.js +0 -41
  592. data/public/vendor/npm/react@0.13.3/lib/isTextNode.js +0 -6
  593. data/public/vendor/npm/react@0.13.3/lib/joinClasses.js +0 -39
  594. data/public/vendor/npm/react@0.13.3/lib/keyMirror.js +0 -18
  595. data/public/vendor/npm/react@0.13.3/lib/keyOf.js +0 -34
  596. data/public/vendor/npm/react@0.13.3/lib/mapObject.js +0 -51
  597. data/public/vendor/npm/react@0.13.3/lib/memoizeStringOnly.js +0 -31
  598. data/public/vendor/npm/react@0.13.3/lib/onlyChild.js +0 -11
  599. data/public/vendor/npm/react@0.13.3/lib/performance.js +0 -8
  600. data/public/vendor/npm/react@0.13.3/lib/performanceNow.js +0 -7
  601. data/public/vendor/npm/react@0.13.3/lib/quoteAttributeValueForBrowser.js +0 -7
  602. data/public/vendor/npm/react@0.13.3/lib/setInnerHTML.js +0 -40
  603. data/public/vendor/npm/react@0.13.3/lib/setTextContent.js +0 -16
  604. data/public/vendor/npm/react@0.13.3/lib/shallowEqual.js +0 -42
  605. data/public/vendor/npm/react@0.13.3/lib/shouldUpdateReactComponent.js +0 -51
  606. data/public/vendor/npm/react@0.13.3/lib/toArray.js +0 -21
  607. data/public/vendor/npm/react@0.13.3/lib/traverseAllChildren.js +0 -104
  608. data/public/vendor/npm/react@0.13.3/lib/update.js +0 -78
  609. data/public/vendor/npm/react@0.13.3/lib/warning.js +0 -34
  610. data/public/vendor/npm/react@0.13.3/package.json +0 -34
  611. data/public/vendor/npm/react@0.13.3/react.js +0 -2
  612. data/public/vendor/npm/react@0.13.3.js +0 -1
  613. data/public/vendor/npm/readable-stream@1.1.13/duplex.js +0 -2
  614. data/public/vendor/npm/readable-stream@1.1.13/passthrough.js +0 -2
  615. data/public/vendor/npm/readable-stream@1.1.13/readable.js +0 -8
  616. data/public/vendor/npm/readable-stream@1.1.13/transform.js +0 -2
  617. data/public/vendor/npm/readable-stream@1.1.13/writable.js +0 -2
  618. data/public/vendor/npm/readable-stream@1.1.13.js +0 -1
  619. data/public/vendor/npm/source-map@0.1.31/CHANGELOG.md +0 -112
  620. data/public/vendor/npm/source-map@0.1.31/LICENSE +0 -28
  621. data/public/vendor/npm/source-map@0.1.31/Makefile.dryice.js +0 -89
  622. data/public/vendor/npm/source-map@0.1.31/README.md +0 -434
  623. data/public/vendor/npm/source-map@0.1.31/build/assert-shim.js +0 -58
  624. data/public/vendor/npm/source-map@0.1.31/build/mini-require.js +0 -154
  625. data/public/vendor/npm/source-map@0.1.31/build/prefix-source-map.jsm +0 -20
  626. data/public/vendor/npm/source-map@0.1.31/build/prefix-utils.jsm +0 -18
  627. data/public/vendor/npm/source-map@0.1.31/build/suffix-browser.js +0 -8
  628. data/public/vendor/npm/source-map@0.1.31/build/suffix-source-map.jsm +0 -6
  629. data/public/vendor/npm/source-map@0.1.31/build/suffix-utils.jsm +0 -21
  630. data/public/vendor/npm/source-map@0.1.31/build/test-prefix.js +0 -10
  631. data/public/vendor/npm/source-map@0.1.31/build/test-suffix.js +0 -5
  632. data/public/vendor/npm/source-map@0.1.31/lib/source-map/array-set.js +0 -49
  633. data/public/vendor/npm/source-map@0.1.31/lib/source-map/base64-vlq.js +0 -56
  634. data/public/vendor/npm/source-map@0.1.31/lib/source-map/base64.js +0 -44
  635. data/public/vendor/npm/source-map@0.1.31/lib/source-map/binary-search.js +0 -83
  636. data/public/vendor/npm/source-map@0.1.31/lib/source-map/source-map-consumer.js +0 -238
  637. data/public/vendor/npm/source-map@0.1.31/lib/source-map/source-map-generator.js +0 -231
  638. data/public/vendor/npm/source-map@0.1.31/lib/source-map/source-node.js +0 -234
  639. data/public/vendor/npm/source-map@0.1.31/lib/source-map/util.js +0 -207
  640. data/public/vendor/npm/source-map@0.1.31/lib/source-map.js +0 -4
  641. data/public/vendor/npm/source-map@0.1.31/package.json +0 -52
  642. data/public/vendor/npm/source-map@0.1.31/test/run-tests.js +0 -50
  643. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-api.js +0 -19
  644. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-array-set.js +0 -84
  645. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-base64-vlq.js +0 -17
  646. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-base64.js +0 -26
  647. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-binary-search.js +0 -37
  648. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-dog-fooding.js +0 -76
  649. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-source-map-consumer.js +0 -426
  650. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-source-map-generator.js +0 -480
  651. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-source-node.js +0 -307
  652. data/public/vendor/npm/source-map@0.1.31/test/source-map/util.js +0 -84
  653. data/public/vendor/npm/source-map@0.1.31.js +0 -1
  654. data/public/vendor/npm/through@2.3.8/LICENSE.APACHE2 +0 -15
  655. data/public/vendor/npm/through@2.3.8/LICENSE.MIT +0 -24
  656. data/public/vendor/npm/through@2.3.8/index.js +0 -93
  657. data/public/vendor/npm/through@2.3.8/package.json +0 -36
  658. data/public/vendor/npm/through@2.3.8/readme.markdown +0 -64
  659. data/public/vendor/npm/through@2.3.8/test/async.js +0 -26
  660. data/public/vendor/npm/through@2.3.8/test/auto-destroy.js +0 -26
  661. data/public/vendor/npm/through@2.3.8/test/buffering.js +0 -57
  662. data/public/vendor/npm/through@2.3.8/test/end.js +0 -37
  663. data/public/vendor/npm/through@2.3.8/test/index.js +0 -98
  664. data/public/vendor/npm/through@2.3.8/test.js +0 -2
  665. data/public/vendor/npm/through@2.3.8.js +0 -1
  666. data/views/_options.erb +0 -156
  667. /data/public/vendor/github/jspm/{nodelibs-buffer@0.1.0 → nodelibs-buffer@0.1.1}/index.js +0 -0
  668. /data/public/vendor/github/jspm/{nodelibs-process@0.1.1 → nodelibs-process@0.1.2}/index.js +0 -0
  669. /data/public/vendor/npm/{readable-stream@1.1.13 → assert@1.5.0}/LICENSE +0 -0
  670. /data/public/vendor/npm/{buffer@3.4.3 → buffer@5.7.1}/LICENSE +0 -0
  671. /data/public/vendor/npm/{core-util-is@1.0.1 → core-util-is@1.0.3}/README.md +0 -0
  672. /data/public/vendor/npm/{process@0.10.1 → process@0.11.10}/LICENSE +0 -0
  673. /data/public/vendor/npm/{process@0.10.1 → process@0.11.10}/index.js +0 -0
  674. /data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/README.md +0 -0
  675. /data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/float.patch +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 25c2424857780517682276d21694f8ab0c3594772b82f08dcdca1934dcf23fd9
4
- data.tar.gz: 3e27329d829825b7a3a73f14ebdecad514648381dbba914cfca6ee63564c795a
3
+ metadata.gz: 61b15f95cdc065739de70f2ba94d3022e6beec789dd9c64199ee1be3a2459c63
4
+ data.tar.gz: d6c108bd39cb8c6a832787d2cbaa52b2c5a3653c0b08b289cb149b7221a9870c
5
5
  SHA512:
6
- metadata.gz: 5137bf6118ee0044a0b8d5b1979f525686d7dd1698d6c795682d39a6c9d8247410104441fb642a585e6df9a18ad827336c8f61215f9e3c8c68fb387e0b6e2f41
7
- data.tar.gz: e7ec5cebd2595b3a5f90cb750ce583161821e1be22dfcf14b1ba1fbe11dda440105795ac04b06caeb456c0f78e55db50d730704db8972667ca8d7acae5170692
6
+ metadata.gz: d4c2b1785980dd4e46a24a8a5a6d36652fb23f5389f9b7320cd9360f081cbad82b6dc6bfe735b5321738611094052631af0de635b77676587d703d466bd5f604
7
+ data.tar.gz: 235e35e8ba4331894a7ac9f107d950462d3b3d892ddafc6f58d3ba48fbe6a03cfc016ac64798921472e296a0cb5577245aca49cbb517d897094a501ec4483beb
data/bin/sequenceserver CHANGED
@@ -119,6 +119,11 @@ begin
119
119
  'Port to run SequenceServer on',
120
120
  argument: true
121
121
 
122
+ on 'o', 'optimistic=',
123
+ 'Optimistic mode does not perform database compatibility checks, which can be faster. ' \
124
+ 'Only use this if you format FASTAs with "sequenceserver -make-blast-databases"',
125
+ argument: true
126
+
122
127
  on 's', 'set',
123
128
  'Set configuration value in default or given config file'
124
129
 
@@ -296,7 +301,7 @@ begin
296
301
  unless response =~ /^[n]$/i
297
302
  puts
298
303
  puts 'Searching ...'
299
- if SequenceServer.makeblastdb.any_unformatted?
304
+ if SequenceServer.makeblastdb.any_to_format?
300
305
  formatted = SequenceServer.makeblastdb.format
301
306
  exit! if formatted.empty? && !set?
302
307
  redo unless set?
@@ -353,7 +358,7 @@ begin
353
358
  end
354
359
 
355
360
  if make_blast_databases?
356
- if SequenceServer.makeblastdb.scan
361
+ if SequenceServer.makeblastdb.any_to_format_or_reformat?
357
362
  puts
358
363
  puts <<~MSG
359
364
  SequenceServer has scanned your databases directory and will now offer
@@ -1,8 +1,30 @@
1
1
  module SequenceServer
2
+ Error = Class.new(StandardError)
3
+
4
+ # DatabaseUnreachableError is raised when the serialised Job object is
5
+ # refering to a database that is not present in the current filesystem.
6
+ class DatabaseUnreachableError < Error
7
+ attr_reader :more_info
8
+
9
+ def initialize(more_info)
10
+ super
11
+ @more_info = more_info
12
+ end
13
+
14
+ def title
15
+ 'Sequence database unreachable'
16
+ end
17
+
18
+ def message
19
+ "The action you're trying to perform is not possible because \
20
+ the database is unreachable. This can happen if the database has \
21
+ been deleted or you are performing an action on an imported job."
22
+ end
23
+ end
24
+
2
25
  # API errors have an http status, title, message, and additional information
3
26
  # like stacktrace or information from program output.
4
- class APIError < StandardError
5
- end
27
+ APIError = Class.new(Error)
6
28
 
7
29
  # Job not found (404).
8
30
  class NotFound < APIError
@@ -25,23 +25,32 @@ module SequenceServer
25
25
 
26
26
  attr_reader :format, :mime, :specifiers
27
27
 
28
- def file
29
- @file ||= File.join(job.dir, filename)
28
+ def filepath
29
+ @filepath ||= File.join(job.dir, filename)
30
+ end
31
+
32
+ def size
33
+ File.size(filepath)
30
34
  end
31
35
 
32
36
  def filename
33
37
  @filename ||= "sequenceserver-#{type}_report.#{mime}"
34
38
  end
35
39
 
40
+ def read_file
41
+ File.read(filepath)
42
+ end
43
+
36
44
  private
37
45
 
38
46
  attr_reader :job, :type
39
47
 
40
48
  def run
41
- return if File.exist?(file)
49
+ return if File.exist?(filepath)
50
+
42
51
  command = "blast_formatter -archive '#{job.stdout}'" \
43
52
  " -outfmt '#{format} #{specifiers}'"
44
- sys(command, path: config[:bin], dir: DOTDIR, stdout: file)
53
+ sys(command, path: config[:bin], dir: DOTDIR, stdout: filepath)
45
54
  rescue CommandFailed => e
46
55
  # Mostly we will never get here: empty archive file,
47
56
  # file permissions, broken BLAST binaries, etc. will
@@ -1,4 +1,5 @@
1
1
  require 'sequenceserver/job'
2
+ require 'sequenceserver/zip_file_generator'
2
3
 
3
4
  module SequenceServer
4
5
  # BLAST module.
@@ -24,13 +25,18 @@ module SequenceServer
24
25
  @databases = Database[params[:databases]]
25
26
  @advanced = params[:advanced].to_s.strip
26
27
  @options = @advanced + defaults
28
+ # The following params are for analytics only
29
+ @num_threads = config[:num_threads]
30
+ @query_length = calculate_query_size
31
+ @databases_ncharacters_total = calculate_databases_ncharacters_total
27
32
  end
28
33
  end
29
34
  end
30
35
 
31
36
  # :nodoc:
32
37
  # Attributes used by us - should be considered private.
33
- attr_reader :method, :qfile, :databases, :advanced, :options
38
+ attr_reader :advanced
39
+ attr_reader :databases, :databases_ncharacters_total, :method, :num_threads, :options, :qfile, :query_length
34
40
 
35
41
  # :nodoc:
36
42
  # Deprecated; see Report#extract_params
@@ -53,7 +59,6 @@ module SequenceServer
53
59
  # Override Job#raise! to raise specific API errors based on exitstatus
54
60
  # and using contents of stderr to provide context about the error.
55
61
  #
56
- # rubocop:disable Metrics/CyclomaticComplexity
57
62
  def raise!
58
63
  # Return true exit status is 0 and stdout is not empty.
59
64
  return true if exitstatus.zero? && !File.zero?(stdout)
@@ -92,10 +97,38 @@ module SequenceServer
92
97
  MSG
93
98
  end
94
99
  end
95
- # rubocop:enable Metrics/CyclomaticComplexity
100
+
101
+ # Use it with a block to get a self-cleaning temporary archive file
102
+ # of the contents of the job directory.
103
+ # job.as_archived_file do |tmp_file|
104
+ # # do things with tmp_file
105
+ # end
106
+ def as_archived_file(&block)
107
+ Dir.mktmpdir(id.to_s) do |tmp_dir|
108
+ file_path = "#{tmp_dir}/#{id}.zip"
109
+ ZipFileGenerator.new(dir, file_path).write
110
+ File.open(file_path, 'r') do |file|
111
+ block.call(file)
112
+ end
113
+ end
114
+ end
96
115
 
97
116
  private
98
117
 
118
+ def calculate_databases_ncharacters_total
119
+ databases.map(&:ncharacters).map(&:to_i).reduce(:+)
120
+ end
121
+
122
+ def calculate_query_size
123
+ size = 0
124
+ IO.foreach(@qfile) do |line|
125
+ next if line[0] == '>'
126
+
127
+ size += line.gsub(/\s+/, '').length
128
+ end
129
+ size
130
+ end
131
+
99
132
  def validate(params)
100
133
  validate_method params[:method]
101
134
  validate_sequences params[:sequence]
@@ -109,12 +142,14 @@ module SequenceServer
109
142
 
110
143
  def validate_method(method)
111
144
  return true if ALGORITHMS.include? method
145
+
112
146
  fail InputError, 'BLAST algorithm should be one of:' \
113
147
  " #{ALGORITHMS.join(', ')}."
114
148
  end
115
149
 
116
150
  def validate_sequences(sequences)
117
151
  return true if sequences.is_a?(String) && !sequences.empty?
152
+
118
153
  fail InputError, 'Sequences should be a non-empty string.'
119
154
  end
120
155
 
@@ -122,6 +157,7 @@ module SequenceServer
122
157
  ids = Database.ids
123
158
  return true if database_ids.is_a?(Array) && !database_ids.empty? &&
124
159
  (ids & database_ids).length == database_ids.length
160
+
125
161
  fail InputError, "Database id should be one of: #{ids.join("\n")}."
126
162
  end
127
163
 
@@ -133,9 +169,7 @@ module SequenceServer
133
169
  return true if !options || (options.is_a?(String) &&
134
170
  options.strip.empty?)
135
171
 
136
- unless allowed_chars.match(options)
137
- fail InputError, 'Invalid characters detected in options.'
138
- end
172
+ fail InputError, 'Invalid characters detected in options.' unless allowed_chars.match(options)
139
173
 
140
174
  if disallowed_options.match(options)
141
175
  failedopt = Regexp.last_match[0]
@@ -146,7 +180,7 @@ module SequenceServer
146
180
  end
147
181
 
148
182
  def allowed_chars
149
- /\A[a-z0-9\-_\. ',]*\Z/i
183
+ /\A[a-z0-9\-_. ',]*\Z/i
150
184
  end
151
185
 
152
186
  def disallowed_options
@@ -35,41 +35,72 @@ module SequenceServer
35
35
  # Attributes parsed from job metadata and BLAST output.
36
36
  attr_reader :querydb, :dbtype, :params
37
37
 
38
- def to_json
39
- [:querydb, :program, :program_version, :params, :stats,
40
- :queries].inject({}) { |h, k|
38
+ def to_json(*_args)
39
+ generate
40
+
41
+ %i[querydb program program_version params stats
42
+ queries].inject({}) do |h, k|
41
43
  h[k] = send(k)
42
44
  h
43
- }.update(search_id: job.id,
44
- submitted_at: job.submitted_at.utc,
45
- imported_xml: !!job.imported_xml_file,
46
- seqserv_version: SequenceServer::VERSION,
47
- non_parse_seqids: !!job.databases&.any?(&:non_parse_seqids?)).to_json
45
+ end.update(search_id: job.id,
46
+ submitted_at: job.submitted_at.utc,
47
+ imported_xml: !job.imported_xml_file.nil?,
48
+ seqserv_version: SequenceServer::VERSION,
49
+ cloud_sharing_enabled: SequenceServer.config[:cloud_share_url].start_with?('http'),
50
+ non_parse_seqids: !!job.databases&.any?(&:non_parse_seqids?)).to_json
48
51
  end
49
52
 
50
- private
53
+ def xml_file_size
54
+ return File.size(job.imported_xml_file) if job.imported_xml_file
55
+
56
+ generate
57
+
58
+ xml_formatter.size
59
+ end
51
60
 
52
61
  # Generate report.
53
62
  def generate
63
+ return self if @_generated
64
+
54
65
  job.raise!
55
66
  xml_ir = nil
56
67
  tsv_ir = nil
57
68
  if job.imported_xml_file
58
69
  xml_ir = parse_xml File.read(job.imported_xml_file)
59
- tsv_ir = Hash.new do |h1,k1|
60
- h1[k1] = Hash.new do |h2,k2|
61
- h2[k2]=['','',[]]
70
+ tsv_ir = Hash.new do |h1, k1|
71
+ h1[k1] = Hash.new do |h2, k2|
72
+ h2[k2] = ['', '', []]
62
73
  end
63
74
  end
64
75
  else
65
- xml_ir = parse_xml File.read(Formatter.run(job, 'xml').file)
66
- tsv_ir = parse_tsv File.read(Formatter.run(job, 'custom_tsv').file)
76
+ xml_ir = parse_xml(xml_formatter.read_file)
77
+ tsv_ir = parse_tsv(tsv_formatter.read_file)
67
78
  end
68
79
  extract_program_info xml_ir
69
80
  extract_db_info xml_ir
70
81
  extract_params xml_ir
71
82
  extract_stats xml_ir
72
83
  extract_queries xml_ir, tsv_ir
84
+
85
+ @_generated = true
86
+
87
+ self
88
+ end
89
+
90
+ def done?
91
+ return true if job.imported_xml_file
92
+
93
+ File.exist?(xml_formatter.filepath) && File.exist?(tsv_formatter.filepath)
94
+ end
95
+
96
+ private
97
+
98
+ def xml_formatter
99
+ @xml_formatter ||= Formatter.run(job, 'xml')
100
+ end
101
+
102
+ def tsv_formatter
103
+ @tsv_formatter ||= Formatter.run(job, 'custom_tsv')
73
104
  end
74
105
 
75
106
  # Make program name and program name + version available via `program`
@@ -122,13 +153,13 @@ module SequenceServer
122
153
  def extract_stats(ir)
123
154
  stats = ir[8].first[5][0]
124
155
  @stats = {
125
- nsequences: stats[0],
126
- ncharacters: stats[1],
127
- hsp_length: stats[2],
156
+ nsequences: stats[0],
157
+ ncharacters: stats[1],
158
+ hsp_length: stats[2],
128
159
  search_space: stats[3],
129
- kappa: stats[4],
130
- labmda: stats[5],
131
- entropy: stats[6]
160
+ kappa: stats[4],
161
+ labmda: stats[5],
162
+ entropy: stats[6]
132
163
  }
133
164
  end
134
165
 
@@ -144,6 +175,7 @@ module SequenceServer
144
175
  # Create Hit objects for the given query from the given ir.
145
176
  def extract_hits(xml_ir, tsv_ir, query)
146
177
  return if xml_ir == ["\n"] # => No hits.
178
+
147
179
  xml_ir.each do |n|
148
180
  # If hit comes from a non -parse_seqids database, then id (n[1]) is a
149
181
  # BLAST assigned internal id of the format 'gnl|BL_ORD_ID|serial'. We
@@ -169,7 +201,7 @@ module SequenceServer
169
201
  def extract_hsps(xml_ir, tsv_ir, hit)
170
202
  xml_ir.each_with_index do |n, i|
171
203
  n.insert(14, tsv_ir[i])
172
- hsp = HSP.new(*[hit, *n])
204
+ hsp = HSP.new(hit, *n)
173
205
  hit.hsps << hsp
174
206
  end
175
207
  end
@@ -177,8 +209,9 @@ module SequenceServer
177
209
  def parse_xml(xml)
178
210
  node_to_array Ox.parse(xml).root
179
211
  rescue Ox::ParseError
180
- fail 'Error parsing XML file' if job.imported_xml_file
181
- fail InputError, <<~MSG
212
+ raise 'Error parsing XML file' if job.imported_xml_file
213
+
214
+ raise InputError, <<~MSG
182
215
  BLAST generated incorrect XML output. This can happen if sequence ids in your
183
216
  databases are not unique across all files. As a temporary workaround, you can
184
217
  repeat the search with one database at a time. Proper fix is to recreate the
@@ -231,9 +264,12 @@ module SequenceServer
231
264
  # ...
232
265
  # }
233
266
  def parse_tsv(tsv)
234
- ir = Hash.new {|h, k| h[k] = {} }
267
+ ir = Hash.new { |h, k| h[k] = {} }
235
268
  tsv.each_line do |line|
236
- next if line.start_with? '#'; row = line.chomp.split("\t")
269
+ next if line.start_with? '#'
270
+
271
+ row = line.chomp.split("\t")
272
+
237
273
  (ir[row[0]][row[1]] ||= [row[2], row[3], []])[2] << row[4]
238
274
  end
239
275
  ir
@@ -246,14 +282,14 @@ module SequenceServer
246
282
 
247
283
  param_list.each_with_index do |word, i|
248
284
  nxt = param_list[i + 1]
249
- if word.start_with? '-'
250
- word.sub!('-', '')
251
- unless nxt.nil? || nxt.start_with?('-')
252
- res[word] = nxt
253
- else
254
- res[word] = 'True'
255
- end
256
- end
285
+ next unless word.start_with? '-'
286
+
287
+ word.sub!('-', '')
288
+ res[word] = unless nxt.nil? || nxt.start_with?('-')
289
+ nxt
290
+ else
291
+ 'True'
292
+ end
257
293
  end
258
294
  res
259
295
  end
@@ -11,12 +11,19 @@ module SequenceServer
11
11
 
12
12
  def initialize(data = {})
13
13
  @data = normalize data
14
+
14
15
  @config_file = @data.delete(:config_file)
15
16
  if @config_file
16
17
  @config_file = File.expand_path(@config_file)
17
- @data = parse_config_file.update @data
18
+ @data = parse_config_file.deep_merge @data
18
19
  end
19
- @data = defaults.update @data
20
+
21
+ @data = defaults.deep_merge @data
22
+
23
+ return unless @upgraded
24
+
25
+ logger.info 'You are using old configuration syntax. ' \
26
+ 'Run `sequenceserver -s` to update your config file syntax.'
20
27
  end
21
28
 
22
29
  attr_reader :data, :config_file
@@ -39,6 +46,7 @@ module SequenceServer
39
46
  # Write config data to config file.
40
47
  def write_config_file
41
48
  return unless config_file
49
+
42
50
  File.open(config_file, 'w') do |f|
43
51
  f.puts(data.delete_if { |_, v| v.nil? }.to_yaml)
44
52
  end
@@ -46,32 +54,34 @@ module SequenceServer
46
54
 
47
55
  private
48
56
 
49
- # Symbolizes keys. Changes `database` key to `database_dir`.
57
+ # Symbolizes keys. Rename/reformat key-values.
50
58
  def normalize(data)
51
59
  return {} unless data
52
60
 
53
61
  # Symbolize keys.
54
- data = Hash[data.map { |k, v| [k.to_sym, v] }]
62
+ data = data.transform_keys(&:to_sym)
55
63
 
56
- # The newer config file version replaces the older database key with
57
- # database_dir for correctness. Let's honour the old version as well.
64
+ # Very old config files may have a key called `database`.
65
+ # Rename it to `database_dir`
58
66
  if data[:database]
59
67
  database_dir = data.delete(:database)
60
68
  data[:database_dir] ||= database_dir
69
+ @upgrade = true
61
70
  end
62
71
 
63
- # We would like a persistent :options: key in the config file, explicitly
64
- # stating the parameters to use. Recommended values are written to config
65
- # file on the first run. However, existing users won't have :options: key
66
- # available from before. For them, we retain the old behaviour of
67
- # automatically adding `-task blastn` for BLASTN searches.
68
- if blast_opts = data.dig(:options, :blastn)
69
- unless blast_opts.join.match('-task')
70
- # Issue a warning.
71
- logger.info "BLASTN will be run using '-task blastn' option." +
72
- " You can override this through configuration file."
73
- data[:options][:blastn].push '-task blastn'
74
- end
72
+ # Old config files may have an options hash with array values. We turn the
73
+ # array values into a hash. The logic is simple: If the array value is the
74
+ # same as default, we give it the key 'default', otherwise we give it the
75
+ # key 'custom'
76
+ data[:options]&.each do |key, val|
77
+ next if val.is_a? Hash
78
+
79
+ data[:options][key] = if val == defaults[:options][key][:default]
80
+ { default: val }
81
+ else
82
+ { custom: val }
83
+ end
84
+ @upgraded = true
75
85
  end
76
86
 
77
87
  data
@@ -86,8 +96,8 @@ module SequenceServer
86
96
  end
87
97
  logger.info "Reading configuration file: #{config_file}."
88
98
  normalize YAML.load_file(config_file)
89
- rescue => error
90
- raise CONFIG_FILE_ERROR.new(config_file, error)
99
+ rescue StandardError => e
100
+ raise CONFIG_FILE_ERROR.new(config_file, e)
91
101
  end
92
102
 
93
103
  def file?(file)
@@ -96,20 +106,35 @@ module SequenceServer
96
106
 
97
107
  # Default configuration data.
98
108
  def defaults
99
- {
109
+ @defaults ||= {
100
110
  host: '0.0.0.0',
101
111
  port: 4567,
102
112
  databases_widget: 'classic',
103
113
  options: {
104
- blastn: ['-task blastn', '-evalue 1e-5'],
105
- blastp: ['-evalue 1e-5'],
106
- blastx: ['-evalue 1e-5'],
107
- tblastx: ['-evalue 1e-5'],
108
- tblastn: ['-evalue 1e-5']
114
+ blastn: {
115
+ default: ['-task blastn', '-evalue 1e-5']
116
+ },
117
+ blastp: {
118
+ default: ['-evalue 1e-5']
119
+ },
120
+ blastx: {
121
+ default: ['-evalue 1e-5']
122
+ },
123
+ tblastx: {
124
+ default: ['-evalue 1e-5']
125
+ },
126
+ tblastn: {
127
+ default: ['-evalue 1e-5']
128
+ }
109
129
  },
110
130
  num_threads: 1,
111
131
  num_jobs: 1,
112
- job_lifetime: 43200
132
+ job_lifetime: 43_200,
133
+ # Set cloud_share_url to 'disabled' to disable the cloud sharing feature
134
+ cloud_share_url: 'https://share.sequenceserver.com/api/v1/shared-job',
135
+ # Warn in the UI before rendering results larger than this value
136
+ large_result_warning_threshold: 250 * 1024 * 1024,
137
+ optimistic: false # Faster, but does not perform DB compatibility checks
113
138
  }
114
139
  end
115
140
  end
@@ -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,6 +51,12 @@ module SequenceServer
47
51
  .map { |f| fetch File.basename File.dirname f }
48
52
  end
49
53
 
54
+ # Enqueues a job that is already created, returns the job object
55
+ def enqueue(job)
56
+ pool.queue { job.run }
57
+ job
58
+ end
59
+
50
60
  private
51
61
 
52
62
  # Thread pool used for running BLAST searches.
@@ -1,18 +1,18 @@
1
1
  require 'sequenceserver/job'
2
2
 
3
3
  module SequenceServer
4
-
5
4
  # Removes expired jobs in a background thread.
6
5
  #
7
6
  # Job lifetime is provided in minutes. It can be zero in which case jobs will
8
7
  # be deleted as soon as they are done, or it can be Infinity in which case
9
8
  # jobs will never be deleted. Default is to delete finished jobs after 7 days.
10
9
  class JobRemover
11
- DEFAULT_JOB_LIFETIME = 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