-
Notifications
You must be signed in to change notification settings - Fork 0
/
legion_genehunter.py
81 lines (61 loc) · 1.98 KB
/
legion_genehunter.py
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/usr/bin/env python
import re
import os
import sys
import shutil
from glob import glob
# bit of a quick'n'dirty script to preprocess data using mega2
# then generate jobs scripts and submit them using qsub
CONSORTIUM='BioinfCompBio'
PROJECT='UCL_Linkage'
#jobscript_name = 'jobscript'
jobscript = """#!/bin/bash -l
#PBS -l nodes=1:ppn=1
#PBS -l pvmem=2000mb
#PBS -l walltime=00:15:00
#PBS -j oe
#PBS -A ucl/%s/%s
set -v
cd %s
date
ghm < %s
date
"""
def _system(command) :
print command
if os.system(command) != 0 :
print >> sys.stderr, "os.system failure: %s" % command
sys.exit(-1)
def submit_job(j) :
#_system("qsub %s" % j)
pass
def write_job_script(path, setupfile, jobscript_name) :
global CONSORTIUM, PROJECT
global jobscript
tmp = jobscript % (CONSORTIUM, PROJECT, path, setupfile)
f = open(path + os.sep + jobscript_name, 'w')
print >> f, tmp
f.close()
def process(path) :
global jobscript_name
dir_re = re.compile(".*c(\d+)$")
input_re = re.compile("^setup_(\d+)\..*")
listing = filter(lambda x : os.path.isdir(x) and dir_re.match(x), glob(path + os.sep + "*"))
for dir in listing :
chromo = dir_re.match(dir).group(1)
inputfiles = glob(dir + os.sep + 'setup_*')
for f in inputfiles :
dirname,filename = os.path.split(f)
m = input_re.match(filename)
if not m :
continue
fragmentnumber = m.group(1)
resultsfile = dirname + os.sep + ("gh_%s.out" % (fragmentnumber))
if os.path.exists(resultsfile) :
print "skipping chromosome %s, fragment %s results file present : %s" % (chromo, fragmentnumber, resultsfile)
continue
jobscript_name = "jobscript.%s" % fragmentnumber
write_job_script(dirname, filename, jobscript_name)
submit_job(dirname + os.sep + jobscript_name)
if __name__ == '__main__' :
process(os.path.abspath(sys.argv[1]))