scout-browser

VCF visualization interface

https://github.com/clinical-genomics/scout

Science Score: 54.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: ncbi.nlm.nih.gov
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.7%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

VCF visualization interface

Basic Info
Statistics
  • Stars: 169
  • Watchers: 14
  • Forks: 50
  • Open Issues: 197
  • Releases: 181
Created over 11 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog Contributing License Citation Security

README.md

Analyze VCFs and collaborate on solving rare diseases quicker

Build Status - GitHub PyPI Version GitHub Release Date GitHub commits latest GitHub commit rate GitHub commits GitHub issues-closed Average time to resolve an issue Percentage of issues still open Coverage Status CodeFactor Code style: black Woke

What is Scout?

  • Simple - Analyze variants in a simple to use web interface.
  • Aggregation - Combine results from multiple analyses and VCFs into a centralized database.
  • Collaboration - Write comments and share cases between users and institutes.

Documentation

This README only gives a brief overview of Scout, for a more complete reference, please check out our docs: https://clinical-genomics.github.io/scout .

Runnable demo image - does not require installing of software and database

A simple demo instance of Scout requires the installation of Docker and can be launched either by using the command: docker-compose up -d or make up.

The repository includes a Makefile with common shortcuts to simplify setting up and working with Scout. To see a full list and description of these shortcuts run: make help.

This demo is consisting of 3 containers: - a MongoDB instance, on the default port 27017 in the container, mapped to host port 27013 - scout-cli --> the Scout command line, connected to the database. Populates the database with demo data - scout-web --> the Scout web app, that serves the app on localhost, port 8000.

Once the server has started you and open the app in the web browser at the following address: http://localhost:8000/

The command to stop the demo are either docker-compose down or make down.

Instructions on how to run a Scout image connected to your local database or a custom database are present on this page.

Installation

Here is a quick start. Please see e.g. the Installation instructions for more details.

bash git clone https://github.com/Clinical-Genomics/scout cd scout

Scout is configured to use uv; either run, install, or install as a tool.

bash uv sync --frozen uv run scout

You can also install using pip:

pip install --editable .

Scout PDF reports are created using Flask-WeasyPrint. This library requires external dependencies which need be installed separately (namely Cairo and Pango). See platform-specific instructions for Linux, macOS and Windows available on the WeasyPrint installation pages.

NB: in order to convert HTML reports into PDF reports, we have recently switched from the WeasyPrint lib to python-pdfkit. For this reason, when upgrading to a Scout version >4.47, you need to install an additional wkhtmltopdf system library.

You also need to have an instance of MongoDB running. I've found that it's easiest to do using the official Docker image:

bash docker run --name mongo -p 27017:27017 mongo

Usage

Demo - requires pip-installing the app in a container and a running instance of mongodb

Once installed, you can setup Scout by running a few commands using the included command line interface. Given you have a MongoDB server listening on the default port (27017), this is how you would setup a fully working Scout demo:

bash scout setup demo

This will setup an instance of scout with a database called scout-demo. Now run

bash scout --demo serve And play around with the interface. A user has been created with email clark.kent@mail.com so use that address to get access

Initialize scout

To initialize a working instance with all genes, diseases etc run

bash scout setup database

for more info, run scout --help

The previous command initializes the database with a curated collection of gene definitions with links to OMIM along with HPO phenotype terms. Now we will load some example data. Scout expects the analysis to be accomplished using various gene panels so let's load one and then our first analysis case:

bash scout load panel scout/demo/panel_1.txt scout load case scout/demo/643594.config.yaml

Integration with chanjo and chanjo2 for coverage report visualization

Scout may be configured to visualize coverage reports produced by Chanjo or chanjo2. Instructions on how to enable this feature can be found in the document chanjocoverageintegration.

Integration with loqusdb for integrating local variant frequencies

Scout may be configured to visualize local variant frequencies monitored by Loqusdb. Instructions on how to enable this feature can be found in the document loqusdb integration.

Integration with Gens for displaying copy number profiles for variants

Scout may be configured to link to a local Gens installation. Instructions on how to enable this feature can be found in the document Gens integration.

Server setup

