A modern genome browser built with JavaScript and HTML5.
Switch branches/tags
Clone or download
Failed to load latest commit information.
.github Add templates for PR and issues Aug 15, 2018
bin fix #1063 May 28, 2018
browser Add icon that works for linux apps also Jun 2, 2018
build Update blog post text Aug 29, 2018
css add another iframeless-embedding test page, tweak styles a little bit Sep 22, 2018
docs Fix link in docs [skip ci] Oct 5, 2018
img Add search box Jul 13, 2018
plugins Update README.md Jul 13, 2018
sample_data add test for `--unsorted` command line option to prepare-refseqs Feb 26, 2018
src [update docs] release 1.15.4 Oct 5, 2018
tests Add some tests for hierarchical sort Oct 4, 2018
utils remove max-age=0 cache control header being set in jb_run.js Aug 7, 2018
website [update docs] release 1.15.4 Oct 5, 2018
.bowerrc Add bower config files back Jul 14, 2017
.editorconfig add gff3 stanza to .editorconfig Mar 28, 2018
.eslintrc make separate eslintrcs for src/JBrowse and tests/js_tests Apr 6, 2018
.gitattributes Remove spectron fake dialog Jun 2, 2018
.gitignore Docusaurus import Aug 16, 2018
.htaccess add a .htaccess file to the JBrowse root directory that enables CORS Nov 29, 2012
.npmignore add an .npmignore file so that the dist/ dir is included in the npm r… Mar 8, 2018
.travis.yml Remove node_modules .cache folder since this requires frequent rebuil… Sep 21, 2018
INSTALL make INSTALL point at the tutorial again, now that it's updated Apr 4, 2012
LICENSE add license info Jan 14, 2009
Makefile.PL use Bio::GFF3::LowLevel in gff3 names parsing Mar 26, 2018
README.md Update blog post text Aug 29, 2018
browserconfig.xml change favicon urls to be relative, fixes #1034. nice catch @cmdcolin Apr 17, 2018
index.html Retab tabs Apr 23, 2018
jbrowse.conf Allow flexible spacing around category names Oct 4, 2018
jbrowse_conf.json add an empty jbrowse_conf.json, with a comment Dec 13, 2013
package.json [update docs] release 1.15.4 Oct 5, 2018
release-notes.md [update docs] release 1.15.4 Oct 5, 2018
setup.sh just depend on @gmod/cram 1.1.0 which supports node 6 Jul 17, 2018
site.webmanifest change favicon urls to be relative, fixes #1034. nice catch @cmdcolin Apr 17, 2018
webpack.config.js Use glob loader and entry to create standalone config Aug 4, 2018
yarn.lock Make yarn happy Oct 5, 2018


Build status

Installing JBrowse

To install jbrowse, most users should visit http://jbrowse.org/install and download a zip file such as JBrowse-1.13.0.zip. See instructions at https://jbrowse.org/code/latest-release/docs/tutorial/ for a tutorial on setting up a sample instance.

Once you have an instance up and running, http://gmod.org/wiki/JBrowse_Configuration_Guide is the comprehensive reference guide to JBrowse configuration.

Install JBrowse from GitHub (for developers)

To install from GitHub, you can simply clone the repo and run the setup.sh script

git clone https://github.com/GMOD/jbrowse
cd jbrowse

At this point, if you are in the web root of your Apache or nginx folder, you can access it as http://localhost/jbrowse/?data=sample_data/json/volvox

Alternatively, run utils/jb_run.js -p 3000 and access http://localhost:3000/index.html?data=sample_data/json/volvox to see the code running from a small express.js server.

Note: you should avoid using sudo tasks like ./setup.sh and instead use chown/chmod on folders to your own user as necessary.

Also note: After editing a file, you must re-run the webpack build with npm run build or you can keep webpack running in "watch" mode by running npm run watch.

Also also note: by default git clone will clone the master branch which contains the latest stable release. The latest development branch is called dev. Run git checkout dev after clone to retrieve this

Installing as an npm module

To install jbrowse from NPM directly, you can run.

npm install GMOD/jbrowse

To setup a simple instance, you can use


Then visit http://localhost:3000/?data=sample_data/json/volvox


Looking for places to contribute to the codebase? Check out the "help wanted" label.

Running the developer test suites

The Travis-CI suite runs Perl, JavaScript, and Selenium automated tests. To run locally, you can use

prove -Isrc/perl5 -lr tests
phantomjs tests/js_tests/run-jasmine.js http://localhost/jbrowse/tests/js_tests/index.html
pip install selenium nose
MOZ_HEADLESS=1 SELENIUM_BROWSER=firefox JBROWSE_URL='http://localhost/jbrowse/index.html' nosetests

Supported browsers for SELENIUM_BROWSER are 'firefox', 'chrome', 'phantom', and 'travis_saucelabs'. The Sauce Labs + Travis one will only work in a properly configured Travis CI build environment.

Manual testing


JBrowse has a free open source account on Browserstack for manual testing. Contact @rbuels for access.

Generating Packaged Builds

You can also optionally run build steps to create the minimized codebase. Extra perl dependencies Text::Markdown and DateTime are required to run the build step.

make -f build/Makefile

To build the Electron app (JBrowse desktop app), run the following

npm install -g electron-packager
make -f build/Makefile release-electron-all

To run the Electron app in debug mode run the following

npm install -g electron
electron browser/main.js

Making a JBrowse release

NOTE: Beginning in 1.12.4,

  1. Run build/release.sh $newReleaseVersion $nextReleaseVersion-alpha.0 notes.txt, where notes.txt is any additional information to add to a blogpost. Then check its work, and then run the git push command it suggests to you. This makes a tag in the repository for the release, named, e.g. 1.6.3-release. This should cause Travis CI to create a release on GitHub under https://github.com/GMOD/jbrowse/releases

  2. Add release notes to the new GitHub release that Travis created. Can just paste these from release-notes.md, which is in Markdown format.

  3. Update the latest-release code checkout on the site, which the "Latest Release" demo on the jbrowse.org points to, to be an unzipped-and-set-up copy of the latest release.

  4. Write a twitter post for usejbrowse and JBrowseGossip with the announcement link to the blogpost

  5. Write an email announcing the release, sending to gmod-ajax. If it is a major release, add gmod-announce and make a GMOD news item.

As you can tell, this process could really use some more streamlining and automation.