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.

Potentially problematic release.


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

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
@@ -1,176 +0,0 @@
1
- require 'spec_helper'
2
-
3
- # Test BLAST module.
4
- module SequenceServer
5
-
6
- with_hits = Job.fetch('diamond_0.9.24/blastx')
7
- no_hits = Job.fetch('diamond_0.9.24/blastx_nohits')
8
-
9
- init
10
-
11
- describe 'Report' do
12
- hits_report = BLAST::Report.new(with_hits)
13
- no_hits_report = BLAST::Report.new(no_hits)
14
-
15
- it 'will return an Array of queries' do
16
- hits_report.queries.should be_a Array
17
- no_hits_report.queries.should be_a Array
18
- end
19
-
20
- it 'will return a Hash of stats' do
21
- hits_report.stats.should be_a Hash
22
- no_hits_report.stats.should be_a Hash
23
- end
24
-
25
- it 'contains all the necessary stats' do
26
- hits_report.stats.length.should eql(7)
27
- no_hits_report.stats.length.should eql(7)
28
- end
29
- end
30
-
31
- describe 'Query' do
32
- hits_report = BLAST::Report.new(with_hits)
33
- no_hits_report = BLAST::Report.new(no_hits)
34
-
35
- it 'will return queries with valid length' do
36
- hits_report.queries.first.length.should be_a Integer
37
- hits_report.queries.first.length.should satisfy { |n| n > 0 }
38
- no_hits_report.queries.first.length.should be_a Integer
39
- no_hits_report.queries.first.length.should satisfy { |n| n > 0 }
40
- end
41
-
42
- it 'will return an Array of hits' do
43
- hits_report.queries.first.hits.should be_a Array
44
- no_hits_report.queries.first.hits.should be_a Array
45
- end
46
- end
47
-
48
- describe 'Hits' do
49
- hits_report = BLAST::Report.new(with_hits)
50
- no_hits_report = BLAST::Report.new(no_hits)
51
-
52
- it 'will have non zero length' do
53
- hits_report.queries.last.hits.first.length.should satisfy { |n| n > 0 }
54
- end
55
-
56
- it 'will return an Array of HSPs' do
57
- hits_report.queries.first.hits.first.hsps.should be_a Array
58
- end
59
-
60
- it 'will return an Array with atleast one HSP' do
61
- hits_report.queries.first.hits.first.hsps.length.should be >= 1
62
- end
63
-
64
- it 'will contain no element if no hits were obtained' do
65
- no_hits_report.queries.first.hits.length.should eql(0)
66
- end
67
- end
68
-
69
- # Test general features of HSPs. Algorithm specific customizations are
70
- # tested separetly.
71
- describe 'HSPs' do
72
- hits_report = BLAST::Report.new(with_hits)
73
-
74
- # Currently using all 17 HSP parameters in BLAST Report + 1 to refer to the
75
- # hit object it belongs to.
76
- it 'have all the necessary values' do
77
- hits_report.queries.last.hits.first.hsps.last.count.should eql(19)
78
- end
79
-
80
- # Test Random HSPs to ensure that all the values from HSP struct are valid.
81
- it 'have correct alignment values' do
82
- hits_report.queries.last.hits.first.hsps.last.bit_score.should be_a Float
83
- hits_report.queries.last.hits.first.hsps.last.score.should be_a Integer
84
-
85
- hits_report.queries.first.hits.first.hsps.first.evalue.should be_a Float
86
- hits_report.queries.first.hits.first.hsps.first.evalue
87
- .should_not satisfy { |n| n < 0 }
88
-
89
- hits_report.queries.first.hits.last.hsps.first.qstart.should be_a Integer
90
- hits_report.queries.first.hits.last.hsps.first.qstart
91
- .should_not satisfy { |n| n < 0 }
92
-
93
- hits_report.queries.first.hits.last.hsps.first.qend.should be_a Integer
94
- hits_report.queries.first.hits.last.hsps.first.qend
95
- .should_not satisfy { |n| n < 0 }
96
-
97
- hits_report.queries.last.hits.last.hsps.last.sstart.should be_a Integer
98
- hits_report.queries.last.hits.last.hsps.last.sstart
99
- .should_not satisfy { |n| n < 0 }
100
-
101
- hits_report.queries.first.hits.first.hsps.last.send.should be_a Integer
102
- hits_report.queries.first.hits.first.hsps.last.send
103
- .should_not satisfy { |n| n < 0 }
104
-
105
- hits_report.queries.first.hits.first.hsps.last.qframe.should be_a Integer
106
- hits_report.queries.first.hits.first.hsps.last.sframe.should be_a Integer
107
-
108
- hits_report.queries.first.hits.first.hsps.last.identity.should be_a Integer
109
- hits_report.queries.first.hits.first.hsps.last.identity
110
- .should_not satisfy { |n| n < 0 }
111
-
112
- hits_report.queries.first.hits.first.hsps.last.gaps.should be_a Integer
113
- hits_report.queries.first.hits.first.hsps.last.gaps
114
- .should_not satisfy { |n| n < 0 }
115
-
116
- hits_report.queries.first.hits.first.hsps.last.positives
117
- .should be_a Integer
118
- hits_report.queries.first.hits.first.hsps.last.positives
119
- .should_not satisfy { |n| n < 0 }
120
-
121
- hits_report.queries.first.hits.first.hsps.last.length.should be_a Integer
122
- hits_report.queries.first.hits.first.hsps.last.length
123
- .should satisfy { |n| n > 0 }
124
-
125
- hits_report.queries.last.hits.last.hsps.first.qseq.should be_a String
126
- hits_report.queries.last.hits.last.hsps.first.sseq.should be_a String
127
- hits_report.queries.last.hits.last.hsps.first.midline.should be_a String
128
- end
129
-
130
- it 'have correctly matched query, hit and midline alignments' do
131
- hsp = hits_report.queries.last.hits.last.hsps.first
132
- hsp.qseq.length.should eql(hsp.sseq.length)
133
- hsp.sseq.length.should eql(hsp.midline.length)
134
- hsp.midline.length.should eql(hsp.qseq.length)
135
- end
136
- end
137
-
138
- # Individually test different DIAMOND BLASTP/BLASTX algorithms
139
- #
140
-
141
- describe 'diamond BLASTP' do
142
- let 'hsp' do
143
- report = BLAST::Report.new(Job.fetch('diamond_0.9.24/blastp'))
144
- report.queries.first.hits.last.hsps.first
145
- end
146
-
147
- it 'have correct query and subject frame' do
148
- hsp.qframe.should eql(0)
149
- hsp.sframe.should eql(0)
150
- end
151
-
152
- it 'have correct qstart, qend, sstart, send values' do
153
- hsp.qstart.should be <= hsp.qend
154
- hsp.sstart.should be <= hsp.send
155
- end
156
-
157
- end
158
-
159
- describe 'diamond BLASTX' do
160
- let 'hsp' do
161
- report = BLAST::Report.new(Job.fetch('diamond_0.9.24/blastx'))
162
- report.queries.first.hits.last.hsps.first
163
- end
164
-
165
- it 'have correct query and subject frame' do
166
- hsp.qframe.should_not eql(0)
167
- hsp.sframe.should eql(0)
168
- end
169
-
170
- it 'have correct qstart, qend, sstart, send' do
171
- hsp.qstart.should be <= hsp.qend
172
- hsp.sstart.should be <= hsp.send
173
- end
174
- end
175
- end
176
-
@@ -1,237 +0,0 @@
1
- describe 'report generated from imported XML', type: :feature, js: true do
2
- # Fasta files used for testing consist of TP53 and COX41 protein/nucleotide
3
- # sequences for reproducibility.
4
- it 'loads diamond BLASTP xml and tests hit alignment and sidebar Alignment download' do
5
- access_by_uuid('diamond_0.9.24/blastp')
6
- # Click on the first Alignment download button on the page and wait for the
7
- # download to finish.
8
- page.execute_script("$('.download-aln:eq(0)').click()")
9
- wait_for_download
10
- expect(File.basename(downloaded_file)).to eq('sp_P04637_P53_HUMAN_sp_P04637_P53_HUMAN.txt')
11
- expect(File.read(downloaded_file)).to eq(File.read('spec/sequences/sp_P04637_P53_HUMAN_sp_P04637_P53_HUMAN.txt'))
12
-
13
- clear_downloads
14
-
15
- # Click on the Alignment of all hits download and compare the downloaded
16
- # content
17
-
18
- page.click_link('Alignment of all hits')
19
- wait_for_download
20
-
21
- expect(File.basename(downloaded_file)).to eq('alignment-35_hits.txt')
22
- expect(File.read(downloaded_file)).to eq(File.read('spec/sequences/alignment-35_hits_diamond_blastp.txt'))
23
- clear_downloads
24
-
25
- # Check the cheboxes of indicted hits and click on the download of Alignment
26
- # of selected hits and compare the downloaded content
27
-
28
- page.check('Query_1_hit_1_checkbox')
29
- page.check('Query_1_hit_2_checkbox')
30
- page.check('Query_2_hit_1_checkbox')
31
- page.check('Query_2_hit_2_checkbox')
32
- page.click_link('Alignment of 4 selected hit(s)')
33
- wait_for_download
34
-
35
- expect(File.basename(downloaded_file)).to eq('alignment-4_hits.txt')
36
- expect(File.read(downloaded_file)).to eq(File.read('spec/sequences/alignment-4_hits_diamond_blastp.txt'))
37
- page.should have_content('BLASTP')
38
- end
39
-
40
- it 'loads diamond BLASTP XML and tests alignment overview and hit PNG/SVG download' do
41
- access_by_uuid('diamond_0.9.24/blastp')
42
-
43
- # Click on the PNG/SVG download button of the alignment overview and compare
44
- # the downloaded content.
45
-
46
- page.execute_script("$('.export-to-png:eq(0)').click()")
47
- wait_for_download
48
- expect(File.basename(downloaded_file)).to eq('Alignment-Overview-sp_P04637_P53_HUMAN.png')
49
-
50
- clear_downloads
51
-
52
- page.execute_script("$('.export-to-svg:eq(0)').click()")
53
- wait_for_download
54
- expect(File.basename(downloaded_file)).to eq('Alignment-Overview-sp_P04637_P53_HUMAN.svg')
55
-
56
- clear_downloads
57
-
58
- # Click on the PNG/SVG download button of the first hit available and
59
- # compare the downloaded content.
60
- page.execute_script("$('.export-to-png:eq(1)').click()")
61
- wait_for_download
62
- expect(File.basename(downloaded_file)).to eq('Kablammo-sp_P04637_P53_HUMAN-sp_P04637_P53_HUMAN.png')
63
-
64
- clear_downloads
65
-
66
- page.execute_script("$('.export-to-svg:eq(1)').click()")
67
- wait_for_download
68
- expect(File.basename(downloaded_file)).to eq('Kablammo-sp_P04637_P53_HUMAN-sp_P04637_P53_HUMAN.svg')
69
- page.should have_content('BLASTP')
70
- end
71
-
72
- it 'loads diamond BLASTP XML and tests Circos download' do
73
- access_by_uuid('diamond_0.9.24/blastp')
74
-
75
- # Click on the Circos expanding button, wait for animation, click on the
76
- # download of PNG/SVG file and test that it initiated a file download in a
77
- # right format.
78
-
79
- page.should have_content('Queries and their top hits: chord diagram')
80
- page.execute_script("$('.circos > .grapher-header > h4').click()")
81
- sleep 1
82
-
83
- page.execute_script("$('.export-to-png:eq(0)').click()")
84
- wait_for_download
85
- expect(File.basename(downloaded_file)).to eq('Circos-visualisation.png')
86
-
87
- clear_downloads
88
-
89
- page.execute_script("$('.export-to-svg:eq(0)').click()")
90
- wait_for_download
91
- expect(File.basename(downloaded_file)).to eq('Circos-visualisation.svg')
92
- end
93
-
94
- it 'loads BLASTP XML and tests Length distribution download' do
95
- access_by_uuid('diamond_0.9.24/blastp')
96
-
97
- # Click on the Length distribution expanding button, wait for animation,
98
- # click on the download of PNG/SVG file and test that it initiated a file
99
- # download in a right format.
100
-
101
- page.should have_content('Length distribution of hits')
102
- page.execute_script("$('.length-distribution > .grapher-header > h4').click()")
103
- sleep 1
104
-
105
- page.execute_script("$('.export-to-png:eq(1)').click()")
106
- wait_for_download
107
- expect(File.basename(downloaded_file)).to eq('length-distribution-sp_P04637_P53_HUMAN.png')
108
-
109
- clear_downloads
110
-
111
- page.execute_script("$('.export-to-svg:eq(1)').click()")
112
- wait_for_download
113
- expect(File.basename(downloaded_file)).to eq('length-distribution-sp_P04637_P53_HUMAN.svg')
114
- end
115
-
116
- # BLASTX test scenarios
117
-
118
- it 'loads diamond BLASTX XML and tests hit alignment and sidebar Alignment download' do
119
- access_by_uuid('diamond_0.9.24/blastx')
120
-
121
- # Click on the first Alignment download button on the page and wait for the
122
- # download to finish.
123
- page.execute_script("$('.download-aln:eq(0)').click()")
124
- wait_for_download
125
-
126
- expect(File.basename(downloaded_file)).to eq('MH011443_1_sp_P04637_P53_HUMAN.txt')
127
- expect(File.read(downloaded_file)).to eq(File.read('spec/sequences/MH011443_1_sp_P04637_P53_HUMAN.txt'))
128
-
129
- clear_downloads
130
-
131
- # Click on the Alignment of all hits download and compare the downloaded
132
- # content
133
-
134
- page.click_link('Alignment of all hits')
135
- wait_for_download
136
-
137
- expect(File.basename(downloaded_file)).to eq('alignment-35_hits.txt')
138
- expect(File.read(downloaded_file)).to eq(File.read('spec/sequences/alignment-35_hits_diamond_blastx.txt'))
139
- clear_downloads
140
-
141
- # Select four hit checkboxes and click on the Alignment of selected hits.
142
- # Compare the downloaded content.
143
- page.check('Query_1_hit_3_checkbox')
144
- page.check('Query_1_hit_4_checkbox')
145
- page.check('Query_2_hit_3_checkbox')
146
- page.check('Query_2_hit_4_checkbox')
147
- page.click_link('Alignment of 4 selected hit(s)')
148
- wait_for_download
149
-
150
- expect(File.basename(downloaded_file)).to eq('alignment-4_hits.txt')
151
- expect(File.read(downloaded_file)).to eq(File.read('spec/sequences/alignment-4_hits_diamond_blastx.txt'))
152
-
153
- page.should have_content('BLASTX')
154
- end
155
-
156
- it 'loads diamond BLASTX XML and tests alignment overview and hit PNG/SVG download' do
157
- access_by_uuid('diamond_0.9.24/blastx')
158
-
159
- # Click on the PNG/SVG download button of the alignment overview and compare
160
- # the downloaded content.
161
- page.execute_script("$('.export-to-png:eq(0)').click()")
162
- wait_for_download
163
- expect(File.basename(downloaded_file)).to eq('Alignment-Overview-MH011443_1.png')
164
-
165
- clear_downloads
166
-
167
- page.execute_script("$('.export-to-svg:eq(0)').click()")
168
- wait_for_download
169
- expect(File.basename(downloaded_file)).to eq('Alignment-Overview-MH011443_1.svg')
170
-
171
- clear_downloads
172
- # Click on the PNG/SVG download button of the first hit available and
173
- # compare the downloaded content.
174
- page.execute_script("$('.export-to-png:eq(1)').click()")
175
-
176
- wait_for_download
177
- expect(File.basename(downloaded_file)).to eq('Kablammo-MH011443_1-sp_P04637_P53_HUMAN.png')
178
-
179
- clear_downloads
180
-
181
- page.execute_script("$('.export-to-svg:eq(1)').click()")
182
- wait_for_download
183
- expect(File.basename(downloaded_file)).to eq('Kablammo-MH011443_1-sp_P04637_P53_HUMAN.svg')
184
- page.should have_content('BLASTX')
185
- end
186
-
187
- it 'loads diamond BLASTX XML and tests Circos download' do
188
- access_by_uuid('diamond_0.9.24/blastx')
189
- # Click on the Circos expanding button, wait for animation, click on the
190
- # download of PNG/SVG file and test that it initiated a file download in a
191
- # right format.
192
-
193
- page.should have_content('Queries and their top hits: chord diagram')
194
- page.execute_script("$('.circos > .grapher-header > h4').click()")
195
- sleep 1
196
-
197
- page.execute_script("$('.export-to-png:eq(0)').click()")
198
- wait_for_download
199
- expect(File.basename(downloaded_file)).to eq('Circos-visualisation.png')
200
-
201
- clear_downloads
202
-
203
- page.execute_script("$('.export-to-svg:eq(0)').click()")
204
- wait_for_download
205
- expect(File.basename(downloaded_file)).to eq('Circos-visualisation.svg')
206
- end
207
-
208
- it 'loads diamond BLASTX XML and tests Length distribution download' do
209
- access_by_uuid('diamond_0.9.24/blastx')
210
-
211
- # Click on the Length distribution expanding button, wait for animation,
212
- # click on the download of PNG/SVG file and test that it initiated a file
213
- # download in a right format.
214
-
215
- page.should have_content('Length distribution of hits')
216
- page.execute_script("$('.length-distribution > .grapher-header > h4').click()")
217
- sleep 1
218
-
219
- page.execute_script("$('.export-to-png:eq(1)').click()")
220
- wait_for_download
221
- expect(File.basename(downloaded_file)).to eq('length-distribution-MH011443_1.png')
222
-
223
- clear_downloads
224
-
225
- page.execute_script("$('.export-to-svg:eq(1)').click()")
226
- wait_for_download
227
- expect(File.basename(downloaded_file)).to eq('length-distribution-MH011443_1.svg')
228
- end
229
-
230
- ## Helpers ##
231
-
232
- def access_by_uuid(id)
233
- url = url_encode(id)
234
- visit "/#{url}"
235
- page.should have_content('Query')
236
- end
237
- end
@@ -1,345 +0,0 @@
1
- describe 'a browser', type: :feature, js: true do
2
- it 'sorts databases alphabetically' do
3
- visit '/'
4
- fill_in('sequence', with: nucleotide_query)
5
-
6
- prot = page.evaluate_script("$('.protein .database').text().trim()")
7
- prot.should eq("2018-04 Swiss-Prot insecta Sinvicta 2-2-3 prot subset")
8
-
9
- nucl = page.evaluate_script("$('.nucleotide .database').text().trim()")
10
- nucl.should eq("Sinvicta 2-2-3 cdna subset Solenopsis invicta gnG subset")
11
- end
12
-
13
- it 'properly controls blast button' do
14
- visit '/'
15
-
16
- fill_in('sequence', with: nucleotide_query)
17
- page.evaluate_script("$('#method').is(':disabled')").should eq(true)
18
-
19
- check(nucleotide_databases.first)
20
- page.evaluate_script("$('#method').is(':disabled')").should eq(false)
21
- end
22
-
23
- it 'properly controls interaction with database listing' do
24
- visit '/'
25
- fill_in('sequence', with: nucleotide_query)
26
- check(nucleotide_databases.first)
27
- page.evaluate_script("$('.protein .database').first().hasClass('disabled')")
28
- .should eq(true)
29
- end
30
-
31
- it 'shows a dropdown menu when other blast methods are available' do
32
- visit '/'
33
- fill_in('sequence', with: nucleotide_query)
34
- check(nucleotide_databases.first)
35
- page.has_css?('button.dropdown-toggle').should eq(true)
36
- end
37
-
38
- it 'can run a simple blastn search' do
39
- perform_search query: nucleotide_query,
40
- databases: nucleotide_databases
41
- page.should have_content('BLASTN')
42
- end
43
-
44
- it 'can run a simple blastp search' do
45
- perform_search query: protein_query,
46
- databases: protein_databases
47
- page.should have_content('BLASTP')
48
- end
49
-
50
- it 'can run a simple blastx search' do
51
- perform_search query: nucleotide_query,
52
- databases: protein_databases
53
- page.should have_content('BLASTX')
54
- end
55
-
56
- it 'can run a simple tblastx search' do
57
- perform_search query: nucleotide_query,
58
- databases: nucleotide_databases,
59
- method: 'tblastx'
60
- page.should have_content('TBLASTX')
61
- end
62
-
63
- it 'can run a simple tblastn search' do
64
- perform_search query: protein_query,
65
- databases: nucleotide_databases
66
- page.should have_content('TBLASTN')
67
- end
68
-
69
- ### Test aspects of the generated report.
70
-
71
- it 'can download FASTA of each hit' do
72
- # Do a BLASTP search. protein_query refers to the first two sequence in
73
- # protein_databases[0], so the top hits are the query sequences themselves.
74
- perform_search(query: protein_query,
75
- databases: protein_databases.values_at(0))
76
-
77
- # Click on the first FASTA download button on the page and wait for the
78
- # download to finish.
79
- page.execute_script("$('.download-fa:eq(0)').click()")
80
- wait_for_download
81
-
82
- # Test name and content of the downloaded file.
83
- expect(File.basename(downloaded_file))
84
- .to eq('sequenceserver-SI2.2.0_06267.fa')
85
- expect(File.read(downloaded_file))
86
- .to eq(File.read("#{__dir__}/sequences/sequenceserver-SI2.2.0_06267.fa"))
87
- end
88
-
89
- it 'can download FASTA of selected hits' do
90
- # Do a BLASTP search. protein_query refers to the first two sequence in
91
- # protein_databases[0], so the top hits are the query sequences themselves.
92
- perform_search(query: protein_query,
93
- databases: protein_databases.values_at(0))
94
-
95
- # Select first hit for each query and click 'FASTA of 2 selected hits'.
96
- page.check('Query_1_hit_1_checkbox')
97
- page.check('Query_2_hit_1_checkbox')
98
- page.click_link('FASTA of 2 selected hit(s)')
99
- wait_for_download
100
-
101
- expect(File.basename(downloaded_file)).to eq('sequenceserver-2_hits.fa')
102
- expect(File.read(downloaded_file)).to eq(File.read('spec/sequences/sequenceserver-2_hits.fa'))
103
- end
104
-
105
- it 'can download FASTA of all hits' do
106
- # Do a BLASTP search. protein_query refers to the first two sequence in
107
- # protein_databases[0], so the top hits are the query sequences themselves.
108
- perform_search(query: protein_query,
109
- databases: protein_databases.values_at(0))
110
-
111
- # Click 'FASTA of all hits'.
112
- page.click_link('FASTA of all hits')
113
- wait_for_download
114
-
115
- expect(File.basename(downloaded_file)).to eq('sequenceserver-2_hits.fa')
116
- expect(File.read(downloaded_file)).to eq(File.read('spec/sequences/sequenceserver-2_hits.fa'))
117
- end
118
-
119
- it 'can download alignment for each hit' do
120
- # Do a BLASTP search. protein_query refers to the first two sequence in
121
- # protein_databases[0], so the top hits are the query sequences themselves.
122
- perform_search(query: protein_query,
123
- databases: protein_databases.values_at(0))
124
-
125
- # Click on the first Alignment download button on the page and wait for the
126
- # download to finish.
127
- page.execute_script("$('.download-aln:eq(0)').click()")
128
- wait_for_download
129
-
130
- # Test name and content of the downloaded file.
131
- expect(File.basename(downloaded_file)).to eq('Query_1_SI2_2_0_06267.txt')
132
- expect(File.read(downloaded_file))
133
- .to eq(File.read("#{__dir__}/sequences/Query_1_SI2_2_0_06267.txt"))
134
- end
135
-
136
- it 'can download Alignment of selected hits' do
137
- # Do a BLASTP search. protein_query refers to the first two sequence in
138
- # protein_databases[0], so the top hits are the query sequences themselves.
139
- perform_search(query: protein_query,
140
- databases: protein_databases.values_at(0))
141
-
142
- # Select first hit for each query and click 'Alignment of 2 selected hits'.
143
- page.check('Query_1_hit_1_checkbox')
144
- page.check('Query_2_hit_1_checkbox')
145
- page.click_link('Alignment of 2 selected hit(s)')
146
- wait_for_download
147
-
148
- expect(File.basename(downloaded_file)).to eq('alignment-2_hits.txt')
149
- expect(File.read(downloaded_file)).to eq(File.read('spec/sequences/alignment-2_hits.txt'))
150
- end
151
-
152
- it 'can download Alignment of all hits' do
153
- # Do a BLASTP search. protein_query refers to the first two sequence in
154
- # protein_databases[0], so the top hits are the query sequences themselves.
155
- perform_search(query: protein_query,
156
- databases: protein_databases.values_at(0))
157
-
158
- # Click 'Alignment of all hits'.
159
- page.click_link('Alignment of all hits')
160
- wait_for_download
161
-
162
- expect(File.basename(downloaded_file)).to eq('alignment-2_hits.txt')
163
- expect(File.read(downloaded_file)).to eq(File.read('spec/sequences/alignment-2_hits.txt'))
164
- end
165
-
166
- it 'can download BLAST results in XML and tabular formats' do
167
- # Do a BLASTP search. protein_query refers to the first two sequence in
168
- # protein_databases[0], so the top hits are the query sequences themselves.
169
- perform_search(query: protein_query,
170
- databases: protein_databases.values_at(0))
171
-
172
- page.click_link('Standard tabular report')
173
- wait_for_download
174
- expect(File.basename(downloaded_file)).to eq('sequenceserver-std_tsv_report.tsv')
175
- clear_downloads
176
-
177
- page.click_link('Full tabular report')
178
- wait_for_download
179
- expect(File.basename(downloaded_file)).to eq('sequenceserver-full_tsv_report.tsv')
180
- clear_downloads
181
-
182
- page.click_link('Full XML report')
183
- wait_for_download
184
- expect(File.basename(downloaded_file)).to eq('sequenceserver-xml_report.xml')
185
- clear_downloads
186
- end
187
-
188
- it 'can show hit sequences in a modal' do
189
- # Do a BLASTP search. protein_query refers to the first two sequence in
190
- # protein_databases[0], so the top hits are the query sequences themselves.
191
- perform_search(query: protein_query,
192
- databases: protein_databases.values_at(0))
193
-
194
- # Click on the first sequence viewer link in the report.
195
- page.execute_script("$('.view-sequence:eq(0)').click()")
196
-
197
- within('.sequence-viewer') do
198
- page.should have_content('SI2.2.0_06267')
199
- page.should have_content(<<~SEQ.chomp)
200
- MNTLWLSLWDYPGKLPLNFMVFDTKDDLQAAYWRDPYSIP
201
- LAVIFEDPQPISQRLIYEIRTNPSYTLPPPPTKLYSAPIS
202
- CRKNKTGHWMDDILSIKTGESCPVNNYLHSGFLALQMITD
203
- ITKIKLENSDVTIPDIKLIMFPKEPYTADWMLAFRVVIPL
204
- YMVLALSQFITYLLILIVGEKENKIKEGMKMMGLNDSVF
205
- SEQ
206
- end
207
-
208
- # Dismiss the first modal.
209
- page.execute_script("$('.sequence-viewer').modal('hide')")
210
-
211
- # Click on the second sequence viewer link in the report.
212
- page.execute_script("$('.view-sequence:eq(1)').click()")
213
-
214
- within('.sequence-viewer') do
215
- page.should have_content('SI2.2.0_13722')
216
- page.should have_content(<<~SEQ.chomp)
217
- MSANRLNVLVTLMLAVALLVTESGNAQVDGYLQFNPKRSA
218
- VSSPQKYCGKKLSNALQIICDGVYNSMFKKSGQDFPPQNK
219
- RHIAHRINGNEEESFTTLKSNFLNWCVEVYHRHYRFVFVS
220
- EMEMADYPLAYDISPYLPPFLSRARARGMLDGRFAGRRYR
221
- RESRGIHEECCINGCTINELTSYCGP
222
- SEQ
223
- end
224
- end
225
-
226
- it 'disables sequence viewer links if hits are longer than 10kb' do
227
- # BLASTN transcripts against genome. nucleotide_query refers to two fire
228
- # ant transcripts and nucleotide_databases[0] is subset of the fire ant
229
- # genome (few longest scaffolds). We expect sequence viewer links to be
230
- # disabled for all hits of this search.
231
- perform_search(query: nucleotide_query,
232
- databases: nucleotide_databases.values_at(0))
233
-
234
- # Check that the sequence viewer links are disabled.
235
- page.evaluate_script("$('.view-sequence').is(':disabled')").should eq(true)
236
- end
237
-
238
- it 'can download visualisations in svg and png format' do
239
- # Do a BLASTP search. protein_query refers to the first two sequence in
240
- # protein_databases[0], so the top hits are the query sequences themselves.
241
- perform_search(query: protein_query,
242
- databases: protein_databases.values_at(0))
243
-
244
- ## Check that there is a circos vis and unfold it.
245
- page.should have_content('Queries and their top hits: chord diagram')
246
- page.execute_script("$('.circos > .grapher-header > h4').click()")
247
- sleep 1
248
-
249
- page.execute_script("$('.export-to-svg:eq(0)').click()")
250
- wait_for_download
251
- expect(File.basename(downloaded_file)).to eq('Circos-visualisation.svg')
252
- clear_downloads
253
-
254
- page.execute_script("$('.export-to-png:eq(0)').click()")
255
- wait_for_download
256
- expect(File.basename(downloaded_file)).to eq('Circos-visualisation.png')
257
- clear_downloads
258
-
259
- ## Check that there is a graphical overview of hits.
260
- page.should have_content('Graphical overview of hits')
261
-
262
- page.execute_script("$('.export-to-svg:eq(1)').click()")
263
- wait_for_download
264
- expect(File.basename(downloaded_file)).to eq('Alignment-Overview-Query_1.svg')
265
- clear_downloads
266
-
267
- page.execute_script("$('.export-to-png:eq(1)').click()")
268
- wait_for_download
269
- expect(File.basename(downloaded_file)).to eq('Alignment-Overview-Query_1.png')
270
- clear_downloads
271
-
272
- ## Check that there is a length distribution of hits.
273
- page.should have_content('Length distribution of hits')
274
- page.execute_script("$('.length-distribution > .grapher-header > h4').click()")
275
- sleep 1
276
-
277
- page.execute_script("$('.export-to-svg:eq(2)').click()")
278
- wait_for_download
279
- expect(File.basename(downloaded_file)).to eq('length-distribution-Query_1.svg')
280
- clear_downloads
281
-
282
- page.execute_script("$('.export-to-png:eq(2)').click()")
283
- wait_for_download
284
- expect(File.basename(downloaded_file)).to eq('length-distribution-Query_1.png')
285
- clear_downloads
286
-
287
- ## Check that there is a kablammo vis of query vs hit.
288
- page.should have_content('Graphical overview of aligning region(s)')
289
-
290
- page.execute_script("$('.export-to-svg:eq(3)').click()")
291
- wait_for_download
292
- expect(File.basename(downloaded_file)).to eq('Kablammo-Query_1-SI2_2_0_06267.svg')
293
- clear_downloads
294
-
295
- page.execute_script("$('.export-to-png:eq(3)').click()")
296
- wait_for_download
297
- expect(File.basename(downloaded_file)).to eq('Kablammo-Query_1-SI2_2_0_06267.png')
298
- clear_downloads
299
- end
300
-
301
- ## Helpers ##
302
-
303
- def perform_search(query:, databases:, method: nil)
304
- # Load search form.
305
- visit '/'
306
-
307
- # Fill in query, select databases, submit form.
308
- fill_in('sequence', with: query)
309
- databases.each { |db| check db }
310
- if method == 'tblastx'
311
- find('.dropdown-toggle').click
312
- find('.dropdown-menu li').click
313
- end
314
- click_button('method')
315
-
316
- # Switch to new window because link opens in new window
317
- page.driver.browser.switch_to.window(page.driver.browser.window_handles.last)
318
-
319
- # It is important to have this line or the examples end prematurely with a
320
- # failure.
321
- page.should have_content('Query')
322
- end
323
-
324
- def nucleotide_query
325
- File.read File.join(__dir__, 'sequences', 'nucleotide_query.fa')
326
- end
327
-
328
- def protein_query
329
- File.read File.join(__dir__, 'sequences', 'protein_query.fa')
330
- end
331
-
332
- def nucleotide_databases
333
- [
334
- 'Solenopsis invicta gnG subset',
335
- 'Sinvicta 2-2-3 cdna subset'
336
- ]
337
- end
338
-
339
- def protein_databases
340
- [
341
- 'Sinvicta 2-2-3 prot subset',
342
- '2018-04 Swiss-Prot insecta'
343
- ]
344
- end
345
- end