Source code for meanap.catnap.scanner
"""Scan a data folder for suite2p recordings."""
from dataclasses import dataclass
from pathlib import Path
[docs]
@dataclass
class Suite2pRecording:
"""A discovered suite2p recording."""
name: str # top-level folder name (the recording name)
suite2p_dir: Path # path to the suite2p/plane0 directory
has_denoised: bool # whether Fdenoised.npy already exists
[docs]
def find_suite2p_recordings(root: str | Path) -> list[Suite2pRecording]:
"""
Walk *root* and return every sub-folder that contains suite2p/plane0/stat.npy.
Mirrors the logic in appCheckSuite2pData.m.
"""
root = Path(root)
recordings: list[Suite2pRecording] = []
if not root.is_dir():
return recordings
for child in sorted(root.iterdir()):
if not child.is_dir():
continue
plane0 = child / "suite2p" / "plane0"
if (plane0 / "stat.npy").exists():
recordings.append(Suite2pRecording(
name=child.name,
suite2p_dir=plane0,
has_denoised=(plane0 / "Fdenoised.npy").exists(),
))
return recordings