ome-arrow 0.0.2__tar.gz → 0.0.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/.github/workflows/publish-docs.yml +8 -4
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/.github/workflows/publish-pypi.yml +3 -3
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/.github/workflows/run-tests.yml +6 -6
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/.pre-commit-config.yaml +1 -1
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/CITATION.cff +3 -0
- ome_arrow-0.0.3/PKG-INFO +111 -0
- ome_arrow-0.0.3/README.md +80 -0
- ome_arrow-0.0.3/docs/src/_static/logo.png +0 -0
- ome_arrow-0.0.3/docs/src/_static/references_to_files.png +0 -0
- ome_arrow-0.0.3/docs/src/_static/various_ome_arrow_schema.png +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/docs/src/conf.py +3 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/docs/src/examples/learning_to_fly_with_ome-arrow.ipynb +47 -21
- ome_arrow-0.0.3/docs/src/examples/learning_to_fly_with_ome-arrow.py +82 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/src/ome_arrow/_version.py +3 -3
- ome_arrow-0.0.3/src/ome_arrow.egg-info/PKG-INFO +111 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/src/ome_arrow.egg-info/SOURCES.txt +3 -0
- ome_arrow-0.0.2/PKG-INFO +0 -34
- ome_arrow-0.0.2/README.md +0 -3
- ome_arrow-0.0.2/docs/src/examples/learning_to_fly_with_ome-arrow.py +0 -57
- ome_arrow-0.0.2/src/ome_arrow.egg-info/PKG-INFO +0 -34
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/.github/dependabot.yml +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/.github/release-drafter.yml +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/.github/workflows/draft-release.yml +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/.gitignore +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/.python-version +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/CODE_OF_CONDUCT.md +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/CONTRIBUTING.md +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/LICENSE +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/docs/src/index.md +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/docs/src/python-api.md +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/pyproject.toml +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/setup.cfg +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/src/ome_arrow/__init__.py +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/src/ome_arrow/core.py +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/src/ome_arrow/export.py +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/src/ome_arrow/ingest.py +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/src/ome_arrow/meta.py +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/src/ome_arrow/transform.py +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/src/ome_arrow/utils.py +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/src/ome_arrow/view.py +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/src/ome_arrow.egg-info/dependency_links.txt +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/src/ome_arrow.egg-info/requires.txt +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/src/ome_arrow.egg-info/top_level.txt +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/conftest.py +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/examplehuman/AS_09125_050116030001_D03f00d0.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/examplehuman/AS_09125_050116030001_D03f00d1.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/examplehuman/AS_09125_050116030001_D03f00d2.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C111_ZS000.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C111_ZS001.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C111_ZS002.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C111_ZS003.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C111_ZS004.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C111_ZS005.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C111_ZS006.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C111_ZS007.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C111_ZS008.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C111_ZS009.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C111_ZS010.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C111_ZS011.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C111_ZS012.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C111_ZS013.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C111_ZS014.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C111_ZS015.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C111_ZS016.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C111_ZS017.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C111_ZS018.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C111_ZS019.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C111_ZS020.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C111_ZS021.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C222_ZS000.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C222_ZS001.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C222_ZS002.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C222_ZS003.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C222_ZS004.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C222_ZS005.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C222_ZS006.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C222_ZS007.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C222_ZS008.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C222_ZS009.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C222_ZS010.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C222_ZS011.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C222_ZS012.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C222_ZS013.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C222_ZS014.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C222_ZS015.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C222_ZS016.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C222_ZS017.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C222_ZS018.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C222_ZS019.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C222_ZS020.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/nviz-artificial-4d-dataset/E99_C222_ZS021.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/ome-artificial-5d-datasets/4D-series.ome.tiff +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/ome-artificial-5d-datasets/multi-channel-4D-series.ome.tiff +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/ome-artificial-5d-datasets/multi-channel-time-series.ome.tiff +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/ome-artificial-5d-datasets/multi-channel-z-series.ome.tiff +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/ome-artificial-5d-datasets/multi-channel.ome.tiff +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/ome-artificial-5d-datasets/single-channel.ome.tiff +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/ome-artificial-5d-datasets/time-series.ome.tif +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/data/ome-artificial-5d-datasets/z-series.ome.tiff +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/test_core.py +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/tests/test_utils.py +0 -0
- {ome_arrow-0.0.2 → ome_arrow-0.0.3}/uv.lock +0 -0
|
@@ -10,26 +10,30 @@ on:
|
|
|
10
10
|
types:
|
|
11
11
|
- published
|
|
12
12
|
|
|
13
|
+
permissions:
|
|
14
|
+
contents: write
|
|
15
|
+
|
|
13
16
|
jobs:
|
|
14
17
|
build:
|
|
15
18
|
# only build and deploy docs if the actor is not dependabot
|
|
16
19
|
if: ${{ github.actor != 'dependabot[bot]' }}
|
|
17
|
-
runs-on: ubuntu-
|
|
20
|
+
runs-on: ubuntu-24.04
|
|
18
21
|
steps:
|
|
19
22
|
- name: Checkout
|
|
20
|
-
uses: actions/checkout@
|
|
23
|
+
uses: actions/checkout@v5
|
|
21
24
|
with:
|
|
22
25
|
fetch-depth: 0
|
|
23
|
-
- uses: actions/setup-python@
|
|
26
|
+
- uses: actions/setup-python@v6
|
|
24
27
|
with:
|
|
25
28
|
python-version: "3.11"
|
|
26
29
|
- name: Install the latest version of uv
|
|
27
|
-
uses: astral-sh/setup-uv@
|
|
30
|
+
uses: astral-sh/setup-uv@v7
|
|
28
31
|
- name: Build documentation
|
|
29
32
|
run: |
|
|
30
33
|
mkdir pages
|
|
31
34
|
touch pages/.nojekyll
|
|
32
35
|
cd docs
|
|
36
|
+
uv sync --all-extras --all-groups
|
|
33
37
|
uv run --frozen sphinx-build src build
|
|
34
38
|
# remove any doctrees dirs which aren't needed for publishing
|
|
35
39
|
find ./build -type d -name '.doctrees' -exec rm -rf {} +
|
|
@@ -16,17 +16,17 @@ jobs:
|
|
|
16
16
|
id-token: write
|
|
17
17
|
steps:
|
|
18
18
|
- name: Checkout
|
|
19
|
-
uses: actions/checkout@
|
|
19
|
+
uses: actions/checkout@v5
|
|
20
20
|
with:
|
|
21
21
|
fetch-depth: 0
|
|
22
22
|
- name: Fetch tags
|
|
23
23
|
run: git fetch --all --tags
|
|
24
24
|
- name: Python setup
|
|
25
|
-
uses: actions/setup-python@
|
|
25
|
+
uses: actions/setup-python@v6
|
|
26
26
|
with:
|
|
27
27
|
python-version: "3.11"
|
|
28
28
|
- name: Install the latest version of uv
|
|
29
|
-
uses: astral-sh/setup-uv@
|
|
29
|
+
uses: astral-sh/setup-uv@v7
|
|
30
30
|
- name: uv build distribution content
|
|
31
31
|
run: uv build
|
|
32
32
|
- name: Publish package distributions to PyPI
|
|
@@ -13,14 +13,14 @@ jobs:
|
|
|
13
13
|
runs-on: ubuntu-24.04
|
|
14
14
|
steps:
|
|
15
15
|
# checks out the repo
|
|
16
|
-
- uses: actions/checkout@
|
|
16
|
+
- uses: actions/checkout@v5
|
|
17
17
|
# run pre-commit
|
|
18
18
|
- name: Python setup
|
|
19
|
-
uses: actions/setup-python@
|
|
19
|
+
uses: actions/setup-python@v6
|
|
20
20
|
with:
|
|
21
21
|
python-version: "3.11"
|
|
22
22
|
- name: Install the latest version of uv
|
|
23
|
-
uses: astral-sh/setup-uv@
|
|
23
|
+
uses: astral-sh/setup-uv@v7
|
|
24
24
|
- uses: pre-commit/action@v3.0.1
|
|
25
25
|
# run pre-commit ci lite for automated fixes
|
|
26
26
|
- uses: pre-commit-ci/lite-action@v1.1.0
|
|
@@ -35,12 +35,12 @@ jobs:
|
|
|
35
35
|
OS: ${{ matrix.os }}
|
|
36
36
|
steps:
|
|
37
37
|
- name: Checkout
|
|
38
|
-
uses: actions/checkout@
|
|
38
|
+
uses: actions/checkout@v5
|
|
39
39
|
- name: Python setup
|
|
40
|
-
uses: actions/setup-python@
|
|
40
|
+
uses: actions/setup-python@v6
|
|
41
41
|
with:
|
|
42
42
|
python-version: ${{ matrix.python_version }}
|
|
43
43
|
- name: Install the latest version of uv
|
|
44
|
-
uses: astral-sh/setup-uv@
|
|
44
|
+
uses: astral-sh/setup-uv@v7
|
|
45
45
|
- name: Run pytest
|
|
46
46
|
run: uv run --frozen pytest
|
|
@@ -17,6 +17,9 @@ authors:
|
|
|
17
17
|
- given-names: Michael
|
|
18
18
|
family-names: Lippincott
|
|
19
19
|
orcid: 'https://orcid.org/0000-0002-8637-1448'
|
|
20
|
+
- given-names: Cameron
|
|
21
|
+
family-names: Mattson
|
|
22
|
+
orcid: 'https://orcid.org/0009-0008-4969-779X'
|
|
20
23
|
- given-names: Gregory
|
|
21
24
|
family-names: Way
|
|
22
25
|
orcid: 'https://orcid.org/0000-0002-0503-9348'
|
ome_arrow-0.0.3/PKG-INFO
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ome-arrow
|
|
3
|
+
Version: 0.0.3
|
|
4
|
+
Summary: Using OME specifications with Apache Arrow for fast, queryable, and language agnostic bioimage data.
|
|
5
|
+
Author: Dave Bunten
|
|
6
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
7
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
8
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
9
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
10
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
11
|
+
Requires-Python: >=3.11
|
|
12
|
+
Description-Content-Type: text/markdown
|
|
13
|
+
License-File: LICENSE
|
|
14
|
+
Requires-Dist: bioio>=3
|
|
15
|
+
Requires-Dist: bioio-ome-tiff>=1.4
|
|
16
|
+
Requires-Dist: bioio-ome-zarr>=3.0.3
|
|
17
|
+
Requires-Dist: bioio-tifffile>=1.3
|
|
18
|
+
Requires-Dist: fire>=0.7
|
|
19
|
+
Requires-Dist: ipywidgets>=8.1.8
|
|
20
|
+
Requires-Dist: jupyterlab-widgets>=3.0.16
|
|
21
|
+
Requires-Dist: matplotlib>=3.10.7
|
|
22
|
+
Requires-Dist: numpy>=2.2.6
|
|
23
|
+
Requires-Dist: pandas>=2.2.3
|
|
24
|
+
Requires-Dist: pillow>=12
|
|
25
|
+
Requires-Dist: pyarrow>=22
|
|
26
|
+
Requires-Dist: pyvista>=0.46.4
|
|
27
|
+
Requires-Dist: trame>=3.12
|
|
28
|
+
Requires-Dist: trame-vtk>=2.10
|
|
29
|
+
Requires-Dist: trame-vuetify>=3.1
|
|
30
|
+
Dynamic: license-file
|
|
31
|
+
|
|
32
|
+
<img height="200" src="https://raw.githubusercontent.com/wayscience/ome-arrow/main/docs/src/_static/logo.png?raw=true">
|
|
33
|
+
|
|
34
|
+

