{ "info": { "author": "CNES/CLS", "author_email": "fbriol@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Operating System :: MacOS", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Scientific/Engineering :: Physics" ], "description": "[![Build Status](https://dev.azure.com/fbriol/pangeo-pyinterp/_apis/build/status/CNES.pangeo-pyinterp?branchName=master)](https://dev.azure.com/fbriol/pangeo-pyinterp/_build/latest?definitionId=2&branchName=master)\n[![conda](https://anaconda.org/conda-forge/pyinterp/badges/installer/conda.svg?service=github)](https://www.anaconda.com/distribution/)\n[![platforms](https://anaconda.org/conda-forge/pyinterp/badges/platforms.svg?service=github)](https://anaconda.org/conda-forge/pyinterp)\n[![latest-release-date](https://anaconda.org/conda-forge/pyinterp/badges/latest_release_date.svg?service=github)](https://github.com/CNES/pangeo-pyinterp/commits/master)\n[![license](https://anaconda.org/conda-forge/pyinterp/badges/license.svg?service=github)](https://opensource.org/licenses/BSD-3-Clause)\n[![Binder](https://binder.pangeo.io/badge_logo.svg)](https://binder.pangeo.io/v2/gh/CNES/pangeo-pyinterp/master?filepath=notebooks)\n\n\n# pangeo-pyinterp\nPython library for optimized geo-referenced interpolation.\n\n## About\nThe motivation of this project is to provide tools for interpolating\ngeo-referenced data used in the field of geosciences. There are other libraries\nthat cover this problem, but written entirely in Python, the performance of\nthese projects was not quite sufficient for our needs. That is why this project\nwas created.\n\nThis first version can interpolate 2D fields using `bivariate` and `bicubic`\ninterpolators, 3D fields using `trivariate` interpolators and `unstructured grid`.\n\nThe library core is written in C++ using the [Boost C++\nLibararies](https://www.boost.org/), [Eigen3](http://eigen.tuxfamily.org/),\n[GNU Scientific Library](https://www.gnu.org/software/gsl/) and\n[pybind11](https://github.com/pybind/pybind11/) libraries.\n\nThis software also uses [CMake](https://cmake.org/) to configure the project\nand [Googletest](https://github.com/google/googletest) to perform unit testing\nof the library kernel.\n\n## Fill undefined values\n\nThe undefined values in the grids do not allow interpolation of values located\nin the neighborhood. This behavior is a concern when you need to interpolate\nvalues near the mask of some fields. The library provides utilities to fill the\nundefined values:\n\n* `loess` to fill the undefined values on the boundary between the defined/undefined\n values using local regression.\n* `gauss_seidel` to fill all undefined values in a grid using the Gauss-Seidel\n method by relaxation.\n\n## Geographic indexers\n\n### N-Dimensional Grids\n\nN-dimensional grid is a grid defined by a matrix, in a 2D space, by a cube in a\n3D space, etc. Each dimension of the grid is associated with a vector\ncorresponding to its coordinates or axes. Axes are used to locate a pixel in\nthe grid from the coordinates of a point. These axes are either:\n\n* *regular*: latitudes are defined by a vector of 181 values spaced a degree\n from -90 to 90 degrees;\n* *irregular*: latitudes are represented by a vector of 109 values\n irregularly spaced from -90 to 89.940374 degrees.\n\nThese objects are manipulated by the class `pyinterp.core.Axis` which\nwill choose, according to the definition of the axis, the best implementation.\nThis object will allow you to find the two indexes framing a given value. This\noperating mode allows better performance when searching for a regular axis (a\nsimple calculation allows you to immediately find the index of a point) while\nin the case of an irregular axis, the search will be performed using a binary\nsearch.\n\nFinally, this object is able to define a circular axis from a vector in order\nto correctly locate a value on the circle. This is the type of axis that will\nbe used when handling longitudes.\n\n### Unstructured Grids\n\nIn the case of unstructured grids, the index used is a *R\\*Tree*. These trees\nhave better performance than the *KDTree* generally found in Python library\nimplementations.\n\nThe tree used here is the implementation provided by the [C++ Boost\nlibrary](https://www.boost.org/doc/libs/1_70_0/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree.html).\n\nAn adaptation has been introduced to effectively address spherical equatorial\ncoordinates. Although the Boost library allows these coordinates to be\nmanipulated natively, but the performance is lower than in the case of a\nCartesian space. Thus, we have chosen to implement a conversion of Longitude\nLatitude Altitude (*LLA*) coordinates into Earth-Centered, Earth-Fixed (*ECEF*)\ncoordinates in a transparent way for the user to ensure that we are able to\npreserve good performance. The disadvantage of this implementation is that it\nrequires a little more memory, as one more element must be used to index the\nvalue of the Cartesian space.\n\nThe management of the *LLA*/*ECEF* coordinate conversion is managed to use the\n[Olson, D.K.](https://ieeexplore.ieee.org/document/481290) algorithm. It has\nexcellent performance with an accuracy of 1e-8 meters for altitude.", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/CNES/pangeo-pyinterp", "keywords": "", "license": "BSD License", "maintainer": "", "maintainer_email": "", "name": "pyinterp", "package_url": "https://pypi.org/project/pyinterp/", "platform": "POSIX", "project_url": "https://pypi.org/project/pyinterp/", "project_urls": { "Homepage": "https://github.com/CNES/pangeo-pyinterp" }, "release_url": "https://pypi.org/project/pyinterp/0.0.6/", "requires_dist": null, "requires_python": ">=3.6", "summary": "Interpolation of geo-referenced data for Python.", "version": "0.0.6" }, "last_serial": 5932898, "releases": { "0.0.4": [ { "comment_text": "", "digests": { "md5": "449a353c47d3b1894a1faaa4974da779", "sha256": "db6daf1e9300ea9b7be7a917df81cee32f1a77021700affde3f8270b68758e75" }, "downloads": -1, "filename": "pyinterp-0.0.4.tar.gz", "has_sig": false, "md5_digest": "449a353c47d3b1894a1faaa4974da779", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 5730604, "upload_time": "2019-09-16T10:00:54", "url": "https://files.pythonhosted.org/packages/32/e8/4f7bf5af1d93cf899b165961ec3bb3a72a20fadfdbe05a8de99d63ebf03f/pyinterp-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "a4c0d982f9bd3896755201595ad0e640", "sha256": "dd62ac89846b76db92326eb8accbe0a12e195e2b44ba53336ebba984511f1869" }, "downloads": -1, "filename": "pyinterp-0.0.5.tar.gz", "has_sig": false, "md5_digest": "a4c0d982f9bd3896755201595ad0e640", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 5413725, "upload_time": "2019-09-19T17:28:32", "url": "https://files.pythonhosted.org/packages/1d/90/3c3a3acc046b9b6db68cff0868ef715bcadb701c96ad80f7e7f7f94fd960/pyinterp-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "7d674d8cf7aacd148969a3f4e860b45d", "sha256": "5bda74b2580668895143c19bda8b9bf51d24e8fb26066f6f0aadbcdd9579856f" }, "downloads": -1, "filename": "pyinterp-0.0.6.tar.gz", "has_sig": false, "md5_digest": "7d674d8cf7aacd148969a3f4e860b45d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 5256929, "upload_time": "2019-10-05T19:23:13", "url": "https://files.pythonhosted.org/packages/bf/1f/4f1007dee63d7d6a182093cbea139be49b55a8e7b74a43512d33def15df2/pyinterp-0.0.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7d674d8cf7aacd148969a3f4e860b45d", "sha256": "5bda74b2580668895143c19bda8b9bf51d24e8fb26066f6f0aadbcdd9579856f" }, "downloads": -1, "filename": "pyinterp-0.0.6.tar.gz", "has_sig": false, "md5_digest": "7d674d8cf7aacd148969a3f4e860b45d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 5256929, "upload_time": "2019-10-05T19:23:13", "url": "https://files.pythonhosted.org/packages/bf/1f/4f1007dee63d7d6a182093cbea139be49b55a8e7b74a43512d33def15df2/pyinterp-0.0.6.tar.gz" } ] }