Skip to content
Switch branches/tags
Go to file


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

GCV: Genome Context Viewer

Genome Context Viewer screenshot

The Genome Context Viewer (GCV) is a web-app that visualizes genomic context data provided by third party services. Specifically, it uses functional annotations as a unit of search and comparison. By adopting a common set of annotations, data-store operators can deploy federated instances of GCV, allowing users to compare genomes from different providers in a single interface.

This repository contains GCV itself (the client) and a server that can be used to provide data to the client, though the client can consume data form any server that implements the GCV services API. GCV is developed as part of the Legume Information System and Legume Federation projects. As such, it is configured by default to consume genomes from these providers.

User docs, developer docs, and non-legume examples are available in the wiki.

See the Legume Information System's instance of the GCV for a live example:

GCV Features

The primary function of GCV is searching for and comparing micro-syntenic regions of genomes based on their functional annotation content. These regions are drawn as "beads-on-a-string", or tracks, in the micro-synteny viewer. This viewer is supplemented with other viewers, namely, pairwise gene-loci dot plots of track genes and pairwise macro-synteny blocks. Like micro-synteny tracks, macro-synteny blocks are computed on demand with an MCScanX style algorithm using functional annotations to define homology relationships between genes. These blocks can be drawn in a reference style viewer or an all-pairs Circos style viewer.

In general, GCV is intended for comparative and pangenomic analyses. See the wiki for a thorough description of the GCV features, algorithms, and parameters.

Running GCV

GCV is composed a three major parts: the user interface (client/), the original server (server/), and a new microservices architecture (search/) we are in the process of transitioning the server to. Note, since we are in the process of transitioning the server to the microservices architecture, currently both the server and the microservices must be run together to fully support the client. We recommend running these programs via Docker. Use the instructions below to run all three parts via Docker Compose. If you wish to run a subset of the programs, we advise either modifying the Docker Compose files or running the programs via their individual Docker files located in their respective directories.

If you would rather install and run the programs yourself, visit each program's directory for instructions on how to do so.


The easiest way to run GCV (and its server) is via Docker, as documented below. See the client/, server/, and search/ directories for instructions on installing and running GCV without containers.

Two Docker Compose files allow GCV to be built and run in local developer mode (docker-compose.yml) on the same host as the Docker daemon, or production mode ( on a possibly-remote host (configured via a Docker context).

Both modes assume a suitable PostgreSQL dump (file named with the extension .sql, or optionally compressed and ending with the extension .sql.gz, .sql.bz2, or .sql.xz) containing a Chado schema has been placed in the directory ./db/docker-entrypoint-initdb.d/.

Developer mode

docker-compose up --build --detach

client/src is bind mounted in the client container and served from http://localhost:4200 via ng serve, accessible via web browser.

server/ is bind mounted in the server container, and the service API is accessible from http://localhost:8000/services.

Changes to files in client/src and server/ will be reflected immediately.

Microservices defined in search/microservices can be accessed directly on TCP ports defined in docker-compose.yml. Currently, changes to microservices require their respective images to be rebuilt (e.g., docker-compose up -d --build <service>) before they are reflected in the service.

Production mode

First set the environment variable POSTGRES_PASSWORD (and optionally GCV_PORT to have the client service listen on a port other than 80, and GCV_SUB_URI to serve the client from a URL path other than the default "/"; e.g., "/gcv/") either in a .env file, or in the environment in which the docker-compose command is run.

docker-compose -f up --build --detach

From the host running the Docker Engine, the client UI is available at http://localhost (or http://localhost${GCV_SUB_URI}), the services API can be accessed at http://localhost/services (or http://localhost${GCV_SUB_URI}services), and microservices are accessible at http://localhost/search (or http://localhost${GCV_SUB_URI}search).


If you used an instance of GCV in your work or deployed it as part of you site, please consider citing the manuscript to help support maintenance and further development:

Cleary, Alan, and Andrew Farmer. "Genome Context Viewer: visual exploration of multiple annotated genomes using microsynteny." Bioinformatics, Volume 34, Issue 9, 01 May 2018, Pages 1562–1564,