Mercurial > repos > jbrayet > ccat_1_0_docker
changeset 9:bd9147788dd5 draft
Uploaded
author | jbrayet |
---|---|
date | Thu, 21 Jan 2016 09:47:12 -0500 |
parents | 0dbb85e4a350 |
children | 83c5f1b34d8b |
files | ccat_wrapper.py |
diffstat | 1 files changed, 68 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ccat_wrapper.py Thu Jan 21 09:47:12 2016 -0500 @@ -0,0 +1,68 @@ +#!/usr/bin/env python + +import sys, subprocess, tempfile, shutil, os.path + +def get_top_count( filename ): + for line in open( filename ): + if line.startswith( 'outputNum' ): + return int( line.split()[-1].strip() ) + +def stop_err( tmp_dir, exception ): + print >> sys.stderr, "Error running CCAT." + shutil.rmtree( tmp_dir ) #some error has occurred, provide info and remove possibly non-empty temp directory + raise exception + +def main(): + CCAT_BINARY = "/usr/bin/ccat/CCAT3.0/bin/CCAT" + input_tag_file = sys.argv[1] + input_control_file = sys.argv[2] + genome = sys.argv[3] + input_config_file = sys.argv[4] + project_name = sys.argv[5] + output_peak_file = sys.argv[6] + output_region_file = sys.argv[7] + output_top_file = sys.argv[8] + output_log_file = sys.argv[9] + root_dir = sys.argv[10] + + ###### CREATE ANNOTATION FILES ######### + databasePath = root_dir+"/database/files" + + subprocess.Popen('mkdir -p '+databasePath+'/nebulaAnnotations', shell=True) + subprocess.Popen('mkdir -p '+databasePath+'/nebulaAnnotations/'+genome, shell=True) + + nebulaGenomePath=databasePath+"/nebulaAnnotations/"+genome + + FAIFILE='n' + LENFILE='n' + DICTFILE='n' + CHROFILE='n' + MAPFILE='n' + + if not os.path.isfile(nebulaGenomePath+"/"+genome+".len"): + FAIFILE='y' + LENFILE='y' + + FILEPATH=databasePath.replace("database/files","tool-data") + + cmd='bash /usr/bin/create_annotation_files.sh '+FAIFILE+" "+LENFILE+" "+DICTFILE+" "+CHROFILE+" "+FILEPATH+" "+genome+" "+MAPFILE+" "+nebulaGenomePath + process=subprocess.Popen(cmd, shell=True) + process.wait() + + chrom_info_file=nebulaGenomePath+"/"+genome+".len" + + tmp_dir = tempfile.mkdtemp() + try: + 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 ) + proc.wait() + if proc.returncode: + raise Exception( "Error code: %i" % proc.returncode ) + output_num = get_top_count( input_config_file ) + shutil.move( os.path.join( tmp_dir, "%s.significant.peak" % project_name ), output_peak_file ) + shutil.move( os.path.join( tmp_dir, "%s.significant.region" % project_name ), output_region_file ) + shutil.move( os.path.join( tmp_dir, "%s.top%i.peak" % ( project_name, output_num ) ), output_top_file ) + except Exception, e: + return stop_err( tmp_dir, e ) + os.rmdir( tmp_dir ) #clean up empty temp working directory + +if __name__ == "__main__": main()