class TestFeature(unittest.TestCase): def setUp(self): # Set up Feature objects to be used in the tests # Forward strand example self.rna_data = \ Feature('CG9130-RB','chr3L','1252012','1255989','+') # Reverse strand example self.rna_data_2 = \ Feature('CG13051-RA','chr3L','16257914','16258166','-') def test_properties(self): self.assertEqual(self.rna_data.chrom,'chr3L') self.assertEqual(self.rna_data_2.chrom,'chr3L') def test__eq__(self): self.assertEqual(self.rna_data,Feature('CG9130-RB', 'chr3L', '1252012', '1255989','+')) self.assertNotEqual(self.rna_data,self.rna_data_2) def test_contains_position(self): position = 1253000 self.assertTrue(self.rna_data.containsPosition(position), "Transcript should contain position") position = 4250000 self.assertFalse(self.rna_data.containsPosition(position), "Transcript should not contain position") position = 10000 self.assertFalse(self.rna_data.containsPosition(position), "Transcript should not contain position") def test_get_closest_edge_distance(self): # Single position position = 1200000 # Single reference position self.assertEqual(self.rna_data.getClosestEdgeDistanceTo(position), abs(self.rna_data.start-position), "Incorrect closest edge distance #1") position = 1300000 self.assertEqual(self.rna_data.getClosestEdgeDistanceTo(position), abs(self.rna_data.end-position), "Incorrect closest edge distance #2") def test_get_closest_edge_distance_outside_region(self): # Reference region (2 positions) position1 = 1100000 position2 = 1200000 self.assertEqual(self.rna_data.getClosestEdgeDistanceTo(position1, position2), abs(self.rna_data.start-position2), "Incorrect closest edge distance (region #1)") position1 = 1300000 position2 = 1400000 self.assertEqual(self.rna_data.getClosestEdgeDistanceTo(position1, position2), abs(self.rna_data.end-position1), "Incorrect closest edge distance (region #2)") def test_get_closest_edge_distance_partially_inside_region(self): # Partially inside reference region position1 = 1200000 position2 = 1255000 self.assertEqual(self.rna_data.getClosestEdgeDistanceTo(position1, position2), abs(self.rna_data.end-position2), "Incorrect closest edge distance (inside region #1)") self.assertEqual(self.rna_data.getClosestEdgeDistanceTo(position1, position2, zero_inside_region=True), 0, "Incorrect closest edge distance (inside region #2)") def test_get_closest_edge_distance_completely_inside_region(self): # Completely inside reference region position1 = 1250000 position2 = 1300000 self.assertEqual(self.rna_data.getClosestEdgeDistanceTo(position1, position2), abs(self.rna_data.start-position1), "Incorrect closest edge distance (inside region #3)") self.assertEqual(self.rna_data.getClosestEdgeDistanceTo(position1, position2, zero_inside_region=True), 0, "Incorrect closest edge distance (inside region #4)") def test_get_promoter_region(self): leading = 10000 trailing = 2500 promoter = self.rna_data.getPromoterRegion(leading,trailing) self.assertEqual(promoter, (self.rna_data.getTSS()-leading, self.rna_data.getTSS()+trailing), "Incorrect promoter region for + strand example") promoter = self.rna_data_2.getPromoterRegion(leading,trailing) self.assertEqual(promoter, (self.rna_data_2.getTSS()+leading, self.rna_data_2.getTSS()-trailing), "Incorrect promoter region for - strand example")