7 from erange import ReadDataset
8 from erange import getSNPs
11 class TestGetSNPs(unittest.TestCase):
14 self.rdsDNA = ReadDataset.ReadDataset("testDNARDSForUnitTests.rds", True, "DNA", verbose=True)
16 uniqueInsertList = [("uniqueID1", "chr1", 10, 20, "+", 1.0, "", ""),
17 ("uniqueID2", "chr1", 100, 200, "+", 1.0, "", ""),
18 ("uniqueID3", "chr1", 1000, 2000, "+", 1.0, "", "G10A")]
20 multiInsertList = [("multiID1", "chr2", 1010, 1020, "+", 0.5, "", ""),
21 ("multiID1", "chr2", 1010, 1020, "+", 0.5, "", ""),
22 ("multiID2", "chr2", 10100, 10200, "+", 0.25, "", ""),
23 ("multiID2", "chr2", 10100, 10200, "+", 0.25, "", ""),
24 ("multiID2", "chr2", 10100, 10200, "+", 0.25, "", ""),
25 ("multiID2", "chr2", 10100, 10200, "+", 0.25, "", "")]
27 self.rdsDNA.insertUniqs(uniqueInsertList)
28 self.rdsDNA.insertMulti(multiInsertList)
29 self.rdsDNA.insertMetadata([("readsize", 100)])
33 os.remove("./testDNARDSForUnitTests.rds")
37 def testGetMatchDict(self):
38 uniqueTestDict = getSNPs.getMatchDict(self.rdsDNA, "chr1", withSplices=False)
40 self.assertEqual(uniqueTestDict[10][0], 20, "incorrect result for unique chr position 10")
41 self.assertEqual(uniqueTestDict[100][0], 200, "incorrect result for unique chr position 100")
42 self.assertEqual(uniqueTestDict[1000][0], 2000, "incorrect result for unique chr position 1000")
44 self.assertRaises(KeyError, getSNPs.getMatchDict, self.rdsDNA, "chr2", withSplices=False)
47 def testGetMismatchDict(self):
48 mismatchDict = getSNPs.getMismatchDict(self.rdsDNA, "chr1")
49 result = {1009: {"totalBaseDict": {"A-G": 1},
51 "uniqBaseDict": {"A-G": 1},
52 "back": "1000:A-G", "totalCount": 1
55 self.assertEquals(result, mismatchDict)
58 #TODO: write unit test
59 def testGetSNPs(self):
63 #TODO: write unit test
64 def testWriteSNPsToFile(self):
68 def testDoNotProcessChromosome(self):
69 self.assertFalse(getSNPs.doNotProcessChromosome(True, "chr1"))
70 self.assertFalse(getSNPs.doNotProcessChromosome(False, "chr1"))
71 self.assertFalse(getSNPs.doNotProcessChromosome(False, "badName"))
72 self.assertTrue(getSNPs.doNotProcessChromosome(True, "badName"))
73 self.assertTrue(getSNPs.doNotProcessChromosome(True, ""))
77 suite = unittest.TestSuite()
78 suite.addTest(unittest.makeSuite(TestGetSNPs))
83 if __name__ == "__main__":
84 #import sys;sys.argv = ['', 'Test.testName']