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
@@ -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