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.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/README.md +18 -4
- data/bin/sequenceserver +219 -124
- data/lib/sequenceserver.rb +156 -153
- data/lib/sequenceserver/blast.rb +163 -432
- data/lib/sequenceserver/blast/exceptions.rb +27 -0
- data/lib/sequenceserver/blast/hit.rb +32 -0
- data/lib/sequenceserver/blast/hsp.rb +260 -0
- data/lib/sequenceserver/blast/query.rb +28 -0
- data/lib/sequenceserver/blast/report.rb +123 -0
- data/lib/sequenceserver/config.rb +94 -0
- data/lib/sequenceserver/database.rb +89 -49
- data/lib/sequenceserver/exceptions.rb +154 -0
- data/lib/sequenceserver/links.rb +1 -1
- data/lib/sequenceserver/logger.rb +5 -7
- data/lib/sequenceserver/sequence.rb +40 -39
- data/public/css/bootstrap.min.css +5 -7
- data/public/css/custom.css +28 -27
- data/public/dist/css/sequenceserver.min.css +1 -0
- data/public/dist/css/sequenceserver.min.css.gz +0 -0
- data/public/dist/fonts/FontAwesome.otf +0 -0
- data/public/dist/fonts/fontawesome-webfont.eot +0 -0
- data/public/dist/fonts/fontawesome-webfont.svg +565 -0
- data/public/dist/fonts/fontawesome-webfont.ttf +0 -0
- data/public/dist/fonts/fontawesome-webfont.woff +0 -0
- data/public/dist/fonts/fontawesome-webfont.woff2 +0 -0
- data/public/dist/js/sequenceserver.min.js +12 -0
- data/public/dist/js/sequenceserver.min.js.gz +0 -0
- data/public/dist/js/shims/FlashCanvas/canvas2png.js +1 -0
- data/public/dist/js/shims/FlashCanvas/flashcanvas.js +1 -0
- data/public/dist/js/shims/FlashCanvas/flashcanvas.swf +0 -0
- data/public/dist/js/shims/FlashCanvasPro/canvas2png.js +1 -0
- data/public/dist/js/shims/FlashCanvasPro/flash10canvas.swf +0 -0
- data/public/dist/js/shims/FlashCanvasPro/flash9canvas.swf +0 -0
- data/public/dist/js/shims/FlashCanvasPro/flashcanvas.js +1 -0
- data/public/dist/js/shims/canvas-blob.js +1 -0
- data/public/dist/js/shims/color-picker.js +2 -0
- data/public/dist/js/shims/combos/1.js +6 -0
- data/public/dist/js/shims/combos/10.js +2 -0
- data/public/dist/js/shims/combos/11.js +2 -0
- data/public/dist/js/shims/combos/12.js +6 -0
- data/public/dist/js/shims/combos/13.js +1 -0
- data/public/dist/js/shims/combos/14.js +1 -0
- data/public/dist/js/shims/combos/15.js +2 -0
- data/public/dist/js/shims/combos/16.js +7 -0
- data/public/dist/js/shims/combos/17.js +2 -0
- data/public/dist/js/shims/combos/18.js +3 -0
- data/public/dist/js/shims/combos/2.js +7 -0
- data/public/dist/js/shims/combos/21.js +2 -0
- data/public/dist/js/shims/combos/22.js +1 -0
- data/public/dist/js/shims/combos/23.js +6 -0
- data/public/dist/js/shims/combos/25.js +2 -0
- data/public/dist/js/shims/combos/27.js +1 -0
- data/public/dist/js/shims/combos/28.js +1 -0
- data/public/dist/js/shims/combos/29.js +1 -0
- data/public/dist/js/shims/combos/3.js +1 -0
- data/public/dist/js/shims/combos/30.js +2 -0
- data/public/dist/js/shims/combos/31.js +1 -0
- data/public/dist/js/shims/combos/33.js +1 -0
- data/public/dist/js/shims/combos/34.js +1 -0
- data/public/dist/js/shims/combos/4.js +1 -0
- data/public/dist/js/shims/combos/5.js +2 -0
- data/public/dist/js/shims/combos/6.js +2 -0
- data/public/dist/js/shims/combos/7.js +7 -0
- data/public/dist/js/shims/combos/8.js +7 -0
- data/public/dist/js/shims/combos/9.js +2 -0
- data/public/dist/js/shims/combos/97.js +1 -0
- data/public/dist/js/shims/combos/98.js +1 -0
- data/public/dist/js/shims/combos/99.js +1 -0
- data/public/dist/js/shims/details.js +1 -0
- data/public/dist/js/shims/dom-extend.js +1 -0
- data/public/dist/js/shims/es5.js +1 -0
- data/public/dist/js/shims/es6.js +1 -0
- data/public/dist/js/shims/excanvas.js +1 -0
- data/public/dist/js/shims/filereader-xhr.js +1 -0
- data/public/dist/js/shims/form-combat.js +1 -0
- data/public/dist/js/shims/form-core.js +1 -0
- data/public/dist/js/shims/form-datalist-lazy.js +1 -0
- data/public/dist/js/shims/form-datalist.js +1 -0
- data/public/dist/js/shims/form-fixrangechange.js +1 -0
- data/public/dist/js/shims/form-inputmode.js +1 -0
- data/public/dist/js/shims/form-message.js +1 -0
- data/public/dist/js/shims/form-native-extend.js +1 -0
- data/public/dist/js/shims/form-number-date-api.js +1 -0
- data/public/dist/js/shims/form-number-date-ui.js +1 -0
- data/public/dist/js/shims/form-shim-extend.js +1 -0
- data/public/dist/js/shims/form-shim-extend2.js +1 -0
- data/public/dist/js/shims/form-validation.js +1 -0
- data/public/dist/js/shims/form-validators.js +1 -0
- data/public/dist/js/shims/forms-picker.js +1 -0
- data/public/dist/js/shims/geolocation.js +1 -0
- data/public/dist/js/shims/i18n/formcfg-ar.js +1 -0
- data/public/dist/js/shims/i18n/formcfg-ch-CN.js +1 -0
- data/public/dist/js/shims/i18n/formcfg-cs.js +1 -0
- data/public/dist/js/shims/i18n/formcfg-de.js +1 -0
- data/public/dist/js/shims/i18n/formcfg-el.js +1 -0
- data/public/dist/js/shims/i18n/formcfg-en.js +1 -0
- data/public/dist/js/shims/i18n/formcfg-es.js +1 -0
- data/public/dist/js/shims/i18n/formcfg-fa.js +1 -0
- data/public/dist/js/shims/i18n/formcfg-fr.js +1 -0
- data/public/dist/js/shims/i18n/formcfg-he.js +1 -0
- data/public/dist/js/shims/i18n/formcfg-hi.js +1 -0
- data/public/dist/js/shims/i18n/formcfg-hu.js +1 -0
- data/public/dist/js/shims/i18n/formcfg-it.js +1 -0
- data/public/dist/js/shims/i18n/formcfg-ja.js +1 -0
- data/public/dist/js/shims/i18n/formcfg-lt.js +1 -0
- data/public/dist/js/shims/i18n/formcfg-nl.js +1 -0
- data/public/dist/js/shims/i18n/formcfg-pl.js +1 -0
- data/public/dist/js/shims/i18n/formcfg-pt-BR.js +1 -0
- data/public/dist/js/shims/i18n/formcfg-pt-PT.js +1 -0
- data/public/dist/js/shims/i18n/formcfg-pt.js +1 -0
- data/public/dist/js/shims/i18n/formcfg-ru.js +1 -0
- data/public/dist/js/shims/i18n/formcfg-sv.js +1 -0
- data/public/dist/js/shims/i18n/formcfg-zh-CN.js +1 -0
- data/public/dist/js/shims/i18n/formcfg-zh-TW.js +1 -0
- data/public/dist/js/shims/jme/alternate-media.js +1 -0
- data/public/dist/js/shims/jme/base.js +1 -0
- data/public/dist/js/shims/jme/controls.css +1 -0
- data/public/dist/js/shims/jme/jme.eot +0 -0
- data/public/dist/js/shims/jme/jme.svg +36 -0
- data/public/dist/js/shims/jme/jme.ttf +0 -0
- data/public/dist/js/shims/jme/jme.woff +0 -0
- data/public/dist/js/shims/jme/mediacontrols-lazy.js +1 -0
- data/public/dist/js/shims/jme/mediacontrols.js +1 -0
- data/public/dist/js/shims/jme/playlist.js +1 -0
- data/public/dist/js/shims/jpicker/images/AlphaBar.png +0 -0
- data/public/dist/js/shims/jpicker/images/Bars.png +0 -0
- data/public/dist/js/shims/jpicker/images/Maps.png +0 -0
- data/public/dist/js/shims/jpicker/images/NoColor.png +0 -0
- data/public/dist/js/shims/jpicker/images/bar-opacity.png +0 -0
- data/public/dist/js/shims/jpicker/images/map-opacity.png +0 -0
- data/public/dist/js/shims/jpicker/images/mappoint.gif +0 -0
- data/public/dist/js/shims/jpicker/images/picker.gif +0 -0
- data/public/dist/js/shims/jpicker/images/preview-opacity.png +0 -0
- data/public/dist/js/shims/jpicker/images/rangearrows.gif +0 -0
- data/public/dist/js/shims/jpicker/jpicker.css +1 -0
- data/public/dist/js/shims/matchMedia.js +3 -0
- data/public/dist/js/shims/mediacapture-picker.js +1 -0
- data/public/dist/js/shims/mediacapture.js +1 -0
- data/public/dist/js/shims/mediaelement-core.js +1 -0
- data/public/dist/js/shims/mediaelement-debug.js +1 -0
- data/public/dist/js/shims/mediaelement-jaris.js +1 -0
- data/public/dist/js/shims/mediaelement-native-fix.js +1 -0
- data/public/dist/js/shims/mediaelement-yt.js +1 -0
- data/public/dist/js/shims/moxie/flash/Moxie.cdn.swf +0 -0
- data/public/dist/js/shims/moxie/flash/Moxie.min.swf +0 -0
- data/public/dist/js/shims/moxie/js/moxie-html4.js +3 -0
- data/public/dist/js/shims/moxie/js/moxie-swf.js +2 -0
- data/public/dist/js/shims/picture.js +1 -0
- data/public/dist/js/shims/plugins/jquery.ui.position.js +11 -0
- data/public/dist/js/shims/range-ui.js +1 -0
- data/public/dist/js/shims/sizzle.js +11 -0
- data/public/dist/js/shims/sticky.js +1 -0
- data/public/dist/js/shims/styles/color-picker.png +0 -0
- data/public/dist/js/shims/styles/forms-ext.css +1 -0
- data/public/dist/js/shims/styles/forms-picker.css +1 -0
- data/public/dist/js/shims/styles/progress.gif +0 -0
- data/public/dist/js/shims/styles/progress.png +0 -0
- data/public/dist/js/shims/styles/shim-ext.css +1 -0
- data/public/dist/js/shims/styles/shim.css +1 -0
- data/public/dist/js/shims/styles/transparent.png +0 -0
- data/public/dist/js/shims/styles/widget.eot +0 -0
- data/public/dist/js/shims/styles/widget.svg +12 -0
- data/public/dist/js/shims/styles/widget.ttf +0 -0
- data/public/dist/js/shims/styles/widget.woff +0 -0
- data/public/dist/js/shims/swf/JarisFLVPlayer.swf +0 -0
- data/public/dist/js/shims/swfmini-embed.js +1 -0
- data/public/dist/js/shims/swfmini.js +6 -0
- data/public/dist/js/shims/track-ui.js +1 -0
- data/public/dist/js/shims/track.js +1 -0
- data/public/dist/js/shims/url.js +1 -0
- data/public/dist/js/shims/usermedia-core.js +1 -0
- data/public/dist/js/shims/usermedia-shim.js +1 -0
- data/public/dist/js/webshims/shims/FlashCanvas/canvas2png.js +1 -0
- data/public/dist/js/webshims/shims/FlashCanvas/flashcanvas.js +1 -0
- data/public/dist/js/webshims/shims/FlashCanvas/flashcanvas.swf +0 -0
- data/public/dist/js/webshims/shims/FlashCanvasPro/canvas2png.js +1 -0
- data/public/dist/js/webshims/shims/FlashCanvasPro/flash10canvas.swf +0 -0
- data/public/dist/js/webshims/shims/FlashCanvasPro/flash9canvas.swf +0 -0
- data/public/dist/js/webshims/shims/FlashCanvasPro/flashcanvas.js +1 -0
- data/public/dist/js/webshims/shims/canvas-blob.js +1 -0
- data/public/dist/js/webshims/shims/color-picker.js +2 -0
- data/public/dist/js/webshims/shims/combos/1.js +6 -0
- data/public/dist/js/webshims/shims/combos/10.js +2 -0
- data/public/dist/js/webshims/shims/combos/11.js +2 -0
- data/public/dist/js/webshims/shims/combos/12.js +6 -0
- data/public/dist/js/webshims/shims/combos/13.js +1 -0
- data/public/dist/js/webshims/shims/combos/14.js +1 -0
- data/public/dist/js/webshims/shims/combos/15.js +2 -0
- data/public/dist/js/webshims/shims/combos/16.js +7 -0
- data/public/dist/js/webshims/shims/combos/17.js +2 -0
- data/public/dist/js/webshims/shims/combos/18.js +3 -0
- data/public/dist/js/webshims/shims/combos/2.js +7 -0
- data/public/dist/js/webshims/shims/combos/21.js +2 -0
- data/public/dist/js/webshims/shims/combos/22.js +1 -0
- data/public/dist/js/webshims/shims/combos/23.js +6 -0
- data/public/dist/js/webshims/shims/combos/25.js +2 -0
- data/public/dist/js/webshims/shims/combos/27.js +1 -0
- data/public/dist/js/webshims/shims/combos/28.js +1 -0
- data/public/dist/js/webshims/shims/combos/29.js +1 -0
- data/public/dist/js/webshims/shims/combos/3.js +1 -0
- data/public/dist/js/webshims/shims/combos/30.js +2 -0
- data/public/dist/js/webshims/shims/combos/31.js +1 -0
- data/public/dist/js/webshims/shims/combos/33.js +1 -0
- data/public/dist/js/webshims/shims/combos/34.js +1 -0
- data/public/dist/js/webshims/shims/combos/4.js +1 -0
- data/public/dist/js/webshims/shims/combos/5.js +2 -0
- data/public/dist/js/webshims/shims/combos/6.js +2 -0
- data/public/dist/js/webshims/shims/combos/7.js +7 -0
- data/public/dist/js/webshims/shims/combos/8.js +7 -0
- data/public/dist/js/webshims/shims/combos/9.js +2 -0
- data/public/dist/js/webshims/shims/combos/97.js +1 -0
- data/public/dist/js/webshims/shims/combos/98.js +1 -0
- data/public/dist/js/webshims/shims/combos/99.js +1 -0
- data/public/dist/js/webshims/shims/details.js +1 -0
- data/public/dist/js/webshims/shims/dom-extend.js +1 -0
- data/public/dist/js/webshims/shims/es5.js +1 -0
- data/public/dist/js/webshims/shims/es6.js +1 -0
- data/public/dist/js/webshims/shims/excanvas.js +1 -0
- data/public/dist/js/webshims/shims/filereader-xhr.js +1 -0
- data/public/dist/js/webshims/shims/form-combat.js +1 -0
- data/public/dist/js/webshims/shims/form-core.js +1 -0
- data/public/dist/js/webshims/shims/form-datalist-lazy.js +1 -0
- data/public/dist/js/webshims/shims/form-datalist.js +1 -0
- data/public/dist/js/webshims/shims/form-fixrangechange.js +1 -0
- data/public/dist/js/webshims/shims/form-inputmode.js +1 -0
- data/public/dist/js/webshims/shims/form-message.js +1 -0
- data/public/dist/js/webshims/shims/form-native-extend.js +1 -0
- data/public/dist/js/webshims/shims/form-number-date-api.js +1 -0
- data/public/dist/js/webshims/shims/form-number-date-ui.js +1 -0
- data/public/dist/js/webshims/shims/form-shim-extend.js +1 -0
- data/public/dist/js/webshims/shims/form-shim-extend2.js +1 -0
- data/public/dist/js/webshims/shims/form-validation.js +1 -0
- data/public/dist/js/webshims/shims/form-validators.js +1 -0
- data/public/dist/js/webshims/shims/forms-picker.js +1 -0
- data/public/dist/js/webshims/shims/geolocation.js +1 -0
- data/public/dist/js/webshims/shims/i18n/formcfg-ar.js +1 -0
- data/public/dist/js/webshims/shims/i18n/formcfg-ch-CN.js +1 -0
- data/public/dist/js/webshims/shims/i18n/formcfg-cs.js +1 -0
- data/public/dist/js/webshims/shims/i18n/formcfg-de.js +1 -0
- data/public/dist/js/webshims/shims/i18n/formcfg-el.js +1 -0
- data/public/dist/js/webshims/shims/i18n/formcfg-en.js +1 -0
- data/public/dist/js/webshims/shims/i18n/formcfg-es.js +1 -0
- data/public/dist/js/webshims/shims/i18n/formcfg-fa.js +1 -0
- data/public/dist/js/webshims/shims/i18n/formcfg-fr.js +1 -0
- data/public/dist/js/webshims/shims/i18n/formcfg-he.js +1 -0
- data/public/dist/js/webshims/shims/i18n/formcfg-hi.js +1 -0
- data/public/dist/js/webshims/shims/i18n/formcfg-hu.js +1 -0
- data/public/dist/js/webshims/shims/i18n/formcfg-it.js +1 -0
- data/public/dist/js/webshims/shims/i18n/formcfg-ja.js +1 -0
- data/public/dist/js/webshims/shims/i18n/formcfg-lt.js +1 -0
- data/public/dist/js/webshims/shims/i18n/formcfg-nl.js +1 -0
- data/public/dist/js/webshims/shims/i18n/formcfg-pl.js +1 -0
- data/public/dist/js/webshims/shims/i18n/formcfg-pt-BR.js +1 -0
- data/public/dist/js/webshims/shims/i18n/formcfg-pt-PT.js +1 -0
- data/public/dist/js/webshims/shims/i18n/formcfg-pt.js +1 -0
- data/public/dist/js/webshims/shims/i18n/formcfg-ru.js +1 -0
- data/public/dist/js/webshims/shims/i18n/formcfg-sv.js +1 -0
- data/public/dist/js/webshims/shims/i18n/formcfg-zh-CN.js +1 -0
- data/public/dist/js/webshims/shims/i18n/formcfg-zh-TW.js +1 -0
- data/public/dist/js/webshims/shims/jme/alternate-media.js +1 -0
- data/public/dist/js/webshims/shims/jme/base.js +1 -0
- data/public/dist/js/webshims/shims/jme/controls.css +1 -0
- data/public/dist/js/webshims/shims/jme/jme.eot +0 -0
- data/public/dist/js/webshims/shims/jme/jme.svg +36 -0
- data/public/dist/js/webshims/shims/jme/jme.ttf +0 -0
- data/public/dist/js/webshims/shims/jme/jme.woff +0 -0
- data/public/dist/js/webshims/shims/jme/mediacontrols-lazy.js +1 -0
- data/public/dist/js/webshims/shims/jme/mediacontrols.js +1 -0
- data/public/dist/js/webshims/shims/jme/playlist.js +1 -0
- data/public/dist/js/webshims/shims/jpicker/images/AlphaBar.png +0 -0
- data/public/dist/js/webshims/shims/jpicker/images/Bars.png +0 -0
- data/public/dist/js/webshims/shims/jpicker/images/Maps.png +0 -0
- data/public/dist/js/webshims/shims/jpicker/images/NoColor.png +0 -0
- data/public/dist/js/webshims/shims/jpicker/images/bar-opacity.png +0 -0
- data/public/dist/js/webshims/shims/jpicker/images/map-opacity.png +0 -0
- data/public/dist/js/webshims/shims/jpicker/images/mappoint.gif +0 -0
- data/public/dist/js/webshims/shims/jpicker/images/picker.gif +0 -0
- data/public/dist/js/webshims/shims/jpicker/images/preview-opacity.png +0 -0
- data/public/dist/js/webshims/shims/jpicker/images/rangearrows.gif +0 -0
- data/public/dist/js/webshims/shims/jpicker/jpicker.css +1 -0
- data/public/dist/js/webshims/shims/matchMedia.js +3 -0
- data/public/dist/js/webshims/shims/mediacapture-picker.js +1 -0
- data/public/dist/js/webshims/shims/mediacapture.js +1 -0
- data/public/dist/js/webshims/shims/mediaelement-core.js +1 -0
- data/public/dist/js/webshims/shims/mediaelement-debug.js +1 -0
- data/public/dist/js/webshims/shims/mediaelement-jaris.js +1 -0
- data/public/dist/js/webshims/shims/mediaelement-native-fix.js +1 -0
- data/public/dist/js/webshims/shims/mediaelement-yt.js +1 -0
- data/public/dist/js/webshims/shims/moxie/flash/Moxie.cdn.swf +0 -0
- data/public/dist/js/webshims/shims/moxie/flash/Moxie.min.swf +0 -0
- data/public/dist/js/webshims/shims/moxie/js/moxie-html4.js +3 -0
- data/public/dist/js/webshims/shims/moxie/js/moxie-swf.js +2 -0
- data/public/dist/js/webshims/shims/picture.js +1 -0
- data/public/dist/js/webshims/shims/plugins/jquery.ui.position.js +11 -0
- data/public/dist/js/webshims/shims/range-ui.js +1 -0
- data/public/dist/js/webshims/shims/sizzle.js +11 -0
- data/public/dist/js/webshims/shims/sticky.js +1 -0
- data/public/dist/js/webshims/shims/styles/color-picker.png +0 -0
- data/public/dist/js/webshims/shims/styles/forms-ext.css +1 -0
- data/public/dist/js/webshims/shims/styles/forms-picker.css +1 -0
- data/public/dist/js/webshims/shims/styles/progress.gif +0 -0
- data/public/dist/js/webshims/shims/styles/progress.png +0 -0
- data/public/dist/js/webshims/shims/styles/shim-ext.css +1 -0
- data/public/dist/js/webshims/shims/styles/shim.css +1 -0
- data/public/dist/js/webshims/shims/styles/transparent.png +0 -0
- data/public/dist/js/webshims/shims/styles/widget.eot +0 -0
- data/public/dist/js/webshims/shims/styles/widget.svg +12 -0
- data/public/dist/js/webshims/shims/styles/widget.ttf +0 -0
- data/public/dist/js/webshims/shims/styles/widget.woff +0 -0
- data/public/dist/js/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
- data/public/dist/js/webshims/shims/swfmini-embed.js +1 -0
- data/public/dist/js/webshims/shims/swfmini.js +6 -0
- data/public/dist/js/webshims/shims/track-ui.js +1 -0
- data/public/dist/js/webshims/shims/track.js +1 -0
- data/public/dist/js/webshims/shims/url.js +1 -0
- data/public/dist/js/webshims/shims/usermedia-core.js +1 -0
- data/public/dist/js/webshims/shims/usermedia-shim.js +1 -0
- data/public/js/bootstrap.min.js +3 -8
- data/public/js/jquery-ui.min.js +6 -0
- data/public/js/jquery.min.js +4 -0
- data/public/js/jquery.t.js +4 -4
- data/public/js/sequenceserver.blast.js +20 -18
- data/public/js/sequenceserver.js +116 -74
- data/sequenceserver.gemspec +20 -16
- data/views/400.erb +2 -1
- data/views/500.erb +6 -1
- data/views/result.erb +38 -18
- data/views/search.erb +49 -32
- metadata +389 -11
- data/public/img/glyphicons-halflings-white.png +0 -0
- data/public/img/glyphicons-halflings.png +0 -0
- data/public/js/jquery-ui.js +0 -14987
- data/public/js/jquery.js +0 -5
- data/public/js/jquery.scrollspy.js +0 -74
- data/public/sequence.min.js +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ddd56505296b6813bedb5e400c5d2fd44bb9fcf3
|
4
|
+
data.tar.gz: 126f3e127d5d3a1eadfac6bf7940d0ec08875997
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9207f4705a670d0b4a652d4b0a95c17910ebe9e296209d033914e56bd3c2119fad1406ca84c4f3d7515a49c3a2ebead11b9482fd4a0c2743632ea7d196d08f91
|
7
|
+
data.tar.gz: 372f45058b21fdff4d7b922efc1c8e51eb358eef9cd2d9cb10e8ecbed943966d1c82d366e0acc9d55e795b2129bc602a2686900269c337373b195224f0c7b960
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,7 +1,21 @@
|
|
1
|
-
|
1
|
+
[![build status](https://secure.travis-ci.org/yannickwurm/sequenceserver.png?branch=master)](https://travis-ci.org/yannickwurm/sequenceserver)
|
2
|
+
[![Code Climate](https://codeclimate.com/github/yannickwurm/sequenceserver/badges/gpa.svg)](https://codeclimate.com/github/yannickwurm/sequenceserver)
|
3
|
+
[![Test Coverage](https://codeclimate.com/github/yannickwurm/sequenceserver/badges/coverage.svg)](https://codeclimate.com/github/yannickwurm/sequenceserver)
|
4
|
+
[![Gitter chat](https://badges.gitter.im/gitterHQ/gitter.png)](https://gitter.im/yannickwurm/sequenceserver)
|
2
5
|
|
3
|
-
|
6
|
+
# SequenceServer - BLAST searching made easy!
|
4
7
|
|
5
|
-
|
8
|
+
SequenceServer lets you rapidly set up a BLAST+ server with an intuitive user
|
9
|
+
interface for use locally or over the web.
|
10
|
+
|
11
|
+
## Installation
|
12
|
+
|
13
|
+
Please see http://www.sequenceserver.com
|
14
|
+
|
15
|
+
## Contributors
|
6
16
|
|
7
|
-
|
17
|
+
* Anurag Priyam - [email](mailto:anurag08priyam@gmail.com) | [@yeban](//twitter.com/yeban)
|
18
|
+
* [Vivek Rai](http://vivekiitkgp.github.io/)
|
19
|
+
* Ben Woodcroft
|
20
|
+
* Yannick Wurm - [http://wurmlab.github.io](http://wurmlab.github.io) |
|
21
|
+
[@yannick__](//twitter.com/yannick__)
|
data/bin/sequenceserver
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
require 'readline'
|
3
|
+
require 'English'
|
3
4
|
require 'slop'
|
4
5
|
|
5
6
|
ENV['RACK_ENV'] ||= 'production'
|
@@ -46,133 +47,195 @@ used to create BLAST+ databases.
|
|
46
47
|
BANNER
|
47
48
|
|
48
49
|
on 'c', 'config_file=',
|
49
|
-
|
50
|
-
|
50
|
+
'Use the given configuration file',
|
51
|
+
:argument => true
|
52
|
+
on 'config=',
|
53
|
+
'Same as --config_file (deprecated)',
|
54
|
+
:argument => true
|
51
55
|
|
52
56
|
on 'b', 'bin=',
|
53
|
-
|
54
|
-
|
57
|
+
'Load BLAST+ binaries from this directory',
|
58
|
+
:argument => true
|
55
59
|
|
56
60
|
on 'd', 'database_dir=',
|
57
|
-
|
58
|
-
|
61
|
+
'Read FASTA and BLAST database from this directory',
|
62
|
+
:argument => true
|
59
63
|
|
60
64
|
on 'n', 'num_threads=',
|
61
|
-
|
62
|
-
|
63
|
-
#:as => Integer
|
65
|
+
'Number of threads to use to run a BLAST search',
|
66
|
+
:argument => true
|
64
67
|
|
65
68
|
on 'r', 'require=',
|
66
|
-
|
67
|
-
|
69
|
+
'Load extension from this file',
|
70
|
+
:argument => true
|
68
71
|
|
69
72
|
on 'h', 'host=',
|
70
|
-
|
71
|
-
|
73
|
+
'Host to run SequenceServer on',
|
74
|
+
:argument => true
|
72
75
|
|
73
76
|
on 'p', 'port=',
|
74
|
-
|
75
|
-
|
77
|
+
'Port to run SequenceServer on',
|
78
|
+
:argument => true
|
76
79
|
|
77
80
|
on 's', 'set',
|
78
|
-
|
81
|
+
'Set configuration value in default or given config file'
|
79
82
|
|
80
83
|
on 'm', 'make-blast-databases',
|
81
|
-
|
84
|
+
'Create BLAST databases'
|
82
85
|
|
83
86
|
on 'l', 'list_databases',
|
84
|
-
|
87
|
+
'List BLAST databases'
|
85
88
|
|
86
89
|
on 'u', 'list-unformatted-fastas',
|
87
|
-
|
90
|
+
'List unformatted FASTA files'
|
88
91
|
|
89
92
|
on 'i', 'interactive',
|
90
|
-
|
93
|
+
'Run SequenceServer in interactive mode'
|
91
94
|
|
92
95
|
on 'D', 'devel',
|
93
|
-
|
96
|
+
'Start SequenceServer in development mode'
|
94
97
|
|
95
98
|
on '-v', '--version',
|
96
|
-
|
99
|
+
'Print version number of SequenceServer that will be loaded'
|
97
100
|
|
98
101
|
on '-h', '--help',
|
99
|
-
|
102
|
+
'Display this help message'
|
103
|
+
|
104
|
+
clean_opts = lambda do |hash|
|
105
|
+
hash.delete_if { |k, v| k == :set || v.nil? }
|
106
|
+
hash[:config_file] ||= hash.delete(:config)
|
107
|
+
hash
|
108
|
+
end
|
100
109
|
|
101
110
|
run do
|
102
111
|
if version?
|
103
|
-
gemspec_file = File.join(File.dirname(__FILE__), '..',
|
112
|
+
gemspec_file = File.join(File.dirname(__FILE__), '..',
|
113
|
+
'sequenceserver.gemspec')
|
104
114
|
gemspec = eval File.read gemspec_file
|
105
115
|
puts gemspec.version
|
106
116
|
exit
|
107
117
|
end
|
108
118
|
|
109
119
|
ENV['RACK_ENV'] = 'development' if devel?
|
110
|
-
|
111
|
-
|
112
|
-
|
120
|
+
|
121
|
+
# Exit gracefully on SIGINT.
|
122
|
+
stty = `stty -g`.chomp
|
113
123
|
trap('INT') do
|
114
124
|
puts ''
|
115
125
|
puts 'Aborted.'
|
116
|
-
system('stty',
|
126
|
+
system('stty', stty)
|
117
127
|
exit
|
118
128
|
end
|
119
129
|
|
120
130
|
require 'sequenceserver'
|
131
|
+
|
121
132
|
begin
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
File.open(SequenceServer.config_file, 'w') {}
|
136
|
-
puts " Created."
|
137
|
-
redo
|
138
|
-
when SequenceServer::EXIT_BLAST_NOT_INSTALLED,
|
139
|
-
SequenceServer::EXIT_BLAST_NOT_COMPATIBLE
|
133
|
+
SequenceServer.init clean_opts[to_h]
|
134
|
+
|
135
|
+
# The aim of following error recovery scenarios is to guide user to a
|
136
|
+
# working SequenceServer installation. We expect to land following
|
137
|
+
# error scenarios either when creating a new SequenceServer (first
|
138
|
+
# time or later), or updating config values using -s CLI option.
|
139
|
+
|
140
|
+
rescue SequenceServer::CONFIG_FILE_ERROR => e
|
141
|
+
|
142
|
+
puts e
|
143
|
+
exit!
|
144
|
+
|
145
|
+
rescue SequenceServer::BIN_DIR_NOT_FOUND => e
|
140
146
|
|
141
|
-
|
142
|
-
# saved. Config will be saved unless invoked with -b option.
|
143
|
-
fetch_option(:set).value = !bin?
|
147
|
+
puts e
|
144
148
|
|
145
|
-
|
146
|
-
|
149
|
+
unless bin?
|
150
|
+
puts 'You can set the correct value by running:'
|
147
151
|
puts
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
152
|
+
puts ' sequenceserver -s -b <value>'
|
153
|
+
puts
|
154
|
+
end
|
155
|
+
|
156
|
+
exit!
|
157
|
+
|
158
|
+
rescue SequenceServer::DATABASE_DIR_NOT_FOUND => e
|
159
|
+
|
160
|
+
puts e
|
157
161
|
|
162
|
+
unless database_dir?
|
163
|
+
puts 'You can set the correct value by running:'
|
158
164
|
puts
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
165
|
+
puts ' sequenceserver -s -d <value>'
|
166
|
+
puts
|
167
|
+
end
|
168
|
+
|
169
|
+
exit!
|
170
|
+
|
171
|
+
rescue SequenceServer::NUM_THREADS_INCORRECT => e
|
172
|
+
|
173
|
+
puts e
|
174
|
+
|
175
|
+
unless num_threads?
|
176
|
+
puts 'You can set the correct value by running:'
|
177
|
+
puts
|
178
|
+
puts ' sequenceserver -s -n <value>'
|
179
|
+
puts
|
180
|
+
end
|
181
|
+
|
182
|
+
exit!
|
183
|
+
|
184
|
+
rescue SequenceServer::EXTENSION_FILE_NOT_FOUND => e
|
185
|
+
|
186
|
+
puts e
|
187
|
+
|
188
|
+
unless require?
|
189
|
+
puts 'You can set the correct value by running:'
|
190
|
+
puts
|
191
|
+
puts ' sequenceserver -s -r <value>'
|
192
|
+
puts
|
193
|
+
end
|
194
|
+
|
195
|
+
exit!
|
196
|
+
|
197
|
+
rescue SequenceServer::BLAST_NOT_INSTALLED,
|
198
|
+
SequenceServer::BLAST_NOT_COMPATIBLE => e
|
199
|
+
|
200
|
+
# Show original error message first.
|
201
|
+
puts
|
202
|
+
puts e
|
203
|
+
|
204
|
+
# Set a flag so that if we recovered from error resulting config can be
|
205
|
+
# saved. Config will be saved unless invoked with -b option.
|
206
|
+
fetch_option(:set).value = !bin?
|
207
|
+
|
208
|
+
# Ask user if she already has BLAST+ downloaded or offer to download
|
209
|
+
# BLAST+ for her.
|
210
|
+
puts
|
211
|
+
puts <<MSG
|
212
|
+
SequenceServer can use NCBI BLAST+ that you may have on your system already, or
|
213
|
+
download the correct package for itself. Please enter the path to NCBI BLAST+
|
214
|
+
or press Enter to download.
|
215
|
+
|
216
|
+
Press Ctrl+C to quit.
|
217
|
+
MSG
|
218
|
+
puts
|
219
|
+
response = Readline.readline('>> ').to_s.strip
|
220
|
+
if response.empty?
|
221
|
+
puts
|
222
|
+
puts 'Installing NCBI BLAST+.'
|
223
|
+
puts "RUBY_PLATFORM #{RUBY_PLATFORM}"
|
224
|
+
|
225
|
+
version = SequenceServer::MINIMUM_BLAST_VERSION
|
226
|
+
url = case RUBY_PLATFORM
|
227
|
+
when /i686-linux/ # 32 bit Linux
|
228
|
+
'ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/' \
|
229
|
+
"#{version.chop}/ncbi-blast-#{version}-ia32-linux.tar.gz"
|
230
|
+
when /x86_64-linux/ # 64 bit Linux
|
231
|
+
'ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/' \
|
232
|
+
"#{version.chop}/ncbi-blast-#{version}-x64-linux.tar.gz"
|
233
|
+
when /darwin/ # Mac
|
234
|
+
'ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/' \
|
235
|
+
"#{version.chop}/" \
|
236
|
+
"ncbi-blast-#{version}-universal-macosx.tar.gz"
|
237
|
+
else
|
238
|
+
puts <<ERR
|
176
239
|
------------------------------------------------------------------------
|
177
240
|
FAILED!! to install NCBI BLAST+.
|
178
241
|
|
@@ -184,54 +247,87 @@ https://github.com/yannickwurm/sequenceserver/issues
|
|
184
247
|
------------------------------------------------------------------------
|
185
248
|
|
186
249
|
ERR
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
fetch_option(:bin).value = "~/.sequenceserver/ncbi-blast-#{version}/bin/"
|
200
|
-
redo
|
201
|
-
else
|
202
|
-
exit e.status unless set?
|
250
|
+
end
|
251
|
+
|
252
|
+
archive = File.join('/tmp', File.basename(url))
|
253
|
+
system "wget -c #{url} -O #{archive} && mkdir -p ~/.sequenceserver" \
|
254
|
+
"&& tar xvf #{archive} -C ~/.sequenceserver"
|
255
|
+
unless $CHILD_STATUS.success?
|
256
|
+
puts 'Failed to install BLAST+.'
|
257
|
+
puts ' You may need to download BLAST+ from - '
|
258
|
+
puts ' http://www.ncbi.nlm.nih.gov/blast/Blast.cgi?CMD=Web&PAGE_TYPE=BlastDocs&DOC_TYPE=Download'
|
259
|
+
puts " Please ensure that you download BLAST+ version
|
260
|
+
#{SequenceServer::MINIMUM_BLAST_VERSION} or higher."
|
261
|
+
exit!
|
203
262
|
end
|
204
|
-
|
205
|
-
|
206
|
-
|
263
|
+
fetch_option(:bin).value =
|
264
|
+
"~/.sequenceserver/ncbi-blast-#{version}/bin/"
|
265
|
+
redo
|
266
|
+
else
|
267
|
+
unless File.basename(response) == 'bin'
|
268
|
+
response = File.join(response, 'bin')
|
269
|
+
end
|
270
|
+
fetch_option(:bin).value = File.join(response)
|
271
|
+
puts
|
272
|
+
redo
|
273
|
+
end
|
274
|
+
rescue SequenceServer::DATABASE_DIR_NOT_SET => e
|
275
|
+
|
276
|
+
# Show original error message.
|
277
|
+
puts
|
278
|
+
puts e
|
279
|
+
|
280
|
+
# Set a flag so that if we recovered from error resulting config can be
|
281
|
+
# saved. Config will be saved unless invoked with -d option.
|
282
|
+
fetch_option(:set).value = !database_dir?
|
207
283
|
|
208
|
-
|
209
|
-
|
210
|
-
|
284
|
+
# Ask user for the directory containing sequences or BLAST+
|
285
|
+
# databases.
|
286
|
+
puts
|
287
|
+
puts <<MSG
|
288
|
+
SequenceServer needs to know where your FASTA files or BLAST+ databases are.
|
289
|
+
Please enter the path to the relevant directory (default: current directory).
|
211
290
|
|
291
|
+
Press Ctrl+C to quit.
|
292
|
+
MSG
|
293
|
+
|
294
|
+
puts
|
295
|
+
response = Readline.readline('>> ').to_s.strip
|
296
|
+
fetch_option(:database_dir).value = response
|
297
|
+
redo
|
298
|
+
|
299
|
+
rescue SequenceServer::NO_BLAST_DATABASE_FOUND => e
|
300
|
+
unless list_databases? || list_unformatted_fastas? ||
|
301
|
+
make_blast_databases?
|
302
|
+
|
303
|
+
# Print error raised.
|
212
304
|
puts
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
305
|
+
puts e
|
306
|
+
|
307
|
+
# Offer user to format the FASTA files.
|
308
|
+
database_dir = SequenceServer[:database_dir]
|
309
|
+
puts
|
310
|
+
puts <<MSG
|
311
|
+
Search for FASTA files (.fa, .fasta, .fna) in '#{database_dir}' and try
|
312
|
+
creating BLAST+ databases? [y/n] (Default: y).
|
313
|
+
MSG
|
314
|
+
puts
|
315
|
+
print '>> '
|
316
|
+
response = STDIN.gets.to_s.strip
|
317
|
+
unless response.match(/^[n]$/i)
|
221
318
|
puts
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
puts "*** Creating databases."
|
227
|
-
SequenceServer::Database.make_blast_databases
|
228
|
-
redo
|
319
|
+
puts 'Searching ...'
|
320
|
+
if SequenceServer::Database.unformatted_fastas.empty?
|
321
|
+
puts "Couldn't find any FASTA files."
|
322
|
+
exit!
|
229
323
|
else
|
230
|
-
|
324
|
+
formatted = SequenceServer::Database.make_blast_databases
|
325
|
+
exit! if formatted.empty? && !set?
|
326
|
+
redo unless set?
|
231
327
|
end
|
328
|
+
else
|
329
|
+
exit! unless set?
|
232
330
|
end
|
233
|
-
else
|
234
|
-
exit e.status
|
235
331
|
end
|
236
332
|
end
|
237
333
|
|
@@ -245,10 +341,11 @@ ERR
|
|
245
341
|
exit
|
246
342
|
end
|
247
343
|
|
248
|
-
if list_unformatted_fastas?
|
344
|
+
if list_unformatted_fastas? || make_blast_databases?
|
249
345
|
unformatted_fastas = SequenceServer::Database.unformatted_fastas
|
250
346
|
if unformatted_fastas.empty?
|
251
|
-
puts "All FASTA files in #{SequenceServer[:database_dir]} are
|
347
|
+
puts "All FASTA files in #{SequenceServer[:database_dir]} are "\
|
348
|
+
'formatted.'
|
252
349
|
exit
|
253
350
|
end
|
254
351
|
end
|
@@ -264,19 +361,17 @@ ERR
|
|
264
361
|
end
|
265
362
|
|
266
363
|
if set?
|
267
|
-
SequenceServer.
|
364
|
+
SequenceServer.config.write_config_file
|
268
365
|
exit
|
269
366
|
end
|
270
367
|
|
271
|
-
if fetch_option(:set).value
|
272
|
-
SequenceServer.send :write_config_file
|
273
|
-
end
|
368
|
+
SequenceServer.config.write_config_file if fetch_option(:set).value
|
274
369
|
|
275
370
|
SequenceServer.run
|
276
371
|
end
|
277
372
|
end
|
278
373
|
rescue Slop::Error => e
|
279
374
|
puts e
|
280
|
-
puts "Run '#{$
|
375
|
+
puts "Run '#{$PROGRAM_NAME} -h' for help with command line options."
|
281
376
|
exit
|
282
377
|
end
|