{ "info": { "author": "Anthony Scopatz", "author_email": "scopatz@gmail.com", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python :: 3" ], "description": "# bitemporal-h5\nA generic bitemporal model built on HDF5 (h5py)\n\n## Model\nThe basic model for a bitemporal is an HDF5 dataset that is extensible\nalong a single dimension with named columns and different dtypes for\neach column. In-memory, this will be represented by a numpy structured array.\nWe will call this structure a `Table`, for purposes here.\n\nNote that HDF5 has its own Table data structure in the high-level\ninterface (hdf5-hl). We will not be using the high-level table here for\na couple of reasons. The first is that `h5py` does not support HDF5's\nhigh-level constructs. The second is that we plan on eventually swapping out\nthe value column with a deduplicated cache. Relying on low-level HDF5 constructs\ngrants us this flexibility in the future.\n\nThe columns present in the table are as follows:\n\n* `transaction_id (uint64)`: This is a monotonic integer that represents the\n precise write action that caused this row to be written. Multiple rows may\n be written at the same time, so this value is not unique among rows, though\n presumably all rows with a given transaction id are contiguous in the table.\n This value is zero-indexed. The current largest transaction id should be\n written to the table's attributes as `max_transaction_id` (also uint64).\n Write operations should bump the `max_transaction_id` by one.\n* `transaction_time (datetime64)`: This is a timestamp (sec since epoch). Any metadata\n about the timezones should be stored as a string attribute of the dataset as\n `transaction_time_zone`. This represents the time at which the data was\n recorded by the write operation. All rows with the same `transaction_id` should\n have the same value here.\n* `valid_time (datetime64)`: This is a timestamp (sec since epoch). Any metadata\n about the timetzones should be stored as a string attribute of the dataset as\n `valid_time_zone`. This is the primary axis of the time series. It represents\n the data stored in the `value` column.\n* `value ((I,J,K,...)|)`: This column represents the actual values\n of a time series. This may be an N-dimensional array of any valid dtype.\n It is likely sufficient to restrict ourselves to floats and ints, but the model\n should be general enough to accept any scalar dtypes. Additionally, the typical\n usecase will be for this column to be a scalar float value.\n\nTherefor an example numpy dtype with float values and a shape of `(1, 2, 3)` is:\n\n```python\nnp.dtype([\n ('transaction_id', '>> ds = bth5.open(\"/path/to/file.h5\", \"/path/to/group\")\n>>> in_mem = ds[:]\n>>> in_mem.dtype\nnp.dtype([\n ('valid_time', '>> ds = bth5.open(\"/path/to/file.h5\", \"/path/to/group\")\n>>> ds.raw\n```", "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/quansight/bitemporal-h5", "keywords": "", "license": "BSD-3-Clause", "maintainer": "Quansight", "maintainer_email": "", "name": "bth5", "package_url": "https://pypi.org/project/bth5/", "platform": "Cross Platform", "project_url": "https://pypi.org/project/bth5/", "project_urls": { "Homepage": "https://github.com/quansight/bitemporal-h5" }, "release_url": "https://pypi.org/project/bth5/0.0.3/", "requires_dist": null, "requires_python": "", "summary": "Bitemporal HDF5", "version": "0.0.3" }, "last_serial": 5956555, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "a971997b826d67591ee1df7338944425", "sha256": "32491ba5349a55189d2975265110ad72aa7e8a208d1905741edf0394084fa34f" }, "downloads": -1, "filename": "bth5-0.0.1.tar.gz", "has_sig": false, "md5_digest": "a971997b826d67591ee1df7338944425", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7267, "upload_time": "2019-09-13T18:49:05", "url": "https://files.pythonhosted.org/packages/52/be/aa0160320567d634bfc0dd349284646b31c7492e62277974ac36cc34eda2/bth5-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "8898f3ad762faa8b55a62ace9ec67b20", "sha256": "3dd737c322b18df85f3b0bf030b7b6d87ca9870970336b6339fff9955506fd13" }, "downloads": -1, "filename": "bth5-0.0.2.tar.gz", "has_sig": false, "md5_digest": "8898f3ad762faa8b55a62ace9ec67b20", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9612, "upload_time": "2019-10-10T18:47:52", "url": "https://files.pythonhosted.org/packages/60/d9/02dd4841bebfcb49276b059131047576284ac2d75cceeaa8f96e4120f39e/bth5-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "2979f59f517ad3057122331d41d4f188", "sha256": "4defac62a6d857e12b75cbf6179a6ef3aa652f6cec36bbc81d222d0b0dce6ce2" }, "downloads": -1, "filename": "bth5-0.0.3.tar.gz", "has_sig": false, "md5_digest": "2979f59f517ad3057122331d41d4f188", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9611, "upload_time": "2019-10-10T19:33:34", "url": "https://files.pythonhosted.org/packages/81/7e/80f87068eff0c58361895a6ba15a90362201c4277631c9e3c781f7bb9207/bth5-0.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2979f59f517ad3057122331d41d4f188", "sha256": "4defac62a6d857e12b75cbf6179a6ef3aa652f6cec36bbc81d222d0b0dce6ce2" }, "downloads": -1, "filename": "bth5-0.0.3.tar.gz", "has_sig": false, "md5_digest": "2979f59f517ad3057122331d41d4f188", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9611, "upload_time": "2019-10-10T19:33:34", "url": "https://files.pythonhosted.org/packages/81/7e/80f87068eff0c58361895a6ba15a90362201c4277631c9e3c781f7bb9207/bth5-0.0.3.tar.gz" } ] }