# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
name: Test databases with PyTest
on:
push:
branches: [ dev-databases ]
jobs:
build:
# Don't run on forked repos.
if: github.repository_owner == 'DeepPSP'
runs-on: ubuntu-22.04
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12"]
steps:
- uses: actions/checkout@v4
- name: Clear unnecessary system components
run: |
echo "Free space:"
df -h
sudo rm -rf /usr/local/lib/android # will release about 10 GB if you don't need Android
sudo rm -rf /usr/share/dotnet # will release about 20GB if you don't need .NET
sudo rm -rf /opt/ghc
sudo rm -rf /usr/local/share/boost
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
echo "Free space:"
df -h
- name: Install system libraries
run: |
sudo apt update
sudo apt install build-essential ffmpeg libsm6 libxext6 libsndfile1 git -y
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.0' # Not needed with a .ruby-version file
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: 'pip' # caching pip dependencies
- name: List existing Python packages
run: |
python -m pip list
- name: Install dependencies
run: |
python -m pip install --upgrade pip setuptools wheel
python -m pip install -r requirements.txt
python -m pip install pytest pytest-xdist # Testing packages
python -m pip uninstall torch-ecg --yes # Remove if already installed
python setup.py install_egg_info # Workaround https://github.com/pypa/pip/issues/4537
python -m pip install -e .[dev]
python -m pip freeze
- name: List installed Python packages
run: |
python -m pip list
- name: Install nsrr and download a samll part of SHHS to do test
# ref. https://github.com/DeepPSP/nsrr-automate
uses: gacts/run-and-post-run@v1
with:
run: |
gem install nsrr --no-document
nsrr download shhs/polysomnography/edfs/shhs1/ --file="^shhs1\-20010.*\.edf" --token=${{ secrets.NSRR_TOKEN }}
nsrr download shhs/polysomnography/annotations-events-nsrr/shhs1/ --file="^shhs1\-20010.*\-nsrr\.xml" --token=${{ secrets.NSRR_TOKEN }}
nsrr download shhs/polysomnography/annotations-events-profusion/shhs1/ --file="^shhs1\-20010.*\-profusion\.xml" --token=${{ secrets.NSRR_TOKEN }}
nsrr download shhs/polysomnography/annotations-rpoints/shhs1/ --file="^shhs1\-20010.*\-rpoint\.csv" --token=${{ secrets.NSRR_TOKEN }}
nsrr download shhs/datasets/ --shallow --token=${{ secrets.NSRR_TOKEN }}
nsrr download shhs/datasets/hrv-analysis/ --token=${{ secrets.NSRR_TOKEN }}
mkdir -p ~/tmp/nsrr-data/
mv shhs/ ~/tmp/nsrr-data/
cd ~/tmp/nsrr-data/
du -sh $(ls -A)
post: |
cd ~/tmp/
du -sh $(ls -A)
touch .keep
rm -rf ./nsrr-data/
du -sh $(ls -A)
- name: Run test SHHS with pytest
run: |
pytest -vv -s test/test_databases/test_shhs.py
- name: Run test other databases with pytest
run: |
pytest -vv -s test/test_databases/test_cachet_cadb.py
pytest -vv -s test/test_databases/test_sph.py
- name: Run test normal physionet databases with pytest
run: |
pytest -vv -s test/test_databases/test_base.py
pytest -vv -s test/test_databases/test_afdb.py
pytest -vv -s test/test_databases/test_apnea_ecg.py
pytest -vv -s test/test_databases/test_cinc2017.py
pytest -vv -s test/test_databases/test_cinc2018.py
pytest -vv -s test/test_databases/test_ltafdb.py
pytest -vv -s test/test_databases/test_ludb.py
pytest -vv -s test/test_databases/test_mitdb.py
pytest -vv -s test/test_databases/test_qtdb.py
- name: Run test CPSC databases with pytest
run: |
pytest -vv -s test/test_databases/test_cpsc2018.py
pytest -vv -s test/test_databases/test_cpsc2019.py
pytest -vv -s test/test_databases/test_cpsc2020.py
pytest -vv -s test/test_databases/test_cpsc2021.py
- name: Run test CinC20/21 databases with pytest
run: |
pytest -vv -s test/test_databases/test_cinc2020.py
pytest -vv -s test/test_databases/test_cinc2021.py