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
@@ -8,7 +8,8 @@ module SequenceServer
8
8
  # Example usage:
9
9
  #
10
10
  # makeblastdb = MAKEBLASTDB.new(database_dir)
11
- # makeblastdb.scan && makeblastdb.run
11
+ # makeblastdb.run # formats and re-formats databases in database_dir
12
+ # makeblastdb.formatted_fastas # lists formatted databases
12
13
  #
13
14
  class MAKEBLASTDB
14
15
  extend Forwardable
@@ -20,56 +21,17 @@ module SequenceServer
20
21
  end
21
22
 
22
23
  attr_reader :database_dir
23
- attr_reader :formatted_fastas
24
- attr_reader :fastas_to_format
25
- attr_reader :fastas_to_reformat
26
24
 
27
- # Scans the database directory to determine which FASTA files require
28
- # formatting or re-formatting.
29
- #
30
- # Returns `true` if there are files to (re-)format, `false` otherwise.
31
- def scan
32
- # We need to know the list of formatted FASTAs as reported by blastdbcmd
33
- # first. This is required to determine both unformatted FASTAs and those
34
- # that require reformatting.
35
- @formatted_fastas = []
36
- determine_formatted_fastas
37
-
38
- # Now determine FASTA files that are unformatted or require reformatting.
39
- @fastas_to_format = []
40
- determine_unformatted_fastas
41
- @fastas_to_reformat = []
42
- determine_fastas_to_reformat
43
-
44
- # Return true if there are files to be (re-)formatted or false otherwise.
45
- !@fastas_to_format.empty? || !@fastas_to_reformat.empty?
46
- end
47
-
48
- # Returns true if at least one database in database directory is formatted.
49
25
  def any_formatted?
50
- !@formatted_fastas.empty?
51
- end
52
-
53
- # Returns true if there is at least one unformatted FASTA in the databases
54
- # directory.
55
- def any_unformatted?
56
- !@fastas_to_format.empty?
26
+ formatted_fastas.any?
57
27
  end
58
28
 
59
- # Returns true if the databases directory contains one or more incompatible
60
- # databases.
61
- #
62
- # Note that it is okay to only use V4 databases or only V5 databases.
63
- # Incompatibility arises when they are mixed.
64
- def any_incompatible?
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
29
+ def any_to_format_or_reformat?
30
+ any_to_format? || any_to_reformat?
68
31
  end
69
32
 
70
- # Runs makeblastdb on each file in `@fastas_to_format` and
71
- # `@fastas_to_reformat`. Will do nothing unless `#scan`
72
- # has been run before.
33
+ # Runs makeblastdb on each file in `fastas_to_format` and
34
+ # `fastas_to_reformat`.
73
35
  def run
74
36
  format
75
37
  reformat
@@ -80,8 +42,9 @@ module SequenceServer
80
42
  def format
81
43
  # Make the intent clear as well as ensure the program won't crash if we
82
44
  # accidentally call format before calling scan.
83
- return unless @fastas_to_format
84
- @fastas_to_format.select do |path, title, type|
45
+ return unless any_to_format?
46
+
47
+ fastas_to_format.select do |path, title, type|
85
48
  make_blast_database('format', path, title, type)
86
49
  end
87
50
  end
@@ -91,50 +54,75 @@ module SequenceServer
91
54
  def reformat
92
55
  # Make the intent clear as well as ensure the program won't crash if
93
56
  # we accidentally call reformat before calling scan.
94
- return unless @fastas_to_reformat
95
- @fastas_to_reformat.select do |path, title, type, non_parse_seqids|
57
+ return unless any_to_reformat?
58
+
59
+ fastas_to_reformat.select do |path, title, type, non_parse_seqids|
96
60
  make_blast_database('reformat', path, title, type, non_parse_seqids)
97
61
  end
98
62
  end
99
63
 
100
- private
101
-
102
64
  # Determines which FASTA files in the database directory are already
103
- # formatted. Adds to @formatted_fastas.
104
- def determine_formatted_fastas
65
+ # formatted.
66
+ def formatted_fastas
67
+ return @formatted_fastas if defined?(@formatted_fastas)
68
+
69
+ @formatted_fastas = []
70
+
105
71
  blastdbcmd.each_line do |line|
106
72
  path, *rest = line.chomp.split("\t")
107
73
  next if multipart_database_name?(path)
74
+
108
75
  rest << get_categories(path)
109
76
  @formatted_fastas << Database.new(path, *rest)
110
77
  end
