Skip to content

Commit 583d6cd

Browse files
Merge pull request #10 from observingClouds/level2_to_merge
Unit aware Level2 reader update plus many small changes
2 parents 841130c + a890e5d commit 583d6cd

18 files changed

+2089
-1074
lines changed

.dockerignore

Lines changed: 0 additions & 7 deletions
This file was deleted.

.github/workflows/test.yml

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,3 @@ jobs:
2727
- run: pipenv run flake8
2828
- run: pipenv run mypy
2929
- run: pipenv run pytest --cov --cov-fail-under=50
30-
31-
docker-image:
32-
runs-on: ubuntu-latest
33-
steps:
34-
- uses: actions/checkout@v2
35-
36-
- name: Build docker image
37-
run: docker build . -t pysonde:test
38-
39-
- name: Smoke test docker image
40-
run: |
41-
docker run --rm pysonde:test 10

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,6 @@ repos:
4444
name: pytest
4545
stages: [push]
4646
language: system
47-
entry: pipenv run pytest --cov --cov-fail-under=100
47+
entry: pipenv run pytest --cov --cov-fail-under=50
4848
types: [python]
4949
pass_filenames: false

Pipfile

Lines changed: 22 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,33 @@
11
[[source]]
2-
name = "pypi"
3-
url = "https://pypi.python.org/simple"
2+
url = "https://pypi.org/simple"
43
verify_ssl = true
5-
6-
[requires]
7-
python_version = "3.6"
4+
name = "pypi"
85

96
[packages]
10-
numpy = "==1.19.5"
11-
xarray = "==0.16.2"
12-
omegaconf = "*"
13-
netCDF4 = "==1.5.5.1"
14-
cftime = "==1.3.1"
15-
tqdm = "==4.56.0"
16-
dask = "==2021.1.1"
17-
toolz = "==0.11.1"
18-
appdirs = "==1.4.4"
19-
attrs = "==20.3.0"
20-
black = "==20.8b1"
21-
cfgv = "==3.2.0"
22-
click = "==7.1.2"
7+
black = "*"
238
coverage = "==5.3.1"
24-
dataclasses = "==0.8"
25-
distlib = "==0.3.1"
26-
filelock = "==3.0.12"
27-
flake8 = "==3.8.4"
28-
identify = "==1.5.13"
29-
importlib-metadata = "==3.4.0"
30-
importlib-resources = "==5.1.0"
31-
iniconfig = "==1.1.1"
32-
isort = "==5.7.0"
33-
mccabe = "==0.6.1"
34-
mypy = "==0.800"
35-
mypy-extensions = "==0.4.3"
36-
nodeenv = "==1.5.0"
37-
pandas = "==1.1.5"
38-
pathspec = "==0.8.1"
39-
pint-xarray = "==0.1"
40-
pluggy = "==0.13.1"
41-
pre-commit = "==2.9.3"
42-
py = "==1.10.0"
43-
pycodestyle = "==2.6.0"
44-
pyflakes = "==2.2.0"
45-
pyparsing = "==2.4.7"
46-
pytest = "==6.2.1"
47-
pytest-cov = "==2.11.1"
48-
python-dateutil = "==2.8.1"
49-
pytz = "==2020.5"
50-
regex = "==2020.11.13"
51-
six = "==1.15.0"
52-
toml = "==0.10.2"
53-
typed-ast = "==1.4.2"
54-
typing-extensions = "==3.7.4.3"
55-
virtualenv = "==20.4.0"
56-
zipp = "==3.4.0"
57-
Pint = "==0.16.1"
58-
Pint-Pandas = "==0.1"
59-
PyYAML = "==5.4.1"
60-
61-
[dev-packages]
62-
black = "==20.8b1"
9+
dask = "*"
6310
flake8 = "*"
6411
isort = "*"
6512
mypy = "*"
13+
numpy = "*"
14+
omegaconf = "*"
15+
pandas = "*"
16+
pint-xarray = "*"
6617
pre-commit = "*"
6718
pytest = "*"
6819
pytest-cov = "*"
20+
regex = "*"
21+
tqdm = "*"
22+
xarray = "*"
23+
Bottleneck = "*"
24+
MetPy = "*"
25+
netCDF4 = "*"
26+
Pint = "*"
27+
Pint-Pandas = "*"
28+
PyYAML = "*"
29+
30+
[dev-packages]
31+
32+
[requires]
33+
python_version = "3.9"

Pipfile.lock

Lines changed: 736 additions & 880 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

config/level1.yaml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@ global_attrs:
22
title: ${main.campaign} level 1 sounding data
33
description: ???
44
location: ${main.location}
5+
location_coord: "{location_coordinates}"
56
campaign_id: ${main.campaign_id}
67
platform: ${main.platform}
78
instrument: "Radiosonde RS41-SGP by Vaisala"
89
instrument_id: "Vaisala-RS"
910
time_of_launch_HHmmss: "{time_launch}"
1011
date_YYYYMMDD: "{day_launch}"
12+
date_YYYYMMDDTHHMM: "{date_launch}"
1113
resolution: "{resolution}"
1214
number_of_probe: ${meta_level0.number_of_probe}
1315
sonde_type: ${meta_level0.sonde_type}
@@ -141,7 +143,7 @@ variables:
141143
attrs:
142144
standard_name: "wind_speed"
143145
long_name: "wind speed"
144-
units: "m/s"
146+
units: "knots"
145147
coordinates: "launch_time flight_time lon lat p"
146148
encodings:
147149
dtype: "float32"
@@ -196,3 +198,13 @@ variables:
196198
coordinates:
197199
- sounding
198200
internal_varname : "sounding"
201+
level:
202+
attrs:
203+
cf_role: "level"
204+
long_name: "level"
205+
description: "Level of measurement"
206+
encodings:
207+
dtype: "int16"
208+
coordinates:
209+
- level
210+
internal_varname : "level"

