{ "info": { "author": "Max Burnette", "author_email": "mburnet2@illinois.edu", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Science/Research", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Programming Language :: Python :: 2.7", "Topic :: Database", "Topic :: Scientific/Engineering :: Bio-Informatics", "Topic :: Scientific/Engineering :: GIS", "Topic :: Utilities" ], "description": "terrautils\n==========\n\nPython library for interfacing TERRA-REF science algorithms with the\nTERRA REF databases and workflow.\n\nThis package provides standard functions for interacting with TERRA-REF\nservices and data.\n\nTwo primary use cases: \\* interactive exploration of the TERRA REF\ndatabase and file system. \\* development of the TERRA REF pipeline.\n\nInstallation\n------------\n\nThe easiest way install terrautils is using pip and pulling from PyPI.::\n\n\n pip install terrautils\n\nBecause this system is still under rapid development, you may need a\nspecific branch from the terrautils repository. You can either clone the\nrepository from GitHub and install locally with following commands::\n\n git clone https://github.com/terraref/terrautils\n git checkout \n cd terrautils\n pip install .\n\nOr you can install directly from GitHub with a single command::\n\n.. code:: sh\n\n pip install https://github.com/terraref/terrautils/archive/.zip\n\n**Note:** the terrautils package depends on the GDAL library and tools.\nInstalling GDAL can most easily be accomplished at the operating system\nlevel using packages designed for your distribution. If you see errors\nabout failing to import osgeo you need to make ensure GDAL and its\npython wrappers are installed. Terrautils will work with both GDAL v1.11\nand v2.2 so whichever is available for your system should be fine.\n\nFunctions\n---------\n\n**betydb.py** functions for interacting with BETYdb, the trait and\nagronomic metadata database\n\n- get_sites() \u2013 Gets list of stations from BETYdb, filtered by city or\n sitename prefix if provided.\n- submit_traits() \u2013 Submit a CSV containing traits to the BETYdb API.\n- get_sitename_boundary() \u2013 Retrieve the clip boundary dynamically from\n betyDB API given sitename and turns the obtained json data into a\n geojson polygon.\n\n**extractors.py** utilities for interacting with the TERRA REF pipeline\n\n- build_metadata() \u2013 Construct extractor metadata object ready for\n submission to a Clowder file/dataset.\n- get_output_directory() \u2013 Determine output directory path given root\n path and dataset name.\n- get_output_filename() \u2013 Determine output filename given input\n information.\n- is_latest_file() \u2013 Check whether the extractor-triggering file is the\n latest file in the dataset.\n- load_json_file() \u2013 Load contents of a .json file on disk into a JSON\n object.\n- error_notification() \u2013 Send an error message notification, e.g. to\n Slack.\n- log_to_influxdb() \u2013 Send extractor job detail summary to InfluxDB\n instance.\n- trigger_file_extractions_by_dataset() \u2013 Manually trigger an\n extraction on all files in a dataset.\n- trigger_dataset_extractions_by_collection() \u2013 Manually trigger an\n extraction on all datasets in a collection.\n- _search_for_key() \u2013 Check for presence of any key variants in\n metadata. Does basic capitalization check.\n \n**formats.py** utilities for converting numpy arrays into consistently formatted raster images and data products\n\n- create_geotiff() \u2013 Generate output GeoTIFF file given a numpy pixel\n array and GPS boundary.\n- create_netcdf() \u2013 Generate output netCDF file given an input numpy\n pixel array.\n- create_image() \u2013 Generate output JPG/PNG file given an input numpy\n pixel array.\n\n**gdal.py** gis utilities for raster datasets\n\n- array_to_image() \u2013 Converts a gdalnumeric array to a Python Imaging\n Library (PIL) Image.\n- image_to_array() \u2013 Converts a Python Imaging Library (PIL) array to a\n gdalnumeric image.\n- world_to_pixel(geo_matrix, x, y) \u2013 Uses a gdal geomatrix\n (gdal.GetGeoTransform()) to calculate the pixel location of a\n geospatial coordinate.\n- clip_raster(rast_path, features_path, gt=None, nodata=-9999) \u2013 Clip a\n raster and return the clipped result in form of numpy array.\n- get_raster_extents(fname) \u2013 Calculates the extent and the center of\n the given raster.\n\n**metadata.py** utilities for querying and processing sensor and image\nmetadata\n\n- clean_metadata() \u2013 Returns a standarized metadata object.\n- get_terraref_metadata() \u2013 Combines cleaned metadata with fixed\n metadata.\n- get_extractor_metadata() \u2013 Returns Clowder extractor metadata.\n- get_sensor_fixed_metadata() \u2013 Returns fixed metadata from Clowder.\n- calculate_scan_time() \u2013\n\n**sensors.py**\n\n- get_sensors(station) \u2013 Get all sensors for a given station.\n- get_sensor_filename(station, sensor, date, mode=\u201cfull\u201d) \u2013 Gets the\n filename for the image for the given date, sensor and station from\n the database. If the mode is full, choose the full resolution image,\n otherwise the reduced resolution version.\n- get_sitename(station, date, range_=None, column=None) \u2013 Returns a\n full sitename for the plot (or fullfield image) corresponding to the\n given station, date, range and column.\n- check_site(station) \u2013 Checks for valid station given the station\n name, and return its path in the file system.\n- check_sensor(station, sensor, date=None) \u2013 Checks for valid sensor\n with optional date, and return its path in the file system.\n- get_sensor_product(site, sensor) \u2013 Returns the downloadable product\n for each site-sensor pair.\n- get_attachment_name(site, sensor, date, product) \u2013 Encodes site,\n sensor, and date to create a unique attachment name.\n- plot_attachment_name(sitename, sensor, date, product) \u2013 Encodes\n sitename, sensor, and date to create a unqiue attachment name.\n\n**spatial.py** gis helper functions\n\n- calculate_bounding_box() \u2013 Given a set of GPS boundaries, return\n array of 4 vertices representing the polygon.\n- calculate_centroid() \u2013 Given a set of GPS boundaries, return lat/lon\n of centroid.\n- calculate_gps_bounds() \u2013 Extract bounding box geometry, depending on\n sensor type.\n- geom_from_metadata() \u2013 Parse location elements from metadata.\n- _get_bounding_box_with_formula() \u2013 Convert scannerbox center\n position & sensor field-of-view to actual bound", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://terraref.org", "keywords": "terraref,clowder,field crop,phenomics,computer vision,remote sensing", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "terrautils", "package_url": "https://pypi.org/project/terrautils/", "platform": "", "project_url": "https://pypi.org/project/terrautils/", "project_urls": { "Homepage": "https://terraref.org" }, "release_url": "https://pypi.org/project/terrautils/1.5.4/", "requires_dist": null, "requires_python": "", "summary": "TERRA-REF workflow utilities", "version": "1.5.4" }, "last_serial": 5820284, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "3d0dfb6c2d504964fb7ea1b86b550be8", "sha256": "9252e476b1639e7a818d5ed35aee08d609f4785532e98c969ad1f298a8518dbf" }, "downloads": -1, "filename": "terrautils-1.0.0-py2.7.egg", "has_sig": false, "md5_digest": "3d0dfb6c2d504964fb7ea1b86b550be8", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 81571, "upload_time": "2018-03-30T14:27:04", "url": "https://files.pythonhosted.org/packages/fc/bd/697416fdb6a0cd8f43de50024921e97de48535c5229c090e026bf6a080ba/terrautils-1.0.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "d11d6910fa5f5d33266045db820f49c1", "sha256": "df38638fab331239e928d5378cfe23e3ad0fb1a0cd92c02a09346bd3962bf2a8" }, "downloads": -1, "filename": "terrautils-1.0.0-py2-none-any.whl", "has_sig": false, "md5_digest": "d11d6910fa5f5d33266045db820f49c1", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 38306, "upload_time": "2018-02-26T16:12:58", "url": "https://files.pythonhosted.org/packages/9d/19/5509af0905fb0854e649a0bcae2207dbed15f72080e93de78a2cf79b1479/terrautils-1.0.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "476ba8c8bcbcfb886054df40c09ea31a", "sha256": "38fd0f8480e045ed77b34bd27ef3bc2dec00260def265c8d28b59bc60465a137" }, "downloads": -1, "filename": "terrautils-1.0.0.tar.gz", "has_sig": false, "md5_digest": "476ba8c8bcbcfb886054df40c09ea31a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34180, "upload_time": "2018-02-26T16:13:00", "url": "https://files.pythonhosted.org/packages/64/1d/d539187b500921b175d11e72e0c1f23ad6278a89d85e71f9fe4cd0d76383/terrautils-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "1fb5d5e7a2862d97539d6db4242f7ea9", "sha256": "98e649b5b275c686ac98a8ef94a43dbb1277d2a23cf13a7ffc1d0079d8c0e44a" }, "downloads": -1, "filename": "terrautils-1.1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "1fb5d5e7a2862d97539d6db4242f7ea9", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 37988, "upload_time": "2018-03-13T05:20:24", "url": "https://files.pythonhosted.org/packages/b6/6e/71f06d3dcc45e8d87b968ae67bb192c8ae71f908215a5c285f324eb2f07d/terrautils-1.1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c2eb85574d2875b29d99bab9fad4c498", "sha256": "d7c4300ba23b432c246b8be5e1791e58f176b709ad542b27ceb35c22ed9441a7" }, "downloads": -1, "filename": "terrautils-1.1.0.tar.gz", "has_sig": false, "md5_digest": "c2eb85574d2875b29d99bab9fad4c498", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34335, "upload_time": "2018-03-13T05:20:32", "url": "https://files.pythonhosted.org/packages/c5/76/ff23c2db2253c14e41697ff918e3f67a2ed9763f11ddf893c0b82836bd10/terrautils-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "19504275f95ef080ccabf061c1366c80", "sha256": "201f53ab230853f4c78431efa81e612462ca6c0b16a51f2a93401876d8a61495" }, "downloads": -1, "filename": "terrautils-1.1.1-py2.7.egg", "has_sig": false, "md5_digest": "19504275f95ef080ccabf061c1366c80", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 164088, "upload_time": "2018-03-30T14:27:06", "url": "https://files.pythonhosted.org/packages/fa/76/a2850697a822210dd4500de04b50ac8aab988cf0502a832d385902b4f168/terrautils-1.1.1-py2.7.egg" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "cc32bc943db71d7ad40f5b31ad6f61d6", "sha256": "1b897ab9eaf9bc6a452443bef8e013bfc06cf1b84160e244ae25a864ddc0b802" }, "downloads": -1, "filename": "terrautils-1.3.0.tar.gz", "has_sig": false, "md5_digest": "cc32bc943db71d7ad40f5b31ad6f61d6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38421, "upload_time": "2018-09-10T13:50:53", "url": "https://files.pythonhosted.org/packages/a1/47/46e0a4a6795e421c2b066b4bbf7a99d114abbc1add41ee3d57d3bea94c49/terrautils-1.3.0.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "22ed73a057e6611a06a4148970467394", "sha256": "44c640977c658418a1aebf6ea23c29a2e5bb422e0ae43a0d6fb9a1863713e312" }, "downloads": -1, "filename": "terrautils-1.4.0-py2.7.egg", "has_sig": false, "md5_digest": "22ed73a057e6611a06a4148970467394", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 172665, "upload_time": "2019-03-06T15:06:10", "url": "https://files.pythonhosted.org/packages/52/9f/53093e5da255e66dbfd52e6a71726e4ffa793d9f72c1b5a3e014bf8fd75a/terrautils-1.4.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "7fdf5247902753aed428910a1cc2445a", "sha256": "d5ed96bc51c7ef45ee615b5f4e38dded6b8b1b076ca2a7e0b368c44c9fdde8a8" }, "downloads": -1, "filename": "terrautils-1.4.0.tar.gz", "has_sig": false, "md5_digest": "7fdf5247902753aed428910a1cc2445a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41630, "upload_time": "2019-03-06T15:06:12", "url": "https://files.pythonhosted.org/packages/3a/b1/fc65728d8b461a1d54b14dd43784d15d6fdd535ce9b7ea4f36a0b7389a22/terrautils-1.4.0.tar.gz" } ], "1.5.0": [ { "comment_text": "", "digests": { "md5": "8b321e6f3ae9e12146e33d54258f90bb", "sha256": "41e2f6060eabc89b926ba221ca615c63a5290390380c2287af2ebbd2ab6bd016" }, "downloads": -1, "filename": "terrautils-1.5.0.tar.gz", "has_sig": false, "md5_digest": "8b321e6f3ae9e12146e33d54258f90bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50874, "upload_time": "2019-06-18T18:58:38", "url": "https://files.pythonhosted.org/packages/36/89/96a39bdfc3b016449f0a74eaf95c4c5a2163dc19278dab2541259ce230a9/terrautils-1.5.0.tar.gz" } ], "1.5.1": [ { "comment_text": "", "digests": { "md5": "6cef8f49f9e8ea1b2017fdd1ec1c815b", "sha256": "896c5711d15ce2a2054cde239979f7b82629b4d6270eeeb024e58a847b0817df" }, "downloads": -1, "filename": "terrautils-1.5.1.tar.gz", "has_sig": false, "md5_digest": "6cef8f49f9e8ea1b2017fdd1ec1c815b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50869, "upload_time": "2019-06-25T13:52:38", "url": "https://files.pythonhosted.org/packages/f1/f7/f1d59c4259d310dde860d682bff6257d613e34d30a4aca126f93dac9525a/terrautils-1.5.1.tar.gz" } ], "1.5.2": [ { "comment_text": "", "digests": { "md5": "4bbd1572906240b679f648d8d784f66a", "sha256": "c4d9d0ac0e3f08fb7ba77bd57b221639517a2a0e042b64cfa9d10f341a0c5d36" }, "downloads": -1, "filename": "terrautils-1.5.2.tar.gz", "has_sig": false, "md5_digest": "4bbd1572906240b679f648d8d784f66a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51834, "upload_time": "2019-06-25T13:56:10", "url": "https://files.pythonhosted.org/packages/c9/95/bbe5c4a61ce04b70c53fd616bbe7d1879ad65e4aadc17b5ae75364738157/terrautils-1.5.2.tar.gz" } ], "1.5.3": [ { "comment_text": "", "digests": { "md5": "90b70d78ae07b0884f77a5cff5696247", "sha256": "43cb48bf1265745ef24d2535861e0e3f4486c693e77fd700e9c416da38dc25ce" }, "downloads": -1, "filename": "terrautils-1.5.3.tar.gz", "has_sig": false, "md5_digest": "90b70d78ae07b0884f77a5cff5696247", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51839, "upload_time": "2019-06-25T14:39:40", "url": "https://files.pythonhosted.org/packages/48/29/92425ccbc4a6eef2174170e9d2efed29dfda729ddb106852840e260c95e9/terrautils-1.5.3.tar.gz" } ], "1.5.4": [ { "comment_text": "", "digests": { "md5": "c41ddcca81f65ad15b35f4ff477929f6", "sha256": "5896071ad0a17705d431549f7db1cf2d898f511e328dbf64b7a5fd8e89632acf" }, "downloads": -1, "filename": "terrautils-1.5.4.tar.gz", "has_sig": false, "md5_digest": "c41ddcca81f65ad15b35f4ff477929f6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51826, "upload_time": "2019-09-12T12:58:04", "url": "https://files.pythonhosted.org/packages/eb/7a/2de8fdd565f16f4bd4439e4d51d538ae5d37fb6c0e64ff6cf58041f1965e/terrautils-1.5.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c41ddcca81f65ad15b35f4ff477929f6", "sha256": "5896071ad0a17705d431549f7db1cf2d898f511e328dbf64b7a5fd8e89632acf" }, "downloads": -1, "filename": "terrautils-1.5.4.tar.gz", "has_sig": false, "md5_digest": "c41ddcca81f65ad15b35f4ff477929f6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51826, "upload_time": "2019-09-12T12:58:04", "url": "https://files.pythonhosted.org/packages/eb/7a/2de8fdd565f16f4bd4439e4d51d538ae5d37fb6c0e64ff6cf58041f1965e/terrautils-1.5.4.tar.gz" } ] }