Scout needs a server config to know which databases to connect to etc. Depending on which information you provide you activate different parts of the interface automatically, including user authentication, coverage, and local observations.

This is an example of the config file:

```python

scoutconfig.py

list of email addresses to send errors to in production

ADMINS = ['paul.anderson@magnolia.com']

MONGOHOST = 'localhost' MONGOPORT = 27017 MONGODBNAME = 'scout' MONGOUSERNAME = 'testUser' MONGO_PASSWORD = 'testPass'

enable user authentication using Google OAuth 2.0

GOOGLE = dict( clientid="clientidstring.apps.googleusercontent.com", clientsecret="clientsecretstring", discovery_url="https://accounts.google.com/.well-known/openid-configuration" )

enable Phenomizer gene predictions from phenotype terms

PHENOMIZERUSERNAME = '???' PHENOMIZERPASSWORD = '???'

enable Chanjo coverage integration

SQLALCHEMYDATABASEURI = '???' REPORT_LANGUAGE = 'en' # or 'sv'

other interesting settings

SQLALCHEMYTRACKMODIFICATIONS = False # this is essential in production TEMPLATESAUTORELOAD = False # consider turning off in production SECRET_KEY = 'secret key' # override in production! ```

Most of the config settings are optional. A minimal config would consist of SECRETKEY and MONGODBNAME.

Starting the server in now really easy, for the demo and local development we will use the CLI:

bash scout --flask-config config.py serve

Scout Interface demo

Hosting a production server

When running the server in production you will likely want to use a proper Python server solution such as Gunicorn. This is also how we can multiprocess the server and use encrypted HTTPS connections.

bash SCOUT_CONFIG=./config.py gunicorn --workers 4 --bind 0.0.0.0:8080 scout.server.auto:app

For added security and flexibility, we recommend a reverse proxy solution like NGINX.

Setting up a user login system

Scout currently supports 3 mutually exclusive types of login: - Google authentication via OpenID Connect (OAuth 2.0) - LDAP authentication - Simple authentication using userid and password

The first 2 solutions are both suitable for a production server. A description on how to set up an advanced login system is available in the admin guide

Integration with Matchmaker Exchange

Starting from release 4.4, Scout offers integration for patient data sharing via Matchmaker Exchange. General info about Matchmaker and patient matching could be found in this paper. For a technical guideline of our implementation of Matchmaker Exchange at Clinical Genomics and its integration with Scout check scouts matchmaker docs. A user-oriented guide describing how to share case and variant data to Matchmaker using Scout can be found here.

Development

To keep the code base consistent, formatting with Black is always applied as part of the PR submission process via GitHub Actions. While not strictly required, to avoid confusion, it is suggested that developers apply Black locally. Black defaults to 88 characters per line, we use 100.

To format all the files in the project run:

bash black --line-length 100 .

We recommend using Black with pre-commit. In .pre-commit-config.yaml you can find the pre-commit configuration. To enable this configuration run:

bash pre-commit install

Test

To run unit tests:

bash pytest

Contributing to Scout

If you want to contribute and make Scout better, you help is very appreciated! Bug reports or feature requests are really helpful and can be submitted via github issues. Feel free to open a pull request to add a new functionality or fixing a bug, we welcome any help, regardless of the amount of code provided or your skills as a programmer. More info on how to contribute to the project and a description of the Scout branching workflow can be found in CONTRIBUTING.

Owner

  • Name: Clinical Genomics
  • Login: Clinical-Genomics
  • Kind: organization
  • Location: Stockholm, Sweden

Citation (CITATION.cff)

cff-version: 1.2.0
message: If you use this software, please cite it using these metadata.
title: Scout
abstract: Clinical DNA variant visualizer and browser.
authors:
  - family-names: Andeer
    given-names: Robin
  - family-names: Dalberg
    given-names: Mats
  - family-names: Laaksonen
    given-names: Mikael
  - family-names: Magnusson
    given-names: Måns
    orcid: "https://orcid.org/0000-0002-0001-1047"
  - family-names: Nilsson
    given-names: Daniel
    orcid: "https://orcid.org/0000-0001-5831-385X"
  - family-names: Rasi
    given-names: Chiara
    orcid: "https://orcid.org/0000-0002-7001-3988"
