/tools/hyphy/hyphy_nj_tree_wrapper.py
https://bitbucket.org/cistrome/cistrome-harvard/ · Python · 58 lines · 37 code · 10 blank · 11 comment · 8 complexity · 2737a87a705fd8b543c7ee7bec0aff40 MD5 · raw file
- #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)