summaryrefslogtreecommitdiff
path: root/python-tiled.spec
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-05-17 04:49:14 +0000
committerCoprDistGit <infra@openeuler.org>2023-05-17 04:49:14 +0000
commitb69db7c1448ab693cc2b7cf5694c481454b9fbeb (patch)
tree3316e6899ab4d94efb59176437243f8d19bd6741 /python-tiled.spec
parentdb2c2ca2a9a0c45edf604d2912d55813fe6c165f (diff)
automatic import of python-tiled
Diffstat (limited to 'python-tiled.spec')
-rw-r--r--python-tiled.spec786
1 files changed, 786 insertions, 0 deletions
diff --git a/python-tiled.spec b/python-tiled.spec
new file mode 100644
index 0000000..1197ae2
--- /dev/null
+++ b/python-tiled.spec
@@ -0,0 +1,786 @@
+%global _empty_manifest_terminate_build 0
+Name: python-tiled
+Version: 0.1.0a91
+Release: 1
+Summary: Tile-based access to SciPy/PyData data structures over the web in many formats
+License: BSD (3-clause)
+URL: https://github.com/bluesky/tiled
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/07/2e/6ac953e63c210aad93613a9f57cef01b80009e57032c16013a07df7a81ef/tiled-0.1.0a91.tar.gz
+BuildArch: noarch
+
+Requires: python3-aiofiles
+Requires: python3-aiosqlite
+Requires: python3-alembic
+Requires: python3-anyio
+Requires: python3-appdirs
+Requires: python3-blosc
+Requires: python3-cachetools
+Requires: python3-cachey
+Requires: python3-click
+Requires: python3-dask
+Requires: python3-dask[array]
+Requires: python3-dask[dataframe]
+Requires: python3-entrypoints
+Requires: python3-fastapi
+Requires: python3-h5netcdf
+Requires: python3-h5py
+Requires: python3-heapdict
+Requires: python3-httpx
+Requires: python3-jinja2
+Requires: python3-jmespath
+Requires: python3-jsonschema
+Requires: python3-lz4
+Requires: python3-msgpack
+Requires: python3-ndindex
+Requires: python3-numpy
+Requires: python3-openpyxl
+Requires: python3-orjson
+Requires: python3-packaging
+Requires: python3-pandas
+Requires: python3-pillow
+Requires: python3-prometheus-client
+Requires: python3-psutil
+Requires: python3-pyarrow
+Requires: python3-pydantic
+Requires: python3-dateutil
+Requires: python3-jose[cryptography]
+Requires: python3-multipart
+Requires: python3-pyyaml
+Requires: python3-sparse
+Requires: python3-sqlalchemy
+Requires: python3-starlette
+Requires: python3-tifffile
+Requires: python3-toolz
+Requires: python3-typer
+Requires: python3-uvicorn[standard]
+Requires: python3-watchgod
+Requires: python3-xarray
+Requires: python3-zstandard
+Requires: python3-appdirs
+Requires: python3-blosc
+Requires: python3-click
+Requires: python3-dask[array]
+Requires: python3-dask[dataframe]
+Requires: python3-entrypoints
+Requires: python3-heapdict
+Requires: python3-httpx
+Requires: python3-jsonschema
+Requires: python3-lz4
+Requires: python3-msgpack
+Requires: python3-ndindex
+Requires: python3-numpy
+Requires: python3-pandas
+Requires: python3-pyarrow
+Requires: python3-pyyaml
+Requires: python3-sparse
+Requires: python3-typer
+Requires: python3-xarray
+Requires: python3-zstandard
+Requires: python3-aiofiles
+Requires: python3-aiosqlite
+Requires: python3-alembic
+Requires: python3-anyio
+Requires: python3-appdirs
+Requires: python3-blosc
+Requires: python3-cachetools
+Requires: python3-cachey
+Requires: python3-click
+Requires: python3-dask
+Requires: python3-dask[array]
+Requires: python3-dask[dataframe]
+Requires: python3-entrypoints
+Requires: python3-fastapi
+Requires: python3-h5netcdf
+Requires: python3-h5py
+Requires: python3-heapdict
+Requires: python3-httpx
+Requires: python3-jinja2
+Requires: python3-jmespath
+Requires: python3-jsonschema
+Requires: python3-lz4
+Requires: python3-msgpack
+Requires: python3-ndindex
+Requires: python3-numpy
+Requires: python3-openpyxl
+Requires: python3-orjson
+Requires: python3-packaging
+Requires: python3-pandas
+Requires: python3-pillow
+Requires: python3-prometheus-client
+Requires: python3-psutil
+Requires: python3-pyarrow
+Requires: python3-pydantic
+Requires: python3-dateutil
+Requires: python3-jose[cryptography]
+Requires: python3-multipart
+Requires: python3-pyyaml
+Requires: python3-sparse
+Requires: python3-sqlalchemy
+Requires: python3-starlette
+Requires: python3-tifffile
+Requires: python3-toolz
+Requires: python3-typer
+Requires: python3-uvicorn[standard]
+Requires: python3-watchgod
+Requires: python3-xarray
+Requires: python3-zstandard
+Requires: python3-h5py
+Requires: python3-h5netcdf
+Requires: python3-openpyxl
+Requires: python3-pillow
+Requires: python3-tifffile
+Requires: python3-appdirs
+Requires: python3-click
+Requires: python3-entrypoints
+Requires: python3-heapdict
+Requires: python3-httpx
+Requires: python3-jsonschema
+Requires: python3-msgpack
+Requires: python3-pyyaml
+Requires: python3-typer
+Requires: python3-aiofiles
+Requires: python3-aiosqlite
+Requires: python3-alembic
+Requires: python3-anyio
+Requires: python3-appdirs
+Requires: python3-cachey
+Requires: python3-cachetools
+Requires: python3-click
+Requires: python3-dask
+Requires: python3-fastapi
+Requires: python3-httpx
+Requires: python3-jinja2
+Requires: python3-jmespath
+Requires: python3-jsonschema
+Requires: python3-msgpack
+Requires: python3-orjson
+Requires: python3-packaging
+Requires: python3-psutil
+Requires: python3-prometheus-client
+Requires: python3-pydantic
+Requires: python3-dateutil
+Requires: python3-jose[cryptography]
+Requires: python3-multipart
+Requires: python3-pyyaml
+Requires: python3-sqlalchemy
+Requires: python3-starlette
+Requires: python3-toolz
+Requires: python3-typer
+Requires: python3-uvicorn[standard]
+Requires: python3-watchgod
+Requires: python3-aiofiles
+Requires: python3-aiosqlite
+Requires: python3-alembic
+Requires: python3-anyio
+Requires: python3-appdirs
+Requires: python3-blosc
+Requires: python3-cachetools
+Requires: python3-cachey
+Requires: python3-click
+Requires: python3-dask
+Requires: python3-dask[array]
+Requires: python3-dask[dataframe]
+Requires: python3-fastapi
+Requires: python3-httpx
+Requires: python3-jinja2
+Requires: python3-jmespath
+Requires: python3-jsonschema
+Requires: python3-lz4
+Requires: python3-msgpack
+Requires: python3-ndindex
+Requires: python3-numpy
+Requires: python3-orjson
+Requires: python3-packaging
+Requires: python3-pandas
+Requires: python3-prometheus-client
+Requires: python3-psutil
+Requires: python3-pyarrow
+Requires: python3-pydantic
+Requires: python3-dateutil
+Requires: python3-jose[cryptography]
+Requires: python3-multipart
+Requires: python3-pyyaml
+Requires: python3-sparse
+Requires: python3-sqlalchemy
+Requires: python3-starlette
+Requires: python3-toolz
+Requires: python3-typer
+Requires: python3-uvicorn[standard]
+Requires: python3-watchgod
+Requires: python3-xarray
+Requires: python3-zstandard
+
+%description
+# Tiled
+
+*Disclaimer: This is very early work, still in the process of defining scope.*
+
+Tiled is a **data access** service for data-aware portals and data science tools.
+Tiled has a Python client and integrates naturally with Python data science
+libraries, but nothing about the service is Python-specific; it also works from
+a web browser or any Internet-connected program.
+
+Tiled’s service can sit atop databases, filesystems, and/or remote
+services to enable **search** and **structured, chunkwise access to data** in an
+extensible variety of appropriate formats, providing data in a consistent
+structure regardless of the format the data happens to be stored in at rest. The
+natively-supported formats span slow but widespread interchange formats (e.g.
+CSV, JSON) and fast, efficient ones (e.g. C buffers, Apache Arrow and Parquet).
+Tiled enables slicing and sub-selection to read and transfer only the data of
+interest, and it enables parallelized download of many chunks at once. Users can
+access data with very light software dependencies and fast partial downloads.
+
+Tiled puts an emphasis on **structures** rather than formats, including:
+
+* N-dimensional strided arrays (i.e. numpy-like arrays)
+* Sparse arrays
+* Tabular data (e.g. pandas-like "dataframes")
+* Hierarchical structures thereof (e.g. xarrays, HDF5-compatible structures like NeXus)
+
+Tiled implements extensible **access control enforcement** based on web security
+standards, similar to JuptyerHub. Like Jupyter, Tiled can be used by a single
+user or deployed as a shared public or private resource. Tiled can be configured
+to use third party services for login, such as Google, ORCID. or any OIDC
+or SAML authentication providers.
+
+Tiled facilitates **client-side caching** in a standard web browser or in
+Tiled's Python client, making efficient use of bandwidth and enabling an offline
+"airplane mode." It uses **service-side caching** of "hot" datasets and
+resources to expedite both repeat requests (e.g. when several users are requesting
+the same chunks of data) and distinct requests for different parts of the same
+dataset (e.g. when the user is requesting various slices or columns from a
+dataset).
+
+| Distribution | Where to get it |
+| -------------- | ------------------------------------------------------------ |
+| PyPI | `pip install tiled` |
+| Conda | Coming Soon |
+| Source code | [github.com/bluesky/tiled](https://github.com/bluesky/tiled) |
+| Documentation | [blueskyproject.io/tiled](https://blueskyproject.io/tiled) |
+
+## Example
+
+In this example, we'll serve of a collection of data that is generated in
+memory. Alternatively, it could be read on demand from a directory of files,
+network resource, database, or some combination of these.
+
+```
+tiled serve demo
+# equivalent to:
+# tiled serve pyobject --public tiled.examples.generated:tree
+```
+
+And then access the data efficiently via the Python client, a web browser, or
+any HTTP client.
+
+```python
+>>> from tiled.client import from_uri
+
+>>> client = from_uri("http://localhost:8000")
+
+>>> client
+<Node {'short_table', 'long_table', 'structured_data', ...} ~10 entries>
+
+>>> list(client)
+'big_image',
+ 'small_image',
+ 'tiny_image',
+ 'tiny_cube',
+ 'tiny_hypercube',
+ 'low_entropy',
+ 'high_entropy',
+ 'short_table',
+ 'long_table',
+ 'labeled_data',
+ 'structured_data']
+
+>>> client['medium_image']
+<ArrayClient>
+
+>>> client['medium_image'][:]
+array([[0.49675483, 0.37832119, 0.59431287, ..., 0.16990737, 0.5396537 ,
+ 0.61913812],
+ [0.97062498, 0.93776709, 0.81797714, ..., 0.96508877, 0.25208564,
+ 0.72982507],
+ [0.87173234, 0.83127946, 0.91758202, ..., 0.50487542, 0.03052536,
+ 0.9625512 ],
+ ...,
+ [0.01884645, 0.33107071, 0.60018523, ..., 0.02268164, 0.46955907,
+ 0.37842628],
+ [0.03405101, 0.77886243, 0.14856727, ..., 0.02484926, 0.03850398,
+ 0.39086524],
+ [0.16567224, 0.1347261 , 0.48809697, ..., 0.55021249, 0.42324589,
+ 0.31440635]])
+
+>>> client['long_table']
+<DataFrameClient ['A', 'B', 'C']>
+
+>>> client['long_table'].read()
+ A B C
+index
+0 0.246920 0.493840 0.740759
+1 0.326005 0.652009 0.978014
+2 0.715418 1.430837 2.146255
+3 0.425147 0.850294 1.275441
+4 0.781036 1.562073 2.343109
+... ... ... ...
+99995 0.515248 1.030495 1.545743
+99996 0.639188 1.278376 1.917564
+99997 0.269851 0.539702 0.809553
+99998 0.566848 1.133695 1.700543
+99999 0.101446 0.202892 0.304338
+
+[100000 rows x 3 columns]
+
+>>> client['long_table'].read(['A', 'B'])
+ A B
+index
+0 0.748885 0.769644
+1 0.071319 0.364743
+2 0.322665 0.897854
+3 0.328785 0.810159
+4 0.158253 0.822505
+... ... ...
+95 0.913758 0.488304
+96 0.969652 0.287850
+97 0.769774 0.941785
+98 0.350033 0.052412
+99 0.356245 0.683540
+
+[100 rows x 2 columns]
+```
+
+Using an Internet browser or a command-line HTTP client like
+[curl](https://curl.se/) or [httpie](https://httpie.io/) you can download the
+data in whole or in efficiently-chunked parts in the format of your choice:
+
+```
+# Download tabular data as CSV
+http://localhost:8000/api/v1/node/full/long_table?format=csv
+
+# or XLSX (Excel)
+http://localhost:8000/api/v1/node/full/long_table?format=xslx
+
+# and subselect columns.
+http://localhost:8000/api/v1/node/full/long_table?format=xslx&field=A&field=B
+
+# View or download (2D) array data as PNG
+http://localhost:8000/api/v1/array/full/medium_image?format=png
+
+# and slice regions of interest.
+http://localhost:8000/api/v1/array/full/medium_image?format=png&slice=:50,100:200
+```
+
+Web-based data access usually involves downloading complete files, in the
+manner of [Globus](https://www.globus.org/); or using modern chunk-based
+storage formats, such as [TileDB](https://tiledb.com/) and
+[Zarr](https://zarr.readthedocs.io/en/stable/) in local or cloud storage; or
+using custom solutions tailored to a particular large dataset. Waiting for an
+entire file to download when only the first frame of an image stack or a
+certain column of a table are of interest is wasteful and can be prohibitive
+for large longitudinal analyses. Yet, it is not always practical to transcode
+the data into a chunk-friendly format or build a custom tile-based-access
+solution. (Though if you can do either of those things, you should consider
+them instead!)
+
+
+%package -n python3-tiled
+Summary: Tile-based access to SciPy/PyData data structures over the web in many formats
+Provides: python-tiled
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-tiled
+# Tiled
+
+*Disclaimer: This is very early work, still in the process of defining scope.*
+
+Tiled is a **data access** service for data-aware portals and data science tools.
+Tiled has a Python client and integrates naturally with Python data science
+libraries, but nothing about the service is Python-specific; it also works from
+a web browser or any Internet-connected program.
+
+Tiled’s service can sit atop databases, filesystems, and/or remote
+services to enable **search** and **structured, chunkwise access to data** in an
+extensible variety of appropriate formats, providing data in a consistent
+structure regardless of the format the data happens to be stored in at rest. The
+natively-supported formats span slow but widespread interchange formats (e.g.
+CSV, JSON) and fast, efficient ones (e.g. C buffers, Apache Arrow and Parquet).
+Tiled enables slicing and sub-selection to read and transfer only the data of
+interest, and it enables parallelized download of many chunks at once. Users can
+access data with very light software dependencies and fast partial downloads.
+
+Tiled puts an emphasis on **structures** rather than formats, including:
+
+* N-dimensional strided arrays (i.e. numpy-like arrays)
+* Sparse arrays
+* Tabular data (e.g. pandas-like "dataframes")
+* Hierarchical structures thereof (e.g. xarrays, HDF5-compatible structures like NeXus)
+
+Tiled implements extensible **access control enforcement** based on web security
+standards, similar to JuptyerHub. Like Jupyter, Tiled can be used by a single
+user or deployed as a shared public or private resource. Tiled can be configured
+to use third party services for login, such as Google, ORCID. or any OIDC
+or SAML authentication providers.
+
+Tiled facilitates **client-side caching** in a standard web browser or in
+Tiled's Python client, making efficient use of bandwidth and enabling an offline
+"airplane mode." It uses **service-side caching** of "hot" datasets and
+resources to expedite both repeat requests (e.g. when several users are requesting
+the same chunks of data) and distinct requests for different parts of the same
+dataset (e.g. when the user is requesting various slices or columns from a
+dataset).
+
+| Distribution | Where to get it |
+| -------------- | ------------------------------------------------------------ |
+| PyPI | `pip install tiled` |
+| Conda | Coming Soon |
+| Source code | [github.com/bluesky/tiled](https://github.com/bluesky/tiled) |
+| Documentation | [blueskyproject.io/tiled](https://blueskyproject.io/tiled) |
+
+## Example
+
+In this example, we'll serve of a collection of data that is generated in
+memory. Alternatively, it could be read on demand from a directory of files,
+network resource, database, or some combination of these.
+
+```
+tiled serve demo
+# equivalent to:
+# tiled serve pyobject --public tiled.examples.generated:tree
+```
+
+And then access the data efficiently via the Python client, a web browser, or
+any HTTP client.
+
+```python
+>>> from tiled.client import from_uri
+
+>>> client = from_uri("http://localhost:8000")
+
+>>> client
+<Node {'short_table', 'long_table', 'structured_data', ...} ~10 entries>
+
+>>> list(client)
+'big_image',
+ 'small_image',
+ 'tiny_image',
+ 'tiny_cube',
+ 'tiny_hypercube',
+ 'low_entropy',
+ 'high_entropy',
+ 'short_table',
+ 'long_table',
+ 'labeled_data',
+ 'structured_data']
+
+>>> client['medium_image']
+<ArrayClient>
+
+>>> client['medium_image'][:]
+array([[0.49675483, 0.37832119, 0.59431287, ..., 0.16990737, 0.5396537 ,
+ 0.61913812],
+ [0.97062498, 0.93776709, 0.81797714, ..., 0.96508877, 0.25208564,
+ 0.72982507],
+ [0.87173234, 0.83127946, 0.91758202, ..., 0.50487542, 0.03052536,
+ 0.9625512 ],
+ ...,
+ [0.01884645, 0.33107071, 0.60018523, ..., 0.02268164, 0.46955907,
+ 0.37842628],
+ [0.03405101, 0.77886243, 0.14856727, ..., 0.02484926, 0.03850398,
+ 0.39086524],
+ [0.16567224, 0.1347261 , 0.48809697, ..., 0.55021249, 0.42324589,
+ 0.31440635]])
+
+>>> client['long_table']
+<DataFrameClient ['A', 'B', 'C']>
+
+>>> client['long_table'].read()
+ A B C
+index
+0 0.246920 0.493840 0.740759
+1 0.326005 0.652009 0.978014
+2 0.715418 1.430837 2.146255
+3 0.425147 0.850294 1.275441
+4 0.781036 1.562073 2.343109
+... ... ... ...
+99995 0.515248 1.030495 1.545743
+99996 0.639188 1.278376 1.917564
+99997 0.269851 0.539702 0.809553
+99998 0.566848 1.133695 1.700543
+99999 0.101446 0.202892 0.304338
+
+[100000 rows x 3 columns]
+
+>>> client['long_table'].read(['A', 'B'])
+ A B
+index
+0 0.748885 0.769644
+1 0.071319 0.364743
+2 0.322665 0.897854
+3 0.328785 0.810159
+4 0.158253 0.822505
+... ... ...
+95 0.913758 0.488304
+96 0.969652 0.287850
+97 0.769774 0.941785
+98 0.350033 0.052412
+99 0.356245 0.683540
+
+[100 rows x 2 columns]
+```
+
+Using an Internet browser or a command-line HTTP client like
+[curl](https://curl.se/) or [httpie](https://httpie.io/) you can download the
+data in whole or in efficiently-chunked parts in the format of your choice:
+
+```
+# Download tabular data as CSV
+http://localhost:8000/api/v1/node/full/long_table?format=csv
+
+# or XLSX (Excel)
+http://localhost:8000/api/v1/node/full/long_table?format=xslx
+
+# and subselect columns.
+http://localhost:8000/api/v1/node/full/long_table?format=xslx&field=A&field=B
+
+# View or download (2D) array data as PNG
+http://localhost:8000/api/v1/array/full/medium_image?format=png
+
+# and slice regions of interest.
+http://localhost:8000/api/v1/array/full/medium_image?format=png&slice=:50,100:200
+```
+
+Web-based data access usually involves downloading complete files, in the
+manner of [Globus](https://www.globus.org/); or using modern chunk-based
+storage formats, such as [TileDB](https://tiledb.com/) and
+[Zarr](https://zarr.readthedocs.io/en/stable/) in local or cloud storage; or
+using custom solutions tailored to a particular large dataset. Waiting for an
+entire file to download when only the first frame of an image stack or a
+certain column of a table are of interest is wasteful and can be prohibitive
+for large longitudinal analyses. Yet, it is not always practical to transcode
+the data into a chunk-friendly format or build a custom tile-based-access
+solution. (Though if you can do either of those things, you should consider
+them instead!)
+
+
+%package help
+Summary: Development documents and examples for tiled
+Provides: python3-tiled-doc
+%description help
+# Tiled
+
+*Disclaimer: This is very early work, still in the process of defining scope.*
+
+Tiled is a **data access** service for data-aware portals and data science tools.
+Tiled has a Python client and integrates naturally with Python data science
+libraries, but nothing about the service is Python-specific; it also works from
+a web browser or any Internet-connected program.
+
+Tiled’s service can sit atop databases, filesystems, and/or remote
+services to enable **search** and **structured, chunkwise access to data** in an
+extensible variety of appropriate formats, providing data in a consistent
+structure regardless of the format the data happens to be stored in at rest. The
+natively-supported formats span slow but widespread interchange formats (e.g.
+CSV, JSON) and fast, efficient ones (e.g. C buffers, Apache Arrow and Parquet).
+Tiled enables slicing and sub-selection to read and transfer only the data of
+interest, and it enables parallelized download of many chunks at once. Users can
+access data with very light software dependencies and fast partial downloads.
+
+Tiled puts an emphasis on **structures** rather than formats, including:
+
+* N-dimensional strided arrays (i.e. numpy-like arrays)
+* Sparse arrays
+* Tabular data (e.g. pandas-like "dataframes")
+* Hierarchical structures thereof (e.g. xarrays, HDF5-compatible structures like NeXus)
+
+Tiled implements extensible **access control enforcement** based on web security
+standards, similar to JuptyerHub. Like Jupyter, Tiled can be used by a single
+user or deployed as a shared public or private resource. Tiled can be configured
+to use third party services for login, such as Google, ORCID. or any OIDC
+or SAML authentication providers.
+
+Tiled facilitates **client-side caching** in a standard web browser or in
+Tiled's Python client, making efficient use of bandwidth and enabling an offline
+"airplane mode." It uses **service-side caching** of "hot" datasets and
+resources to expedite both repeat requests (e.g. when several users are requesting
+the same chunks of data) and distinct requests for different parts of the same
+dataset (e.g. when the user is requesting various slices or columns from a
+dataset).
+
+| Distribution | Where to get it |
+| -------------- | ------------------------------------------------------------ |
+| PyPI | `pip install tiled` |
+| Conda | Coming Soon |
+| Source code | [github.com/bluesky/tiled](https://github.com/bluesky/tiled) |
+| Documentation | [blueskyproject.io/tiled](https://blueskyproject.io/tiled) |
+
+## Example
+
+In this example, we'll serve of a collection of data that is generated in
+memory. Alternatively, it could be read on demand from a directory of files,
+network resource, database, or some combination of these.
+
+```
+tiled serve demo
+# equivalent to:
+# tiled serve pyobject --public tiled.examples.generated:tree
+```
+
+And then access the data efficiently via the Python client, a web browser, or
+any HTTP client.
+
+```python
+>>> from tiled.client import from_uri
+
+>>> client = from_uri("http://localhost:8000")
+
+>>> client
+<Node {'short_table', 'long_table', 'structured_data', ...} ~10 entries>
+
+>>> list(client)
+'big_image',
+ 'small_image',
+ 'tiny_image',
+ 'tiny_cube',
+ 'tiny_hypercube',
+ 'low_entropy',
+ 'high_entropy',
+ 'short_table',
+ 'long_table',
+ 'labeled_data',
+ 'structured_data']
+
+>>> client['medium_image']
+<ArrayClient>
+
+>>> client['medium_image'][:]
+array([[0.49675483, 0.37832119, 0.59431287, ..., 0.16990737, 0.5396537 ,
+ 0.61913812],
+ [0.97062498, 0.93776709, 0.81797714, ..., 0.96508877, 0.25208564,
+ 0.72982507],
+ [0.87173234, 0.83127946, 0.91758202, ..., 0.50487542, 0.03052536,
+ 0.9625512 ],
+ ...,
+ [0.01884645, 0.33107071, 0.60018523, ..., 0.02268164, 0.46955907,
+ 0.37842628],
+ [0.03405101, 0.77886243, 0.14856727, ..., 0.02484926, 0.03850398,
+ 0.39086524],
+ [0.16567224, 0.1347261 , 0.48809697, ..., 0.55021249, 0.42324589,
+ 0.31440635]])
+
+>>> client['long_table']
+<DataFrameClient ['A', 'B', 'C']>
+
+>>> client['long_table'].read()
+ A B C
+index
+0 0.246920 0.493840 0.740759
+1 0.326005 0.652009 0.978014
+2 0.715418 1.430837 2.146255
+3 0.425147 0.850294 1.275441
+4 0.781036 1.562073 2.343109
+... ... ... ...
+99995 0.515248 1.030495 1.545743
+99996 0.639188 1.278376 1.917564
+99997 0.269851 0.539702 0.809553
+99998 0.566848 1.133695 1.700543
+99999 0.101446 0.202892 0.304338
+
+[100000 rows x 3 columns]
+
+>>> client['long_table'].read(['A', 'B'])
+ A B
+index
+0 0.748885 0.769644
+1 0.071319 0.364743
+2 0.322665 0.897854
+3 0.328785 0.810159
+4 0.158253 0.822505
+... ... ...
+95 0.913758 0.488304
+96 0.969652 0.287850
+97 0.769774 0.941785
+98 0.350033 0.052412
+99 0.356245 0.683540
+
+[100 rows x 2 columns]
+```
+
+Using an Internet browser or a command-line HTTP client like
+[curl](https://curl.se/) or [httpie](https://httpie.io/) you can download the
+data in whole or in efficiently-chunked parts in the format of your choice:
+
+```
+# Download tabular data as CSV
+http://localhost:8000/api/v1/node/full/long_table?format=csv
+
+# or XLSX (Excel)
+http://localhost:8000/api/v1/node/full/long_table?format=xslx
+
+# and subselect columns.
+http://localhost:8000/api/v1/node/full/long_table?format=xslx&field=A&field=B
+
+# View or download (2D) array data as PNG
+http://localhost:8000/api/v1/array/full/medium_image?format=png
+
+# and slice regions of interest.
+http://localhost:8000/api/v1/array/full/medium_image?format=png&slice=:50,100:200
+```
+
+Web-based data access usually involves downloading complete files, in the
+manner of [Globus](https://www.globus.org/); or using modern chunk-based
+storage formats, such as [TileDB](https://tiledb.com/) and
+[Zarr](https://zarr.readthedocs.io/en/stable/) in local or cloud storage; or
+using custom solutions tailored to a particular large dataset. Waiting for an
+entire file to download when only the first frame of an image stack or a
+certain column of a table are of interest is wasteful and can be prohibitive
+for large longitudinal analyses. Yet, it is not always practical to transcode
+the data into a chunk-friendly format or build a custom tile-based-access
+solution. (Though if you can do either of those things, you should consider
+them instead!)
+
+
+%prep
+%autosetup -n tiled-0.1.0a91
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-tiled -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Wed May 17 2023 Python_Bot <Python_Bot@openeuler.org> - 0.1.0a91-1
+- Package Spec generated