sequenceserver 2.0.0.rc7 → 2.0.0.rc8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (530) hide show
  1. checksums.yaml +4 -4
  2. data/bin/chromedriver +0 -0
  3. data/bin/geckodriver +0 -0
  4. data/bin/sequenceserver +31 -4
  5. data/lib/sequenceserver.rb +6 -1
  6. data/lib/sequenceserver/database.rb +7 -42
  7. data/lib/sequenceserver/exceptions.rb +14 -0
  8. data/lib/sequenceserver/makeblastdb.rb +121 -41
  9. data/lib/sequenceserver/routes.rb +1 -1
  10. data/lib/sequenceserver/version.rb +1 -1
  11. data/public/css/sequenceserver.css +8 -2
  12. data/public/css/sequenceserver.min.css +1 -1
  13. data/public/js/jquery_world.js +1 -1
  14. data/public/js/report.js +1 -2
  15. data/public/js/search.js +40 -18
  16. data/public/js/sidebar.js +50 -26
  17. data/public/sequenceserver-report.min.js +17 -17
  18. data/public/sequenceserver-search.min.js +2 -2
  19. data/views/layout.erb +1 -1
  20. data/views/report.erb +1 -1
  21. data/views/search.erb +1 -1
  22. metadata +4 -510
  23. data/.bootstrap/config.json +0 -433
  24. data/.codeclimate.yml +0 -31
  25. data/.csslintrc +0 -2
  26. data/.dockerignore +0 -1
  27. data/.eslintignore +0 -1
  28. data/.eslintrc.json +0 -36
  29. data/.gitignore +0 -56
  30. data/.mailmap +0 -5
  31. data/.rspec +0 -3
  32. data/.rubocop.yml +0 -61
  33. data/.travis.yml +0 -74
  34. data/AppImage/recipe.yml +0 -15
  35. data/AppImage/sequenceserver.desktop +0 -8
  36. data/AppImage/sequenceserver.png +0 -0
  37. data/AppImage/sequenceserver.sh +0 -16
  38. data/Dockerfile +0 -25
  39. data/LICENSE.txt +0 -661
  40. data/LICENSE/Apache.txt +0 -176
  41. data/LICENSE/d3.txt +0 -26
  42. data/README.md +0 -161
  43. data/package.json +0 -48
  44. data/public/vendor/.dependencies.json +0 -18
  45. data/public/vendor/.loaderversions +0 -1
  46. data/public/vendor/github/components/jquery@2.1.4/.gitignore +0 -1
  47. data/public/vendor/github/components/jquery@2.1.4/.jspm-hash +0 -1
  48. data/public/vendor/github/components/jquery@2.1.4/.jspm.json +0 -37
  49. data/public/vendor/github/components/jqueryui@1.11.4/.gitignore +0 -4
  50. data/public/vendor/github/components/jqueryui@1.11.4/.jspm-hash +0 -1
  51. data/public/vendor/github/components/jqueryui@1.11.4/.jspm.json +0 -136
  52. data/public/vendor/github/components/jqueryui@1.11.4/ui/.jshintrc +0 -24
  53. data/public/vendor/github/jspm/nodelibs-buffer@0.1.0/.jspm-hash +0 -1
  54. data/public/vendor/github/jspm/nodelibs-buffer@0.1.0/.jspm.json +0 -10
  55. data/public/vendor/github/jspm/nodelibs-events@0.1.1/.jspm-hash +0 -1
  56. data/public/vendor/github/jspm/nodelibs-events@0.1.1/.jspm.json +0 -10
  57. data/public/vendor/github/jspm/nodelibs-fs@0.1.2/.jspm-hash +0 -1
  58. data/public/vendor/github/jspm/nodelibs-module@0.1.0/.jspm-hash +0 -1
  59. data/public/vendor/github/jspm/nodelibs-module@0.1.0/.jspm.json +0 -3
  60. data/public/vendor/github/jspm/nodelibs-path@0.1.0/.jspm-hash +0 -1
  61. data/public/vendor/github/jspm/nodelibs-path@0.1.0/.jspm.json +0 -10
  62. data/public/vendor/github/jspm/nodelibs-process@0.1.1/.jspm-hash +0 -1
  63. data/public/vendor/github/jspm/nodelibs-stream@0.1.0/.jspm-hash +0 -1
  64. data/public/vendor/github/jspm/nodelibs-stream@0.1.0/.jspm.json +0 -10
  65. data/public/vendor/github/jspm/nodelibs-util@0.1.0/.jspm-hash +0 -1
  66. data/public/vendor/github/jspm/nodelibs-util@0.1.0/.jspm.json +0 -10
  67. data/public/vendor/github/mbostock/d3@3.5.6/.jspm-hash +0 -1
  68. data/public/vendor/github/mbostock/d3@3.5.6/.jspm.json +0 -76
  69. data/public/vendor/github/nicgirault/circosJs@1.7.0/.gitignore +0 -10
  70. data/public/vendor/github/nicgirault/circosJs@1.7.0/.jspm-hash +0 -1
  71. data/public/vendor/github/systemjs/plugin-css@0.1.15/.gitignore +0 -1
  72. data/public/vendor/github/systemjs/plugin-css@0.1.15/.jspm-hash +0 -1
  73. data/public/vendor/github/systemjs/plugin-css@0.1.15/.jspm.json +0 -4
  74. data/public/vendor/github/systemjs/plugin-json@0.1.0/.jspm-hash +0 -1
  75. data/public/vendor/github/twbs/bootstrap@3.3.5/.jspm-hash +0 -1
  76. data/public/vendor/github/twbs/bootstrap@3.3.5/.jspm.json +0 -100
  77. data/public/vendor/npm/amdefine@1.0.0/.jspm-hash +0 -1
  78. data/public/vendor/npm/amdefine@1.0.0/.jspm.json +0 -55
  79. data/public/vendor/npm/babel-core@5.8.23/.jspm-hash +0 -1
  80. data/public/vendor/npm/babel-runtime@5.8.20/.jspm-hash +0 -1
  81. data/public/vendor/npm/babel-runtime@5.8.20/.npmignore +0 -2
  82. data/public/vendor/npm/base62@0.1.1/.jspm-hash +0 -1
  83. data/public/vendor/npm/base62@0.1.1/.jspm.json +0 -49
  84. data/public/vendor/npm/base62@0.1.1/.travis.yml +0 -4
  85. data/public/vendor/npm/base64-js@0.0.8/.jspm-hash +0 -1
  86. data/public/vendor/npm/base64-js@0.0.8/.jspm.json +0 -77
  87. data/public/vendor/npm/base64-js@0.0.8/.travis.yml +0 -5
  88. data/public/vendor/npm/buffer@3.4.3/.jspm-hash +0 -1
  89. data/public/vendor/npm/buffer@3.4.3/.jspm.json +0 -105
  90. data/public/vendor/npm/buffer@3.4.3/.npmignore +0 -1
  91. data/public/vendor/npm/buffer@3.4.3/.travis.yml +0 -8
  92. data/public/vendor/npm/buffer@3.4.3/.zuul.yml +0 -20
  93. data/public/vendor/npm/core-js@1.1.2/.eslintrc +0 -36
  94. data/public/vendor/npm/core-js@1.1.2/.gitattributes +0 -1
  95. data/public/vendor/npm/core-js@1.1.2/.jspm-hash +0 -1
  96. data/public/vendor/npm/core-js@1.1.2/.npmignore +0 -10
  97. data/public/vendor/npm/core-js@1.1.2/.travis.yml +0 -3
  98. data/public/vendor/npm/core-util-is@1.0.1/.jspm-hash +0 -1
  99. data/public/vendor/npm/core-util-is@1.0.1/.jspm.json +0 -58
  100. data/public/vendor/npm/envify@3.4.0/.jspm-hash +0 -1
  101. data/public/vendor/npm/envify@3.4.0/.jspm.json +0 -72
  102. data/public/vendor/npm/envify@3.4.0/.npmignore +0 -2
  103. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/.jspm-hash +0 -1
  104. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/.jspm.json +0 -102
  105. data/public/vendor/npm/events@1.0.2/.jspm-hash +0 -1
  106. data/public/vendor/npm/events@1.0.2/.jspm.json +0 -67
  107. data/public/vendor/npm/events@1.0.2/.npmignore +0 -1
  108. data/public/vendor/npm/events@1.0.2/.travis.yml +0 -7
  109. data/public/vendor/npm/events@1.0.2/.zuul.yml +0 -12
  110. data/public/vendor/npm/font-awesome@4.4.0/.jspm-hash +0 -1
  111. data/public/vendor/npm/font-awesome@4.4.0/.jspm.json +0 -81
  112. data/public/vendor/npm/font-awesome@4.4.0/.npmignore +0 -42
  113. data/public/vendor/npm/ieee754@1.1.6/.jspm-hash +0 -1
  114. data/public/vendor/npm/ieee754@1.1.6/.jspm.json +0 -70
  115. data/public/vendor/npm/ieee754@1.1.6/.travis.yml +0 -7
  116. data/public/vendor/npm/ieee754@1.1.6/.zuul.yml +0 -20
  117. data/public/vendor/npm/inherits@2.0.1/.jspm-hash +0 -1
  118. data/public/vendor/npm/inherits@2.0.1/.jspm.json +0 -60
  119. data/public/vendor/npm/is-array@1.0.1/.jepso-ci.json +0 -3
  120. data/public/vendor/npm/is-array@1.0.1/.jspm-hash +0 -1
  121. data/public/vendor/npm/is-array@1.0.1/.jspm.json +0 -42
  122. data/public/vendor/npm/is-array@1.0.1/.npmignore +0 -0
  123. data/public/vendor/npm/isarray@0.0.1/.jspm-hash +0 -1
  124. data/public/vendor/npm/isarray@0.0.1/.jspm.json +0 -51
  125. data/public/vendor/npm/jstransform@10.1.0/.jshintrc +0 -28
  126. data/public/vendor/npm/jstransform@10.1.0/.jspm-hash +0 -1
  127. data/public/vendor/npm/jstransform@10.1.0/.jspm.json +0 -95
  128. data/public/vendor/npm/jstransform@10.1.0/.npmignore +0 -4
  129. data/public/vendor/npm/jstransform@10.1.0/.travis.yml +0 -8
  130. data/public/vendor/npm/path-browserify@0.0.0/.jspm-hash +0 -1
  131. data/public/vendor/npm/path-browserify@0.0.0/.jspm.json +0 -56
  132. data/public/vendor/npm/process@0.10.1/.jspm-hash +0 -1
  133. data/public/vendor/npm/react@0.13.3/.jspm-hash +0 -1
  134. data/public/vendor/npm/react@0.13.3/.jspm.json +0 -77
  135. data/public/vendor/npm/readable-stream@1.1.13/.jspm-hash +0 -1
  136. data/public/vendor/npm/readable-stream@1.1.13/.jspm.json +0 -95
  137. data/public/vendor/npm/readable-stream@1.1.13/.npmignore +0 -5
  138. data/public/vendor/npm/source-map@0.1.31/.jspm-hash +0 -1
  139. data/public/vendor/npm/source-map@0.1.31/.jspm.json +0 -133
  140. data/public/vendor/npm/source-map@0.1.31/.npmignore +0 -2
  141. data/public/vendor/npm/source-map@0.1.31/.travis.yml +0 -4
  142. data/public/vendor/npm/stream-browserify@1.0.0/.jspm-hash +0 -1
  143. data/public/vendor/npm/stream-browserify@1.0.0/.jspm.json +0 -77
  144. data/public/vendor/npm/stream-browserify@1.0.0/.travis.yml +0 -4
  145. data/public/vendor/npm/string_decoder@0.10.31/.jspm-hash +0 -1
  146. data/public/vendor/npm/string_decoder@0.10.31/.jspm.json +0 -58
  147. data/public/vendor/npm/string_decoder@0.10.31/.npmignore +0 -2
  148. data/public/vendor/npm/through@2.3.8/.jspm-hash +0 -1
  149. data/public/vendor/npm/through@2.3.8/.jspm.json +0 -72
  150. data/public/vendor/npm/through@2.3.8/.travis.yml +0 -5
  151. data/public/vendor/npm/underscore@1.8.3/.jspm-hash +0 -1
  152. data/public/vendor/npm/underscore@1.8.3/.jspm.json +0 -74
  153. data/public/vendor/npm/util@0.10.3/.jspm-hash +0 -1
  154. data/public/vendor/npm/util@0.10.3/.jspm.json +0 -58
  155. data/public/vendor/npm/util@0.10.3/.npmignore +0 -1
  156. data/public/vendor/npm/util@0.10.3/.travis.yml +0 -8
  157. data/public/vendor/npm/util@0.10.3/.zuul.yml +0 -10
  158. data/public/vendor/npm/webshim@1.15.8/.gitattributes +0 -12
  159. data/public/vendor/npm/webshim@1.15.8/.jspm-hash +0 -1
  160. data/public/vendor/npm/webshim@1.15.8/.jspm.json +0 -92
  161. data/public/vendor/npm/webshim@1.15.8/.npmignore +0 -16
  162. data/public/vendor/npm/webshim@1.15.8/.project +0 -12
  163. data/public/vendor/npm/webshim@1.15.8/demos/demos/filereader/upload/.keep +0 -0
  164. data/sequenceserver.gemspec +0 -55
  165. data/spec/blast_versions/blast_2.2.30/blast_2.2.30_spec.rb +0 -228
  166. data/spec/blast_versions/blast_2.2.30/import_spec_capybara_local_2.2.30.rb +0 -583
  167. data/spec/blast_versions/blast_2.2.31/blast_2.2.31_spec.rb +0 -228
  168. data/spec/blast_versions/blast_2.2.31/import_spec_capybara_local_2.2.31.rb +0 -587
  169. data/spec/blast_versions/blast_2.3.0/blast_2.3.0_spec.rb +0 -229
  170. data/spec/blast_versions/blast_2.3.0/import_spec_capybara_local_2.3.0.rb +0 -587
  171. data/spec/blast_versions/blast_2.4.0/blast_2.4.0_spec.rb +0 -228
  172. data/spec/blast_versions/blast_2.4.0/import_spec_capybara_local_2.4.0.rb +0 -588
  173. data/spec/blast_versions/blast_2.5.0/blast_2.5.0_spec.rb +0 -228
  174. data/spec/blast_versions/blast_2.5.0/import_spec_capybara_local_2.5.0.rb +0 -587
  175. data/spec/blast_versions/blast_2.6.0/blast_2.6.0_spec.rb +0 -228
  176. data/spec/blast_versions/blast_2.6.0/import_spec_capybara_local_2.6.0.rb +0 -587
  177. data/spec/blast_versions/blast_2.7.1/blast_2.7.1_spec.rb +0 -228
  178. data/spec/blast_versions/blast_2.7.1/import_spec_capybara_local_2.7.1.rb +0 -587
  179. data/spec/blast_versions/blast_2.8.1/blast_2.8.1_spec.rb +0 -228
  180. data/spec/blast_versions/blast_2.8.1/import_spec_capybara_local_2.8.1.rb +0 -587
  181. data/spec/blast_versions/blast_2.9.0/blast_2.9.0_spec.rb +0 -228
  182. data/spec/blast_versions/blast_2.9.0/import_spec_capybara_local_2.9.0.rb +0 -585
  183. data/spec/blast_versions/diamond_0.9.24/diamond_0.9.24_spec.rb +0 -176
  184. data/spec/blast_versions/diamond_0.9.24/import_spec_capybara_local_0.9.24.rb +0 -237
  185. data/spec/capybara_spec.rb +0 -345
  186. data/spec/config_spec.rb +0 -87
  187. data/spec/database/funky_ids/funky_ids.fa +0 -16
  188. data/spec/database/funky_ids/v4/funky_ids.fa.nhd +0 -8
  189. data/spec/database/funky_ids/v4/funky_ids.fa.nhi +0 -0
  190. data/spec/database/funky_ids/v4/funky_ids.fa.nhr +0 -0
  191. data/spec/database/funky_ids/v4/funky_ids.fa.nin +0 -0
  192. data/spec/database/funky_ids/v4/funky_ids.fa.nog +0 -0
  193. data/spec/database/funky_ids/v4/funky_ids.fa.nsd +0 -15
  194. data/spec/database/funky_ids/v4/funky_ids.fa.nsi +0 -0
  195. data/spec/database/funky_ids/v4/funky_ids.fa.nsq +0 -0
  196. data/spec/database/funky_ids/v5/funky_ids.fa.ndb +0 -0
  197. data/spec/database/funky_ids/v5/funky_ids.fa.nhd +0 -8
  198. data/spec/database/funky_ids/v5/funky_ids.fa.nhi +0 -0
  199. data/spec/database/funky_ids/v5/funky_ids.fa.nhr +0 -0
  200. data/spec/database/funky_ids/v5/funky_ids.fa.nin +0 -0
  201. data/spec/database/funky_ids/v5/funky_ids.fa.nog +0 -0
  202. data/spec/database/funky_ids/v5/funky_ids.fa.nos +0 -0
  203. data/spec/database/funky_ids/v5/funky_ids.fa.not +0 -0
  204. data/spec/database/funky_ids/v5/funky_ids.fa.nsq +0 -0
  205. data/spec/database/funky_ids/v5/funky_ids.fa.ntf +0 -0
  206. data/spec/database/funky_ids/v5/funky_ids.fa.nto +0 -0
  207. data/spec/database/funky_sequences/README.md +0 -14
  208. data/spec/database/funky_sequences/funky_aa_sequences.fa +0 -7
  209. data/spec/database/funky_sequences/funky_aa_sequences.fa.phd +0 -3
  210. data/spec/database/funky_sequences/funky_aa_sequences.fa.phi +0 -0
  211. data/spec/database/funky_sequences/funky_aa_sequences.fa.phr +0 -0
  212. data/spec/database/funky_sequences/funky_aa_sequences.fa.pin +0 -0
  213. data/spec/database/funky_sequences/funky_aa_sequences.fa.pog +0 -0
  214. data/spec/database/funky_sequences/funky_aa_sequences.fa.psd +0 -6
  215. data/spec/database/funky_sequences/funky_aa_sequences.fa.psi +0 -0
  216. data/spec/database/funky_sequences/funky_aa_sequences.fa.psq +0 -0
  217. data/spec/database/funky_sequences/funky_na_sequences.fa +0 -2
  218. data/spec/database/funky_sequences/funky_na_sequences.fa.nhr +0 -0
  219. data/spec/database/funky_sequences/funky_na_sequences.fa.nin +0 -0
  220. data/spec/database/funky_sequences/funky_na_sequences.fa.nog +0 -0
  221. data/spec/database/funky_sequences/funky_na_sequences.fa.nsd +0 -2
  222. data/spec/database/funky_sequences/funky_na_sequences.fa.nsi +0 -0
  223. data/spec/database/funky_sequences/funky_na_sequences.fa.nsq +0 -0
  224. data/spec/database/ox_parse_error/query.fa +0 -1
  225. data/spec/database/ox_parse_error/rand1.fa +0 -2
  226. data/spec/database/ox_parse_error/rand1.fa.nhd +0 -1
  227. data/spec/database/ox_parse_error/rand1.fa.nhi +0 -0
  228. data/spec/database/ox_parse_error/rand1.fa.nhr +0 -0
  229. data/spec/database/ox_parse_error/rand1.fa.nin +0 -0
  230. data/spec/database/ox_parse_error/rand1.fa.nog +0 -0
  231. data/spec/database/ox_parse_error/rand1.fa.nsd +0 -2
  232. data/spec/database/ox_parse_error/rand1.fa.nsi +0 -0
  233. data/spec/database/ox_parse_error/rand1.fa.nsq +0 -0
  234. data/spec/database/ox_parse_error/rand2.fa +0 -2
  235. data/spec/database/ox_parse_error/rand2.fa.nhd +0 -1
  236. data/spec/database/ox_parse_error/rand2.fa.nhi +0 -0
  237. data/spec/database/ox_parse_error/rand2.fa.nhr +0 -0
  238. data/spec/database/ox_parse_error/rand2.fa.nin +0 -0
  239. data/spec/database/ox_parse_error/rand2.fa.nog +0 -0
  240. data/spec/database/ox_parse_error/rand2.fa.nsd +0 -2
  241. data/spec/database/ox_parse_error/rand2.fa.nsi +0 -0
  242. data/spec/database/ox_parse_error/rand2.fa.nsq +0 -0
  243. data/spec/database/ox_parse_error_unique_ids/query.fa +0 -1
  244. data/spec/database/ox_parse_error_unique_ids/rand1.fa +0 -2
  245. data/spec/database/ox_parse_error_unique_ids/rand1.fa.nhd +0 -1
  246. data/spec/database/ox_parse_error_unique_ids/rand1.fa.nhi +0 -0
  247. data/spec/database/ox_parse_error_unique_ids/rand1.fa.nhr +0 -0
  248. data/spec/database/ox_parse_error_unique_ids/rand1.fa.nin +0 -0
  249. data/spec/database/ox_parse_error_unique_ids/rand1.fa.nog +0 -0
  250. data/spec/database/ox_parse_error_unique_ids/rand1.fa.nsd +0 -2
  251. data/spec/database/ox_parse_error_unique_ids/rand1.fa.nsi +0 -0
  252. data/spec/database/ox_parse_error_unique_ids/rand1.fa.nsq +0 -0
  253. data/spec/database/ox_parse_error_unique_ids/rand2.fa +0 -2
  254. data/spec/database/ox_parse_error_unique_ids/rand2.fa.nhd +0 -1
  255. data/spec/database/ox_parse_error_unique_ids/rand2.fa.nhi +0 -0
  256. data/spec/database/ox_parse_error_unique_ids/rand2.fa.nhr +0 -0
  257. data/spec/database/ox_parse_error_unique_ids/rand2.fa.nin +0 -0
  258. data/spec/database/ox_parse_error_unique_ids/rand2.fa.nog +0 -0
  259. data/spec/database/ox_parse_error_unique_ids/rand2.fa.nsd +0 -2
  260. data/spec/database/ox_parse_error_unique_ids/rand2.fa.nsi +0 -0
  261. data/spec/database/ox_parse_error_unique_ids/rand2.fa.nsq +0 -0
  262. data/spec/database/pipe_in_seqid/pipe_in_seqid.fa +0 -6
  263. data/spec/database/pipe_in_seqid/pipe_in_seqid.fa.nhd +0 -1
  264. data/spec/database/pipe_in_seqid/pipe_in_seqid.fa.nhi +0 -0
  265. data/spec/database/pipe_in_seqid/pipe_in_seqid.fa.nhr +0 -0
  266. data/spec/database/pipe_in_seqid/pipe_in_seqid.fa.nin +0 -0
  267. data/spec/database/pipe_in_seqid/pipe_in_seqid.fa.nog +0 -0
  268. data/spec/database/pipe_in_seqid/pipe_in_seqid.fa.nsd +0 -2
  269. data/spec/database/pipe_in_seqid/pipe_in_seqid.fa.nsi +0 -0
  270. data/spec/database/pipe_in_seqid/pipe_in_seqid.fa.nsq +0 -0
  271. data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.ndb +0 -0
  272. data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nhd +0 -8
  273. data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nhi +0 -0
  274. data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nhr +0 -0
  275. data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nin +0 -0
  276. data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nog +0 -0
  277. data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nos +0 -0
  278. data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.not +0 -0
  279. data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nsq +0 -0
  280. data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.ntf +0 -0
  281. data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nto +0 -0
  282. data/spec/database/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.txt +0 -8
  283. data/spec/database/sample/links.rb +0 -23
  284. data/spec/database/sample/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta +0 -6449
  285. data/spec/database/sample/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.pdb +0 -0
  286. data/spec/database/sample/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.phd +0 -1189
  287. data/spec/database/sample/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.phi +0 -0
  288. data/spec/database/sample/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.phr +0 -0
  289. data/spec/database/sample/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.pin +0 -0
  290. data/spec/database/sample/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.pog +0 -0
  291. data/spec/database/sample/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.pos +0 -0
  292. data/spec/database/sample/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.pot +0 -0
  293. data/spec/database/sample/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.psq +0 -0
  294. data/spec/database/sample/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.ptf +0 -0
  295. data/spec/database/sample/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.pto +0 -0
  296. data/spec/database/sample/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.pdb +0 -0
  297. data/spec/database/sample/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.phd +0 -9140
  298. data/spec/database/sample/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.phi +0 -0
  299. data/spec/database/sample/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.phr +0 -0
  300. data/spec/database/sample/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.pin +0 -0
  301. data/spec/database/sample/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.pog +0 -0
  302. data/spec/database/sample/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.pos +0 -0
  303. data/spec/database/sample/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.pot +0 -0
  304. data/spec/database/sample/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.psq +0 -0
  305. data/spec/database/sample/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.ptf +0 -0
  306. data/spec/database/sample/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.pto +0 -0
  307. data/spec/database/sample/proteins/uniprot/URL +0 -1
  308. data/spec/database/sample/si_uniprot_idmap.yml +0 -14180
  309. data/spec/database/sample/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta +0 -5486
  310. data/spec/database/sample/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.ndb +0 -0
  311. data/spec/database/sample/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nhd +0 -473
  312. data/spec/database/sample/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nhi +0 -0
  313. data/spec/database/sample/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nhr +0 -0
  314. data/spec/database/sample/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nin +0 -0
  315. data/spec/database/sample/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nog +0 -0
  316. data/spec/database/sample/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nos +0 -0
  317. data/spec/database/sample/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.not +0 -0
  318. data/spec/database/sample/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nsq +0 -0
  319. data/spec/database/sample/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.ntf +0 -0
  320. data/spec/database/sample/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nto +0 -0
  321. data/spec/database/unformatted/Cardiocondyla_obscurior/Cobs1.4.proteins.fa +0 -148303
  322. data/spec/database/v4/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nhd +0 -8
  323. data/spec/database/v4/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nhi +0 -0
  324. data/spec/database/v4/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nhr +0 -0
  325. data/spec/database/v4/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nin +0 -0
  326. data/spec/database/v4/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nog +0 -0
  327. data/spec/database/v4/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nsd +0 -16
  328. data/spec/database/v4/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nsi +0 -0
  329. data/spec/database/v4/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta.nsq +0 -0
  330. data/spec/database/v4/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.txt +0 -8
  331. data/spec/database/v4/links.rb +0 -23
  332. data/spec/database/v4/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta +0 -6449
  333. data/spec/database/v4/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.phd +0 -1189
  334. data/spec/database/v4/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.phi +0 -0
  335. data/spec/database/v4/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.phr +0 -0
  336. data/spec/database/v4/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.pin +0 -0
  337. data/spec/database/v4/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.pog +0 -0
  338. data/spec/database/v4/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.psd +0 -2378
  339. data/spec/database/v4/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.psi +0 -0
  340. data/spec/database/v4/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta.psq +0 -0
  341. data/spec/database/v4/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.phd +0 -9140
  342. data/spec/database/v4/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.phi +0 -0
  343. data/spec/database/v4/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.phr +0 -0
  344. data/spec/database/v4/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.pin +0 -0
  345. data/spec/database/v4/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.pog +0 -0
  346. data/spec/database/v4/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.psd +0 -18280
  347. data/spec/database/v4/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.psi +0 -0
  348. data/spec/database/v4/proteins/uniprot/2018-04-Swiss-Prot_insecta.fasta.psq +0 -0
  349. data/spec/database/v4/proteins/uniprot/URL +0 -1
  350. data/spec/database/v4/si_uniprot_idmap.yml +0 -14180
  351. data/spec/database/v4/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta +0 -5486
  352. data/spec/database/v4/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nhd +0 -473
  353. data/spec/database/v4/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nhi +0 -0
  354. data/spec/database/v4/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nhr +0 -0
  355. data/spec/database/v4/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nin +0 -0
  356. data/spec/database/v4/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nog +0 -0
  357. data/spec/database/v4/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nsd +0 -946
  358. data/spec/database/v4/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nsi +0 -0
  359. data/spec/database/v4/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta.nsq +0 -0
  360. data/spec/database/without_parse_seqids/without_parse_seqids.fa +0 -10
  361. data/spec/database/without_parse_seqids/without_parse_seqids.fa.phr +0 -0
  362. data/spec/database/without_parse_seqids/without_parse_seqids.fa.pin +0 -0
  363. data/spec/database/without_parse_seqids/without_parse_seqids.fa.psq +0 -0
  364. data/spec/database_spec.rb +0 -51
  365. data/spec/doctor_spec.disabled.rb +0 -107
  366. data/spec/dotdir/blast_2.2.30/blastn/BLASTN_XML_2.2.30.xml +0 -1201
  367. data/spec/dotdir/blast_2.2.30/blastn/job.yaml +0 -8
  368. data/spec/dotdir/blast_2.2.30/blastn_nohits/BLASTN_NO_HITS_XML_2.2.30.xml +0 -866
  369. data/spec/dotdir/blast_2.2.30/blastn_nohits/job.yaml +0 -8
  370. data/spec/dotdir/blast_2.2.30/blastp/BLASTP_XML_2.2.30.xml +0 -1181
  371. data/spec/dotdir/blast_2.2.30/blastp/job.yaml +0 -8
  372. data/spec/dotdir/blast_2.2.30/blastx/BLASTX_XML_2.2.30.xml +0 -1181
  373. data/spec/dotdir/blast_2.2.30/blastx/job.yaml +0 -8
  374. data/spec/dotdir/blast_2.2.30/tblastn/TBLASTN_XML_2.2.30.xml +0 -1181
  375. data/spec/dotdir/blast_2.2.30/tblastn/job.yaml +0 -8
  376. data/spec/dotdir/blast_2.2.30/tblastx/TBLASTX_XML_2.2.30.xml +0 -8857
  377. data/spec/dotdir/blast_2.2.30/tblastx/job.yaml +0 -8
  378. data/spec/dotdir/blast_2.2.31/blastn/BLASTN_XML_2.2.31.xml +0 -1201
  379. data/spec/dotdir/blast_2.2.31/blastn/job.yaml +0 -8
  380. data/spec/dotdir/blast_2.2.31/blastn_nohits/BLASTN_NO_HITS_XML_2.2.31.xml +0 -866
  381. data/spec/dotdir/blast_2.2.31/blastn_nohits/job.yaml +0 -8
  382. data/spec/dotdir/blast_2.2.31/blastp/BLASTP_XML_2.2.31.xml +0 -1181
  383. data/spec/dotdir/blast_2.2.31/blastp/job.yaml +0 -8
  384. data/spec/dotdir/blast_2.2.31/blastx/BLASTX_XML_2.2.31.xml +0 -1181
  385. data/spec/dotdir/blast_2.2.31/blastx/job.yaml +0 -8
  386. data/spec/dotdir/blast_2.2.31/tblastn/TBLASTN_XML_2.2.31.xml +0 -1181
  387. data/spec/dotdir/blast_2.2.31/tblastn/job.yaml +0 -8
  388. data/spec/dotdir/blast_2.2.31/tblastx/TBLASTX_XML_2.2.31.xml +0 -8857
  389. data/spec/dotdir/blast_2.2.31/tblastx/job.yaml +0 -8
  390. data/spec/dotdir/blast_2.3.0/blastn/BLASTN_XML_2.3.0.xml +0 -1201
  391. data/spec/dotdir/blast_2.3.0/blastn/job.yaml +0 -8
  392. data/spec/dotdir/blast_2.3.0/blastn_nohits/BLASTN_NO_HITS_XML_2.3.0.xml +0 -866
  393. data/spec/dotdir/blast_2.3.0/blastn_nohits/job.yaml +0 -8
  394. data/spec/dotdir/blast_2.3.0/blastp/BLASTP_XML_2.3.0.xml +0 -1181
  395. data/spec/dotdir/blast_2.3.0/blastp/job.yaml +0 -8
  396. data/spec/dotdir/blast_2.3.0/blastx/BLASTX_XML_2.3.0.xml +0 -1181
  397. data/spec/dotdir/blast_2.3.0/blastx/job.yaml +0 -8
  398. data/spec/dotdir/blast_2.3.0/tblastn/TBLASTN_XML_2.3.0.xml +0 -1181
  399. data/spec/dotdir/blast_2.3.0/tblastn/job.yaml +0 -8
  400. data/spec/dotdir/blast_2.3.0/tblastx/TBLASTX_XML_2.3.0.xml +0 -8857
  401. data/spec/dotdir/blast_2.3.0/tblastx/job.yaml +0 -8
  402. data/spec/dotdir/blast_2.4.0/blastn/BLASTN_XML_2.4.0.xml +0 -1201
  403. data/spec/dotdir/blast_2.4.0/blastn/job.yaml +0 -8
  404. data/spec/dotdir/blast_2.4.0/blastn_nohits/BLASTN_NO_HITS_XML_2.4.0.xml +0 -866
  405. data/spec/dotdir/blast_2.4.0/blastn_nohits/job.yaml +0 -8
  406. data/spec/dotdir/blast_2.4.0/blastp/BLASTP_XML_2.4.0.xml +0 -1181
  407. data/spec/dotdir/blast_2.4.0/blastp/job.yaml +0 -8
  408. data/spec/dotdir/blast_2.4.0/blastx/BLASTX_XML_2.4.0.xml +0 -1181
  409. data/spec/dotdir/blast_2.4.0/blastx/job.yaml +0 -8
  410. data/spec/dotdir/blast_2.4.0/tblastn/TBLASTN_XML_2.4.0.xml +0 -1181
  411. data/spec/dotdir/blast_2.4.0/tblastn/job.yaml +0 -8
  412. data/spec/dotdir/blast_2.4.0/tblastx/TBLASTX_XML_2.4.0.xml +0 -8857
  413. data/spec/dotdir/blast_2.4.0/tblastx/job.yaml +0 -8
  414. data/spec/dotdir/blast_2.5.0/blastn/BLASTN_XML_2.5.0.xml +0 -1201
  415. data/spec/dotdir/blast_2.5.0/blastn/job.yaml +0 -8
  416. data/spec/dotdir/blast_2.5.0/blastn_nohits/BLASTN_NO_HITS_XML_2.5.0.xml +0 -866
  417. data/spec/dotdir/blast_2.5.0/blastn_nohits/job.yaml +0 -8
  418. data/spec/dotdir/blast_2.5.0/blastp/BLASTP +0 -2161
  419. data/spec/dotdir/blast_2.5.0/blastp/BLASTP_XML_2.5.0.xml +0 -1181
  420. data/spec/dotdir/blast_2.5.0/blastp/job.yaml +0 -8
  421. data/spec/dotdir/blast_2.5.0/blastx/BLASTX +0 -28080
  422. data/spec/dotdir/blast_2.5.0/blastx/BLASTX_XML_2.5.0.xml +0 -1181
  423. data/spec/dotdir/blast_2.5.0/blastx/job.yaml +0 -8
  424. data/spec/dotdir/blast_2.5.0/tblastn/TBLASTN +0 -29486
  425. data/spec/dotdir/blast_2.5.0/tblastn/TBLASTN_XML_2.5.0.xml +0 -1181
  426. data/spec/dotdir/blast_2.5.0/tblastn/job.yaml +0 -8
  427. data/spec/dotdir/blast_2.5.0/tblastx/TBLASTX +0 -180859
  428. data/spec/dotdir/blast_2.5.0/tblastx/TBLASTX_XML_2.5.0.xml +0 -8857
  429. data/spec/dotdir/blast_2.5.0/tblastx/job.yaml +0 -8
  430. data/spec/dotdir/blast_2.6.0/blastn/BLASTN_XML_2.6.0.xml +0 -1201
  431. data/spec/dotdir/blast_2.6.0/blastn/job.yaml +0 -8
  432. data/spec/dotdir/blast_2.6.0/blastn_nohits/BLASTN_NO_HITS_XML_2.6.0.xml +0 -866
  433. data/spec/dotdir/blast_2.6.0/blastn_nohits/job.yaml +0 -8
  434. data/spec/dotdir/blast_2.6.0/blastp/BLASTP_XML_2.6.0.xml +0 -1181
  435. data/spec/dotdir/blast_2.6.0/blastp/job.yaml +0 -8
  436. data/spec/dotdir/blast_2.6.0/blastx/BLASTX_XML_2.6.0.xml +0 -1181
  437. data/spec/dotdir/blast_2.6.0/blastx/job.yaml +0 -8
  438. data/spec/dotdir/blast_2.6.0/tblastn/TBLASTN_XML_2.6.0.xml +0 -1181
  439. data/spec/dotdir/blast_2.6.0/tblastn/job.yaml +0 -8
  440. data/spec/dotdir/blast_2.6.0/tblastx/TBLASTX_XML_2.6.0.xml +0 -8857
  441. data/spec/dotdir/blast_2.6.0/tblastx/job.yaml +0 -8
  442. data/spec/dotdir/blast_2.7.1/blastn/BLASTN_XML_2.7.1.xml +0 -1201
  443. data/spec/dotdir/blast_2.7.1/blastn/job.yaml +0 -8
  444. data/spec/dotdir/blast_2.7.1/blastn_nohits/BLASTN_NO_HITS_XML_2.7.1.xml +0 -866
  445. data/spec/dotdir/blast_2.7.1/blastn_nohits/job.yaml +0 -8
  446. data/spec/dotdir/blast_2.7.1/blastp/BLASTP_XML_2.7.1.xml +0 -1181
  447. data/spec/dotdir/blast_2.7.1/blastp/job.yaml +0 -8
  448. data/spec/dotdir/blast_2.7.1/blastx/BLASTX_XML_2.7.1.xml +0 -1181
  449. data/spec/dotdir/blast_2.7.1/blastx/job.yaml +0 -8
  450. data/spec/dotdir/blast_2.7.1/tblastn/TBLASTN_XML_2.7.1.xml +0 -1181
  451. data/spec/dotdir/blast_2.7.1/tblastn/job.yaml +0 -8
  452. data/spec/dotdir/blast_2.7.1/tblastx/TBLASTX_XML_2.7.1.xml +0 -8857
  453. data/spec/dotdir/blast_2.7.1/tblastx/job.yaml +0 -8
  454. data/spec/dotdir/blast_2.8.1/blastn/BLASTN_XML_2.8.1.xml +0 -1201
  455. data/spec/dotdir/blast_2.8.1/blastn/job.yaml +0 -8
  456. data/spec/dotdir/blast_2.8.1/blastn_nohits/BLASTN_NO_HITS_XML_2.8.1.xml +0 -866
  457. data/spec/dotdir/blast_2.8.1/blastn_nohits/job.yaml +0 -8
  458. data/spec/dotdir/blast_2.8.1/blastp/BLASTP_XML_2.8.1.xml +0 -1181
  459. data/spec/dotdir/blast_2.8.1/blastp/job.yaml +0 -8
  460. data/spec/dotdir/blast_2.8.1/blastx/BLASTX_XML_2.8.1.xml +0 -1181
  461. data/spec/dotdir/blast_2.8.1/blastx/job.yaml +0 -8
  462. data/spec/dotdir/blast_2.8.1/tblastn/TBLASTN_XML_2.8.1.xml +0 -1181
  463. data/spec/dotdir/blast_2.8.1/tblastn/job.yaml +0 -8
  464. data/spec/dotdir/blast_2.8.1/tblastx/TBLASTX_XML_2.8.1.xml +0 -8857
  465. data/spec/dotdir/blast_2.8.1/tblastx/job.yaml +0 -8
  466. data/spec/dotdir/blast_2.9.0/blastn/BLASTN_XML_2.9.0.xml +0 -1201
  467. data/spec/dotdir/blast_2.9.0/blastn/job.yaml +0 -8
  468. data/spec/dotdir/blast_2.9.0/blastn_nohits/BLASTN_NO_HITS_XML_2.9.0.xml +0 -866
  469. data/spec/dotdir/blast_2.9.0/blastn_nohits/job.yaml +0 -8
  470. data/spec/dotdir/blast_2.9.0/blastp/BLASTP_XML_2.9.0.xml +0 -1181
  471. data/spec/dotdir/blast_2.9.0/blastp/job.yaml +0 -8
  472. data/spec/dotdir/blast_2.9.0/blastx/BLASTX_XML_2.9.0.xml +0 -1181
  473. data/spec/dotdir/blast_2.9.0/blastx/job.yaml +0 -8
  474. data/spec/dotdir/blast_2.9.0/tblastn/TBLASTN_XML_2.9.0.xml +0 -1181
  475. data/spec/dotdir/blast_2.9.0/tblastn/job.yaml +0 -8
  476. data/spec/dotdir/blast_2.9.0/tblastx/TBLASTX_XML_2.9.0.xml +0 -8857
  477. data/spec/dotdir/blast_2.9.0/tblastx/job.yaml +0 -8
  478. data/spec/dotdir/diamond_0.9.24/blastp/DIAMOND_BLASTP_0.9.24.xml +0 -1040
  479. data/spec/dotdir/diamond_0.9.24/blastp/job.yaml +0 -8
  480. data/spec/dotdir/diamond_0.9.24/blastx/DIAMOND_BLASTX_0.9.24.xml +0 -1040
  481. data/spec/dotdir/diamond_0.9.24/blastx/job.yaml +0 -8
  482. data/spec/dotdir/diamond_0.9.24/blastx_nohits/DIAMOND_BLASTX_NOHITS_0.9.24.xml +0 -41
  483. data/spec/dotdir/diamond_0.9.24/blastx_nohits/job.yaml +0 -8
  484. data/spec/download_helper.rb +0 -35
  485. data/spec/empty_config.yml +0 -0
  486. data/spec/makeblastdb_spec.rb +0 -121
  487. data/spec/routes_spec.rb +0 -93
  488. data/spec/sample.conf +0 -2
  489. data/spec/sequence_spec.rb +0 -99
  490. data/spec/sequences/MH011443_1_gi_1486783306_gb_MH011443_1.txt +0 -6
  491. data/spec/sequences/MH011443_1_gi_1486783307_gb_AYF55702_1.txt +0 -6
  492. data/spec/sequences/MH011443_1_gi_1528997474_gb_MH447967_1.txt +0 -30
  493. data/spec/sequences/MH011443_1_sp_P04637_P53_HUMAN.txt +0 -6
  494. data/spec/sequences/Nucleotide_TP53_COX41.fasta +0 -15
  495. data/spec/sequences/Protein_TP53_COX41.fasta +0 -12
  496. data/spec/sequences/Query_1_SI2_2_0_06267.txt +0 -6
  497. data/spec/sequences/alignment-2_hits.txt +0 -12
  498. data/spec/sequences/alignment-35_hits_diamond_blastp.txt +0 -210
  499. data/spec/sequences/alignment-35_hits_diamond_blastx.txt +0 -210
  500. data/spec/sequences/alignment-3_hits.txt +0 -18
  501. data/spec/sequences/alignment-40_hits_blastn.txt +0 -246
  502. data/spec/sequences/alignment-40_hits_blastp.txt +0 -240
  503. data/spec/sequences/alignment-40_hits_blastp_2.2.30.txt +0 -240
  504. data/spec/sequences/alignment-40_hits_blastx.txt +0 -240
  505. data/spec/sequences/alignment-40_hits_tblastn.txt +0 -240
  506. data/spec/sequences/alignment-40_hits_tblastn_2.2.30.txt +0 -240
  507. data/spec/sequences/alignment-40_hits_tblastx.txt +0 -2664
  508. data/spec/sequences/alignment-4_hits.txt +0 -24
  509. data/spec/sequences/alignment-4_hits_blastn.txt +0 -24
  510. data/spec/sequences/alignment-4_hits_blastp.txt +0 -24
  511. data/spec/sequences/alignment-4_hits_blastp_2.2.30.txt +0 -24
  512. data/spec/sequences/alignment-4_hits_blastx.txt +0 -24
  513. data/spec/sequences/alignment-4_hits_diamond_blastp.txt +0 -24
  514. data/spec/sequences/alignment-4_hits_diamond_blastx.txt +0 -24
  515. data/spec/sequences/alignment-4_hits_tblastn.txt +0 -24
  516. data/spec/sequences/alignment-4_hits_tblastn_2.2.30.txt +0 -24
  517. data/spec/sequences/alignment-4_hits_tblastx.txt +0 -318
  518. data/spec/sequences/nucleotide_query.fa +0 -21
  519. data/spec/sequences/problematic_query.fa +0 -5
  520. data/spec/sequences/protein_query.fa +0 -9
  521. data/spec/sequences/sample_query_fire_ant_obps.fa +0 -44
  522. data/spec/sequences/sequenceserver-2_hits.fa +0 -10
  523. data/spec/sequences/sequenceserver-SI2.2.0_06267.fa +0 -5
  524. data/spec/sequences/sp_P04637_P53_HUMAN_gi_1099170394_ref_XP_018868681_1.txt +0 -6
  525. data/spec/sequences/sp_P04637_P53_HUMAN_gi_120407068_ref_NP_000537_3.txt +0 -6
  526. data/spec/sequences/sp_P04637_P53_HUMAN_gi_1484127324_gb_MG595988_1.txt +0 -6
  527. data/spec/sequences/sp_P04637_P53_HUMAN_gi_395440626_gb_JQ694049_1.txt +0 -6
  528. data/spec/sequences/sp_P04637_P53_HUMAN_sp_P04637_P53_HUMAN.txt +0 -6
  529. data/spec/sequenceserver_spec.rb +0 -90
  530. data/spec/spec_helper.rb +0 -63
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2f7be0b03d87a6322d843166c7cdcf1aea0236fdd82a932b9eeda936a43f4a53
4
- data.tar.gz: eb13c9ab355e3424e979606273606c6334ee203b649126d9d2860cdbb7d76ee4
3
+ metadata.gz: 449efaa2619fd2c83a4116480c78ae6b892804f2f9bc23c3d074b8b0493985c5
4
+ data.tar.gz: 393f9da8bd3df53bff3ed3a137a5d9484ad5ec9cfa1de3c7b15c3f1a6833f092
5
5
  SHA512:
