Mercurial > repos > xuebing > sharplabtool
diff tools/hyphy/hyphy_nj_tree_wrapper.py @ 0:9071e359b9a3
Uploaded
author | xuebing |
---|---|
date | Fri, 09 Mar 2012 19:37:19 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/hyphy/hyphy_nj_tree_wrapper.py Fri Mar 09 19:37:19 2012 -0500 @@ -0,0 +1,58 @@ +#Dan Blankenberg +#takes fasta alignments, a distance metric and builds neighbor joining trees +import os, sys +from galaxy import eggs +from galaxy.tools.util import hyphy_util + +#Retrieve hyphy path, this will need to be the same across the cluster +tool_data = sys.argv.pop() +HYPHY_PATH = os.path.join( tool_data, "HYPHY" ) +HYPHY_EXECUTABLE = os.path.join( HYPHY_PATH, "HYPHY" ) + +#Read command line arguments +input_filename = os.path.abspath(sys.argv[1].strip()) +output_filename1 = os.path.abspath(sys.argv[2].strip()) +output_filename2 = os.path.abspath(sys.argv[3].strip()) +distance_metric = sys.argv[4].strip() +temp_ps_filename = hyphy_util.get_filled_temp_filename("") + +#Guess if this is a single or multiple FASTA input file +found_blank = False +is_multiple = False +for line in open(input_filename): + line = line.strip() + if line == "": found_blank = True + elif line.startswith(">") and found_blank: + is_multiple = True + break + else: found_blank = False + +NJ_tree_shared_ibf = hyphy_util.get_filled_temp_filename(hyphy_util.NJ_tree_shared_ibf) + +#set up NJ_tree file +NJ_tree_filename = hyphy_util.get_filled_temp_filename(hyphy_util.get_NJ_tree(NJ_tree_shared_ibf)) +#setup Config file +config_filename = hyphy_util.get_nj_tree_config_filename(input_filename, distance_metric, output_filename1, temp_ps_filename, NJ_tree_filename) +if is_multiple: + os.unlink(NJ_tree_filename) + os.unlink(config_filename) + NJ_tree_filename = hyphy_util.get_filled_temp_filename(hyphy_util.get_NJ_treeMF(NJ_tree_shared_ibf)) + config_filename = hyphy_util.get_nj_treeMF_config_filename(input_filename, output_filename1, temp_ps_filename, distance_metric, NJ_tree_filename) + print "Multiple Alignment Analyses" +else: print "Single Alignment Analyses" + + +#Run Hyphy +hyphy_cmd = "%s BASEPATH=%s USEPATH=/dev/null %s" % (HYPHY_EXECUTABLE, HYPHY_PATH, config_filename) +hyphy = os.popen(hyphy_cmd, 'r') +#print hyphy.read() +hyphy.close() + +#remove temporary files +os.unlink(NJ_tree_filename) +os.unlink(config_filename) + + +#Convert PS to PDF +if os.path.getsize(temp_ps_filename)>0: temp = os.popen("ps2pdf %s %s" % (temp_ps_filename, output_filename2), 'r').close() +os.unlink(temp_ps_filename)