def testEmptyInit(self): """Key functionality for things that don't have any data that is loaded with the dataset""" pc = PhenoCovar() for i in range(10): pc.add_subject(i + 1, None, None) self.assertEqual(0, len(pc.phenotype_names)) self.assertEqual(10, len(pc.pedigree_data))
def test_basic_population(self): # Indicate that we want to use sex as a covariate PhenoCovar.sex_as_covariate = True pc = PhenoCovar() #sex = [1, 1, 2, 2, 1, 1] for line in self.ped: fam, ind, sex, ph = line.split() pc.add_subject("%s:%s" % (fam, ind), sex=int(sex), phenotype=float(ph)) self.assertEqual(1, len(pc.covariate_data)) self.assertEqual(1, len(pc.phenotype_data)) self.assertEqual(6, len(pc.covariate_data[0])) self.assertEqual(6, len(pc.phenotype_data[0])) i = 0 for line in self.ped: fam, ind, sex, ph = line.split() iid = "%s:%s" % (fam, ind) pdata = pc.pedigree_data[iid] self.assertEqual(pdata, i) self.assertAlmostEqual(float(ph), pc.phenotype_data[0][i]) self.assertEqual(int(sex), pc.covariate_data[0][i]) i += 1 # Indicate that we do not want to use sex as a covariate PhenoCovar.sex_as_covariate = False newpc = PhenoCovar() for line in self.ped: fam, ind, sex, ph = line.split() newpc.add_subject("%s:%s" % (fam, ind), sex=int(sex), phenotype=float(ph)) # Test that sex wasn't loaded as a covariate due to the setting of PhenoCovar.sex_as_covariate self.assertEqual(0, len(newpc.covariate_data)) self.assertEqual(1, len(newpc.phenotype_data)) self.assertEqual(6, len(newpc.pedigree_data)) self.assertEqual(6, len(newpc.phenotype_data[0])) i = 0 for line in self.ped: fam, ind, sex, ph = line.split() iid = "%s:%s" % (fam, ind) pdata = pc.pedigree_data[iid] self.assertEqual(pdata, i) self.assertAlmostEqual(float(ph), pc.phenotype_data[0][i]) i += 1
def testPhenoWithAllMissing(self): pc = PhenoCovar() count = 0 invalid = 0 missingness = 0 pc.add_subject("1:1", phenotype=1) pc.add_subject("2:2", phenotype=1) pc.add_subject("3:3", phenotype=1) pc.add_subject("4:4", phenotype=1) pc.freeze_subjects() try: for test in pc: (pheno, covars, nonmissing) = test.get_variables( numpy.array([True, True, True, True])) count += 1 except InvariantVar as e: invalid += 1 except TooMuchMissingpPhenoCovar as e: missingness += 1 self.assertEqual(0, invalid) self.assertEqual(1, missingness) self.assertEqual(0, count)