6
- metadata.gz: 9183f80e0a6909e9e88b4f0416eeaac5ef50e4d75777764f82278b9377bbd5720f34c82cca9aff446eeb735ab79ef69872b8b6e8feabca161b8e81b52e995e4f
7
- data.tar.gz: 99375aca038464b785883f12922656d5733d6cf114c37f62b83bc1c222f371b0b491ced709e678b2c07e52d8bae479ee8cdabdbaf06f1f91add2074f1e8652e5
6
+ metadata.gz: de2fdcef61a8fcdbe8907935a1f0b545219698fe9d37fcad6cd40aaa50e779010b7e91a9158eb76590baed78ce3743cdc173b664ff5d0969dfaca42eb6bd621c
7
+ data.tar.gz: a65c243d19435021b00a360ddfa8f617fa58e5944dd55117a8865f11dec4554a86e577cdfee3013a82638dc45de697a33156da1ba0a2fedd8e2936a7d760d5d9
Binary file
Binary file
@@ -40,7 +40,7 @@ def ask_to_join
40
40
  "-d ifq -d emailAddress=#{response} -d submit=Submit > /dev/null 2> /dev/null"
41
41
  system post_email_cmd
42
42
  end
43
- system "touch #{asked_to_join}"
43
+ system "mkdir -p #{SequenceServer::DOTDIR} && touch #{asked_to_join}"
44
44
  end
