Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: Set up environment for CI
run: |
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v6

- name: Assume AWS IAM Role
uses: aws-actions/configure-aws-credentials@v4
uses: aws-actions/configure-aws-credentials@v6
with:
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
aws-region: eu-west-2
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: "3.11"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: "3.11"

Expand All @@ -36,80 +36,87 @@ jobs:
root: tests/fixtures/prebuilt_public_project
require_project_files: "true"

test:
unit-test:
needs: schema
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: "3.11"
cache: "pip"

- name: Install project and test dependencies
- name: Install project and unit test dependencies
run: |
python -m pip install --upgrade pip
pip install -e ".[dev]"
pip install -e ".[test]"

- name: Run pytest with coverage
env:
PYTEST_DISABLE_PLUGIN_AUTOLOAD: "1"
run: |
pytest -m "not e2e" -p pytest_cov --cov=vertex --cov-report=term-missing --cov-report=xml
python -m pytest \
-m "not e2e" \
--ignore=tests/frontend-smoke/ \
--code-highlight=yes \
--color=yes \
--verbosity=3 \
-p pytest_cov \
--cov=vertex \
--cov-report=term-missing \
--cov-report=xml

- name: Upload coverage.xml artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
with:
name: coverage-xml
path: coverage.xml
if-no-files-found: error

- name: Upload coverage report to Codecov (best effort)
continue-on-error: true
uses: codecov/codecov-action@v5
uses: codecov/codecov-action@v6
with:
files: ./coverage.xml
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false
verbose: true

frontend-smoke:
frontend-smoke-test:
needs: schema
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: "3.11"
cache: "pip"

- name: Install project and test dependencies
- name: Install frontend smoke test dependencies
run: |
python -m pip install --upgrade pip
pip install -e ".[dev]"
pip install -e ".[frontend-smoke-tests]"

- name: Install Playwright Chromium browser
run: |
python -m playwright install --with-deps chromium

- name: Run Playwright smoke tests
- name: Run frontend smoke tests
env:
PLAYWRIGHT_ARTIFACTS_DIR: test-results/playwright
PYTEST_DISABLE_PLUGIN_AUTOLOAD: "1"
run: |
pytest tests/test_playwright_smoke.py
python -m pytest \
--code-highlight=yes \
--color=yes \
--verbosity=3 \
tests/frontend-smoke/test_playwright_smoke.py

- name: Upload Playwright artifacts on failure
if: failure()
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
with:
name: playwright-artifacts
path: test-results/playwright
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/validate-project-outputs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,10 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: "3.11"

Expand Down
3 changes: 3 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ FROM python:3.11-slim
# Set the working directory
WORKDIR /app

# Install Git
RUN apt update && apt install -y git

# Upgrade pip and install pip-tools first
RUN pip install "pip<25" "setuptools<80" wheel
RUN pip install "pip-tools==7.5.1"
Expand Down
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ VERTEX has three main elements:

