Coder Social home page Coder Social logo

mshadbolt / candigv2 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from candig/candigv2

0.0 0.0 0.0 1.98 MB

The CanDIG v2 platform

License: GNU Lesser General Public License v3.0

Shell 26.59% JavaScript 11.29% Python 21.56% Makefile 7.00% Smarty 29.01% Dockerfile 1.73% Common Workflow Language 2.82%

candigv2's Introduction

CanDIG v2


Overview

The CanDIG v2 project is a collection of heterogeneous services designed to work together to facilitate end to end dataflow for genomic data.

Installation

CanDIG uses a make-based deployment process, with services containerized in Docker. To deploy CanDIGv2, follow the installation guide in docs/:

View additional Makefile options with make help.

.env Environment File

You need an .env file in the project root directory, which contains a set of global variables that are used as reference to the various parameters, plugins, and config options that operators can modify for testing purposes. This repo contains an example .env file in etc/env/example.env.

For a basic desktop sandbox setup, the example variable file needs very little (if any) modification.

When deploying CanDIGv2 using make, .env is imported by make and all uncommented variables are added as environment variables via export.

Some of the functionality that is controlled through .env are:

  • operating system flags
  • change docker network, driver, and swarm host
  • modify ports, protocols, and plugins for various services
  • version control and app pinning
  • pre-defined defaults for turnkey deployment

Environment variables defined in the .env file can be read in docker-compose scripts through the variable substitution operator ${VAR}.

# example compose YAML using variable substitution with default option
services:
  consul:
    image: progrium/consul
    network_mode: ${DOCKER_MODE}
...

Configuring CanDIG modules

Not all CanDIG modules are required for a minimal installation. The CANDIG_MODULES setting defines which modules are included in the deployment.

By default (if you copy the sample file from etc/env/example.env) the installation includes the minimal list of modules:

  CANDIG_MODULES=keycloak vault minio postgres redis htsget katsu candig-data-portal query tyk opa federation candig-ingest

Optional modules follow the # and include various monitoring components, workflow execution, and some older modules not generally installed.

Configuring CanDIG modules

Not all CanDIG modules are required for a minimal installation. The CANDIG_MODULES setting defines which modules are included in the deployment.

By default (if you copy the sample file from etc/env/example.env) the installation includes the minimal list of modules:

  CANDIG_MODULES=keycloak vault minio postgres redis htsget katsu candig-data-portal query tyk opa federation candig-ingest

Optional modules follow the # and include various monitoring components, workflow execution, and some older modules not generally installed.

Project Structure

CanDIGv2/
 ├── .env                          - global variables
 ├── Makefile                      - functions for repeatable testing/deployment (Docker/Kubernetes)
 ├── tox.ini                       - functions for repeatable testing/deployment (Python Venv/Screen)
 ├── bin/                          - local binaries directory
 ├── docs/                         - documentation, installation instructions
 ├── etc/                          - contains misc files/config/scripts
 │    ├── docker/                  - docker configurations
 │    ├── env/                     - sample .env file
 │    ├── ssl/                     - ssl root-ca/site configs and certs
 |    ├── tests/                   - integration tests (under development)
 │    ├── venv/                    - dependency files for virtualenvs (conda, pip, etc.)
 │    └── yml/                     - various yaml based configs (toil, traefik, etc.)
 ├── lib/                          - contains modules of services/apps
 └── tmp/                          - contains temporary files used for runtime functionality
      ├── configs/                 - config files that are added to services post-deployment
      ├── data/                    - local data for running services
      ├── federation/              - federation configuration files
      ├── tyk/                     - tyk configuration files
      ├── vault/                   - vault keys
      └── secrets/                 - directory to store randomly generated secrets for service deployment

List of Services and Components

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
Query service candigv2-query Manages front-end querying of 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

Adding a new service

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

candigv2's People

Contributors

daisieh avatar candigbot avatar shaikh-rashid avatar ordineu avatar fcoralsasso avatar sonqbchau avatar kcranston avatar mshadbolt avatar n0cat avatar justin-ys avatar afrosimon avatar amanjeev avatar courtneygosselin avatar davidbrownlee avatar sdumitriu avatar alirz-02 avatar jagdeepsason2021 avatar yavyx avatar zamm178 avatar lilyyangyi301 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.