Example #1
0
def main(args):
    if args.v: print args
    print 'reading %s...' % args.variant_fn
    pos2var=VariantPositions(args.variant_fn)

    try: os.mkdir(args.output_dir)
    except OSError: pass

    for f in os.listdir(args.output_dir):
        os.unlink(os.path.join(args.output_dir, f))

    dots=ProgressDots(args.dot_counter)

    stats={'n_reads':0,
           'n_variants':0}
    print 'reading %s...' % args.rnaseq_fn
    with open(args.rnaseq_fn) as f:
        for line in f:
            dots.ping()
            if line.startswith('@'):
                continue
            stats['n_reads']+=1

            row=line.split('\t')
            var=pos2var.variant_for(row[2], int(row[3]), len(row[9]))
            if not var: continue
            stats['n_variants']+=1
            try:
                var.reads.append(line)
            except AttributeError:
                var.reads=[line]
    print

    # write out all reads for each variant:
    for var in pos2var.values():
        try:
            fn=os.path.join(args.output_dir, '%s.fastq' % var.symbol)
            with open(fn, 'w') as var_f:
                for line in var.reads:
                    var_f.write(line)
        except AttributeError:  # on var.reads
            pass

    print stats
    return 0
Example #2
0
    def test_read_variant_file(self):
        var_fn=os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'fixtures', 'triple_negativ_mut_seq'))
        pos2var=VariantPositions(var_fn)
        stats=pos2var.stats

        self.assertEqual(stats['n_variants'], 1128)
        self.assertEqual(stats['n_snp'], 1022)
        self.assertEqual(stats['n_ins'], 1)
        self.assertEqual(stats['n_del'], 105)
        self.assertEqual(stats['n_ignored'], 264)
        self.assertEqual(stats['n_variant_errors'], 13)
        self.assertEqual(stats['n_genes'], 496)
        self.assertEqual(len(pos2var), 740)
        print stats

        # check that all variants bracket the alignments assigned to them:
        for k, var in pos2var.items():
            (chr, pos)=k.split('_')
            nchr=chr[3:]
            self.assertEqual(nchr, var.chrom)
            self.assertTrue(int(pos) >= int(var.start), '%s: %s <= %s' % (var, pos, var.start))
            self.assertTrue(int(pos) <= int(var.stop), '%s: %s >= %s' % (var, pos, var.stop))