| 0 | 1 """ | 
|  | 2 Controller for integration with NIST data. | 
|  | 3 | 
|  | 4 Place this in: <galaxy_home>/lib/galaxy/webapps/galaxy/controllers | 
|  | 5 and then it can be accessed via URL: | 
|  | 6 | 
|  | 7     http://<galaxy_url>/nist_controller/get_nistdata | 
|  | 8     e.g. | 
|  | 9     http://dev1.ab.wurnet.nl:8088/nist_controller/get_nistdata | 
|  | 10 | 
|  | 11 """ | 
|  | 12 | 
|  | 13 import urllib2 | 
|  | 14 from galaxy.web.base.controller import BaseUIController, url_for, error, web | 
|  | 15 | 
|  | 16 | 
|  | 17 class NistController( BaseUIController ): | 
|  | 18     """ | 
|  | 19     Provides some services for the NIST html report | 
|  | 20     """ | 
|  | 21 | 
|  | 22     @web.expose | 
|  | 23     def get_nistdata( self, trans, casnr=None ): | 
|  | 24         """ | 
|  | 25         Generate a redirect to NIST webbook web app | 
|  | 26         casNr example: "C537268" | 
|  | 27 | 
|  | 28         """ | 
|  | 29 | 
|  | 30         nist_response = _fire_query_and_return_content("http://webbook.nist.gov/cgi/cbook.cgi?JCAMP="+ casnr + "&Index=0&Type=Mass") | 
|  | 31         peak_table = nist_response.split("##PEAK TABLE=(XY..XY)")[1].split("##END=")[0] | 
|  | 32         peak_table = peak_table.replace("\n", " ").strip() | 
|  | 33         return peak_table | 
|  | 34 | 
|  | 35 | 
|  | 36 | 
|  | 37 | 
|  | 38 | 
|  | 39 def _fire_query_and_return_content(url): | 
|  | 40     ''' | 
|  | 41     This method will fire the HTTP call and | 
|  | 42     return the results | 
|  | 43     ''' | 
|  | 44 | 
|  | 45     try: | 
|  | 46         data = urllib2.urlopen(url).read() | 
|  | 47 | 
|  | 48         return data | 
|  | 49 | 
|  | 50     except urllib2.HTTPError, e: | 
|  | 51         raise Exception( "HTTP error for URL: " + url + " : %s - " % e.code + e.reason) | 
|  | 52     except urllib2.URLError, e: | 
|  | 53         raise Exception( "Network error: %s" % e.reason.args[1] + ". Error accessing remote service [" + url + "]  ") | 
|  | 54 |