78
+
79
+ @formatted_fastas
80
+ end
81
+
82
+ private
83
+
84
+ def any_to_format?
85
+ fastas_to_format.any?
86
+ end
87
+
88
+ def any_to_reformat?
89
+ fastas_to_reformat.any?
111
90
  end
112
91
 
113
92
  # Determines which FASTA files in the database directory require
114
- # reformatting. Adds to @fastas_to_format.
115
- def determine_fastas_to_reformat
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
93
+ # reformatting.
94
+ def fastas_to_reformat
95
+ return @fastas_to_reformat if defined?(@fastas_to_reformat)
96
+
97
+ @fastas_to_reformat = []
98
+ formatted_fastas.each do |ff|
99
+ @fastas_to_reformat << [ff.path, ff.title, ff.type, ff.non_parse_seqids?] if ff.v4? || ff.non_parse_seqids?
120
100
  end
101
+
102
+ @fastas_to_reformat
121
103
  end
122
104
 
123
105
  # Determines which FASTA files in the database directory are
124
- # unformatted. Adds to @fastas_to_format.
125
- def determine_unformatted_fastas
106
+ # unformatted.
107
+ def fastas_to_format
108
+ return @fastas_to_format if defined?(@fastas_to_format)
109
+
110
+ @fastas_to_format = []
111
+
126
112
  # Add a trailing slash to database_dir - Find.find doesn't work as
127
113
  # expected without the trailing slash if database_dir is a symlink
128
114
  # inside a docker container.
129
115
  Find.find(database_dir + '/') do |path|
130
116
  next if File.directory?(path)
131
117
  next unless probably_fasta?(path)
132
- next if @formatted_fastas.any? { |f| f[0] == path }
118
+ next if formatted_fastas.any? { |f| f[0] == path }
133
119
 
134
120
  @fastas_to_format << [path,
135
- make_db_title(path),
136
- guess_sequence_type_in_fasta(path)]
121
+ make_db_title(path),
122
+ guess_sequence_type_in_fasta(path)]
137
123
  end
124
+
125
+ @fastas_to_format
138
126
  end
139
127
 
140
128
  # Runs `blastdbcmd` to determine formatted FASTA files in the database
@@ -146,14 +134,16 @@ module SequenceServer
146
134
  out, err = sys(cmd, path: config[:bin])
147
135
  errpat = /BLAST Database error/
148
136
  fail BLAST_DATABASE_ERROR.new(cmd, err) if err.match(errpat)
149
- return out
137
+
138
+ out
150
139
  rescue CommandFailed => e
151
- fail BLAST_DATABASE_ERROR.new(cmd, e.stderr)
140
+ raise BLAST_DATABASE_ERROR.new(cmd, e.stderr)
152
141
  end
153
142
 
154
143
  # Create BLAST database, given FASTA file and sequence type in FASTA file.
155
144
  def make_blast_database(action, file, title, type, non_parse_seqids = false)
156
145
  return unless make_blast_database?(action, file, type)
146
+
157
147
  title = confirm_database_title(title)
158
148
  extract_fasta(file) unless File.exist?(file)
159
149
  taxonomy = taxid_map(file, non_parse_seqids) || taxid
@@ -188,9 +178,10 @@ module SequenceServer
188
178
  # using blastdbcmd.
189
179
  def taxid_map(db, non_parse_seqids)
190
180
  return if non_parse_seqids
