annotate ccat_wrapper.py @ 13:64e89aad3ee5 draft

Uploaded
author jbrayet
date Thu, 21 Jan 2016 10:38:25 -0500
parents 80b327559c59
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
1 #!/usr/bin/env python
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
2
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
3 import sys, subprocess, tempfile, shutil, os.path
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
4
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
5 def get_top_count( filename ):
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
6 for line in open( filename ):
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
7 if line.startswith( 'outputNum' ):
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
8 return int( line.split()[-1].strip() )
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
9
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
10 def stop_err( tmp_dir, exception ):
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
11 print >> sys.stderr, "Error running CCAT."
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
12 shutil.rmtree( tmp_dir ) #some error has occurred, provide info and remove possibly non-empty temp directory
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
13 raise exception
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
14
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
15 def main():
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
16 CCAT_BINARY = "/usr/bin/ccat/CCAT3.0/bin/CCAT"
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
17 input_tag_file = sys.argv[1]
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
18 input_control_file = sys.argv[2]
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
19 genome = sys.argv[3]
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
20 input_config_file = sys.argv[4]
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
21 project_name = sys.argv[5]
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
22 output_peak_file = sys.argv[6]
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
23 output_region_file = sys.argv[7]
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
24 output_top_file = sys.argv[8]
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
25 output_log_file = sys.argv[9]
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
26 root_dir = sys.argv[10]
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
27
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
28 ###### CREATE ANNOTATION FILES #########
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
29 databasePath = root_dir+"/database/files"
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
30
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
31 subprocess.Popen('mkdir -p '+databasePath+'/nebulaAnnotations', shell=True)
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
32 subprocess.Popen('mkdir -p '+databasePath+'/nebulaAnnotations/'+genome, shell=True)
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
33
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
34 nebulaGenomePath=databasePath+"/nebulaAnnotations/"+genome
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
35
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
36 FAIFILE='n'
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
37 LENFILE='n'
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
38 DICTFILE='n'
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
39 CHROFILE='n'
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
40 MAPFILE='n'
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
41
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
42 if not os.path.isfile(nebulaGenomePath+"/"+genome+".len"):
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
43 FAIFILE='y'
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
44 LENFILE='y'
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
45
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
46 FILEPATH=databasePath.replace("database/files","tool-data")
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
47
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
48 cmd='bash /usr/bin/create_annotation_files.sh '+FAIFILE+" "+LENFILE+" "+DICTFILE+" "+CHROFILE+" "+FILEPATH+" "+genome+" "+MAPFILE+" "+nebulaGenomePath
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
49 process=subprocess.Popen(cmd, shell=True)
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
50 process.wait()
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
51
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
52 chrom_info_file=nebulaGenomePath+"/"+genome+".len"
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
53
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
54 tmp_dir = tempfile.mkdtemp()
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
55 try:
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
56 proc = subprocess.Popen( args="%s %s > %s" % ( CCAT_BINARY, " ".join( map( lambda x: "%s" % x, [ input_tag_file, input_control_file, chrom_info_file, input_config_file, project_name ] ) ), output_log_file ), shell=True, cwd=tmp_dir )
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
57 proc.wait()
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
58 if proc.returncode:
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
59 raise Exception( "Error code: %i" % proc.returncode )
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
60 output_num = get_top_count( input_config_file )
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
61 shutil.move( os.path.join( tmp_dir, "%s.significant.peak" % project_name ), output_peak_file )
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
62 shutil.move( os.path.join( tmp_dir, "%s.significant.region" % project_name ), output_region_file )
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
63 shutil.move( os.path.join( tmp_dir, "%s.top%i.peak" % ( project_name, output_num ) ), output_top_file )
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
64 except Exception, e:
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
65 return stop_err( tmp_dir, e )
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
66 os.rmdir( tmp_dir ) #clean up empty temp working directory
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
67
80b327559c59 Uploaded
jbrayet
parents:
diff changeset
68 if __name__ == "__main__": main()