45
45
  end
46
46
 
@@ -279,7 +279,6 @@ begin
279
279
  redo
280
280
  rescue SequenceServer::NO_BLAST_DATABASE_FOUND => e
281
281
  unless list_databases? || make_blast_databases?
282
-
283
282
  # Print error raised.
284
283
  puts
285
284
  puts e
@@ -297,8 +296,8 @@ begin
297
296
  unless response =~ /^[n]$/i
298
297
  puts
299
298
  puts 'Searching ...'
300
- if SequenceServer.makeblastdb.scan
301
- formatted = SequenceServer.makeblastdb.run
299
+ if SequenceServer.makeblastdb.any_unformatted?
300
+ formatted = SequenceServer.makeblastdb.format
302
301
  exit! if formatted.empty? && !set?
303
302
  redo unless set?
304
303
  else
@@ -309,6 +308,34 @@ begin
309
308
  exit! unless set?
310
309
  end
311
310
  end
311
+ rescue SequenceServer::INCOMPATIBLE_BLAST_DATABASES => e
312
+ unless list_databases? || make_blast_databases?
313
+ # Print error raised.
314
+ puts
315
+ puts e
316
+
317
+ # Offer user to format the FASTA files.
318
+ database_dir = SequenceServer.config[:database_dir]
319
+ puts
320
+ puts <<~MSG
321
+ Incompatible databases can cause BLAST searches and other features of
322
+ SequenceServer to fail unexpectedly.
323
+ You can view incompatible databases and choose to reformat them below.
324
+ Alternatively, please remove them from databases directory.
325
+
326
+ View incompatible databases? [y/n] (Default: y).
327
+ MSG
328
+ puts
329
+ print '>> '
330
+ response = STDIN.gets.to_s.strip
331
+ unless response =~ /^[n]$/i
332
+ reformatted = SequenceServer.makeblastdb.reformat
333
+ exit! if reformatted.empty? && !set?
334
+ redo unless set?
335
+ else
336
+ exit! unless set?
337
+ end
338
+ end
312
339
  rescue SequenceServer::ENOENT,
