- bump tiffwrite
This commit is contained in:
@@ -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):
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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 = "*"
|
||||||
|
|||||||
Reference in New Issue
Block a user