-
Notifications
You must be signed in to change notification settings - Fork 1
/
bedNamePickFirst
executable file
·38 lines (30 loc) · 1.29 KB
/
bedNamePickFirst
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/bin/env python
import logging, sys, optparse
from collections import defaultdict
from os.path import join, basename, dirname, isfile
# === COMMAND LINE INTERFACE, OPTIONS AND HELP ===
parser = optparse.OptionParser("usage: %prog [options] bedFname1 bedFname2 ... - given a list of BED files, load all, index by the name field and for each name, output the first line encounteredin the first file that contains the name")
parser.add_option("-d", "--debug", dest="debug", action="store_true", help="show debug messages")
#parser.add_option("-f", "--file", dest="file", action="store", help="run on file")
#parser.add_option("", "--test", dest="test", action="store_true", help="do something")
(options, args) = parser.parse_args()
if options.debug:
logging.basicConfig(level=logging.DEBUG)
else:
logging.basicConfig(level=logging.INFO)
# ==== FUNCTIONs =====
# ----------- MAIN --------------
if args==[]:
parser.print_help()
exit(1)
filenames = args
nameToLines = defaultdict(list)
lCount = 0
for fname in filenames:
for line in open(fname):
name = line.rstrip("\n").split("\t")[3]
nameToLines[name].append(line)
lCount +=1
logging.info("Loaded %d names, %d lines" % (len(nameToLines), lCount))
for name, lines in nameToLines.iteritems():
print lines[0],