313
340
  SequenceServer::CONFIG_FILE_ERROR,
314
341
  SequenceServer::BLAST_DATABASE_ERROR,
@@ -202,7 +202,12 @@ module SequenceServer
202
202
  end
203
203
 
204
204
  logger.debug("Will look for BLAST+ databases in: #{config[:database_dir]}")
205
- Database.scan_databases_dir
205
+
206
+ makeblastdb.scan
207
+ fail NO_BLAST_DATABASE_FOUND, config[:database_dir] if !makeblastdb.any_formatted?
208
+ fail INCOMPATIBLE_BLAST_DATABASES, config[:database_dir] if makeblastdb.any_incompatible?
209
+
210
+ Database.collection = makeblastdb.formatted_fastas
206
211
  Database.each do |database|
207
212
  logger.debug("Found #{database.type} database '#{database.title}'" \
208
213
  " at '#{database.name}'")
@@ -80,12 +80,15 @@ module SequenceServer
80
80
  @collection ||= {}
81
81
  end
82
82
 
83
- private :collection
84
-
85
- def <<(database)
86
- collection[database.id] = database
83
+ def collection=(databases_attrs)
84
+ databases_attrs.each do |db_attrs|
85
+ db = Database.new(*db_attrs)
86
+ collection[db.id] = db
87
+ end
87
88
  end
