#!/usr/bin/env python import os import os.path import shutil import subprocess import sys #Version Feb. 25, 2020 # Run drawgram as a command #Synopsis: drawgram.csh treefile torient tstyle uselen langle dbratio ldratio # fontfile charheight ancestnode outformat outfile #Convert arguments to variables TREEFILE = sys.argv[1] TORIENT = sys.argv[2] TSTYLE = sys.argv[3] USELEN = sys.argv[4] LANGLE = sys.argv[5] DBRATIO = sys.argv[6] LDRATIO = sys.argv[7] FONTFILE = sys.argv[8] CHARHEIGHT = sys.argv[9] ANCESTNODE = sys.argv[10] OUTFORMAT = sys.argv[11] OUTFILE = sys.argv[12] # Make a temporary directory in which to run the program STARTDIR = os.getcwd() TEMPDIR = "DRAWGRAM." + str(os.getpid()) os.mkdir(TEMPDIR) shutil.copyfile(TREEFILE, os.path.join(TEMPDIR, "intree")) os.chdir(TEMPDIR) #----------------- generate keyboard input to send to program ----- comfile_h = open('DrawgramComfile', 'w') if OUTFORMAT in ("l", "m", "j", "f", "a", "z", "p", "x", "v", "e", "c", "t", "o", "b"): # choose an output file format comfile_h.write("P\n") comfile_h.write(OUTFORMAT + "\n") # some output formats require additional specifications if OUTFORMAT == "j": # Hewlett Packard Laserjet comfile_h.write("n\n") comfile_h.write("2\n") #Resolution 150 dpi elif OUTFORMAT == "p": # PC Paintbrush PCX format comfile_h.write("n\n") comfile_h.write("3\n") #Resolution VGA 1024 x 768 elif OUTFORMAT == "x": #X11 bitmap comfile_h.write("n\n") comfile_h.write("1024\n") #X resolution comfile_h.write("512\n") #Y resolution # all others, no extra specs. needed # Turn off X-windows display comfile_h.write("v\n") comfile_h.write("n\n") # Tree parameters if TORIENT == "v": comfile_h.write("h\n") comfile_h.write("s\n") comfile_h.write(TSTYLE + "\n") if USELEN == "no": comfile_h.write("b\n") comfile_h.write("l\n") comfile_h.write(LANGLE + "\n") comfile_h.write("d\n") comfile_h.write(DBRATIO + "\n") comfile_h.write("t\n") comfile_h.write(LDRATIO + "\n") comfile_h.write("c\n") comfile_h.write(CHARHEIGHT + "\n") comfile_h.write("a\n") comfile_h.write(ANCESTNODE + "\n") comfile_h.write("y\n") #accept current settings and write plotfile #--------------------- Run Drawgram ---------------------- shutil.copyfile(FONTFILE, "fontfile") comfile_h = open('DrawgramComfile', 'r') os.nice(10) p_drawgram = subprocess.Popen(["drawgram"], stdin=comfile_h) p_drawgram.wait() os.nice(0) os.chdir(STARTDIR) shutil.move(os.path.join(TEMPDIR, "plotfile"), OUTFILE) shutil.rmtree(TEMPDIR)