181
+
191
182
  taxid_map = db.sub(/#{File.extname(db)}$/, '.taxid_map.txt')
192
- extract_taxid_map(db, taxid_map) if !File.exist?(taxid_map)
193
- "-taxid_map #{taxid_map}" if !File.zero?(taxid_map)
183
+ extract_taxid_map(db, taxid_map) unless File.exist?(taxid_map)
184
+ "-taxid_map #{taxid_map}" unless File.zero?(taxid_map)
194
185
  end
195
186
 
196
187
  # Get taxid from the user. Returns user input or 0.
@@ -211,10 +202,24 @@ module SequenceServer
211
202
  cmd = "makeblastdb -parse_seqids -hash_index -in '#{file}'" \
212
203
  " -dbtype #{type.to_s.slice(0, 4)} -title '#{title}'" \
213
204
  " #{taxonomy}"
214
- out, err = sys(cmd, path: config[:bin])
205
+
206
+ output = if File.directory?(file)
207
+ File.join(file, 'makeblastdb')
208
+ else
209
+ "#{file}.makeblastdb"
210
+ end
211
+
212
+ out, err = sys(
213
+ cmd,
214
+ path: config[:bin],
215
+ stderr: [output, 'stderr'].join,
216
+ stdout: [output, 'stdout'].join
217
+ )
218
+
215
219
  puts out.strip
216
220
  puts err.strip
217
- return true
221
+
222
+ true
218
223
  rescue CommandFailed => e
219
224
  puts <<~MSG
220
225
  Could not create BLAST database for: #{file}
@@ -261,7 +266,7 @@ module SequenceServer
261
266
  # /home/ben/pd.ben/sequenceserver/db/nr00 => no
262
267
  # /mnt/blast-db/refseq_genomic.100 => yes
263
268
  def multipart_database_name?(db_name)
264
- !(db_name.match(%r{.+/\S+\.\d{2,3}$}).nil?)
269
+ !db_name.match(%r{.+/\S+\.\d{2,3}$}).nil?
265
270
  end
266
271
 
267
272
  def get_categories(path)
@@ -273,7 +278,10 @@ module SequenceServer
273
278
 
274
279
  # Returns true if first character of the file is '>'.
275
280
  def probably_fasta?(file)
276
- return false unless file.match(/((cds)|(fasta)|(fna)|(pep)|(cdna)|(fa)|(prot)|(fas)|(genome)|(nuc)|(dna)|(nt))$/i)
281
+ unless file.match(/((cdna)|(cds)|(dna)|(fa)|(faa)|(fas)|(fasta)|(fna)|(genome)|(nt)|(nuc)|(pep)|(prot))$/i)
282
+ return false
283
+ end
284
+
277
285
  File.read(file, 1) == '>'
278
286
  end
279
287
 
@@ -42,7 +42,7 @@ class Pool
42
42
 
43
43
  def shutdown
44
44
  @size.times do
45
- schedule { throw :exit }
45
+ queue { throw :exit }
46
46
  end
47
47
  @pool.map(&:join)
48
48
  end
@@ -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
@@ -7,11 +7,8 @@ module SequenceServer
7
7
  # own report subclass.
8
8
  class Report
9
9
  class << self
10
- # Generates report for the given job. Returns generated report object.
11
- #
12
- # TODO: Dynamic dispatch.
13
10
  def generate(job)
14
- BLAST::Report.new(job)
11
+ BLAST::Report.new(job).generate
15
12
  end
16
13
  end
17
14
 
@@ -23,7 +20,6 @@ module SequenceServer
23
20
  def initialize(job)
24
21
  @job = job
25
22
  yield if block_given?
26
- generate
27
23
  end
28
24
 
29
25
  attr_reader :job
@@ -1,6 +1,7 @@
1
1
  require 'json'
2
2
  require 'tilt/erb'
3
3
  require 'sinatra/base'
4
+ require 'rest-client'
4
5
 
5
6
  require 'sequenceserver/job'
6
7
  require 'sequenceserver/blast'
@@ -79,9 +80,7 @@ module SequenceServer
79
80
  options: SequenceServer.config[:options]
80
81
  }
81
82
 
82
- if SequenceServer.config[:databases_widget] == 'tree'
83
- searchdata.update(tree: Database.tree)
84
- end
83
+ searchdata.update(tree: Database.tree) if SequenceServer.config[:databases_widget] == 'tree'
85
84
 
86
85
  # If a job_id is specified, update searchdata from job meta data (i.e.,
87
86
  # query, pre-selected databases, advanced options used). Query is only
@@ -107,7 +106,28 @@ module SequenceServer
107
106
  get '/:jid.json' do |jid|
108
107
  job = Job.fetch(jid)
109
108
  halt 202 unless job.done?
110
- Report.generate(job).to_json
109
+
110
+ report = Report.generate(job)
111
+ halt 202 unless report.done?
112
+
113
+ display_large_result_warning =
114
+ SequenceServer.config[:large_result_warning_threshold].to_i.positive? &&
115
+ params[:bypass_file_size_warning] != 'true' &&
116
+ report.xml_file_size > SequenceServer.config[:large_result_warning_threshold]
117
+
118
+ if display_large_result_warning
119
+ halt 200,
120
+ {
121
+ user_warning: 'LARGE_RESULT',
122
+ download_links: [
123
+ { name: 'Standard Tabular Report', url: "download/#{jid}.std_tsv" },
124
+ { name: 'Full Tabular Report', url: "/download/#{jid}.full_tsv" },
125
+ { name: 'Results in XML', url: "/download/#{jid}.xml" }
126
+ ]
127
+ }.to_json
128
+ end
129
+
130
+ report.to_json
111
131
  end
112
132
 
113
133
  # Returns base HTML. Rest happens client-side: polling for and rendering
@@ -138,7 +158,7 @@ module SequenceServer
138
158
  database_ids = params['database_ids'].split(',')