88
89
 
90
+ private :collection
91
+
89
92
  def [](ids)
90
93
  ids = Array ids
91
94
  collection.values_at(*ids)
@@ -182,44 +185,6 @@ module SequenceServer
182
185
  def clear
183
186
  collection.clear
184
187
  end
185
-
186
- # Recurisvely scan `database_dir` for blast databases.
187
- #
188
- # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
189
- def blastdbcmd
190
- cmd = "blastdbcmd -recursive -list #{config[:database_dir]}" \
191
- ' -list_outfmt "%f %t %p %n %l %d"'
192
- out, err = sys(cmd, path: config[:bin])
193
- errpat = /BLAST Database error/
194
- fail BLAST_DATABASE_ERROR.new(cmd, err) if err.match(errpat)
195
- return out
196
- rescue CommandFailed => e
197
- fail BLAST_DATABASE_ERROR.new(cmd, e.stderr)
198
- end
199
-
200
- def scan_databases_dir
201
- out = blastdbcmd
202
- fail NO_BLAST_DATABASE_FOUND, config[:database_dir] if out.empty?
203
- out.each_line do |line|
204
- name = line.split(' ')[0]
205
- next if multipart_database_name?(name)
206
- self << Database.new(*line.split(' '))
207
- end
208
- end
209
- # rubocop:enable Metrics/AbcSize, Metrics/MethodLength
210
-
211
- # Returns true if the database name appears to be a multi-part database
212
- # name.
213
- #
214
- # e.g.
215
- # /home/ben/pd.ben/sequenceserver/db/nr.00 => yes
216
- # /home/ben/pd.ben/sequenceserver/db/nr => no
217
- # /home/ben/pd.ben/sequenceserver/db/img3.5.finished.faa.01 => yes
218
- # /home/ben/pd.ben/sequenceserver/db/nr00 => no
219
- # /mnt/blast-db/refseq_genomic.100 => yes
220
- def multipart_database_name?(db_name)
221
- !(db_name.match(%r{.+/\S+\.\d{2,3}$}).nil?)
222
- end
223
188
  end
