0
|
1 __author__ = 'cbarnett'
|
|
2 __license__ = "MIT"
|
|
3 __version = "0.3"
|
|
4
|
|
5
|
|
6 def helper_get_G(lineentry):
|
|
7 if "G" in lineentry.upper():
|
|
8 splitline = lineentry.split()
|
|
9 for item in splitline:
|
|
10 if "G" in item:
|
|
11 return item
|
|
12 return None
|
|
13
|
|
14
|
|
15 def get_kcf_from_kegg(inputstream):
|
|
16 """
|
|
17 :param inputstream: input stream containing gl entries
|
|
18 :return: list of kcf output and list of db entry output or empty list
|
|
19 """
|
|
20 import urllib2
|
|
21
|
|
22 uri = 'http://rest.kegg.jp/get/'
|
|
23 if inputstream is None or inputstream == []:
|
|
24 raise IOError("empty input stream")
|
|
25 dbresponses = []
|
|
26 kcfresponses = []
|
|
27 for line in inputstream:
|
|
28 glentry = helper_get_G(line)
|
|
29 if glentry is not None:
|
|
30 try:
|
|
31 dbresponse = urllib2.urlopen(uri + glentry).read()
|
|
32 kcfresponse = urllib2.urlopen(uri + glentry + "/kcf").read()
|
|
33 except Exception as e:
|
|
34 raise urllib2.HTTPError(e.url, e.code, e.msg, e.hdrs, e.fp)
|
|
35 dbresponses.append(dbresponse)
|
|
36 kcfresponses.append(kcfresponse)
|
|
37 return kcfresponses, dbresponses
|
|
38
|
|
39
|
|
40 if __name__ == "__main__":
|
|
41 from optparse import OptionParser
|
|
42
|
|
43 usage = "usage: python %prog [options]\n"
|
|
44 parser = OptionParser(usage=usage)
|
|
45 parser.add_option("-i", action="store", type="string", dest="i", default="input",
|
|
46 help="single or double column text file containing GL entries")
|
|
47 parser.add_option("-k", action="store", type="string", dest="k", default="kcf.output",
|
|
48 help="kcf output file name")
|
|
49 parser.add_option("-d", action="store", type="string", dest="d", default="db.output",
|
|
50 help="KEGG db entry in text format output file name")
|
|
51 (options, args) = parser.parse_args()
|
|
52 try:
|
|
53 instream = file(options.i, 'r')
|
|
54 except Exception as e:
|
|
55 raise IOError(e, "the input file specified does not exist. Use -h flag for help")
|
|
56 kcf, db = get_kcf_from_kegg(instream)
|
|
57 try:
|
|
58 kcfout = file(options.k, 'w')
|
|
59 dbout = file(options.d, 'w')
|
|
60 except Exception as e:
|
|
61 raise IOError(e, "cannot open output files. -h flag for help")
|
|
62
|
|
63 kcfout.write("".join(kcf))
|
|
64 dbout.write("".join(db))
|
|
65 kcfout.close()
|
|
66 dbout.close()
|
|
67
|