Example #1
0
 def __call__(self, **kw):
     # Set assembly
     assembly_id = kw.get('assembly')
     chrmeta = "guess"
     if assembly_id:
         assembly = genrep.Assembly(assembly_id)
         chrmeta = assembly.chrmeta
     # Set features track
     features = track(kw['features'], chrmeta=chrmeta or None)
     chrmeta = features.chrmeta
     # Set filter track
     filter = track(kw.get('filter'), chrmeta=chrmeta or None)
     # Main
     format = kw.get('format', features.format)
     output = self.temporary_path(fname=features.name + '_filtered.' +
                                  format)
     tout = track(output,
                  format,
                  fields=filter.fields,
                  chrmeta=chrmeta,
                  info={'datatype': 'qualitative'})
     for chrom in chrmeta:
         tout.write(overlap(features.read(chrom), filter.read(chrom)),
                    chrom=chrom,
                    clip=True)
     tout.close()
     self.new_file(output, 'filtered')
     return self.display_time()
Example #2
0
    def test_overlap(self):
        s1 = [('chr',0,4,'n',1.), ('chr',7,12,'n',2.), ('chr',16,19,'n',3.), ('chr',22,27,'n',4.)]
        s2 = [('chr',2,9,'m'), ('chr',13,14,'m'), ('chr',22,23,'m'), ('chr',26,27,'m')]
        stream1 = fstream(s1, fields=['chr','start','end','name','score'])
        stream2 = fstream(s2, fields=['chr','start','end','name'])
        res = overlap(stream1,stream2)
        expected = [('chr',0,4,'n',1.),('chr',7,12,'n',2.),('chr',22,27,'n',4.)]
        self.assertListEqual(list(res),expected)

        # Stranded
        s1 = [('chr',0,3,'+'), ('chr',7,12,'+'), ('chr',16,19,'+'), ('chr',22,27,'+')]
        s2 = [('chr',2,9,'+'), ('chr',13,14,'-'), ('chr',25,30,'-')]
        stream1 = fstream(s1, fields=['chr','start','end','strand'])
        stream2 = fstream(s2, fields=['chr','start','end','strand'])
        res = overlap(stream1,stream2)
        expected = [('chr',0,3,'+'),('chr',7,12,'+')]
        self.assertListEqual(list(res),expected)
Example #3
0
    def test_overlap(self):
        s1 = [('chr', 0, 4, 'n', 1.), ('chr', 7, 12, 'n', 2.),
              ('chr', 16, 19, 'n', 3.), ('chr', 22, 27, 'n', 4.)]
        s2 = [('chr', 2, 9, 'm'), ('chr', 13, 14, 'm'), ('chr', 22, 23, 'm'),
              ('chr', 26, 27, 'm')]
        stream1 = fstream(s1, fields=['chr', 'start', 'end', 'name', 'score'])
        stream2 = fstream(s2, fields=['chr', 'start', 'end', 'name'])
        res = overlap(stream1, stream2)
        expected = [('chr', 0, 4, 'n', 1.), ('chr', 7, 12, 'n', 2.),
                    ('chr', 22, 27, 'n', 4.)]
        self.assertListEqual(list(res), expected)

        # Stranded
        s1 = [('chr', 0, 3, '+'), ('chr', 7, 12, '+'), ('chr', 16, 19, '+'),
              ('chr', 22, 27, '+')]
        s2 = [('chr', 2, 9, '+'), ('chr', 13, 14, '-'), ('chr', 25, 30, '-')]
        stream1 = fstream(s1, fields=['chr', 'start', 'end', 'strand'])
        stream2 = fstream(s2, fields=['chr', 'start', 'end', 'strand'])
        res = overlap(stream1, stream2)
        expected = [('chr', 0, 3, '+'), ('chr', 7, 12, '+')]
        self.assertListEqual(list(res), expected)
Example #4
0
 def __call__(self, **kw):
     # Set assembly
     assembly_id = kw.get('assembly')
     chrmeta = "guess"
     if assembly_id:
         assembly = genrep.Assembly(assembly_id)
         chrmeta = assembly.chrmeta
     # Set features track
     features = track(kw['features'], chrmeta=chrmeta or None )
     chrmeta = features.chrmeta
     # Set filter track
     filter = track(kw.get('filter'), chrmeta=chrmeta or None)
     # Main
     format = kw.get('output',features.format)
     output = self.temporary_path(fname=features.name+'_filtered.'+format)
     tout = track(output, format, fields=filter.fields,
                  chrmeta=chrmeta, info={'datatype':'qualitative'})
     for chrom in chrmeta:
         tout.write(overlap(features.read(chrom),filter.read(chrom)), chrom=chrom,clip=True)
     tout.close()
     self.new_file(output, 'filtered')
     return self.display_time()