Ejemplo n.º 1
0
    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))
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
0
 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)