224
189
  end
225
190
  end
@@ -113,6 +113,20 @@ module SequenceServer
113
113
  end
114
114
  end
115
115
 
116
+ class INCOMPATIBLE_BLAST_DATABASES < StandardError
117
+ def initialize(database_dir)
118
+ @database_dir = database_dir
119
+ end
120
+
121
+ attr_reader :database_dir
122
+
123
+ def to_s
124
+ <<~MSG
125
+ One or more databases in #{database_dir} are likely incompatible.
126
+ MSG
127
+ end
128
+ end
129
+
116
130
  # Raised if there was an error determining BLAST+ databases in database_dir.
117
131
  class BLAST_DATABASE_ERROR < StandardError
118
132
  def initialize(cmd, out)
@@ -31,6 +31,9 @@ module SequenceServer
31
31
  end
32
32
 
33
33
  attr_reader :database_dir
34
+ attr_reader :formatted_fastas
35
+ attr_reader :fastas_to_format
36
+ attr_reader :fastas_to_reformat
34
37
 
35
38
  # Scans the database directory to determine which FASTA files require
36
39
  # formatting or re-formatting.
@@ -46,18 +49,68 @@ module SequenceServer
46
49
  # Now determine FASTA files that are unformatted or require reformatting.
47
50
  @fastas_to_format = []
