def test_gwas_with_beta_covariate(self): """ Tests method gwasBetaCovar (Performs GWAS analysis with beta/effect size and covariates) Checks for equality within 7 decimal places of returned list with expected list of functions and results """ self.args_with_covar['beta'] = 'SNPWeight' self.win = Winnow.Winnow(self.args_with_covar) s, b, c = self.win.load_data('/Testwithcovar.csv') self.win.load_ote() desired = [ 'test_filename', 0.0020088036966300713, 0.034581652710000001, 0.086763105180589231, 0.85191672505254723, 6, 475, 9516, 3, 0.6666666666666666, 0.04754278850965869, 0.0009, 0.0478, 0.9522, 0.6666666666666666, 0.9524572114903413, 0.012474012474012475, 0.9875259875259875, 0.6191238781570081, 0.083426920159999987, 0.49487168117447544 ] result = gwas.gwasBetaCovar('test_filename', b, self.win.beta_true_false, self.win.snp_true_false, s, self.args_with_covar['threshold'], c)[1] for x in range(0, len(result)): try: self.assertAlmostEquals(desired[x], result[x]) except AssertionError: print "Test failed" print "Desired value " + str( desired[x] ) + " does not match up with result value " + str(result[x])
def test_gwas_with_beta(self): """ Tests method gwasWithBeta (performs GWAS analysis with beta/effect size) Checks for equality within 7 decimal places of returned list with expected list of functions and results """ self.args_without_covar['beta'] = 'BETA' self.win = Winnow.Winnow(self.args_without_covar) s, b = self.win.load_data("/PlinkStd1.qassoc") self.win.load_ote() desired = [ 'test_filename', 0.058961209687231467, 0.18211782935394127, -0.038381861728111748, 0.43427678571428574, 0, 384, 2816, 35, 0.0, 0.12, 0.010819165378670788, 0.1295208655332303, 0.8704791344667697, 0.0, 0.88, 0.0, 1.0, -0.12, -7.7753167457938126 ] result = gwas.gwasWithBeta('test_filename', b, self.win.beta_true_false, self.win.snp_true_false, s, self.args_without_covar['threshold'])[1] for x in range(0, len(result)): try: self.assertAlmostEquals(desired[x], result[x]) except AssertionError: print "Test failed" print "Desired value " + str( desired[x] ) + " does not match up with result value " + str(result[x])
def test_do_analysis(self): self.win = winnow.Winnow(self.args) self.win.load_kt() gen = self.win.do_analysis() a = gen.next()[1] self.assertEqual(format_float(a), [ 0.05896121, 0.18211783, -0.03838186, 0.43427679, 0, 384, 2816, 35, 0.0, 0.12, 0.12952087, 0.87047913, 0.0, 0.88, 0.0, 1.0, -0.12 ]) gen.close()
def test_load_data(self): self.win = winnow.Winnow(self.args) s, b = self.win.load_data("/PlinkStd1.qassoc") score = (0.6028, 0.06006, 0.4884, 0.6276, 0.8426, 0.4332, 0.717, 0.3584, 0.1795, 0.3647) beta = (0.3355, 0.3324, 0.2584, -0.2379, 0.0457, 0.113, -0.3001, -0.3267, 0.09707, 0.006248) self.assertEqual((score, beta), ((s[2061], s[1678], s[1553], s[2455], s[746], s[1892], s[813], s[1886], s[2005], s[1116]), (b[1766], b[2847], b[194], b[299], b[1813], b[2593], b[497], b[2572], b[2107], b[829])))
def test_do_gwas(self): self.win = winnow.Winnow(self.args) self.win.snp_true_false = (True, False, True, True, True, False, False, True, False, False, True, False) score_column = (0.003, 0.65, 0.004, 0.006, 0.078, 0.003, 0.0001, 0.513, 0.421, 0.0081, 0.043, 0.98) self.win.beta_true_false = (1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1) beta_column = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) a = format_float(self.win.do_gwas(score_column, beta_column, None)[1]) self.assertEqual(a, [ 47.08333333, 5.91666667, 0.16903085, 0.56944444, 4.0, 3.0, 3.0, 2.0, 0.66666667, 0.5, 0.41666667, 0.58333333, 0.66666667, 0.5, 0.57142857, 0.42857143, 0.16666667 ])
def test_gwas_without_beta(self): self.args_without_covar['beta'] = None self.win = Winnow.Winnow(self.args_without_covar) s = self.win.load_data("/PlinkStd1.qassoc") self.win.load_ote() desired = [ -0.038381861728111748, 0.43427678571428574, 0, 384, 2816, 35, 0.0, 0.12, 0.1295208655332303, 0.8704791344667697, 0.0, 0.88, 0.0, 1.0, -0.12 ] result = gwas.gwasWithoutBeta(self.win.snp_true_false, s, self.args_without_covar['threshold'])[1] for x in range(0, len(result)): self.assertAlmostEquals(desired[x], result[x])
def test_gwas_without_beta_covariate(self): self.args_with_covar['beta'] = None self.win = Winnow.Winnow(self.args_with_covar) s, c = self.win.load_data("/Testwithcovar.csv") self.win.load_ote() desired = [ 0.086763105180589231, 0.85191672505254723, 6, 475, 9516, 3, 0.6666666666666666, 0.04754278850965869, 0.0478, 0.9522, 0.6666666666666666, 0.9524572114903413, 0.012474012474012475, 0.9875259875259875, 0.6191238781570081, 0.08342692016000644 ] result = gwas.gwasNoBetaCovar(self.win.snp_true_false, s, self.args_with_covar['threshold'], c)[1] for x in range(0, len(result)): self.assertAlmostEquals(desired[x], result[x])
def test_do_analysis(self): """ Test method do_analysis (generator that performs the analysis - currently only GWAS is allowed). Checks for equality of returned list and expected list of analyzed values. """ self.win = winnow.Winnow(self.args) self.win.load_kt() gen = self.win.do_analysis() a = gen.next()[1][1:] expected = [ 0.05896121, 0.18211783, -0.03838186, 0.43427679, 0.0, 384.0, 2816.0, 35.0, 0.0, 0.12, 0.01081917, 0.12952087, 0.87047913, 0.0, 0.88, 0.0, 1.0, -0.12, -7.77531675 ] self.assertEqual(format_float(a), expected) gen.close()
def test_load_data(self): """ Test method load_data (load_data returns a list of score and beta values from a given file) Checks for equality of returned list and expected list of score and beta values. """ self.win = winnow.Winnow(self.args) s, b = self.win.load_data("/PlinkStd1.qassoc") score = (0.6028, 0.06006, 0.4884, 0.6276, 0.8426, 0.4332, 0.717, 0.3584, 0.1795, 0.3647) beta = (0.3355, 0.3324, 0.2584, -0.2379, 0.0457, 0.113, -0.3001, -0.3267, 0.09707, 0.006248) expected = ((s[2061], s[1678], s[1553], s[2455], s[746], s[1892], s[813], s[1886], s[2005], s[1116]), (b[1766], b[2847], b[194], b[299], b[1813], b[2593], b[497], b[2572], b[2107], b[829])) self.assertEqual((score, beta), expected)
def test_load_ote(self): self.win = winnow.Winnow(self.args) self.win.load_ote() snp = (False, False, False, True, False, False, False, False, False, True) beta = (0.0002, 0.0, 0.0061, 0.0, 0.0, 0.0026, 0.0454, 0.0, 0.0, 0.0) self.assertEqual( (snp, beta), ((self.win.snp_true_false[2549], self.win.snp_true_false[1510], self.win.snp_true_false[1587], self.win.snp_true_false[12], self.win.snp_true_false[458], self.win.snp_true_false[502], self.win.snp_true_false[577], self.win.snp_true_false[3209], self.win.snp_true_false[1709], self.win.snp_true_false[15]), (self.win.beta_true_false[22], self.win.beta_true_false[684], self.win.beta_true_false[16], self.win.beta_true_false[2745], self.win.beta_true_false[832], self.win.beta_true_false[15], self.win.beta_true_false[29], self.win.beta_true_false[2028], self.win.beta_true_false[715], self.win.beta_true_false[276])))
def test_do_gwas(self): """ Test method do_gwas (returns the results of the GWAS analysis given scores, betas, and covariates) Checks for equality of returned list and expected list of GWAS analysis values """ self.win = winnow.Winnow(self.args) self.win.snp_true_false = (True, False, True, True, True, False, False, True, False, False, True, False) score_column = (0.003, 0.65, 0.004, 0.006, 0.078, 0.003, 0.0001, 0.513, 0.421, 0.0081, 0.043, 0.98) self.win.beta_true_false = (1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1) beta_column = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) a = format_float( self.win.do_gwas('test_filename', score_column, beta_column, None)[1][1:]) expected = [ 47.08333333, 5.91666667, 0.16903085, 0.56944444, 4.0, 3.0, 3.0, 2.0, 0.66666667, 0.5, 0.5, 0.41666667, 0.58333333, 0.66666667, 0.5, 0.57142857, 0.42857143, 0.16666667, 0.33333185 ] self.assertEqual(a, expected)
def test_load_ote(self): """ Test method load_ote (loads truth and effect type known truth file). Checks for equality of returned lists and expected lists of snp and beta values. """ self.win = winnow.Winnow(self.args) self.win.load_ote() snp = (False, False, False, True, False, False, False, False, False, True) beta = (0.0002, 0.0, 0.0061, 0.0, 0.0, 0.0026, 0.0454, 0.0, 0.0, 0.0) expected = ( (self.win.snp_true_false[2549], self.win.snp_true_false[1510], self.win.snp_true_false[1587], self.win.snp_true_false[12], self.win.snp_true_false[458], self.win.snp_true_false[502], self.win.snp_true_false[577], self.win.snp_true_false[3209], self.win.snp_true_false[1709], self.win.snp_true_false[15]), (self.win.beta_true_false[22], self.win.beta_true_false[684], self.win.beta_true_false[16], self.win.beta_true_false[2745], self.win.beta_true_false[832], self.win.beta_true_false[15], self.win.beta_true_false[29], self.win.beta_true_false[2028], self.win.beta_true_false[715], self.win.beta_true_false[276])) self.assertEqual((snp, beta), expected)