Skip to content

populationgenomics/seqr

 
 

Repository files navigation

seqr

Unit Tests | Local Install Tests

seqr is a web-based tool for rare disease genomics. This repository contains code that underlies the Broad seqr instance and other seqr deployments. To check for any active incidents occurring on the Broad seqr instance, check here

Technical Overview

seqr consists of the following components:

  • postgres - SQL database used by seqr to store project metadata and user-generated content such as variant notes, etc.
  • elasticsearch - NoSQL database used to store variant callsets.
  • redis - in-memory cache used to speed up request handling.
  • seqr - the main client-server application built using react.js, python and django.
  • pipeline-runner - optional container for running hail pipelines to annotate and load new datasets into elasticsearch. If seqr is hosted on google cloud (GKE or GCE), Dataproc spark clusters can be used instead.
  • kibana - optional dashboard and visual interface for elasticsearch.

Install

The seqr production instance runs on Google Kubernetes Engine (GKE) and data is loaded using Google Dataproc Spark clusters.

On-prem installs can be created using docker-compose: Local installs using docker-compose

To set up seqr for local development, see instructions here

Updating / Migrating an older seqr Instance

For notes on how to update an older instance, see

Update/Migration Instructions

Contributing to seqr

(Note: section inspired by, and some text copied from, GATK)

We welcome all contributions to seqr. Code should be contributed via GitHub pull requests against the main seqr repository.

If you’d like to report a bug but don’t have time to fix it, you can submit a GitHub issue

For larger features, feel free to discuss your ideas or approach in our discussion forum

To contribute code:

  • Submit a GitHub pull request against the master (dev on CPG) branch.

  • Break your work into small, single-purpose patches whenever possible. However, do not break apart features to the point that they are not functional (i.e. updates that require changes to both front end and backend code should be submitted as a single change)

  • For larger features, add a detailed description to the pull request to explain the changes and your approach

  • Make sure that your code passes all our tests and style linting

  • Add unit tests for all new python code you've written

We tend to do fairly close readings of pull requests, and you may get a lot of comments.

Thank you for getting involved!

Development

At the CPG, we don't include the web bundle in the repository anymore, this means you'll need to build the UI before you develop first.

Build UI and link build files back to static/:

cd ui/
npm install
npm run build
ln dist/app* ../static
cd ..

Start Python server:

gunicorn -c deploy/docker/seqr/config/gunicorn_config.py wsgi:application

Developing UI

If you're developing UI, you can run a hot-reload UI server. You'll need to start the Python server first (using gunicorn), then run:

cd ui/
npm run start

Then visit https://localhost:3000 in your browser to access the hot-reloadable version of seqr. All requests are proxied back to to Python backend.

Common errors

  • Error occured while trying to proxy to: localhost:3000: You didn't start the Python backend server.
  • TemplateDoesNotExist at / app.html: then it might say something like: /Users/${USER}/source/seqr/ui/dist/app.html (Source does not exist), you'll need to make sure the app.html file is available in ui/dist/.

About

web-based analysis tool for rare disease genomics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 65.2%
  • JavaScript 33.7%
  • TypeScript 0.6%
  • Shell 0.5%
  • Dockerfile 0.0%
  • CSS 0.0%