예제 #1
0
 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)))
예제 #2
0
 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)
예제 #3
0
 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)
예제 #4
0
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
예제 #5
0
 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)
예제 #6
0
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