0
|
1 #!/usr/bin/env python
|
|
2 """
|
|
3 Authors: Timothy Tickle and Curtis Huttenhower
|
|
4 Description: Find associations in two matrices of data.
|
|
5 """
|
|
6
|
|
7 __author__ = "Timothy Tickle and Curtis Huttenhower"
|
|
8 __copyright__ = "Copyright 2012"
|
|
9 __credits__ = ["Timothy Tickle","Curtis Huttenhower"]
|
|
10 __maintainer__ = "Timothy Tickle"
|
|
11 __email__ = "ttickle@hsph.harvard.edu"
|
|
12
|
|
13 import argparse
|
|
14 import os
|
|
15 import sfle
|
|
16 import sys
|
|
17
|
|
18 c_strSufRC = ".read.config"
|
|
19
|
|
20 c_fileDirSrc = Dir( sfle.d( os.path.dirname( sfle.current_file( ) ), sfle.c_strDirSrc ) )
|
|
21 c_fileProgMaaslin = File( sfle.d( c_fileDirSrc, "Maaslin.R" ) )
|
|
22 sArgsExt = ".args"
|
|
23 #Commandline to ignore
|
|
24 lsIgnore = ["-i","-I","--input_config","--input_process"]
|
|
25
|
|
26 def MaAsLin( filePCL ):
|
|
27 #Build input file name if they exist or give ""
|
|
28 strBase = filePCL.get_abspath().replace( sfle.c_strSufPCL, "" )
|
|
29 strR, strRC, strArgs = (( strBase + s ) for s in (sfle.c_strSufR, c_strSufRC, sArgsExt))
|
|
30 fileR, fileRC, fileArgs = (( File( s ) if os.path.exists( s ) else "" ) for s in (strR, strRC, strArgs))
|
|
31
|
|
32 ## Read in an args file if it exists
|
|
33 lsArgs = []
|
|
34 if fileArgs:
|
|
35 fReader = csv.reader(open(fileArgs.get_abspath(),'r'), delimiter = " ")
|
|
36 lsArgsTmp = []
|
|
37 [lsArgsTmp.extend(lsLine) for lsLine in fReader]
|
|
38 fSkip = False
|
|
39 for s in lsArgsTmp:
|
|
40 if s in lsIgnore:
|
|
41 fSkip=True
|
|
42 continue
|
|
43 if fSkip:
|
|
44 fSkip = not fSkip
|
|
45 continue
|
|
46 lsArgs.append(s)
|
|
47
|
|
48 lsInputArgs = ["-I",[fileR]] if fileR else []
|
|
49 lsInputArgs.extend(["-i",[fileRC]] if fileRC else [])
|
|
50 lsArgs.extend(lsInputArgs)
|
|
51
|
|
52 strBase = os.path.basename( strBase )
|
|
53 fileTSVFile = File(sfle.d(fileDirTmp,sfle.rebase(filePCL,sfle.c_strSufPCL,sfle.c_strSufTSV)))
|
|
54 strT = File( sfle.d( os.path.join(fileDirOutput.get_abspath(), strBase, strBase + sfle.c_strSufTXT) ) )
|
|
55
|
|
56 #Transpose PCL
|
|
57 sfle.spipe(pE, filePCL, c_fileProgTranspose, fileTSVFile)
|
|
58 #Run MaAsLin
|
|
59 sfle.op(pE, c_fileProgMaaslin, lsArgs+[[True,strT],[False, fileTSVFile]])
|
|
60 if fileArgs: Depends(c_fileProgMaaslin, fileArgs)
|
|
61 Default(strT) |