sequenceserver 1.0.0.pre.2 → 1.0.0.pre.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (337) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/README.md +18 -4
  4. data/bin/sequenceserver +219 -124
  5. data/lib/sequenceserver.rb +156 -153
  6. data/lib/sequenceserver/blast.rb +163 -432
  7. data/lib/sequenceserver/blast/exceptions.rb +27 -0
  8. data/lib/sequenceserver/blast/hit.rb +32 -0
  9. data/lib/sequenceserver/blast/hsp.rb +260 -0
  10. data/lib/sequenceserver/blast/query.rb +28 -0
  11. data/lib/sequenceserver/blast/report.rb +123 -0
  12. data/lib/sequenceserver/config.rb +94 -0
  13. data/lib/sequenceserver/database.rb +89 -49
  14. data/lib/sequenceserver/exceptions.rb +154 -0
  15. data/lib/sequenceserver/links.rb +1 -1
  16. data/lib/sequenceserver/logger.rb +5 -7
  17. data/lib/sequenceserver/sequence.rb +40 -39
  18. data/public/css/bootstrap.min.css +5 -7
  19. data/public/css/custom.css +28 -27
  20. data/public/dist/css/sequenceserver.min.css +1 -0
  21. data/public/dist/css/sequenceserver.min.css.gz +0 -0
  22. data/public/dist/fonts/FontAwesome.otf +0 -0
  23. data/public/dist/fonts/fontawesome-webfont.eot +0 -0
  24. data/public/dist/fonts/fontawesome-webfont.svg +565 -0
  25. data/public/dist/fonts/fontawesome-webfont.ttf +0 -0
  26. data/public/dist/fonts/fontawesome-webfont.woff +0 -0
  27. data/public/dist/fonts/fontawesome-webfont.woff2 +0 -0
  28. data/public/dist/js/sequenceserver.min.js +12 -0
  29. data/public/dist/js/sequenceserver.min.js.gz +0 -0
  30. data/public/dist/js/shims/FlashCanvas/canvas2png.js +1 -0
  31. data/public/dist/js/shims/FlashCanvas/flashcanvas.js +1 -0
  32. data/public/dist/js/shims/FlashCanvas/flashcanvas.swf +0 -0
  33. data/public/dist/js/shims/FlashCanvasPro/canvas2png.js +1 -0
  34. data/public/dist/js/shims/FlashCanvasPro/flash10canvas.swf +0 -0
  35. data/public/dist/js/shims/FlashCanvasPro/flash9canvas.swf +0 -0
  36. data/public/dist/js/shims/FlashCanvasPro/flashcanvas.js +1 -0
  37. data/public/dist/js/shims/canvas-blob.js +1 -0
  38. data/public/dist/js/shims/color-picker.js +2 -0
  39. data/public/dist/js/shims/combos/1.js +6 -0
  40. data/public/dist/js/shims/combos/10.js +2 -0
  41. data/public/dist/js/shims/combos/11.js +2 -0
  42. data/public/dist/js/shims/combos/12.js +6 -0
  43. data/public/dist/js/shims/combos/13.js +1 -0
  44. data/public/dist/js/shims/combos/14.js +1 -0
  45. data/public/dist/js/shims/combos/15.js +2 -0
  46. data/public/dist/js/shims/combos/16.js +7 -0
  47. data/public/dist/js/shims/combos/17.js +2 -0
  48. data/public/dist/js/shims/combos/18.js +3 -0
  49. data/public/dist/js/shims/combos/2.js +7 -0
  50. data/public/dist/js/shims/combos/21.js +2 -0
  51. data/public/dist/js/shims/combos/22.js +1 -0
  52. data/public/dist/js/shims/combos/23.js +6 -0
  53. data/public/dist/js/shims/combos/25.js +2 -0
  54. data/public/dist/js/shims/combos/27.js +1 -0
  55. data/public/dist/js/shims/combos/28.js +1 -0
  56. data/public/dist/js/shims/combos/29.js +1 -0
  57. data/public/dist/js/shims/combos/3.js +1 -0
  58. data/public/dist/js/shims/combos/30.js +2 -0
  59. data/public/dist/js/shims/combos/31.js +1 -0
  60. data/public/dist/js/shims/combos/33.js +1 -0
  61. data/public/dist/js/shims/combos/34.js +1 -0
  62. data/public/dist/js/shims/combos/4.js +1 -0
  63. data/public/dist/js/shims/combos/5.js +2 -0
  64. data/public/dist/js/shims/combos/6.js +2 -0
  65. data/public/dist/js/shims/combos/7.js +7 -0
  66. data/public/dist/js/shims/combos/8.js +7 -0
  67. data/public/dist/js/shims/combos/9.js +2 -0
  68. data/public/dist/js/shims/combos/97.js +1 -0
  69. data/public/dist/js/shims/combos/98.js +1 -0
  70. data/public/dist/js/shims/combos/99.js +1 -0
  71. data/public/dist/js/shims/details.js +1 -0
  72. data/public/dist/js/shims/dom-extend.js +1 -0
  73. data/public/dist/js/shims/es5.js +1 -0
  74. data/public/dist/js/shims/es6.js +1 -0
  75. data/public/dist/js/shims/excanvas.js +1 -0
  76. data/public/dist/js/shims/filereader-xhr.js +1 -0
  77. data/public/dist/js/shims/form-combat.js +1 -0
  78. data/public/dist/js/shims/form-core.js +1 -0
  79. data/public/dist/js/shims/form-datalist-lazy.js +1 -0
  80. data/public/dist/js/shims/form-datalist.js +1 -0
  81. data/public/dist/js/shims/form-fixrangechange.js +1 -0
  82. data/public/dist/js/shims/form-inputmode.js +1 -0
  83. data/public/dist/js/shims/form-message.js +1 -0
  84. data/public/dist/js/shims/form-native-extend.js +1 -0
  85. data/public/dist/js/shims/form-number-date-api.js +1 -0
  86. data/public/dist/js/shims/form-number-date-ui.js +1 -0
  87. data/public/dist/js/shims/form-shim-extend.js +1 -0
  88. data/public/dist/js/shims/form-shim-extend2.js +1 -0
  89. data/public/dist/js/shims/form-validation.js +1 -0
  90. data/public/dist/js/shims/form-validators.js +1 -0
  91. data/public/dist/js/shims/forms-picker.js +1 -0
  92. data/public/dist/js/shims/geolocation.js +1 -0
  93. data/public/dist/js/shims/i18n/formcfg-ar.js +1 -0
  94. data/public/dist/js/shims/i18n/formcfg-ch-CN.js +1 -0
  95. data/public/dist/js/shims/i18n/formcfg-cs.js +1 -0
  96. data/public/dist/js/shims/i18n/formcfg-de.js +1 -0
  97. data/public/dist/js/shims/i18n/formcfg-el.js +1 -0
  98. data/public/dist/js/shims/i18n/formcfg-en.js +1 -0
  99. data/public/dist/js/shims/i18n/formcfg-es.js +1 -0
  100. data/public/dist/js/shims/i18n/formcfg-fa.js +1 -0
  101. data/public/dist/js/shims/i18n/formcfg-fr.js +1 -0
  102. data/public/dist/js/shims/i18n/formcfg-he.js +1 -0
  103. data/public/dist/js/shims/i18n/formcfg-hi.js +1 -0
  104. data/public/dist/js/shims/i18n/formcfg-hu.js +1 -0
  105. data/public/dist/js/shims/i18n/formcfg-it.js +1 -0
  106. data/public/dist/js/shims/i18n/formcfg-ja.js +1 -0
  107. data/public/dist/js/shims/i18n/formcfg-lt.js +1 -0
  108. data/public/dist/js/shims/i18n/formcfg-nl.js +1 -0
  109. data/public/dist/js/shims/i18n/formcfg-pl.js +1 -0
  110. data/public/dist/js/shims/i18n/formcfg-pt-BR.js +1 -0
  111. data/public/dist/js/shims/i18n/formcfg-pt-PT.js +1 -0
  112. data/public/dist/js/shims/i18n/formcfg-pt.js +1 -0
  113. data/public/dist/js/shims/i18n/formcfg-ru.js +1 -0
  114. data/public/dist/js/shims/i18n/formcfg-sv.js +1 -0
  115. data/public/dist/js/shims/i18n/formcfg-zh-CN.js +1 -0
  116. data/public/dist/js/shims/i18n/formcfg-zh-TW.js +1 -0
  117. data/public/dist/js/shims/jme/alternate-media.js +1 -0
  118. data/public/dist/js/shims/jme/base.js +1 -0
  119. data/public/dist/js/shims/jme/controls.css +1 -0
  120. data/public/dist/js/shims/jme/jme.eot +0 -0
  121. data/public/dist/js/shims/jme/jme.svg +36 -0
  122. data/public/dist/js/shims/jme/jme.ttf +0 -0
  123. data/public/dist/js/shims/jme/jme.woff +0 -0
  124. data/public/dist/js/shims/jme/mediacontrols-lazy.js +1 -0
  125. data/public/dist/js/shims/jme/mediacontrols.js +1 -0
  126. data/public/dist/js/shims/jme/playlist.js +1 -0
  127. data/public/dist/js/shims/jpicker/images/AlphaBar.png +0 -0
  128. data/public/dist/js/shims/jpicker/images/Bars.png +0 -0
  129. data/public/dist/js/shims/jpicker/images/Maps.png +0 -0
  130. data/public/dist/js/shims/jpicker/images/NoColor.png +0 -0
  131. data/public/dist/js/shims/jpicker/images/bar-opacity.png +0 -0
  132. data/public/dist/js/shims/jpicker/images/map-opacity.png +0 -0
  133. data/public/dist/js/shims/jpicker/images/mappoint.gif +0 -0
  134. data/public/dist/js/shims/jpicker/images/picker.gif +0 -0
  135. data/public/dist/js/shims/jpicker/images/preview-opacity.png +0 -0
  136. data/public/dist/js/shims/jpicker/images/rangearrows.gif +0 -0
  137. data/public/dist/js/shims/jpicker/jpicker.css +1 -0
  138. data/public/dist/js/shims/matchMedia.js +3 -0
  139. data/public/dist/js/shims/mediacapture-picker.js +1 -0
  140. data/public/dist/js/shims/mediacapture.js +1 -0
  141. data/public/dist/js/shims/mediaelement-core.js +1 -0
  142. data/public/dist/js/shims/mediaelement-debug.js +1 -0
  143. data/public/dist/js/shims/mediaelement-jaris.js +1 -0
  144. data/public/dist/js/shims/mediaelement-native-fix.js +1 -0
  145. data/public/dist/js/shims/mediaelement-yt.js +1 -0
  146. data/public/dist/js/shims/moxie/flash/Moxie.cdn.swf +0 -0
  147. data/public/dist/js/shims/moxie/flash/Moxie.min.swf +0 -0
  148. data/public/dist/js/shims/moxie/js/moxie-html4.js +3 -0
  149. data/public/dist/js/shims/moxie/js/moxie-swf.js +2 -0
  150. data/public/dist/js/shims/picture.js +1 -0
  151. data/public/dist/js/shims/plugins/jquery.ui.position.js +11 -0
  152. data/public/dist/js/shims/range-ui.js +1 -0
  153. data/public/dist/js/shims/sizzle.js +11 -0
  154. data/public/dist/js/shims/sticky.js +1 -0
  155. data/public/dist/js/shims/styles/color-picker.png +0 -0
  156. data/public/dist/js/shims/styles/forms-ext.css +1 -0
  157. data/public/dist/js/shims/styles/forms-picker.css +1 -0
  158. data/public/dist/js/shims/styles/progress.gif +0 -0
  159. data/public/dist/js/shims/styles/progress.png +0 -0
  160. data/public/dist/js/shims/styles/shim-ext.css +1 -0
  161. data/public/dist/js/shims/styles/shim.css +1 -0
  162. data/public/dist/js/shims/styles/transparent.png +0 -0
  163. data/public/dist/js/shims/styles/widget.eot +0 -0
  164. data/public/dist/js/shims/styles/widget.svg +12 -0
  165. data/public/dist/js/shims/styles/widget.ttf +0 -0
  166. data/public/dist/js/shims/styles/widget.woff +0 -0
  167. data/public/dist/js/shims/swf/JarisFLVPlayer.swf +0 -0
  168. data/public/dist/js/shims/swfmini-embed.js +1 -0
  169. data/public/dist/js/shims/swfmini.js +6 -0
  170. data/public/dist/js/shims/track-ui.js +1 -0
  171. data/public/dist/js/shims/track.js +1 -0
  172. data/public/dist/js/shims/url.js +1 -0
  173. data/public/dist/js/shims/usermedia-core.js +1 -0
  174. data/public/dist/js/shims/usermedia-shim.js +1 -0
  175. data/public/dist/js/webshims/shims/FlashCanvas/canvas2png.js +1 -0
  176. data/public/dist/js/webshims/shims/FlashCanvas/flashcanvas.js +1 -0
  177. data/public/dist/js/webshims/shims/FlashCanvas/flashcanvas.swf +0 -0
  178. data/public/dist/js/webshims/shims/FlashCanvasPro/canvas2png.js +1 -0
  179. data/public/dist/js/webshims/shims/FlashCanvasPro/flash10canvas.swf +0 -0
  180. data/public/dist/js/webshims/shims/FlashCanvasPro/flash9canvas.swf +0 -0
  181. data/public/dist/js/webshims/shims/FlashCanvasPro/flashcanvas.js +1 -0
  182. data/public/dist/js/webshims/shims/canvas-blob.js +1 -0
  183. data/public/dist/js/webshims/shims/color-picker.js +2 -0
  184. data/public/dist/js/webshims/shims/combos/1.js +6 -0
  185. data/public/dist/js/webshims/shims/combos/10.js +2 -0
  186. data/public/dist/js/webshims/shims/combos/11.js +2 -0
  187. data/public/dist/js/webshims/shims/combos/12.js +6 -0
  188. data/public/dist/js/webshims/shims/combos/13.js +1 -0
  189. data/public/dist/js/webshims/shims/combos/14.js +1 -0
  190. data/public/dist/js/webshims/shims/combos/15.js +2 -0
  191. data/public/dist/js/webshims/shims/combos/16.js +7 -0
  192. data/public/dist/js/webshims/shims/combos/17.js +2 -0
  193. data/public/dist/js/webshims/shims/combos/18.js +3 -0
  194. data/public/dist/js/webshims/shims/combos/2.js +7 -0
  195. data/public/dist/js/webshims/shims/combos/21.js +2 -0
  196. data/public/dist/js/webshims/shims/combos/22.js +1 -0
  197. data/public/dist/js/webshims/shims/combos/23.js +6 -0
  198. data/public/dist/js/webshims/shims/combos/25.js +2 -0
  199. data/public/dist/js/webshims/shims/combos/27.js +1 -0
  200. data/public/dist/js/webshims/shims/combos/28.js +1 -0
  201. data/public/dist/js/webshims/shims/combos/29.js +1 -0
  202. data/public/dist/js/webshims/shims/combos/3.js +1 -0
  203. data/public/dist/js/webshims/shims/combos/30.js +2 -0
  204. data/public/dist/js/webshims/shims/combos/31.js +1 -0
  205. data/public/dist/js/webshims/shims/combos/33.js +1 -0
  206. data/public/dist/js/webshims/shims/combos/34.js +1 -0
  207. data/public/dist/js/webshims/shims/combos/4.js +1 -0
  208. data/public/dist/js/webshims/shims/combos/5.js +2 -0
  209. data/public/dist/js/webshims/shims/combos/6.js +2 -0
  210. data/public/dist/js/webshims/shims/combos/7.js +7 -0
  211. data/public/dist/js/webshims/shims/combos/8.js +7 -0
  212. data/public/dist/js/webshims/shims/combos/9.js +2 -0
  213. data/public/dist/js/webshims/shims/combos/97.js +1 -0
  214. data/public/dist/js/webshims/shims/combos/98.js +1 -0
  215. data/public/dist/js/webshims/shims/combos/99.js +1 -0
  216. data/public/dist/js/webshims/shims/details.js +1 -0
  217. data/public/dist/js/webshims/shims/dom-extend.js +1 -0
  218. data/public/dist/js/webshims/shims/es5.js +1 -0
  219. data/public/dist/js/webshims/shims/es6.js +1 -0
  220. data/public/dist/js/webshims/shims/excanvas.js +1 -0
  221. data/public/dist/js/webshims/shims/filereader-xhr.js +1 -0
  222. data/public/dist/js/webshims/shims/form-combat.js +1 -0
  223. data/public/dist/js/webshims/shims/form-core.js +1 -0
  224. data/public/dist/js/webshims/shims/form-datalist-lazy.js +1 -0
  225. data/public/dist/js/webshims/shims/form-datalist.js +1 -0
  226. data/public/dist/js/webshims/shims/form-fixrangechange.js +1 -0
  227. data/public/dist/js/webshims/shims/form-inputmode.js +1 -0
  228. data/public/dist/js/webshims/shims/form-message.js +1 -0
  229. data/public/dist/js/webshims/shims/form-native-extend.js +1 -0
  230. data/public/dist/js/webshims/shims/form-number-date-api.js +1 -0
  231. data/public/dist/js/webshims/shims/form-number-date-ui.js +1 -0
  232. data/public/dist/js/webshims/shims/form-shim-extend.js +1 -0
  233. data/public/dist/js/webshims/shims/form-shim-extend2.js +1 -0
  234. data/public/dist/js/webshims/shims/form-validation.js +1 -0
  235. data/public/dist/js/webshims/shims/form-validators.js +1 -0
  236. data/public/dist/js/webshims/shims/forms-picker.js +1 -0
  237. data/public/dist/js/webshims/shims/geolocation.js +1 -0
  238. data/public/dist/js/webshims/shims/i18n/formcfg-ar.js +1 -0
  239. data/public/dist/js/webshims/shims/i18n/formcfg-ch-CN.js +1 -0
  240. data/public/dist/js/webshims/shims/i18n/formcfg-cs.js +1 -0
  241. data/public/dist/js/webshims/shims/i18n/formcfg-de.js +1 -0
  242. data/public/dist/js/webshims/shims/i18n/formcfg-el.js +1 -0
  243. data/public/dist/js/webshims/shims/i18n/formcfg-en.js +1 -0
  244. data/public/dist/js/webshims/shims/i18n/formcfg-es.js +1 -0
  245. data/public/dist/js/webshims/shims/i18n/formcfg-fa.js +1 -0
  246. data/public/dist/js/webshims/shims/i18n/formcfg-fr.js +1 -0
  247. data/public/dist/js/webshims/shims/i18n/formcfg-he.js +1 -0
  248. data/public/dist/js/webshims/shims/i18n/formcfg-hi.js +1 -0
  249. data/public/dist/js/webshims/shims/i18n/formcfg-hu.js +1 -0
  250. data/public/dist/js/webshims/shims/i18n/formcfg-it.js +1 -0
  251. data/public/dist/js/webshims/shims/i18n/formcfg-ja.js +1 -0
  252. data/public/dist/js/webshims/shims/i18n/formcfg-lt.js +1 -0
  253. data/public/dist/js/webshims/shims/i18n/formcfg-nl.js +1 -0
  254. data/public/dist/js/webshims/shims/i18n/formcfg-pl.js +1 -0
  255. data/public/dist/js/webshims/shims/i18n/formcfg-pt-BR.js +1 -0
  256. data/public/dist/js/webshims/shims/i18n/formcfg-pt-PT.js +1 -0
  257. data/public/dist/js/webshims/shims/i18n/formcfg-pt.js +1 -0
  258. data/public/dist/js/webshims/shims/i18n/formcfg-ru.js +1 -0
  259. data/public/dist/js/webshims/shims/i18n/formcfg-sv.js +1 -0
  260. data/public/dist/js/webshims/shims/i18n/formcfg-zh-CN.js +1 -0
  261. data/public/dist/js/webshims/shims/i18n/formcfg-zh-TW.js +1 -0
  262. data/public/dist/js/webshims/shims/jme/alternate-media.js +1 -0
  263. data/public/dist/js/webshims/shims/jme/base.js +1 -0
  264. data/public/dist/js/webshims/shims/jme/controls.css +1 -0
  265. data/public/dist/js/webshims/shims/jme/jme.eot +0 -0
  266. data/public/dist/js/webshims/shims/jme/jme.svg +36 -0
  267. data/public/dist/js/webshims/shims/jme/jme.ttf +0 -0
  268. data/public/dist/js/webshims/shims/jme/jme.woff +0 -0
  269. data/public/dist/js/webshims/shims/jme/mediacontrols-lazy.js +1 -0
  270. data/public/dist/js/webshims/shims/jme/mediacontrols.js +1 -0
  271. data/public/dist/js/webshims/shims/jme/playlist.js +1 -0
  272. data/public/dist/js/webshims/shims/jpicker/images/AlphaBar.png +0 -0
  273. data/public/dist/js/webshims/shims/jpicker/images/Bars.png +0 -0
  274. data/public/dist/js/webshims/shims/jpicker/images/Maps.png +0 -0
  275. data/public/dist/js/webshims/shims/jpicker/images/NoColor.png +0 -0
  276. data/public/dist/js/webshims/shims/jpicker/images/bar-opacity.png +0 -0
  277. data/public/dist/js/webshims/shims/jpicker/images/map-opacity.png +0 -0
  278. data/public/dist/js/webshims/shims/jpicker/images/mappoint.gif +0 -0
  279. data/public/dist/js/webshims/shims/jpicker/images/picker.gif +0 -0
  280. data/public/dist/js/webshims/shims/jpicker/images/preview-opacity.png +0 -0
  281. data/public/dist/js/webshims/shims/jpicker/images/rangearrows.gif +0 -0
  282. data/public/dist/js/webshims/shims/jpicker/jpicker.css +1 -0
  283. data/public/dist/js/webshims/shims/matchMedia.js +3 -0
  284. data/public/dist/js/webshims/shims/mediacapture-picker.js +1 -0
  285. data/public/dist/js/webshims/shims/mediacapture.js +1 -0
  286. data/public/dist/js/webshims/shims/mediaelement-core.js +1 -0
  287. data/public/dist/js/webshims/shims/mediaelement-debug.js +1 -0
  288. data/public/dist/js/webshims/shims/mediaelement-jaris.js +1 -0
  289. data/public/dist/js/webshims/shims/mediaelement-native-fix.js +1 -0
  290. data/public/dist/js/webshims/shims/mediaelement-yt.js +1 -0
  291. data/public/dist/js/webshims/shims/moxie/flash/Moxie.cdn.swf +0 -0
  292. data/public/dist/js/webshims/shims/moxie/flash/Moxie.min.swf +0 -0
  293. data/public/dist/js/webshims/shims/moxie/js/moxie-html4.js +3 -0
  294. data/public/dist/js/webshims/shims/moxie/js/moxie-swf.js +2 -0
  295. data/public/dist/js/webshims/shims/picture.js +1 -0
  296. data/public/dist/js/webshims/shims/plugins/jquery.ui.position.js +11 -0
  297. data/public/dist/js/webshims/shims/range-ui.js +1 -0
  298. data/public/dist/js/webshims/shims/sizzle.js +11 -0
  299. data/public/dist/js/webshims/shims/sticky.js +1 -0
  300. data/public/dist/js/webshims/shims/styles/color-picker.png +0 -0
  301. data/public/dist/js/webshims/shims/styles/forms-ext.css +1 -0
  302. data/public/dist/js/webshims/shims/styles/forms-picker.css +1 -0
  303. data/public/dist/js/webshims/shims/styles/progress.gif +0 -0
  304. data/public/dist/js/webshims/shims/styles/progress.png +0 -0
  305. data/public/dist/js/webshims/shims/styles/shim-ext.css +1 -0
  306. data/public/dist/js/webshims/shims/styles/shim.css +1 -0
  307. data/public/dist/js/webshims/shims/styles/transparent.png +0 -0
  308. data/public/dist/js/webshims/shims/styles/widget.eot +0 -0
  309. data/public/dist/js/webshims/shims/styles/widget.svg +12 -0
  310. data/public/dist/js/webshims/shims/styles/widget.ttf +0 -0
  311. data/public/dist/js/webshims/shims/styles/widget.woff +0 -0
  312. data/public/dist/js/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
  313. data/public/dist/js/webshims/shims/swfmini-embed.js +1 -0
  314. data/public/dist/js/webshims/shims/swfmini.js +6 -0
  315. data/public/dist/js/webshims/shims/track-ui.js +1 -0
  316. data/public/dist/js/webshims/shims/track.js +1 -0
  317. data/public/dist/js/webshims/shims/url.js +1 -0
  318. data/public/dist/js/webshims/shims/usermedia-core.js +1 -0
  319. data/public/dist/js/webshims/shims/usermedia-shim.js +1 -0
  320. data/public/js/bootstrap.min.js +3 -8
  321. data/public/js/jquery-ui.min.js +6 -0
  322. data/public/js/jquery.min.js +4 -0
  323. data/public/js/jquery.t.js +4 -4
  324. data/public/js/sequenceserver.blast.js +20 -18
  325. data/public/js/sequenceserver.js +116 -74
  326. data/sequenceserver.gemspec +20 -16
  327. data/views/400.erb +2 -1
  328. data/views/500.erb +6 -1
  329. data/views/result.erb +38 -18
  330. data/views/search.erb +49 -32
  331. metadata +389 -11
  332. data/public/img/glyphicons-halflings-white.png +0 -0
  333. data/public/img/glyphicons-halflings.png +0 -0
  334. data/public/js/jquery-ui.js +0 -14987
  335. data/public/js/jquery.js +0 -5
  336. data/public/js/jquery.scrollspy.js +0 -74
  337. data/public/sequence.min.js +0 -1
