-
What went wrong?Hello, thank you once again for metpy. I'm seeing some strangeness when parsing grib2 files across architectures. I'm not sure what the expected behaviour should be, or how to make it consistent. import xarray as xr
import subprocess
import requests
url = 'https://github.com/SciTools/iris-test-data/raw/master/test_data/GRIB/global_t/global.grib2'
r = requests.get(url, allow_redirects=True)
open('global.grib2', 'wb').write(r.content)
command_one = f'wgrib2 global.grib2 -new_grid_winds earth -new_grid latlon 257:104:1.0 27:52:1 globalone.grib2'
subprocess.run(command_one, shell=True, check=True)
#Diplay grid from wgrib2 point of view
command_grid_1 = f'wgrib2 -grid globalone.grib2'
subprocess.run(command_grid_1, shell=True, check=True)
command_two = f'wgrib2 global.grib2 -new_grid_winds earth -new_grid latlon 258:104:1.0 27:52:1 globaltwo.grib2'
subprocess.run(command_two, shell=True, check=True)
#Diplay grid from wgrib2 point of view
command_grid_2 = f'wgrib2 -grid globaltwo.grib2'
subprocess.run(command_grid_2, shell=True, check=True)
command_three = f'wgrib2 global.grib2 -new_grid_winds earth -new_grid latlon 259:104:1.0 27:52:1.0 globalthree.grib2'
subprocess.run(command_three, shell=True, check=True)
#Diplay grid from wgrib2 point of view
command_grid_3 = f'wgrib2 -grid globalthree.grib2'
subprocess.run(command_grid_3, shell=True, check=True)
ds1 = xr.open_dataset(
'globalone.grib2' # , chunks={"time": 100, "latitude": 100, "longitude": 100}
)
ds2 = xr.open_dataset(
'globaltwo.grib2' # , chunks={"time": 100, "latitude": 100, "longitude": 100}
)
ds3 = xr.open_dataset(
'globalthree.grib2' # , chunks={"time": 100, "latitude": 100, "longitude": 100}
)
data1 = ds1.metpy.parse_cf()
data2 = ds2.metpy.parse_cf()
data3 = ds3.metpy.parse_cf()
print(data1.longitude)
print(data2.longitude)
print(data3.longitude) Output on an Apple M2$ 1:0:d=1998030603:TMP:1000 mb:-28587-6477 hour ave fcst: 1:0:grid_template=0:winds(N/S): lat-lon grid:(104 x 52) units 1e-06 input WE:SN output WE:SN res 48 lat 27.000000 to 78.000000 by 1.000000 lon 257.000000 to 0.000000 by 1.000000 #points=5408 1:0:d=1998030603:TMP:1000 mb:-28587-6477 hour ave fcst: 1:0:grid_template=0:winds(N/S): lat-lon grid:(104 x 52) units 1e-06 input WE:SN output WE:SN res 48 lat 27.000000 to 78.000000 by 1.000000 lon 258.000000 to 1.000000 by 1.000000 #points=5408 1:0:d=1998030603:TMP:1000 mb:-28587-6477 hour ave fcst: 1:0:grid_template=0:winds(N/S): lat-lon grid:(104 x 52) units 1e-06 input WE:SN output WE:SN res 48 lat 27.000000 to 78.000000 by 1.000000 lon 259.000000 to 2.000000 by 1.000000 #points=5408 test.py:40: UserWarning: More than one time coordinate present for variable "t". data1 = ds1.metpy.parse_cf() test.py:41: UserWarning: More than one time coordinate present for variable "t". data2 = ds2.metpy.parse_cf() test.py:42: UserWarning: More than one time coordinate present for variable "t". data3 = ds3.metpy.parse_cf() array([ 0., 257., 258., 259., 260., 261., 262., 263., 264., 265., 266., 267., 268., 269., 270., 271., 272., 273., 274., 275., 276., 277., 278., 279., 280., 281., 282., 283., 284., 285., 286., 287., 288., 289., 290., 291., 292., 293., 294., 295., 296., 297., 298., 299., 300., 301., 302., 303., 304., 305., 306., 307., 308., 309., 310., 311., 312., 313., 314., 315., 316., 317., 318., 319., 320., 321., 322., 323., 324., 325., 326., 327., 328., 329., 330., 331., 332., 333., 334., 335., 336., 337., 338., 339., 340., 341., 342., 343., 344., 345., 346., 347., 348., 349., 350., 351., 352., 353., 354., 355., 356., 357., 358., 359.]) Coordinates: time datetime64[ns] ... step timedelta64[ns] ... isobaricInhPa float64 ... * longitude (longitude) float64 0.0 257.0 258.0 ... 357.0 358.0 359.0 valid_time datetime64[ns] ... metpy_crs object Projection: latitude_longitude Attributes: units: degrees_east standard_name: longitude long_name: longitude _metpy_axis: x,longitude array([ 1., 258., 259., 260., 261., 262., 263., 264., 265., 266., 267., 268., 269., 270., 271., 272., 273., 274., 275., 276., 277., 278., 279., 280., 281., 282., 283., 284., 285., 286., 287., 288., 289., 290., 291., 292., 293., 294., 295., 296., 297., 298., 299., 300., 301., 302., 303., 304., 305., 306., 307., 308., 309., 310., 311., 312., 313., 314., 315., 316., 317., 318., 319., 320., 321., 322., 323., 324., 325., 326., 327., 328., 329., 330., 331., 332., 333., 334., 335., 336., 337., 338., 339., 340., 341., 342., 343., 344., 345., 346., 347., 348., 349., 350., 351., 352., 353., 354., 355., 356., 357., 358., 359., 360.]) Coordinates: time datetime64[ns] ... step timedelta64[ns] ... isobaricInhPa float64 ... * longitude (longitude) float64 1.0 258.0 259.0 ... 358.0 359.0 360.0 valid_time datetime64[ns] ... metpy_crs object Projection: latitude_longitude Attributes: units: degrees_east standard_name: longitude long_name: longitude _metpy_axis: x,longitude array([-101., -100., -99., -98., -97., -96., -95., -94., -93., -92., -91., -90., -89., -88., -87., -86., -85., -84., -83., -82., -81., -80., -79., -78., -77., -76., -75., -74., -73., -72., -71., -70., -69., -68., -67., -66., -65., -64., -63., -62., -61., -60., -59., -58., -57., -56., -55., -54., -53., -52., -51., -50., -49., -48., -47., -46., -45., -44., -43., -42., -41., -40., -39., -38., -37., -36., -35., -34., -33., -32., -31., -30., -29., -28., -27., -26., -25., -24., -23., -22., -21., -20., -19., -18., -17., -16., -15., -14., -13., -12., -11., -10., -9., -8., -7., -6., -5., -4., -3., -2., -1., 0., 1., 2.]) Coordinates: time datetime64[ns] ... step timedelta64[ns] ... isobaricInhPa float64 ... * longitude (longitude) float64 -101.0 -100.0 -99.0 -98.0 ... 0.0 1.0 2.0 valid_time datetime64[ns] ... metpy_crs object Projection: latitude_longitude Attributes: units: degrees_east standard_name: longitude long_name: longitude _metpy_axis: x,longitude Output on an x86_64$ 1:0:d=1998030603:TMP:1000 mb:-28587-6477 hour ave fcst: 1:0:grid_template=0:winds(N/S): lat-lon grid:(104 x 52) units 1e-06 input WE:SN output WE:SN res 48 lat 27.000000 to 78.000000 by 1.000000 lon 257.000000 to 0.000000 by 1.000000 #points=5408 1:0:d=1998030603:TMP:1000 mb:-28587-6477 hour ave fcst: 1:0:grid_template=0:winds(N/S): lat-lon grid:(104 x 52) units 1e-06 input WE:SN output WE:SN res 48 lat 27.000000 to 78.000000 by 1.000000 lon 258.000000 to 1.000000 by 1.000000 #points=5408 1:0:d=1998030603:TMP:1000 mb:-28587-6477 hour ave fcst: 1:0:grid_template=0:winds(N/S): lat-lon grid:(104 x 52) units 1e-06 input WE:SN output WE:SN res 48 lat 27.000000 to 78.000000 by 1.000000 lon 259.000000 to 2.000000 by 1.000000 #points=5408 python3.11/site-packages/gribapi/__init__.py:23: UserWarning: ecCodes 2.31.0 or higher is recommended. You are running version 2.16.0 warnings.warn( metpy_plots_pi/test.py:40: UserWarning: More than one time coordinate present for variable "t". data1 = ds1.metpy.parse_cf() metpy_plots_pi/test.py:41: UserWarning: More than one time coordinate present for variable "t". data2 = ds2.metpy.parse_cf() metpy_plots_pi/test.py:42: UserWarning: More than one time coordinate present for variable "t". data3 = ds3.metpy.parse_cf() array([257., 258., 259., 260., 261., 262., 263., 264., 265., 266., 267., 268., 269., 270., 271., 272., 273., 274., 275., 276., 277., 278., 279., 280., 281., 282., 283., 284., 285., 286., 287., 288., 289., 290., 291., 292., 293., 294., 295., 296., 297., 298., 299., 300., 301., 302., 303., 304., 305., 306., 307., 308., 309., 310., 311., 312., 313., 314., 315., 316., 317., 318., 319., 320., 321., 322., 323., 324., 325., 326., 327., 328., 329., 330., 331., 332., 333., 334., 335., 336., 337., 338., 339., 340., 341., 342., 343., 344., 345., 346., 347., 348., 349., 350., 351., 352., 353., 354., 355., 356., 357., 358., 359., 360.]) Coordinates: time datetime64[ns] ... step timedelta64[ns] ... isobaricInhPa float64 ... * longitude (longitude) float64 257.0 258.0 259.0 ... 358.0 359.0 360.0 valid_time datetime64[ns] ... metpy_crs object Projection: latitude_longitude Attributes: units: degrees_east standard_name: longitude long_name: longitude _metpy_axis: x,longitude array([258., 259., 260., 261., 262., 263., 264., 265., 266., 267., 268., 269., 270., 271., 272., 273., 274., 275., 276., 277., 278., 279., 280., 281., 282., 283., 284., 285., 286., 287., 288., 289., 290., 291., 292., 293., 294., 295., 296., 297., 298., 299., 300., 301., 302., 303., 304., 305., 306., 307., 308., 309., 310., 311., 312., 313., 314., 315., 316., 317., 318., 319., 320., 321., 322., 323., 324., 325., 326., 327., 328., 329., 330., 331., 332., 333., 334., 335., 336., 337., 338., 339., 340., 341., 342., 343., 344., 345., 346., 347., 348., 349., 350., 351., 352., 353., 354., 355., 356., 357., 358., 359., 360., 361.]) Coordinates: time datetime64[ns] ... step timedelta64[ns] ... isobaricInhPa float64 ... * longitude (longitude) float64 258.0 259.0 260.0 ... 359.0 360.0 361.0 valid_time datetime64[ns] ... metpy_crs object Projection: latitude_longitude Attributes: units: degrees_east standard_name: longitude long_name: longitude _metpy_axis: x,longitude array([-101., -100., -99., -98., -97., -96., -95., -94., -93., -92., -91., -90., -89., -88., -87., -86., -85., -84., -83., -82., -81., -80., -79., -78., -77., -76., -75., -74., -73., -72., -71., -70., -69., -68., -67., -66., -65., -64., -63., -62., -61., -60., -59., -58., -57., -56., -55., -54., -53., -52., -51., -50., -49., -48., -47., -46., -45., -44., -43., -42., -41., -40., -39., -38., -37., -36., -35., -34., -33., -32., -31., -30., -29., -28., -27., -26., -25., -24., -23., -22., -21., -20., -19., -18., -17., -16., -15., -14., -13., -12., -11., -10., -9., -8., -7., -6., -5., -4., -3., -2., -1., 0., 1., 2.]) Coordinates: time datetime64[ns] ... step timedelta64[ns] ... isobaricInhPa float64 ... * longitude (longitude) float64 -101.0 -100.0 -99.0 -98.0 ... 0.0 1.0 2.0 valid_time datetime64[ns] ... metpy_crs object Projection: latitude_longitude Attributes: units: degrees_east standard_name: longitude long_name: longitude _metpy_axis: x,longitude Of the three examples, the third produces the same long array on both machines.
First array differs however:
x86_64
second array also differs: M2
x86_64
Which output is expected to be the "correct" one? This difference results in very strange behaviour on the M2 (and raspberry pi, arm based as well) when trying to animate over the dateline (eg, slowly moving lon center from west to east, incrementing time, to create an animation). All of the image data appears to shift 1 degree to the right at the point the data flips. It seems fine on the x86_64 but not on an arm based machine. Is there a way to ensure that the results are consistent across architectures? I will attach the pipenv graph outputs below: M2$ backcall==0.2.0 bokeh==3.3.4 ├── contourpy [required: >=1, installed: 1.2.0] │ └── numpy [required: >=1.20,<2.0, installed: 1.26.4] ├── Jinja2 [required: >=2.9, installed: 3.1.3] │ └── MarkupSafe [required: >=2.0, installed: 2.1.5] ├── numpy [required: >=1.16, installed: 1.26.4] ├── packaging [required: >=16.8, installed: 23.2] ├── pandas [required: >=1.2, installed: 2.2.0] │ ├── numpy [required: >=1.23.2,<2, installed: 1.26.4] │ ├── python-dateutil [required: >=2.8.2, installed: 2.8.2] │ │ └── six [required: >=1.5, installed: 1.16.0] │ ├── pytz [required: >=2020.1, installed: 2024.1] │ └── tzdata [required: >=2022.7, installed: 2023.4] ├── pillow [required: >=7.1.0, installed: 10.2.0] ├── PyYAML [required: >=3.10, installed: 6.0.1] ├── tornado [required: >=5.1, installed: 6.4] └── xyzservices [required: >=2021.09.1, installed: 2023.10.1] Bottleneck==1.3.7 └── numpy [required: Any, installed: 1.26.4] Cartopy==0.22.0 ├── matplotlib [required: >=3.4, installed: 3.8.2] │ ├── contourpy [required: >=1.0.1, installed: 1.2.0] │ │ └── numpy [required: >=1.20,<2.0, installed: 1.26.4] │ ├── cycler [required: >=0.10, installed: 0.12.1] │ ├── fonttools [required: >=4.22.0, installed: 4.48.1] │ ├── kiwisolver [required: >=1.3.1, installed: 1.4.5] │ ├── numpy [required: >=1.21,<2, installed: 1.26.4] │ ├── packaging [required: >=20.0, installed: 23.2] │ ├── pillow [required: >=8, installed: 10.2.0] │ ├── pyparsing [required: >=2.3.1, installed: 3.1.1] │ └── python-dateutil [required: >=2.7, installed: 2.8.2] │ └── six [required: >=1.5, installed: 1.16.0] ├── numpy [required: >=1.21, installed: 1.26.4] ├── packaging [required: >=20, installed: 23.2] ├── pyproj [required: >=3.1.0, installed: 3.6.1] │ └── certifi [required: Any, installed: 2024.2.2] ├── pyshp [required: >=2.1, installed: 2.3.1] └── shapely [required: >=1.7, installed: 2.0.2] └── numpy [required: >=1.14, installed: 1.26.4] cfgrib==0.9.10.4 ├── attrs [required: >=19.2, installed: 23.2.0] ├── click [required: Any, installed: 8.1.7] ├── eccodes [required: >=0.9.8, installed: 1.6.1] │ ├── attrs [required: Any, installed: 23.2.0] │ ├── cffi [required: Any, installed: 1.16.0] │ │ └── pycparser [required: Any, installed: 2.21] │ ├── findlibs [required: Any, installed: 0.0.5] │ └── numpy [required: Any, installed: 1.26.4] └── numpy [required: Any, installed: 1.26.4] colour==0.1.5 distributed==2024.2.0 ├── click [required: >=8.0, installed: 8.1.7] ├── cloudpickle [required: >=1.5.0, installed: 3.0.0] ├── dask [required: ==2024.2.0, installed: 2024.2.0] │ ├── click [required: >=8.1, installed: 8.1.7] │ ├── cloudpickle [required: >=1.5.0, installed: 3.0.0] │ ├── fsspec [required: >=2021.09.0, installed: 2024.2.0] │ ├── importlib-metadata [required: >=4.13.0, installed: 7.0.1] │ │ └── zipp [required: >=0.5, installed: 3.17.0] │ ├── packaging [required: >=20.0, installed: 23.2] │ ├── partd [required: >=1.2.0, installed: 1.4.1] │ │ ├── locket [required: Any, installed: 1.0.0] │ │ └── toolz [required: Any, installed: 0.12.1] │ ├── pyyaml [required: >=5.3.1, installed: 6.0.1] │ └── toolz [required: >=0.10.0, installed: 0.12.1] ├── jinja2 [required: >=2.10.3, installed: 3.1.3] │ └── MarkupSafe [required: >=2.0, installed: 2.1.5] ├── locket [required: >=1.0.0, installed: 1.0.0] ├── msgpack [required: >=1.0.0, installed: 1.0.7] ├── packaging [required: >=20.0, installed: 23.2] ├── psutil [required: >=5.7.2, installed: 5.9.8] ├── pyyaml [required: >=5.3.1, installed: 6.0.1] ├── sortedcontainers [required: >=2.0.5, installed: 2.4.0] ├── tblib [required: >=1.6.0, installed: 3.0.0] ├── toolz [required: >=0.10.0, installed: 0.12.1] ├── tornado [required: >=6.0.4, installed: 6.4] ├── urllib3 [required: >=1.24.3, installed: 2.2.0] └── zict [required: >=3.0.0, installed: 3.0.0] flox==0.9.2 ├── numpy [required: >=1.22, installed: 1.26.4] ├── numpy-groupies [required: >=0.9.19, installed: 0.10.2] │ └── numpy [required: Any, installed: 1.26.4] ├── packaging [required: >=21.3, installed: 23.2] ├── pandas [required: >=1.5, installed: 2.2.0] │ ├── numpy [required: >=1.23.2,<2, installed: 1.26.4] │ ├── python-dateutil [required: >=2.8.2, installed: 2.8.2] │ │ └── six [required: >=1.5, installed: 1.16.0] │ ├── pytz [required: >=2020.1, installed: 2024.1] │ └── tzdata [required: >=2022.7, installed: 2023.4] ├── scipy [required: >=1.9, installed: 1.12.0] │ └── numpy [required: >=1.22.4,<1.29.0, installed: 1.26.4] └── toolz [required: Any, installed: 0.12.1] fqdn==1.5.1 h5netcdf==1.3.0 ├── h5py [required: Any, installed: 3.10.0] │ └── numpy [required: >=1.17.3, installed: 1.26.4] └── packaging [required: Any, installed: 23.2] imageio==2.33.1 ├── numpy [required: Any, installed: 1.26.4] └── pillow [required: >=8.3.2, installed: 10.2.0] imageio-ffmpeg==0.4.9 └── setuptools [required: Any, installed: 69.0.3] ipympl==0.9.3 ├── ipython [required: <9, installed: 8.21.0] │ ├── decorator [required: Any, installed: 5.1.1] │ ├── jedi [required: >=0.16, installed: 0.19.1] │ │ └── parso [required: >=0.8.3,<0.9.0, installed: 0.8.3] │ ├── matplotlib-inline [required: Any, installed: 0.1.6] │ │ └── traitlets [required: Any, installed: 5.14.1] │ ├── pexpect [required: >4.3, installed: 4.9.0] │ │ └── ptyprocess [required: >=0.5, installed: 0.7.0] │ ├── prompt-toolkit [required: >=3.0.41,<3.1.0, installed: 3.0.43] │ │ └── wcwidth [required: Any, installed: 0.2.13] │ ├── pygments [required: >=2.4.0, installed: 2.17.2] │ ├── stack-data [required: Any, installed: 0.6.3] │ │ ├── asttokens [required: >=2.1.0, installed: 2.4.1] │ │ │ └── six [required: >=1.12.0, installed: 1.16.0] │ │ ├── executing [required: >=1.2.0, installed: 2.0.1] │ │ └── pure-eval [required: Any, installed: 0.2.2] │ └── traitlets [required: >=5, installed: 5.14.1] ├── ipython-genutils [required: Any, installed: 0.2.0] ├── ipywidgets [required: >=7.6.0,<9, installed: 8.1.2] │ ├── comm [required: >=0.1.3, installed: 0.2.1] │ │ └── traitlets [required: >=4, installed: 5.14.1] │ ├── ipython [required: >=6.1.0, installed: 8.21.0] │ │ ├── decorator [required: Any, installed: 5.1.1] │ │ ├── jedi [required: >=0.16, installed: 0.19.1] │ │ │ └── parso [required: >=0.8.3,<0.9.0, installed: 0.8.3] │ │ ├── matplotlib-inline [required: Any, installed: 0.1.6] │ │ │ └── traitlets [required: Any, installed: 5.14.1] │ │ ├── pexpect [required: >4.3, installed: 4.9.0] │ │ │ └── ptyprocess [required: >=0.5, installed: 0.7.0] │ │ ├── prompt-toolkit [required: >=3.0.41,<3.1.0, installed: 3.0.43] │ │ │ └── wcwidth [required: Any, installed: 0.2.13] │ │ ├── pygments [required: >=2.4.0, installed: 2.17.2] │ │ ├── stack-data [required: Any, installed: 0.6.3] │ │ │ ├── asttokens [required: >=2.1.0, installed: 2.4.1] │ │ │ │ └── six [required: >=1.12.0, installed: 1.16.0] │ │ │ ├── executing [required: >=1.2.0, installed: 2.0.1] │ │ │ └── pure-eval [required: Any, installed: 0.2.2] │ │ └── traitlets [required: >=5, installed: 5.14.1] │ ├── jupyterlab-widgets [required: ~=3.0.10, installed: 3.0.10] │ ├── traitlets [required: >=4.3.1, installed: 5.14.1] │ └── widgetsnbextension [required: ~=4.0.10, installed: 4.0.10] ├── matplotlib [required: >=3.4.0,<4, installed: 3.8.2] │ ├── contourpy [required: >=1.0.1, installed: 1.2.0] │ │ └── numpy [required: >=1.20,<2.0, installed: 1.26.4] │ ├── cycler [required: >=0.10, installed: 0.12.1] │ ├── fonttools [required: >=4.22.0, installed: 4.48.1] │ ├── kiwisolver [required: >=1.3.1, installed: 1.4.5] │ ├── numpy [required: >=1.21,<2, installed: 1.26.4] │ ├── packaging [required: >=20.0, installed: 23.2] │ ├── pillow [required: >=8, installed: 10.2.0] │ ├── pyparsing [required: >=2.3.1, installed: 3.1.1] │ └── python-dateutil [required: >=2.7, installed: 2.8.2] │ └── six [required: >=1.5, installed: 1.16.0] ├── numpy [required: Any, installed: 1.26.4] ├── pillow [required: Any, installed: 10.2.0] └── traitlets [required: <6, installed: 5.14.1] isoduration==20.11.0 └── arrow [required: >=0.15.0, installed: 1.3.0] ├── python-dateutil [required: >=2.7.0, installed: 2.8.2] │ └── six [required: >=1.5, installed: 1.16.0] └── types-python-dateutil [required: >=2.8.10, installed: 2.8.19.20240106] jsonpointer==2.4 lz4==4.3.3 MetPy==1.6.0 ├── matplotlib [required: >=3.5.0, installed: 3.8.2] │ ├── contourpy [required: >=1.0.1, installed: 1.2.0] │ │ └── numpy [required: >=1.20,<2.0, installed: 1.26.4] │ ├── cycler [required: >=0.10, installed: 0.12.1] │ ├── fonttools [required: >=4.22.0, installed: 4.48.1] │ ├── kiwisolver [required: >=1.3.1, installed: 1.4.5] │ ├── numpy [required: >=1.21,<2, installed: 1.26.4] │ ├── packaging [required: >=20.0, installed: 23.2] │ ├── pillow [required: >=8, installed: 10.2.0] │ ├── pyparsing [required: >=2.3.1, installed: 3.1.1] │ └── python-dateutil [required: >=2.7, installed: 2.8.2] │ └── six [required: >=1.5, installed: 1.16.0] ├── numpy [required: >=1.20.0, installed: 1.26.4] ├── pandas [required: >=1.4.0, installed: 2.2.0] │ ├── numpy [required: >=1.23.2,<2, installed: 1.26.4] │ ├── python-dateutil [required: >=2.8.2, installed: 2.8.2] │ │ └── six [required: >=1.5, installed: 1.16.0] │ ├── pytz [required: >=2020.1, installed: 2024.1] │ └── tzdata [required: >=2022.7, installed: 2023.4] ├── pint [required: >=0.17, installed: 0.23] │ └── typing-extensions [required: Any, installed: 4.9.0] ├── pooch [required: >=1.2.0, installed: 1.8.0] │ ├── packaging [required: >=20.0, installed: 23.2] │ ├── platformdirs [required: >=2.5.0, installed: 4.2.0] │ └── requests [required: >=2.19.0, installed: 2.31.0] │ ├── certifi [required: >=2017.4.17, installed: 2024.2.2] │ ├── charset-normalizer [required: >=2,<4, installed: 3.3.2] │ ├── idna [required: >=2.5,<4, installed: 3.6] │ └── urllib3 [required: >=1.21.1,<3, installed: 2.2.0] ├── pyproj [required: >=3.0.0, installed: 3.6.1] │ └── certifi [required: Any, installed: 2024.2.2] ├── scipy [required: >=1.8.0, installed: 1.12.0] │ └── numpy [required: >=1.22.4,<1.29.0, installed: 1.26.4] ├── traitlets [required: >=5.0.5, installed: 5.14.1] └── xarray [required: >=0.21.0, installed: 2024.1.1] ├── numpy [required: >=1.23, installed: 1.26.4] ├── packaging [required: >=22, installed: 23.2] └── pandas [required: >=1.5, installed: 2.2.0] ├── numpy [required: >=1.23.2,<2, installed: 1.26.4] ├── python-dateutil [required: >=2.8.2, installed: 2.8.2] │ └── six [required: >=1.5, installed: 1.16.0] ├── pytz [required: >=2020.1, installed: 2024.1] └── tzdata [required: >=2022.7, installed: 2023.4] nc-time-axis==1.4.1 ├── cftime [required: >=1.5, installed: 1.6.3] │ └── numpy [required: >1.13.3, installed: 1.26.4] ├── matplotlib [required: Any, installed: 3.8.2] │ ├── contourpy [required: >=1.0.1, installed: 1.2.0] │ │ └── numpy [required: >=1.20,<2.0, installed: 1.26.4] │ ├── cycler [required: >=0.10, installed: 0.12.1] │ ├── fonttools [required: >=4.22.0, installed: 4.48.1] │ ├── kiwisolver [required: >=1.3.1, installed: 1.4.5] │ ├── numpy [required: >=1.21,<2, installed: 1.26.4] │ ├── packaging [required: >=20.0, installed: 23.2] │ ├── pillow [required: >=8, installed: 10.2.0] │ ├── pyparsing [required: >=2.3.1, installed: 3.1.1] │ └── python-dateutil [required: >=2.7, installed: 2.8.2] │ └── six [required: >=1.5, installed: 1.16.0] └── numpy [required: Any, installed: 1.26.4] netCDF4==1.6.5 ├── certifi [required: Any, installed: 2024.2.2] ├── cftime [required: Any, installed: 1.6.3] │ └── numpy [required: >1.13.3, installed: 1.26.4] └── numpy [required: Any, installed: 1.26.4] numbagg==0.8.0 ├── numba [required: Any, installed: 0.59.0] │ ├── llvmlite [required: >=0.42.0dev0,<0.43, installed: 0.42.0] │ └── numpy [required: >=1.22,<1.27, installed: 1.26.4] └── numpy [required: Any, installed: 1.26.4] opt-einsum==3.3.0 └── numpy [required: >=1.7, installed: 1.26.4] pickleshare==0.7.5 pillar-youtube-upload==0.3.0 ├── google-api-core [required: >=1.23.0, installed: 2.17.0] │ ├── google-auth [required: >=2.14.1,<3.0.dev0, installed: 2.27.0] │ │ ├── cachetools [required: >=2.0.0,<6.0, installed: 5.3.2] │ │ ├── pyasn1-modules [required: >=0.2.1, installed: 0.3.0] │ │ │ └── pyasn1 [required: >=0.4.6,<0.6.0, installed: 0.5.1] │ │ └── rsa [required: >=3.1.4,<5, installed: 4.9] │ │ └── pyasn1 [required: >=0.1.3, installed: 0.5.1] │ ├── googleapis-common-protos [required: >=1.56.2,<2.0.dev0, installed: 1.62.0] │ │ └── protobuf [required: >=3.19.5,<5.0.0.dev0,!=4.21.5,!=4.21.4,!=4.21.3,!=4.21.2,!=4.21.1,!=3.20.1,!=3.20.0, installed: 4.25.2] │ ├── protobuf [required: >=3.19.5,<5.0.0.dev0,!=4.21.5,!=4.21.4,!=4.21.3,!=4.21.2,!=4.21.1,!=4.21.0,!=3.20.1,!=3.20.0, installed: 4.25.2] │ └── requests [required: >=2.18.0,<3.0.0.dev0, installed: 2.31.0] │ ├── certifi [required: >=2017.4.17, installed: 2024.2.2] │ ├── charset-normalizer [required: >=2,<4, installed: 3.3.2] │ ├── idna [required: >=2.5,<4, installed: 3.6] │ └── urllib3 [required: >=1.21.1,<3, installed: 2.2.0] ├── google-api-python-client [required: >=1.12.5, installed: 2.117.0] │ ├── google-api-core [required: >=1.31.5,<3.0.0.dev0,!=2.3.0,!=2.2.*,!=2.1.*,!=2.0.*, installed: 2.17.0] │ │ ├── google-auth [required: >=2.14.1,<3.0.dev0, installed: 2.27.0] │ │ │ ├── cachetools [required: >=2.0.0,<6.0, installed: 5.3.2] │ │ │ ├── pyasn1-modules [required: >=0.2.1, installed: 0.3.0] │ │ │ │ └── pyasn1 [required: >=0.4.6,<0.6.0, installed: 0.5.1] │ │ │ └── rsa [required: >=3.1.4,<5, installed: 4.9] │ │ │ └── pyasn1 [required: >=0.1.3, installed: 0.5.1] │ │ ├── googleapis-common-protos [required: >=1.56.2,<2.0.dev0, installed: 1.62.0] │ │ │ └── protobuf [required: >=3.19.5,<5.0.0.dev0,!=4.21.5,!=4.21.4,!=4.21.3,!=4.21.2,!=4.21.1,!=3.20.1,!=3.20.0, installed: 4.25.2] │ │ ├── protobuf [required: >=3.19.5,<5.0.0.dev0,!=4.21.5,!=4.21.4,!=4.21.3,!=4.21.2,!=4.21.1,!=4.21.0,!=3.20.1,!=3.20.0, installed: 4.25.2] │ │ └── requests [required: >=2.18.0,<3.0.0.dev0, installed: 2.31.0] │ │ ├── certifi [required: >=2017.4.17, installed: 2024.2.2] │ │ ├── charset-normalizer [required: >=2,<4, installed: 3.3.2] │ │ ├── idna [required: >=2.5,<4, installed: 3.6] │ │ └── urllib3 [required: >=1.21.1,<3, installed: 2.2.0] │ ├── google-auth [required: >=1.19.0,<3.0.0.dev0, installed: 2.27.0] │ │ ├── cachetools [required: >=2.0.0,<6.0, installed: 5.3.2] │ │ ├── pyasn1-modules [required: >=0.2.1, installed: 0.3.0] │ │ │ └── pyasn1 [required: >=0.4.6,<0.6.0, installed: 0.5.1] │ │ └── rsa [required: >=3.1.4,<5, installed: 4.9] │ │ └── pyasn1 [required: >=0.1.3, installed: 0.5.1] │ ├── google-auth-httplib2 [required: >=0.1.0, installed: 0.2.0] │ │ ├── google-auth [required: Any, installed: 2.27.0] │ │ │ ├── cachetools [required: >=2.0.0,<6.0, installed: 5.3.2] │ │ │ ├── pyasn1-modules [required: >=0.2.1, installed: 0.3.0] │ │ │ │ └── pyasn1 [required: >=0.4.6,<0.6.0, installed: 0.5.1] │ │ │ └── rsa [required: >=3.1.4,<5, installed: 4.9] │ │ │ └── pyasn1 [required: >=0.1.3, installed: 0.5.1] │ │ └── httplib2 [required: >=0.19.0, installed: 0.22.0] │ │ └── pyparsing [required: >=2.4.2,<4,!=3.0.3,!=3.0.2,!=3.0.1,!=3.0.0, installed: 3.1.1] │ ├── httplib2 [required: >=0.15.0,<1.dev0, installed: 0.22.0] │ │ └── pyparsing [required: >=2.4.2,<4,!=3.0.3,!=3.0.2,!=3.0.1,!=3.0.0, installed: 3.1.1] │ └── uritemplate [required: >=3.0.1,<5, installed: 4.1.1] ├── google-auth [required: >=1.22.1, installed: 2.27.0] │ ├── cachetools [required: >=2.0.0,<6.0, installed: 5.3.2] │ ├── pyasn1-modules [required: >=0.2.1, installed: 0.3.0] │ │ └── pyasn1 [required: >=0.4.6,<0.6.0, installed: 0.5.1] │ └── rsa [required: >=3.1.4,<5, installed: 4.9] │ └── pyasn1 [required: >=0.1.3, installed: 0.5.1] ├── httplib2 [required: >=0.18.1, installed: 0.22.0] │ └── pyparsing [required: >=2.4.2,<4,!=3.0.3,!=3.0.2,!=3.0.1,!=3.0.0, installed: 3.1.1] └── oauth2client [required: >=4.1.3, installed: 4.1.3] ├── httplib2 [required: >=0.9.1, installed: 0.22.0] │ └── pyparsing [required: >=2.4.2,<4,!=3.0.3,!=3.0.2,!=3.0.1,!=3.0.0, installed: 3.1.1] ├── pyasn1 [required: >=0.1.7, installed: 0.5.1] ├── pyasn1-modules [required: >=0.0.5, installed: 0.3.0] │ └── pyasn1 [required: >=0.4.6,<0.6.0, installed: 0.5.1] ├── rsa [required: >=3.1.4, installed: 4.9] │ └── pyasn1 [required: >=0.1.3, installed: 0.5.1] └── six [required: >=1.6.1, installed: 1.16.0] pyarrow==15.0.0 └── numpy [required: >=1.16.6,<2, installed: 1.26.4] pyarrow-hotfix==0.6 seaborn==0.13.2 ├── matplotlib [required: >=3.4,!=3.6.1, installed: 3.8.2] │ ├── contourpy [required: >=1.0.1, installed: 1.2.0] │ │ └── numpy [required: >=1.20,<2.0, installed: 1.26.4] │ ├── cycler [required: >=0.10, installed: 0.12.1] │ ├── fonttools [required: >=4.22.0, installed: 4.48.1] │ ├── kiwisolver [required: >=1.3.1, installed: 1.4.5] │ ├── numpy [required: >=1.21,<2, installed: 1.26.4] │ ├── packaging [required: >=20.0, installed: 23.2] │ ├── pillow [required: >=8, installed: 10.2.0] │ ├── pyparsing [required: >=2.3.1, installed: 3.1.1] │ └── python-dateutil [required: >=2.7, installed: 2.8.2] │ └── six [required: >=1.5, installed: 1.16.0] ├── numpy [required: >=1.20,!=1.24.0, installed: 1.26.4] └── pandas [required: >=1.2, installed: 2.2.0] ├── numpy [required: >=1.23.2,<2, installed: 1.26.4] ├── python-dateutil [required: >=2.8.2, installed: 2.8.2] │ └── six [required: >=1.5, installed: 1.16.0] ├── pytz [required: >=2020.1, installed: 2024.1] └── tzdata [required: >=2022.7, installed: 2023.4] siphon==0.9 ├── beautifulsoup4 [required: >=4.6, installed: 4.12.3] │ └── soupsieve [required: >1.2, installed: 2.5] ├── numpy [required: >=1.8, installed: 1.26.4] ├── pandas [required: Any, installed: 2.2.0] │ ├── numpy [required: >=1.23.2,<2, installed: 1.26.4] │ ├── python-dateutil [required: >=2.8.2, installed: 2.8.2] │ │ └── six [required: >=1.5, installed: 1.16.0] │ ├── pytz [required: >=2020.1, installed: 2024.1] │ └── tzdata [required: >=2022.7, installed: 2023.4] ├── protobuf [required: >=3.0.0a3, installed: 4.25.2] └── requests [required: >=1.2, installed: 2.31.0] ├── certifi [required: >=2017.4.17, installed: 2024.2.2] ├── charset-normalizer [required: >=2,<4, installed: 3.3.2] ├── idna [required: >=2.5,<4, installed: 3.6] └── urllib3 [required: >=1.21.1,<3, installed: 2.2.0] uri-template==1.3.0 webcolors==1.13 zarr==2.16.1 ├── asciitree [required: Any, installed: 0.3.3] ├── fasteners [required: Any, installed: 0.19] ├── numcodecs [required: >=0.10.0, installed: 0.12.1] │ └── numpy [required: >=1.7, installed: 1.26.4] └── numpy [required: >=1.20,!=1.21.0, installed: 1.26.4] x86_64$ bokeh==3.3.4 - contourpy [required: >=1, installed: 1.2.0] - numpy [required: >=1.20,<2.0, installed: 1.26.4] - Jinja2 [required: >=2.9, installed: 3.1.3] - MarkupSafe [required: >=2.0, installed: 2.1.5] - numpy [required: >=1.16, installed: 1.26.4] - packaging [required: >=16.8, installed: 23.2] - pandas [required: >=1.2, installed: 2.2.0] - numpy [required: >=1.23.2,<2, installed: 1.26.4] - python-dateutil [required: >=2.8.2, installed: 2.8.2] - six [required: >=1.5, installed: 1.16.0] - pytz [required: >=2020.1, installed: 2024.1] - tzdata [required: >=2022.7, installed: 2023.4] - pillow [required: >=7.1.0, installed: 10.2.0] - PyYAML [required: >=3.10, installed: 6.0.1] - tornado [required: >=5.1, installed: 6.4] - xyzservices [required: >=2021.09.1, installed: 2023.10.1] Bottleneck==1.3.7 - numpy [required: Any, installed: 1.26.4] Cartopy==0.22.0 - matplotlib [required: >=3.4, installed: 3.8.2] - contourpy [required: >=1.0.1, installed: 1.2.0] - numpy [required: >=1.20,<2.0, installed: 1.26.4] - cycler [required: >=0.10, installed: 0.12.1] - fonttools [required: >=4.22.0, installed: 4.48.1] - kiwisolver [required: >=1.3.1, installed: 1.4.5] - numpy [required: >=1.21,<2, installed: 1.26.4] - packaging [required: >=20.0, installed: 23.2] - pillow [required: >=8, installed: 10.2.0] - pyparsing [required: >=2.3.1, installed: 3.1.1] - python-dateutil [required: >=2.7, installed: 2.8.2] - six [required: >=1.5, installed: 1.16.0] - numpy [required: >=1.21, installed: 1.26.4] - packaging [required: >=20, installed: 23.2] - pyproj [required: >=3.1.0, installed: 3.6.1] - certifi [required: Any, installed: 2024.2.2] - pyshp [required: >=2.1, installed: 2.3.1] - shapely [required: >=1.7, installed: 2.0.2] - numpy [required: >=1.14, installed: 1.26.4] cfgrib==0.9.10.4 - attrs [required: >=19.2, installed: 23.2.0] - click [required: Any, installed: 8.1.7] - eccodes [required: >=0.9.8, installed: 1.6.1] - attrs [required: Any, installed: 23.2.0] - cffi [required: Any, installed: 1.16.0] - pycparser [required: Any, installed: 2.21] - findlibs [required: Any, installed: 0.0.5] - numpy [required: Any, installed: 1.26.4] - numpy [required: Any, installed: 1.26.4] colour==0.1.5 distributed==2024.2.0 - click [required: >=8.0, installed: 8.1.7] - cloudpickle [required: >=1.5.0, installed: 3.0.0] - dask [required: ==2024.2.0, installed: 2024.2.0] - click [required: >=8.1, installed: 8.1.7] - cloudpickle [required: >=1.5.0, installed: 3.0.0] - fsspec [required: >=2021.09.0, installed: 2024.2.0] - importlib-metadata [required: >=4.13.0, installed: 7.0.1] - zipp [required: >=0.5, installed: 3.17.0] - packaging [required: >=20.0, installed: 23.2] - partd [required: >=1.2.0, installed: 1.4.1] - locket [required: Any, installed: 1.0.0] - toolz [required: Any, installed: 0.12.1] - pyyaml [required: >=5.3.1, installed: 6.0.1] - toolz [required: >=0.10.0, installed: 0.12.1] - jinja2 [required: >=2.10.3, installed: 3.1.3] - MarkupSafe [required: >=2.0, installed: 2.1.5] - locket [required: >=1.0.0, installed: 1.0.0] - msgpack [required: >=1.0.0, installed: 1.0.7] - packaging [required: >=20.0, installed: 23.2] - psutil [required: >=5.7.2, installed: 5.9.8] - pyyaml [required: >=5.3.1, installed: 6.0.1] - sortedcontainers [required: >=2.0.5, installed: 2.4.0] - tblib [required: >=1.6.0, installed: 3.0.0] - toolz [required: >=0.10.0, installed: 0.12.1] - tornado [required: >=6.0.4, installed: 6.4] - urllib3 [required: >=1.24.3, installed: 2.2.0] - zict [required: >=3.0.0, installed: 3.0.0] flox==0.9.2 - numpy [required: >=1.22, installed: 1.26.4] - numpy-groupies [required: >=0.9.19, installed: 0.10.2] - numpy [required: Any, installed: 1.26.4] - packaging [required: >=21.3, installed: 23.2] - pandas [required: >=1.5, installed: 2.2.0] - numpy [required: >=1.23.2,<2, installed: 1.26.4] - python-dateutil [required: >=2.8.2, installed: 2.8.2] - six [required: >=1.5, installed: 1.16.0] - pytz [required: >=2020.1, installed: 2024.1] - tzdata [required: >=2022.7, installed: 2023.4] - scipy [required: >=1.9, installed: 1.12.0] - numpy [required: >=1.22.4,<1.29.0, installed: 1.26.4] - toolz [required: Any, installed: 0.12.1] fqdn==1.5.1 h5netcdf==1.3.0 - h5py [required: Any, installed: 3.10.0] - numpy [required: >=1.17.3, installed: 1.26.4] - packaging [required: Any, installed: 23.2] imageio==2.33.1 - numpy [required: Any, installed: 1.26.4] - pillow [required: >=8.3.2, installed: 10.2.0] imageio-ffmpeg==0.4.9 - setuptools [required: Any, installed: 69.0.3] ipympl==0.9.3 - ipython [required: <9, installed: 8.21.0] - decorator [required: Any, installed: 5.1.1] - jedi [required: >=0.16, installed: 0.19.1] - parso [required: >=0.8.3,<0.9.0, installed: 0.8.3] - matplotlib-inline [required: Any, installed: 0.1.6] - traitlets [required: Any, installed: 5.14.1] - pexpect [required: >4.3, installed: 4.9.0] - ptyprocess [required: >=0.5, installed: 0.7.0] - prompt-toolkit [required: >=3.0.41,<3.1.0, installed: 3.0.43] - wcwidth [required: Any, installed: 0.2.13] - pygments [required: >=2.4.0, installed: 2.17.2] - stack-data [required: Any, installed: 0.6.3] - asttokens [required: >=2.1.0, installed: 2.4.1] - six [required: >=1.12.0, installed: 1.16.0] - executing [required: >=1.2.0, installed: 2.0.1] - pure-eval [required: Any, installed: 0.2.2] - traitlets [required: >=5, installed: 5.14.1] - ipython-genutils [required: Any, installed: 0.2.0] - ipywidgets [required: >=7.6.0,<9, installed: 8.1.2] - comm [required: >=0.1.3, installed: 0.2.1] - traitlets [required: >=4, installed: 5.14.1] - ipython [required: >=6.1.0, installed: 8.21.0] - decorator [required: Any, installed: 5.1.1] - jedi [required: >=0.16, installed: 0.19.1] - parso [required: >=0.8.3,<0.9.0, installed: 0.8.3] - matplotlib-inline [required: Any, installed: 0.1.6] - traitlets [required: Any, installed: 5.14.1] - pexpect [required: >4.3, installed: 4.9.0] - ptyprocess [required: >=0.5, installed: 0.7.0] - prompt-toolkit [required: >=3.0.41,<3.1.0, installed: 3.0.43] - wcwidth [required: Any, installed: 0.2.13] - pygments [required: >=2.4.0, installed: 2.17.2] - stack-data [required: Any, installed: 0.6.3] - asttokens [required: >=2.1.0, installed: 2.4.1] - six [required: >=1.12.0, installed: 1.16.0] - executing [required: >=1.2.0, installed: 2.0.1] - pure-eval [required: Any, installed: 0.2.2] - traitlets [required: >=5, installed: 5.14.1] - jupyterlab-widgets [required: ~=3.0.10, installed: 3.0.10] - traitlets [required: >=4.3.1, installed: 5.14.1] - widgetsnbextension [required: ~=4.0.10, installed: 4.0.10] - matplotlib [required: >=3.4.0,<4, installed: 3.8.2] - contourpy [required: >=1.0.1, installed: 1.2.0] - numpy [required: >=1.20,<2.0, installed: 1.26.4] - cycler [required: >=0.10, installed: 0.12.1] - fonttools [required: >=4.22.0, installed: 4.48.1] - kiwisolver [required: >=1.3.1, installed: 1.4.5] - numpy [required: >=1.21,<2, installed: 1.26.4] - packaging [required: >=20.0, installed: 23.2] - pillow [required: >=8, installed: 10.2.0] - pyparsing [required: >=2.3.1, installed: 3.1.1] - python-dateutil [required: >=2.7, installed: 2.8.2] - six [required: >=1.5, installed: 1.16.0] - numpy [required: Any, installed: 1.26.4] - pillow [required: Any, installed: 10.2.0] - traitlets [required: <6, installed: 5.14.1] isoduration==20.11.0 - arrow [required: >=0.15.0, installed: 1.3.0] - python-dateutil [required: >=2.7.0, installed: 2.8.2] - six [required: >=1.5, installed: 1.16.0] - types-python-dateutil [required: >=2.8.10, installed: 2.8.19.20240106] jsonpointer==2.4 lz4==4.3.3 MetPy==1.6.0 - matplotlib [required: >=3.5.0, installed: 3.8.2] - contourpy [required: >=1.0.1, installed: 1.2.0] - numpy [required: >=1.20,<2.0, installed: 1.26.4] - cycler [required: >=0.10, installed: 0.12.1] - fonttools [required: >=4.22.0, installed: 4.48.1] - kiwisolver [required: >=1.3.1, installed: 1.4.5] - numpy [required: >=1.21,<2, installed: 1.26.4] - packaging [required: >=20.0, installed: 23.2] - pillow [required: >=8, installed: 10.2.0] - pyparsing [required: >=2.3.1, installed: 3.1.1] - python-dateutil [required: >=2.7, installed: 2.8.2] - six [required: >=1.5, installed: 1.16.0] - numpy [required: >=1.20.0, installed: 1.26.4] - pandas [required: >=1.4.0, installed: 2.2.0] - numpy [required: >=1.23.2,<2, installed: 1.26.4] - python-dateutil [required: >=2.8.2, installed: 2.8.2] - six [required: >=1.5, installed: 1.16.0] - pytz [required: >=2020.1, installed: 2024.1] - tzdata [required: >=2022.7, installed: 2023.4] - pint [required: >=0.17, installed: 0.23] - typing-extensions [required: Any, installed: 4.9.0] - pooch [required: >=1.2.0, installed: 1.8.0] - packaging [required: >=20.0, installed: 23.2] - platformdirs [required: >=2.5.0, installed: 4.2.0] - requests [required: >=2.19.0, installed: 2.31.0] - certifi [required: >=2017.4.17, installed: 2024.2.2] - charset-normalizer [required: >=2,<4, installed: 3.3.2] - idna [required: >=2.5,<4, installed: 3.6] - urllib3 [required: >=1.21.1,<3, installed: 2.2.0] - pyproj [required: >=3.0.0, installed: 3.6.1] - certifi [required: Any, installed: 2024.2.2] - scipy [required: >=1.8.0, installed: 1.12.0] - numpy [required: >=1.22.4,<1.29.0, installed: 1.26.4] - traitlets [required: >=5.0.5, installed: 5.14.1] - xarray [required: >=0.21.0, installed: 2024.1.1] - numpy [required: >=1.23, installed: 1.26.4] - packaging [required: >=22, installed: 23.2] - pandas [required: >=1.5, installed: 2.2.0] - numpy [required: >=1.23.2,<2, installed: 1.26.4] - python-dateutil [required: >=2.8.2, installed: 2.8.2] - six [required: >=1.5, installed: 1.16.0] - pytz [required: >=2020.1, installed: 2024.1] - tzdata [required: >=2022.7, installed: 2023.4] nc-time-axis==1.4.1 - cftime [required: >=1.5, installed: 1.6.3] - numpy [required: >1.13.3, installed: 1.26.4] - matplotlib [required: Any, installed: 3.8.2] - contourpy [required: >=1.0.1, installed: 1.2.0] - numpy [required: >=1.20,<2.0, installed: 1.26.4] - cycler [required: >=0.10, installed: 0.12.1] - fonttools [required: >=4.22.0, installed: 4.48.1] - kiwisolver [required: >=1.3.1, installed: 1.4.5] - numpy [required: >=1.21,<2, installed: 1.26.4] - packaging [required: >=20.0, installed: 23.2] - pillow [required: >=8, installed: 10.2.0] - pyparsing [required: >=2.3.1, installed: 3.1.1] - python-dateutil [required: >=2.7, installed: 2.8.2] - six [required: >=1.5, installed: 1.16.0] - numpy [required: Any, installed: 1.26.4] netCDF4==1.6.5 - certifi [required: Any, installed: 2024.2.2] - cftime [required: Any, installed: 1.6.3] - numpy [required: >1.13.3, installed: 1.26.4] - numpy [required: Any, installed: 1.26.4] numbagg==0.8.0 - numba [required: Any, installed: 0.59.0] - llvmlite [required: >=0.42.0dev0,<0.43, installed: 0.42.0] - numpy [required: >=1.22,<1.27, installed: 1.26.4] - numpy [required: Any, installed: 1.26.4] opt-einsum==3.3.0 - numpy [required: >=1.7, installed: 1.26.4] pillar-youtube-upload==0.3.0 - google-api-core [required: >=1.23.0, installed: 2.17.0] - google-auth [required: >=2.14.1,<3.0.dev0, installed: 2.27.0] - cachetools [required: >=2.0.0,<6.0, installed: 5.3.2] - pyasn1-modules [required: >=0.2.1, installed: 0.3.0] - pyasn1 [required: >=0.4.6,<0.6.0, installed: 0.5.1] - rsa [required: >=3.1.4,<5, installed: 4.9] - pyasn1 [required: >=0.1.3, installed: 0.5.1] - googleapis-common-protos [required: >=1.56.2,<2.0.dev0, installed: 1.62.0] - protobuf [required: >=3.19.5,<5.0.0.dev0,!=4.21.5,!=4.21.4,!=4.21.3,!=4.21.2,!=4.21.1,!=3.20.1,!=3.20.0, installed: 4.25.2] - protobuf [required: >=3.19.5,<5.0.0.dev0,!=4.21.5,!=4.21.4,!=4.21.3,!=4.21.2,!=4.21.1,!=4.21.0,!=3.20.1,!=3.20.0, installed: 4.25.2] - requests [required: >=2.18.0,<3.0.0.dev0, installed: 2.31.0] - certifi [required: >=2017.4.17, installed: 2024.2.2] - charset-normalizer [required: >=2,<4, installed: 3.3.2] - idna [required: >=2.5,<4, installed: 3.6] - urllib3 [required: >=1.21.1,<3, installed: 2.2.0] - google-api-python-client [required: >=1.12.5, installed: 2.117.0] - google-api-core [required: >=1.31.5,<3.0.0.dev0,!=2.3.0,!=2.2.*,!=2.1.*,!=2.0.*, installed: 2.17.0] - google-auth [required: >=2.14.1,<3.0.dev0, installed: 2.27.0] - cachetools [required: >=2.0.0,<6.0, installed: 5.3.2] - pyasn1-modules [required: >=0.2.1, installed: 0.3.0] - pyasn1 [required: >=0.4.6,<0.6.0, installed: 0.5.1] - rsa [required: >=3.1.4,<5, installed: 4.9] - pyasn1 [required: >=0.1.3, installed: 0.5.1] - googleapis-common-protos [required: >=1.56.2,<2.0.dev0, installed: 1.62.0] - protobuf [required: >=3.19.5,<5.0.0.dev0,!=4.21.5,!=4.21.4,!=4.21.3,!=4.21.2,!=4.21.1,!=3.20.1,!=3.20.0, installed: 4.25.2] - protobuf [required: >=3.19.5,<5.0.0.dev0,!=4.21.5,!=4.21.4,!=4.21.3,!=4.21.2,!=4.21.1,!=4.21.0,!=3.20.1,!=3.20.0, installed: 4.25.2] - requests [required: >=2.18.0,<3.0.0.dev0, installed: 2.31.0] - certifi [required: >=2017.4.17, installed: 2024.2.2] - charset-normalizer [required: >=2,<4, installed: 3.3.2] - idna [required: >=2.5,<4, installed: 3.6] - urllib3 [required: >=1.21.1,<3, installed: 2.2.0] - google-auth [required: >=1.19.0,<3.0.0.dev0, installed: 2.27.0] - cachetools [required: >=2.0.0,<6.0, installed: 5.3.2] - pyasn1-modules [required: >=0.2.1, installed: 0.3.0] - pyasn1 [required: >=0.4.6,<0.6.0, installed: 0.5.1] - rsa [required: >=3.1.4,<5, installed: 4.9] - pyasn1 [required: >=0.1.3, installed: 0.5.1] - google-auth-httplib2 [required: >=0.1.0, installed: 0.2.0] - google-auth [required: Any, installed: 2.27.0] - cachetools [required: >=2.0.0,<6.0, installed: 5.3.2] - pyasn1-modules [required: >=0.2.1, installed: 0.3.0] - pyasn1 [required: >=0.4.6,<0.6.0, installed: 0.5.1] - rsa [required: >=3.1.4,<5, installed: 4.9] - pyasn1 [required: >=0.1.3, installed: 0.5.1] - httplib2 [required: >=0.19.0, installed: 0.22.0] - pyparsing [required: >=2.4.2,<4,!=3.0.3,!=3.0.2,!=3.0.1,!=3.0.0, installed: 3.1.1] - httplib2 [required: >=0.15.0,<1.dev0, installed: 0.22.0] - pyparsing [required: >=2.4.2,<4,!=3.0.3,!=3.0.2,!=3.0.1,!=3.0.0, installed: 3.1.1] - uritemplate [required: >=3.0.1,<5, installed: 4.1.1] - google-auth [required: >=1.22.1, installed: 2.27.0] - cachetools [required: >=2.0.0,<6.0, installed: 5.3.2] - pyasn1-modules [required: >=0.2.1, installed: 0.3.0] - pyasn1 [required: >=0.4.6,<0.6.0, installed: 0.5.1] - rsa [required: >=3.1.4,<5, installed: 4.9] - pyasn1 [required: >=0.1.3, installed: 0.5.1] - httplib2 [required: >=0.18.1, installed: 0.22.0] - pyparsing [required: >=2.4.2,<4,!=3.0.3,!=3.0.2,!=3.0.1,!=3.0.0, installed: 3.1.1] - oauth2client [required: >=4.1.3, installed: 4.1.3] - httplib2 [required: >=0.9.1, installed: 0.22.0] - pyparsing [required: >=2.4.2,<4,!=3.0.3,!=3.0.2,!=3.0.1,!=3.0.0, installed: 3.1.1] - pyasn1 [required: >=0.1.7, installed: 0.5.1] - pyasn1-modules [required: >=0.0.5, installed: 0.3.0] - pyasn1 [required: >=0.4.6,<0.6.0, installed: 0.5.1] - rsa [required: >=3.1.4, installed: 4.9] - pyasn1 [required: >=0.1.3, installed: 0.5.1] - six [required: >=1.6.1, installed: 1.16.0] pyarrow==15.0.0 - numpy [required: >=1.16.6,<2, installed: 1.26.4] pyarrow-hotfix==0.6 seaborn==0.13.2 - matplotlib [required: >=3.4,!=3.6.1, installed: 3.8.2] - contourpy [required: >=1.0.1, installed: 1.2.0] - numpy [required: >=1.20,<2.0, installed: 1.26.4] - cycler [required: >=0.10, installed: 0.12.1] - fonttools [required: >=4.22.0, installed: 4.48.1] - kiwisolver [required: >=1.3.1, installed: 1.4.5] - numpy [required: >=1.21,<2, installed: 1.26.4] - packaging [required: >=20.0, installed: 23.2] - pillow [required: >=8, installed: 10.2.0] - pyparsing [required: >=2.3.1, installed: 3.1.1] - python-dateutil [required: >=2.7, installed: 2.8.2] - six [required: >=1.5, installed: 1.16.0] - numpy [required: >=1.20,!=1.24.0, installed: 1.26.4] - pandas [required: >=1.2, installed: 2.2.0] - numpy [required: >=1.23.2,<2, installed: 1.26.4] - python-dateutil [required: >=2.8.2, installed: 2.8.2] - six [required: >=1.5, installed: 1.16.0] - pytz [required: >=2020.1, installed: 2024.1] - tzdata [required: >=2022.7, installed: 2023.4] siphon==0.9 - beautifulsoup4 [required: >=4.6, installed: 4.12.3] - soupsieve [required: >1.2, installed: 2.5] - numpy [required: >=1.8, installed: 1.26.4] - pandas [required: Any, installed: 2.2.0] - numpy [required: >=1.23.2,<2, installed: 1.26.4] - python-dateutil [required: >=2.8.2, installed: 2.8.2] - six [required: >=1.5, installed: 1.16.0] - pytz [required: >=2020.1, installed: 2024.1] - tzdata [required: >=2022.7, installed: 2023.4] - protobuf [required: >=3.0.0a3, installed: 4.25.2] - requests [required: >=1.2, installed: 2.31.0] - certifi [required: >=2017.4.17, installed: 2024.2.2] - charset-normalizer [required: >=2,<4, installed: 3.3.2] - idna [required: >=2.5,<4, installed: 3.6] - urllib3 [required: >=1.21.1,<3, installed: 2.2.0] uri-template==1.3.0 webcolors==1.13 zarr==2.16.1 - asciitree [required: Any, installed: 0.3.3] - fasteners [required: Any, installed: 0.19] - numcodecs [required: >=0.10.0, installed: 0.12.1] - numpy [required: >=1.7, installed: 1.26.4] - numpy [required: >=1.20,!=1.21.0, installed: 1.26.4] Thanks in advance for any help! Operating SystemWindows Version1.6 Python Version3.11 Code to ReproduceSee above. Errors, Traceback, and LogsNo response |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 1 reply
-
After a little more investigation it seems like this might be an issue with cfgrib. Converting the files to NetCDF files with I'd be interested if anyone has any thoughts as to why this happens but feel free to close. |
Beta Was this translation helpful? Give feedback.
-
Given the warning in your x86 output
that is not visible in your osx-arm64 output, my gut spies different versions in your underlying ecCodes library, which is an important dependency for reading grib via the python eccodes library and cfgrib. I don't know for sure that's your culprit or have any additional insight on hand, but I'd start there myself. There's additional information on the python-eccodes instructions that might help, and managing your environments with conda can ideally eliminate this headache as well. I hope this helps! |
Beta Was this translation helpful? Give feedback.
parse_cf
primarily reads standardgrid_mapping
(or similar) metadata and creates a helper coordinate for cartopy and pyproj access to this projection information. It does not modify your existing coordinates. If you check outds1.longitude
you should see these same differences without MetPy being involved at all.Given the warning in your x86 output
that is not visible in your osx-arm64 output, my gut spies different versions in your underlying ecCodes library, which is an important dependency for reading grib via the python eccodes library and cfgrib. I d…