aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPjotr Prins2021-08-25 10:55:14 +0200
committerPjotr Prins2021-08-25 10:55:14 +0200
commitb0c7f0ed464b134d1fdf6acd050f122a5ca96801 (patch)
tree6b61ad9790332fe5b001348b1c306f481bdf7943
parentbda453acb2aa202a0703e8863fead0f2289c0192 (diff)
downloadpangemma-b0c7f0ed464b134d1fdf6acd050f122a5ca96801.tar.gz
New test suite is working and takes account of round-off problems.
Closes #247 Closes #242
-rw-r--r--Makefile3
-rw-r--r--RELEASE-NOTES.md1
-rwxr-xr-xtest/dev_test_suite.sh2
-rw-r--r--test/dev_tests.rb34
-rwxr-xr-xtest/lengthy_test_suite.sh2
-rw-r--r--test/lib/test-helpers.rb14
-rwxr-xr-xtest/test_suite.sh2
7 files changed, 46 insertions, 12 deletions
diff --git a/Makefile b/Makefile
index a671e46..662584c 100644
--- a/Makefile
+++ b/Makefile
@@ -237,16 +237,19 @@ fast-check: all unittests
rm -vf output/*
ruby -Eutf-8 -Itest ./test/dev_tests.rb | tee ./dev_test.log
+# Note the following tests are not robust for different architectures
old-check: all unittests
rm -vf test/output/*
cd test && ./dev_test_suite.sh | tee ../test.log
grep -q 'success rate: 100%' test.log
+# Note the following tests are not robust for different architectures
slow-check: all
rm -vf test/output/*
cd test && ./test_suite.sh | tee ../test.log
grep -q 'success rate: 100%' test.log
+# Note the following tests are not robust for different architectures
lengthy-check: all
rm -vf test/output/*
cd test && ./lengthy_test_suite.sh | tee ../lengthy_test.log
diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md
index 0033ab1..135d1a2 100644
--- a/RELEASE-NOTES.md
+++ b/RELEASE-NOTES.md
@@ -11,6 +11,7 @@ and
* Documented `-lmm 9` which adds additive effect to `-lmm 2`
* Fix of GSL ERROR: function value is not finite in brent.c at line 202 errno 9, see #210
* Added profiler support in Guix profile and make file. Profiling issue #243
+* Added new test suite to replace shunit2 scripts - should make it more robust for different architectures, see github issues #242 and #247.
## ChangeLog v0.98.4 (2021/01/29)
diff --git a/test/dev_test_suite.sh b/test/dev_test_suite.sh
index 676e0b3..a5ec3f4 100755
--- a/test/dev_test_suite.sh
+++ b/test/dev_test_suite.sh
@@ -1,5 +1,7 @@
#!/bin/sh
+echo "WARNING: THIS TEST SUITE IS NO LONGER USED"
+
gemma=../bin/gemma
# gemmaopts="-debug -strict"
gemmaopts="-debug -check"
diff --git a/test/dev_tests.rb b/test/dev_tests.rb
index fb3fecf..fc2f7bb 100644
--- a/test/dev_tests.rb
+++ b/test/dev_tests.rb
@@ -10,7 +10,7 @@ class TestQuick < MiniTest::Test
end
def test_linear_model
- assert gemma("-g ./example/mouse_hs1940.geno.txt.gz \
+ gemma("-g ./example/mouse_hs1940.geno.txt.gz \
-p ./example/mouse_hs1940.pheno.txt \
-n 1 \
-a ./example/mouse_hs1940.anno.txt \
@@ -23,14 +23,14 @@ class TestQuick < MiniTest::Test
end
def test_BXD
- assert gemma("-g ./example/BXD_geno.txt.gz \
+ gemma("-g ./example/BXD_geno.txt.gz \
-p ./example/BXD_pheno.txt \
-c ./example/BXD_covariates2.txt \
-a ./example/BXD_snps.txt \
-gk \
-o BXD")
- assert gemma("-g ./example/BXD_geno.txt.gz \
+ gemma("-g ./example/BXD_geno.txt.gz \
-p ./example/BXD_pheno.txt \
-c ./example/BXD_covariates2.txt \
-a ./example/BXD_snps.txt \
@@ -39,18 +39,18 @@ class TestQuick < MiniTest::Test
-o BXDLMM")
expect("output/BXDLMM.assoc.txt",[[2,9,"1.234747e-01"],
- [:max,9,"9.997119e-01"]])
+ [:max,"p_lrt","9.997119e-01"]])
end
def test_mouse_hs1940_loco
- assert gemma("-g ./example/mouse_hs1940.geno.txt.gz \
+ gemma("-g ./example/mouse_hs1940.geno.txt.gz \
-p ./example/mouse_hs1940.pheno.txt \
-a ./example/mouse_hs1940.anno.txt \
-snps ./example/mouse_hs1940_snps.txt \
-nind 400 -loco 1 -gk \
-o mouse_hs1940_loco")
- assert gemma("-g ./example/mouse_hs1940.geno.txt.gz \
+ gemma("-g ./example/mouse_hs1940.geno.txt.gz \
-p ./example/mouse_hs1940.pheno.txt \
-n 1 \
-loco 1 \
@@ -61,6 +61,26 @@ class TestQuick < MiniTest::Test
-nind 400 -no-check \
-o mouse_hs1940_loco")
expect("output/mouse_hs1940_loco.assoc.txt",[[2,9,"-3.073643e+02"],
- [:max,11,"9.716047e-01"]])
+ [:max,"p_wald","9.716047e-01"]])
end
+
+ # Test for https://github.com/genetics-statistics/GEMMA/issues/58
+ # fixed GSLv2 NaN's that appeared with covariates.
+ def test_plink_covariates_lmm
+ gemma("-bfile example/HLC -gk 2 -o testPlinkStandardRelatednessMatrixK")
+
+ gemma("-bfile example/HLC \
+ -k output/testPlinkStandardRelatednessMatrixK.sXX.txt \
+ -lmm 1 \
+ -maf 0.1 \
+ -c example/HLC_covariates.txt \
+ -no-check \
+ -o plink_lmm1_cov")
+ expect("output/plink_lmm1_cov.assoc.txt",[[100,"p_wald","5.189953e-01"],
+ [:max,"logl_H1","279.2689"],
+ [:max,"l_remle","1.686062"],
+ [:max,"p_wald","0.9999996"]])
+ end
+
+
end
diff --git a/test/lengthy_test_suite.sh b/test/lengthy_test_suite.sh
index 6e93220..6e11793 100755
--- a/test/lengthy_test_suite.sh
+++ b/test/lengthy_test_suite.sh
@@ -2,6 +2,8 @@
#
# Long running tests go here
+echo "WARNING: THIS TEST SUITE IS NO LONGER USED"
+
gemma=../bin/gemma
export GSL_RNG_SEED=100
diff --git a/test/lib/test-helpers.rb b/test/lib/test-helpers.rb
index d2989e0..672a2c2 100644
--- a/test/lib/test-helpers.rb
+++ b/test/lib/test-helpers.rb
@@ -2,7 +2,7 @@ module TestHelpers
# Runs gemma and returns true if successful
def gemma(opts)
- system("./bin/gemma #{opts}")
+ assert system("./bin/gemma #{opts}")
end
def read(fn, line=0)
@@ -18,11 +18,15 @@ module TestHelpers
lines = lines.map { |l| l.split("\t") } # avoid this for large files
list.each do | l |
line,colnum,value = l
- if line == :max
- cols = lines.max_by {|a| a[colnum].to_f}
- else
- cols = lines[line]
+ if colnum.is_a? String
+ colnum = lines[0].index(colnum)
end
+ cols =
+ if line == :max
+ lines.max_by {|a| a[colnum].to_f}
+ else
+ lines[line]
+ end
# assert_equal value,cols[colnum]
assert_in_delta value.to_f,cols[colnum].to_f, 0.001
end
diff --git a/test/test_suite.sh b/test/test_suite.sh
index cc244c0..38671be 100755
--- a/test/test_suite.sh
+++ b/test/test_suite.sh
@@ -1,5 +1,7 @@
#!/bin/sh
+echo "WARNING: THIS TEST SUITE IS NO LONGER USED"
+
gemma=../bin/gemma
gemmaopts="-debug"
export GSL_RNG_SEED=10