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
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))