From 774d7a3ab80250b30e8b732bad2e90ec3390fbb6 Mon Sep 17 00:00:00 2001 From: Matt Ueckermann Date: Tue, 14 Jul 2020 10:42:33 -0400 Subject: [PATCH] MAINT: Updating changelog, fixing documentation, updating conda environment files, bumping version, and additing file to update podpac from zip-file-folder install. --- CHANGELOG.md | 33 +++ dist/local_Windows_install/update_podpac.bat | 24 ++ dist/windows_conda_environment.json | 244 +++++++++++-------- dist/windows_conda_environment.yml | 2 +- doc/source/design.rst | 2 +- doc/source/interpolation.md | 6 +- doc/source/wrapping-datasets.md | 12 +- podpac/version.py | 2 +- 8 files changed, 208 insertions(+), 117 deletions(-) create mode 100644 dist/local_Windows_install/update_podpac.bat diff --git a/CHANGELOG.md b/CHANGELOG.md index f7f257355..f5d2319f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,38 @@ # Changelog +## 2.2.0 +### Introduction + +Wrapping Landsat8, Sentinel2, and MODIS data and improving interpolation. + +### Features +* Added `datalib.satutils` which wraps Landsat8 and Sentinel2 data +* Added `datalib.modis_pds` which wraps MODIS products ["MCD43A4.006", "MOD09GA.006", "MYD09GA.006", "MOD09GQ.006", "MYD09GQ.006"] +* Added settings['AWS_REQUESTER_PAYS'] and `authentication.S3Mixing.aws_requester_pays` attribute to support Sentinel2 data +* Added `issubset` method to Coordinates which allows users to test if a coordinate is a subset of another one +* Added environmental variables in Lambda function deployment allowing users to specify the location of additional +dependencies (`FUNCTION_DEPENDENCIES_KEY`) and settings (`SETTINGS`). This was in support the WMS service. +* Intake nodes can now filter inputs by additional data columns for .csv files / pandas dataframes by using the pandas +`query` method. +* Added documentation on `Interpolation` and `Wrapping Datasets` + +### Bug Fixes +* Added `dims` attributes to `Compositor` nodes which indicates the dimensions that sources are expected to have. This +fixes a bug where `Nodes` throw and error if Coordinates contain extra dimensions when the `Compositor` sources are missing +those dimensions. +* `COSMOSStations` will no longer fail for sites with no data or one data point. These sites are now automatically filtered. +* Fixed `core.data.file_source` closing files prematurely due to using context managers +* Fixed heterogenous interpolation (where lat/lon uses a different interpolator than time, for example) +* `datalib.TerrainTiles` now accesses S3 anonymously by default. Interpolation specified at the compositor level are +also now passed down to the sources. + +### Breaking changes +* Fixed `core.algorithm.signal.py` and in the process removed `SpatialConvolution` and `TemporalConvolutions`. Users now +have to label the dimensions of the kernel -- which prevents results from being modified if the eval coordinates are +transposed. This was a major bug in the `Convolution` node, and the new change obviates the need for the removed Nodes, +but it may break some pipelines. + + ## 2.1.0 ### Introduction diff --git a/dist/local_Windows_install/update_podpac.bat b/dist/local_Windows_install/update_podpac.bat new file mode 100644 index 000000000..91eae5657 --- /dev/null +++ b/dist/local_Windows_install/update_podpac.bat @@ -0,0 +1,24 @@ +@echo off +call bin\set_local_conda_path.bat +call bin\fix_hardcoded_absolute_paths.bat +call bin\activate_podpac_conda_env.bat + +cd podpac +echo "Updating PODPAC" +git fetch +for /f %%a in ('git describe --tags --abbrev^=0 origin/master') do git checkout %%a +cd .. +echo "Updating PODPAC EXAMPLES" +cd podpac-examples +git fetch +for /f %%a in ('git describe --tags --abbrev^=0 origin/master') do git checkout %%a +cd .. +cd podpac +cd dist +echo "Updating CONDA ENVIRONMENT" +conda env update -f windows_conda_environment.yml +cd .. +cd .. + + + diff --git a/dist/windows_conda_environment.json b/dist/windows_conda_environment.json index e75c07a3c..729133bc0 100644 --- a/dist/windows_conda_environment.json +++ b/dist/windows_conda_environment.json @@ -3,179 +3,213 @@ # platform: win-64 @EXPLICIT https://repo.anaconda.com/pkgs/main/win-64/blas-1.0-mkl.conda -https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2019.11.28-hecc5488_0.tar.bz2 +https://repo.anaconda.com/pkgs/main/win-64/ca-certificates-2020.6.24-0.conda https://repo.anaconda.com/pkgs/main/win-64/icc_rt-2019.0.0-h0cc432a_1.conda -https://repo.anaconda.com/pkgs/main/win-64/intel-openmp-2019.4-245.conda +https://repo.anaconda.com/pkgs/main/win-64/intel-openmp-2020.0-166.conda https://repo.anaconda.com/pkgs/msys2/win-64/msys2-conda-epoch-20160418-1.tar.bz2 https://repo.anaconda.com/pkgs/main/win-64/pandoc-2.2.3.2-0.conda +https://conda.anaconda.org/conda-forge/noarch/poppler-data-0.4.9-1.tar.bz2 https://repo.anaconda.com/pkgs/main/win-64/vs2015_runtime-14.16.27012-hf0eaf9b_1.conda https://repo.anaconda.com/pkgs/main/win-64/winpty-0.4.3-4.conda https://repo.anaconda.com/pkgs/msys2/win-64/m2w64-expat-2.1.1-2.tar.bz2 https://repo.anaconda.com/pkgs/msys2/win-64/m2w64-gmp-6.1.0-2.tar.bz2 https://repo.anaconda.com/pkgs/msys2/win-64/m2w64-libiconv-1.14-6.tar.bz2 https://repo.anaconda.com/pkgs/msys2/win-64/m2w64-libwinpthread-git-5.0.0.4634.697f757-2.tar.bz2 -https://repo.anaconda.com/pkgs/main/win-64/mkl-2019.4-245.conda +https://repo.anaconda.com/pkgs/main/win-64/mkl-2020.0-166.conda https://repo.anaconda.com/pkgs/main/win-64/nodejs-10.13.0-0.conda https://repo.anaconda.com/pkgs/main/win-64/vc-14.1-h0510ff6_4.conda -https://repo.anaconda.com/pkgs/main/win-64/bzip2-1.0.8-he774522_0.conda -https://repo.anaconda.com/pkgs/main/win-64/cfitsio-3.470-he774522_2.conda -https://repo.anaconda.com/pkgs/main/win-64/expat-2.2.5-he025d50_0.conda -https://repo.anaconda.com/pkgs/main/win-64/geos-3.8.0-h33f27b4_0.conda -https://repo.anaconda.com/pkgs/main/win-64/icu-58.2-ha66f8fd_1.conda -https://repo.anaconda.com/pkgs/main/win-64/jpeg-9b-hb83a4c4_2.conda +https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-hfa6e2cd_2.tar.bz2 +https://conda.anaconda.org/conda-forge/win-64/cfitsio-3.470-hfa6e2cd_2.tar.bz2 +https://conda.anaconda.org/conda-forge/win-64/expat-2.2.9-he025d50_2.tar.bz2 +https://conda.anaconda.org/conda-forge/win-64/geos-3.8.1-he025d50_0.tar.bz2 +https://conda.anaconda.org/conda-forge/win-64/icu-64.2-he025d50_1.tar.bz2 +https://conda.anaconda.org/conda-forge/win-64/jpeg-9c-hfa6e2cd_1001.tar.bz2 https://repo.anaconda.com/pkgs/main/win-64/libiconv-1.15-h1df5818_7.conda https://repo.anaconda.com/pkgs/main/win-64/libsodium-1.0.16-h9d3ae62_0.conda -https://repo.anaconda.com/pkgs/main/win-64/lz4-c-1.8.1.2-h2fa13f4_0.conda +https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.1.0-hfa6e2cd_3.tar.bz2 +https://conda.anaconda.org/conda-forge/win-64/lz4-c-1.9.2-h33f27b4_0.tar.bz2 https://repo.anaconda.com/pkgs/msys2/win-64/m2w64-gcc-libs-core-5.3.0-7.tar.bz2 -https://conda.anaconda.org/conda-forge/win-64/openssl-1.1.1d-hfa6e2cd_0.tar.bz2 -https://repo.anaconda.com/pkgs/main/win-64/pcre-8.43-ha925a31_0.conda -https://repo.anaconda.com/pkgs/main/win-64/sqlite-3.30.1-he774522_0.conda -https://repo.anaconda.com/pkgs/main/win-64/tbb-2018.0.5-he980bc4_0.conda +https://repo.anaconda.com/pkgs/main/win-64/openssl-1.1.1g-he774522_0.conda +https://conda.anaconda.org/conda-forge/win-64/pcre-8.44-h6538335_0.tar.bz2 +https://conda.anaconda.org/conda-forge/win-64/tbb-2018.0.5-he980bc4_0.tar.bz2 https://repo.anaconda.com/pkgs/main/win-64/tk-8.6.8-hfa6e2cd_0.conda -https://repo.anaconda.com/pkgs/main/win-64/xerces-c-3.2.2-ha925a31_0.conda -https://repo.anaconda.com/pkgs/main/win-64/xz-5.2.4-h2fa13f4_4.conda -https://repo.anaconda.com/pkgs/main/win-64/zlib-1.2.11-h62dcd97_3.conda -https://repo.anaconda.com/pkgs/main/win-64/freexl-1.0.5-hfa6e2cd_0.conda -https://repo.anaconda.com/pkgs/main/win-64/hdf4-4.2.13-h712560f_2.conda -https://repo.anaconda.com/pkgs/main/win-64/hdf5-1.10.4-h7ebc959_0.conda -https://repo.anaconda.com/pkgs/main/win-64/krb5-1.16.4-hc04afaa_0.conda -https://repo.anaconda.com/pkgs/main/win-64/libboost-1.67.0-hd9e427e_4.conda +https://conda.anaconda.org/conda-forge/win-64/xerces-c-3.2.2-h6538335_1004.tar.bz2 +https://repo.anaconda.com/pkgs/main/win-64/xz-5.2.5-h62dcd97_0.tar.bz2 +https://repo.anaconda.com/pkgs/main/win-64/yaml-0.2.5-he774522_0.conda +https://repo.anaconda.com/pkgs/main/win-64/zlib-1.2.11-h62dcd97_4.tar.bz2 +https://conda.anaconda.org/conda-forge/win-64/boost-cpp-1.72.0-h0caebb8_0.tar.bz2 +https://conda.anaconda.org/conda-forge/win-64/freexl-1.0.5-hd288d7e_1002.tar.bz2 +https://conda.anaconda.org/conda-forge/win-64/hdf4-4.2.13-hf8e6fe8_1003.tar.bz2 +https://conda.anaconda.org/conda-forge/win-64/hdf5-1.10.5-nompi_ha405e13_1104.tar.bz2 +https://repo.anaconda.com/pkgs/main/win-64/krb5-1.17.1-hc04afaa_0.conda https://repo.anaconda.com/pkgs/main/win-64/libpng-1.6.37-h2a8f88b_0.conda -https://repo.anaconda.com/pkgs/main/win-64/libssh2-1.8.2-h7a1dbc1_0.conda -https://repo.anaconda.com/pkgs/main/win-64/libxml2-2.9.9-h464c3ec_0.conda +https://conda.anaconda.org/conda-forge/win-64/libssh2-1.8.2-h642c060_2.tar.bz2 +https://conda.anaconda.org/conda-forge/win-64/libxml2-2.9.10-h9ce36c8_0.tar.bz2 https://repo.anaconda.com/pkgs/msys2/win-64/m2w64-gcc-libgfortran-5.3.0-6.tar.bz2 -https://repo.anaconda.com/pkgs/main/win-64/proj-6.2.1-h9f7ef89_0.conda -https://repo.anaconda.com/pkgs/main/win-64/python-3.7.6-h60c2a47_2.conda +https://repo.anaconda.com/pkgs/main/win-64/sqlite-3.31.1-h2a8f88b_1.tar.bz2 https://repo.anaconda.com/pkgs/main/win-64/zeromq-4.3.1-h33f27b4_3.conda -https://repo.anaconda.com/pkgs/main/win-64/zstd-1.3.7-h508b16e_0.conda -https://repo.anaconda.com/pkgs/main/noarch/affine-2.3.0-py_0.tar.bz2 +https://conda.anaconda.org/conda-forge/win-64/zstd-1.4.4-h9f78265_3.tar.bz2 +https://repo.anaconda.com/pkgs/main/win-64/freetype-2.9.1-ha9979f8_1.conda +https://conda.anaconda.org/conda-forge/win-64/kealib-1.4.13-hd6dc3df_0.tar.bz2 +https://conda.anaconda.org/conda-forge/win-64/libcurl-7.69.1-h1dcc11c_0.tar.bz2 +https://conda.anaconda.org/conda-forge/win-64/libkml-1.3.0-h7e985d0_1011.tar.bz2 +https://conda.anaconda.org/conda-forge/win-64/libpq-12.2-hd9aa61d_1.tar.bz2 +https://conda.anaconda.org/conda-forge/win-64/libtiff-4.1.0-h885aae3_6.tar.bz2 +https://repo.anaconda.com/pkgs/main/win-64/libxslt-1.1.33-h579f668_0.conda +https://repo.anaconda.com/pkgs/msys2/win-64/m2w64-gcc-libs-5.3.0-7.tar.bz2 +https://repo.anaconda.com/pkgs/main/win-64/python-3.7.7-h60c2a47_2.tar.bz2 +https://conda.anaconda.org/conda-forge/win-64/qt-5.9.7-h506e8af_3.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/affine-2.3.0-py_0.tar.bz2 +https://repo.anaconda.com/pkgs/main/win-64/appdirs-1.4.3-py37h28b3542_0.conda https://repo.anaconda.com/pkgs/main/noarch/asciitree-0.3.3-py_2.tar.bz2 https://repo.anaconda.com/pkgs/main/win-64/asn1crypto-1.3.0-py37_0.conda https://repo.anaconda.com/pkgs/main/noarch/attrs-19.3.0-py_0.tar.bz2 https://repo.anaconda.com/pkgs/main/win-64/backcall-0.1.0-py37_0.conda -https://conda.anaconda.org/conda-forge/win-64/certifi-2019.11.28-py37_0.tar.bz2 +https://repo.anaconda.com/pkgs/main/win-64/certifi-2020.6.20-py37_0.conda https://repo.anaconda.com/pkgs/main/win-64/chardet-3.0.4-py37_1003.conda -https://repo.anaconda.com/pkgs/main/win-64/click-7.0-py37_0.conda +https://conda.anaconda.org/conda-forge/noarch/click-7.1.1-pyh8c360ce_0.tar.bz2 +https://repo.anaconda.com/pkgs/main/noarch/cloudpickle-1.5.0-py_0.conda https://repo.anaconda.com/pkgs/main/noarch/colorama-0.4.3-py_0.conda -https://repo.anaconda.com/pkgs/main/noarch/decorator-4.4.1-py_0.tar.bz2 +https://conda.anaconda.org/conda-forge/win-64/curl-7.69.1-h1dcc11c_0.tar.bz2 +https://repo.anaconda.com/pkgs/main/noarch/decorator-4.4.2-py_0.conda https://repo.anaconda.com/pkgs/main/noarch/defusedxml-0.6.0-py_0.tar.bz2 https://repo.anaconda.com/pkgs/main/win-64/docutils-0.15.2-py37_0.conda https://repo.anaconda.com/pkgs/main/win-64/entrypoints-0.3-py37_0.conda -https://repo.anaconda.com/pkgs/main/win-64/freetype-2.9.1-ha9979f8_1.conda -https://repo.anaconda.com/pkgs/main/noarch/fsspec-0.6.2-py_0.conda -https://repo.anaconda.com/pkgs/main/win-64/idna-2.8-py37_0.conda +https://repo.anaconda.com/pkgs/main/noarch/fsspec-0.7.1-py_0.conda +https://repo.anaconda.com/pkgs/main/noarch/heapdict-1.0.1-py_0.conda +https://repo.anaconda.com/pkgs/main/noarch/idna-2.9-py_1.conda https://repo.anaconda.com/pkgs/main/win-64/ipython_genutils-0.2.0-py37_0.conda https://repo.anaconda.com/pkgs/main/noarch/jmespath-0.9.4-py_0.tar.bz2 -https://repo.anaconda.com/pkgs/main/noarch/json5-0.9.0-py_0.conda -https://repo.anaconda.com/pkgs/main/win-64/kealib-1.4.7-h07cbb95_6.conda +https://repo.anaconda.com/pkgs/main/noarch/json5-0.9.4-py_0.conda https://repo.anaconda.com/pkgs/main/win-64/kiwisolver-1.1.0-py37ha925a31_0.conda -https://repo.anaconda.com/pkgs/main/win-64/libcurl-7.67.0-h2a8f88b_0.conda -https://repo.anaconda.com/pkgs/main/win-64/libkml-1.3.0-he5f2a48_4.conda -https://repo.anaconda.com/pkgs/main/win-64/libpq-11.2-h3235a2c_0.conda -https://repo.anaconda.com/pkgs/main/win-64/libspatialite-4.3.0a-h7ffb84d_0.conda -https://repo.anaconda.com/pkgs/main/win-64/libtiff-4.1.0-h56a325e_0.conda -https://repo.anaconda.com/pkgs/main/win-64/libxslt-1.1.33-h579f668_0.conda -https://repo.anaconda.com/pkgs/msys2/win-64/m2w64-gcc-libs-5.3.0-7.tar.bz2 +https://conda.anaconda.org/conda-forge/win-64/libffi-3.2.1-h6538335_1007.tar.bz2 +https://repo.anaconda.com/pkgs/main/win-64/locket-0.2.0-py37_1.conda +https://repo.anaconda.com/pkgs/main/win-64/lxml-4.5.0-py37h1350720_0.conda +https://repo.anaconda.com/pkgs/msys2/win-64/m2w64-gettext-0.19.7-2.tar.bz2 https://repo.anaconda.com/pkgs/main/win-64/markupsafe-1.1.1-py37he774522_0.conda https://repo.anaconda.com/pkgs/main/win-64/mistune-0.8.4-py37he774522_0.conda https://repo.anaconda.com/pkgs/main/noarch/monotonic-1.5-py_0.tar.bz2 -https://repo.anaconda.com/pkgs/main/noarch/more-itertools-8.2.0-py_0.conda -https://repo.anaconda.com/pkgs/main/win-64/msgpack-python-0.6.1-py37h74a9793_1.conda +https://repo.anaconda.com/pkgs/main/win-64/msgpack-python-1.0.0-py37h74a9793_1.conda +https://repo.anaconda.com/pkgs/main/win-64/olefile-0.46-py37_0.conda +https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.3.1-h57dd2e7_3.tar.bz2 https://repo.anaconda.com/pkgs/main/win-64/pandocfilters-1.4.2-py37_1.conda -https://repo.anaconda.com/pkgs/main/noarch/parso-0.6.0-py_0.conda +https://repo.anaconda.com/pkgs/main/noarch/parso-0.6.2-py_0.conda https://repo.anaconda.com/pkgs/main/win-64/pickleshare-0.7.5-py37_0.conda +https://conda.anaconda.org/conda-forge/win-64/postgresql-12.2-he14cc48_1.tar.bz2 +https://conda.anaconda.org/conda-forge/win-64/proj-7.0.0-haa36216_3.tar.bz2 https://repo.anaconda.com/pkgs/main/noarch/prometheus_client-0.7.1-py_0.tar.bz2 -https://repo.anaconda.com/pkgs/main/win-64/psutil-5.6.7-py37he774522_0.conda -https://repo.anaconda.com/pkgs/main/win-64/pycparser-2.19-py37_0.conda +https://repo.anaconda.com/pkgs/main/win-64/psutil-5.7.0-py37he774522_0.conda +https://repo.anaconda.com/pkgs/main/noarch/pycparser-2.20-py_0.conda https://repo.anaconda.com/pkgs/main/noarch/pyparsing-2.4.6-py_0.conda -https://repo.anaconda.com/pkgs/main/win-64/pyproj-2.4.1-py37hc6484ec_0.conda https://repo.anaconda.com/pkgs/main/win-64/pyreadline-2.1-py37_1.conda +https://repo.anaconda.com/pkgs/main/noarch/pyshp-2.1.0-py_0.tar.bz2 +https://conda.anaconda.org/conda-forge/win-64/python_abi-3.7-1_cp37m.tar.bz2 https://repo.anaconda.com/pkgs/main/noarch/pytz-2019.3-py_0.tar.bz2 -https://repo.anaconda.com/pkgs/main/win-64/pywin32-227-py37he774522_1.tar.bz2 +https://repo.anaconda.com/pkgs/main/win-64/pywin32-227-py37he774522_1.conda +https://repo.anaconda.com/pkgs/main/win-64/pywinpty-0.5.7-py37_0.conda +https://repo.anaconda.com/pkgs/main/win-64/pyyaml-5.3.1-py37he774522_1.conda https://repo.anaconda.com/pkgs/main/win-64/pyzmq-18.1.1-py37ha925a31_0.conda -https://repo.anaconda.com/pkgs/main/win-64/qt-5.9.7-vc14h73c81de_0.conda https://repo.anaconda.com/pkgs/main/win-64/send2trash-1.5.0-py37_0.conda https://repo.anaconda.com/pkgs/main/win-64/sip-4.19.8-py37h6538335_0.conda https://repo.anaconda.com/pkgs/main/win-64/six-1.14.0-py37_0.conda -https://repo.anaconda.com/pkgs/main/win-64/soupsieve-1.9.5-py37_0.conda +https://repo.anaconda.com/pkgs/main/noarch/sortedcontainers-2.2.2-py_0.conda +https://repo.anaconda.com/pkgs/main/noarch/soupsieve-2.0-py_0.conda +https://repo.anaconda.com/pkgs/main/noarch/tblib-1.6.0-py_0.conda https://repo.anaconda.com/pkgs/main/noarch/testpath-0.4.4-py_0.tar.bz2 -https://repo.anaconda.com/pkgs/main/win-64/tornado-6.0.3-py37he774522_0.conda -https://repo.anaconda.com/pkgs/main/win-64/wcwidth-0.1.7-py37_0.conda +https://repo.anaconda.com/pkgs/main/noarch/toolz-0.10.0-py_0.conda +https://repo.anaconda.com/pkgs/main/win-64/tornado-6.0.4-py37he774522_1.conda +https://repo.anaconda.com/pkgs/main/noarch/typing_extensions-3.7.4.2-py_0.conda +https://repo.anaconda.com/pkgs/main/noarch/wcwidth-0.1.9-py_0.tar.bz2 https://repo.anaconda.com/pkgs/main/win-64/webencodings-0.5.1-py37_1.conda https://repo.anaconda.com/pkgs/main/win-64/win_inet_pton-1.1.0-py37_0.conda https://repo.anaconda.com/pkgs/main/win-64/wincertstore-0.2-py37_0.conda -https://repo.anaconda.com/pkgs/main/win-64/beautifulsoup4-4.8.2-py37_0.conda -https://repo.anaconda.com/pkgs/main/win-64/cffi-1.13.2-py37h7a1dbc1_0.conda -https://repo.anaconda.com/pkgs/main/noarch/click-plugins-1.1.1-py_0.tar.bz2 -https://repo.anaconda.com/pkgs/main/win-64/cligj-0.5.0-py37_0.conda -https://repo.anaconda.com/pkgs/main/win-64/curl-7.67.0-h2a8f88b_0.conda +https://repo.anaconda.com/pkgs/main/noarch/zipp-2.2.0-py_0.conda +https://repo.anaconda.com/pkgs/main/win-64/beautifulsoup4-4.9.0-py37_0.conda +https://repo.anaconda.com/pkgs/main/win-64/cffi-1.14.0-py37h7a1dbc1_0.conda +https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1-py_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/cligj-0.5.0-py_0.tar.bz2 https://repo.anaconda.com/pkgs/main/win-64/cycler-0.10.0-py37_0.conda +https://repo.anaconda.com/pkgs/main/win-64/cytoolz-0.10.1-py37he774522_0.conda +https://repo.anaconda.com/pkgs/main/noarch/dask-core-2.20.0-py_0.conda https://repo.anaconda.com/pkgs/main/noarch/fasteners-0.15-py_0.tar.bz2 -https://repo.anaconda.com/pkgs/main/win-64/geotiff-1.5.1-h5770a2b_0.conda -https://repo.anaconda.com/pkgs/main/win-64/jedi-0.16.0-py37_0.conda -https://repo.anaconda.com/pkgs/main/win-64/lxml-4.4.2-py37h1350720_0.conda -https://repo.anaconda.com/pkgs/msys2/win-64/m2w64-gettext-0.19.7-2.tar.bz2 +https://conda.anaconda.org/conda-forge/win-64/geotiff-1.5.1-h3d29ae3_10.tar.bz2 +https://conda.anaconda.org/conda-forge/win-64/gettext-0.19.8.1-hb01d8f6_1002.tar.bz2 +https://repo.anaconda.com/pkgs/main/win-64/importlib_metadata-1.5.0-py37_0.conda +https://repo.anaconda.com/pkgs/main/win-64/jedi-0.16.0-py37_1.tar.bz2 +https://conda.anaconda.org/conda-forge/win-64/libnetcdf-4.7.4-nompi_hc957ea6_101.tar.bz2 +https://conda.anaconda.org/conda-forge/win-64/libspatialite-4.3.0a-h51df0ed_1038.tar.bz2 +https://repo.anaconda.com/pkgs/msys2/win-64/m2w64-xz-5.2.2-2.tar.bz2 https://repo.anaconda.com/pkgs/main/win-64/mkl-service-2.3.0-py37hb782905_0.conda -https://repo.anaconda.com/pkgs/main/win-64/openjpeg-2.3.0-h5ec785f_1.conda -https://repo.anaconda.com/pkgs/main/win-64/postgresql-11.2-h3235a2c_0.conda +https://repo.anaconda.com/pkgs/main/noarch/packaging-20.4-py_0.conda +https://repo.anaconda.com/pkgs/main/noarch/partd-1.1.0-py_0.conda +https://repo.anaconda.com/pkgs/main/win-64/pillow-7.0.0-py37hcc1f983_0.conda +https://conda.anaconda.org/conda-forge/win-64/pyproj-2.6.0-py37he833962_1.tar.bz2 https://repo.anaconda.com/pkgs/main/win-64/pyqt-5.9.2-py37h6538335_2.conda -https://repo.anaconda.com/pkgs/main/win-64/pyrsistent-0.15.7-py37he774522_0.conda +https://repo.anaconda.com/pkgs/main/win-64/pyrsistent-0.16.0-py37he774522_0.tar.bz2 https://repo.anaconda.com/pkgs/main/win-64/pysocks-1.7.1-py37_0.conda -https://repo.anaconda.com/pkgs/main/noarch/python-dateutil-2.8.1-py_0.tar.bz2 -https://repo.anaconda.com/pkgs/main/win-64/pywinpty-0.5.7-py37_0.conda -https://repo.anaconda.com/pkgs/main/win-64/setuptools-45.1.0-py37_0.conda +https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.7.5-py_0.tar.bz2 +https://repo.anaconda.com/pkgs/main/win-64/setuptools-46.1.3-py37_0.conda +https://repo.anaconda.com/pkgs/main/win-64/terminado-0.8.3-py37_0.conda +https://conda.anaconda.org/conda-forge/win-64/tiledb-1.7.7-h0b90766_1.tar.bz2 https://repo.anaconda.com/pkgs/main/win-64/traitlets-4.3.3-py37_0.conda -https://repo.anaconda.com/pkgs/main/win-64/bleach-3.1.0-py37_0.conda +https://repo.anaconda.com/pkgs/main/noarch/zict-2.0.0-py_0.conda +https://repo.anaconda.com/pkgs/main/noarch/bleach-3.1.4-py_0.conda https://repo.anaconda.com/pkgs/main/win-64/cryptography-2.8-py37h7a1dbc1_0.conda +https://repo.anaconda.com/pkgs/main/win-64/distributed-2.20.0-py37_0.conda +https://conda.anaconda.org/conda-forge/win-64/glib-2.64.2-he4de6d7_0.tar.bz2 https://repo.anaconda.com/pkgs/main/noarch/jinja2-2.11.1-py_0.conda -https://repo.anaconda.com/pkgs/main/win-64/jupyter_core-4.6.1-py37_0.conda -https://repo.anaconda.com/pkgs/main/win-64/libnetcdf-4.6.1-h411e497_2.conda -https://repo.anaconda.com/pkgs/msys2/win-64/m2w64-xz-5.2.2-2.tar.bz2 +https://repo.anaconda.com/pkgs/main/win-64/jsonschema-3.2.0-py37_0.conda +https://repo.anaconda.com/pkgs/main/win-64/jupyter_core-4.6.3-py37_0.tar.bz2 https://repo.anaconda.com/pkgs/main/win-64/numpy-base-1.18.1-py37hc3f5095_1.conda -https://repo.anaconda.com/pkgs/main/noarch/pygments-2.5.2-py_0.tar.bz2 -https://repo.anaconda.com/pkgs/main/win-64/terminado-0.8.3-py37_0.conda -https://repo.anaconda.com/pkgs/main/win-64/tiledb-1.6.3-h7b000aa_0.conda +https://repo.anaconda.com/pkgs/main/noarch/pygments-2.6.1-py_0.conda https://conda.anaconda.org/conda-forge/noarch/traittypes-0.2.1-py_1.tar.bz2 -https://repo.anaconda.com/pkgs/main/win-64/wheel-0.34.1-py37_0.conda +https://repo.anaconda.com/pkgs/main/win-64/wheel-0.34.2-py37_0.conda https://conda.anaconda.org/conda-forge/noarch/branca-0.3.1-py_0.tar.bz2 -https://repo.anaconda.com/pkgs/main/win-64/jupyter_client-5.3.4-py37_0.conda -https://repo.anaconda.com/pkgs/main/win-64/libgdal-3.0.2-h1155b67_0.conda +https://repo.anaconda.com/pkgs/main/noarch/jupyter_client-6.1.2-py_0.conda +https://repo.anaconda.com/pkgs/main/noarch/nbformat-5.0.4-py_0.conda https://repo.anaconda.com/pkgs/main/win-64/pip-20.0.2-py37_1.conda -https://repo.anaconda.com/pkgs/main/noarch/prompt_toolkit-3.0.3-py_0.conda +https://conda.anaconda.org/conda-forge/win-64/poppler-0.67.0-h1707e21_8.tar.bz2 +https://repo.anaconda.com/pkgs/main/noarch/prompt-toolkit-3.0.4-py_0.conda https://repo.anaconda.com/pkgs/main/win-64/pyopenssl-19.1.0-py37_0.conda -https://repo.anaconda.com/pkgs/main/win-64/ipython-7.11.1-py37h39e3cac_0.conda +https://conda.anaconda.org/conda-forge/win-64/libgdal-3.0.4-h821c9b7_6.tar.bz2 +https://repo.anaconda.com/pkgs/main/win-64/nbconvert-5.6.1-py37_0.conda +https://repo.anaconda.com/pkgs/main/noarch/prompt_toolkit-3.0.4-0.conda https://repo.anaconda.com/pkgs/main/win-64/urllib3-1.25.8-py37_0.conda -https://repo.anaconda.com/pkgs/main/noarch/botocore-1.14.0-py_0.conda +https://repo.anaconda.com/pkgs/main/noarch/botocore-1.15.39-py_0.conda +https://repo.anaconda.com/pkgs/main/win-64/ipython-7.13.0-py37h5ca1d4c_0.conda +https://repo.anaconda.com/pkgs/main/win-64/requests-2.23.0-py37_0.conda https://repo.anaconda.com/pkgs/main/win-64/ipykernel-5.1.4-py37h39e3cac_0.conda -https://repo.anaconda.com/pkgs/main/win-64/requests-2.22.0-py37_1.conda -https://repo.anaconda.com/pkgs/main/win-64/s3transfer-0.3.0-py37_0.conda -https://repo.anaconda.com/pkgs/main/noarch/boto3-1.11.0-py_0.conda -https://repo.anaconda.com/pkgs/main/noarch/s3fs-0.4.0-py_0.tar.bz2 -https://repo.anaconda.com/pkgs/main/noarch/jaraco.itertools-5.0.0-py_0.conda -https://repo.anaconda.com/pkgs/main/noarch/zipp-2.1.0-py_0.conda -https://repo.anaconda.com/pkgs/main/win-64/importlib_metadata-1.5.0-py37_0.conda -https://repo.anaconda.com/pkgs/main/win-64/inflect-4.1.0-py37_0.conda -https://repo.anaconda.com/pkgs/main/win-64/jsonschema-3.2.0-py37_0.conda -https://repo.anaconda.com/pkgs/main/noarch/nbformat-5.0.4-py_0.conda -https://repo.anaconda.com/pkgs/main/win-64/nbconvert-5.6.1-py37_0.conda +https://repo.anaconda.com/pkgs/main/noarch/owslib-0.18.0-py_0.tar.bz2 +https://repo.anaconda.com/pkgs/main/win-64/pyepsg-0.4.0-py37_0.conda +https://repo.anaconda.com/pkgs/main/win-64/s3transfer-0.3.3-py37_0.conda +https://conda.anaconda.org/conda-forge/noarch/sat-stac-0.3.3-py_0.tar.bz2 +https://repo.anaconda.com/pkgs/main/noarch/boto3-1.12.39-py_0.conda https://repo.anaconda.com/pkgs/main/win-64/notebook-6.0.3-py37_0.conda -https://repo.anaconda.com/pkgs/main/noarch/jupyterlab_server-1.0.6-py_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/sat-search-0.2.3-pyh9f0ad1d_0.tar.bz2 +https://repo.anaconda.com/pkgs/main/noarch/jupyterlab_server-1.1.0-py_0.tar.bz2 +https://repo.anaconda.com/pkgs/main/noarch/s3fs-0.4.0-py_0.tar.bz2 https://repo.anaconda.com/pkgs/main/win-64/widgetsnbextension-3.5.1-py37_0.conda https://repo.anaconda.com/pkgs/main/noarch/ipywidgets-7.5.1-py_0.tar.bz2 https://repo.anaconda.com/pkgs/main/noarch/jupyterlab-1.2.6-pyhf63ae98_0.conda -https://conda.anaconda.org/conda-forge/noarch/ipympl-0.4.1-py_0.tar.bz2 -https://conda.anaconda.org/conda-forge/win-64/ipyleaflet-0.12.2-py37_0.tar.bz2 -https://repo.anaconda.com/pkgs/main/noarch/snuggs-1.4.7-py_0.tar.bz2 -https://repo.anaconda.com/pkgs/main/win-64/h5py-2.10.0-py37h5e291fa_0.conda -https://repo.anaconda.com/pkgs/main/win-64/matplotlib-3.1.2-py37_1.conda -https://repo.anaconda.com/pkgs/main/win-64/matplotlib-base-3.1.2-py37h64f37c6_1.conda +https://conda.anaconda.org/conda-forge/noarch/ipyleaflet-0.12.4-pyh9f0ad1d_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/ipympl-0.5.6-pyh9f0ad1d_1.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-py_0.tar.bz2 +https://conda.anaconda.org/conda-forge/win-64/h5py-2.10.0-nompi_py37h422b98e_102.tar.bz2 +https://conda.anaconda.org/conda-forge/win-64/rasterio-1.1.3-py37h2617b1b_0.tar.bz2 +https://conda.anaconda.org/conda-forge/win-64/shapely-1.7.0-py37he1cf020_3.tar.bz2 +https://repo.anaconda.com/pkgs/main/win-64/bokeh-2.1.1-py37_0.conda +https://repo.anaconda.com/pkgs/main/win-64/matplotlib-3.1.3-py37_0.conda +https://repo.anaconda.com/pkgs/main/win-64/matplotlib-base-3.1.3-py37h64f37c6_0.conda https://repo.anaconda.com/pkgs/main/win-64/mkl_fft-1.0.15-py37h14836fe_0.conda https://repo.anaconda.com/pkgs/main/win-64/mkl_random-1.1.0-py37h675688f_0.conda https://repo.anaconda.com/pkgs/main/win-64/numpy-1.18.1-py37h93ca92e_0.conda https://repo.anaconda.com/pkgs/main/win-64/numcodecs-0.6.4-py37ha925a31_0.conda -https://repo.anaconda.com/pkgs/main/win-64/numexpr-2.7.0-py37h6288b17_0.conda -https://repo.anaconda.com/pkgs/main/win-64/pandas-1.0.0-py37h47e9c7a_0.conda -https://repo.anaconda.com/pkgs/main/win-64/rasterio-1.1.0-py37h039b02d_0.conda -https://repo.anaconda.com/pkgs/main/win-64/scipy-1.3.2-py37h29ff71c_0.conda -https://repo.anaconda.com/pkgs/main/noarch/xarray-0.14.1-py_1.conda +https://repo.anaconda.com/pkgs/main/win-64/numexpr-2.7.1-py37h25d0782_0.conda +https://repo.anaconda.com/pkgs/main/win-64/pandas-1.0.3-py37h47e9c7a_0.conda +https://repo.anaconda.com/pkgs/main/win-64/pykdtree-1.3.1-py37h8c2d366_2.conda +https://repo.anaconda.com/pkgs/main/win-64/scipy-1.4.1-py37h9439919_0.conda +https://conda.anaconda.org/conda-forge/win-64/cartopy-0.17.0-py37h21f5c67_1015.tar.bz2 +https://repo.anaconda.com/pkgs/main/noarch/dask-2.20.0-py_0.conda +https://repo.anaconda.com/pkgs/main/noarch/xarray-0.15.1-py_0.conda https://repo.anaconda.com/pkgs/main/noarch/zarr-2.3.2-py_0.tar.bz2 +https://repo.anaconda.com/pkgs/main/noarch/intake-0.6.0-py_0.conda diff --git a/dist/windows_conda_environment.yml b/dist/windows_conda_environment.yml index d95a7bcfa..cae816a8f 100644 --- a/dist/windows_conda_environment.yml +++ b/dist/windows_conda_environment.yml @@ -25,5 +25,5 @@ dependencies: - jupyterlab - ipyleaflet - ipympl -prefix: D:\podpac-1.3.0\miniconda\envs\podpac + - sat-search diff --git a/doc/source/design.rst b/doc/source/design.rst index 466ff0950..09147bea5 100644 --- a/doc/source/design.rst +++ b/doc/source/design.rst @@ -17,7 +17,7 @@ Node **Nodes** describe the components of your analysis. These include data sources, combined data sources (**Compositors**), algorithms, and the assembly of data sources. Nodes are assembled into :ref:`design_pipelines`, which can be output to a text file or pushed to the cloud -with minimal configuration. **Nodes** are design to **FAIL ON EVAL**, not fail when instantiated. This is order to defer +with minimal configuration. **Nodes** are designed to **FAIL ON EVAL**, not fail when instantiated. This is in order to defer expensive operations till the user really wants them. .. image:: /_static/img/node.png diff --git a/doc/source/interpolation.md b/doc/source/interpolation.md index 847bf77ff..832ec1f28 100644 --- a/doc/source/interpolation.md +++ b/doc/source/interpolation.md @@ -6,9 +6,9 @@ PODPAC allows users to specify various different interpolation schemes for nodes increased granularity, and even lets users write their own interpolators. Relevant example notebooks include: -* https://github.com/creare-com/podpac-examples/blob/master/notebooks/4-advanced/interpolation.ipynb -* https://github.com/creare-com/podpac-examples/blob/master/notebooks/2-combining-data/automatic-interpolation-and-regridding.ipynb -* https://github.com/creare-com/podpac-examples/blob/master/notebooks/examples/drought-monitor/03-data-access-harmonization-processing.ipynb +* [Advanced Interpolation](https://github.com/creare-com/podpac-examples/blob/master/notebooks/4-advanced/interpolation.ipynb) +* [Basic Interpolation](https://github.com/creare-com/podpac-examples/blob/master/notebooks/2-combining-data/automatic-interpolation-and-regridding.ipynb) +* [Drought Monitor Data Access Harmonization Processing](https://github.com/creare-com/podpac-examples/blob/master/notebooks/examples/drought-monitor/03-data-access-harmonization-processing.ipynb) ## Examples Consider a `DataSource` with `lat`, `lon`, `time` coordinates that we will instantiate as: diff --git a/doc/source/wrapping-datasets.md b/doc/source/wrapping-datasets.md index c895ba04c..9dcec61b1 100644 --- a/doc/source/wrapping-datasets.md +++ b/doc/source/wrapping-datasets.md @@ -4,11 +4,11 @@ Wrapping a new dataset is challenging because you have to understand all of the ## Rules 1. When evaluating a node with a set of coordinates: - a. The evaluation coordinates must include ALL of the dimensions present in the source dataset - b. The evaluation coordinates MAY contain additional dimensions NOT present in the source dataset, and the source may ignore these + 1. The evaluation coordinates must include ALL of the dimensions present in the source dataset + 1. The evaluation coordinates MAY contain additional dimensions NOT present in the source dataset, and the source may ignore these 2. When returning data from a data source node: - a. The ORDER of the evaluation coordinates MUST be preserved (see `UnitsDataArray.part_transpose`) - b. Any multi-channel data must be returned using the `output` dimension which is ALWAYS the LAST dimension + 1. The ORDER of the evaluation coordinates MUST be preserved (see `UnitsDataArray.part_transpose`) + 1. Any multi-channel data must be returned using the `output` dimension which is ALWAYS the LAST dimension 3. Nodes should be **lightweight** to instantiate and users should expect *fail on eval*. Easy checks should be performed on initialization, but anything expensive should be delayed. ## Guide @@ -17,8 +17,8 @@ In theory, to wrap a new `DataSource`: 2. Implement a method for opening/accessing the data, or use an existing generic data node and hard-code certain attributes 3. Implement the `get_coordinates(self)` method 4. Implement the `get_data(self, coordinates, coordinates_index)` method - a. `coordinates` is a `podpac.Coordinates` object and it's in the same coordinate system as the data source (i.e. a subset of what comes out of `get_coordinates`) - b. `coordinates_index` is a list (or tuple?) of slices or boolean arrays or index arrays to indexes into the output of `get_coordinates()` to produce `coordinates` that come into this function. + 1. `coordinates` is a `podpac.Coordinates` object and it's in the same coordinate system as the data source (i.e. a subset of what comes out of `get_coordinates`) + 2. `coordinates_index` is a list (or tuple?) of slices or boolean arrays or index arrays to indexes into the output of `get_coordinates()` to produce `coordinates` that come into this function. In practice, the real trick is implementing a compositor to put multiple tiles together to look like a single `DataSource`. We tend to use the `podpac.compositor.OrderedCompositor` node for this task, but it does not handle interpolation between tiles. Instead, see the `podpac.core.compositor.tile_compositor` module. diff --git a/podpac/version.py b/podpac/version.py index a9a24ce40..49d66aa11 100644 --- a/podpac/version.py +++ b/podpac/version.py @@ -17,7 +17,7 @@ ############## MAJOR = 2 MINOR = 2 -HOTFIX = 0 +HOTFIX = 1 ##############