139
159
  sequences = Sequence::Retriever.new(sequence_ids, database_ids, true)
140
160
  send_file(sequences.file.path,
141
- type: sequences.mime,
161
+ type: sequences.mime,
142
162
  filename: sequences.filename)
143
163
  end
144
164
 
@@ -146,7 +166,58 @@ module SequenceServer
146
166
  get '/download/:jid.:type' do |jid, type|
147
167
  job = Job.fetch(jid)
148
168
  out = BLAST::Formatter.new(job, type)
149
- send_file out.file, filename: out.filename, type: out.mime
169
+ send_file out.filepath, filename: out.filename, type: out.mime
170
+ end
171
+
172
+ post '/cloud_share' do
173
+ content_type :json
174
+ request_params = JSON.parse(request.body.read)
175
+ job = Job.fetch(request_params['job_id'])
176
+
177
+ unless job.done?
178
+ status 422
179
+ { errors: ["Job #{request_params['job_id']} is not finished yet."] }.to_json
180
+ end
181
+
182
+ unless SequenceServer.config[:cloud_share_url]
183
+ status 503
184
+ { errors: ['Sorry, cloud sharing is not enabled on this server.'] }.to_json
185
+ end
186
+
187
+ begin
188
+ job.as_archived_file do |archived_job_file|
189
+ cloud_share_response = RestClient.post(
190
+ SequenceServer.config[:cloud_share_url],
191
+ {
192
+ shared_job: {
193
+ sender: {
194
+ email: request_params['sender_email']
195
+ },
196
+ archived_job_file: archived_job_file,
197
+ original_job_id: job.id
198
+ }
199
+ }
200
+ )
201
+
202
+ return cloud_share_response.body
203
+ end
204
+ rescue RestClient::ExceptionWithResponse => e
205
+ cloud_share_response = e.response
206
+
207
+ case cloud_share_response.code
208
+ when 413
209
+ halt 413,
210
+ { errors: ['Sorry, the results are too large to share, please consider \
211
+ using https://sequenceserver.com/cloud'] }.to_json
212
+ when 422
213
+ halt 422, JSON.parse(cloud_share_response.body).to_json
214
+ else
215
+ error cloud_share_response.code,
216
+ { errors: ["Unexpected Cloudshare response: #{cloud_share_response.code}"] }.to_json
217
+ end
218
+ rescue Errno::ECONNREFUSED
219
+ error 503, { errors: ['Sorry, the cloud sharing server may not be running. Try again later.'] }.to_json
220
+ end
150
221
  end
151
222
 
152
223
  # Catches any exception raised within the app and returns JSON
@@ -173,6 +244,7 @@ module SequenceServer
173
244
  # more_info.
174
245
  error 400..500 do
175
246
  error = env['sinatra.error']
247
+ return unless error
176
248
 
177
249
  # All errors will have a message.
178
250
  error_data = { message: error.message }
@@ -193,7 +265,13 @@ module SequenceServer
193
265
  error_data[:more_info] = error.backtrace.join("\n")
194
266
  end
195
267
 
196
- error_data.to_json
268
+ if request.env['HTTP_ACCEPT'].to_s.include?('application/json')
269
+ content_type :json
270
+ error_data.to_json
271
+ else
272
+ content_type :html
273
+ erb :error, locals: { error_data: error_data }, layout: true
274
+ end
197
275
  end
198
276
 
199
277
  # Get the query sequences, selected databases, and advanced params used.
@@ -202,7 +280,7 @@ module SequenceServer
202
280
  return if job.imported_xml_file
203
281
 
204
282
  # Only read job.qfile if we are not going to use Database.retrieve.
205
- searchdata[:query] = File.read(job.qfile) if !params[:query]
283
+ searchdata[:query] = File.read(job.qfile) unless params[:query]
206
284
 
207
285
  # Which databases to pre-select.
208
286
  searchdata[:preSelectedDbs] = job.databases
@@ -213,7 +291,12 @@ module SequenceServer
213
291
  # default advanced parameters from the advanced params input field. In
214
292
  # this case, we do want the advanced params input field to be empty when
215
293
  # the user hits the back button. Thus we do not test for empty string.
216
- searchdata[:options][job.method] = [job.advanced] if job.advanced
294
+ method = job.method.to_sym
295
+ if job.advanced && job.advanced !=
296
+ searchdata[:options][method][:default].join(' ')
297
+ searchdata[:options] = searchdata[:options].deep_copy
298
+ searchdata[:options][method]['last search'] = [job.advanced]
299
+ end
217
300
  end
218
301
  end
219
302
  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.
@@ -67,7 +67,7 @@ module SequenceServer
67
67
 
68
68
  # Now move the temporary file to the given path.
69
69
  # TODO: don't we need to explicitly close the temp file here?
70
- FileUtils.mv(temp_files.delete(channel), filename)
70
+ FileUtils.cp(temp_files[channel], filename)
71
71
  end
72
72
 
73
73
  # Read the remaining temp files into memory. For large outputs,
@@ -1,4 +1,4 @@
1
1
  # Define version number.
2
2
  module SequenceServer
3
- VERSION = '2.0.0'.freeze
3
+ VERSION = '2.2.0'.freeze
4
4
  end
@@ -0,0 +1,56 @@
1
+ # Source: https://github.com/rubyzip/rubyzip/blob/9d891f7353e66052283562d3e252fe380bb4b199/samples/example_recursive.rb
2
+
3
+ require 'zip'
4
+
5
+ # This is a simple example which uses rubyzip to
6
+ # recursively generate a zip file from the contents of
7
+ # a specified directory. The directory itself is not
8
+ # included in the archive, rather just its contents.
9
+ #
10
+ # Usage:
11
+ # directory_to_zip = "/tmp/input"
12
+ # output_file = "/tmp/out.zip"
13
+ # zf = ZipFileGenerator.new(directory_to_zip, output_file)
14
+ # zf.write()
15
+ class ZipFileGenerator
16
+ # Initialize with the directory to zip and the location of the output archive.
17
+ def initialize(input_dir, output_file)
18
+ @input_dir = input_dir
19
+ @output_file = output_file
20
+ end
21
+
22
+ # Zip the input directory.
23
+ def write
24
+ entries = Dir.entries(@input_dir) - %w[. ..]
25
+
26
+ ::Zip::File.open(@output_file, ::Zip::File::CREATE) do |zipfile|
27
+ write_entries entries, '', zipfile
28
+ end
29
+ end
30
+
31
+ private
32
+
33
+ # A helper method to make the recursion work.
34
+ def write_entries(entries, path, zipfile)
35
+ entries.each do |e|
36
+ zipfile_path = path == '' ? e : File.join(path, e)
37
+ disk_file_path = File.join(@input_dir, zipfile_path)
38
+
39
+ if File.directory? disk_file_path
40
+ recursively_deflate_directory(disk_file_path, zipfile, zipfile_path)
41
+ else
42
+ put_into_archive(disk_file_path, zipfile, zipfile_path)
43
+ end
44
+ end
45
+ end
46
+
47
+ def recursively_deflate_directory(disk_file_path, zipfile, zipfile_path)
48
+ zipfile.mkdir zipfile_path
49
+ subdir = Dir.entries(disk_file_path) - %w[. ..]
50
+ write_entries subdir, zipfile_path, zipfile
51
+ end
52
+
53
+ def put_into_archive(disk_file_path, zipfile, zipfile_path)
54
+ zipfile.add(zipfile_path, disk_file_path)
55
+ end
56
+ end
@@ -24,6 +24,7 @@ module SequenceServer
24
24
  require 'sequenceserver/job_remover'
25
25
  require 'sequenceserver/exceptions'
26
26
  require 'sequenceserver/sys'
27
+ require 'sequenceserver/refinements'
27
28
 
28
29
  # The singleton methods defined below constitute the "runtime" environment of
29
30
  # SequenceServer.
@@ -61,6 +62,9 @@ module SequenceServer
61
62
 
62
63
  # SequenceServer initialisation routine.
63
64
  def init(config = {})
65
+ # Reset makeblastdb cache, because configuration may have changed.
66
+ @makeblastdb = nil
67
+
64
68
  # Use default config file if caller didn't specify one.
65
69
  config[:config_file] ||= DEFAULT_CONFIG_FILE
66
70
 
@@ -200,10 +204,13 @@ module SequenceServer
200
204
 
201
205
  logger.debug("Will look for BLAST+ databases in: #{config[:database_dir]}")
202
206
 
203
- makeblastdb.scan
204
- fail NO_BLAST_DATABASE_FOUND, config[:database_dir] if !makeblastdb.any_formatted?
207
+ fail NO_BLAST_DATABASE_FOUND, config[:database_dir] unless makeblastdb.any_formatted?
205
208
 
206
209
  Database.collection = makeblastdb.formatted_fastas
210
+ check_database_compatibility unless config[:optimistic].to_s == 'true'
211
+ end
212
+
213
+ def check_database_compatibility
207
214
  Database.each do |database|
208
215
  logger.debug "Found #{database.type} database '#{database.title}' at '#{database.path}'"
209
216
  if database.non_parse_seqids?