|
|
35
|
+
[](https://github.com/wayscience/ome-arrow/actions/workflows/run-tests.yml?query=branch%3Amain)
|
|
36
|
+
[](https://github.com/astral-sh/ruff)
|
|
37
|
+
[](https://github.com/astral-sh/uv)
|
|
38
|
+
|
|
39
|
+
# Open, interoperable, and queryable microscopy images with OME Arrow
|
|
40
|
+
|
|
41
|
+
OME-Arrow uses [Open Microscopy Environment (OME)](https://github.com/ome) specifications through [Apache Arrow](https://arrow.apache.org/) for fast, queryable, and language agnostic bioimage data.
|
|
42
|
+
|
|
43
|
+
<img height="200" src="https://raw.githubusercontent.com/wayscience/ome-arrow/main/docs/src/_static/references_to_files.png">
|
|
44
|
+
|
|
45
|
+
__Images are often left behind from the data model, referenced but excluded from databases.__
|
|
46
|
+
|
|
47
|
+
<img height="200" src="https://raw.githubusercontent.com/wayscience/ome-arrow/main/docs/src/_static/various_ome_arrow_schema.png">
|
|
48
|
+
|
|
49
|
+
__OME-Arrow brings images back into the story.__
|
|
50
|
+
|
|
51
|
+
OME Arrow enables image data to be stored alongside metadata or derived data such as single-cell morphology features.
|
|
52
|
+
Images in OME Arrow are composed of mutlilayer [structs](https://arrow.apache.org/docs/python/generated/pyarrow.struct.html) so they may be stored as values within tables.
|
|
53
|
+
This means you can store, query, and build relationships on data from the same location using any system which is compatible with Apache Arrow (including Parquet) through common data interfaces (such as SQL and DuckDB).
|
|
54
|
+
|
|
55
|
+
## Installation
|
|
56
|
+
|
|
57
|
+
Install OME Arrow from PyPI or from source:
|
|
58
|
+
|
|
59
|
+
```sh
|
|
60
|
+
# install from pypi
|
|
61
|
+
pip install ome-arrow
|
|
62
|
+
|
|
63
|
+
# install directly from source
|
|
64
|
+
pip install git+https://github.com/wayscience/ome-arrow.git
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Quick start
|
|
68
|
+
|
|
69
|
+
See below for a quick start guide.
|
|
70
|
+
Please also reference an example notebook: [Learning to fly with OME-Arrow](https://github.com/wayscience/ome-arrow/tree/main/docs/src/examples/learning_to_fly_with_ome-arrow.ipynb).
|
|
71
|
+
|
|
72
|
+
```python
|
|
73
|
+
from ome_arrow import OMEArrow
|
|
74
|
+
|
|
75
|
+
# Ingest a tif image through a convenient OME Arrow class
|
|
76
|
+
# We can also ingest OME-Zarr or NumPy arrays.
|
|
77
|
+
oa_image = OMEArrow(
|
|
78
|
+
data="your_image.tif"
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
# Access the OME Arrow struct itself
|
|
82
|
+
# (compatible with Arrow-compliant data storage).
|
|
83
|
+
oa_image.data
|
|
84
|
+
|
|
85
|
+
# Show information about the image.
|
|
86
|
+
oa_image.info()
|
|
87
|
+
|
|
88
|
+
# Display the image with matplotlib.
|
|
89
|
+
oa_image.view(how="matplotlib")
|
|
90
|
+
|
|
91
|
+
# Display the image with pyvista
|
|
92
|
+
# (great for ZYX 3D images).
|
|
93
|
+
oa_image.view(how="pyvista")
|
|
94
|
+
|
|
95
|
+
# Export to OME-Parquet.
|
|
96
|
+
# We can also export OME-TIFF, OME-Zarr or NumPy arrays.
|
|
97
|
+
oa_image.export(how="ome-parquet", out="your_image.ome.parquet")
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Contributing, Development, and Testing
|
|
101
|
+
|
|
102
|
+
Please see our [contributing documentation](https://github.com/wayscience/ome-arrow/tree/main/CONTRIBUTING.md) for more details on contributions, development, and testing.
|
|
103
|
+
|
|
104
|
+
## Related projects
|
|
105
|
+
|
|
106
|
+
OME Arrow is used or inspired by the following projects, check them out!
|
|
107
|
+
|
|
108
|
+
- [`napari-ome-arrow`](https://github.com/WayScience/napari-ome-arrow): enables you to view OME Arrow and related images.
|
|
109
|
+
- [`nViz`](https://github.com/WayScience/nViz): focuses on ingesting and visualizing various 3D image data.
|
|
110
|
+
- [`CytoDataFrame`](https://github.com/cytomining/CytoDataFrame): provides a DataFrame-like experience for viewing feature and microscopy image data within Jupyter notebook interfaces.
|
|
111
|
+
- [`coSMicQC`](https://github.com/cytomining/coSMicQC): performs quality control on microscopy feature datasets, visualized using CytoDataFrames.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
<img height="200" src="https://raw.githubusercontent.com/wayscience/ome-arrow/main/docs/src/_static/logo.png?raw=true">
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+
[](https://github.com/wayscience/ome-arrow/actions/workflows/run-tests.yml?query=branch%3Amain)
|
|
5
|
+
[](https://github.com/astral-sh/ruff)
|
|
6
|
+
[](https://github.com/astral-sh/uv)
|
|
7
|
+
|
|
8
|
+
# Open, interoperable, and queryable microscopy images with OME Arrow
|
|
9
|
+
|
|
10
|
+
OME-Arrow uses [Open Microscopy Environment (OME)](https://github.com/ome) specifications through [Apache Arrow](https://arrow.apache.org/) for fast, queryable, and language agnostic bioimage data.
|
|
11
|
+
|
|
12
|
+
<img height="200" src="https://raw.githubusercontent.com/wayscience/ome-arrow/main/docs/src/_static/references_to_files.png">
|
|
13
|
+
|
|
14
|
+
__Images are often left behind from the data model, referenced but excluded from databases.__
|
|
15
|
+
|
|
16
|
+
<img height="200" src="https://raw.githubusercontent.com/wayscience/ome-arrow/main/docs/src/_static/various_ome_arrow_schema.png">
|
|
17
|
+
|
|
18
|
+
__OME-Arrow brings images back into the story.__
|
|
19
|
+
|
|
20
|
+
OME Arrow enables image data to be stored alongside metadata or derived data such as single-cell morphology features.
|
|
21
|
+
Images in OME Arrow are composed of mutlilayer [structs](https://arrow.apache.org/docs/python/generated/pyarrow.struct.html) so they may be stored as values within tables.
|
|
22
|
+
This means you can store, query, and build relationships on data from the same location using any system which is compatible with Apache Arrow (including Parquet) through common data interfaces (such as SQL and DuckDB).
|
|
23
|
+
|
|
24
|
+
## Installation
|
|
25
|
+
|
|
26
|
+
Install OME Arrow from PyPI or from source:
|
|
27
|
+
|
|
28
|
+
```sh
|
|
29
|
+
# install from pypi
|
|
30
|
+
pip install ome-arrow
|
|
31
|
+
|
|
32
|
+
# install directly from source
|
|
33
|
+
pip install git+https://github.com/wayscience/ome-arrow.git
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Quick start
|
|
37
|
+
|
|
38
|
+
See below for a quick start guide.
|
|
39
|
+
Please also reference an example notebook: [Learning to fly with OME-Arrow](https://github.com/wayscience/ome-arrow/tree/main/docs/src/examples/learning_to_fly_with_ome-arrow.ipynb).
|
|
40
|
+
|
|
41
|
+
```python
|
|
42
|
+
from ome_arrow import OMEArrow
|
|
43
|
+
|
|
44
|
+
# Ingest a tif image through a convenient OME Arrow class
|
|
45
|
+
# We can also ingest OME-Zarr or NumPy arrays.
|
|
46
|
+
oa_image = OMEArrow(
|
|
47
|
+
data="your_image.tif"
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
# Access the OME Arrow struct itself
|
|
51
|
+
# (compatible with Arrow-compliant data storage).
|
|
52
|
+
oa_image.data
|
|
53
|
+
|
|
54
|
+
# Show information about the image.
|
|
55
|
+
oa_image.info()
|
|
56
|
+
|
|
57
|
+
# Display the image with matplotlib.
|
|
58
|
+
oa_image.view(how="matplotlib")
|
|
59
|
+
|
|
60
|
+
# Display the image with pyvista
|
|
61
|
+
# (great for ZYX 3D images).
|
|
62
|
+
oa_image.view(how="pyvista")
|
|
63
|
+
|
|
64
|
+
# Export to OME-Parquet.
|
|
65
|
+
# We can also export OME-TIFF, OME-Zarr or NumPy arrays.
|
|
66
|
+
oa_image.export(how="ome-parquet", out="your_image.ome.parquet")
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Contributing, Development, and Testing
|
|
70
|
+
|
|
71
|
+
Please see our [contributing documentation](https://github.com/wayscience/ome-arrow/tree/main/CONTRIBUTING.md) for more details on contributions, development, and testing.
|
|
72
|
+
|
|
73
|
+
## Related projects
|
|
74
|
+
|
|
75
|
+
OME Arrow is used or inspired by the following projects, check them out!
|
|
76
|
+
|
|
77
|
+
- [`napari-ome-arrow`](https://github.com/WayScience/napari-ome-arrow): enables you to view OME Arrow and related images.
|
|
78
|
+
- [`nViz`](https://github.com/WayScience/nViz): focuses on ingesting and visualizing various 3D image data.
|
|
79
|
+
- [`CytoDataFrame`](https://github.com/cytomining/CytoDataFrame): provides a DataFrame-like experience for viewing feature and microscopy image data within Jupyter notebook interfaces.
|
|
80
|
+
- [`coSMicQC`](https://github.com/cytomining/coSMicQC): performs quality control on microscopy feature datasets, visualized using CytoDataFrames.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
"id": "d778aece-5867-49b6-8890-f5a387f22c44",
|
|
6
6
|
"metadata": {},
|
|
7
7
|
"source": [
|
|
8
|
-
"# Learning to fly with OME-Arrow\n"
|
|
8
|
+
"# Learning to fly with OME-Arrow\n",
|
|
9
|
+
"\n",
|
|
10
|
+
"This notebook provides a quick demonstration of what you can do with OME Arrow."
|
|
9
11
|
]
|
|
10
12
|
},
|
|
11
13
|
{
|
|
@@ -15,6 +17,8 @@
|
|
|
15
17
|
"metadata": {},
|
|
16
18
|
"outputs": [],
|
|
17
19
|
"source": [
|
|
20
|
+
"# we import a single class, OMEArrow\n",
|
|
21
|
+
"# which handles all data I/O and manipulation\n",
|
|
18
22
|
"from ome_arrow import OMEArrow"
|
|
19
23
|
]
|
|
20
24
|
},
|
|
@@ -30,7 +34,7 @@
|
|
|
30
34
|
"2D image, single-channel - shape (T=1, C=1, Z=1, Y=512, X=512)"
|
|
31
35
|
],
|
|
32
36
|
"text/plain": [
|
|
33
|
-
"<ome_arrow.core.OMEArrow at
|
|
37
|
+
"<ome_arrow.core.OMEArrow at 0x162d227d0>"
|
|
34
38
|
]
|
|
35
39
|
},
|
|
36
40
|
"execution_count": 2,
|
|
@@ -49,9 +53,11 @@
|
|
|
49
53
|
}
|
|
50
54
|
],
|
|
51
55
|
"source": [
|
|
56
|
+
"# read a TIFF file and convert it to OME-Arrow\n",
|
|
52
57
|
"oa_image = OMEArrow(\n",
|
|
53
58
|
" data=\"../../../tests/data/examplehuman/AS_09125_050116030001_D03f00d0.tif\"\n",
|
|
54
59
|
")\n",
|
|
60
|
+
"# by default, the image and metadata are shown\n",
|
|
55
61
|
"oa_image"
|
|
56
62
|
]
|
|
57
63
|
},
|
|
@@ -77,6 +83,7 @@
|
|
|
77
83
|
}
|
|
78
84
|
],
|
|
79
85
|
"source": [
|
|
86
|
+
"# we can also get a summary of the OME-Arrow object\n",
|
|
80
87
|
"oa_image.info()"
|
|
81
88
|
]
|
|
82
89
|
},
|
|
@@ -105,6 +112,8 @@
|
|
|
105
112
|
}
|
|
106
113
|
],
|
|
107
114
|
"source": [
|
|
115
|
+
"# we can export the data into a number\n",
|
|
116
|
+
"# of different formats, e.g. numpy\n",
|
|
108
117
|
"oa_image.export(how=\"numpy\")"
|
|
109
118
|
]
|
|
110
119
|
},
|
|
@@ -120,7 +129,7 @@
|
|
|
120
129
|
"3D image (z-stack), multi-channel (2 channels) - shape (T=1, C=2, Z=22, Y=128, X=128)"
|
|
121
130
|
],
|
|
122
131
|
"text/plain": [
|
|
123
|
-
"<ome_arrow.core.OMEArrow at
|
|
132
|
+
"<ome_arrow.core.OMEArrow at 0x1662b2810>"
|
|
124
133
|
]
|
|
125
134
|
},
|
|
126
135
|
"execution_count": 5,
|
|
@@ -139,8 +148,11 @@
|
|
|
139
148
|
}
|
|
140
149
|
],
|
|
141
150
|
"source": [
|
|
151
|
+
"# We can also read in TIFF stacks following OME bfconvert API conventions\n",
|
|
142
152
|
"stack = OMEArrow(\n",
|
|
143
153
|
" data=\"../../../tests/data/nviz-artificial-4d-dataset/E99_C<111,222>_ZS<000-021>.tif\",\n",
|
|
154
|
+
" # this is an optional for which\n",
|
|
155
|
+
" # timepoint, channel, and z-slice to show by default\n",
|
|
144
156
|
" tcz=(0, 0, 20),\n",
|
|
145
157
|
")\n",
|
|
146
158
|
"stack"
|
|
@@ -148,19 +160,19 @@
|
|
|
148
160
|
},
|
|
149
161
|
{
|
|
150
162
|
"cell_type": "code",
|
|
151
|
-
"execution_count":
|
|
163
|
+
"execution_count": 6,
|
|
152
164
|
"id": "383e1f10-b32f-47cb-9906-15dd9947b09a",
|
|
153
165
|
"metadata": {},
|
|
154
166
|
"outputs": [
|
|
155
167
|
{
|
|
156
168
|
"data": {
|
|
157
169
|
"application/vnd.jupyter.widget-view+json": {
|
|
158
|
-
"model_id": "
|
|
170
|
+
"model_id": "e644f91c4e3843c39f130f05b628277e",
|
|
159
171
|
"version_major": 2,
|
|
160
172
|
"version_minor": 0
|
|
161
173
|
},
|
|
162
174
|
"text/plain": [
|
|
163
|
-
"Widget(value='<iframe src=\"http://localhost:
|
|
175
|
+
"Widget(value='<iframe src=\"http://localhost:55867/index.html?ui=P_0x1663cf990_0&reconnect=auto\" class=\"pyvista…"
|
|
164
176
|
]
|
|
165
177
|
},
|
|
166
178
|
"metadata": {},
|
|
@@ -186,21 +198,22 @@
|
|
|
186
198
|
{
|
|
187
199
|
"data": {
|
|
188
200
|
"text/plain": [
|
|
189
|
-
"<pyvista.plotting.plotter.Plotter at
|
|
201
|
+
"<pyvista.plotting.plotter.Plotter at 0x1663cf990>"
|
|
190
202
|
]
|
|
191
203
|
},
|
|
192
|
-
"execution_count":
|
|
204
|
+
"execution_count": 6,
|
|
193
205
|
"metadata": {},
|
|
194
206
|
"output_type": "execute_result"
|
|
195
207
|
}
|
|
196
208
|
],
|
|
197
209
|
"source": [
|
|
210
|
+
"# we can visualize the stack using pyvista for 3D rendering\n",
|
|
198
211
|
"stack.view(how=\"pyvista\")"
|
|
199
212
|
]
|
|
200
213
|
},
|
|
201
214
|
{
|
|
202
215
|
"cell_type": "code",
|
|
203
|
-
"execution_count":
|
|
216
|
+
"execution_count": 7,
|
|
204
217
|
"id": "d041ba28-bb16-4833-9661-9c9da2ff3a9c",
|
|
205
218
|
"metadata": {},
|
|
206
219
|
"outputs": [
|
|
@@ -210,10 +223,10 @@
|
|
|
210
223
|
"3D image (z-stack), multi-channel (2 channels) - shape (T=1, C=2, Z=22, Y=128, X=128)"
|
|
211
224
|
],
|
|
212
225
|
"text/plain": [
|
|
213
|
-
"<ome_arrow.core.OMEArrow at
|
|
226
|
+
"<ome_arrow.core.OMEArrow at 0x10aae1ad0>"
|
|
214
227
|
]
|
|
215
228
|
},
|
|
216
|
-
"execution_count":
|
|
229
|
+
"execution_count": 7,
|
|
217
230
|
"metadata": {},
|
|
218
231
|
"output_type": "execute_result"
|
|
219
232
|
},
|
|
@@ -229,13 +242,16 @@
|
|
|
229
242
|
}
|
|
230
243
|
],
|
|
231
244
|
"source": [
|
|
245
|
+
"# here we demonstrate that the data can be exported again\n",
|
|
246
|
+
"# into numpy format and re-imported\n",
|
|
247
|
+
"# into a new OME-Arrow object (from numpy data).\n",
|
|
232
248
|
"stack_np = stack.export(how=\"numpy\")\n",
|
|
233
249
|
"OMEArrow(data=stack_np, tcz=(0, 0, 20))"
|
|
234
250
|
]
|
|
235
251
|
},
|
|
236
252
|
{
|
|
237
253
|
"cell_type": "code",
|
|
238
|
-
"execution_count":
|
|
254
|
+
"execution_count": 8,
|
|
239
255
|
"id": "013baec4-0fed-452c-b200-cfd3b5f04d3e",
|
|
240
256
|
"metadata": {},
|
|
241
257
|
"outputs": [
|
|
@@ -245,10 +261,10 @@
|
|
|
245
261
|
"3D image (z-stack), multi-channel (2 channels) - shape (T=1, C=2, Z=22, Y=128, X=128)"
|
|
246
262
|
],
|
|
247
263
|
"text/plain": [
|
|
248
|
-
"<ome_arrow.core.OMEArrow at
|
|
264
|
+
"<ome_arrow.core.OMEArrow at 0x1662019d0>"
|
|
249
265
|
]
|
|
250
266
|
},
|
|
251
|
-
"execution_count":
|
|
267
|
+
"execution_count": 8,
|
|
252
268
|
"metadata": {},
|
|
253
269
|
"output_type": "execute_result"
|
|
254
270
|
},
|
|
@@ -264,13 +280,16 @@
|
|
|
264
280
|
}
|
|
265
281
|
],
|
|
266
282
|
"source": [
|
|
283
|
+
"# here we demonstrate that the data can be exported again\n",
|
|
284
|
+
"# into OME-TIFF format and re-imported\n",
|
|
285
|
+
"# into a new OME-Arrow object (from OME-TIFF data).\n",
|
|
267
286
|
"stack.export(how=\"ome-tiff\", out=\"example.ome.tiff\")\n",
|
|
268
287
|
"OMEArrow(data=\"example.ome.tiff\", tcz=(0, 0, 20))"
|
|
269
288
|
]
|
|
270
289
|
},
|
|
271
290
|
{
|
|
272
291
|
"cell_type": "code",
|
|
273
|
-
"execution_count":
|
|
292
|
+
"execution_count": 9,
|
|
274
293
|
"id": "ebaab572-f820-4402-9dd7-2ad5ce657e05",
|
|
275
294
|
"metadata": {},
|
|
276
295
|
"outputs": [
|
|
@@ -280,10 +299,10 @@
|
|
|
280
299
|
"3D image (z-stack), multi-channel (2 channels) - shape (T=1, C=2, Z=22, Y=128, X=128)"
|
|
281
300
|
],
|
|
282
301
|
"text/plain": [
|
|
283
|
-
"<ome_arrow.core.OMEArrow at
|
|
302
|
+
"<ome_arrow.core.OMEArrow at 0x1663adad0>"
|
|
284
303
|
]
|
|
285
304
|
},
|
|
286
|
-
"execution_count":
|
|
305
|
+
"execution_count": 9,
|
|
287
306
|
"metadata": {},
|
|
288
307
|
"output_type": "execute_result"
|
|
289
308
|
},
|
|
@@ -299,13 +318,16 @@
|
|
|
299
318
|
}
|
|
300
319
|
],
|
|
301
320
|
"source": [
|
|
321
|
+
"# here we demonstrate that the data can be exported again\n",
|
|
322
|
+
"# into OME-ZARR format and re-imported\n",
|
|
323
|
+
"# into a new OME-Arrow object (from OME-ZARR data).\n",
|
|
302
324
|
"stack.export(how=\"ome-zarr\", out=\"example.ome.zarr\")\n",
|
|
303
325
|
"OMEArrow(data=\"example.ome.zarr\", tcz=(0, 0, 20))"
|
|
304
326
|
]
|
|
305
327
|
},
|
|
306
328
|
{
|
|
307
329
|
"cell_type": "code",
|
|
308
|
-
"execution_count":
|
|
330
|
+
"execution_count": 10,
|
|
309
331
|
"id": "11b5c23c-d4b1-4170-ad0c-64c358b0cfe6",
|
|
310
332
|
"metadata": {},
|
|
311
333
|
"outputs": [
|
|
@@ -315,10 +337,10 @@
|
|
|
315
337
|
"3D image (z-stack), multi-channel (2 channels) - shape (T=1, C=2, Z=22, Y=128, X=128)"
|
|
316
338
|
],
|
|
317
339
|
"text/plain": [
|
|
318
|
-
"<ome_arrow.core.OMEArrow at
|
|
340
|
+
"<ome_arrow.core.OMEArrow at 0x38064c810>"
|
|
319
341
|
]
|
|
320
342
|
},
|
|
321
|
-
"execution_count":
|
|
343
|
+
"execution_count": 10,
|
|
322
344
|
"metadata": {},
|
|
323
345
|
"output_type": "execute_result"
|
|
324
346
|
},
|
|
@@ -334,6 +356,9 @@
|
|
|
334
356
|
}
|
|
335
357
|
],
|
|
336
358
|
"source": [
|
|
359
|
+
"# here we demonstrate that the data can be exported again\n",
|
|
360
|
+
"# into OME-Parquet format and re-imported\n",
|
|
361
|
+
"# into a new OME-Arrow object (from OME-Parquet data).\n",
|
|
337
362
|
"stack.export(how=\"ome-parquet\", out=\"example.ome.parquet\")\n",
|
|
338
363
|
"OMEArrow(data=\"example.ome.parquet\", tcz=(0, 0, 20))"
|
|
339
364
|
]
|
|
@@ -350,7 +375,7 @@
|
|
|
350
375
|
"2D image, single-channel - shape (T=1, C=1, Z=1, Y=30, X=30)"
|
|
351
376
|
],
|
|
352
377
|
"text/plain": [
|
|
353
|
-
"<ome_arrow.core.OMEArrow at
|
|
378
|
+
"<ome_arrow.core.OMEArrow at 0x167243690>"
|
|
354
379
|
]
|
|
355
380
|
},
|
|
356
381
|
"execution_count": 11,
|
|
@@ -369,6 +394,7 @@
|
|
|
369
394
|
}
|
|
370
395
|
],
|
|
371
396
|
"source": [
|
|
397
|
+
"# we can also slice the data to get a smaller region of interest\n",
|
|
372
398
|
"stack.slice(\n",
|
|
373
399
|
" x_min=40,\n",
|
|
374
400
|
" y_min=80,\n",
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# ---
|
|
2
|
+
# jupyter:
|
|
3
|
+
# jupytext:
|
|
4
|
+
# text_representation:
|
|
5
|
+
# extension: .py
|
|
6
|
+
# format_name: light
|
|
7
|
+
# format_version: '1.5'
|
|
8
|
+
# jupytext_version: 1.17.3
|
|
9
|
+
# kernelspec:
|
|
10
|
+
# display_name: ome-arrow
|
|
11
|
+
# language: python
|
|
12
|
+
# name: python3
|
|
13
|
+
# ---
|
|
14
|
+
|
|
15
|
+
# # Learning to fly with OME-Arrow
|
|
16
|
+
#
|
|
17
|
+
# This notebook provides a quick demonstration of what you can do with OME Arrow.
|
|
18
|
+
|
|
19
|
+
# we import a single class, OMEArrow
|
|
20
|
+
# which handles all data I/O and manipulation
|
|
21
|
+
from ome_arrow import OMEArrow
|
|
22
|
+
|
|
23
|
+
# read a TIFF file and convert it to OME-Arrow
|
|
24
|
+
oa_image = OMEArrow(
|
|
25
|
+
data="../../../tests/data/examplehuman/AS_09125_050116030001_D03f00d0.tif"
|
|
26
|
+
)
|
|
27
|
+
# by default, the image and metadata are shown
|
|
28
|
+
oa_image
|
|
29
|
+
|
|
30
|
+
# we can also get a summary of the OME-Arrow object
|
|
31
|
+
oa_image.info()
|
|
32
|
+
|
|
33
|
+
# we can export the data into a number
|
|
34
|
+
# of different formats, e.g. numpy
|
|
35
|
+
oa_image.export(how="numpy")
|
|
36
|
+
|
|
37
|
+
# We can also read in TIFF stacks following OME bfconvert API conventions
|
|
38
|
+
stack = OMEArrow(
|
|
39
|
+
data="../../../tests/data/nviz-artificial-4d-dataset/E99_C<111,222>_ZS<000-021>.tif",
|
|
40
|
+
# this is an optional for which
|
|
41
|
+
# timepoint, channel, and z-slice to show by default
|
|
42
|
+
tcz=(0, 0, 20),
|
|
43
|
+
)
|
|
44
|
+
stack
|
|
45
|
+
|
|
46
|
+
# we can visualize the stack using pyvista for 3D rendering
|
|
47
|
+
stack.view(how="pyvista")
|
|
48
|
+
|
|
49
|
+
# here we demonstrate that the data can be exported again
|
|
50
|
+
# into numpy format and re-imported
|
|
51
|
+
# into a new OME-Arrow object (from numpy data).
|
|
52
|
+
stack_np = stack.export(how="numpy")
|
|
53
|
+
OMEArrow(data=stack_np, tcz=(0, 0, 20))
|
|
54
|
+
|
|
55
|
+
# here we demonstrate that the data can be exported again
|
|
56
|
+
# into OME-TIFF format and re-imported
|
|
57
|
+
# into a new OME-Arrow object (from OME-TIFF data).
|
|
58
|
+
stack.export(how="ome-tiff", out="example.ome.tiff")
|
|
59
|
+
OMEArrow(data="example.ome.tiff", tcz=(0, 0, 20))
|
|
60
|
+
|
|
61
|
+
# here we demonstrate that the data can be exported again
|
|
62
|
+
# into OME-ZARR format and re-imported
|
|
63
|
+
# into a new OME-Arrow object (from OME-ZARR data).
|
|
64
|
+
stack.export(how="ome-zarr", out="example.ome.zarr")
|
|
65
|
+
OMEArrow(data="example.ome.zarr", tcz=(0, 0, 20))
|
|
66
|
+
|
|
67
|
+
# here we demonstrate that the data can be exported again
|
|
68
|
+
# into OME-Parquet format and re-imported
|
|
69
|
+
# into a new OME-Arrow object (from OME-Parquet data).
|
|
70
|
+
stack.export(how="ome-parquet", out="example.ome.parquet")
|
|
71
|
+
OMEArrow(data="example.ome.parquet", tcz=(0, 0, 20))
|
|
72
|
+
|
|
73
|
+
# we can also slice the data to get a smaller region of interest
|
|
74
|
+
stack.slice(
|
|
75
|
+
x_min=40,
|
|
76
|
+
y_min=80,
|
|
77
|
+
x_max=70,
|
|
78
|
+
y_max=110,
|
|
79
|
+
t_indices=[0],
|
|
80
|
+
c_indices=[0],
|
|
81
|
+
z_indices=[20],
|
|
82
|
+
)
|
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '0.0.
|
|
32
|
-
__version_tuple__ = version_tuple = (0, 0,
|
|
31
|
+
__version__ = version = '0.0.3'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 0, 3)
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'g401409c77'
|