3 Convert a group of eland_result files from a sequencer run to bed files.
11 from htsworkflow.util.makebed import make_bed_from_eland_stream, make_description
13 def make_bed_for_gerald(eland_dir, output_dir, prefix, database, flowcell):
15 convert s_[1-8]_eland_result.txt to corresponding bed files
17 eland_files = glob(os.path.join(eland_dir, 's_[1-8]_eland_result.txt'))
18 out_files = glob(os.path.join(eland_dir, 's_[1-8]_eland_result.bed'))
19 if len(out_files) > 0:
20 raise RuntimeError("please move old bedfiles")
22 logging.info('Processing %s using flowcell id %s' % (eland_dir, flowcell))
23 for pathname in eland_files:
24 path, name = os.path.split(pathname)
26 outname = 's_%d_eland_result.bed' %(lane,)
27 logging.info('Converting lane %d to %s' % (lane, outname))
29 outpathname = os.path.join(eland_dir, outname)
30 # look up descriptions
31 bed_name, description = make_description(database, flowcell, lane)
34 instream = open(pathname,'r')
35 outstream = open(outpathname,'w')
37 make_bed_from_eland_stream(
38 instream, outstream, name, description, prefix
42 usage = """%prog: --flowcell <flowcell id> directory_name
44 directory should contain a set of 8 eland result files named like
45 s_[12345678]_eland_result.txt"""
48 parser = optparse.OptionParser(usage)
50 parser.add_option('-o', '--output', dest='output',
51 help="destination directory for our bed files" \
52 "defaults to eland directory",
54 parser.add_option('--chromosome', dest='prefix',
55 help='Set the chromosome prefix name. defaults to "chr"',
57 parser.add_option("--database", dest='database',
58 help="specify location of fctracker database",
60 parser.add_option("--flowcell", dest='flowcell',
61 help="specify the flowcell id for this run",
63 parser.add_option('-v', '--verbose', dest='verbose', action='store_true',
64 help='increase verbosity',
68 def main(command_line=None):
69 logging.basicConfig(level=logging.WARNING)
70 if command_line is None:
71 command_line = sys.argv[1:]
73 parser = make_parser()
74 (opts, args) = parser.parse_args(command_line)
77 parser.error('Directory name required')
80 if not os.path.isdir(eland_dir):
81 parser.error('%s must be a directory' % (eland_dir,))
83 if opts.flowcell is None:
84 parser.error('Flowcell ID required')
87 logger = logging.getLogger()
88 logger.setLevel(logging.INFO)
90 make_bed_for_gerald(eland_dir, opts.output, opts.prefix, opts.database, opts.flowcell)
94 if __name__ == "__main__":
95 sys.exit(main(sys.argv[1:]))