annotate dyadAnalysis_wrapper.py @ 52:a1d369ead6d7 draft default tip

Uploaded
author jbrayet
date Tue, 29 Sep 2015 08:25:39 -0400
parents 2f3462ac56aa
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
26
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
1 #! /usr/bin/python
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
2 # -*- coding: utf8 -*-
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
3
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
4 """#dyad analysis soap - developed by Jocelyn Brayet <jocelyn.brayet@curie.fr>
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
5 #Copyright (C) 2015 Institut Curie
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
6 #
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
7 #This program is free software: you can redistribute it and/or modify
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
8 #it under the terms of the GNU General Public License as published by
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
9 #the Free Software Foundation, either version 3 of the License, or
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
10 #(at your option) any later version.
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
11 #
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
12 #This program is distributed in the hope that it will be useful,
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
13 #but WITHOUT ANY WARRANTY; without even the implied warranty of
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
14 #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
15 #GNU General Public License for more details.
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
16 #
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
17 #You should have received a copy of the GNU General Public License
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
18 #along with this program. If not, see <http://www.gnu.org/licenses/>.
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
19 #
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
20 ###########################################################'
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
21 #
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
22 #Analysis of spaced dyads in a set of DNA sequences.
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
23 #
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
24 ###########################################################'
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
25 #
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
26 #usage: dyad-analysis_soap.py [-h] -sequence_file <SEQUENCE_FILE> -length
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
27 # <LENGTH> -organism <ORGANISM> -spacing <SPACING>
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
28 # [-stats <STATS>] [-type <TYPE>] -server <SERVEUR>
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
29 #
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
30 #optional arguments:
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
31 # -h, --help show this help message and exit
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
32 # -sequence_file <SEQUENCE_FILE>, --sequence_file <SEQUENCE_FILE>
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
33 # Input sequence (FASTA file).
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
34 # -length <LENGTH>, --length <LENGTH>
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
35 # Dyad length.
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
36 # -organism <ORGANISM>, --organism <ORGANISM>
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
37 # Organism.
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
38 # -spacing <SPACING>, --spacing <SPACING>
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
39 # Spacing between elements of the dyads.
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
40 # -stats <STATS>, --stats <STATS>
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
41 # List of statistics to return. Supported:occ, mseq,
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
42 # freq, proba, ratio, zscore, like, pos, rank.
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
43 # -type <TYPE>, --type <TYPE>
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
44 # Four types are accepted: dr (direct repeats: the
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
45 # second element is the same as the first one); ir
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
46 # (inverted repeats: the second element is the revers
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
47 # complement of the first one); rep (repeats: direct and
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
48 # inverted repeats are evaluated); any
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
49 # -server <SERVEUR>, --server <SERVEUR>
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
50 #
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
51 #Version 0.1 - 16/04/2015
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
52 #
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
53 ###########################################################'"""
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
54 __author__ = 'Jocelyn Brayet'
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
55 dyadAnalysisVersion = '0.1 - 16/04/2015'
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
56
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
57 ###########################################################'
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
58 ## Import
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
59
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
60 import argparse
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
61 import os
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
62 import urllib
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
63 from suds.client import Client
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
64 import platform
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
65
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
66 ###########################################################'
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
67
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
68 ################################ functions ############################################################
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
69 ## Define a function to make a service perform the desired request using provided arguments
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
70 def call_run_service(rsat_service, args):
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
71 """
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
72 Run job in RSAT server.
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
73 service -> RSAT web service
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
74 args -> web service request
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
75 """
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
76
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
77 result = rsat_service.dyad_analysis(args)
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
78 return result
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
79
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
80 def testNone(argument):
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
81 """
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
82 Test if argument is None or not.
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
83 argument -> argument give by user
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
84 """
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
85
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
86 if not argument is None:
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
87 variable = argument[0]
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
88 else:
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
89 variable = ""
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
90 return variable
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
91
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
92
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
93 ###########################################################'
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
94 # server dictionary
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
95 serverDict = {
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
96
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
97 "fr_ens":"http://rsat01.biologie.ens.fr/rsa-tools/web_services/RSATWS.wsdl",
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
98 "fr_mrs":"http://rsat-tagc.univ-mrs.fr/rsat/web_services/RSATWS.wsdl",
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
99 "fr_ro":"http://rsat.sb-roscoff.fr/web_services/RSATWS.wsdl",
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
100 "fr_mrs_2":"http://pedagogix-tagc.univ-mrs.fr/rsat/web_services/RSATWS.wsdl",
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
101 "es":"http://floresta.eead.csic.es/rsat/web_services/RSATWS.wsdl",
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
102 "mx":"http://embnet.ccg.unam.mx/rsa-tools/web_services/RSATWS.wsdl"
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
103
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
104 }
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
105
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
106 ###########################################################'
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
107
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
108 if __name__ == '__main__':
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
109
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
110 parser = argparse.ArgumentParser(description='Analysis of spaced dyads in a set of DNA sequences.', epilog='Version '+dyadAnalysisVersion)
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
111
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
112 ########### compare matrices arguments ####################
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
113
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
114 parser.add_argument('-sequence_file', '--sequence_file', metavar='<SEQUENCE_FILE>', type=argparse.FileType('r'), nargs=1, help='Input sequence (FASTA file).', required=True)
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
115 parser.add_argument('-length', '--length', metavar='<LENGTH>', type=int, nargs=1, help='Dyad length.', required=True)
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
116 parser.add_argument('-organism', '--organism', metavar='<ORGANISM>', type=str, nargs=1, help='Organism.', required=True)
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
117 parser.add_argument('-spacing', '--spacing', metavar='<SPACING>', type=int, nargs=1, help='Spacing between elements of the dyads.', required=True)
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
118 parser.add_argument('-stats', '--stats', metavar='<STATS>', type=str, nargs=1, help='List of statistics to return. Supported:occ, mseq, freq, proba, ratio, zscore, like, pos, rank.', required=False)
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
119 parser.add_argument('-type', '--type', metavar='<TYPE>', type=str, nargs=1, help='Four types are accepted: dr (direct repeats: the second element is the same as the first one); ir (inverted repeats: the second element is the revers complement of the first one); rep (repeats: direct and inverted repeats are evaluated); any', required=False)
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
120
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
121
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
122
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
123 ########### galaxy arguments ##############################
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
124 parser.add_argument('-server', '--server', metavar='<SERVEUR>', type=str, nargs=1, required=True)
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
125 parser.add_argument('-outGalaxy', '--outGalaxy', metavar='<OUT_GALAXY>', type=str, nargs=1, required=True)
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
126 ###########################################################
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
127
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
128 args = parser.parse_args()
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
129
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
130 sequence_file = args.sequence_file[0].read()
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
131 serverValue = testNone(args.server)
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
132 length = testNone(args.length)
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
133 organism = testNone(args.organism)
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
134 spacing = testNone(args.spacing)
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
135 stats = testNone(args.stats)
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
136 typeValue = testNone(args.type)
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
137 outGalaxyValue = testNone(args.outGalaxy)
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
138
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
139
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
140 ###########################################################'
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
141 ## Create the SOAP client to request the RSAT service
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
142
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
143
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
144 # Load Client class from suds
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
145 # Define URL for RSAT services
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
146 url = serverDict[serverValue]
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
147 # Create the client
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
148 client = Client(url)
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
149
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
150 # Need service interface to perform requests
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
151 rsat_service = client.service
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
152
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
153 #print client
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
154
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
155 # Define client header
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
156 userAgent = 'RSAT-Client/v%s (%s; Python %s; %s)' % (
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
157 dyadAnalysisVersion,
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
158 os.path.basename( __file__ ),
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
159 platform.python_version(),
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
160 platform.system()
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
161 )
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
162
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
163 httpHeaders = {'User-agent': userAgent}
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
164 client.set_options(headers=httpHeaders)
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
165 client.set_options(timeout=300)
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
166
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
167
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
168 dyadAnalysisRequest = {
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
169
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
170 'output' : 'both',
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
171 'format' : 'fasta',
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
172 'sequence' : sequence_file,
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
173 'length' : length,
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
174 'organism' : organism,
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
175 'spacing' : spacing,
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
176 'stats' : stats,
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
177 'type' : typeValue
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
178
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
179 }
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
180
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
181
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
182 result = call_run_service(rsat_service, dyadAnalysisRequest)
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
183
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
184
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
185 print url
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
186
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
187 print "###############################################"
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
188 print "Command performed on server"
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
189 print result.command
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
190 print "###############################################"
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
191 print "Result"
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
192 print result.server
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
193
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
194 nameFile = "dyad_analysis_results.txt"
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
195
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
196 urlResult=result.server.replace("$RSAT/public_html/",url.replace("web_services/RSATWS.wsdl",""))
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
197
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
198 print urlResult
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
199
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
200 urllib.urlretrieve(urlResult, nameFile)
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
201
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
202
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
203 os.popen("cp "+nameFile+" "+outGalaxyValue)
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
204
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
205
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
206
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
207
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
208
2f3462ac56aa Uploaded
jbrayet
parents:
diff changeset
209