first pass cleanup of cistematic/genomes; change bamPreprocessing
[erange.git] / buildrmaskdb.py
1 try:
2     import psyco
3     psyco.full()
4 except:
5     pass
6
7 import sys
8 import sqlite3 as sqlite
9 import os
10
11 def main(argv=None):
12     if not argv:
13         argv = sys.argv
14
15     print "buildrmaskdb: version 2.1"
16     if len(argv) < 3:
17         print "usage: python %s rmaskdir rmaskdbfile" % argv[0]
18         exit(1)
19
20     rmaskdir = argv[1]
21     rmaskdb = argv[2]
22
23     buildrmaskdb(rmaskdir, rmaskdb)
24
25
26 def buildrmaskdb(rmaskdir, rmaskdb):
27     files = os.listdir(rmaskdir)
28     db = sqlite.connect(rmaskdb)
29     sql = db.cursor()
30     sql.execute("create table repeats (chrom varchar, start int, stop int, name varchar, family varchar)")
31     sql.execute("PRAGMA temp_store = MEMORY")
32     sql.execute("PRAGMA DEFAULT_CACHE_SIZE = 500000")
33     db.commit()
34
35     for filename in files:
36         if "rmsk" not in filename:
37             continue
38
39         print filename
40         infile = open(rmaskdir + "/" + filename)
41         for entry in infile:
42             fields = entry.strip().split("\t")
43             chrom = fields[5][3:]
44             start = int(fields[6])
45             stop = int(fields[7])
46             name = fields[10]
47             family = fields[12]
48             stmt = "insert into repeats values('%s', %d, %d, '%s', '%s')" % (chrom, start, stop, name, family)
49             sql.execute(stmt)
50
51         db.commit()
52
53     print "building index..."
54     sql.execute("PRAGMA SYNCHRONOUS = OFF")
55     sql.execute("create index chromIndex on repeats(chrom)")
56     sql.execute("create index mainIndex on repeats(chrom, start, stop)")
57     db.commit()
58
59
60 if __name__ == "__main__":
61     main(sys.argv)