https://github.com/cancervariants/metakb
Central repository for the VICC metakb web application
Science Score: 36.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
✓Committers with academic emails
3 of 12 committers (25.0%) from academic institutions -
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (16.2%) to scientific vocabulary
Keywords from Contributors
Repository
Central repository for the VICC metakb web application
Basic Info
Statistics
- Stars: 15
- Watchers: 9
- Forks: 5
- Open Issues: 72
- Releases: 11
Metadata Files
README.md
metakb
The intent of the project is to leverage the collective knowledge of the disparate existing resources of the VICC to improve the comprehensiveness of clinical interpretation of genomic variation. An ongoing goal will be to provide and improve upon standards and guidelines by which other groups with clinical interpretation data may make it accessible and visible to the public. We have released a preprint discussing our initial harmonization effort and observed disparities in the structure and content of variant interpretations.
Getting Started
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.
Prerequisites
- A newer version of Python 3 (preferably 3.11+)
- Node.js (v18 or later)
- pnpm package manager
- Neo4j Desktop and Java (for local databases)
Check your python version with:
bash
python3 --version
Monorepo Installation & Setup
We use a monorepo with Turborepo to coordinate development of the backend (FastAPI) and frontend (Vite + React).
1. Clone the Repo
bash
git clone https://github.com/cancervariants/metakb
cd metakb
2. Install dependencies
bash
pnpm install
3. Set up the Python backend
bash
cd server
python3 -m venv venv
source venv/bin/activate
pip install -e .
4. Set up required services
Before starting the app, you must set up required dependencies:
These services are required for the backend to function correctly.
Once all service and data dependencies are available, clear the graph, load normalizer data, and initiate harvest, transform, and data loading operations:
shell
metakb update-normalizers
metakb update --refresh_source_caches
The --help flag can be provided to any CLI command to bring up additional documentation.
Ensure that both the MetaKB Neo4j and Normalizers databases are running.
5. Start the development servers
- Frontend: http://localhost:5173
- Backend Swagger docs: http://localhost:8000/api/v2
Running the Backend by Itself
If you want to run the backend only:
bash
cd server
source venv/bin/activate
uvicorn src.metakb.main:app --reload --host 0.0.0.0 --port 8000
You can then visit http://localhost:8000/api/v2 for the Swagger UI.
Setting up Neo4j
The MetaKB uses Neo4j for its database backend. To run a local MetaKB instance, you'll need to run a Neo4j database instance as well. The easiest way to do this is from Neo4j Desktop.
First, follow the desktop setup instructions to download, install, and open Neo4j Desktop for the first time.
Once you have opened Neo4j desktop, use the New button in the upper-left region of the window to create a new project. Within that project, click the Add button in the upper-right region of the window and select Local DBMS. The name of the DBMS doesn't matter, but the password will be used later to connect the database to MetaKB (we have been using password by default). Select version 5.14.0 (other versions have not been tested). Click Create. Then, click the row within the project screen corresponding to your newly-created DBMS, and click the green Start button to start the database service.
The graph will initially be empty, but once you have successfully loaded data, Neo4j Desktop provides an interface for exploring and visualizing relationships within the graph. To access it, click the blue "Open" button. The prompt at the top of this window processes Cypher queries; to start, try MATCH (n:Statement {id:"civic.eid:1409"}) RETURN n. Buttons on the left-hand edge of the results pane let you select graph, tabular, or textual output.
Setting up normalizers
The MetaKB calls a number of normalizer libraries to transform resource data and resolve incoming search queries. These will be installed as part of the package requirements, but may require additional setup.
First, follow these instructions for deploying DynamoDB locally on your computer. Once setup, in a separate terminal instance, navigate to its source directory and run the following to start the database instance:
sh
java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb
Next, initialize the Variation Normalizer by following the instructions in the README. When setting up the UTA database, these docs may be helpful.
The MetaKB can acquire all other needed normalizer data, except for that of OMIM, which must be manually placed:
sh
cp ~/YOUR/PATH/TO/mimTitles.txt ~/.local/share/wags_tails/omim/omim_<date>.tsv # replace <date> with date of data acquisition formatted as YYYYMMDD
Environment Variables
MetaKB relies on environment variables to set in order to work.
Always Required:
UTA_DB_URL- Used in Variation Normalizer which relies on UTA Tools
- Format:
driver://user:pass@host/database/schema - More info can be found here
Example:
shell script export UTA_DB_URL=postgresql://uta_admin:password@localhost:5432/uta/uta_20210129
Running tests
Unit tests
To run unit tests, make sure you have a venv active and proper dependencies installed.
bash
cd server
virtualenv venv
source venv/bin/activate
pip install -e ".[tests,dev]"
Then run the tests:
sh
cd tests
pytest
Note: if you are getting errors signalling missing dependencies, make sure the dependency is installed with pip show packagenamehere. If it is installed, try refreshing your shell cache with hash -r. This will help your shell use the pytest in the venv instead of one that may be in your system elsewhere.
And coding style tests
Code style is managed by ruff and checked prior to commit.
```bash python3 -m ruff check --fix . && python3 -m ruff format .
```
Contributing
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.
Committing
We use pre-commit to run conformance tests.
This ensures:
- Check code style
- Check for added large files
- Detect AWS Credentials
- Detect Private Key
Before first commit run:
sh
pre-commit install
Versioning
We use SemVer for versioning. For the versions available, see the tags on this repository.
Generating requirements
requirements.txt is used for Elastic Beanstalk to install the
dependencies. Anytime you update package requirements in
pyproject.toml be sure to create a new virtual environment,
install only the required packages (pip install -e .) and update the
requirements.txt.
To generate run the below command from server directory (ensure you have started the venv):
commandline
pip freeze --exclude-editable > ../requirements.txt
License
This project is licensed under the MIT License - see the LICENSE file for details
Owner
- Name: VICC
- Login: cancervariants
- Kind: organization
- Website: http://cancervariants.org
- Repositories: 14
- Profile: https://github.com/cancervariants
The Variant Interpretation for Cancer Consortium
GitHub Events
Total
- Create event: 74
- Release event: 2
- Issues event: 97
- Watch event: 1
- Delete event: 50
- Issue comment event: 203
- Push event: 295
- Pull request review comment event: 48
- Pull request review event: 133
- Pull request event: 108
- Fork event: 1
Last Year
- Create event: 74
- Release event: 2
- Issues event: 97
- Watch event: 1
- Delete event: 50
- Issue comment event: 203
- Push event: 295
- Pull request review comment event: 48
- Pull request review event: 133
- Pull request event: 108
- Fork event: 1
Committers
Last synced: over 3 years ago
All Time
- Total Commits: 730
- Total Committers: 12
- Avg Commits per committer: 60.833
- Development Distribution Score (DDS): 0.538
Top Committers
| Name | Commits | |
|---|---|---|
| korikuzma | k****a@g****m | 337 |
| James Stevenson | j****n@n****g | 145 |
| Jiachen Liu | j****u@d****u | 122 |
| Alex H. Wagner, PhD | a****4@w****u | 80 |
| Kori Kuzma | 4****a@u****m | 14 |
| Alex Handler Wagner | A****r@n****g | 10 |
| Brian Walsh | b****n@b****m | 10 |
| dependabot[bot] | 4****]@u****m | 7 |
| MayLiu27 | 5****7@u****m | 2 |
| Alex H. Wagner, PhD | a@a****o | 1 |
| marianakhoul | 3****l@u****m | 1 |
| Brian Walsh | w****r@o****u | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 10 months ago
All Time
- Total issues: 192
- Total pull requests: 297
- Average time to close issues: 10 months
- Average time to close pull requests: 13 days
- Total issue authors: 11
- Total pull request authors: 6
- Average comments per issue: 1.54
- Average comments per pull request: 0.64
- Merged pull requests: 222
- Bot issues: 0
- Bot pull requests: 20
Past Year
- Issues: 53
- Pull requests: 108
- Average time to close issues: 18 days
- Average time to close pull requests: 12 days
- Issue authors: 6
- Pull request authors: 5
- Average comments per issue: 0.7
- Average comments per pull request: 0.73
- Merged pull requests: 68
- Bot issues: 0
- Bot pull requests: 7
Top Authors
Issue Authors
- korikuzma (107)
- jsstevenson (46)
- ahwagner (19)
- mcannon068nw (7)
- katiestahl (6)
- quinnwai (2)
- acoffman (1)
- wx115 (1)
- richardhj (1)
- MayLiu27 (1)
- bwalsh (1)
Pull Request Authors
- korikuzma (173)
- jsstevenson (96)
- dependabot[bot] (20)
- katiestahl (6)
- bwalsh (1)
- mcannon068nw (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- pypi 56 last-month
- Total dependent packages: 0
- Total dependent repositories: 1
- Total versions: 14
- Total maintainers: 3
pypi.org: metakb
A search interface for cancer variant interpretations assembled by aggregating and harmonizing across multiple cancer variant interpretation knowledgebases.
- Homepage: https://github.com/cancervariants/metakb
- Documentation: https://metakb.readthedocs.io/
- License: MIT
-
Latest release: 1.1.0
published over 3 years ago
Rankings
Maintainers (3)
Dependencies
- coverage * develop
- coveralls * develop
- flake8 * develop
- flake8-docstrings * develop
- ipykernel * develop
- jupyter * develop
- jupyterlab * develop
- metakb * develop
- mock * develop
- pre-commit * develop
- pytest * develop
- pytest-asyncio * develop
- pytest-cov * develop
- asyncclick *
- boto3 *
- botocore *
- civicpy *
- disease-normalizer >=0.2.12
- fastapi *
- ga4gh.vrs >=0.7.5.dev1
- ga4gh.vrsatile.pydantic >=0.0.11
- gene-normalizer >=0.1.25
- httptools *
- jsondiff *
- neo4j *
- pydantic *
- requests *
- requests-cache *
- thera-py >=0.3.4
- typing-extensions *
- uvicorn *
- uvloop *
- variation-normalizer >= 0.4.0a7
- websockets *
- aiofiles ==0.8.0 development
- anyio ==3.6.1 development
- appdirs ==1.4.4 development
- appnope ==0.1.3 development
- argcomplete ==2.0.0 development
- argh ==0.26.2 development
- argon2-cffi ==21.3.0 development
- argon2-cffi-bindings ==21.2.0 development
- asgiref ==3.5.2 development
- asttokens ==2.0.5 development
- asyncclick ==8.1.3.2 development
- asyncpg ==0.25.0 development
- attrs ==21.4.0 development
- babel ==2.10.1 development
- backcall ==0.2.0 development
- backoff ==2.1.2 development
- backports-datetime-fromisoformat ==1.0.0 development
- beautifulsoup4 ==4.11.1 development
- biocommons.seqrepo ==0.6.5 development
- bioregistry ==0.5.21 development
- bioutils ==0.5.6 development
- bioversions ==0.5.21 development
- bleach ==5.0.0 development
- boto3 ==1.24.8 development
- botocore ==1.27.8 development
- bs4 ==0.0.1 development
- cachier ==1.5.4 development
- canonicaljson ==1.6.2 development
- cattrs ==1.10.0 development
- certifi ==2022.5.18.1 development
- cffi ==1.15.0 development
- cfgv ==3.3.1 development
- charset-normalizer ==2.0.12 development
- chembl-downloader ==0.3.0 development
- civicpy ==1.1.3 development
- class-resolver ==0.3.10 development
- click ==8.1.3 development
- click-default-group ==1.2.2 development
- coloredlogs ==15.0.1 development
- configparser ==5.2.0 development
- coverage ==6.4.1 development
- coveralls ==3.3.1 development
- cssselect ==1.1.0 development
- cython ==0.29.30 development
- dataclasses-json ==0.5.7 development
- debugpy ==1.6.0 development
- decorator ==5.1.1 development
- defusedxml ==0.7.1 development
- deprecation ==2.1.0 development
- disease-normalizer ==0.2.12 development
- distlib ==0.3.4 development
- docopt ==0.6.2 development
- entrypoints ==0.4 development
- executing ==0.8.3 development
- fake-useragent ==0.1.11 development
- fastapi ==0.78.0 development
- fastjsonschema ==2.15.3 development
- filelock ==3.7.1 development
- flake8 ==4.0.1 development
- flake8-docstrings ==1.6.0 development
- ga4gh.vrs ==0.8a0 development
- ga4gh.vrsatile.pydantic ==0.0.11 development
- gene-normalizer ==0.1.27 development
- gffutils ==0.11.0 development
- h11 ==0.13.0 development
- hgvs ==1.5.2 development
- httptools ==0.4.0 development
- humanfriendly ==10.0 development
- identify ==2.5.1 development
- idna ==3.3 development
- importlib-metadata ==4.11.4 development
- inflection ==0.5.1 development
- iniconfig ==1.1.1 development
- ipykernel ==6.14.0 development
- ipython ==8.4.0 development
- ipython-genutils ==0.2.0 development
- ipywidgets ==7.7.0 development
- isodate ==0.6.1 development
- jedi ==0.18.1 development
- jinja2 ==3.1.2 development
- jmespath ==1.0.0 development
- json5 ==0.9.8 development
- jsondiff ==2.0.0 development
- jsonschema ==3.2.0 development
- jupyter ==1.0.0 development
- jupyter-client ==7.3.4 development
- jupyter-console ==6.4.3 development
- jupyter-core ==4.10.0 development
- jupyter-server ==1.17.1 development
- jupyterlab ==3.4.3 development
- jupyterlab-pygments ==0.2.2 development
- jupyterlab-server ==2.14.0 development
- jupyterlab-widgets ==1.1.0 development
- lxml ==4.9.0 development
- markdown ==3.3.7 development
- markupsafe ==2.1.1 development
- marshmallow ==3.16.0 development
- marshmallow-enum ==1.5.1 development
- matplotlib-inline ==0.1.3 development
- mccabe ==0.6.1 development
- mistune ==0.8.4 development
- mock ==4.0.3 development
- more-click ==0.1.1 development
- mwoauth ==0.3.8 development
- mypy-extensions ==0.4.3 development
- nbclassic ==0.3.7 development
- nbclient ==0.6.4 development
- nbconvert ==6.5.0 development
- nbformat ==5.4.0 development
- neo4j ==4.4.4 development
- nest-asyncio ==1.5.5 development
- networkx ==2.8.3 development
- nodeenv ==1.6.0 development
- notebook ==6.4.12 development
- notebook-shim ==0.1.0 development
- numpy ==1.22.4 development
- oauthlib ==3.2.0 development
- obonet ==0.3.0 development
- owlready2 ==0.38 development
- packaging ==21.3 development
- pandas ==1.4.2 development
- pandocfilters ==1.5.0 development
- parse ==1.19.0 development
- parsley ==1.3 development
- parso ==0.8.3 development
- pathtools ==0.1.2 development
- pexpect ==4.8.0 development
- pickleshare ==0.7.5 development
- platformdirs ==2.5.2 development
- pluggy ==1.0.0 development
- portalocker ==2.4.0 development
- pre-commit ==2.19.0 development
- prometheus-client ==0.14.1 development
- prompt-toolkit ==3.0.29 development
- psutil ==5.9.1 development
- psycopg2 ==2.9.3 development
- ptyprocess ==0.7.0 development
- pure-eval ==0.2.2 development
- py ==1.11.0 development
- pycodestyle ==2.8.0 development
- pycparser ==2.21 development
- pydantic ==1.9.1 development
- pydocstyle ==6.1.1 development
- pyee ==8.2.2 development
- pyfaidx ==0.7.0 development
- pyflakes ==2.4.0 development
- pygments ==2.12.0 development
- pyjwt ==2.4.0 development
- pyliftover ==0.4 development
- pyparsing ==2.4.7 development
- pyppeteer ==1.0.2 development
- pyquery ==1.4.3 development
- pyrsistent ==0.18.1 development
- pysam ==0.19.1 development
- pystow ==0.4.4 development
- pytest ==7.1.2 development
- pytest-asyncio ==0.18.3 development
- pytest-cov ==3.0.0 development
- python-dateutil ==2.8.2 development
- python-jsonschema-objects ==0.4.1 development
- pytz ==2022.1 development
- pyyaml ==6.0 development
- pyzmq ==23.1.0 development
- qtconsole ==5.3.1 development
- qtpy ==2.1.0 development
- rdflib ==6.1.1 development
- requests ==2.28.0 development
- requests-cache ==0.9.4 development
- requests-ftp ==0.3.1 development
- requests-html ==0.10.0 development
- requests-oauthlib ==1.3.1 development
- s3transfer ==0.6.0 development
- send2trash ==1.8.0 development
- setuptools ==62.4.0 development
- simplejson ==3.17.6 development
- six ==1.16.0 development
- sniffio ==1.2.0 development
- snowballstemmer ==2.2.0 development
- soupsieve ==2.3.2.post1 development
- sqlparse ==0.4.2 development
- stack-data ==0.2.0 development
- starlette ==0.19.1 development
- tabulate ==0.8.9 development
- terminado ==0.15.0 development
- thera-py ==0.3.5 development
- tinycss2 ==1.1.1 development
- toml ==0.10.2 development
- tomli ==2.0.1 development
- tornado ==6.1 development
- tqdm ==4.64.0 development
- traitlets ==5.2.2.post1 development
- typing-extensions ==4.2.0 development
- typing-inspect ==0.7.1 development
- url-normalize ==1.4.3 development
- urllib3 ==1.26.9 development
- uta-tools ==0.1.1 development
- uvicorn ==0.17.6 development
- uvloop ==0.16.0 development
- variation-normalizer ==0.4.0a7 development
- vcfpy ==0.13.4 development
- virtualenv ==20.14.1 development
- w3lib ==1.22.0 development
- watchdog ==2.1.9 development
- wcwidth ==0.2.5 development
- webencodings ==0.5.1 development
- websocket-client ==1.3.2 development
- websockets ==10.3 development
- widgetsnbextension ==3.6.0 development
- wikibaseintegrator ==0.11.0 development
- yoyo-migrations ==7.3.2 development
- zipp ==3.8.0 development
- aiofiles ==0.8.0
- anyio ==3.6.1
- appdirs ==1.4.4
- appnope ==0.1.3
- argcomplete ==2.0.0
- argh ==0.26.2
- asgiref ==3.5.2
- asttokens ==2.0.5
- asyncclick ==8.1.3.2
- asyncpg ==0.25.0
- attrs ==21.4.0
- backcall ==0.2.0
- backoff ==2.1.2
- backports-datetime-fromisoformat ==1.0.0
- beautifulsoup4 ==4.11.1
- biocommons.seqrepo ==0.6.5
- bioregistry ==0.5.21
- bioutils ==0.5.6
- bioversions ==0.5.21
- boto3 ==1.24.8
- botocore ==1.27.8
- bs4 ==0.0.1
- cachier ==1.5.4
- canonicaljson ==1.6.2
- cattrs ==1.10.0
- certifi ==2022.5.18.1
- charset-normalizer ==2.0.12
- chembl-downloader ==0.3.0
- civicpy ==1.1.3
- class-resolver ==0.3.10
- click ==8.1.3
- click-default-group ==1.2.2
- coloredlogs ==15.0.1
- configparser ==5.2.0
- cssselect ==1.1.0
- cython ==0.29.30
- dataclasses-json ==0.5.7
- decorator ==5.1.1
- defusedxml ==0.7.1
- deprecation ==2.1.0
- disease-normalizer ==0.2.12
- executing ==0.8.3
- fake-useragent ==0.1.11
- fastapi ==0.78.0
- ga4gh.vrs ==0.8a0
- ga4gh.vrsatile.pydantic ==0.0.11
- gene-normalizer ==0.1.27
- gffutils ==0.11.0
- h11 ==0.13.0
- hgvs ==1.5.2
- httptools ==0.4.0
- humanfriendly ==10.0
- idna ==3.3
- importlib-metadata ==4.11.4
- inflection ==0.5.1
- ipython ==8.4.0
- isodate ==0.6.1
- jedi ==0.18.1
- jmespath ==1.0.0
- jsondiff ==2.0.0
- jsonschema ==3.2.0
- lxml ==4.9.0
- markdown ==3.3.7
- marshmallow ==3.16.0
- marshmallow-enum ==1.5.1
- matplotlib-inline ==0.1.3
- more-click ==0.1.1
- mwoauth ==0.3.8
- mypy-extensions ==0.4.3
- neo4j ==4.4.4
- networkx ==2.8.3
- numpy ==1.22.4
- oauthlib ==3.2.0
- obonet ==0.3.0
- owlready2 ==0.38
- packaging ==21.3
- pandas ==1.4.2
- parse ==1.19.0
- parsley ==1.3
- parso ==0.8.3
- pathtools ==0.1.2
- pexpect ==4.8.0
- pickleshare ==0.7.5
- portalocker ==2.4.0
- prompt-toolkit ==3.0.29
- psycopg2 ==2.9.3
- ptyprocess ==0.7.0
- pure-eval ==0.2.2
- pydantic ==1.9.1
- pyee ==8.2.2
- pyfaidx ==0.7.0
- pygments ==2.12.0
- pyjwt ==2.4.0
- pyliftover ==0.4
- pyparsing ==2.4.7
- pyppeteer ==1.0.2
- pyquery ==1.4.3
- pyrsistent ==0.18.1
- pysam ==0.19.1
- pystow ==0.4.4
- python-dateutil ==2.8.2
- python-jsonschema-objects ==0.4.1
- pytz ==2022.1
- pyyaml ==6.0
- rdflib ==6.1.1
- requests ==2.28.0
- requests-cache ==0.9.4
- requests-ftp ==0.3.1
- requests-html ==0.10.0
- requests-oauthlib ==1.3.1
- s3transfer ==0.6.0
- setuptools ==62.4.0
- simplejson ==3.17.6
- six ==1.16.0
- sniffio ==1.2.0
- soupsieve ==2.3.2.post1
- sqlparse ==0.4.2
- stack-data ==0.2.0
- starlette ==0.19.1
- tabulate ==0.8.9
- thera-py ==0.3.5
- tqdm ==4.64.0
- traitlets ==5.2.2.post1
- typing-extensions ==4.2.0
- typing-inspect ==0.7.1
- url-normalize ==1.4.3
- urllib3 ==1.26.9
- uta-tools ==0.1.1
- uvicorn ==0.17.6
- uvloop ==0.16.0
- variation-normalizer ==0.4.0a7
- vcfpy ==0.13.4
- w3lib ==1.22.0
- watchdog ==2.1.9
- wcwidth ==0.2.5
- websockets ==10.3
- wikibaseintegrator ==0.11.0
- yoyo-migrations ==7.3.2
- zipp ==3.8.0
- actions/checkout v3 composite
- actions/setup-python v4 composite