- bump tiffwrite

This commit is contained in:
Wim Pomp
2024-10-17 17:18:26 +02:00
parent 814bb0da85
commit e6d5ec0928
3 changed files with 16 additions and 9 deletions

View File

@@ -21,8 +21,8 @@ import yaml
from numpy.typing import ArrayLike, DTypeLike from numpy.typing import ArrayLike, DTypeLike
from ome_types import OME, from_xml, model, ureg from ome_types import OME, from_xml, model, ureg
from pint import set_application_registry from pint import set_application_registry
from tiffwrite import IFD, IJTiffFile # noqa from tiffwrite import FrameInfo, IJTiffParallel
from tqdm.auto import tqdm, trange from tqdm.auto import tqdm
from .jvm import JVM, JVMException from .jvm import JVM, JVMException
from .transforms import Transform, Transforms from .transforms import Transform, Transforms
@@ -50,14 +50,14 @@ class ReaderNotFoundError(Exception):
pass pass
class TransformTiff(IJTiffFile): class TransformTiff(IJTiffParallel):
""" transform frames in a parallel process to speed up saving """ """ transform frames in a parallel process to speed up saving """
def __init__(self, image: Imread, *args: Any, **kwargs: Any) -> None: def __init__(self, image: Imread, *args: Any, **kwargs: Any) -> None:
self.image = image self.image = image
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
def compress_frame(self, frame: tuple[int, int, int]) -> tuple[IFD, tuple[list[int], list[int]]]: def parallel(self, frame: tuple[int, int, int]) -> tuple[FrameInfo]:
return super().compress_frame(np.asarray(self.image(*frame)).astype(self.dtype)) return (np.asarray(self.image(*frame)), 0, 0, 0),
class DequeDict(OrderedDict): class DequeDict(OrderedDict):
@@ -398,6 +398,13 @@ class Imread(np.lib.mixins.NDArrayOperatorsMixin, ABC):
def __str__(self) -> str: def __str__(self) -> str:
return str(self.path) return str(self.path)
# @property
# def __array_interface__(self) -> dict[str, Any]:
# return dict(shape=tuple(self.shape), typestr=self.dtype.str, version=3, data=self.tobytes())
def tobytes(self) -> bytes:
return self.flatten().tobytes()
def __array__(self, dtype: DTypeLike = None, copy: bool = None) -> np.ndarray: def __array__(self, dtype: DTypeLike = None, copy: bool = None) -> np.ndarray:
if copy is False: if copy is False:
raise ValueError("`copy=False` isn't supported. A copy is always created.") raise ValueError("`copy=False` isn't supported. A copy is always created.")
@@ -1054,7 +1061,7 @@ class Imread(np.lib.mixins.NDArrayOperatorsMixin, ABC):
n[i] = (n[i],) n[i] = (n[i],)
shape = [len(i) for i in n] shape = [len(i) for i in n]
with TransformTiff(self, fname.with_suffix('.tif'), shape, pixel_type, with TransformTiff(self, fname.with_suffix('.tif'), pixel_type,
pxsize=self.pxsize_um, deltaz=self.deltaz_um, **kwargs) as tif: pxsize=self.pxsize_um, deltaz=self.deltaz_um, **kwargs) as tif:
for i, m in tqdm(zip(product(*[range(s) for s in shape]), product(*n)), # noqa for i, m in tqdm(zip(product(*[range(s) for s in shape]), product(*n)), # noqa
total=np.prod(shape), desc='Saving tiff', disable=not bar): total=np.prod(shape), desc='Saving tiff', disable=not bar):

View File

@@ -214,7 +214,7 @@ class Transforms(dict):
for file in bead_files: for file in bead_files:
with Imread(file) as im: with Imread(file) as im:
n_channels = max(n_channels, im.shape['c']) n_channels = max(n_channels, im.shape['c'])
with IJTiffFile(tiffile, (n_channels, 1, len(bead_files))) as tif: with IJTiffFile(tiffile) as tif:
for t, file in enumerate(bead_files): for t, file in enumerate(bead_files):
with Imread(file) as im: with Imread(file) as im:
with Imread(file).with_transform() as jm: with Imread(file).with_transform() as jm:

View File

@@ -1,6 +1,6 @@
[tool.poetry] [tool.poetry]
name = "ndbioimage" name = "ndbioimage"
version = "2024.9.2" version = "2024.10.0"
description = "Bio image reading, metadata and some affine registration." description = "Bio image reading, metadata and some affine registration."
authors = ["W. Pomp <w.pomp@nki.nl>"] authors = ["W. Pomp <w.pomp@nki.nl>"]
license = "GPLv3" license = "GPLv3"
@@ -16,7 +16,7 @@ numpy = ">=1.20.0"
pandas = "*" pandas = "*"
tifffile = "*" tifffile = "*"
czifile = "2019.7.2" czifile = "2019.7.2"
tiffwrite = "*" tiffwrite = ">=2024.10.4"
ome-types = ">=0.4.0" ome-types = ">=0.4.0"
pint = "*" pint = "*"
tqdm = "*" tqdm = "*"