annotate compareMatrices_wrapper.py @ 29:b34046b02556 draft

Uploaded
author jbrayet
date Tue, 22 Sep 2015 08:02:35 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
29
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
1 #! /usr/bin/python
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
2 # -*- coding: utf8 -*-
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
3 """#Compare Matrices - developed by Jocelyn Brayet <jocelyn.brayet@curie.fr>
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
4 #Copyright (C) 2015 Institut Curie
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
5 #
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
6 #This program is free software: you can redistribute it and/or modify
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
7 #it under the terms of the GNU General Public License as published by
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
8 #the Free Software Foundation, either version 3 of the License, or
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
9 #(at your option) any later version.
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
10 #
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
11 #This program is distributed in the hope that it will be useful,
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
12 #but WITHOUT ANY WARRANTY; without even the implied warranty of
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
13 #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
14 #GNU General Public License for more details.
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
15 #
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
16 #You should have received a copy of the GNU General Public License
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
17 #along with this program. If not, see <http://www.gnu.org/licenses/>.
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
18 #
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
19 ###########################################################'
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
20 #
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
21 #Client to download compare matrices results from RSAT server.
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
22 #
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
23 ###########################################################'"""
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
24
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
25 __author__ = 'Jocelyn Brayet'
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
26 compareMatricesVersion = '0.1 - 14/04/2015'
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
27
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
28
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
29 ###########################################################'
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
30 ## Import
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
31
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
32 import argparse
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
33 import os
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
34 import urllib
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
35 from suds.client import Client
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
36 import platform
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
37
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
38 ###########################################################'
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
39
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
40 ################################ functions ############################################################
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
41 ## Define a function to make a service perform the desired request using provided arguments
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
42 def call_run_service(service, args):
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
43 """
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
44 Run job in RSAT server.
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
45 service -> RSAT web service
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
46 args -> web service request
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
47 """
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
48
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
49 result = rsat_service.compare_matrices(args)
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
50 return result
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
51
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
52 def testNone(argument):
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
53 """
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
54 Test if argument is None or not.
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
55 argument -> argument give by user
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
56 """
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
57
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
58 if not argument is None:
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
59 variable = argument[0]
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
60 else:
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
61 variable = ""
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
62 return variable
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
63
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
64 ###########################################################'
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
65 # server dictionary
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
66 serverDict = {
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
67
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
68 "fr_ens":"http://rsat01.biologie.ens.fr/rsa-tools/web_services/RSATWS.wsdl",
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
69 "fr_mrs":"http://rsat-tagc.univ-mrs.fr/rsat/web_services/RSATWS.wsdl",
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
70 "fr_ro":"http://rsat.sb-roscoff.fr/web_services/RSATWS.wsdl",
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
71 "fr_mrs_2":"http://pedagogix-tagc.univ-mrs.fr/rsat/web_services/RSATWS.wsdl",
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
72 "es":"http://floresta.eead.csic.es/rsat/web_services/RSATWS.wsdl",
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
73 "mx":"http://embnet.ccg.unam.mx/rsa-tools/web_services/RSATWS.wsdl"
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
74
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
75 }
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
76
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
77 ###########################################################'
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
78
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
79
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
80 if __name__ == '__main__':
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
81
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
82 parser = argparse.ArgumentParser(description='Client to download compare matrices results from RSAT server.', epilog='Version '+compareMatricesVersion)
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
83
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
84
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
85 ########### compare matrices arguments ####################
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
86
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
87 parser.add_argument('-matrix_1', '--matrix_1', metavar='<MATRIX_1>', type=argparse.FileType('r'), nargs=1, help='The first input containing one or several matrices.', required=True)
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
88 parser.add_argument('-matrix_2', '--matrix_2', metavar='<MATRIX_2>', type=argparse.FileType('r'), nargs=1, help='The second input containing one or several matrices.', required=True)
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
89 parser.add_argument('-format1', '--format1', metavar='<FORMAT_1>', type=str, nargs=1, help='Martix format for the first input. Supported fields: tab, cb, consensus, gibbs, meme, assembly.', required=True)
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
90 parser.add_argument('-format2', '--format2', metavar='<FORMAT_2>', type=str, nargs=1, help='Martix format for the second input. Supported fields: tab, cb, consensus, gibbs, meme, assembly.', required=True)
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
91 parser.add_argument('-returnResults', '--returnResults', metavar='<RETURN_RESULTS>', type=str, nargs=1, help='List of fields to return (only valid for the formats "profiles" and "matches").', required=False)
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
92 #parser.add_argument('-rc', '--rc', metavar='<RC>', type=int, nargs=1, help='Convert the matrix to its reverse complement if value = 1.', required=False)
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
93 #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)
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
94
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
95 ########### galaxy arguments ##############################
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
96 parser.add_argument('-server', '--server', metavar='<SERVEUR>', type=str, nargs=1, required=True)
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
97 parser.add_argument('-outGalaxy', '--outGalaxy', metavar='<OUT_GALAXY>', type=str, nargs=1, required=True)
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
98 ###########################################################
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
99
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
100 args = parser.parse_args()
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
101
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
102 matrix_1 = args.matrix_1[0].read()
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
103 matrix_2 = args.matrix_2[0].read()
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
104 serverValue = testNone(args.server)
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
105 format1 = testNone(args.format1)
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
106 format2 = testNone(args.format2)
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
107 returnValue = testNone(args.returnResults)
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
108 outGalaxyValue = testNone(args.outGalaxy)
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
109 #returnTypeValue = testNone(args.return_type)
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
110 #permValue = testNone(args.perm)
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
111 #rcValue = testNone(args.rc)
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
112 #decimalsValue = testNone(args.decimals)
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
113
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
114 ###########################################################'
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
115 ## Create the SOAP client to request the RSAT service
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
116
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
117
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
118 # Load Client class from suds
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
119 # Define URL for RSAT services
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
120 url = serverDict[serverValue]
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
121 # Create the client
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
122 client = Client(url)
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
123
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
124 # Need service interface to perform requests
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
125 rsat_service = client.service
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
126
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
127 #print client
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
128
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
129 # Define client header
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
130 userAgent = 'RSAT-Client/v%s (%s; Python %s; %s)' % (
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
131 compareMatricesVersion,
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
132 os.path.basename( __file__ ),
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
133 platform.python_version(),
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
134 platform.system()
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
135 )
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
136
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
137 httpHeaders = {'User-agent': userAgent}
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
138 client.set_options(headers=httpHeaders)
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
139 client.set_options(timeout=300)
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
140
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
141
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
142 compareMatricesRequest = {
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
143
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
144 'output' : 'both',
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
145 'matrix_1' : matrix_1,
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
146 'matrix_2' : matrix_2,
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
147 'format1' : format1,
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
148 'format2' : format2,
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
149 'return' : returnValue
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
150
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
151 }
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
152
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
153
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
154 result = call_run_service(rsat_service, compareMatricesRequest)
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
155
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
156
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
157 print url
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
158
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
159 print "###############################################"
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
160 print "Command performed on server"
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
161 print result.command
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
162 print "###############################################"
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
163 print "Result"
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
164 print result.server
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
165
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
166 nameFile = "test_compare_matrices"
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
167
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
168 urlResult=result.server.replace("$RSAT/public_html/",url.replace("web_services/RSATWS.wsdl",""))+"/.tab"
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
169
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
170 urllib.urlretrieve(urlResult, nameFile)
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
171
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
172 os.popen("cp "+nameFile+" "+outGalaxyValue)
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
173
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
174
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
175
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
176
b34046b02556 Uploaded
jbrayet
parents:
diff changeset
177