1 | #!/usr/local/bin/python |
---|
2 | # hack to run and process a linkage format file into |
---|
3 | # the format used by Marchini's SNPTEST imputed case control association |
---|
4 | # expects args as |
---|
5 | # rgGTOOL.py $i $o $discrete $logf $outdir |
---|
6 | # ross lazarus |
---|
7 | |
---|
8 | import sys,math,shutil,subprocess,os,time |
---|
9 | from os.path import abspath |
---|
10 | imagedir = '/static/rg' # if needed for images |
---|
11 | myversion = 'V000.1 August 2007' |
---|
12 | |
---|
13 | def timenow(): |
---|
14 | """return current time as a string |
---|
15 | """ |
---|
16 | return time.strftime('%d/%m/%Y %H:%M:%S', time.localtime(time.time())) |
---|
17 | |
---|
18 | |
---|
19 | |
---|
20 | if __name__ == "__main__": |
---|
21 | if len(sys.argv) < 6: |
---|
22 | s = 'rgGTOOL.py needs 5 params - got %s \n' % (sys.argv) |
---|
23 | sys.stderr.write(s) # print >>,s would probably also work? |
---|
24 | sys.exit(0) |
---|
25 | print 'Rgenetics %s http://rgenetics.org SNPTEST Tools, rgGTOOL.py starting at %s' % (myversion,timenow()) |
---|
26 | pname = sys.argv[1] |
---|
27 | lpedname = pname.split('.ped')[0] # get file name part |
---|
28 | outname = sys.argv[2] |
---|
29 | discrete = sys.argv[3] |
---|
30 | logf = sys.argv[4] |
---|
31 | outdir = sys.argv[5] |
---|
32 | cdir = os.getcwd() |
---|
33 | me = sys.argv[0] |
---|
34 | mypath = abspath(os.path.join(cdir,me)) # get abs path to this python script |
---|
35 | shpath = abspath(os.path.sep.join(mypath.split(os.path.sep)[:-1])) |
---|
36 | alogf = abspath(os.path.join(cdir,logf)) # absolute paths |
---|
37 | apedf = abspath(os.path.join(cdir,'%s.ped' % lpedname)) # absolute paths |
---|
38 | amapf = abspath(os.path.join(cdir,'%s.map' % lpedname)) # absolute paths |
---|
39 | outg = abspath(os.path.join(outdir,'%s.gen' % outname)) # absolute paths |
---|
40 | outs = abspath(os.path.join(outdir,'%s.sample' % outname)) # absolute paths |
---|
41 | workdir = abspath(os.path.sep.join(mypath.split(os.path.sep)[:-1])) # trim end off './database/files/foo.dat' |
---|
42 | os.chdir(workdir) |
---|
43 | tlogname = '%s.logtemp' % outname |
---|
44 | sto = file(tlogname,'w') |
---|
45 | sto.write('rgGTOOL.py: called with %s\n' % (sys.argv)) |
---|
46 | exme = 'gtool' |
---|
47 | vcl = [exme,'-P','--ped',apedf,'--map',amapf,'--discrete_phenotype',discrete,'--og',outg,'--os',outs] |
---|
48 | #'/usr/local/bin/plink','/usr/local/bin/plink',pc1,pc2,pc3) |
---|
49 | #os.spawnv(os.P_WAIT,plink,vcl) |
---|
50 | p=subprocess.Popen(' '.join(vcl),shell=True,stdout=sto) |
---|
51 | retval = p.wait() |
---|
52 | sto.write('rgGTOOL.py after calling %s: vcl=%s\n' % (exme,vcl)) |
---|
53 | sto.close() |
---|
54 | shutil.move(tlogname,alogf) |
---|
55 | os.chdir(cdir) |
---|
56 | |
---|
57 | |
---|
58 | |
---|