version: 4.39
date-released: "2021-09-03"
identifiers:
  - description: Bugfixes, improvements to layout and performance
    type: doi
    value: "10.5281/zenodo.5416151"
license: BSD-3-Clause License
repository-code: "https://github.com/Clinical-Genomics/scout"

Committers

Last synced: 9 months ago

All Time
  • Total Commits: 7,849
  • Total Committers: 43
  • Avg Commits per committer: 182.535
  • Development Distribution Score (DDS): 0.729
Past Year
  • Commits: 458
  • Committers: 7
  • Avg Commits per committer: 65.429
  • Development Distribution Score (DDS): 0.509
Top Committers
Name Email Commits
Chiara Rasi r****a@g****m 2,124
Daniel Nilsson d****n@g****m 1,738
Robin Andeer r****r@g****m 1,404
Måns Magnusson m****n@s****e 968
tereseboderus t****s@g****m 356
moonso m****s@g****m 329
Patrik Grenfeldt p****t@s****e 144
Lint Action l****n@s****m 115
mikaell m****n@s****e 115
Markus Johansson m****o@M****e 112
elevu e****o@g****m 70
Jakob Willforss j****s@h****m 53
Björn Hallström b****m@g****m 50
hassanfa h****i@g****m 41
molu m****t@r****e 37
Björn Hallström b****m@s****e 28
Alexander Koc a****c@s****e 26
Maya m****i@s****e 20
Moe Darrah 4****h 13
Adam Rosenbaum a****m@s****e 12
elevu e****r@g****m 11
Fredrik Carlsson me@f****o 10
Moe Darrah 4****h 8
Szilveszter Juhos s****s@s****e 8
Markus Johansson m****n@m****m 7
Markus Johansson m****n@1****m 7
Chiara Rasi r****a@g****m 7
Emil r****s@g****m 5
Jessica Hillert j****t@s****e 5
Niklas Mähler 2****r 4
and 13 more...

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 950
  • Total pull requests: 1,238
  • Average time to close issues: 4 months
  • Average time to close pull requests: 5 days
  • Total issue authors: 60
  • Total pull request authors: 14
  • Average comments per issue: 2.02
  • Average comments per pull request: 3.75
  • Merged pull requests: 1,018
  • Bot issues: 0
  • Bot pull requests: 1
Past Year
  • Issues: 404
  • Pull requests: 566
  • Average time to close issues: 8 days
  • Average time to close pull requests: 2 days
  • Issue authors: 31
  • Pull request authors: 6
  • Average comments per issue: 1.69
  • Average comments per pull request: 3.35
  • Merged pull requests: 439
  • Bot issues: 0
  • Bot pull requests: 1
Top Authors
Issue Authors
  • dnil (411)
  • northwestwitch (288)
  • Jakob37 (55)
  • fellen31 (15)
  • ielvers (14)
  • mhkc (12)
  • 4WGH (12)
  • KickiLagerstedt (9)
  • khurrammaqbool (7)
  • alkc (7)
  • fevac (7)
  • 1ctw (6)
  • parlar (6)
  • mathiasbio (6)
  • Lucpen (6)
Pull Request Authors
  • northwestwitch (703)
  • dnil (418)
  • TereseBo (68)
  • Jakob37 (13)
  • molucorner (11)
  • ivadym (6)
  • alkc (6)
  • elevu (3)
  • fevac (3)
  • maehler (3)
  • pbiology (1)
  • patrikgrenfeldt (1)
  • dependabot[bot] (1)
  • bjhall (1)
Top Labels
Issue Labels
enhancement (286) bug (199) QualityOfLife (96) Easy (66) Customer Request (57) Frontend (50) Under discussion (28) question (27) Task (26) Cancer (24) Refactor (23) Clinical Genomics Solna instance only (17) Intermediate (16) blocked (15) LRS (14) RNA-seq (11) wontfix (9) duplicate (7) docs (6) Lund (6) Future ideas (5) good first issue (4) Agenda (4) nf-core/raredisease (3) Bugfix (3) Hard (2) Research (2) help wanted (1) Scout5.0 (1)
Pull Request Labels
Easy (359) Bugfix (210) QualityOfLife (79) enhancement (69) Frontend (60) Customer Request (47) Refactor (26) docs (18) Cancer (4) bug (3) Task (3) Under discussion (2) duplicate (2) blocking (2) blocked (2) LRS (1) dependencies (1) github_actions (1) RNA-seq (1)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 1,917 last-month
  • Total dependent packages: 1
  • Total dependent repositories: 2
  • Total versions: 171
  • Total maintainers: 4
  • Total advisories: 2
