Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor Miniscope Extractor Naming #374

Merged
merged 6 commits into from
Oct 22, 2024
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@
An ImagingExtractor for the Miniscope video (.avi) format.
"""

from .miniscopeimagingextractor import MiniscopeImagingExtractor
from .miniscopeimagingextractor import MiniscopeImagingExtractor, MiniscopeMultiRecordingImagingExtractor
Original file line number Diff line number Diff line change
Expand Up @@ -18,19 +18,43 @@
from ...extraction_tools import PathType, DtypeType, get_package


class MiniscopeImagingExtractor(MultiImagingExtractor): # TODO: rename to MiniscopeMultiImagingExtractor
"""An ImagingExtractor for the Miniscope video (.avi) format.

This format consists of video (.avi) file(s) and configuration files (.json).
One _MiniscopeImagingExtractor is created for each video file and then combined into the MiniscopeImagingExtractor.
class MiniscopeMultiRecordingImagingExtractor(MultiImagingExtractor):
"""
ImagingExtractor processes multiple separate Miniscope recordings within the same session.

Important, this extractor consolidates the recordings as a single continuous dataset.

Expected directory structure:

.
├── C6-J588_Disc5
│ ├── 15_03_28 (timestamp)
│ │ ├── BehavCam_2
│ │ ├── metaData.json
│ │ └── Miniscope
│ ├── 15_06_28 (timestamp)
│ │ ├── BehavCam_2
│ │ ├── metaData.json
│ │ └── Miniscope
│ └── 15_07_58 (timestamp)
│ ├── BehavCam_2
│ ├── metaData.json
│ └── Miniscope
└──

Where the Miniscope folders contain a collection of .avi files and a metaData.json file.

For each video file, a _MiniscopeSingleVideoExtractor is created. These individual extractors
are then combined into the MiniscopeMultiRecordingImagingExtractor to handle the session's recordings
as a unified, continuous dataset.
"""

extractor_name = "MiniscopeImaging"
extractor_name = "MiniscopeMultiImaging"
is_writable = True
mode = "folder"

def __init__(self, folder_path: PathType):
"""Create a MiniscopeImagingExtractor instance from a folder path.
"""Create a MiniscopeMultiRecordingImagingExtractor instance from a folder path.

Parameters
----------
Expand Down Expand Up @@ -58,24 +82,28 @@ def __init__(self, folder_path: PathType):

imaging_extractors = []
for file_path in miniscope_avi_file_paths:
extractor = _MiniscopeImagingExtractor(file_path=file_path)
extractor = _MiniscopeSingleVideoExtractor(file_path=file_path)
extractor._sampling_frequency = self._sampling_frequency
imaging_extractors.append(extractor)

super().__init__(imaging_extractors=imaging_extractors)


class _MiniscopeImagingExtractor(ImagingExtractor):
"""An ImagingExtractor for the Miniscope video (.avi) format.
# Temporary renaming to keep backwards compatibility
MiniscopeImagingExtractor = MiniscopeMultiRecordingImagingExtractor


class _MiniscopeSingleVideoExtractor(ImagingExtractor):
"""An auxiliar extractor to get data from a single Miniscope video (.avi) file.

This format consists of a single video (.avi) file and configuration file (.json).
Multiple _MiniscopeImagingExtractor are combined into the MiniscopeImagingExtractor for public access.
This format consists of a single video (.avi)
Multiple _MiniscopeSingleVideoExtractor are combined by downstream extractors to extract the data
"""

extractor_name = "_MiniscopeImaging"
extractor_name = "_MiniscopeSingleVideo"

def __init__(self, file_path: PathType):
"""Create a _MiniscopeImagingExtractor instance from a file path.
"""Create a _MiniscopeSingleVideoExtractor instance from a file path.

Parameters
----------
Expand Down
Loading