48
51
  determine_unformatted_fastas
52
+ @fastas_to_reformat = []
49
53
  determine_fastas_to_reformat
50
54
 
51
55
  # Return true if there are files to be (re-)formatted or false otherwise.
56
+ !@fastas_to_format.empty? || !@fastas_to_reformat.empty?
57
+ end
58
+
59
+ # Returns true if at least one database in database directory is formatted.
60
+ def any_formatted?
61
+ !@formatted_fastas.empty?
62
+ end
63
+
64
+ # Returns true if there is at least one unformatted FASTA in the databases
65
+ # directory.
66
+ def any_unformatted?
52
67
  !@fastas_to_format.empty?
53
68
  end
54
69
 
55
- # Runs makeblastdb on each file in `@fastas_to_format`. Will do nothing
56
- # unless `#scan` has been run before.
70
+ # Returns true if the databases directory contains one or more incompatible
71
+ # databases.
72
+ #
73
+ # Note that it is okay to only use V4 databases or only V5 databases. It is
74
+ # Incompatibility arises when they are mixed.
75
+ def any_incompatible?
76
+ return false if @fastas_to_reformat.empty?
77
+ # We need to compare @fastas_to_reformat to @formatted_fastas, but the
78
+ # latter contains extra attributes. However, the first attribute, i.e,
79
+ # path is common to both and sufficient for our needs.
80
+ to_reformat = @fastas_to_reformat.map(&:first)
81
+ formatted = @formatted_fastas.map(&:first)
82
+ # Check that they are not equal. Using intersection operator ensures
83
+ # comparison even if their order differs.
84
+ formatted & to_reformat != formatted
85
+ end
86
+
87
+ # Runs makeblastdb on each file in `@fastas_to_format` and
88
+ # `@fastas_to_reformat`. Will do nothing unless `#scan`
89
+ # has been run before.
57
90
  def run
58
- return unless @fastas_to_format || @fastas_to_format.empty?
59
- @fastas_to_format.each do |path, title, type|
60
- make_blast_database(path, title, type)
91
+ format
92
+ reformat
93
+ end
94
+
95
+ # Format any unformatted FASTA files in database directory. Returns Array
96
+ # of files that were formatted.
97
+ def format
98
+ # Make the intent clear as well as ensure the program won't crash if we
99
+ # accidentally call format before calling scan.
100
+ return unless @fastas_to_format
101
+ @fastas_to_format.select do |path, title, type|
102
+ make_blast_database('format', path, title, type)
103
+ end
104
+ end
105
+
106
+ # Re-format databases that require reformatting. Returns Array of files
107
+ # that were reformatted.
108
+ def reformat
109
+ # Make the intent clear as well as ensure the program won't crash if
110
+ # we accidentally call reformat before calling scan.
111
+ return unless @fastas_to_reformat
112
+ @fastas_to_reformat.select do |path, title, type|
113
+ make_blast_database('reformat', path, title, type)
61
114
  end
62
115
  end
63
116
 
@@ -67,9 +120,9 @@ module SequenceServer
67
120
  # formatted. Adds to @formatted_fastas.
68
121
  def determine_formatted_fastas
69
122
  blastdbcmd.each_line do |line|
70
- path, title, type = line.split(' ')
123
+ path, title, type, *rest = line.split(' ')
71
124
  next if multipart_database_name?(path)
72
- @formatted_fastas << [path, title, type.strip.downcase]
125
+ @formatted_fastas << [path, title, type.strip.downcase, *rest]
73
126
  end
74
127
  end
