annotate convertMatrix_wrapper.py @ 31:4f7cb568384f draft

Uploaded
author jbrayet
date Tue, 22 Sep 2015 08:02:54 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
31
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
1 #! /usr/bin/python
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
2 # -*- coding: utf8 -*-
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
3 """#Convert Matrix - developed by Jocelyn Brayet <jocelyn.brayet@curie.fr>
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
4 #Copyright (C) 2015 Institut Curie
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
5 #
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
6 #This program is free software: you can redistribute it and/or modify
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
7 #it under the terms of the GNU General Public License as published by
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
8 #the Free Software Foundation, either version 3 of the License, or
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
9 #(at your option) any later version.
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
10 #
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
11 #This program is distributed in the hope that it will be useful,
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
12 #but WITHOUT ANY WARRANTY; without even the implied warranty of
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
13 #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
14 #GNU General Public License for more details.
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
15 #
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
16 #You should have received a copy of the GNU General Public License
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
17 #along with this program. If not, see <http://www.gnu.org/licenses/>.
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
18 #
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
19 ###########################################################'
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
20 #
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
21 #Client to download convert matrix results from RSAT server.
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
22 #
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
23 #
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
24 #usage: convertMatrix_wrapper.py [-h] -matrix <MATRIX> -input_form <INPUT_FORM>
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
25 # -output_form <OUTPUT_FORM>
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
26 # [-return_type <RETURN_TYPE>] [-perm <PERM>]
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
27 # [-rc <RC>] [-decimals <DECIMALS>] -server
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
28 # <SERVEUR> -outGalaxy <OUT_GALAXY>
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
29 #
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
30 #optional arguments:
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
31 # -h, --help show this help message and exit
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
32 # -matrix <MATRIX>, --matrix <MATRIX>
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
33 # Matrix (or assembly or features) you want to convert.
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
34 # -input_form <INPUT_FORM>, --input_form <INPUT_FORM>
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
35 # Input matrix format. Supported: alignace, assembly,
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
36 # cb, clustal, consensus, feature, gibbs, infogibbs,
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
37 # meme, motifsampler, tab, transfac.
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
38 # -output_form <OUTPUT_FORM>, --output_form <OUTPUT_FORM>
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
39 # Output matrix format. Supported: consensus, patser,
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
40 # tab, transfac.
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
41 # -return_type <RETURN_TYPE>, --return_type <RETURN_TYPE>
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
42 # Result type (matrix content). Supported: consensus,
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
43 # counts, frequencies, info, logo, margins, parameters,
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
44 # profile, sites, wdistrib, weights.
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
45 # -perm <PERM>, --perm <PERM>
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
46 # Number of permuted matrices to return.
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
47 # -rc <RC>, --rc <RC> Convert the matrix to its reverse complement if value
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
48 # = 1.
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
49 # -decimals <DECIMALS>, --decimals <DECIMALS>
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
50 # Number of decimals to print for real matrices
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
51 # (frequencies, weights, information) or to compute
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
52 # score distributions.
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
53 # -server <SERVEUR>, --server <SERVEUR>
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
54 # -outGalaxy <OUT_GALAXY>, --outGalaxy <OUT_GALAXY>
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
55 #
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
56 ###########################################################"""
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
57 __author__ = 'Jocelyn Brayet'
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
58 convertMatrixVersion = '0.1 - 06/03/2015'
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
59
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
60
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
61 ###########################################################'
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
62 ## Import
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
63
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
64 import argparse
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
65 import os
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
66 import urllib
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
67 from suds.client import Client
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
68 import platform
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
69
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
70 ###########################################################'
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
71
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
72 ################################ functions ############################################################
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
73 ## Define a function to make a service perform the desired request using provided arguments
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
74 def call_run_service(service, args):
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
75 """
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
76 Run job in RSAT server.
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
77 service -> RSAT web service
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
78 args -> web service request
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
79 """
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
80
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
81 result = rsat_service.convert_matrix(args)
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
82 return result
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
83
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
84 def testNone(argument):
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
85 """
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
86 Test if argument is None or not.
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
87 argument -> argument give by user
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
88 """
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
89
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
90 if not argument is None:
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
91 variable = argument[0]
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
92 else:
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
93 variable = ""
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
94 return variable
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
95
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
96 ###########################################################'
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
97
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
98 ###########################################################'
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
99 # server dictionary
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
100 serverDict = {
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
101
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
102 #http://protists.rsat.eu/
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
103 "fr_ens":"http://rsat01.biologie.ens.fr/rsa-tools/web_services/RSATWS.wsdl",
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
104 "fr_mrs":"http://rsat-tagc.univ-mrs.fr/rsat/web_services/RSATWS.wsdl",
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
105 "fr_ro":"http://rsat.sb-roscoff.fr/web_services/RSATWS.wsdl",
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
106 "fr_mrs_2":"http://pedagogix-tagc.univ-mrs.fr/rsat/web_services/RSATWS.wsdl",
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
107 "es":"http://floresta.eead.csic.es/rsat/web_services/RSATWS.wsdl",
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
108 "mx":"http://embnet.ccg.unam.mx/rsa-tools/web_services/RSATWS.wsdl"
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
109
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
110 }
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
111
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
112 ###########################################################'
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
113
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
114 if __name__ == '__main__':
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
115
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
116 parser = argparse.ArgumentParser(description='Client to download convert-matrix results from RSAT server.', epilog='Version '+convertMatrixVersion)
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
117
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
118
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
119 ########### convert matrix arguments ####################
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
120
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
121 parser.add_argument('-matrix', '--matrix', metavar='<MATRIX>', type=argparse.FileType('r'), nargs=1, help='Matrix (or assembly or features) you want to convert.', required=True)
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
122 parser.add_argument('-input_form', '--input_form', metavar='<INPUT_FORM>', type=str, nargs=1, help='Input matrix format. Supported: alignace, assembly, cb, clustal, consensus, feature, gibbs, infogibbs, meme, motifsampler, tab, transfac.', required=True)
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
123 parser.add_argument('-output_form', '--output_form', metavar='<OUTPUT_FORM>', type=str, nargs=1, help='Output matrix format. Supported: consensus, patser, tab, transfac.', required=True)
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
124 parser.add_argument('-return_type', '--return_type', metavar='<RETURN_TYPE>', type=str, nargs=1, help='Result type (matrix content). Supported: consensus, counts, frequencies, info, logo, margins, parameters, profile, sites, wdistrib, weights.', required=False)
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
125 parser.add_argument('-perm', '--perm', metavar='<PERM>', type=int, nargs=1, help='Number of permuted matrices to return.', required=False)
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
126 parser.add_argument('-rc', '--rc', metavar='<RC>', type=int, nargs=1, help='Convert the matrix to its reverse complement if value = 1.', required=False)
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
127 parser.add_argument('-decimals', '--decimals', metavar='<DECIMALS>', type=int, nargs=1, help='Number of decimals to print for real matrices (frequencies, weights, information) or to compute score distributions.', required=False)
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
128
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
129
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
130
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
131 ########### galaxy arguments ##############################
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
132 parser.add_argument('-server', '--server', metavar='<SERVEUR>', type=str, nargs=1, required=True)
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
133 parser.add_argument('-outGalaxy', '--outGalaxy', metavar='<OUT_GALAXY>', type=str, nargs=1, required=True)
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
134 ###########################################################
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
135
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
136 args = parser.parse_args()
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
137
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
138
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
139 matrix_file = args.matrix[0].read()
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
140 serverValue = testNone(args.server)
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
141 outGalaxyValue = testNone(args.outGalaxy)
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
142 inputFormValue = testNone(args.input_form)
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
143 outputFormValue = testNone(args.output_form)
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
144 returnTypeValue = testNone(args.return_type)
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
145 permValue = testNone(args.perm)
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
146 rcValue = testNone(args.rc)
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
147 decimalsValue = testNone(args.decimals)
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
148
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
149 ###########################################################'
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
150 ## Create the SOAP client to request the RSAT service
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
151
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
152
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
153 # Load Client class from suds
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
154 # Define URL for RSAT services
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
155 url = serverDict[serverValue]
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
156 # Create the client
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
157 client = Client(url)
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
158
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
159 # Need service interface to perform requests
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
160 rsat_service = client.service
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
161
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
162
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
163 #print client
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
164
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
165
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
166 # Define client header
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
167 userAgent = 'RSAT-Client/v%s (%s; Python %s; %s)' % (
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
168 convertMatrixVersion,
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
169 os.path.basename( __file__ ),
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
170 platform.python_version(),
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
171 platform.system()
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
172 )
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
173
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
174 httpHeaders = {'User-agent': userAgent}
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
175 client.set_options(headers=httpHeaders)
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
176 client.set_options(timeout=300)
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
177
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
178
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
179 convertMatrixRequest = {
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
180
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
181 'matrix' : matrix_file,
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
182 'from' : inputFormValue,
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
183 'to' : outputFormValue,
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
184 'output' : 'both',
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
185 'return' : returnTypeValue,
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
186 'perm' : permValue,
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
187 'rc' : rcValue,
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
188 'decimals' : decimalsValue
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
189
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
190
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
191 }
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
192
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
193
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
194 result = call_run_service(rsat_service, convertMatrixRequest)
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
195
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
196 print url
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
197
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
198 print "###############################################"
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
199 print "Command performed on server"
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
200 print result.command
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
201 print "###############################################"
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
202 print "Result"
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
203 print result.server
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
204
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
205
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
206 nameFile = "convert-matrix_results.txt"
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
207
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
208 urlResult=result.server.replace("$RSAT/public_html/",url.replace("web_services/RSATWS.wsdl",""))
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
209
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
210 urllib.urlretrieve(urlResult, nameFile)
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
211
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
212 os.popen("cp "+nameFile+" "+outGalaxyValue)
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
213
4f7cb568384f Uploaded
jbrayet
parents:
diff changeset
214