Skip to content

Commit

Permalink
refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
bendichter committed May 17, 2024
1 parent 6ed3bca commit a383ecd
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 17 deletions.
6 changes: 4 additions & 2 deletions src/roiextractors/extractorlist.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@
BrukerTiffMultiPlaneImagingExtractor,
BrukerTiffSinglePlaneImagingExtractor,
MicroManagerTiffImagingExtractor,
MultiTiffMultiPageImagingExtractor,
MultiTiffImagingExtractor,
FolderTiffImagingExtractor,
)
from .extractors.sbximagingextractor import SbxImagingExtractor
from .extractors.inscopixextractors import InscopixImagingExtractor
Expand Down Expand Up @@ -52,7 +53,8 @@
NumpyMemmapImagingExtractor,
MemmapImagingExtractor,
VolumetricImagingExtractor,
MultiTiffMultiPageImagingExtractor,
MultiTiffImagingExtractor,
FolderTiffImagingExtractor,
InscopixImagingExtractor,
]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
Specialized extractor for reading TIFF files produced via Micro-Manager.
"""

from .tiffimagingextractor import TiffImagingExtractor, MultiTiffMultiPageImagingExtractor
from .tiffimagingextractor import TiffImagingExtractor, MultiTiffImagingExtractor, FolderTiffImagingExtractor
from .scanimagetiffimagingextractor import (
ScanImageTiffImagingExtractor,
ScanImageTiffMultiPlaneImagingExtractor,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
raise_multi_channel_or_depth_not_implemented,
get_package,
)
from ...utils import match_paths


class TiffImagingExtractor(ImagingExtractor):
Expand Down Expand Up @@ -154,31 +155,53 @@ def write_imaging(imaging, save_path, overwrite: bool = False, chunk_size=None,
tif.save(chunk_frames, contiguous=True, metadata=None)


class MultiTiffMultiPageImagingExtractor(MultiImagingExtractor):
class MultiTiffImagingExtractor(MultiImagingExtractor):
"""A ImagingExtractor for multiple TIFF files that each have multiple pages."""

extractor_name = "multi-tiff multi-page Imaging Extractor"
is_writable = False

def __init__(self, folder_path: str, pattern: str, sampling_frequency: float):
"""Create a MultiTiffMultiPageImagingExtractor instance.
def __init__(self, file_paths: list[str], sampling_frequency: float):
"""Create a MultiTiffImagingExtractor instance.
Parameters
----------
folder_path : str
List of path to each TIFF file.
pattern : str
F-string-style pattern to match the TIFF files.
file_paths: list of str
List of paths to the TIFF files.
sampling_frequency : float
The frequency at which the frames were sampled, in Hz.
"""

self.folder_path = folder_path
self.tif_paths = match_paths(folder_path, pattern)
if len(self.tif_paths) == 0:
raise ValueError("No TIFF files found in the folder_path with the given pattern.")
self.file_paths = file_paths
imaging_extractors = [
TiffImagingExtractor(file_path=x, sampling_frequency=sampling_frequency) for x in self.tif_paths
TiffImagingExtractor(file_path=x, sampling_frequency=sampling_frequency) for x in self.file_paths
]
super().__init__(imaging_extractors=imaging_extractors)
self._kwargs.update({"folder_path": folder_path})
self._kwargs.update({"file_paths": file_paths})


class FolderTiffImagingExtractor(MultiTiffImagingExtractor):
"""A ImagingExtractor for multiple TIFF files in a folder that each have multiple pages."""

extractor_name = "folder-tiff multi-page Imaging Extractor"
is_writable = False

def __init__(self, folder_path: PathType, pattern: str, sampling_frequency: float):
"""Create a FolderTiffImagingExtractor instance.
Parameters
----------
folder_path: PathType
Path to the folder containing the TIFF files.
pattern : str
The f-string pattern to match the TIFF files in the folder.
sampling_frequency : float
The frequency at which the frames were sampled, in Hz.
"""
folder_path = Path(folder_path)
file_paths = match_paths(str(folder_path), pattern)
super().__init__(file_paths=file_paths, sampling_frequency=sampling_frequency)
self._kwargs.update({
"folder_path": str(folder_path.absolute()),
"pattern": pattern,
})

0 comments on commit a383ecd

Please sign in to comment.