Skip to content

Commit

Permalink
add vcf ancestry test
Browse files Browse the repository at this point in the history
  • Loading branch information
nebfield committed Sep 27, 2023
1 parent 65c1e7e commit 6825269
Show file tree
Hide file tree
Showing 5 changed files with 198 additions and 0 deletions.
157 changes: 157 additions & 0 deletions .github/workflows/ancestry-vcf.yml
@@ -0,0 +1,157 @@
name: Run ancestry test with singularity or docker profiles

on:
workflow_call:
inputs:
container-cache-key:
type: string
required: true
ancestry-cache-key:
type: string
required: true
docker:
type: boolean
singularity:
type: boolean

env:
NXF_SINGULARITY_CACHEDIR: ${{ github.workspace }}/singularity
SINGULARITY_VERSION: 3.8.3

jobs:
docker:
if: ${{ inputs.docker }}
runs-on: ubuntu-latest

steps:
- name: Set environment variables
run: |
echo "ANCESTRY_REF_DIR=$RUNNER_TEMP" >> $GITHUB_ENV
echo "ANCESTRY_TARGET_DIR=$RUNNER_TEMP" >> $GITHUB_ENV
- name: Check out pipeline code
uses: actions/checkout@v3

- uses: nf-core/setup-nextflow@v1

- name: Restore docker images
id: restore-docker
uses: actions/cache/restore@v3
with:
path: ${{ runner.temp }}/docker
key: ${{ inputs.container-cache-key }}
fail-on-cache-miss: true

- name: Load docker images from cache
run: |
find $HOME -name '*.tar'
find ${{ runner.temp }}/docker/ -name '*.tar' -exec sh -c 'docker load < {}' \;
- name: Restore reference data
uses: actions/cache/restore@v3
with:
path: |
${{ env.ANCESTRY_TARGET_DIR }}/GRCh38_HAPNEST_TARGET_ALL.pgen
${{ env.ANCESTRY_TARGET_DIR }}/GRCh38_HAPNEST_TARGET_ALL.psam
${{ env.ANCESTRY_TARGET_DIR }}/GRCh38_HAPNEST_TARGET_ALL.pvar.zst
${{ env.ANCESTRY_REF_DIR }}/GRCh38_HAPNEST_reference.tar.zst
key: ${{ inputs.ancestry-cache-key }}
fail-on-cache-miss: true

- name: Install plink2 to recode
run: sudo apt-get install -y plink2

- name: Make VCF
run: |
plink2 --pfile ${{ env.ANCESTRY_TARGET_DIR }}/GRCh38_HAPNEST_TARGET_ALL vzs \
--export vcf bgz \
--out ${{ env.ANCESTRY_TARGET_DIR }}/GRCh38_HAPNEST_TARGET_ALL

- name: Set up test requirements
uses: actions/setup-python@v3
with:
python-version: '3.10'
cache: 'pip'

- run: pip install -r ${{ github.workspace }}/tests/requirements.txt

- name: Run ancestry test
run: TMPDIR=~ PROFILE=docker pytest --kwdof --symlink --git-aware --wt 2 --tag "ancestry vcf" --ignore tests/bin

