annotate chasm_webservice/chasm_webservice.py @ 0:99d838cef41a draft default tip

Uploaded
author saket-choudhary
date Tue, 07 Oct 2014 19:23:27 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
1 #!/usr/bin/python
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
2 """
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
3 The MIT License (MIT)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
4
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
5 Copyright (c) 2014 Saket Choudhary, <saketkc@gmail.com>
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
6
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
7 Permission is hereby granted, free of charge, to any person obtaining a copy
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
8 of this software and associated documentation files (the 'Software'), to deal
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
9 in the Software without restriction, including without limitation the rights
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
10 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
11 copies of the Software, and to permit persons to whom the Software is
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
12 furnished to do so, subject to the following conditions:
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
13
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
14 The above copyright notice and this permission notice shall be included in
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
15 all copies or substantial portions of the Software.
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
16
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
17 THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
18 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
19 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
20 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
21 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
22 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
23 THE SOFTWARE.
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
24
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
25 """
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
26 import sys
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
27 import requests
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
28 import argparse
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
29 import time
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
30 from functools import wraps
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
31 import json
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
32 import zipfile
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
33 import tempfile
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
34 import ntpath
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
35 import shutil
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
36 import xlrd
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
37 import csv
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
38 import os
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
39 sheet_map = {0: 'Variant_Analysis.csv',
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
40 1: 'Amino_Acid_Level_Analysis.csv', 2: 'Gene_Level_Analysis.csv'}
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
41
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
42
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
43 def retry(ExceptionToCheck, tries=40000, delay=3, backoff=2, logger=None):
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
44 '''Retry calling the decorated function using an exponential backoff.
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
45
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
46 http://www.saltycrane.com/blog/2009/11/trying-out-retry-decorator-python/
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
47 original from: http://wiki.python.org/moin/PythonDecoratorLibrary#Retry
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
48
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
49 :param ExceptionToCheck: the exception to check. may be a tuple of
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
50 exceptions to check
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
51 :type ExceptionToCheck: Exception or tuple
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
52 :param tries: number of times to try (not retry) before giving up
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
53 :type tries: int
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
54 :param delay: initial delay between retries in seconds
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
55 :type delay: int
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
56 :param backoff: backoff multiplier e.g. value of 2 will double the delay
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
57 each retry
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
58 :type backoff: int
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
59 :param logger: logger to use. If None, print
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
60 :type logger: logging.Logger instance
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
61 '''
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
62 def deco_retry(f):
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
63
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
64 @wraps(f)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
65 def f_retry(*args, **kwargs):
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
66 mtries, mdelay = tries, delay
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
67 while mtries > 1:
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
68 try:
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
69 return f(*args, **kwargs)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
70 except ExceptionToCheck, e:
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
71 #msg = '%s, Retrying in %d seconds...' % (str(e), mdelay)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
72 msg = 'Retrying in %d seconds...' % (mdelay)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
73 if logger:
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
74 logger.warning(msg)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
75 else:
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
76 print msg
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
77 time.sleep(mdelay)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
78 mtries -= 1
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
79 mdelay *= backoff
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
80 return f(*args, **kwargs)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
81
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
82 return f_retry # true decorator
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
83
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
84 return deco_retry
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
85 CANCERTYPES = ['Bladder', 'Blood-Lymphocyte', 'Blood-Myeloid',
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
86 'Brain-Cerebellum', 'Brain-Glioblastoma_Multiforme',
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
87 'Brain-Lower_Grade_Glioma', 'Breast', 'Cervix',
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
88 'Colon', 'Head_and_Neck', 'Kidney-Chromophobe',
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
89 'Kidney-Clear_Cell', 'Kidney-Papiallary_Cell',
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
90 'Liver-Nonviral', 'Liver-Viral', 'Lung-Adenocarcinoma',
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
91 'Lung-Squamous_Cell', 'Melanoma', 'Other', 'Ovary',
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
92 'Pancreas', 'Prostate-Adenocarcinoma', 'Rectum',
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
93 'Skin', 'Stomach', 'Thyroid', 'Uterus']
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
94
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
95 __URL__ = 'http://www.cravat.us/rest/service/submit'
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
96
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
97
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
98 def stop_err(msg):
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
99 sys.stderr.write('%s\n' % msg)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
100 sys.exit()
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
101
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
102
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
103 class CHASMWeb:
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
104
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
105 def __init__(self,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
106 mutationbox=None, filepath=None,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
107 is_hg_18=None, analysis_type=None,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
108 analysis_program=None, chosendb=None,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
109 cancer_type=None, email=None,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
110 annotate_genes=None, text_reports=None,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
111 mupit_out=None):
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
112 self.mutationbox = mutationbox
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
113 self.filepath = filepath
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
114 self.is_hg_18 = is_hg_18
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
115 self.analysis_type = analysis_type
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
116 self.analysis_program = analysis_program
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
117 self.chosendb = chosendb
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
118 self.email = email
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
119 self.annotate_genes = annotate_genes
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
120 self.cancer_type = cancer_type
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
121 self.email = email
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
122 self.annotate_genes = annotate_genes
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
123 self.text_reports = text_reports
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
124 self.mupit_input = mupit_out
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
125
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
126 def make_request(self):
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
127 data = {
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
128 'mutations ': self.mutationbox,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
129 'hg18': self.is_hg_18,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
130 'analysistype': self.analysis_type,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
131 'analysisitem': self.analysis_program,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
132 'chasmclassifier': self.cancer_type,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
133 'geneannotation': self.annotate_genes,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
134 'email': self.email,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
135 'tsvreport': 'on', # self.text_reports,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
136 'mupitinput': self.mupit_input,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
137 }
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
138 stripped_data = {}
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
139
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
140 for key, value in data.iteritems():
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
141 if value is True:
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
142 value = 'on'
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
143 if value is not None and value is not False:
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
144 stripped_data[key] = value
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
145
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
146 if not self.mutationbox:
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
147 file_payload = {'inputfile': open(self.filepath)}
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
148 request = requests.post(
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
149 __URL__, data=stripped_data, files=file_payload)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
150 else:
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
151 request = requests.post(
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
152 __URL__, data=stripped_data, files=dict(foo='bar'))
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
153 print request.text
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
154 job_id = json.loads(request.text)['jobid']
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
155 return job_id
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
156
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
157 @retry(requests.exceptions.HTTPError)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
158 def zip_exists(self, job_id):
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
159 print job_id
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
160 url = 'http://www.cravat.us/results/%s/%s.zip' % (job_id, job_id)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
161 zip_download_request = requests.request('GET', url)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
162 if zip_download_request.status_code == 404:
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
163 raise requests.HTTPError()
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
164 else:
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
165 return url
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
166
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
167 def download_zip(self, url, job_id):
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
168 self.tmp_dir = tempfile.mkdtemp()
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
169 r = requests.get(url, stream=True)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
170 if r.status_code == 200:
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
171 self.path = os.path.join(self.tmp_dir, job_id + '.zip')
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
172 with open(self.path, 'wb') as f:
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
173 for chunk in r.iter_content(128):
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
174 f.write(chunk)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
175 else:
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
176 self.path = None
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
177 return self.path
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
178
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
179 def move_files(self, file_map):
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
180 fh = open(self.path, 'rb')
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
181 zip_files = zipfile.ZipFile(fh)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
182 for name in zip_files.namelist():
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
183 filename = ntpath.basename(name)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
184 extension = ntpath.splitext(filename)[-1]
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
185 source_file = zip_files.open(name)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
186 if extension == '.txt':
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
187 target_file = open(file_map['error.txt'], 'wb')
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
188 elif filename != 'SnvGet Feature Description.xls' and extension != '.xls':
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
189 target_file = open(file_map[filename], 'wbb')
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
190 else:
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
191 target_file = None
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
192 if target_file:
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
193 with source_file, target_file:
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
194 shutil.copyfileobj(source_file, target_file)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
195 if filename == 'SnvGet Feature Description.xls':
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
196 with xlrd.open_workbook(source_file) as wb:
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
197 sheet_names = wb.sheet_names()
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
198 for name in sheet_names:
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
199 sh = wb.sheet_by_name(name)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
200 name_shortened = name.replace(' ').strip() + '.csv'
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
201 with open(name_shortened, 'wb') as f:
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
202 c = csv.writer(f)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
203 for r in range(sh.nrows):
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
204 c.writerow(sh.row_values(r))
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
205 shutil.rmtree(self.tmp_dir)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
206 fh.close()
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
207
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
208
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
209 def main(params):
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
210
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
211 parser = argparse.ArgumentParser()
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
212 parser.add_argument('-i', '--input',
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
213 type=str, dest='mutationbox',
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
214 help='Input variants')
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
215 parser.add_argument('--path', type=str,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
216 dest='input_file_location',
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
217 help='Input file location')
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
218 parser.add_argument('--hg18', dest='hg18',
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
219 action='store_true')
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
220 parser.add_argument('--analysis_type', dest='analysis_type',
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
221 type=str,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
222 choices=['driver', 'functional',
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
223 'geneannotationonly'],
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
224 default='driver')
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
225 parser.add_argument('--chosendb', dest='chosendb',
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
226 type=str, nargs='*',
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
227 choices=['CHASM', 'SnvGet'],
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
228 default='CHASM')
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
229 parser.add_argument('--cancertype', dest='cancer_type',
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
230 type=str, choices=CANCERTYPES,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
231 required=True)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
232 parser.add_argument('--email', dest='email',
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
233 required=True, type=str)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
234 parser.add_argument('--annotate', dest='annotate',
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
235 action='store_true', default=None)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
236 parser.add_argument('--tsv_report', dest='tsv_report',
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
237 action='store_true', default=None)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
238 parser.add_argument('--mupit_out', dest='mupit_out',
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
239 action='store_true', default=None)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
240 parser.add_argument('--gene_analysis_out', dest='gene_analysis_out',
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
241 type=str, required=True)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
242 parser.add_argument('--variant_analysis_out',
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
243 dest='variant_analysis_out',
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
244 type=str, required=True)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
245 parser.add_argument('--amino_acid_level_analysis_out',
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
246 dest='amino_acid_level_analysis_out',
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
247 type=str, required=True,)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
248 parser.add_argument('--codon_level_analysis_out',
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
249 dest='codon_level_analysis_out',
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
250 type=str, required=True,)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
251 parser.add_argument('--error_file', dest='error_file_out',
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
252 type=str, required=True)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
253 parser.add_argument('--snv_box_out', dest='snv_box_out',
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
254 type=str, required=False)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
255 parser.add_argument('--snv_features', dest='snv_features_out',
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
256 type=str, required=False)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
257 args = parser.parse_args(params)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
258 chasm_web = CHASMWeb(mutationbox=args.mutationbox,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
259 filepath=args.input_file_location,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
260 is_hg_18=args.hg18,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
261 analysis_type=args.analysis_type,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
262 chosendb=args.chosendb,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
263 cancer_type=args.cancer_type,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
264 email=args.email,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
265 annotate_genes=args.annotate,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
266 text_reports=args.tsv_report,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
267 mupit_out=args.mupit_out)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
268 job_id = chasm_web.make_request()
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
269 file_map = {'Amino_Acid_Level_Analysis.Result.tsv': args.amino_acid_level_analysis_out,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
270 'SNVBox.tsv': args.snv_box_out,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
271 'Variant_Analysis.Result.tsv': args.variant_analysis_out,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
272 'Gene_Level_Analysis.Result.tsv': args.gene_analysis_out,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
273 'SnvGet Feature Description.xls': args.snv_features_out,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
274 'error.txt': args.error_file_out,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
275 'Codon_Level_Analysis.Result.tsv': args.codon_level_analysis_out,
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
276 }
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
277 url = chasm_web.zip_exists(job_id)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
278 download = chasm_web.download_zip(url, job_id)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
279 if download:
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
280 chasm_web.move_files(file_map=file_map)
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
281 else:
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
282 stop_err('Unable to download from the server')
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
283
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
284 if __name__ == '__main__':
99d838cef41a Uploaded
saket-choudhary
parents:
diff changeset
285 main(sys.argv[1:])