def testPileupMeanOutlierCoverage(self): """Verify computation of pileup outlier coverage.""" BCT = BM_coverageType_C() BCT.type = CT.P_MEAN_OUTLIER BCT.upperCut = 1.0 BCT.lowerCut = 1.0 pBCT = c.POINTER(BM_coverageType_C) pBCT = c.pointer(BCT) coverage = self.CW._estimate_P_MEAN_OUTLIER_Coverage(self.even_c_array, pBCT, len(self.even_list)) lower_bound = mean(self.even_list) - BCT.lowerCut * std(self.even_list) if lower_bound < 0: lower_bound = 0 upper_bound = mean(self.even_list) + BCT.upperCut * std(self.even_list) valid_indices = [i for i, x in enumerate(self.even_list) if (x >= lower_bound and x <= upper_bound)] np_even_list = array(self.even_list) assert_equals(coverage, mean(np_even_list[valid_indices])) coverage = self.CW._estimate_P_MEAN_OUTLIER_Coverage(self.odd_c_array, pBCT, len(self.odd_list)) lower_bound = mean(self.odd_list) - BCT.lowerCut * std(self.odd_list) if lower_bound < 0: lower_bound = 0 upper_bound = mean(self.odd_list) + BCT.upperCut * std(self.odd_list) valid_indices = [i for i, x in enumerate(self.odd_list) if (x >= lower_bound and x <= upper_bound)] np_odd_list = array(self.odd_list) assert_equals(coverage, mean(np_odd_list[valid_indices]))
def testPileupMeanTrimmedCoverageInvalidTrim(self): """Verify computation of pileup mean trimmed coverage when given an invalid trimming range.""" BCT = BM_coverageType_C() BCT.type = CT.P_MEAN_TRIMMED BCT.upperCut = 60.0 BCT.lowerCut = 60.0 pBCT = c.POINTER(BM_coverageType_C) pBCT = c.pointer(BCT) coverage = self.CW._estimate_P_MEAN_TRIMMED_Coverage(self.even_c_array, pBCT, len(self.even_list)) assert_true(isnan(coverage))
def testPileupMeanOutlierCoverageZeroStd(self): """Verify computation of pileup outlier coverage when given a std of zero.""" BCT = BM_coverageType_C() BCT.type = CT.P_MEAN_OUTLIER BCT.upperCut = 0.0 BCT.lowerCut = 0.0 pBCT = c.POINTER(BM_coverageType_C) pBCT = c.pointer(BCT) coverage = self.CW._estimate_P_MEAN_OUTLIER_Coverage(self.even_c_array, pBCT, len(self.even_list)) assert_equals(coverage, 0)
def testPileupMeanOutlierCoverageSingle(self): """Verify computation of pileup outlier coverage when given an array with a single element.""" BCT = BM_coverageType_C() BCT.type = CT.P_MEAN_OUTLIER BCT.upperCut = 1.0 BCT.lowerCut = 1.0 pBCT = c.POINTER(BM_coverageType_C) pBCT = c.pointer(BCT) coverage = self.CW._estimate_P_MEAN_OUTLIER_Coverage(self.single_num_c_array, self.pBCT, len(self.single_num_list)) assert_equals(coverage, self.single_num_list[0])
def testPileupMeanTrimmedCoverageInvalidTrim(self): """Verify computation of pileup mean trimmed coverage when given an invalid trimming range.""" BCT = BM_coverageType_C() BCT.type = CT.P_MEAN_TRIMMED BCT.upperCut = 60.0 BCT.lowerCut = 60.0 pBCT = c.POINTER(BM_coverageType_C) pBCT = c.pointer(BCT) coverage = self.CW._estimate_P_MEAN_TRIMMED_Coverage( self.even_c_array, pBCT, len(self.even_list)) assert_true(isnan(coverage))
def testPileupMeanOutlierCoverageZeroStd(self): """Verify computation of pileup outlier coverage when given a std of zero.""" BCT = BM_coverageType_C() BCT.type = CT.P_MEAN_OUTLIER BCT.upperCut = 0.0 BCT.lowerCut = 0.0 pBCT = c.POINTER(BM_coverageType_C) pBCT = c.pointer(BCT) coverage = self.CW._estimate_P_MEAN_OUTLIER_Coverage( self.even_c_array, pBCT, len(self.even_list)) assert_equals(coverage, 0)
def testPileupMeanOutlierCoverageSingle(self): """Verify computation of pileup outlier coverage when given an array with a single element.""" BCT = BM_coverageType_C() BCT.type = CT.P_MEAN_OUTLIER BCT.upperCut = 1.0 BCT.lowerCut = 1.0 pBCT = c.POINTER(BM_coverageType_C) pBCT = c.pointer(BCT) coverage = self.CW._estimate_P_MEAN_OUTLIER_Coverage( self.single_num_c_array, self.pBCT, len(self.single_num_list)) assert_equals(coverage, self.single_num_list[0])
def testPileupMeanTrimmedCoverageUnequalTrim(self): """Verify computation of pileup mean trimmed coverage when given an unequal trim percentages.""" BCT = BM_coverageType_C() BCT.type = CT.P_MEAN_TRIMMED BCT.upperCut = 10.0 BCT.lowerCut = 20.0 pBCT = c.POINTER(BM_coverageType_C) pBCT = c.pointer(BCT) coverage = self.CW._estimate_P_MEAN_TRIMMED_Coverage(self.even_c_array, pBCT, len(self.even_list)) trim_lower = int(BCT.lowerCut/100.0 * len(self.even_list)) + 1 trim_upper = len(self.even_list) - int(BCT.upperCut/100.0 * len(self.even_list)) - 1 assert_equals(coverage, mean(self.even_list[trim_lower:trim_upper]))
def testPileupMeanTrimmedCoverageUnequalTrim(self): """Verify computation of pileup mean trimmed coverage when given an unequal trim percentages.""" BCT = BM_coverageType_C() BCT.type = CT.P_MEAN_TRIMMED BCT.upperCut = 10.0 BCT.lowerCut = 20.0 pBCT = c.POINTER(BM_coverageType_C) pBCT = c.pointer(BCT) coverage = self.CW._estimate_P_MEAN_TRIMMED_Coverage( self.even_c_array, pBCT, len(self.even_list)) trim_lower = int(BCT.lowerCut / 100.0 * len(self.even_list)) + 1 trim_upper = len(self.even_list) - int( BCT.upperCut / 100.0 * len(self.even_list)) - 1 assert_equals(coverage, mean(self.even_list[trim_lower:trim_upper]))
def testPileupMeanOutlierCoverageUnequalStd(self): """Verify computation of pileup outlier coverage when given unequal standard deviations.""" BCT = BM_coverageType_C() BCT.type = CT.P_MEAN_OUTLIER BCT.upperCut = 1.0 BCT.lowerCut = 2.5 pBCT = c.POINTER(BM_coverageType_C) pBCT = c.pointer(BCT) coverage = self.CW._estimate_P_MEAN_OUTLIER_Coverage( self.even_c_array, pBCT, len(self.even_list)) lower_bound = mean(self.even_list) - BCT.lowerCut * std(self.even_list) if lower_bound < 0: lower_bound = 0 upper_bound = mean(self.even_list) + BCT.upperCut * std(self.even_list) valid_indices = [ i for i, x in enumerate(self.even_list) if (x >= lower_bound and x <= upper_bound) ] np_even_list = array(self.even_list) assert_equals(coverage, mean(np_even_list[valid_indices]))
def setup_class(self): """Setup class variables before any tests.""" self.even_list = list(range(10)) self.even_c_array = (c.c_uint32 * len(self.even_list))() self.even_c_array[:] = self.even_list self.odd_list = list(range(9)) self.odd_c_array = (c.c_uint32 * len(self.odd_list))() self.odd_c_array[:] = self.odd_list self.unsorted_list = list(range(9)) random.shuffle(self.unsorted_list) self.unsorted_c_array = (c.c_uint32 * len(self.unsorted_list))() self.unsorted_c_array[:] = self.unsorted_list self.empty_list = [] self.empty_c_array = (c.c_uint32 * len(self.empty_list))() self.empty_c_array[:] = self.empty_list self.single_num_list = [10] self.single_num_c_array = (c.c_uint32 * len(self.single_num_list))() self.single_num_c_array[:] = self.single_num_list self.zero_list = [0] * 10 self.zero_c_array = (c.c_uint32 * len(self.zero_list))() self.zero_c_array[:] = self.zero_list self.BCT = BM_coverageType_C() self.BCT.type = CT.C_MEAN self.BCT.upperCut = 10.0 self.BCT.lowerCut = 10.0 self.pBCT = c.POINTER(BM_coverageType_C) self.pBCT = c.pointer(self.BCT) self.CW = CWrapper(UT=True)