-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Docker vn #553
base: staging
Are you sure you want to change the base?
Docker vn #553
Changes from all commits
66f1dd3
bca6920
cae7672
4c99169
85fd817
7947ef8
f85585c
4eb5504
5409cfd
6b43351
2ec3fc2
a1d8f15
8645c1a
ff31b57
90c77e1
8c49949
e60c5ee
94bf397
20e1eec
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
name: Pull Request Has Priority Label | ||
on: | ||
pull_request: | ||
types: [opened, labeled, unlabeled, synchronize] | ||
jobs: | ||
pr-priority-label: | ||
runs-on: ubuntu-latest | ||
permissions: | ||
issues: write | ||
pull-requests: write | ||
outputs: | ||
status: ${{ steps.check-labels.outputs.status }} | ||
steps: | ||
- id: check-labels | ||
uses: mheap/github-action-required-labels@v5 | ||
with: | ||
mode: exactly | ||
count: 1 | ||
labels: "priority:*" | ||
use_regex: true | ||
add_comment: true | ||
message: "PRs require a priority label. Please add one." | ||
exit_type: failure |
rajatkapoordfci marked this conversation as resolved.
Show resolved
Hide resolved
|
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -1,25 +1,28 @@ | ||||||||||||||||||||||||||||||||||
# Variation Normalization | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.5894937.svg)](https://doi.org/10.5281/zenodo.5894937) | ||||||||||||||||||||||||||||||||||
[![image](https://img.shields.io/pypi/v/variation-normalizer.svg)](https://pypi.python.org/pypi/variation-normalizer) [![image](https://img.shields.io/pypi/l/variation-normalizer.svg)](https://pypi.python.org/pypi/variation-normalizer) [![image](https://img.shields.io/pypi/pyversions/variation-normalizer.svg)](https://pypi.python.org/pypi/variation-normalizer) [![Actions status](https://github.com/cancervariants/variation-normalization/actions/workflows/checks.yaml/badge.svg)](https://github.com/cancervariants/variation-normalization/actions/checks.yaml)[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.5894937.svg)](https://doi.org/10.5281/zenodo.5894937) | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
Services and guidelines for normalizing variation terms to [VRS](https://vrs.ga4gh.org/en/latest) compatible representations. | ||||||||||||||||||||||||||||||||||
<!-- description --> | ||||||||||||||||||||||||||||||||||
The Variation Normalizer parses and translates free-text descriptions of genomic variations into computable objects conforming to the [Variation Representation Specification (VRS)](https://vrs.ga4gh.org/en/latest), enabling consistent and accurate variant harmonization across a diversity of genomic knowledge resources. | ||||||||||||||||||||||||||||||||||
<!-- /description --> | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
Public OpenAPI endpoint: <https://normalize.cancervariants.org/variation> | ||||||||||||||||||||||||||||||||||
--- | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
Installing with pip: | ||||||||||||||||||||||||||||||||||
[Live OpenAPI endpoint](https://normalize.cancervariants.org/variation) | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
--- | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
## Installation | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
Install from [PyPI](https://pypi.org/project/variation-normalizer): | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
```shell | ||||||||||||||||||||||||||||||||||
pip install variation-normalizer | ||||||||||||||||||||||||||||||||||
python3 -m pip install variation-normalizer | ||||||||||||||||||||||||||||||||||
``` | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
The variation-normalization repo depends on VRS models, and therefore each variation-normalizer package on PyPI uses a particular version of VRS. The correspondences between packages may be summarized as: | ||||||||||||||||||||||||||||||||||
--- | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
| variation-normalization branch | variation-normalizer version | gene-normalizer version | VRS version | | ||||||||||||||||||||||||||||||||||
| ---- | --- | ---- | --- | | ||||||||||||||||||||||||||||||||||
| [main](https://github.com/cancervariants/variation-normalization/tree/main) | 0.6.X | 0.1.X | [1.X.X](https://github.com/ga4gh/vrs) | | ||||||||||||||||||||||||||||||||||
| [staging](https://github.com/cancervariants/variation-normalization/tree/staging) | 0.8.X | 0.3.X | [2.0-alpha](https://github.com/ga4gh/vrs/tree/2.0-alpha) | | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
## About | ||||||||||||||||||||||||||||||||||
## Normalization | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
Variation Normalization works by using four main steps: tokenization, classification, validation, and translation. During tokenization, we split strings on whitespace and parse to determine the type of token. During classification, we specify the order of tokens a classification can have. We then do validation checks such as ensuring references for a nucleotide or amino acid matches the expected value and validating a position exists on the given transcript. During translation, we return a VRS Allele object. | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
|
@@ -36,7 +39,18 @@ Variation Normalizer accepts input from GRCh37 or GRCh8 assemblies. | |||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
We are working towards adding more types of variations, coordinates, and representations. | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
### Endpoints | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
### VRS Versioning | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
The variation-normalization repo depends on VRS models, and therefore each variation-normalizer package on PyPI uses a particular version of VRS. The correspondences between packages may be summarized as: | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
| variation-normalization branch | variation-normalizer version | gene-normalizer version | VRS version | | ||||||||||||||||||||||||||||||||||
| ---- | --- | ---- | --- | | ||||||||||||||||||||||||||||||||||
| [main](https://github.com/cancervariants/variation-normalization/tree/main) | 0.6.X | 0.1.X | [1.X.X](https://github.com/ga4gh/vrs) | | ||||||||||||||||||||||||||||||||||
| [staging](https://github.com/cancervariants/variation-normalization/tree/staging) | 0.8.X | 0.3.X | [2.0-alpha](https://github.com/ga4gh/vrs/tree/2.0-alpha) | | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
### Available Endpoints | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
#### `/to_vrs` | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
|
@@ -48,7 +62,7 @@ Returns a VRS Variation aligned to the prioritized transcript. The Variation Nor | |||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
If a genomic variation query _is_ given a gene (E.g. `BRAF g.140753336A>T`), the associated cDNA representation will be returned. This is because the gene provides additional strand context. If a genomic variation query is _not_ given a gene, the GRCh38 representation will be returned. | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
## Developer Instructions | ||||||||||||||||||||||||||||||||||
## Development | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
Clone the repo: | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
|
@@ -68,7 +82,7 @@ pipenv shell | |||||||||||||||||||||||||||||||||
pipenv update && pipenv install --dev | ||||||||||||||||||||||||||||||||||
``` | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
### Backend Services | ||||||||||||||||||||||||||||||||||
### Required resources | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
Variation Normalization relies on some local data caches which you will need to set up. It uses pipenv to manage its environment, which you will also need to install. | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
|
@@ -154,11 +168,11 @@ uvicorn variation.main:app --reload | |||||||||||||||||||||||||||||||||
Next, view the OpenAPI docs on your local machine: | ||||||||||||||||||||||||||||||||||
<http://127.0.0.1:8000/variation> | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
### Init coding style tests | ||||||||||||||||||||||||||||||||||
### Code QC | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
Code style is managed by [Ruff](https://docs.astral.sh/ruff/) and checked prior to commit. | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
Check style with `ruff`: | ||||||||||||||||||||||||||||||||||
To perform formatting and check style: | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
```shell | ||||||||||||||||||||||||||||||||||
python3 -m ruff format . && python3 -m ruff check --fix . | ||||||||||||||||||||||||||||||||||
|
@@ -186,3 +200,44 @@ From the _root_ directory of the repository: | |||||||||||||||||||||||||||||||||
```shell | ||||||||||||||||||||||||||||||||||
pytest tests/ | ||||||||||||||||||||||||||||||||||
``` | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
## Docker Setup: | ||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||||||||
This section deals with setting up Variation Normalizer's backend dependencies via Docker. You must have Docker installed for this section. See more [here](https://docs.docker.com/engine/install/). | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
To create a new Docker network, use the [docker network create](https://docs.docker.com/reference/cli/docker/network/create/) command. For example, `docker network create tulip-net` | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
## SeqRepo | ||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This should be a subheading
Suggested change
|
||||||||||||||||||||||||||||||||||
Variation Normalizer depends on [Biocommons SeqRepo](https://github.com/biocommons/biocommons.seqrepo). It is recommended to have the image as a volume attached to SeqRepo since the size exceeds 10 GB and can take a while to download. | ||||||||||||||||||||||||||||||||||
1. Pull the image from Docker Hub Repository: | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
```shell | ||||||||||||||||||||||||||||||||||
docker pull biocommons/seqrepo | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
## UTA | ||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This should be a subheading
Suggested change
|
||||||||||||||||||||||||||||||||||
The Postgres UTA instance is another dependancy required for Variation Normalizer. To setup Container for UTA postgres Db instance. Follow the following steps: | ||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||||||||
a.) Pull the image from Docker Hub Repository by typing following command in terminal. | ||||||||||||||||||||||||||||||||||
Set the uta_v env variable by typing command uta_v=<"name of the version>. For eg uta_v=uta_20210129b. | ||||||||||||||||||||||||||||||||||
Command : docker pull biocommons/uta:$uta_v | ||||||||||||||||||||||||||||||||||
b.) Once the image is downnloaded, Start the container with the command : | ||||||||||||||||||||||||||||||||||
docker run | ||||||||||||||||||||||||||||||||||
-d | ||||||||||||||||||||||||||||||||||
-e POSTGRES_PASSWORD=some-password-that-you-make-up | ||||||||||||||||||||||||||||||||||
-v /tmp:/tmp | ||||||||||||||||||||||||||||||||||
-v uta_vol:/var/lib/postgresql/data | ||||||||||||||||||||||||||||||||||
--name $uta_v | ||||||||||||||||||||||||||||||||||
--net=<"name of the network> \ | ||||||||||||||||||||||||||||||||||
biocommons/uta:$uta_v | ||||||||||||||||||||||||||||||||||
Comment on lines
+218
to
+229
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Where b.) Once the image is downloaded, run the following: docker run
-d
-e POSTGRES_PASSWORD=some-password-that-you-make-up
-v /tmp:/tmp
-v uta_vol:/var/lib/postgresql/data
--name $uta_v
--net=<"name of the network> \
biocommons/uta:$uta_v
|
||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
### DynamoDB | ||||||||||||||||||||||||||||||||||
AWS provides a docker image for the local instance. The DynamoDB local instance requires credentials (`AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`). You can provide dummy values for these if you do not have an AWS account. | ||||||||||||||||||||||||||||||||||
1. Pull the image from Docker Hub repository and start the container: | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
```shell | ||||||||||||||||||||||||||||||||||
docker run --net tulip-net -d --name dynamodb -p 8001:8001 amazon/dynamodb-local:1.18.0 -jar DynamoDBLocal.jar -port 8001 | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
### Running the Dockerfile locally | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
1. Build the image from the docker file: | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
```shell | ||||||||||||||||||||||||||||||||||
docker build -t variation-normalization . |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe we should consider having these as ARGs.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These values are required during container runtime as well. It would be better to continue with ENV unless we are planning for build time customisation.