annotate oligoAnalysis_wrapper.py @ 52:a1d369ead6d7 draft default tip

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