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.
Potentially problematic release.
This version of sequenceserver might be problematic. Click here for more details.
- 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
|