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 LOGGER = logging.getLogger(__name__)
15 def make_bed_for_gerald(eland_dir, output_dir, prefix, database, flowcell):
17 convert s_[1-8]_eland_result.txt to corresponding bed files
19 eland_files = glob(os.path.join(eland_dir, 's_[1-8]_eland_result.txt'))
20 out_files = glob(os.path.join(eland_dir, 's_[1-8]_eland_result.bed'))
21 if len(out_files) > 0:
22 raise RuntimeError("please move old bedfiles")
24 LOGGER.info('Processing %s using flowcell id %s' % (eland_dir, flowcell))
25 for pathname in eland_files:
26 path, name = os.path.split(pathname)
28 outname = 's_%d_eland_result.bed' %(lane,)
29 LOGGER.info('Converting lane %d to %s' % (lane, outname))
31 outpathname = os.path.join(eland_dir, outname)
32 # look up descriptions
33 bed_name, description = make_description(database, flowcell, lane)
36 instream = open(pathname,'r')
37 outstream = open(outpathname,'w')
39 make_bed_from_eland_stream(
40 instream, outstream, name, description, prefix
44 usage = """%prog: --flowcell <flowcell id> directory_name
46 directory should contain a set of 8 eland result files named like
47 s_[12345678]_eland_result.txt"""
50 parser = optparse.OptionParser(usage)
52 parser.add_option('-o', '--output', dest='output',
53 help="destination directory for our bed files" \
54 "defaults to eland directory",
56 parser.add_option('--chromosome', dest='prefix',
57 help='Set the chromosome prefix name. defaults to "chr"',
59 parser.add_option("--database", dest='database',
60 help="specify location of fctracker database",
62 parser.add_option("--flowcell", dest='flowcell',
63 help="specify the flowcell id for this run",
65 parser.add_option('-v', '--verbose', dest='verbose', action='store_true',
66 help='increase verbosity',
70 def main(command_line=None):
71 LOGGER.basicConfig(level=logging.WARNING)
72 if command_line is None:
73 command_line = sys.argv[1:]
75 parser = make_parser()
76 (opts, args) = parser.parse_args(command_line)
79 parser.error('Directory name required')
82 if not os.path.isdir(eland_dir):
83 parser.error('%s must be a directory' % (eland_dir,))
85 if opts.flowcell is None:
86 parser.error('Flowcell ID required')
89 logger = logging.getLogger()
90 logger.setLevel(logging.INFO)
92 make_bed_for_gerald(eland_dir, opts.output, opts.prefix, opts.database, opts.flowcell)
96 if __name__ == "__main__":
97 sys.exit(main(sys.argv[1:]))