VERTEX processes and visualizes data using the concept of **Reproducible Analytical Pipelines (RAPs)**. RAPs are a set of resuable functions or blocks of code that can request specific variables from an [ISARIC ARC](https://github.com/ISARICResearch/ARC)-formatted REDCap database. These functions then process the data to generate dataframes, which can then be visualized interactively through a Plotly Dash app.

## VERTEX Version 1.0
## VERTEX Version 2.0.0

**VERTEX Version 1.0** includes insight panels developed for the following research questions:
**VERTEX Version 2.0.0** includes insight panels developed for the following research questions:
- Clinical characterization of on presentation, including:
- demographics and comorbidities
- pregnancy
Expand Down Expand Up @@ -97,7 +97,7 @@ pip install -e .
```
Any changes to the entrypoint definition or function implementing the entrypoint logic requires a re-installation (`pip uninstall -y isaric-vertex` and `pip install -e .`). The entrypoints currently include:

* `descriptive-analytics` - generates analytics outputs from a given project source folder and saving them to local folder (within the project folder), e.g. for the Dengue synthetic demo project
* `descriptive-analytics` - generates analytics outputs from a given project source folder and saving them to local folder (in an `outputs` subfolder of the project source folder), e.g. for the Dengue synthetic demo project
```shell
$ descriptive-analytics demo-projects/ARChetypeCRF_dengue_synthetic/
2026-03-26 10:00:05 [INFO] vertex.descriptive_analytics: Loading project data from project path: "/Users/smurthy/Documents/srm/dev/VERTEX/demo-projects/ARChetypeCRF_dengue_synthetic"
Expand All @@ -112,8 +112,8 @@ $ descriptive-analytics demo-projects/ARChetypeCRF_dengue_synthetic/
```

> [!Note]
The `descriptive-analytics` tool requires Google Chrome to be installed as some Chrome imaging functionality is used by the [kaleido](https://plotly.com/python/static-image-export/#kaleido) dependency when exporting/saving
images - see [https://plotly.com/python/static-image-export/] for further information.
The `descriptive-analytics` tool requires Google Chrome to be installed as some Chrome imaging functionality is used by the [`kaleido`](https://plotly.com/python/static-image-export/#kaleido) dependency when exporting/saving
images - see [this](https://plotly.com/python/static-image-export/) for further information.

## Contributors

Expand Down
3 changes: 1 addition & 2 deletions codecov.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@ coverage:
threshold: 1%
patch:
default:
target: auto
threshold: 1%
target: 20%

ignore:
- "demo-projects/*"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"map_layout_center_latitude": 6,
"map_layout_center_longitude": -75,
"map_layout_zoom": 1.7,
"save_outputs": false,
"save_outputs": true,
"outputs_path": "outputs/",
"insight_panels_path": "insight_panels/",
"insight_panels": [
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import isaricanalytics.IsaricDraw as idw
import pandas as pd

import vertex.IsaricDraw as idw


def define_button():
"""Defines the button in the main dashboard menu"""
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import isaricanalytics.IsaricAnalytics as ia
import isaricanalytics.IsaricDraw as idw
import pandas as pd

import vertex.IsaricAnalytics as ia
import vertex.IsaricDraw as idw


def define_button():
"""Defines the button in the main dashboard menu"""
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import isaricanalytics.IsaricAnalytics as ia
import isaricanalytics.IsaricDraw as idw
import numpy as np
import pandas as pd

import vertex.IsaricAnalytics as ia
import vertex.IsaricDraw as idw


def define_button():
"""Defines the button in the main dashboard menu"""
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import isaricanalytics.IsaricAnalytics as ia
import isaricanalytics.IsaricDraw as idw
import pandas as pd

import vertex.IsaricAnalytics as ia
import vertex.IsaricDraw as idw


def define_button():
"""Defines the button in the main dashboard menu"""
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import isaricanalytics.IsaricAnalytics as ia
import isaricanalytics.IsaricDraw as idw
import pandas as pd

import vertex.IsaricAnalytics as ia
import vertex.IsaricDraw as idw


def define_button():
"""Defines the button in the main dashboard menu"""
Expand Down
2 changes: 1 addition & 1 deletion demo-projects/ARChetypeCRF_h5nx_synthetic/config_file.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"map_layout_center_latitude": 6,
"map_layout_center_longitude": -75,
"map_layout_zoom": 1.7,
"save_outputs": false,
"save_outputs": true,
"outputs_path": "outputs/",
"insight_panels_path": "insight_panels/",
"insight_panels": [
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import isaricanalytics.IsaricDraw as idw
Comment thread
sr-murthy marked this conversation as resolved.
import pandas as pd

import vertex.IsaricDraw as idw


def define_button():
"""Defines the button in the main dashboard menu"""
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import isaricanalytics.IsaricAnalytics as ia
import isaricanalytics.IsaricDraw as idw
import pandas as pd

import vertex.IsaricAnalytics as ia
import vertex.IsaricDraw as idw


def define_button():
"""Defines the button in the main dashboard menu"""
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import isaricanalytics.IsaricAnalytics as ia
import isaricanalytics.IsaricDraw as idw
import numpy as np
import pandas as pd

import vertex.IsaricAnalytics as ia
import vertex.IsaricDraw as idw


def define_button():
"""Defines the button in the main dashboard menu"""
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import isaricanalytics.IsaricAnalytics as ia
import isaricanalytics.IsaricDraw as idw
import pandas as pd

import vertex.IsaricAnalytics as ia
import vertex.IsaricDraw as idw


def define_button():
"""Defines the button in the main dashboard menu"""
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import isaricanalytics.IsaricAnalytics as ia
import isaricanalytics.IsaricDraw as idw
import pandas as pd

import vertex.IsaricAnalytics as ia
import vertex.IsaricDraw as idw


def define_button():
"""Defines the button in the main dashboard menu"""
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import isaricanalytics.IsaricDraw as idw
import pandas as pd

import vertex.IsaricDraw as idw


def define_button():
"""Defines the button in the main dashboard menu"""
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import isaricanalytics.IsaricAnalytics as ia
import isaricanalytics.IsaricDraw as idw
import pandas as pd

import vertex.IsaricAnalytics as ia
import vertex.IsaricDraw as idw


def define_button():
"""Defines the button in the main dashboard menu"""
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import isaricanalytics.IsaricAnalytics as ia
import isaricanalytics.IsaricDraw as idw
import pandas as pd

import vertex.IsaricAnalytics as ia
import vertex.IsaricDraw as idw


def define_button():
"""Defines the button in the main dashboard menu"""
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import isaricanalytics.IsaricAnalytics as ia
import isaricanalytics.IsaricDraw as idw
import pandas as pd

import vertex.IsaricAnalytics as ia
import vertex.IsaricDraw as idw


def define_button():
"""Defines the button in the main dashboard menu"""
Expand Down
Loading
Loading