From 56e7f61ff547875ace2e48cadd4ac51f82542fb0 Mon Sep 17 00:00:00 2001 From: Petr Danecek Date: Mon, 30 Jan 2017 11:31:19 +0000 Subject: [PATCH] Sanity check for {0,1} dosages at typed markers Test whether the assumption is true rather than inserting hard values to notify us about possible problems. --- pbwtImpute.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/pbwtImpute.c b/pbwtImpute.c index 8ba4e78..d43993f 100644 --- a/pbwtImpute.c +++ b/pbwtImpute.c @@ -1242,9 +1242,15 @@ static PBWT *referenceImpute3 (PBWT *pOld, PBWT *pRef, PBWT *pFrame, /* need to sort the dosages into uNew cursor order as well */ for (j = 0 ; j < pOld->M ; ++j) { - /* make sure the dosages of the typed markers are {0,1} */ - if ( arrp(pRef->sites,kRef,Site)->isImputed!=TRUE && !missing[uNew->a[j]] ) yDosage[j] = x[uNew->a[j]] ? 1 : 0; - else yDosage[j] = xDosage[uNew->a[j]] ; + yDosage[j] = xDosage[uNew->a[j]] ; + + /* Make sure the dosages of the typed markers are {0,1}.This is a sanity check that + can be removed after being tested extensively. */ + if ( arrp(pRef->sites,kRef,Site)->isImputed!=TRUE && !missing[uNew->a[j]] ) + { + int expected = x[uNew->a[j]] ? 1 : 0; + if ( expected != yDosage[j] ) die ("Fixme: unexpected non-{0,1} dosage at position %d: %f\n", arrp(pRef->sites,kRef,Site)->x,yDosage[j]); + } } pbwtDosageStore (pNew, yDosage, kRef) ; pbwtCursorWriteForwards (uNew) ;