{ "info": { "author": "Jackson Maxfield Brown", "author_email": "jacksonb@alleninstitute.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: Free for non-commercial use", "Natural Language :: English", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# quilt3distribute\n\n[![Build Status](https://github.com/AllenCellModeling/quilt3distribute/workflows/Build/badge.svg)](https://github.com/AllenCellModeling/quilt3distribute/actions)\n[![Documentation](https://github.com/AllenCellModeling/quilt3distribute/workflows/Documentation/badge.svg)](https://AllenCellModeling.github.io/quilt3distribute)\n[![Code Coverage](https://codecov.io/gh/AllenCellModeling/quilt3distribute/branch/master/graph/badge.svg)](https://codecov.io/gh/AllenCellModeling/quilt3distribute)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3382259.svg)](https://doi.org/10.5281/zenodo.3382259)\n
\n\n![dataset packaging and distribution](http://www.allencell.org/uploads/8/1/9/9/81996008/published/automatingaccess-button-3_2.png?1549322257)\n\nPeople commonly work with tabular datasets, people want to share their data, this makes that easier through Quilt3.\n\n---\n\n## Features\n* Automatically determines which files to upload based off CSV headers. (Explicit override available)\n* Simple interface for attaching metadata to each file based off the manifest contents.\n* Groups metadata for files that are referenced multiple times.\n* Validates and runs basic cleaning operations on your dataset manifest CSV.\n* Optionally add license details and usage instructions to your dataset README.\n* Parses README for any referenced files and packages them up as well.\n* Support for adding extra files not contained in the manifest.\n* Constructs an \"associates\" map that is placed into each files metadata for quick navigation around the package.\n* Enforces that the metadata attached to each file is standardized across the package for each file column.\n\n## Quick Start\nConstruct a csv (or pandas dataframe) dataset manifest ([Example](quilt3distribute/tests/data/example.csv)):\n\n| CellId | Structure | 2dReadPath | 3dReadPath |\n|--------|-----------|------------|------------|\n| 1 | lysosome | 2d/1.png | 3d/1.tiff |\n| 2 | laminb1 | 2d/2.png | 3d/2.tiff |\n| 3 | golgi | 2d/3.png | 3d/3.tiff |\n| 4 | myosin | 2d/4.png | 3d/4.tiff |\n\n```python\nfrom quilt3distribute import Dataset\n\n# Create the dataset\nds = Dataset(\n dataset=\"single_cell_examples.csv\",\n name=\"single_cell_examples\",\n package_owner=\"jacksonb\",\n readme_path=\"single_cell_examples.md\"\n)\n\n# Optionally add common additional requirements\nds.add_usage_doc(\"https://docs.quiltdata.com/walkthrough/reading-from-a-package\")\nds.add_license(\"https://www.allencell.org/terms-of-use.html\")\n\n# Optionally indicate column values to use for file metadata\nds.set_metadata_columns([\"CellId\", \"Structure\"])\n\n# Optionally rename the columns on the package level\nds.set_column_names_map({\n \"2dReadPath\": \"images_2d\",\n \"3dReadPath\": \"images_3d\"\n})\n\n# Distribute\npkg = ds.distribute(push_uri=\"s3://quilt-jacksonb\", message=\"Initial dataset example\")\n```\n\n***Returns:***\n```\n(remote Package)\n \u2514\u2500README.md\n \u2514\u2500images_2d\n \u2514\u250003cdf019_1.png\n \u2514\u2500148ddc09_2.png\n \u2514\u25002b2cf361_3.png\n \u2514\u2500312a0367_4.png\n \u2514\u2500images_3d\n \u2514\u2500a0ce6e01_1.tiff\n \u2514\u2500c360072c_2.tiff\n \u2514\u2500d9b55cba_3.tiff\n \u2514\u2500eb29e6b3_4.tiff\n \u2514\u2500metadata.csv\n \u2514\u2500referenced_files\n \u2514\u2500some_file_referenced_by_the_readme.png\n```\n\n***Example Metadata:***\n```python\npkg[\"images_2d\"][\"03cdf019_1.png\"].meta\n```\n```json\n{\n \"CellId\": 1,\n \"Structure\": \"lysosome\",\n \"associates\": {\n \"images_2d\": \"images_2d/03cdf019_1.png\",\n \"images_3d\": \"images_3d/a0ce6e01_1.tiff\"\n }\n}\n```\n\n## Installation\n**Stable Release:** `pip install quilt3distribute`
\n**Development Head:** `pip install git+https://github.com/AllenCellModeling/quilt3distribute.git`\n\n\n### Credits\n\nThis package was created with Cookiecutter. [Original repository](https://github.com/audreyr/cookiecutter)\n\n\n***Free software: Allen Institute Software License***\n\n\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/AllenCellModeling/quilt3distribute", "keywords": "quilt3distribute", "license": "Allen Institute Software License", "maintainer": "", "maintainer_email": "", "name": "quilt3distribute", "package_url": "https://pypi.org/project/quilt3distribute/", "platform": "", "project_url": "https://pypi.org/project/quilt3distribute/", "project_urls": { "Homepage": "https://github.com/AllenCellModeling/quilt3distribute" }, "release_url": "https://pypi.org/project/quilt3distribute/0.1.4/", "requires_dist": [ "markdown2 (>=2.3.7)", "pandas", "python-dateutil (==2.8.0)", "quilt3 (>=3.1.5)", "tabulate (>=0.8.3)", "tqdm (>=4.32.1)", "markdown2 (>=2.3.7) ; extra == 'all'", "pandas ; extra == 'all'", "python-dateutil (==2.8.0) ; extra == 'all'", "quilt3 (>=3.1.5) ; extra == 'all'", "tabulate (>=0.8.3) ; extra == 'all'", "tqdm (>=4.32.1) ; extra == 'all'", "codecov ; extra == 'all'", "flake8 ; extra == 'all'", "numpy ; extra == 'all'", "pytest ; extra == 'all'", "pytest-cov ; extra == 'all'", "pytest-raises ; extra == 'all'", "tifffile ; extra == 'all'", "pytest-runner ; extra == 'all'", "bumpversion (>=0.5.3) ; extra == 'all'", "coverage (>=5.0a4) ; extra == 'all'", "flake8 (>=3.7.7) ; extra == 'all'", "ipython (>=7.5.0) ; extra == 'all'", "m2r (>=0.2.1) ; extra == 'all'", "pytest (>=4.3.0) ; extra == 'all'", "pytest-cov (==2.6.1) ; extra == 'all'", "pytest-raises (>=0.10) ; extra == 'all'", "pytest-runner (>=4.4) ; extra == 'all'", "Sphinx (>=2.0.0b1) ; extra == 'all'", "sphinx-rtd-theme (>=0.1.4) ; extra == 'all'", "tox (>=3.5.2) ; extra == 'all'", "twine (>=1.13.0) ; extra == 'all'", "wheel (>=0.33.1) ; extra == 'all'", "altair ; extra == 'all'", "jupyterlab ; extra == 'all'", "matplotlib ; extra == 'all'", "bumpversion (>=0.5.3) ; extra == 'dev'", "coverage (>=5.0a4) ; extra == 'dev'", "flake8 (>=3.7.7) ; extra == 'dev'", "ipython (>=7.5.0) ; extra == 'dev'", "m2r (>=0.2.1) ; extra == 'dev'", "pytest (>=4.3.0) ; extra == 'dev'", "pytest-cov (==2.6.1) ; extra == 'dev'", "pytest-raises (>=0.10) ; extra == 'dev'", "pytest-runner (>=4.4) ; extra == 'dev'", "Sphinx (>=2.0.0b1) ; extra == 'dev'", "sphinx-rtd-theme (>=0.1.4) ; extra == 'dev'", "tox (>=3.5.2) ; extra == 'dev'", "twine (>=1.13.0) ; extra == 'dev'", "wheel (>=0.33.1) ; extra == 'dev'", "altair ; extra == 'interactive'", "jupyterlab ; extra == 'interactive'", "matplotlib ; extra == 'interactive'", "pytest-runner ; extra == 'setup'", "codecov ; extra == 'test'", "flake8 ; extra == 'test'", "numpy ; extra == 'test'", "pytest ; extra == 'test'", "pytest-cov ; extra == 'test'", "pytest-raises ; extra == 'test'", "tifffile ; extra == 'test'" ], "requires_python": ">=3.6", "summary": "A small wrapper around quilt3 to make distributing manifest style datasets even easier.", "version": "0.1.4", "yanked": false, "yanked_reason": null }, "last_serial": 10704819, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "99451a78203e0f42a0a7f498a43d496b", "sha256": "b96a92b4fb42ed8ba21511b8b627ed554633d0c91da0439b91ba2c74a72b16fd" }, "downloads": -1, "filename": "quilt3distribute-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "99451a78203e0f42a0a7f498a43d496b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6", "size": 21749, "upload_time": "2019-10-22T23:02:06", "upload_time_iso_8601": "2019-10-22T23:02:06.784973Z", "url": "https://files.pythonhosted.org/packages/14/87/e4a5836ee59b21e88461296f2421e8c11feafe8c35a176c91f88716307a8/quilt3distribute-0.1.0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "565ca60916c99967f418aaf594aad87b", "sha256": "15f91221a86a169fa3fed09f8634b5f9bb9155471217ab27b01f234323ca563d" }, "downloads": -1, "filename": "quilt3distribute-0.1.0.tar.gz", "has_sig": false, "md5_digest": "565ca60916c99967f418aaf594aad87b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 24707, "upload_time": "2019-10-22T23:02:08", "upload_time_iso_8601": "2019-10-22T23:02:08.996116Z", "url": "https://files.pythonhosted.org/packages/a5/32/e6a19d836707bbcf8d1b802c56a526d72d498ccf26ef9454c7c69c4cee40/quilt3distribute-0.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "7fb1c32567b5655086721f26ff413d10", "sha256": "cb5a1a03de795e63d852b8a7b6ed62f1bc4c07c51b0567bed2a5141358ce3bb1" }, "downloads": -1, "filename": "quilt3distribute-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7fb1c32567b5655086721f26ff413d10", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6", "size": 21750, "upload_time": "2019-10-24T18:03:04", "upload_time_iso_8601": "2019-10-24T18:03:04.188640Z", "url": "https://files.pythonhosted.org/packages/20/26/4e9291ad87d714043e1b535cfa23633fc858913925aad665362296dc9bdc/quilt3distribute-0.1.1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "904bdbcb1b7cb4fc029e230093756b94", "sha256": "c7b1cbe425317dbc049b9e0cb5ccfda752c5309805c518d4f683b892e0f7a1e8" }, "downloads": -1, "filename": "quilt3distribute-0.1.1.tar.gz", "has_sig": false, "md5_digest": "904bdbcb1b7cb4fc029e230093756b94", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 24482, "upload_time": "2019-10-24T18:03:06", "upload_time_iso_8601": "2019-10-24T18:03:06.065256Z", "url": "https://files.pythonhosted.org/packages/c2/71/6a07fd3ede9a745c7b1534b5950715682ef1b8a6828938e6b40581b037f6/quilt3distribute-0.1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "a0572b05b4c97af6ab0cf124d70ccaea", "sha256": "f1c6b01d24ece4d0c5866402a14239bb238d57fe23d4e7c1475f9ef18f68e2a0" }, "downloads": -1, "filename": "quilt3distribute-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a0572b05b4c97af6ab0cf124d70ccaea", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6", "size": 21810, "upload_time": "2019-11-05T17:21:47", "upload_time_iso_8601": "2019-11-05T17:21:47.228003Z", "url": "https://files.pythonhosted.org/packages/26/03/0b5b09f391366794c34c0e974877a5e6ba1d51e3aa2d87942cb44f6e2425/quilt3distribute-0.1.2-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "379662d35492308153f9a4686a114f5f", "sha256": "11711889aadb41fe20a8c06eefc0ef6123b5c08fe61e3c4dc613993e9a8c1e36" }, "downloads": -1, "filename": "quilt3distribute-0.1.2.tar.gz", "has_sig": false, "md5_digest": "379662d35492308153f9a4686a114f5f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 24576, "upload_time": "2019-11-05T17:21:48", "upload_time_iso_8601": "2019-11-05T17:21:48.474050Z", "url": "https://files.pythonhosted.org/packages/67/0e/7018cb9972dab728aa3f0fffb46cd99d7b8e34f2f7d249aad46448996123/quilt3distribute-0.1.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "c36fcb3e9e0a9f85001f179788406268", "sha256": "fc60168903a4700f2d482c143256a1283d6b9076d0e5e1d6265da95abe89032a" }, "downloads": -1, "filename": "quilt3distribute-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c36fcb3e9e0a9f85001f179788406268", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6", "size": 21810, "upload_time": "2019-11-20T19:21:53", "upload_time_iso_8601": "2019-11-20T19:21:53.772376Z", "url": "https://files.pythonhosted.org/packages/d5/f5/e3724f22c92ed388366798118b704604e55487bb3b1404229ffaee41892a/quilt3distribute-0.1.3-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "0d321466e6cada076481c4f432b60baa", "sha256": "c439245dd447064bd8bcd0852a92adbff082e875e20f3f2ee84324184eab487a" }, "downloads": -1, "filename": "quilt3distribute-0.1.3.tar.gz", "has_sig": false, "md5_digest": "0d321466e6cada076481c4f432b60baa", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 24582, "upload_time": "2019-11-20T19:21:55", "upload_time_iso_8601": "2019-11-20T19:21:55.379312Z", "url": "https://files.pythonhosted.org/packages/e0/d2/b11cfce4a58608ed4e783a4ddba46a3bde2c5e33d03afb7163c8fdf787a3/quilt3distribute-0.1.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "c3ea9132fe3fe9e2d2a2660a0cd6a08f", "sha256": "c8b0a40b0b4f44c9f109f4fbc6cbd11eaccebe4da21949403f3a2d04382aed15" }, "downloads": -1, "filename": "quilt3distribute-0.1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c3ea9132fe3fe9e2d2a2660a0cd6a08f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6", "size": 21843, "upload_time": "2021-06-21T18:54:27", "upload_time_iso_8601": "2021-06-21T18:54:27.335176Z", "url": "https://files.pythonhosted.org/packages/1f/bb/7ab719fd92292cd44747738ba82de73cab94820fb2a27a97bdb92b252e22/quilt3distribute-0.1.4-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2a3e5d75d90d59803ad3386a5d76a2be", "sha256": "e97bd1556b3dfbf668e73c99d93d73ae78a44091b8b6fef07a3c7e87ceea023d" }, "downloads": -1, "filename": "quilt3distribute-0.1.4.tar.gz", "has_sig": false, "md5_digest": "2a3e5d75d90d59803ad3386a5d76a2be", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 24677, "upload_time": "2021-06-21T18:54:29", "upload_time_iso_8601": "2021-06-21T18:54:29.029474Z", "url": "https://files.pythonhosted.org/packages/9e/ae/39436d66dc04715ac52b6c3ded76fbb9afc5c7a51f22d156788ae940a05e/quilt3distribute-0.1.4.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c3ea9132fe3fe9e2d2a2660a0cd6a08f", "sha256": "c8b0a40b0b4f44c9f109f4fbc6cbd11eaccebe4da21949403f3a2d04382aed15" }, "downloads": -1, "filename": "quilt3distribute-0.1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c3ea9132fe3fe9e2d2a2660a0cd6a08f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6", "size": 21843, "upload_time": "2021-06-21T18:54:27", "upload_time_iso_8601": "2021-06-21T18:54:27.335176Z", "url": "https://files.pythonhosted.org/packages/1f/bb/7ab719fd92292cd44747738ba82de73cab94820fb2a27a97bdb92b252e22/quilt3distribute-0.1.4-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2a3e5d75d90d59803ad3386a5d76a2be", "sha256": "e97bd1556b3dfbf668e73c99d93d73ae78a44091b8b6fef07a3c7e87ceea023d" }, "downloads": -1, "filename": "quilt3distribute-0.1.4.tar.gz", "has_sig": false, "md5_digest": "2a3e5d75d90d59803ad3386a5d76a2be", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 24677, "upload_time": "2021-06-21T18:54:29", "upload_time_iso_8601": "2021-06-21T18:54:29.029474Z", "url": "https://files.pythonhosted.org/packages/9e/ae/39436d66dc04715ac52b6c3ded76fbb9afc5c7a51f22d156788ae940a05e/quilt3distribute-0.1.4.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }