annotate convert_detect_formats/rings_detect_format/glycan_sniff.py @ 0:89592faa2875 draft

Uploaded
author chrisb
date Wed, 23 Mar 2016 14:35:56 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
89592faa2875 Uploaded
chrisb
parents:
diff changeset
1 __author__ = "Chris Barnett"
89592faa2875 Uploaded
chrisb
parents:
diff changeset
2 __version__ = "0.3"
89592faa2875 Uploaded
chrisb
parents:
diff changeset
3 __license__ = "MIT"
89592faa2875 Uploaded
chrisb
parents:
diff changeset
4
89592faa2875 Uploaded
chrisb
parents:
diff changeset
5
89592faa2875 Uploaded
chrisb
parents:
diff changeset
6 def sniff_glycan(inputstream, is_a=None):
89592faa2875 Uploaded
chrisb
parents:
diff changeset
7 """
89592faa2875 Uploaded
chrisb
parents:
diff changeset
8 Passes input glycan format to RINGS and returns format.
89592faa2875 Uploaded
chrisb
parents:
diff changeset
9 If is_a is specified then return boolean
89592faa2875 Uploaded
chrisb
parents:
diff changeset
10 :rtype : text, or Boolean if is_a is specified or None if broken (maybe should be False)
89592faa2875 Uploaded
chrisb
parents:
diff changeset
11 :param inputstream: inputstream with glycan struct. (not sure for multiple... in any of LinearCode, KCF etc. (can be mixed))
89592faa2875 Uploaded
chrisb
parents:
diff changeset
12 :param is_a: If not None then test for the file type specified.
89592faa2875 Uploaded
chrisb
parents:
diff changeset
13 """
89592faa2875 Uploaded
chrisb
parents:
diff changeset
14 if inputstream is None or inputstream == [] or inputstream == "":
89592faa2875 Uploaded
chrisb
parents:
diff changeset
15 return ""
89592faa2875 Uploaded
chrisb
parents:
diff changeset
16 try:
89592faa2875 Uploaded
chrisb
parents:
diff changeset
17 from suds.client import Client
89592faa2875 Uploaded
chrisb
parents:
diff changeset
18
89592faa2875 Uploaded
chrisb
parents:
diff changeset
19 url = 'http://rings.t.soka.ac.jp/axis2/services/Utilities?wsdl'
89592faa2875 Uploaded
chrisb
parents:
diff changeset
20 client = Client(url)
89592faa2875 Uploaded
chrisb
parents:
diff changeset
21 response = client.service.DeterminingForm(inputstream.read())
89592faa2875 Uploaded
chrisb
parents:
diff changeset
22 if response is None:
89592faa2875 Uploaded
chrisb
parents:
diff changeset
23 return ""
89592faa2875 Uploaded
chrisb
parents:
diff changeset
24 fmt = response.array[0] # response is an object,just access the attributes
89592faa2875 Uploaded
chrisb
parents:
diff changeset
25 if is_a is not None and "" != is_a:
89592faa2875 Uploaded
chrisb
parents:
diff changeset
26 if is_a.upper() == fmt.upper(): # compare fmt names and avoid case issues
89592faa2875 Uploaded
chrisb
parents:
diff changeset
27 return True
89592faa2875 Uploaded
chrisb
parents:
diff changeset
28 else:
89592faa2875 Uploaded
chrisb
parents:
diff changeset
29 return False
89592faa2875 Uploaded
chrisb
parents:
diff changeset
30 else:
89592faa2875 Uploaded
chrisb
parents:
diff changeset
31 return fmt
89592faa2875 Uploaded
chrisb
parents:
diff changeset
32 except Exception as e:
89592faa2875 Uploaded
chrisb
parents:
diff changeset
33 raise IOError(e)
89592faa2875 Uploaded
chrisb
parents:
diff changeset
34
89592faa2875 Uploaded
chrisb
parents:
diff changeset
35
89592faa2875 Uploaded
chrisb
parents:
diff changeset
36 if __name__ == "__main__":
89592faa2875 Uploaded
chrisb
parents:
diff changeset
37 from optparse import OptionParser
89592faa2875 Uploaded
chrisb
parents:
diff changeset
38
89592faa2875 Uploaded
chrisb
parents:
diff changeset
39 usage = "usage: python %prog [options]\n"
89592faa2875 Uploaded
chrisb
parents:
diff changeset
40 parser = OptionParser(usage=usage)
89592faa2875 Uploaded
chrisb
parents:
diff changeset
41 parser.add_option("-i", action="store", type="string", dest="i", default="input",
89592faa2875 Uploaded
chrisb
parents:
diff changeset
42 help="input any glycan file (input)")
89592faa2875 Uploaded
chrisb
parents:
diff changeset
43 parser.add_option("-f", action="store", type="string", dest="f", default=None,
89592faa2875 Uploaded
chrisb
parents:
diff changeset
44 help="return true if is the specified format KCF)")
89592faa2875 Uploaded
chrisb
parents:
diff changeset
45 (options, args) = parser.parse_args()
89592faa2875 Uploaded
chrisb
parents:
diff changeset
46 instream = file(options.i, 'r')
89592faa2875 Uploaded
chrisb
parents:
diff changeset
47 print sniff_glycan(instream, options.f)