Extend makebed to lookup metadata out of a copy of the fctracker database
[htsworkflow.git] / scripts / makebed
1 #!/usr/bin/python
2 import optparse
3 import sys
4 import os
5
6 from gaworkflow.util.makebed import make_bed_from_eland_stream, make_description
7
8 def make_parser():
9   parser = optparse.OptionParser()
10   parser.add_option('-e', '--eland', dest='inname',
11                     help='specify input eland filename')
12   parser.add_option('-b', '--bed', dest='outname',
13                     help='specify output befilename')
14   parser.add_option('-n', '--name', dest='name',
15                     help='specify the track (short) name.',
16                     default=None)
17   parser.add_option('-d', '--description', dest='description',
18                     help='specify the track description',
19                     default=None)
20   parser.add_option('--chromosome', dest='prefix',
21                     help='Set the chromosome prefix name. defaults to "chr"',
22                     default='chr')
23   parser.add_option("--database", dest='database',
24                     help="specify location of fctracker database",
25                     default=None)
26   parser.add_option("--flowcell", dest='flowcell',
27                     help="compute name and description from database using flowcell id",
28                     default=None)
29   parser.add_option("--lane", dest='lane',
30                     help='specify which lane to use when retrieving description from database',
31                     default=None)
32   return parser
33
34 def main(command_line=None):
35   if command_line is None:
36     command_line = sys.argv[1:]
37
38   parser = make_parser()
39   (options, args) = parser.parse_args(command_line)
40
41   if options.inname is None:
42     parser.error("Need eland input file name")
43     return 1
44
45   if options.outname is None:
46     options.outname = os.path.splitext(options.inname)[0]+'.bed'
47     print >>sys.stderr, "defaulting to outputname", options.outname
48
49   if os.path.exists(options.inname):
50     instream = open(options.inname, 'r')
51   else:
52     parser.error('%s was not found' % (options.inname))
53     return 1
54
55   if os.path.exists(options.outname):
56       parser.error("not overwriting %s" % (options.outname))
57       return 1
58   else:
59     outstream = open(options.outname, 'w')
60
61   if options.flowcell is not None and options.lane is not None:
62     # get our name/description out of the database
63     name, description = make_description(
64                            options.database, options.flowcell, options.lane
65                         )
66   else:
67     name = options.name
68     description = options.description
69
70   print name, description
71   #make_bed_from_eland_stream(instream, outstream, name, description, options.prefix)
72   return 0
73
74 if __name__ == "__main__":
75   sys.exit(main(sys.argv[1:]))
76