You can run this notebook in , in , in or in .
[1]:
!pip install --quiet climetlab
Dataset availability¶
(Work in progress)
[2]:
from climetlab.utils.availability import Availability
from climetlab.decorators import availability
[3]:
C0 = [
{"level": "500", "param": "Z", "step": "24"},
{"level": "500", "param": "Z", "step": "36"},
{"level": "500", "param": "Z", "step": "48"},
{"level": "500", "param": "T", "step": "24"},
{"level": "500", "param": "T", "step": "36"},
{"level": "500", "param": "T", "step": "48"},
{"level": "850", "param": "T", "step": "36"},
{"level": "850", "param": "T", "step": "48"},
{"level": "1000", "param": "Z", "step": "24"},
{"level": "1000", "param": "Z", "step": "48"},
]
[4]:
a0 = Availability(C0)
[5]:
a0
[5]:
level=1000, param=Z, step=[24, 48] level=500, param=[T, Z], step=[24, 36, 48] level=850, param=T, step=[36, 48]
[6]:
C1 = [
{"level": "500", "param": "Z", "step": "24"},
{"level": "500", "param": "Z", "step": "36"},
{"level": "500", "param": "Z", "step": "48"},
{"level": "500", "param": "T", "step": "24"},
{"level": "500", "param": "T", "step": "36"},
{"level": "500", "param": "T", "step": "48"},
{"level": "850", "param": "T", "step": "36"},
{"level": "850", "param": "T", "step": "48"},
{"level": "1000", "param": "Z", "step": "24"},
{"level": "1000", "param": "Z", "step": "48"},
{"level": "850", "param": "Z", "step": "36"},
{"level": "850", "param": "Z", "step": "48"},
]
[7]:
a1 = Availability(C1)
[8]:
a1
[8]:
param=[T, Z] level=500, step=[24, 36, 48] level=850, step=[36, 48] param=Z, level=1000, step=[24, 48]
[9]:
a1.select(param="Z")
[9]:
param=Z level=1000, step=[24, 48] level=500, step=[24, 36, 48] level=850, step=[36, 48]
[10]:
a1.select(param="T")
[10]:
param=T level=500, step=[24, 36, 48] level=850, step=[36, 48]
[11]:
for r in a1.select(param="T").iterate():
print(r)
{'param': ('T',), 'level': ('500',), 'step': ('24', '36', '48')}
{'param': ('T',), 'level': ('850',), 'step': ('36', '48')}
[12]:
for r in a1.select(param="T").iterate(True):
print(r)
{'param': 'T', 'level': '500', 'step': '24'}
{'param': 'T', 'level': '500', 'step': '36'}
{'param': 'T', 'level': '500', 'step': '48'}
{'param': 'T', 'level': '850', 'step': '36'}
{'param': 'T', 'level': '850', 'step': '48'}
[13]:
a1.select(step="36")
[13]:
level=[500, 850], param=[T, Z], step=36
[14]:
a1.select(step="36", param="T")
[14]:
level=[500, 850], param=T, step=36
[15]:
a1.count(step="36", param="T")
[15]:
2
[16]:
a1.count()
[16]:
12
[17]:
a1.select(step="22")
[17]:
[18]:
a1.select(param="Z", step="99").count()
[18]:
0
[19]:
a3 = Availability(
[
{"date": ["1990-01-01/1990-01-02"], "param": ["Z", "T"]},
{"date": ["1990-01-02/1990-01-05"], "param": ["Z"]},
{"date": ["1990-01-04/1990-01-15"], "param": ["Z", "T"]},
],
intervals=["date"],
)
[20]:
a3
[20]:
date=1990-01-01/1990-01-15, param=Z date=[1990-01-01/1990-01-02, 1990-01-04/1990-01-15], param=T
[21]:
a3.count()
[21]:
29
[22]:
a3.select(date="1990-01-02/1990-01-04")
[22]:
date=[1990-01-02, 1990-01-04], param=T date=1990-01-02/1990-01-04, param=Z
[23]:
for r in a3.select(date="1990-01-02/1990-01-04").iterate(True):
print(r)
{'date': datetime.date(1990, 1, 2), 'param': 'T'}
{'date': datetime.date(1990, 1, 4), 'param': 'T'}
{'date': datetime.date(1990, 1, 2), 'param': 'Z'}
{'date': datetime.date(1990, 1, 3), 'param': 'Z'}
{'date': datetime.date(1990, 1, 4), 'param': 'Z'}
[24]:
a3.missing(param="T", date="1990-01-01/1990-01-15")
[24]:
date=1990-01-03, param=T
[ ]: