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