- name: Upload logs on failure
if: failure()
uses: actions/upload-artifact@v3
with:
name: logs-singularity-ancestry
path: |
/home/runner/pytest_workflow_*/*/.nextflow.log
/home/runner/pytest_workflow_*/*/log.out
/home/runner/pytest_workflow_*/*/log.err
/home/runner/pytest_workflow_*/*/output/*
singularity:
if: ${{ inputs.singularity }}
runs-on: ubuntu-latest

steps:
- name: Set environment variables
run: |
echo "ANCESTRY_REF_DIR=$RUNNER_TEMP" >> $GITHUB_ENV
echo "ANCESTRY_TARGET_DIR=$RUNNER_TEMP" >> $GITHUB_ENV
- name: Check out pipeline code
uses: actions/checkout@v3

- uses: nf-core/setup-nextflow@v1

- name: Restore singularity setup
id: restore-singularity-setup
uses: actions/cache@v3
with:
path: /opt/hostedtoolcache/singularity/${{ env.SINGULARITY_VERSION }}/x64
key: ${{ runner.os }}-singularity-${{ env.SINGULARITY_VERSION }}
fail-on-cache-miss: true

- name: Add singularity to path
run: |
echo "/opt/hostedtoolcache/singularity/${{ env.SINGULARITY_VERSION }}/x64/bin" >> $GITHUB_PATH
- name: Restore singularity container images
id: restore-singularity
uses: actions/cache@v3
with:
path: ${{ env.NXF_SINGULARITY_CACHEDIR }}
key: ${{ inputs.container-cache-key }}

- name: Restore reference data
uses: actions/cache/restore@v3
with:
path: |
${{ env.ANCESTRY_TARGET_DIR }}/GRCh38_HAPNEST_TARGET_ALL.pgen
${{ env.ANCESTRY_TARGET_DIR }}/GRCh38_HAPNEST_TARGET_ALL.psam
${{ env.ANCESTRY_TARGET_DIR }}/GRCh38_HAPNEST_TARGET_ALL.pvar.zst
${{ env.ANCESTRY_REF_DIR }}/GRCh38_HAPNEST_reference.tar.zst
key: ${{ inputs.ancestry-cache-key }}
fail-on-cache-miss: true

- name: Set up test requirements
uses: actions/setup-python@v3
with:
python-version: '3.10'
cache: 'pip'

- run: pip install -r ${{ github.workspace }}/tests/requirements.txt

- name: Run ancestry test
run: TMPDIR=~ PROFILE=singularity pytest --kwdof --symlink --git-aware --wt 2 --tag "ancestry" --ignore tests/bin

- name: Upload logs on failure
if: failure()
uses: actions/upload-artifact@v3
with:
name: logs-singularity-ancestry
path: |
/home/runner/pytest_workflow_*/*/.nextflow.log
/home/runner/pytest_workflow_*/*/log.out
/home/runner/pytest_workflow_*/*/log.err
/home/runner/pytest_workflow_*/*/output/*
9 changes: 9 additions & 0 deletions .github/workflows/ci.yml
Expand Up @@ -9,6 +9,7 @@ on:
branches:
- dev
- main
- fix_vcf
release:
types: [published]

Expand Down Expand Up @@ -123,3 +124,11 @@ jobs:
container-cache-key: ${{ needs.preload_singularity.outputs.cache-key }}
ancestry-cache-key: ${{ needs.preload_ancestry.outputs.cache-key }}
singularity: true

ancestry_vcf_docker:
needs: [preload_ancestry, preload_docker]
uses: ./.github/workflows/ancestry-vcf.yml
with:
container-cache-key: ${{ needs.preload_docker.outputs.cache-key }}
ancestry-cache-key: ${{ needs.preload_ancestry.outputs.cache-key }}
docker: true
2 changes: 2 additions & 0 deletions tests/ancestry/samplesheet_vcf.csv
@@ -0,0 +1,2 @@
sampleset,path_prefix,chrom,format
test,ANCESTRY_TARGET_DIR/GRCh38_HAPNEST_TARGET_ALL,,vcf
File renamed without changes.
30 changes: 30 additions & 0 deletions tests/ancestry/test_ancestry_vcf.yml
@@ -0,0 +1,30 @@
# ancestry test notes:
# need to stage reference in $ANCESTRY_REF_DIR
# extract target in $ANCESTRY_TARGET_DIR
# need to convert target to VCF

- name: test ancestry projection and scoring
command: >
bash -c "
sed \"s|ANCESTRY_TARGET_DIR|$ANCESTRY_TARGET_DIR|\" tests/ancestry/samplesheet.csv > samplesheet.csv;
nextflow run main.nf -c ./tests/config/nextflow.config \
--input samplesheet.csv \
--run_ancestry $ANCESTRY_REF_DIR/GRCh38_HAPNEST_reference.tar.zst \
--target_build GRCh38 \
--pgs_id PGS001229 \
--min_overlap 0.50 \
--target_build GRCh38 \
--scorefile false
"
tags:
- ancestry vcf
- slow
stdout:
contains:
- "Pipeline completed successfully"
files:
- path: "output/test/score/pop_summary.csv"
contains:
- "AFR,100 (33.33%)"
- "EAS,100 (33.33%)"
- "EUR,100 (33.33%)"

0 comments on commit 6825269

Please sign in to comment.