annotate tools/mutationassesor_web/mutation_assesor.py @ 2:eae0427d25d6

push
author Saket Choudhary <saketkc@gmail.com>
date Wed, 20 Nov 2013 01:55:00 +0530
parents 32e3e166ced7
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
1 import sys
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
2 sys.path.insert(0, '/home/saket/requests-new-urllib3-api/requests/packages/')
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
3 sys.path.insert(0, '/home/saket/requests-new-urllib3-api')
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
4
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
5
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
6 import requests
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
7 from functools import wraps
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
8 import tempfile, shutil,time
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
9 import os,csv
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
10 #__url__="http://mutationassessor.org/?cm=var&var=%s&frm=txt&fts=all"
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
11 __url__="http://mutationassessor.org"
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
12 def stop_err( msg ):
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
13 sys.stderr.write( '%s\n' % msg )
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
14 sys.exit()
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
15
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
16 def retry(ExceptionToCheck, tries=4, delay=3, backoff=2, logger=None):
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
17
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
18 """Retry calling the decorated function using an exponential backoff.
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
19
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
20 http://www.saltycrane.com/blog/2009/11/trying-out-retry-decorator-python/
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
21 original from: http://wiki.python.org/moin/PythonDecoratorLibrary#Retry
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
22
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
23 :param ExceptionToCheck: the exception to check. may be a tuple of
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
24 exceptions to check
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
25 :type ExceptionToCheck: Exception or tuple
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
26 :param tries: number of times to try (not retry) before giving up
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
27 :type tries: int
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
28 :param delay: initial delay between retries in seconds
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
29 :type delay: int
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
30 :param backoff: backoff multiplier e.g. value of 2 will double the delay
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
31 each retry
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
32 :type backoff: int
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
33 :param logger: logger to use. If None, print
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
34 :type logger: logging.Logger instance
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
35 """
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
36 def deco_retry(f):
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
37
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
38 @wraps(f)
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
39
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
40 def f_retry(*args, **kwargs):
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
41 mtries, mdelay = tries, delay
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
42 while mtries > 1:
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
43 try:
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
44 return f(*args, **kwargs)
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
45 except ExceptionToCheck, e:
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
46 #msg = "%s, Retrying in %d seconds..." % (str(e), mdelay)
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
47 msg = "Retrying in %d seconds..." % (mdelay)
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
48 if logger:
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
49 logger.warning(msg)
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
50 else:
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
51 #print msg
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
52 pass
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
53 time.sleep(mdelay)
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
54 mtries -= 1
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
55 mdelay *= backoff
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
56 return f(*args, **kwargs)
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
57
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
58 return f_retry # true decorator
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
59
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
60 return deco_retry
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
61 def main(params):
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
62 with open(params[0],"r") as f:
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
63 for i,sequence in enumerate(f):
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
64 #print sequence
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
65 sequence=sequence.replace("\t",",").replace(" ",",")
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
66 call=requests.get((__url__)%(sequence))
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
67 with open(params[1],"a") as w:
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
68 text = call.content.replace("\\t","\t")
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
69 if i>1:
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
70 text_split=text.split("\n")
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
71 text="\t".join(text_split[1])
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
72 w.write(text)
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
73 time.sleep(1)
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
74 return True
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
75
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
76 def main_web(params):
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
77 tmp_dir = tempfile.mkdtemp()
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
78 path = os.path.join(tmp_dir,"csv_file")
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
79 in_txt = csv.reader(open(params[0],"rb"), delimiter="\t")
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
80 with open(path,"wb") as fp:
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
81 out_csv = csv.writer(fp,delimiter=",")
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
82 out_csv.writerows(in_txt)
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
83 fh = open(path,"rb")
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
84 readfile=fh.read()
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
85 fh.close()
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
86 payload = {"vars":readfile,"tableQ":"","protres":""}
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
87 request = requests.post(__url__,data=payload)
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
88 response = request.text
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
89 temp_file = os.path.join(tmp_dir,"int_file")
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
90 with open(temp_file,"wb") as w:
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
91 w.write(response)
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
92
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
93 in_txt = csv.reader(open(temp_file,"rb"), delimiter=",")
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
94 with open(params[1],"wb") as fp:
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
95 out_csv = csv.writer(fp,delimiter="\t")
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
96 out_csv.writerows(in_txt)
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
97 shutil.rmtree(tmp_dir)
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
98 return True
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
99 if __name__=="__main__":
32e3e166ced7 Initial
Saket Choudhary <saketkc@gmail.com>
parents:
diff changeset
100 main_web(sys.argv[1:])