-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #15 from TRON-Bioinformatics/fix-input-issue
Fix issue when --bam is not provided + add automated integration tests
- Loading branch information
Showing
14 changed files
with
380 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
name: Integration tests | ||
|
||
on: [push] | ||
|
||
jobs: | ||
test: | ||
runs-on: ubuntu-20.04 | ||
strategy: | ||
matrix: | ||
python-version: [ 3.7, 3.8, 3.9 ] | ||
|
||
steps: | ||
- uses: actions/checkout@v2 | ||
- uses: actions/setup-python@v2 | ||
- uses: conda-incubator/setup-miniconda@v2 | ||
with: | ||
auto-update-conda: true | ||
channels: defaults,conda-forge,bioconda | ||
- name: Install dependencies | ||
run: | | ||
sudo apt-get update | ||
sudo apt-get --assume-yes install build-essential libcurl4-openssl-dev libz-dev liblzma-dev | ||
python -m pip install --upgrade pip | ||
pip install setuptools wheel | ||
# this is needed by cyvcf2 and pysam | ||
conda install htslib=1.14 | ||
- name: Install vafator | ||
run: | | ||
python setup.py bdist_wheel | ||
pip install dist/* | ||
- name: Run integration tests | ||
run: | | ||
make clean integration_tests |
2 changes: 1 addition & 1 deletion
2
.github/workflows/automated_tests.yml → .github/workflows/workflow_tests.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
name: Automated tests | ||
name: Workflow tests | ||
|
||
on: [push] | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,248 @@ | ||
#!/usr/bin/env bash | ||
|
||
##################################################################### | ||
## | ||
## title: Assert Extension | ||
## | ||
## description: | ||
## Assert extension of shell (bash, ...) | ||
## with the common assert functions | ||
## Function list based on: | ||
## http://junit.sourceforge.net/javadoc/org/junit/Assert.html | ||
## Log methods : inspired by | ||
## - https://natelandau.com/bash-scripting-utilities/ | ||
## author: Mark Torok | ||
## | ||
## date: 07. Dec. 2016 | ||
## | ||
## license: MIT | ||
## | ||
##################################################################### | ||
|
||
if command -v tput &>/dev/null && tty -s; then | ||
RED=$(tput setaf 1) | ||
GREEN=$(tput setaf 2) | ||
MAGENTA=$(tput setaf 5) | ||
NORMAL=$(tput sgr0) | ||
BOLD=$(tput bold) | ||
else | ||
RED=$(echo -en "\e[31m") | ||
GREEN=$(echo -en "\e[32m") | ||
MAGENTA=$(echo -en "\e[35m") | ||
NORMAL=$(echo -en "\e[00m") | ||
BOLD=$(echo -en "\e[01m") | ||
fi | ||
|
||
log_header() { | ||
printf "\n${BOLD}${MAGENTA}========== %s ==========${NORMAL}\n" "$@" >&2 | ||
} | ||
|
||
log_success() { | ||
printf "${GREEN}✔ %s${NORMAL}\n" "$@" >&2 | ||
} | ||
|
||
log_failure() { | ||
printf "${RED}✖ %s${NORMAL}\n" "$@" >&2 | ||
} | ||
|
||
|
||
assert_eq() { | ||
local expected="$1" | ||
local actual="$2" | ||
local msg="${3-}" | ||
|
||
if [ "$expected" == "$actual" ]; then | ||
return 0 | ||
else | ||
[ "${#msg}" -gt 0 ] && log_failure "$expected == $actual :: $msg" || true | ||
return 1 | ||
fi | ||
} | ||
|
||
assert_not_eq() { | ||
local expected="$1" | ||
local actual="$2" | ||
local msg="${3-}" | ||
|
||
if [ ! "$expected" == "$actual" ]; then | ||
return 0 | ||
else | ||
[ "${#msg}" -gt 0 ] && log_failure "$expected != $actual :: $msg" || true | ||
return 1 | ||
fi | ||
} | ||
|
||
assert_true() { | ||
local actual="$1" | ||
local msg="${2-}" | ||
|
||
assert_eq true "$actual" "$msg" | ||
return "$?" | ||
} | ||
|
||
assert_false() { | ||
local actual="$1" | ||
local msg="${2-}" | ||
|
||
assert_eq false "$actual" "$msg" | ||
return "$?" | ||
} | ||
|
||
assert_array_eq() { | ||
|
||
declare -a expected=("${!1-}") | ||
# echo "AAE ${expected[@]}" | ||
|
||
declare -a actual=("${!2}") | ||
# echo "AAE ${actual[@]}" | ||
|
||
local msg="${3-}" | ||
|
||
local return_code=0 | ||
if [ ! "${#expected[@]}" == "${#actual[@]}" ]; then | ||
return_code=1 | ||
fi | ||
|
||
local i | ||
for (( i=1; i < ${#expected[@]} + 1; i+=1 )); do | ||
if [ ! "${expected[$i-1]}" == "${actual[$i-1]}" ]; then | ||
return_code=1 | ||
break | ||
fi | ||
done | ||
|
||
if [ "$return_code" == 1 ]; then | ||
[ "${#msg}" -gt 0 ] && log_failure "(${expected[*]}) != (${actual[*]}) :: $msg" || true | ||
fi | ||
|
||
return "$return_code" | ||
} | ||
|
||
assert_array_not_eq() { | ||
|
||
declare -a expected=("${!1-}") | ||
declare -a actual=("${!2}") | ||
|
||
local msg="${3-}" | ||
|
||
local return_code=1 | ||
if [ ! "${#expected[@]}" == "${#actual[@]}" ]; then | ||
return_code=0 | ||
fi | ||
|
||
local i | ||
for (( i=1; i < ${#expected[@]} + 1; i+=1 )); do | ||
if [ ! "${expected[$i-1]}" == "${actual[$i-1]}" ]; then | ||
return_code=0 | ||
break | ||
fi | ||
done | ||
|
||
if [ "$return_code" == 1 ]; then | ||
[ "${#msg}" -gt 0 ] && log_failure "(${expected[*]}) == (${actual[*]}) :: $msg" || true | ||
fi | ||
|
||
return "$return_code" | ||
} | ||
|
||
assert_empty() { | ||
local actual=$1 | ||
local msg="${2-}" | ||
|
||
assert_eq "" "$actual" "$msg" | ||
return "$?" | ||
} | ||
|
||
assert_not_empty() { | ||
local actual=$1 | ||
local msg="${2-}" | ||
|
||
assert_not_eq "" "$actual" "$msg" | ||
return "$?" | ||
} | ||
|
||
assert_contain() { | ||
local haystack="$1" | ||
local needle="${2-}" | ||
local msg="${3-}" | ||
|
||
if [ -z "${needle:+x}" ]; then | ||
return 0; | ||
fi | ||
|
||
if [ -z "${haystack##*$needle*}" ]; then | ||
return 0 | ||
else | ||
[ "${#msg}" -gt 0 ] && log_failure "$haystack doesn't contain $needle :: $msg" || true | ||
return 1 | ||
fi | ||
} | ||
|
||
assert_not_contain() { | ||
local haystack="$1" | ||
local needle="${2-}" | ||
local msg="${3-}" | ||
|
||
if [ -z "${needle:+x}" ]; then | ||
return 0; | ||
fi | ||
|
||
if [ "${haystack##*$needle*}" ]; then | ||
return 0 | ||
else | ||
[ "${#msg}" -gt 0 ] && log_failure "$haystack contains $needle :: $msg" || true | ||
return 1 | ||
fi | ||
} | ||
|
||
assert_gt() { | ||
local first="$1" | ||
local second="$2" | ||
local msg="${3-}" | ||
|
||
if [[ "$first" -gt "$second" ]]; then | ||
return 0 | ||
else | ||
[ "${#msg}" -gt 0 ] && log_failure "$first > $second :: $msg" || true | ||
return 1 | ||
fi | ||
} | ||
|
||
assert_ge() { | ||
local first="$1" | ||
local second="$2" | ||
local msg="${3-}" | ||
|
||
if [[ "$first" -ge "$second" ]]; then | ||
return 0 | ||
else | ||
[ "${#msg}" -gt 0 ] && log_failure "$first >= $second :: $msg" || true | ||
return 1 | ||
fi | ||
} | ||
|
||
assert_lt() { | ||
local first="$1" | ||
local second="$2" | ||
local msg="${3-}" | ||
|
||
if [[ "$first" -lt "$second" ]]; then | ||
return 0 | ||
else | ||
[ "${#msg}" -gt 0 ] && log_failure "$first < $second :: $msg" || true | ||
return 1 | ||
fi | ||
} | ||
|
||
assert_le() { | ||
local first="$1" | ||
local second="$2" | ||
local msg="${3-}" | ||
|
||
if [[ "$first" -le "$second" ]]; then | ||
return 0 | ||
else | ||
[ "${#msg}" -gt 0 ] && log_failure "$first <= $second :: $msg" || true | ||
return 1 | ||
fi | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
#!/bin/bash | ||
|
||
|
||
vafator --help |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
#!/bin/bash | ||
|
||
|
||
source tests/assert.sh | ||
test_data=vafator/tests/resources | ||
output=output/integration_test_01 | ||
input_vcf=$test_data/project.NIST.hc.snps.indels.chr1_1000000_2000000.vcf | ||
output_vcf=$output/vafator.vcf | ||
mkdir -p $output | ||
vafator --input-vcf $input_vcf \ | ||
--output-vcf $output_vcf \ | ||
--bam my_normal $test_data/project.NIST_NIST7035_H7AP8ADXX_TAAGGCGA_1_NA12878.bwa.markDuplicates.chr1_1000000_2000000.bam \ | ||
--bam my_tumor $test_data/project.NIST_NIST7035_H7AP8ADXX_TAAGGCGA_1_NA12878.bwa.markDuplicates.chr1_1000000_2000000.bam | ||
|
||
test -s $output/vafator.vcf || { echo "Missing VCF output file!"; exit 1; } | ||
assert_eq `cat $output_vcf | grep -v '#' | grep my_normal_af | wc -l` `cat $input_vcf | grep -v '#' | wc -l` "Wrong number of variants" | ||
assert_eq `cat $output_vcf | grep -v '#' | grep my_tumor_af | wc -l` `cat $input_vcf | grep -v '#' | wc -l` "Wrong number of variants" | ||
assert_eq `cat $output_vcf | grep -v '#' | grep my_normal_ac | wc -l` `cat $input_vcf | grep -v '#' | wc -l` "Wrong number of variants" | ||
assert_eq `cat $output_vcf | grep -v '#' | grep my_tumor_ac | wc -l` `cat $input_vcf | grep -v '#' | wc -l` "Wrong number of variants" | ||
assert_eq `cat $output_vcf | grep -v '#' | grep my_normal_dp | wc -l` `cat $input_vcf | grep -v '#' | wc -l` "Wrong number of variants" | ||
assert_eq `cat $output_vcf | grep -v '#' | grep my_tumor_dp | wc -l` `cat $input_vcf | grep -v '#' | wc -l` "Wrong number of variants" |
Oops, something went wrong.