Skip to content

CanDIGv2 Architecture

Simplified repo structure with relevant files.

  • Directoryetc/
    • Directoryenv/
      • example.env Copy and edit to configure variables
      • nightly_env.sh
    • Directorytests/ Integration and performance tests
      • test_integration.py Integration tests
    • Directoryvenv/ script, requirements for candig venv
      • activate.sh Activate candig conda env
      • requirements.txt Dependencies for the stack
  • Directorylib/ submodule directories, docker compose, setup scripts and repos
  • Makefile
  • create_service_store.sh
  • nightly_build.sh Script that can deploy stack nightly
  • nightly_build_token.py Post nightly results to Slack
  • post_build.sh Runs after to build to check running containers
  • pre-build-check.sh Runs before build and checks dependencies
  • settings.py Gets env variables from .env
  • setup_hosts.sh Sets up hosts if LOCAL_IP_ADDR not set
  • site_admin_token.py

The following table lists the individual repos for each service and helper library developed by the CanDIG team that contribute to the CanDIGv2 stack.

Service/Component Name Source Description
authx candigv2-authx Library to facilitate interacting with AuthZ/AuthN services, Keycloak, Tyk, Opa, Vault & Access to minIO S3 objects
CanDIG Data Portal candig-data-portal Front-end User interface for CanDIG Services
CanDIGv2 Ingest Service candigv2-ingest Ingests clinical and genomic data into the CanDIG infrastructure.
Clinical ETL Code clinical_ETL_code Code to convert spreadsheet format into the MoH data model in preparation for ingest into katsu
Federation Service federation-service Distributes requests across each federated node of the distributed infrastructure
HTSGet htsget_app Implementation of GA4GH htsget API which ingests and indexes VCF files and stores GA4GH DRS objects for retrieval
Katsu katsu Manages the clinical metadata in a PostgreSQL database
CanDIG OPA candig-opa Manages role-based access policies
CanDIG Query service candigv2-query Manages front-end querying of services
CanDIG logging candigv2-logging Logging package to unify logging across all services

As well as in-house developed services, the CanDIG stack relies on external software which is configured to work within the stack, configurations are found in the /lib folder for each software, these include:

Service/Component Name Role
Keycloak Authentication management
minio Object storage for genomic files
OPA Manages role-based access policies
Tyk API management and redirection
Vault Secret and password management

New services can be added under lib directory. Please refer to the template for new services README for more details.