Changeset ff99eae in flex_extract.git for python/MarsRetrieval.py
- Timestamp:
- Jun 1, 2018, 8:34:59 PM (6 years ago)
- Branches:
- master, ctbto, dev
- Children:
- e1228f3
- Parents:
- ccab809
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
python/MarsRetrieval.py
r991df6a rff99eae 1 1 #!/usr/bin/env python 2 2 # -*- coding: utf-8 -*- 3 #************************************************************************4 # TODO AP5 # -6 #************************************************************************7 3 #******************************************************************************* 8 4 # @Author: Anne Fouilloux (University of Oslo) … … 13 9 # 14 10 # November 2015 - Leopold Haimberger (University of Vienna): 15 # - optimized display Info16 # - optimized data Retrieve and seperate between python and shell11 # - optimized display_info 12 # - optimized data_retrieve and seperate between python and shell 17 13 # script call 18 14 # … … 37 33 # @Class Content: 38 34 # - __init__ 39 # - displayInfo 40 # - dataRetrieve 35 # - display_info 36 # - data_retrieve 37 # 38 # @Class Attributes: 39 # - server 40 # - marsclass 41 # - dtype 42 # - levtype 43 # - levelist 44 # - repres 45 # - date 46 # - resol 47 # - stream 48 # - area 49 # - time 50 # - step 51 # - expver 52 # - number 53 # - accuracy 54 # - grid 55 # - gaussian 56 # - target 57 # - param 41 58 # 42 59 #******************************************************************************* … … 48 65 import os 49 66 50 ecapi = True51 try:52 import ecmwfapi53 except ImportError:54 ecapi = False55 56 67 # ------------------------------------------------------------------------------ 57 68 # CLASS 58 69 # ------------------------------------------------------------------------------ 59 class M ARSretrieval:70 class MarsRetrieval(object): 60 71 ''' 61 72 Class for submitting MARS retrievals. … … 68 79 ''' 69 80 70 def __init__(self, server, marsclass = "ei", type = "", levtype ="",71 levelist = "", repres = "", date = "", resol = "", stream ="",72 area = "", time = "", step = "", expver = "1", number ="",73 accuracy = "", grid = "", gaussian = "", target ="",74 param =""):81 def __init__(self, server, marsclass="ei", dtype="", levtype="", 82 levelist="", repres="", date="", resol="", stream="", 83 area="", time="", step="", expver="1", number="", 84 accuracy="", grid="", gaussian="", target="", 85 param=""): 75 86 ''' 76 87 @Description: 77 Initialises the instance of the M ARSretrieval class and88 Initialises the instance of the MarsRetrieval class and 78 89 defines and assigns a set of the necessary retrieval parameters 79 90 for the FLEXPART input data. … … 84 95 85 96 @Input: 86 self: instance of M ARSretrieval97 self: instance of MarsRetrieval 87 98 For description see class documentation. 88 99 … … 96 107 Default is the ERA-Interim dataset "ei". 97 108 98 type: string, optional109 dtype: string, optional 99 110 Determines the type of fields to be retrieved. 100 111 Selects between observations, images or fields. … … 275 286 self.server = server 276 287 self.marsclass = marsclass 277 self. type =type288 self.dtype = dtype 278 289 self.levtype = levtype 279 290 self.levelist = levelist … … 296 307 297 308 298 def display Info(self):309 def display_info(self): 299 310 ''' 300 311 @Description: … … 302 313 303 314 @Input: 304 self: instance of M ARSretrieval315 self: instance of MarsRetrieval 305 316 For description see class documentation. 306 317 … … 314 325 # with their corresponding values 315 326 for item in attrs.items(): 316 if item[0] in ('server'):327 if item[0] in 'server': 317 328 pass 318 329 else: 319 print (item[0] + ': ' + str(item[1]))330 print item[0] + ': ' + str(item[1]) 320 331 321 332 return 322 333 323 def data Retrieve(self):334 def data_retrieve(self): 324 335 ''' 325 336 @Description: … … 330 341 331 342 @Input: 332 self: instance of M ARSretrieval343 self: instance of MarsRetrieval 333 344 For description see class documentation. 334 345 … … 344 355 s = 'ret' 345 356 for k, v in attrs.iteritems(): 346 if k in ('server'):357 if k in 'server': 347 358 continue 348 359 if k == 'marsclass': … … 360 371 self.server.execute(s, target) 361 372 except: 362 print ('MARS Request failed, \363 have you already registered at apps.ecmwf.int?' )373 print 'MARS Request failed, \ 374 have you already registered at apps.ecmwf.int?' 364 375 raise IOError 365 376 if os.stat(target).st_size == 0: 366 print ('MARS Request returned no data - please check request')377 print 'MARS Request returned no data - please check request' 367 378 raise IOError 368 379 # MARS request via extra process in shell … … 373 384 stderr=subprocess.PIPE, bufsize=1) 374 385 pout = p.communicate(input=s)[0] 375 print (pout.decode())386 print pout.decode() 376 387 377 388 if 'Some errors reported' in pout.decode(): 378 print ('MARS Request failed - please check request')389 print 'MARS Request failed - please check request' 379 390 raise IOError 380 391 381 392 if os.stat(target).st_size == 0: 382 print ('MARS Request returned no data - please check request')393 print 'MARS Request returned no data - please check request' 383 394 raise IOError 384 395
Note: See TracChangeset
for help on using the changeset viewer.