config/level2.yaml

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,18 @@ setup:
55
max_gap_fill: 50
66
global_attrs:
77
title: ${main.campaign} level 2 sounding data
8-
description: ???
9-
campaign_id: ${main.campaign_id}
10-
platform: ${main.platform}
11-
instrument: "Radiosonde RS41-SGP by Vaisala"
12-
doi: ???
13-
version: ???
8+
# source: "{input_file}"
9+
version: "{version}"
1410
history: "created with {package} ({version}) on {date}"
15-
featureType: "trajectory"
16-
acknowledgement: ???
17-
references: ???
18-
Conventions: "CF-1.7"
11+
# description: ???
12+
# campaign_id: ${main.campaign_id}
13+
# platform: ${main.platform}
14+
# instrument: "Radiosonde RS41-SGP by Vaisala"
15+
# doi: ???
16+
# featureType: "trajectory"
17+
# acknowledgement: ???
18+
# references: ???
19+
# Conventions: "CF-1.7"
1920

2021
coordinates:
2122
sounding:
@@ -49,6 +50,7 @@ variables:
4950
coordinates:
5051
- alt
5152
- nv
53+
internal_varname: "alt_bnds"
5254
launch_time:
5355
attrs:
5456
standard_name: "time"
@@ -65,7 +67,7 @@ variables:
6567
long_name: "platform identifier"
6668
coordinates: "launch_time"
6769
flag_meanings: "BCO Meteor"
68-
flag_values: [1, 2]
70+
flag_values: "[1, 2]"
6971
units: "1"
7072
encodings:
7173
dtype: "int8"
@@ -76,8 +78,8 @@ variables:
7678
attrs:
7779
long_name: "indicator of vertical flight direction"
7880
flag_meanings: "ascending descending"
79-
flag_values: [1,0]
80-
valid_range: [ 0,1 ]
81+
flag_values: "[1,0]"
82+
valid_range: "[ 0,1 ]"
8183
coordinates: "launch_time"
8284
encodings:
8385
dtype: "int8"
@@ -192,7 +194,7 @@ variables:
192194
coordinates:
193195
- sounding
194196
- alt
195-
internal_varname: "dew_point"
197+
internal_varname: "dewpoint"
196198
wspd:
197199
attrs:
198200
standard_name: "wind_speed"
@@ -219,7 +221,7 @@ variables:
219221
coordinates:
220222
- sounding
221223
- alt
222-
invernal_varname: "wind_u"
224+
internal_varname: "wind_u"
223225
v:
224226
attrs:
225227
standard_name: "northward_wind"
@@ -233,7 +235,7 @@ variables:
233235
coordinates:
234236
- sounding
235237
- alt
236-
invernal_varname: "wind_v"
238+
internal_varname: "wind_v"
237239
mr:
238240
attrs:
239241
standard_name: "humidity_mixing_ratio"
@@ -301,7 +303,7 @@ variables:
301303
coordinates:
302304
- sounding
303305
- alt
304-
internal_varname : "humidity"
306+
internal_varname : "relative_humidity"
305307
N_ptu:
306308
attrs:
307309
standard_name: "number_of_observations"
@@ -331,7 +333,7 @@ variables:
331333
long_name: "bin method"
332334
description: "method used to derive level 2 PTU-data average"
333335
flag_meanings: "no_data interpolation averaging"
334-
flag_values: [ 0, 1, 2 ]
336+
flag_values: "[ 0, 1, 2 ]"
335337
coordinates: "lon lat flight_time launch_time"
336338
encodings:
337339
dtype: "int8"
@@ -344,7 +346,7 @@ variables:
344346
long_name: "bin method"
345347
description: "method used to derive level 2 GPS-data average"
346348
flag_meanings: "no_data interpolation averaging"
347-
flag_values: [ 0, 1, 2 ]
349+
flag_values: "[ 0, 1, 2 ]"
348350
coordinates: "lon lat flight_time launch_time"
349351
encodings:
350352
dtype: "int8"

pysonde/_dataset_creator.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,9 @@ def create_dataset(cfg):
4747
cfg : OmegaConf
4848
Config containing dataset template
4949
"""
50+
5051
ds = xr.Dataset()
52+
# ds = set_global_attrs(cfg, ds)
5153
ds = set_coords(cfg, ds)
5254
ds = set_variables(cfg, ds)
5355
return ds
@@ -79,10 +81,14 @@ def set_variables(cfg, ds):
7981
logging.debug("Add variables to dataset")
8082
if "variables" in cfg.keys():
8183
for var, params in cfg.variables.items():
82-
coord_dict = {coord: ds[coord] for coord in params.coordinates}
83-
ds[var] = xr.DataArray(None, coords=coord_dict, dims=params.coordinates)
84-
if "attrs" in params.keys():
85-
ds[var].attrs = params["attrs"]
86-
if "encodings" in params.keys():
87-
ds[var].encoding = params["encodings"]
84+
if var == "level" or var == "sounding":
85+
if "encodings" in params.keys():
86+
ds[var].encoding = params["encodings"]
87+
else:
88+
coord_dict = {coord: ds[coord] for coord in params.coordinates}
89+
ds[var] = xr.DataArray(None, coords=coord_dict, dims=params.coordinates)
90+
if "attrs" in params.keys():
91+
ds[var].attrs = params["attrs"]
92+
if "encodings" in params.keys():
93+
ds[var].encoding = params["encodings"]
8894
return ds

0 commit comments

Comments
 (0)