75
128
 
@@ -81,7 +134,7 @@ module SequenceServer
81
134
  exts = Dir["#{path}.*"].map { |p| p.split('.').last }.sort
82
135
  next if (exts & required_extensions) == required_extensions
83
136
 
84
- @fastas_to_format << [path, title, type]
137
+ @fastas_to_reformat << [path, title, type]
85
138
  end
86
139
  end
87
140
 
@@ -103,46 +156,32 @@ module SequenceServer
103
156
  # directory. Returns the output of `blastdbcmd`. This method is called
104
157
  # by `determine_formatted_fastas`.
105
158
  def blastdbcmd
106
- cmd = "blastdbcmd -recursive -list #{database_dir}" \
107
- ' -list_outfmt "%f %t %p"'
108
- out, _ = sys(cmd, path: config[:bin])
109
- out
159
+ cmd = "blastdbcmd -recursive -list #{config[:database_dir]}" \
160
+ ' -list_outfmt "%f %t %p %n %l %d"'
161
+ out, err = sys(cmd, path: config[:bin])
162
+ errpat = /BLAST Database error/
163
+ fail BLAST_DATABASE_ERROR.new(cmd, err) if err.match(errpat)
164
+ return out
165
+ rescue CommandFailed => e
166
+ fail BLAST_DATABASE_ERROR.new(cmd, e.stderr)
110
167
  end
111
168
 
112
169
  # Create BLAST database, given FASTA file and sequence type in FASTA file.
113
- def make_blast_database(file, title, type)
114
- return unless make_blast_database? file, type
170
+ def make_blast_database(action, file, title, type)
171
+ return unless make_blast_database?(action, file, type)
115
172
  title = confirm_database_title(title)
116
- taxid = fetch_tax_id
117
- _make_blast_database(file, type, title, taxid)
118
- end
119
-
120
- def _make_blast_database(file, type, title, taxid)
121
- extract_fasta(file) unless File.exist?(file)
122
- cmd = "makeblastdb -parse_seqids -hash_index -in #{file} " \
123
- "-dbtype #{type.to_s.slice(0, 4)} -title '#{title}'" \
124
- " -taxid #{taxid}"
125
- out, err = sys(cmd, path: config[:bin])
126
- puts out.strip
127
- puts err.strip
128
- rescue CommandFailed => e
129
- puts <<~MSG
130
- Could not create BLAST database for: #{file}
131
- Tried: #{cmd}
132
- stdout: #{e.stdout}
133
- stderr: #{e.stderr}
134
- MSG
135
- exit!
173
+ taxonomy = taxid_map(file) || taxid
174
+ _make_blast_database(file, type, title, taxonomy)
136
175
  end
137
176
 
138
177
  # Show file path and guessed sequence type to the user and obtain a y/n
139
178
  # response.
140
179
  #
141
180
  # Returns true if the user entered anything but 'n' or 'N'.
142
- def make_blast_database?(file, type)
181
+ def make_blast_database?(action, file, type)
143
182
  puts
144
183
  puts
145
- puts "FASTA file to format/reformat: #{file}"
184
+ puts "FASTA file to #{action}: #{file}"
146
185
  puts "FASTA type: #{type}"
147
186
  print 'Proceed? [y/n] (Default: y): '
148
187
  response = STDIN.gets.to_s.strip
@@ -159,20 +198,47 @@ module SequenceServer
159
198
  from_user.empty? && default || from_user
160
199
  end
161
200
 
201
+ # Check if a '.taxid_map.txt' file exists. If not, try getting it
202
+ # using blastdbcmd.
203
+ def taxid_map(db)
204
+ taxid_map = db.sub(/#{File.extname(db)}$/, '.taxid_map.txt')
205
+ if !File.exist?(taxid_map) || File.zero?(taxid_map)
206
+ extract_taxid_map(db, taxid_map)
207
+ end
208
+ "-taxid_map #{taxid_map}" if !File.zero?(taxid_map)
209
+ end
210
+
162
211
  # Get taxid from the user. Returns user input or 0.
163
212
  #
164
213
  # Using 0 as taxid is equivalent to not setting taxid for the database
165
214
  # that will be created.
166
- def fetch_tax_id
167
- default = 0
215
+ def taxid
168
216
  print 'Enter taxid (optional): '
169
217
  user_response = STDIN.gets.strip
170
- user_response.empty? && default || Integer(user_response)
171
- rescue
218
+ "-taxid #{user_response ? Integer(user_response) : 0}"
219
+ rescue ArgumentError # presumably from call to Interger()
172
220
  puts 'taxid should be a number'
173
221
  retry
174
222
  end
175
223
 
224
+ def _make_blast_database(file, type, title, taxonomy)
225
+ extract_fasta(file) unless File.exist?(file)
226
+ cmd = "makeblastdb -parse_seqids -hash_index -in #{file} " \
227
+ "-dbtype #{type.to_s.slice(0, 4)} -title '#{title}'" \
228
+ " #{taxonomy}"
229
+ out, err = sys(cmd, path: config[:bin])
230
+ puts out.strip
231
+ puts err.strip
232
+ rescue CommandFailed => e
233
+ puts <<~MSG
234
+ Could not create BLAST database for: #{file}
235
+ Tried: #{cmd}
236
+ stdout: #{e.stdout}
237
+ stderr: #{e.stderr}
238
+ MSG
239
+ exit!
240
+ end
241
+
176
242
  # Extract FASTA file from BLAST database.
177
243
  #
178
244
  # Invoked while reformatting a BLAST database if the corresponding
@@ -192,10 +258,24 @@ module SequenceServer
192
258
  exit!
193
259
  end
194
260
 
261
+ def extract_taxid_map(db, taxmap_file)
262
+ cmd = "blastdbcmd -entry all -db #{db} -outfmt '%i %T'"
263
+ sys(cmd, stdout: taxmap_file, path: config[:bin])
264
+ rescue CommandFailed => e
265
+ # silence error
266
+ end
267
+
195
268
  # Returns true if the database name appears to be a multi-part database
196
269
  # name.
270
+ #
271
+ # e.g.
272
+ # /home/ben/pd.ben/sequenceserver/db/nr.00 => yes
273
+ # /home/ben/pd.ben/sequenceserver/db/nr => no
274
+ # /home/ben/pd.ben/sequenceserver/db/img3.5.finished.faa.01 => yes
275
+ # /home/ben/pd.ben/sequenceserver/db/nr00 => no
276
+ # /mnt/blast-db/refseq_genomic.100 => yes
197
277
  def multipart_database_name?(db_name)
198
- Database.multipart_database_name? db_name
278
+ !(db_name.match(%r{.+/\S+\.\d{2,3}$}).nil?)
199
279
  end
200
280
 
201
281
  # Returns true if first character of the file is '>'.
@@ -91,7 +91,7 @@ module SequenceServer
91
91
  post '/' do
92
92
  if params[:input_sequence]
93
93
  @input_sequence = params[:input_sequence]
94
- erb :layout
94
+ erb :search, layout: true
95
95
  else
96
96
  job = Job.create(params)
97
97
  redirect to("/#{job.id}")
@@ -1,4 +1,4 @@
1
1
  # Define version number.
2
2
  module SequenceServer
3
- VERSION = '2.0.0.rc7'.freeze
3
+ VERSION = '2.0.0.rc8'.freeze
4
4
  end
@@ -330,7 +330,13 @@ td.nowrap-ellipsis {
330
330
  .notifications {
331
331
  position: relative;
332
332
  height: 32px;
333
+ /**
334
+ * Notifications should appear over the bottom border of the textarea, high
335
+ * enough that they do not interfere with the database listing below and
336
+ * narrow enough not to cover the textarea resize handle on the right. */
333
337
  top: -16px;
338
+ margin-right: 35px;
339
+ margin-left: 35px;
334
340
  }
335
341
  .notification {
336
342
  height: 32px !important;
@@ -403,7 +409,7 @@ input[type=checkbox] {
403
409
  }
404
410
 
405
411
  .sidebar li a {
406
- padding: 3px 10px;
412
+ padding: 3px 2px;
407
413
  }
408
414
 
409
415
  .sidebar.affix {
@@ -552,4 +558,4 @@ input[type=checkbox] {
552
558
  /* CSS class to facilitate the hit header wrapping */
553
559
  .hit-header {
554
560
  display: table-cell;
555
- }
561
+ }