def test_antitarget(self): """The 'antitarget' command.""" baits = tabio.read_auto('formats/nv2_baits.interval_list') access = tabio.read_auto('../data/access-5k-mappable.hg19.bed') self.assertLess(0, len(commands.do_antitarget(baits))) self.assertLess(0, len(commands.do_antitarget(baits, access))) self.assertLess(0, len(commands.do_antitarget(baits, access, 200000))) self.assertLess(0, len(commands.do_antitarget(baits, access, 10000, 5000)))
def test_read_auto(self): for fname, nrows in (("formats/empty", 0), ("formats/amplicon.bed", 1433), ("formats/amplicon.text", 1433), ("formats/nv2_baits.interval_list", 6809), ("formats/refflat-mini.txt", 100), ("formats/example.gff", 6), ): self.assertEqual(len(tabio.read_auto(fname)), nrows) with open(fname) as handle: self.assertEqual(len(tabio.read_auto(handle)), nrows)
def test_target(self): """The 'target' command.""" annot_fname = "formats/refflat-mini.txt" for bait_fname in ("formats/nv2_baits.interval_list", "formats/amplicon.bed"): baits = tabio.read_auto(bait_fname) bait_len = len(baits) # No splitting: w/ and w/o re-annotation r1 = commands.do_target(baits) self.assertEqual(len(r1), bait_len) r1a = commands.do_target(baits, do_short_names=True, annotate=annot_fname) self.assertEqual(len(r1a), len(r1)) # Splitting r2 = commands.do_target(baits, do_short_names=True, do_split=True, avg_size=100) self.assertGreater(len(r2), len(r1)) r2a = commands.do_target(baits, do_short_names=True, do_split=True, avg_size=100, annotate=annot_fname) self.assertEqual(len(r2a), len(r2)) # Original regions object should be unmodified self.assertEqual(len(baits), bait_len)
def read_regions(bed_fname): if bed_fname: regions = tabio.read_auto(bed_fname) if len(regions): return regions else: logging.warn("No regions to estimate depth from %s", regions.meta.get('filename', '')) return None
def test_total_range_size(self): """Test total region coverage calculation.""" for fname, area in ( ('formats/empty', 0), ('formats/duke-my.bed', 103), ('formats/dac-my.bed', 148), ('formats/example.gff', 7951), ('formats/refflat-mini.txt', 695404), ): regions = tabio.read_auto(fname) self.assertEqual(regions.total_range_size(), area)
def filter_targets(target_bed, sample_bams, procs): """Check if each potential target has significant coverage.""" baits = tabio.read_auto(target_bed) # Loop over BAMs to calculate weighted averages of bin coverage depths total_depths = np.zeros(len(baits), dtype=np.float_) for bam_fname in sample_bams: logging.info("Evaluating targets in %s", bam_fname) sample = cnvlib.do_coverage(target_bed, bam_fname, processes=procs) total_depths += sample['depth'].values baits['depth'] = total_depths / len(sample_bams) return baits