annotate EdgeR_differentialExpression_wrapper.py @ 4:bfd09008aae7 draft

Adding rsem dependencies to other tools.
author trinity_ctat
date Mon, 02 Oct 2017 14:58:26 -0400
parents 70b3058d39d9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
1 import sys, os, subprocess
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
2
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
3 TRINITY_BASE_DIR = ""
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
4 if os.environ.has_key('TRINITY_HOME'):
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
5 TRINITY_BASE_DIR = os.environ['TRINITY_HOME'];
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
6 elif hasattr(os, 'symlink'): # symlink was implemented to always return false when it was not implemented in earlier versions of python.
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
7 # 2017-09-26
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
8 # Cicada Dennis added looking for the location of the Trinity program using the Unix "which" utility.
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
9 # I tried using "command -v Trinity" but for some reason, I was getting a OS permission error with that.
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
10 # I also found distutils.spawn.find_executable() which might work, but already implemented the below.
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
11 try:
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
12 pipe1 = subprocess.Popen(["which", "Trinity"], stdout=subprocess.PIPE)
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
13 except:
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
14 msg = "You must set the environmental variable TRINITY_HOME to the base installation directory of Trinity before running {:s}.\n".format(sys.argv[0])
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
15 sys.stderr.write(msg)
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
16 # t, v, tb = sys.exc_info()
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
17 # raise t, v, tb
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
18 # For some reason the above was giving a syntax error.
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
19 # A simple raise should reraise the existing exception.
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
20 raise
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
21 else:
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
22 TrinityPath, err_info = pipe1.communicate()
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
23 # FIX - probably should be checking err_info for errors...
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
24 # Determine the TRINITY_BASE_DIR from output1.
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
25 # If TrinityPath is a link, we need to dereference the link.
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
26 TrinityPath = TrinityPath.rstrip() # Need to strip off a newline.
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
27 # print "Trinity that was found is: {:s}".format(repr(TrinityPath))
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
28 # print os.path.islink(TrinityPath)
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
29 TrinityPath = os.path.abspath(TrinityPath)
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
30 # msg = "The Absolute Trinity path that was found is: {:s}".format(TrinityPath)
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
31 # print msg
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
32 # print os.path.islink(TrinityPath)
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
33 while os.path.islink(TrinityPath):
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
34 # print "That path is a link."
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
35 TrinityPath = os.path.join(os.path.dirname(TrinityPath),os.readlink(TrinityPath))
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
36 # print "The new path is: {:s}".format(TrinityPath)
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
37 # Take off the last part of the path (which is the Trinity command)
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
38 TRINITY_BASE_DIR = "/".join(TrinityPath.split("/")[0:-1])
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
39 else:
3
70b3058d39d9 Adding more debugging statements.
trinity_ctat
parents: 0
diff changeset
40 sys.stderr.write("Either set TRINITY_HOME to the trinity base directory, " + \
70b3058d39d9 Adding more debugging statements.
trinity_ctat
parents: 0
diff changeset
41 "or ensure that directory is in the PATH before running.")
0
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
42 sys.exit(1)
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
43
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
44 usage= "usage: " + " $counts_matrix" + " $dispersion"
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
45
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
46 if len(sys.argv)<2:
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
47 print "Require at least two parameters, " + usage
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
48 else:
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
49 print "All good- command going ahead"
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
50 print " "
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
51
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
52 def run_command(cmd):
3
70b3058d39d9 Adding more debugging statements.
trinity_ctat
parents: 0
diff changeset
53 # 2017-10-02
70b3058d39d9 Adding more debugging statements.
trinity_ctat
parents: 0
diff changeset
54 # Cicada Dennis put the subprocess command in a try/except statement.
70b3058d39d9 Adding more debugging statements.
trinity_ctat
parents: 0
diff changeset
55 # Errors were going undetected the way it was written previously.
70b3058d39d9 Adding more debugging statements.
trinity_ctat
parents: 0
diff changeset
56 print "Running command:\n\t" + cmd
70b3058d39d9 Adding more debugging statements.
trinity_ctat
parents: 0
diff changeset
57 try:
70b3058d39d9 Adding more debugging statements.
trinity_ctat
parents: 0
diff changeset
58 pipe = subprocess.Popen(cmd, shell=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
70b3058d39d9 Adding more debugging statements.
trinity_ctat
parents: 0
diff changeset
59 cmd_stdout, cmd_stderr = pipe.communicate()
70b3058d39d9 Adding more debugging statements.
trinity_ctat
parents: 0
diff changeset
60 except:
70b3058d39d9 Adding more debugging statements.
trinity_ctat
parents: 0
diff changeset
61 msg = "ERROR while running command:\n\t" + cmd
70b3058d39d9 Adding more debugging statements.
trinity_ctat
parents: 0
diff changeset
62 sys.stderr.write(msg)
70b3058d39d9 Adding more debugging statements.
trinity_ctat
parents: 0
diff changeset
63 raise
70b3058d39d9 Adding more debugging statements.
trinity_ctat
parents: 0
diff changeset
64
70b3058d39d9 Adding more debugging statements.
trinity_ctat
parents: 0
diff changeset
65 sys.stdout.write(cmd_stdout)
70b3058d39d9 Adding more debugging statements.
trinity_ctat
parents: 0
diff changeset
66 ret = pipe.returncode
0
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
67 if ret:
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
68 print "command died: " + str(ret)
3
70b3058d39d9 Adding more debugging statements.
trinity_ctat
parents: 0
diff changeset
69 sys.stderr.write(cmd_stderr)
70b3058d39d9 Adding more debugging statements.
trinity_ctat
parents: 0
diff changeset
70 sys.exit(ret)
0
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
71 else:
3
70b3058d39d9 Adding more debugging statements.
trinity_ctat
parents: 0
diff changeset
72 # Any error output is written to stdout instead of stderr, since no error has occurred.
70b3058d39d9 Adding more debugging statements.
trinity_ctat
parents: 0
diff changeset
73 sys.stderr.write(cmd_stderr)
0
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
74 return
3
70b3058d39d9 Adding more debugging statements.
trinity_ctat
parents: 0
diff changeset
75
70b3058d39d9 Adding more debugging statements.
trinity_ctat
parents: 0
diff changeset
76 print ""
0
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
77
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
78 countmatrix= "counts_matrix"
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
79
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
80 cmd= "cp " + sys.argv[1] + " " + countmatrix
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
81 run_command(cmd)
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
82
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
83 cmd= TRINITY_BASE_DIR + "/Analysis/DifferentialExpression/run_DE_analysis.pl "+ " --matrix "+ countmatrix + " --method edgeR " + " --output edgeR_results "+ " --dispersion " + sys.argv[2] + " --tar_gz_outdir"
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
84 run_command(cmd)
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
85
023628c034b6 Adding EdgeR differential expression.
trinity_ctat
parents:
diff changeset
86 sys.exit(0)