Best practise to iterate over all hindcastDates of several hindcastYears for BoM
Info |
---|
The best approach is to iterate over the hindcastYears. For each hindcastYear iterate over all the available hindcastMonths and for each hindcastMonth iterate over all the available hindcastDays. At this point you may wish to check BoM availability and to view a BoM request |
Info |
---|
for hindcastYear in hindcastYears |
Web-API examples:
A BoM reforecast request for all the available hindcastDates
Info |
---|
Please note:
|
Code Block | ||
---|---|---|
| ||
#!/usr/bin/env python
from ecmwfapi import ECMWFDataServer
server = ECMWFDataServer()
origin = "ammc"
modelVersionDate = "2014-01-01"
def retrieve_BoM_reforecast():
"""
A function to demonstrate how to iterate efficiently over all hindcastYears, hindcastMonths etc
for a particular BoM_reforecast_request.
Change the variables below to adapt the iteration to your needs
"""
hindcastYearStart = 1981
hindcastYearEnd = 2013
hindcastMonthStart = 1
hindcastMonthEnd = 12
# BoM availability is every 5 days: 1, 6, 11, 16, 21, 26
hindcastDays = [1, 6, 11, 16, 21, 26]
#Step 1: Iterate over all the available hindcastYear(s)
for hindcastYear in list(range(hindcastYearStart, hindcastYearEnd + 1)):
#Step 2: Iterate over all the available hindcastMonths(s)
for hindcastMonth in list(range(hindcastMonthStart, hindcastMonthEnd + 1)):
hindcastDates = []
#Step 3: Create the list of the available hindcastDates
|
Table of Contents
*************** This page is under construction! *****************
What is the objective of this page?
Info | ||
---|---|---|
| ||
To help users to improve S2S BoM MARS requests performance via the WebAPI. A good understanding of the MARS efficiency issues is essential especially for users that are interested in downloading large amounts of data. |
How the S2S data is organised in MARS?
...
In general it is organised, as a huge tree, with the indentation below, showing different levels down that tree:
- centre (BoM)
- realtime or reforecast
- type of data (control forecast or perturbed forecast)
- type of level (single level or pressure level or potential temperature)
- HindcastDates (2013-01-01 or 2013-01-02 or 2013-01-03, ...)
- time-steps
- members (for perturbed forecast)
- levels (for pl )
- parameters
- levels (for pl )
- members (for perturbed forecast)
- time-steps
- HindcastDates (2013-01-01 or 2013-01-02 or 2013-01-03, ...)
- type of level (single level or pressure level or potential temperature)
- type of data (control forecast or perturbed forecast)
- realtime or reforecast
...
What would be the natural way to group requests?
Info |
---|
Following the previous paragraph, the natural way to group requests would be: Note the following:
|
What is the best approach to loop over several HindcastDates for a BoM request?
...
title | The main idea in brief: |
---|
...
What is the best approach to get all HindcastDays for several HindcastYears ?
The best approach is to iterate over the Hyears you wish. For each Hyear iterate over all Hmonths and for each Hmonth iterate over all its Hdays.
Info | ||
---|---|---|
| ||
for HindcastYear in HindcastYears |
An example to request Perturbed forecast, pl, for HindcastYears 2012 to 2013 for 2 HindcastMonths (eg August & September)
Info | ||
---|---|---|
| ||
for HindcastYear from 2012 to 2013 |
A Perturbed forecast, pl, S2S-request example
Code Block | ||
---|---|---|
| ||
#!/usr/bin/env python from ecmwfapi import ECMWFDataServer server = ECMWFDataServer() BoM_reforecast_pf_sfc_request("/".join(hindcastDates), pfsfcTarget) def BoM_reforecast_pf_pl_request(hindcastDate, target): """ A BoM reforecast, perturbed forecast, pressure level, request. The cost of this request is 571,392 fields and 11.1352 Gbytes Change the keywords below to adapt it to your needs. """ server.retrieve({ "class": "s2", "dataset": "s2s", "date": "2014-01-01"modelVersionDate, "expver": "prod", "hdate": HindcastDatehindcastDate, (ie the selected HindcastDate eg"levtype": "2013-09-01pl"), "levelist": "10/50/100/200/300/500/700/850/925/1000", "origin": origin, "levtype "param": "130/131/132/133/135/156", "step": "pl24/to/1488/by/24", "originstream": "enfh", "ammctarget": target, "paramtime": "133/15600", "stepnumber": "24/48 1/to/32", "number": "1/2/3/4/5/"type": "pf", }) def BoM_reforecast_pf_sfc_request(hindcastDate, target): """ A BoM reforecast, perturbed forecast, sfc request. The cost of this request is 383,040 fields and 7.1 GB Change the keywords below to adapt it to your needs. """ server.retrieve({ "class": "s2", "dataset": "s2s", "date": modelVersionDate, "expver": "prod", "hdate": hindcastDate, "levtype": "sfc", "origin": origin, "param": "31/34/121/122/136/146/147/151/167/168/169/175/176/177/179/180/181/235/228086/228095/228096/228141/228143/228144/228164/228228", "step": "24/to/1488/by/24", "stream": "enfh", "target": target, "time": "CHANGEME00", "timenumber": "001/to/32", "type": "pf", }) if __name__ == '__main__': retrieve_BoM_reforecast() |
If the request is "small" you may request more HindcastDates in one go.
...
|
Useful links
Info |
---|