pypi.org: scout-browser

Clinical DNA variant visualizer and browser

  • Versions: 171
  • Dependent Packages: 1
  • Dependent Repositories: 2
  • Downloads: 1,917 Last month
Rankings
Dependent packages count: 4.8%
Stargazers count: 6.1%
Forks count: 6.2%
Average: 7.9%
Downloads: 10.9%
Dependent repos count: 11.6%
Last synced: 6 months ago

Dependencies

requirements-dev.txt pypi
  • black *
  • invoke *
  • markdown-include *
  • mkdocs *
  • mkdocs-material *
  • mongomock ==3.20
  • pytest >=5.2
  • pytest-cov *
  • pytest-flask *
  • pytest-mock *
  • pytest-test-groups *
  • responses *
requirements.txt pypi
  • Flask >=2.0
  • Flask-Babel *
  • Flask-Bootstrap *
  • Flask-CORS *
  • Flask-Mail *
  • Flask-Markdown *
  • Flask-WTF *
  • PyYaml >=5.1
  • WTForms <3
  • anytree *
  • authlib *
  • cairosvg *
  • click *
  • coloredlogs <=14.0
  • configobj *
  • cryptography <3.4
  • cyvcf2 *
  • defusedxml *
  • flask-ldapconn *
  • flask_login *
  • intervaltree ==3.0.2
  • livereload *
  • path.py *
  • pathlib *
  • pdfkit *
  • ped_parser *
  • pydantic *
  • pymongo >=3.7,<4.0
  • python-dateutil *
  • query_phenomizer *
  • svglib *
  • tabulate *
  • werkzeug *
  • xlsxwriter *
.github/workflows/build_and_publish.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
  • elgohr/Publish-Docker-Github-Action master composite
  • pypa/gh-action-pypi-publish master composite
.github/workflows/keep_a_changelog.yml actions
  • actions/checkout v1 composite
  • dangoslen/changelog-enforcer v1.1.1 composite
.github/workflows/linting_and_fixing.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v1 composite
  • samuelmeuli/lint-action v1 composite
.github/workflows/linting_only.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v1 composite
  • jamescurtin/isort-action master composite
  • samuelmeuli/lint-action v1 composite
.github/workflows/server_stage_docker_push.yml actions
  • actions/checkout v2 composite
  • docker/build-push-action v2 composite
  • docker/login-action v1 composite
  • docker/setup-buildx-action v1 composite
  • tj-actions/branch-names v5 composite
.github/workflows/tests_and_cov.yml actions
  • actions/cache v2 composite
  • actions/checkout v2 composite
  • actions/download-artifact v2 composite
  • actions/setup-python v2 composite
  • actions/upload-artifact v2 composite
  • codecov/codecov-action v2 composite
  • supercharge/mongodb-github-action 1.7.0 composite
.github/workflows/vulture.yml actions
  • Ana06/get-changed-files v2.0.0 composite
  • actions/checkout v2 composite
  • anaynayak/python-vulture-action v1.0 composite
.github/workflows/woke.yml actions
  • actions/checkout v2 composite
  • get-woke/woke-action v0 composite
Dockerfile docker
  • clinicalgenomics/python3.8-venv 1.0 build
  • python 3.8-slim build
containers/development/docker-compose-chanjo_report.yml docker
  • clinicalgenomics/chanjo latest
  • mariadb latest
  • mvertes/alpine-mongo latest
containers/development/docker-compose-matchmaker.yml docker
  • clinicalgenomics/patientmatcher latest
  • vepo/mongo latest
docker-compose.yml docker
  • mongo 4.4.9
.github/workflows/validate_internal_docs_links.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v4 composite
scout/load/setup.py pypi
setup.py pypi