@@ -1,59 +1,83 @@
1
- //helpers methods to disable, enable, and uncheck radio buttons and checkboxes
2
- (function( $ ){
3
- //disable an element
4
- $.fn.disable = function() {
1
+ /**
2
+ * Load necessary polyfills.
3
+ */
4
+ $.webshims.polyfill('forms');
5
+
6
+
7
+ /**
8
+ * Simple, small jQuery extensions for convenience.
9
+ */
10
+ (function ($) {
11
+ /**
12
+ * Disable an element.
13
+ *
14
+ * Sets `disabled` property to `true` and adds `disabled` class.
15
+ */
16
+ $.fn.disable = function () {
5
17
  return this.prop('disabled', true).addClass('disabled');
6
18
  };
7
- })( jQuery );
8
19
 
9
- (function( $ ){
10
- //enable an element
11
- $.fn.enable = function() {
20
+ /**
21
+ * Enable an element.
22
+ *
23
+ * Sets `disabled` property to `false` and removes `disabled` class
24
+ * if present.
25
+ */
26
+ $.fn.enable = function () {
12
27
  return this.prop('disabled', false).removeClass('disabled');
13
28
  };
14
- })( jQuery );
15
29
 
16
- (function( $ ){
17
- //uncheck an element
18
- $.fn.uncheck = function() {
30
+ /**
31
+ * Check an element.
32
+ *
33
+ * Sets `checked` property to `true`.
34
+ */
35
+ $.fn.check = function () {
36
+ return this.prop('checked', true);
37
+ };
38
+
39
+ /**
40
+ * Un-check an element.
41
+ *
42
+ * Sets `checked` property to `false`.
43
+ */
44
+ $.fn.uncheck = function () {
19
45
  return this.prop('checked', false);
20
46
  };
21
- })( jQuery );
22
47
 
23
- (function( $ ){
24
- //check an element
25
- $.fn.check = function() {
26
- return this.prop('checked', true);
48
+
49
+ /**
50
+ * Initialise Bootstrap tooltip on an element with presets. Takes title.
51
+ */
52
+ $.fn._tooltip = $.fn.tooltip;
53
+ $.fn.tooltip = function (options) {
54
+ this
55
+ ._tooltip('destroy')
56
+ ._tooltip($.extend({
57
+ container: 'body',
58
+ placement: 'left'
59
+ }, options));
27
60
  };
28
- })( jQuery );
29
61
 
30
- /**
31
- * Wiggle an element.
32
- *
33
- * Used for wiggling BLAST button.
34
- */
35
- (function ($) {
36
- $.fn.wiggle = function() {
62
+
63
+ /**
64
+ * Wiggle an element.
65
+ *
66
+ * Used for wiggling BLAST button.
67
+ */
68
+ $.fn.wiggle = function () {
37
69
  this.finish().effect("bounce", {
38
70
  direction: 'left',
39
71
  distance: 24,
40
72
  times: 4,
41
73
  }, 250);
42
74
  };
43
- }(jQuery));
44
75
 
45
- (function( $ ){
46
- //(pre-)check the only active database checkbox
47
- $.onedb = function(selector) {
48
- active_dbs = $(".databases input[type=checkbox]").not(":disabled")
49
- if (active_dbs.length == 1){
50
- active_dbs.check()
51
- }
52
- return active_dbs;
53
- };
54
- })( jQuery );
55
76
 
56
- (function ($) {
77
+ /**
78
+ * Check's every 100 ms if an element's value has changed. Triggers
79
+ * `change` event on the element if it has.
80
+ */
57
81
  $.fn.poll = function () {
58
82
  var that = this;
59
83
  var val = null;
@@ -109,6 +133,17 @@ if (!SS) {
109
133
  }).join('');
110
134
  };
111
135
 
136
+ /**
137
+ * Pre-check the only active database checkbox.
138
+ */
139
+ SS.onedb = function () {
140
+ var database_checkboxes = $(".databases input:checkbox");
141
+ if (database_checkboxes.length === 1) {
142
+ database_checkboxes.check();
143
+ }
144
+ };
145
+
146
+
112
147
  SS.generateGraphicalOverview = function () {
113
148
  $("[data-graphit='overview']").each(function () {
114
149
  var $this = $(this);
@@ -130,32 +165,27 @@ if (!SS) {
130
165
  $a
131
166
  .enable()
132
167
  .attr('href', SS.generateURI(sequence_ids, $a.data().databases))
133
- .tooltip('destroy')
134
168
  .tooltip({
135
- placement: 'left',
136
169
  title: num_hits + " hit(s)."
137
170
  });
138
171
  return;
139
172
  }
140
173
 
141
- if (num_hits == 0) {
142
- $a
143
- .tooltip('destroy')
144
- .tooltip({
145
- placement: 'left',
174
+ if (num_hits === 0) {
175
+ $a.tooltip({
146
176
  title: "No hit to download."
147
177
  });
148
178
  }
149
179
 
150
180
  if (num_hits > 30) {
151
- $a
152
- .tooltip('destroy')
153
- .tooltip({
154
- placement: 'left',
181
+ $a.tooltip({
155
182
  title: "Can't download more than 30 hits."
156
183
  });
157
184
  }
158
- $a.disable();
185
+
186
+ $a
187
+ .disable()
188
+ .removeAttr('href');
159
189
  };
160
190
 
161
191
  /* Update the FASTA downloader button's state appropriately.
@@ -177,30 +207,22 @@ if (!SS) {
177
207
  $a
178
208
  .enable()
179
209
  .attr('href', SS.generateURI(sequence_ids, $a.data().databases))
180
- .tooltip('destroy')
181
210
  .tooltip({
182
- placement: 'left',
183
211
  title: num_checked + " hit(s) selected."
184
212
  })
185
213
  .find('span').html(num_checked);
186
214
  return;
187
215
  }
188
216
 
189
- if (num_checked == 0) {
217
+ if (num_checked === 0) {
190
218
  $n.empty();
191
- $a
192
- .tooltip('destroy')
193
- .tooltip({
194
- placement: 'left',
219
+ $a.tooltip({
195
220
  title: "No hit selected."
196
221
  });
197
222
  }
198
223
 
199
224
  if (num_checked > 30) {
200
- $a
201
- .tooltip('destroy')
202
- .tooltip({
203
- placement: 'left',
225
+ $a.tooltip({
204
226
  title: "Can't download more than 30 hits."
205
227
  });
206
228
  }
@@ -228,11 +250,32 @@ if (!SS) {
228
250
  });
229
251
  };
230
252
 
231
- SS.setupTooltipsForPosLabels = function () {
253
+ SS.setupTooltips = function () {
232
254
  $('.pos-label').each(function () {
233
255
  $(this).tooltip({
234
- container: 'body',
235
- placement: 'right',
256
+ placement: 'right'
257
+ });
258
+ });
259
+
260
+ $('.downloads a').each(function () {
261
+ $(this).tooltip();
262
+ });
263
+ };
264
+
265
+ SS.setupDownloadLinks = function () {
266
+ $('.download').on('click', function (event) {
267
+ event.preventDefault();
268
+ event.stopPropagation();
269
+
270
+ if (event.target.disabled) return;
271
+
272
+ var url = this.href;
273
+ $.get(url)
274
+ .done(function (data) {
275
+ window.location.href = url;
276
+ })
277
+ .fail(function (jqXHR, status, error) {
278
+ SS.showErrorModal(jqXHR, function () {});
236
279
  });
237
280
  });
238
281
  };
@@ -246,7 +289,7 @@ if (!SS) {
246
289
  "&database_ids=" + database_ids + '&download=fasta';
247
290
 
248
291
  return url;
249
- },
292
+ };
250
293
 
251
294
  SS.showErrorModal = function (jqXHR, beforeShow) {
252
295
  setTimeout(function () {
@@ -258,7 +301,7 @@ if (!SS) {
258
301
  $("#error-no-response").modal();
259
302
  }
260
303
  }, 500);
261
- },
304
+ };
262
305
 
263
306
  SS.init = function () {
264
307
  this.$sequence = $('#sequence');
@@ -267,7 +310,6 @@ if (!SS) {
267
310
 
268
311
  SS.blast.init();
269
312
  };
270
-
271
313
  }()); //end SS module
272
314
 
273
315
  /**
@@ -498,7 +540,7 @@ $(document).ready(function(){
498
540
  reader.onerror = function (e) {
499
541
  // Couldn't read. Means dropped stuff wasn't FASTA file.
500
542
  dndError('dnd-format');
501
- }
543
+ };
502
544
  reader.readAsText(file);
503
545
  });
504
546
  // end drag-and-drop
@@ -522,10 +564,10 @@ $(document).ready(function(){
522
564
  // Handle clearing query sequences(s) when x button is pressed.
523
565
  $('#btn-sequence-clear').click(function (e) {
524
566
  $('#sequence').val("").focus();
525
- })
567
+ });
526
568
 
527
- // pre-select if only on db
528
- $.onedb();
569
+ // Pre-select if only one database available.
570
+ SS.onedb();
529
571
 
530
572
  // Handles the form submission when Ctrl+Enter is pressed anywhere on page
531
573
  $(document).bind("keydown", function (e) {
@@ -559,11 +601,11 @@ $(document).ready(function(){
559
601
  $('.databases').on('database_type_changed', function (event, type) {
560
602
  switch (type) {
561
603
  case 'protein':
562
- $('.databases.nucleotide input:checkbox').uncheck().disable();
604
+ $('.databases.nucleotide input:checkbox').disable();
563
605
  $('.databases.nucleotide .checkbox').addClass('disabled');
564
606
  break;
565
607
  case 'nucleotide':
566
- $('.databases.protein input:checkbox').uncheck().disable();
608
+ $('.databases.protein input:checkbox').disable();
567
609
  $('.databases.protein .checkbox').addClass('disabled');
568
610
  break;
569
611
  default:
@@ -666,7 +708,6 @@ $(document).ready(function(){
666
708
  SS.selectHit(this);
667
709
  });
668
710
 
669
-
670
711
  $('#blast').submit(function(){
671
712
  //parse AJAX URL
672
713
  var action = $(this).attr('action');
@@ -708,7 +749,8 @@ $(document).ready(function(){
708
749
  SS.updateDownloadFastaOfAllLink();
709
750
  SS.updateDownloadFastaOfSelectedLink();
710
751
  SS.updateSequenceViewerLinks();
711
- SS.setupTooltipsForPosLabels();
752
+ SS.setupTooltips();
753
+ SS.setupDownloadLinks();
712
754
 
713
755
  $('body').scrollspy({target: '.sidebar'});
714
756
 
@@ -1,33 +1,37 @@
1
1
  Gem::Specification.new do |s|
2
2
  # meta
3
3
  s.name = 'sequenceserver'
4
- s.version = '1.0.0-2'
5
- s.authors = ['Anurag Priyam', 'Ben J Woodcroft', 'Vivek Rai', 'Yannick Wurm']
4
+ s.version = '1.0.0-3'
5
+ s.authors = ['Anurag Priyam', 'Ben J Woodcroft',
6
+ 'Vivek Rai', 'Yannick Wurm']
6
7
  s.email = ['anurag08priyam@gmail.com', 'b.woodcroft@uq.edu.au']
7
8
  s.homepage = 'http://sequenceserver.com'
8
9
  s.license = 'SequenceServer (custom)'
9
10
 
10
11
  s.summary = 'BLAST search made easy!'
11
12
  s.description = <<DESC
12
- SequenceServer lets you rapidly set up a BLAST+ server with an intuitive user interface for use locally or over the web.
13
+ SequenceServer lets you rapidly set up a BLAST+ server with an intuitive user
14
+ interface for use locally or over the web.
13
15
  DESC
14
16
 
15
17
  # dependencies
16
- s.add_dependency('thin', '~> 1.6.2')
17
- s.add_dependency('sinatra', '~> 1.4.5')
18
- s.add_dependency('ox', '~> 2.1.1')
19
- s.add_dependency('slop', '~> 3.6.0')
20
-
21
- s.add_development_dependency('rack-test', '~> 0.6.2')
22
- s.add_development_dependency('rspec', '~> 2.8.0')
23
- s.add_development_dependency('rake', '~> 10.3.2')
24
- s.add_development_dependency('rubocop', '~> 0.26.1')
25
- s.add_development_dependency('capybara', '~> 2.4.4')
26
- s.add_development_dependency('capybara-webkit', '~> 1.3.0')
18
+ s.add_dependency('thin', '~> 1.6', '>= 1.6.2')
19
+ s.add_dependency('sinatra', '~> 1.4', '>= 1.4.5')
20
+ s.add_dependency('ox', '~> 2.1', '>= 2.1.1')
21
+ s.add_dependency('slop', '~> 3.6', '>= 3.6.0')
22
+
23
+ s.add_development_dependency('rack-test', '~> 0.6', '>= 0.6.2')
24
+ s.add_development_dependency('rspec', '~> 2.8', '>= 2.8.0')
25
+ s.add_development_dependency('rake', '~> 10.3', '>= 10.3.2')
26
+ s.add_development_dependency('rubocop', '~> 0.28', '>= 0.28.0')
27
+ s.add_development_dependency('capybara', '~> 2.4', '>= 2.4.4')
28
+ s.add_development_dependency('capybara-webkit', '~> 1.3', '>= 1.3.0')
29
+ s.add_development_dependency('codeclimate-test-reporter')
27
30
 
28
31
  # gem
29
- s.files = Dir['lib/**/*'] + Dir['views/**/*'] + Dir['public/**/*'] + Dir['tests/**/*']
30
- s.files = s.files + ['config.ru', 'Gemfile', 'sequenceserver.gemspec']
32
+ s.files = Dir['lib/**/*'] + Dir['views/**/*'] + Dir['public/**/*']
33
+ s.files = s.files + ['config.ru'] + Dir['tests/**/*']
34
+ s.files = s.files + ['Gemfile', 'sequenceserver.gemspec']
31
35
  s.files = s.files + ['LICENSE.txt', 'LICENSE.Apache.txt', 'README.md']
32
36
  s.executables = ['sequenceserver']
33
37
  s.require_paths = ['lib']
data/views/400.erb CHANGED
@@ -5,7 +5,7 @@
5
5
  <div
6
6
  class="modal-header">
7
7
  <h3>
8
- Oops! BLAST Failed
8
+ Oops! Request Failed
9
9
  </h3>
10
10
  </div>
11
11
 
@@ -19,6 +19,7 @@
19
19
  <div
20
20
  class="modal-footer">
21
21
  <button
22
+ type="button"
22
23
  class="btn btn-default btn-danger"
23
24
  data-dismiss="modal">
24
25
  Close
data/views/500.erb CHANGED
@@ -32,7 +32,12 @@
32
32
 
33
33
  <div
34
34
  class="modal-footer">
35
- <button class="btn btn-danger" data-dismiss="modal">Done</button>
35
+ <button
36
+ type="button"
37
+ class="btn btn-danger"
38
+ data-dismiss="modal">
39
+ Done
40
+ </button>
36
41
  </div>
37
42
  </div>
38
43
  </div>
data/views/result.erb CHANGED
@@ -16,8 +16,9 @@
16
16
  </small>
17
17
  </h3>
18
18
  <span
19
- class="label label-reset cursor-pointer pos-label"
20
- title="<%= "Query #{query.number}." %>">
19
+ class="label label-reset pos-label"
20
+ title="<%= "Query #{query.number}." %>"
21
+ data-toggle="tooltip">
21
22
  <%= "#{query.number} / #{report.queries.length}"%>
22
23
  </span>
23
24
  </div>
@@ -47,8 +48,8 @@
47
48
  <tr>
48
49
  <td class="text-left"><%= h + 1 %>.</td>
49
50
  <td> <a href="<%="#Query_#{query.number}_hit_#{hit.number}"%>"><%= "#{hit.id}" %></a> </td>
50
- <td class="text-right"><%= prettify_score hit.score %></td>
51
- <td class="text-right"><%= prettify_evalue hit.evalue %></td>
51
+ <td class="text-right"><%= prettify_float hit.score %></td>
52
+ <td class="text-right"><%= prettify_float hit.evalue %></td>
52
53
  </tr>
53
54
  <% end %>
54
55
  </tbody>
@@ -71,8 +72,9 @@
71
72
  </span>
72
73
  </h4>
73
74
  <span
74
- class="label label-reset cursor-pointer pos-label"
75
- title="<%= "Query #{query.number}. Hit #{hit.number}/#{query.hits.length}." %>">
75
+ class="label label-reset pos-label"
76
+ title="<%= "Query #{query.number}. Hit #{hit.number} of #{query.hits.length}." %>"
77
+ data-toggle="tooltip">
76
78
  <%= "#{hit.number} / #{query.hits.length}"%>
77
79
  </span>
78
80
  </div>
@@ -91,19 +93,19 @@
91
93
  <table
92
94
  class="table table-condensed hsp-stats">
93
95
  <thead>
94
- <% report.filter_hsp_stats(hsp).each do |key, value| %>
96
+ <% hsp.stats.keys.each do |key| %>
95
97
  <th> <%= key %> </th>
96
98
  <% end %>
97
99
  </thead>
98
100
  <tbody>
99
101
  <tr>
100
- <% report.filter_hsp_stats(hsp).each do |key, value| %>
101
- <td> <%= value %> </th>
102
+ <% hsp.stats.values.each do |value| %>
103
+ <td> <%= prettify value %> </th>
102
104
  <% end %>
103
105
  </tr>
104
106
  </tbody>
105
107
  </table>
106
- <div class="alignment"><%= report.pp_hsp hsp%></div>
108
+ <div class="alignment"><%= hsp.pp %></div>
107
109
  </div>
108
110
  <% end %>
109
111
  <div class="hit-links text-right">
@@ -177,32 +179,50 @@ Total letters in queried databases: <%= report.stats[1] %>
177
179
  </h4>
178
180
  </div>
179
181
  <ul
180
- class="list-unstyled list-padded">
182
+ class="downloads list-unstyled list-padded">
181
183
  <li>
182
184
  <a
183
- href="#"
184
- class="download-fasta-of-all"
185
+ class="download download-fasta-of-all disabled"
185
186
  data-databases="<%= report.querydb.map(&:id).join(' ') %>">
186
187
  FASTA of all hits
187
188
  </a>
188
189
  </li>
189
190
  <li>
190
191
  <a
191
- class="download-fasta-of-selected disabled"
192
+ class="download download-fasta-of-selected disabled"
192
193
  data-databases="<%= report.querydb.map(&:id).join(' ') %>">
193
194
  FASTA of <span class="text-bold"></span> selected hit(s)
194
195
  </a>
195
196
  </li>
196
197
  <li>
197
198
  <a
198
- class="disabled">
199
- XML report (coming soon)
199
+ class="download"
200
+ title="12 columns: query and subject ID; alignment length,
201
+ mismatches, gaps, identity, start and end coordinates,
202
+ e value and bitscore."
203
+ data-toggle="tooltip"
204
+ href="get_report/?report=<%= File.basename(report.archive_file) %>&format=tsv_commented&type=std">
205
+ Standard tabular report
200
206
  </a>
201
207
  </li>
202
208
  <li>
203
209
  <a
204
- class="disabled">
205
- TSV report (coming soon)
210
+ class="download"
211
+ title="44 columns: query and subject ID, GI, accessions,
212
+ and length; alignment details; taxonomy details of subject
213
+ sequence(s) and query coverage per subject and per HSP."
214
+ data-toggle="tooltip"
215
+ href="get_report/?report=<%= File.basename(report.archive_file) %>&format=tsv_commented&download=true&specifiers=qseqid qgi qacc sseqid sallseqid sgi sallgi sacc sallacc qstart qend sstart send qseq sseq evalue bitscore score length length pident nident mismatch positive gapopen gaps ppos frames qframe hframe btop staxids sscinames scomnames sblastnames sskingdoms stitle salltitles sstrand qcovs qcovhsp&type=full">
216
+ Full tabular report
217
+ </a>
218
+ </li>
219
+ <li>
220
+ <a
221
+ class="download"
222
+ title="Results in XML format."
223
+ data-toggle="tooltip"
224
+ href="get_report/?report=<%= File.basename(report.archive_file) %>&format=xml&type=full">
225
+ Full XML report
206
226
  </a>
207
227
  </li>
208
228
  </ul>