Skip to content
This repository has been archived by the owner on Nov 2, 2020. It is now read-only.


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


This repository is no longer maintained. Development of the gnomAD browser has moved to broadinstitute/gnomad-browser. Please file browser related issues there.


If you would like to use the ExAC browser, the most recent stable version is hosted at

Advanced: The following instructions are useful for cloning the browser (e.g. to load custom sites/coverage data). Most users will not need to go through this process.


Getting the code

Create a directory to put all this stuff in. This will serve as the parent directory of the actual exac_browser repository

mkdir exac
cd exac

First (as this can run in parallel), get the datasets that the browser uses and put them into an 'exac_data' directory:

wget .
tar zxvf exac_browser.tar.gz
cd ..

Now clone the repo:

git clone


These instructions assume you are using macOS and either Homebrew or MacPorts for package management.


Install MongoDB:

brew install mongodb
# or
sudo port install mongodb

Create a directory to hold your mongo database files:

mkdir database

In a separate tab, start the mongo database server:

mongod --dbpath database

This local server needs to be running at all times when you are working on the site. You could do this in the background if you want or set up some startup service, but I think it's easier just to open a tab you can monitor.


Follow these instructions to get Python installed on your Mac:

Finally, you may want to keep the system in a virtualenv:

sudo port install py27-virtualenv # Or whatever version

If so, you can create a python virtual environment where the browser will live:

mkdir exac_env
virtualenv exac_env
source exac_env/bin/activate


Follow these instructions to install Node.js with a package manager:

Or download and install it directly from:


Install the python requirements:

pip install -r requirements.txt

Note that this installs xBrowse too. Some packages will require Python headers (python-dev on some systems).

Install JavaScript dependencies and build gnomad.js:

cd gnomad_browser/gnomad
npm install
npm run build


At this point, it's probably worth quickly checking out the code structure if you haven't already :)

Now we must load the database from those flat files. This is a single command, but it can take a while (can take advantage of parallel loads by modifying LOAD_DB_PARALLEL_PROCESSES in

python load_db

You won't have to run this often - most changes won't require rebuilding the database. That said, this is (and will remain) idempotent, so you can run it again at any time if you think something might be wrong - it will reload the database from scratch. You can also reload parts of the database using any of the following commands:

python load_variants_file
python load_dbsnp_file
python load_base_coverage
python load_gene_models

Then run:

python precalculate_metrics

Then, you need to create a cache for autocomplete and large gene purposes:

python create_cache

Running the site

Note that if you are revisiting the site after a break, make sure your virtualenv is activate'd.

You can run the development server with:


And visit on your browser:


For testing, you can open up an interactive shell with:

python shell

Cross browser testing generously provided by: