{
  "generatedAt": "2026-06-11T08:02:36.816782+00:00",
  "items": [
    {
      "decorators": [],
      "docstring": "PyTorch tools for voltage imaging movie processing and signal extraction.",
      "exports": [
        "__version__"
      ],
      "kind": "module",
      "module": "torch_volpy",
      "name": "torch_volpy",
      "public": true,
      "qualifiedName": "torch_volpy",
      "searchText": "module\ntorch_volpy\ntorch_volpy\npytorch tools for voltage imaging movie processing and signal extraction.\npytorch tools for voltage imaging movie processing and signal extraction.",
      "signature": "",
      "source": {
        "endLine": 1,
        "line": 1,
        "path": "src/torch_volpy/__init__.py"
      },
      "summary": "PyTorch tools for voltage imaging movie processing and signal extraction."
    },
    {
      "decorators": [],
      "docstring": "",
      "exports": [],
      "kind": "module",
      "module": "torch_volpy.extraction.ALI",
      "name": "torch_volpy.extraction.ALI",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI",
      "searchText": "module\ntorch_volpy.extraction.ali\ntorch_volpy.extraction.ali",
      "signature": "",
      "source": {
        "endLine": 1,
        "line": 1,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": ""
    },
    {
      "bases": [],
      "dataclass": true,
      "decorators": [
        "dataclass"
      ],
      "docstring": "Container for intermediate and final outputs from the ALI pipeline.",
      "kind": "class",
      "module": "torch_volpy.extraction.ALI",
      "name": "ALIResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALIResult",
      "searchText": "class\naliresult\ntorch_volpy.extraction.ali.aliresult\n()\ncontainer for intermediate and final outputs from the ali pipeline.\ncontainer for intermediate and final outputs from the ali pipeline.\ndataclass",
      "signature": "()",
      "source": {
        "endLine": 34,
        "line": 10,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Container for intermediate and final outputs from the ALI pipeline."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `data`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.ALI",
      "name": "data",
      "parent": "torch_volpy.extraction.ALI.ALIResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALIResult.data",
      "searchText": "field\ndata\ntorch_volpy.extraction.ali.aliresult.data\n: torch.tensor\ndataclass field `data`. type: `torch.tensor`.\ndataclass field `data`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 12,
        "line": 12,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Dataclass field `data`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `df`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.ALI",
      "name": "df",
      "parent": "torch_volpy.extraction.ALI.ALIResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALIResult.df",
      "searchText": "field\ndf\ntorch_volpy.extraction.ali.aliresult.df\n: torch.tensor\ndataclass field `df`. type: `torch.tensor`.\ndataclass field `df`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 13,
        "line": 13,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Dataclass field `df`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `f0`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.ALI",
      "name": "f0",
      "parent": "torch_volpy.extraction.ALI.ALIResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALIResult.f0",
      "searchText": "field\nf0\ntorch_volpy.extraction.ali.aliresult.f0\n: torch.tensor\ndataclass field `f0`. type: `torch.tensor`.\ndataclass field `f0`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 14,
        "line": 14,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Dataclass field `f0`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `spk`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.ALI",
      "name": "spk",
      "parent": "torch_volpy.extraction.ALI.ALIResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALIResult.spk",
      "searchText": "field\nspk\ntorch_volpy.extraction.ali.aliresult.spk\n: torch.tensor\ndataclass field `spk`. type: `torch.tensor`.\ndataclass field `spk`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 15,
        "line": 15,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Dataclass field `spk`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `df_ap`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.ALI",
      "name": "df_ap",
      "parent": "torch_volpy.extraction.ALI.ALIResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALIResult.df_ap",
      "searchText": "field\ndf_ap\ntorch_volpy.extraction.ali.aliresult.df_ap\n: torch.tensor\ndataclass field `df_ap`. type: `torch.tensor`.\ndataclass field `df_ap`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 16,
        "line": 16,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Dataclass field `df_ap`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `df_ap_denoised`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.ALI",
      "name": "df_ap_denoised",
      "parent": "torch_volpy.extraction.ALI.ALIResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALIResult.df_ap_denoised",
      "searchText": "field\ndf_ap_denoised\ntorch_volpy.extraction.ali.aliresult.df_ap_denoised\n: torch.tensor\ndataclass field `df_ap_denoised`. type: `torch.tensor`.\ndataclass field `df_ap_denoised`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 17,
        "line": 17,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Dataclass field `df_ap_denoised`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `ucomps`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.ALI",
      "name": "ucomps",
      "parent": "torch_volpy.extraction.ALI.ALIResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALIResult.ucomps",
      "searchText": "field\nucomps\ntorch_volpy.extraction.ali.aliresult.ucomps\n: torch.tensor\ndataclass field `ucomps`. type: `torch.tensor`.\ndataclass field `ucomps`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 18,
        "line": 18,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Dataclass field `ucomps`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `vcomps`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.ALI",
      "name": "vcomps",
      "parent": "torch_volpy.extraction.ALI.ALIResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALIResult.vcomps",
      "searchText": "field\nvcomps\ntorch_volpy.extraction.ali.aliresult.vcomps\n: torch.tensor\ndataclass field `vcomps`. type: `torch.tensor`.\ndataclass field `vcomps`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 19,
        "line": 19,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Dataclass field `vcomps`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `spk_fine`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.ALI",
      "name": "spk_fine",
      "parent": "torch_volpy.extraction.ALI.ALIResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALIResult.spk_fine",
      "searchText": "field\nspk_fine\ntorch_volpy.extraction.ali.aliresult.spk_fine\n: torch.tensor\ndataclass field `spk_fine`. type: `torch.tensor`.\ndataclass field `spk_fine`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 20,
        "line": 20,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Dataclass field `spk_fine`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `brightness`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.ALI",
      "name": "brightness",
      "parent": "torch_volpy.extraction.ALI.ALIResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALIResult.brightness",
      "searchText": "field\nbrightness\ntorch_volpy.extraction.ali.aliresult.brightness\n: torch.tensor\ndataclass field `brightness`. type: `torch.tensor`.\ndataclass field `brightness`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 21,
        "line": 21,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Dataclass field `brightness`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `roi`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.ALI",
      "name": "roi",
      "parent": "torch_volpy.extraction.ALI.ALIResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALIResult.roi",
      "searchText": "field\nroi\ntorch_volpy.extraction.ali.aliresult.roi\n: torch.tensor\ndataclass field `roi`. type: `torch.tensor`.\ndataclass field `roi`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 22,
        "line": 22,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Dataclass field `roi`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `cnt`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.ALI",
      "name": "cnt",
      "parent": "torch_volpy.extraction.ALI.ALIResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALIResult.cnt",
      "searchText": "field\ncnt\ntorch_volpy.extraction.ali.aliresult.cnt\n: torch.tensor\ndataclass field `cnt`. type: `torch.tensor`.\ndataclass field `cnt`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 23,
        "line": 23,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Dataclass field `cnt`. Type: `torch.Tensor`."
    },
    {
      "annotation": "Tuple[torch.Tensor, torch.Tensor]",
      "decorators": [],
      "docstring": "Dataclass field `cen`. Type: `Tuple[torch.Tensor, torch.Tensor]`.",
      "kind": "field",
      "module": "torch_volpy.extraction.ALI",
      "name": "cen",
      "parent": "torch_volpy.extraction.ALI.ALIResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALIResult.cen",
      "searchText": "field\ncen\ntorch_volpy.extraction.ali.aliresult.cen\n: tuple[torch.tensor, torch.tensor]\ndataclass field `cen`. type: `tuple[torch.tensor, torch.tensor]`.\ndataclass field `cen`. type: `tuple[torch.tensor, torch.tensor]`.\ntuple[torch.tensor, torch.tensor]",
      "signature": ": Tuple[torch.Tensor, torch.Tensor]",
      "source": {
        "endLine": 24,
        "line": 24,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Dataclass field `cen`. Type: `Tuple[torch.Tensor, torch.Tensor]`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `alimap`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.ALI",
      "name": "alimap",
      "parent": "torch_volpy.extraction.ALI.ALIResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALIResult.alimap",
      "searchText": "field\nalimap\ntorch_volpy.extraction.ali.aliresult.alimap\n: torch.tensor\ndataclass field `alimap`. type: `torch.tensor`.\ndataclass field `alimap`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 25,
        "line": 25,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Dataclass field `alimap`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `peaks`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.ALI",
      "name": "peaks",
      "parent": "torch_volpy.extraction.ALI.ALIResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALIResult.peaks",
      "searchText": "field\npeaks\ntorch_volpy.extraction.ali.aliresult.peaks\n: torch.tensor\ndataclass field `peaks`. type: `torch.tensor`.\ndataclass field `peaks`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 26,
        "line": 26,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Dataclass field `peaks`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `clust_cen`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.ALI",
      "name": "clust_cen",
      "parent": "torch_volpy.extraction.ALI.ALIResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALIResult.clust_cen",
      "searchText": "field\nclust_cen\ntorch_volpy.extraction.ali.aliresult.clust_cen\n: torch.tensor\ndataclass field `clust_cen`. type: `torch.tensor`.\ndataclass field `clust_cen`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 27,
        "line": 27,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Dataclass field `clust_cen`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `clust_idx`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.ALI",
      "name": "clust_idx",
      "parent": "torch_volpy.extraction.ALI.ALIResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALIResult.clust_idx",
      "searchText": "field\nclust_idx\ntorch_volpy.extraction.ali.aliresult.clust_idx\n: torch.tensor\ndataclass field `clust_idx`. type: `torch.tensor`.\ndataclass field `clust_idx`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 28,
        "line": 28,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Dataclass field `clust_idx`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `sort_idx`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.ALI",
      "name": "sort_idx",
      "parent": "torch_volpy.extraction.ALI.ALIResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALIResult.sort_idx",
      "searchText": "field\nsort_idx\ntorch_volpy.extraction.ali.aliresult.sort_idx\n: torch.tensor\ndataclass field `sort_idx`. type: `torch.tensor`.\ndataclass field `sort_idx`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 29,
        "line": 29,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Dataclass field `sort_idx`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `footprint`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.ALI",
      "name": "footprint",
      "parent": "torch_volpy.extraction.ALI.ALIResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALIResult.footprint",
      "searchText": "field\nfootprint\ntorch_volpy.extraction.ali.aliresult.footprint\n: torch.tensor\ndataclass field `footprint`. type: `torch.tensor`.\ndataclass field `footprint`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 30,
        "line": 30,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Dataclass field `footprint`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `fp`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.ALI",
      "name": "fp",
      "parent": "torch_volpy.extraction.ALI.ALIResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALIResult.fp",
      "searchText": "field\nfp\ntorch_volpy.extraction.ali.aliresult.fp\n: torch.tensor\ndataclass field `fp`. type: `torch.tensor`.\ndataclass field `fp`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 31,
        "line": 31,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Dataclass field `fp`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `support`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.ALI",
      "name": "support",
      "parent": "torch_volpy.extraction.ALI.ALIResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALIResult.support",
      "searchText": "field\nsupport\ntorch_volpy.extraction.ali.aliresult.support\n: torch.tensor\ndataclass field `support`. type: `torch.tensor`.\ndataclass field `support`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 32,
        "line": 32,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Dataclass field `support`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `traces_ls`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.ALI",
      "name": "traces_ls",
      "parent": "torch_volpy.extraction.ALI.ALIResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALIResult.traces_ls",
      "searchText": "field\ntraces_ls\ntorch_volpy.extraction.ali.aliresult.traces_ls\n: torch.tensor\ndataclass field `traces_ls`. type: `torch.tensor`.\ndataclass field `traces_ls`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 33,
        "line": 33,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Dataclass field `traces_ls`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `traces`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.ALI",
      "name": "traces",
      "parent": "torch_volpy.extraction.ALI.ALIResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALIResult.traces",
      "searchText": "field\ntraces\ntorch_volpy.extraction.ali.aliresult.traces\n: torch.tensor\ndataclass field `traces`. type: `torch.tensor`.\ndataclass field `traces`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 34,
        "line": 34,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Dataclass field `traces`. Type: `torch.Tensor`."
    },
    {
      "bases": [],
      "dataclass": false,
      "decorators": [],
      "docstring": "Activity Localization Imaging (ALI) pipeline in pure PyTorch.\n\nDevice policy:\n    - If `device` is passed at init, the whole pipeline runs there.\n    - Otherwise, tensors run on the input tensor's device.\n    - Non-tensor inputs default to CPU.\n    - Outputs stay on the working device.\n\nInput:\n    data: array-like or torch.Tensor of shape [H, W, T]\n\nOutput dict keys:\n    data, df, f0, spk, df_ap, df_ap_denoised, ucomps, vcomps, spk_fine,\n    brightness, roi, cnt, cen, alimap, peaks, clust_cen,\n    clust_idx, sort_idx, footprint, fp, support, traces_ls, traces",
      "kind": "class",
      "module": "torch_volpy.extraction.ALI",
      "name": "ALI",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALI",
      "searchText": "class\nali\ntorch_volpy.extraction.ali.ali\n(fs: int = 2000, hp_window_ms: float = 10.0, nsvd: int = 25, factor: int = 4, coarse_sigma: float = 1.8, coarse_gaussian_radius: int = 2, coarse_threshold_std: float = 5.0, min_component_size: int = 4, fine_npix: int = 15, fine_radius: float = 4.0, cluster_threshold: float = 2.0, peak_kernel_size: int = 3, assign_radius: float = 1.5, alimap_sigma: float = 0.7, alimap_gaussian_radius: int = 2, footprint_radius: float = 10.0, solve_eps: float = 1e-06, device: optional[str] = none, cc_max_iter: int = 2048, verbose: bool = false) -> none\nactivity localization imaging (ali) pipeline in pure pytorch.\nactivity localization imaging (ali) pipeline in pure pytorch.\n\ndevice policy:\n    - if `device` is passed at init, the whole pipeline runs there.\n    - otherwise, tensors run on the input tensor's device.\n    - non-tensor inputs default to cpu.\n    - outputs stay on the working device.\n\ninput:\n    data: array-like or torch.tensor of shape [h, w, t]\n\noutput dict keys:\n    data, df, f0, spk, df_ap, df_ap_denoised, ucomps, vcomps, spk_fine,\n    brightness, roi, cnt, cen, alimap, peaks, clust_cen,\n    clust_idx, sort_idx, footprint, fp, support, traces_ls, traces",
      "signature": "(fs: int = 2000, hp_window_ms: float = 10.0, nsvd: int = 25, factor: int = 4, coarse_sigma: float = 1.8, coarse_gaussian_radius: int = 2, coarse_threshold_std: float = 5.0, min_component_size: int = 4, fine_npix: int = 15, fine_radius: float = 4.0, cluster_threshold: float = 2.0, peak_kernel_size: int = 3, assign_radius: float = 1.5, alimap_sigma: float = 0.7, alimap_gaussian_radius: int = 2, footprint_radius: float = 10.0, solve_eps: float = 1e-06, device: Optional[str] = None, cc_max_iter: int = 2048, verbose: bool = False) -> None",
      "source": {
        "endLine": 833,
        "line": 37,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Activity Localization Imaging (ALI) pipeline in pure PyTorch."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.ALI",
      "name": "__init__",
      "parent": "torch_volpy.extraction.ALI.ALI",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.ALI.ALI.__init__",
      "searchText": "method\n__init__\ntorch_volpy.extraction.ali.ali.__init__\n(self, fs: int = 2000, hp_window_ms: float = 10.0, nsvd: int = 25, factor: int = 4, coarse_sigma: float = 1.8, coarse_gaussian_radius: int = 2, coarse_threshold_std: float = 5.0, min_component_size: int = 4, fine_npix: int = 15, fine_radius: float = 4.0, cluster_threshold: float = 2.0, peak_kernel_size: int = 3, assign_radius: float = 1.5, alimap_sigma: float = 0.7, alimap_gaussian_radius: int = 2, footprint_radius: float = 10.0, solve_eps: float = 1e-06, device: optional[str] = none, cc_max_iter: int = 2048, verbose: bool = false) -> none",
      "signature": "(self, fs: int = 2000, hp_window_ms: float = 10.0, nsvd: int = 25, factor: int = 4, coarse_sigma: float = 1.8, coarse_gaussian_radius: int = 2, coarse_threshold_std: float = 5.0, min_component_size: int = 4, fine_npix: int = 15, fine_radius: float = 4.0, cluster_threshold: float = 2.0, peak_kernel_size: int = 3, assign_radius: float = 1.5, alimap_sigma: float = 0.7, alimap_gaussian_radius: int = 2, footprint_radius: float = 10.0, solve_eps: float = 1e-06, device: Optional[str] = None, cc_max_iter: int = 2048, verbose: bool = False) -> None",
      "source": {
        "endLine": 107,
        "line": 56,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Run the ALI pipeline on an input movie crop.",
      "kind": "method",
      "module": "torch_volpy.extraction.ALI",
      "name": "__call__",
      "parent": "torch_volpy.extraction.ALI.ALI",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALI.__call__",
      "searchText": "method\n__call__\ntorch_volpy.extraction.ali.ali.__call__\n(self, data: any) -> aliresult\nrun the ali pipeline on an input movie crop.\nrun the ali pipeline on an input movie crop.",
      "signature": "(self, data: Any) -> ALIResult",
      "source": {
        "endLine": 111,
        "line": 109,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Run the ALI pipeline on an input movie crop."
    },
    {
      "decorators": [],
      "docstring": "Set the default torch device used by subsequent ALI runs.",
      "kind": "method",
      "module": "torch_volpy.extraction.ALI",
      "name": "to",
      "parent": "torch_volpy.extraction.ALI.ALI",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALI.to",
      "searchText": "method\nto\ntorch_volpy.extraction.ali.ali.to\n(self, device: str) -> 'ali'\nset the default torch device used by subsequent ali runs.\nset the default torch device used by subsequent ali runs.",
      "signature": "(self, device: str) -> 'ALI'",
      "source": {
        "endLine": 118,
        "line": 113,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Set the default torch device used by subsequent ALI runs."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.ALI",
      "name": "_resolve_device",
      "parent": "torch_volpy.extraction.ALI.ALI",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.ALI.ALI._resolve_device",
      "searchText": "method\n_resolve_device\ntorch_volpy.extraction.ali.ali._resolve_device\n(self, x: any) -> torch.device",
      "signature": "(self, x: Any) -> torch.device",
      "source": {
        "endLine": 125,
        "line": 120,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.ALI",
      "name": "_as_tensor",
      "parent": "torch_volpy.extraction.ALI.ALI",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.ALI.ALI._as_tensor",
      "searchText": "method\n_as_tensor\ntorch_volpy.extraction.ali.ali._as_tensor\n(self, x: any, device: torch.device) -> torch.tensor",
      "signature": "(self, x: Any, device: torch.device) -> torch.Tensor",
      "source": {
        "endLine": 130,
        "line": 127,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.extraction.ALI",
      "name": "_ensure_odd",
      "parent": "torch_volpy.extraction.ALI.ALI",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.ALI.ALI._ensure_odd",
      "searchText": "staticmethod\n_ensure_odd\ntorch_volpy.extraction.ali.ali._ensure_odd\n(k: int) -> int\nstaticmethod",
      "signature": "(k: int) -> int",
      "source": {
        "endLine": 134,
        "line": 133,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.ALI",
      "name": "_hp_window_samples",
      "parent": "torch_volpy.extraction.ALI.ALI",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.ALI.ALI._hp_window_samples",
      "searchText": "method\n_hp_window_samples\ntorch_volpy.extraction.ali.ali._hp_window_samples\n(self, t: int) -> int",
      "signature": "(self, T: int) -> int",
      "source": {
        "endLine": 141,
        "line": 136,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.extraction.ALI",
      "name": "_gaussian_kernel2d",
      "parent": "torch_volpy.extraction.ALI.ALI",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.ALI.ALI._gaussian_kernel2d",
      "searchText": "staticmethod\n_gaussian_kernel2d\ntorch_volpy.extraction.ali.ali._gaussian_kernel2d\n(sigma: float, radius: int, device: torch.device, dtype: torch.dtype) -> torch.tensor\nstaticmethod",
      "signature": "(sigma: float, radius: int, device: torch.device, dtype: torch.dtype) -> torch.Tensor",
      "source": {
        "endLine": 154,
        "line": 144,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "stack: [H, W, T]\nreturns: [H, W, T]",
      "kind": "method",
      "module": "torch_volpy.extraction.ALI",
      "name": "_gaussian_blur_frames",
      "parent": "torch_volpy.extraction.ALI.ALI",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.ALI.ALI._gaussian_blur_frames",
      "searchText": "method\n_gaussian_blur_frames\ntorch_volpy.extraction.ali.ali._gaussian_blur_frames\n(self, stack: torch.tensor, sigma: float, radius: int) -> torch.tensor\nstack: [h, w, t]\nstack: [h, w, t]\nreturns: [h, w, t]",
      "signature": "(self, stack: torch.Tensor, sigma: float, radius: int) -> torch.Tensor",
      "source": {
        "endLine": 175,
        "line": 156,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "stack: [H, W, T]"
    },
    {
      "decorators": [],
      "docstring": "image: [H, W]\nreturns: [H, W]",
      "kind": "method",
      "module": "torch_volpy.extraction.ALI",
      "name": "_gaussian_blur_image",
      "parent": "torch_volpy.extraction.ALI.ALI",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.ALI.ALI._gaussian_blur_image",
      "searchText": "method\n_gaussian_blur_image\ntorch_volpy.extraction.ali.ali._gaussian_blur_image\n(self, image: torch.tensor, sigma: float, radius: int) -> torch.tensor\nimage: [h, w]\nimage: [h, w]\nreturns: [h, w]",
      "signature": "(self, image: torch.Tensor, sigma: float, radius: int) -> torch.Tensor",
      "source": {
        "endLine": 196,
        "line": 177,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "image: [H, W]"
    },
    {
      "decorators": [],
      "docstring": "Median high-pass filter along time for each pixel trace.\n\nstack: [H, W, T]\nreturns: [H, W, T]",
      "kind": "method",
      "module": "torch_volpy.extraction.ALI",
      "name": "hp_filter",
      "parent": "torch_volpy.extraction.ALI.ALI",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALI.hp_filter",
      "searchText": "method\nhp_filter\ntorch_volpy.extraction.ali.ali.hp_filter\n(self, stack: torch.tensor) -> torch.tensor\nmedian high-pass filter along time for each pixel trace.\nmedian high-pass filter along time for each pixel trace.\n\nstack: [h, w, t]\nreturns: [h, w, t]",
      "signature": "(self, stack: torch.Tensor) -> torch.Tensor",
      "source": {
        "endLine": 220,
        "line": 198,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Median high-pass filter along time for each pixel trace."
    },
    {
      "decorators": [],
      "docstring": "26-connected components for [H, W, T] bool tensor using iterative max-pooling.\nWorks on CPU and CUDA.\n\nReturns:\n    labeled: [H, W, T] long tensor\n    num_features: int",
      "kind": "method",
      "module": "torch_volpy.extraction.ALI",
      "name": "_connected_components_3d_torch",
      "parent": "torch_volpy.extraction.ALI.ALI",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.ALI.ALI._connected_components_3d_torch",
      "searchText": "method\n_connected_components_3d_torch\ntorch_volpy.extraction.ali.ali._connected_components_3d_torch\n(self, bw: torch.tensor) -> tuple[torch.tensor, int]\n26-connected components for [h, w, t] bool tensor using iterative max-pooling.\n26-connected components for [h, w, t] bool tensor using iterative max-pooling.\nworks on cpu and cuda.\n\nreturns:\n    labeled: [h, w, t] long tensor\n    num_features: int",
      "signature": "(self, bw: torch.Tensor) -> Tuple[torch.Tensor, int]",
      "source": {
        "endLine": 262,
        "line": 222,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "26-connected components for [H, W, T] bool tensor using iterative max-pooling."
    },
    {
      "decorators": [],
      "docstring": "Detect coarse spike locations from positive-going events.\n\ndf_pos: [H, W, T]\nreturns:\n    spk: [N, 3] int64, columns are [row, col, frame]",
      "kind": "method",
      "module": "torch_volpy.extraction.ALI",
      "name": "spk_coarse",
      "parent": "torch_volpy.extraction.ALI.ALI",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALI.spk_coarse",
      "searchText": "method\nspk_coarse\ntorch_volpy.extraction.ali.ali.spk_coarse\n(self, df_pos: torch.tensor) -> torch.tensor\ndetect coarse spike locations from positive-going events.\ndetect coarse spike locations from positive-going events.\n\ndf_pos: [h, w, t]\nreturns:\n    spk: [n, 3] int64, columns are [row, col, frame]",
      "signature": "(self, df_pos: torch.Tensor) -> torch.Tensor",
      "source": {
        "endLine": 303,
        "line": 264,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Detect coarse spike locations from positive-going events."
    },
    {
      "decorators": [],
      "docstring": "Truncated SVD denoising.\n\ndf_ap: [H, W, N]\nreturns:\n    df_denoised: [H, W, N]\n    ucomps: [H, W, K]\n    vcomps: [N, K]",
      "kind": "method",
      "module": "torch_volpy.extraction.ALI",
      "name": "denoising",
      "parent": "torch_volpy.extraction.ALI.ALI",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALI.denoising",
      "searchText": "method\ndenoising\ntorch_volpy.extraction.ali.ali.denoising\n(self, df_ap: torch.tensor, nsvd: optional[int] = none) -> tuple[torch.tensor, torch.tensor, torch.tensor]\ntruncated svd denoising.\ntruncated svd denoising.\n\ndf_ap: [h, w, n]\nreturns:\n    df_denoised: [h, w, n]\n    ucomps: [h, w, k]\n    vcomps: [n, k]",
      "signature": "(self, df_ap: torch.Tensor, nsvd: Optional[int] = None) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]",
      "source": {
        "endLine": 336,
        "line": 305,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Truncated SVD denoising."
    },
    {
      "decorators": [],
      "docstring": "Return up to N brightest connected pixels within radius of startpix.\n\nInputs:\n    im: [H, W]\n    startpix: [2] long tensor [row, col]\n\nReturns:\n    pixel_list: [M] linear indices\n    roimap: [H, W] bool\n    indexIJ: [M, 2] long, rows then cols",
      "kind": "method",
      "module": "torch_volpy.extraction.ALI",
      "name": "select_connected",
      "parent": "torch_volpy.extraction.ALI.ALI",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALI.select_connected",
      "searchText": "method\nselect_connected\ntorch_volpy.extraction.ali.ali.select_connected\n(self, im: torch.tensor, startpix: torch.tensor, n: int, radius: float) -> tuple[torch.tensor, torch.tensor, torch.tensor]\nreturn up to n brightest connected pixels within radius of startpix.\nreturn up to n brightest connected pixels within radius of startpix.\n\ninputs:\n    im: [h, w]\n    startpix: [2] long tensor [row, col]\n\nreturns:\n    pixel_list: [m] linear indices\n    roimap: [h, w] bool\n    indexij: [m, 2] long, rows then cols",
      "signature": "(self, im: torch.Tensor, startpix: torch.Tensor, N: int, radius: float) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]",
      "source": {
        "endLine": 393,
        "line": 338,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Return up to N brightest connected pixels within radius of startpix."
    },
    {
      "decorators": [],
      "docstring": "Sub-pixel spike localization.\n\ndf_pos: [H, W, N]\ninitloc: [N, 2] integer coarse locations in 0-based coords\n\nreturns:\n    sloc: [N, 2] float\n    bns: [N]\n    roi: [H, W, N] bool",
      "kind": "method",
      "module": "torch_volpy.extraction.ALI",
      "name": "spk_fine",
      "parent": "torch_volpy.extraction.ALI.ALI",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALI.spk_fine",
      "searchText": "method\nspk_fine\ntorch_volpy.extraction.ali.ali.spk_fine\n(self, df_pos: torch.tensor, npix: optional[int] = none, radius: optional[float] = none, initloc: optional[torch.tensor] = none) -> tuple[torch.tensor, torch.tensor, torch.tensor]\nsub-pixel spike localization.\nsub-pixel spike localization.\n\ndf_pos: [h, w, n]\ninitloc: [n, 2] integer coarse locations in 0-based coords\n\nreturns:\n    sloc: [n, 2] float\n    bns: [n]\n    roi: [h, w, n] bool",
      "signature": "(self, df_pos: torch.Tensor, npix: Optional[int] = None, radius: Optional[float] = None, initloc: Optional[torch.Tensor] = None) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]",
      "source": {
        "endLine": 455,
        "line": 395,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Sub-pixel spike localization."
    },
    {
      "decorators": [],
      "docstring": "Build a high-resolution spike density map using 0-based coordinates.\n\nsloc: [N, 2] with row/col in 0-based pixel coordinates\nsz: (H, W)\n\nreturns:\n    cnt: [H*factor, W*factor]\n    cen: (cen_row, cen_col)",
      "kind": "method",
      "module": "torch_volpy.extraction.ALI",
      "name": "density_map",
      "parent": "torch_volpy.extraction.ALI.ALI",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALI.density_map",
      "searchText": "method\ndensity_map\ntorch_volpy.extraction.ali.ali.density_map\n(self, sloc: torch.tensor, sz: tuple[int, int], factor: optional[int] = none) -> tuple[torch.tensor, tuple[torch.tensor, torch.tensor]]\nbuild a high-resolution spike density map using 0-based coordinates.\nbuild a high-resolution spike density map using 0-based coordinates.\n\nsloc: [n, 2] with row/col in 0-based pixel coordinates\nsz: (h, w)\n\nreturns:\n    cnt: [h*factor, w*factor]\n    cen: (cen_row, cen_col)",
      "signature": "(self, sloc: torch.Tensor, sz: Tuple[int, int], factor: Optional[int] = None) -> Tuple[torch.Tensor, Tuple[torch.Tensor, torch.Tensor]]",
      "source": {
        "endLine": 498,
        "line": 457,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Build a high-resolution spike density map using 0-based coordinates."
    },
    {
      "decorators": [],
      "docstring": "Local-max peak detection in torch.\n\nalimap: [H, W]\nreturns:\n    peaks: [N, 2] int64 [row_idx, col_idx]",
      "kind": "method",
      "module": "torch_volpy.extraction.ALI",
      "name": "detect_peaks",
      "parent": "torch_volpy.extraction.ALI.ALI",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALI.detect_peaks",
      "searchText": "method\ndetect_peaks\ntorch_volpy.extraction.ali.ali.detect_peaks\n(self, alimap: torch.tensor, threshold_abs: optional[float] = none, kernel_size: optional[int] = none) -> torch.tensor\nlocal-max peak detection in torch.\nlocal-max peak detection in torch.\n\nalimap: [h, w]\nreturns:\n    peaks: [n, 2] int64 [row_idx, col_idx]",
      "signature": "(self, alimap: torch.Tensor, threshold_abs: Optional[float] = None, kernel_size: Optional[int] = None) -> torch.Tensor",
      "source": {
        "endLine": 528,
        "line": 500,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Local-max peak detection in torch."
    },
    {
      "decorators": [],
      "docstring": "Assign spikes to nearest cluster center.\n\nsloc: [N, 2]\nclust_cen: [2, C]\nreturns:\n    clust_idx: [N], values in {0,1,...,C}; 0 = unassigned",
      "kind": "method",
      "module": "torch_volpy.extraction.ALI",
      "name": "assign_cluster",
      "parent": "torch_volpy.extraction.ALI.ALI",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALI.assign_cluster",
      "searchText": "method\nassign_cluster\ntorch_volpy.extraction.ali.ali.assign_cluster\n(self, sloc: torch.tensor, clust_cen: torch.tensor, radius: optional[float] = none) -> torch.tensor\nassign spikes to nearest cluster center.\nassign spikes to nearest cluster center.\n\nsloc: [n, 2]\nclust_cen: [2, c]\nreturns:\n    clust_idx: [n], values in {0,1,...,c}; 0 = unassigned",
      "signature": "(self, sloc: torch.Tensor, clust_cen: torch.Tensor, radius: Optional[float] = None) -> torch.Tensor",
      "source": {
        "endLine": 557,
        "line": 530,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Assign spikes to nearest cluster center."
    },
    {
      "decorators": [],
      "docstring": "Limit footprint support to an r-pixel disk around the cluster center.\n\nfootprint: [H, W, C]\nclust_cen: [2, C]",
      "kind": "method",
      "module": "torch_volpy.extraction.ALI",
      "name": "fp_support",
      "parent": "torch_volpy.extraction.ALI.ALI",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALI.fp_support",
      "searchText": "method\nfp_support\ntorch_volpy.extraction.ali.ali.fp_support\n(self, footprint: torch.tensor, clust_cen: torch.tensor, r: optional[float] = none) -> tuple[torch.tensor, torch.tensor]\nlimit footprint support to an r-pixel disk around the cluster center.\nlimit footprint support to an r-pixel disk around the cluster center.\n\nfootprint: [h, w, c]\nclust_cen: [2, c]",
      "signature": "(self, footprint: torch.Tensor, clust_cen: torch.Tensor, r: Optional[float] = None) -> Tuple[torch.Tensor, torch.Tensor]",
      "source": {
        "endLine": 594,
        "line": 559,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Limit footprint support to an r-pixel disk around the cluster center."
    },
    {
      "decorators": [],
      "docstring": "Extract temporal traces from df movie given footprints.\n\ndf: [P, T]\nfp: [P, C]\n\nreturns:\n    trace_ls: [T, C]\n    trace_new: [T, C]",
      "kind": "method",
      "module": "torch_volpy.extraction.ALI",
      "name": "t_decompose",
      "parent": "torch_volpy.extraction.ALI.ALI",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALI.t_decompose",
      "searchText": "method\nt_decompose\ntorch_volpy.extraction.ali.ali.t_decompose\n(self, df: torch.tensor, fp: torch.tensor) -> tuple[torch.tensor, torch.tensor]\nextract temporal traces from df movie given footprints.\nextract temporal traces from df movie given footprints.\n\ndf: [p, t]\nfp: [p, c]\n\nreturns:\n    trace_ls: [t, c]\n    trace_new: [t, c]",
      "signature": "(self, df: torch.Tensor, fp: torch.Tensor) -> Tuple[torch.Tensor, torch.Tensor]",
      "source": {
        "endLine": 637,
        "line": 596,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Extract temporal traces from df movie given footprints."
    },
    {
      "decorators": [],
      "docstring": "Average df frames for spikes assigned to each cluster.\n\ndf: [H, W, T]\nspike_frames: [N]\nclust_idx: [N]\nreturns:\n    footprint: [H, W, C]",
      "kind": "method",
      "module": "torch_volpy.extraction.ALI",
      "name": "compute_footprints",
      "parent": "torch_volpy.extraction.ALI.ALI",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALI.compute_footprints",
      "searchText": "method\ncompute_footprints\ntorch_volpy.extraction.ali.ali.compute_footprints\n(self, df: torch.tensor, spike_frames: torch.tensor, clust_idx: torch.tensor, nclust: int) -> torch.tensor\naverage df frames for spikes assigned to each cluster.\naverage df frames for spikes assigned to each cluster.\n\ndf: [h, w, t]\nspike_frames: [n]\nclust_idx: [n]\nreturns:\n    footprint: [h, w, c]",
      "signature": "(self, df: torch.Tensor, spike_frames: torch.Tensor, clust_idx: torch.Tensor, nclust: int) -> torch.Tensor",
      "source": {
        "endLine": 664,
        "line": 639,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Average df frames for spikes assigned to each cluster."
    },
    {
      "decorators": [
        "torch.inference_mode"
      ],
      "docstring": "Compute ALI spike localization, clusters, footprints, and traces.",
      "kind": "method",
      "module": "torch_volpy.extraction.ALI",
      "name": "forward",
      "parent": "torch_volpy.extraction.ALI.ALI",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.ALI.ALI.forward",
      "searchText": "method\nforward\ntorch_volpy.extraction.ali.ali.forward\n(self, data: any) -> aliresult\ncompute ali spike localization, clusters, footprints, and traces.\ncompute ali spike localization, clusters, footprints, and traces.\ntorch.inference_mode",
      "signature": "(self, data: Any) -> ALIResult",
      "source": {
        "endLine": 833,
        "line": 667,
        "path": "src/torch_volpy/extraction/ALI.py"
      },
      "summary": "Compute ALI spike localization, clusters, footprints, and traces."
    },
    {
      "decorators": [],
      "docstring": "",
      "exports": [],
      "kind": "module",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "torch_volpy.extraction.Spikepursuit",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit",
      "searchText": "module\ntorch_volpy.extraction.spikepursuit\ntorch_volpy.extraction.spikepursuit",
      "signature": "",
      "source": {
        "endLine": 1,
        "line": 1,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "{'sos32'}",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_SIGNAL_FILTER_METHODS",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit._SIGNAL_FILTER_METHODS",
      "searchText": "constant\n_signal_filter_methods\ntorch_volpy.extraction.spikepursuit._signal_filter_methods\n{'sos32'}",
      "signature": "",
      "source": {
        "endLine": 14,
        "line": 14,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "bases": [],
      "dataclass": true,
      "decorators": [
        "dataclass"
      ],
      "docstring": "Container for one fitted SpikePursuit ROI result.",
      "kind": "class",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "SpikePursuitResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult",
      "searchText": "class\nspikepursuitresult\ntorch_volpy.extraction.spikepursuit.spikepursuitresult\n()\ncontainer for one fitted spikepursuit roi result.\ncontainer for one fitted spikepursuit roi result.\ndataclass",
      "signature": "()",
      "source": {
        "endLine": 37,
        "line": 18,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Container for one fitted SpikePursuit ROI result."
    },
    {
      "annotation": "int",
      "decorators": [],
      "docstring": "Dataclass field `roi_id`. Type: `int`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "roi_id",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult.roi_id",
      "searchText": "field\nroi_id\ntorch_volpy.extraction.spikepursuit.spikepursuitresult.roi_id\n: int\ndataclass field `roi_id`. type: `int`.\ndataclass field `roi_id`. type: `int`.\nint",
      "signature": ": int",
      "source": {
        "endLine": 20,
        "line": 20,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `roi_id`. Type: `int`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `t`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "t",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult.t",
      "searchText": "field\nt\ntorch_volpy.extraction.spikepursuit.spikepursuitresult.t\n: torch.tensor\ndataclass field `t`. type: `torch.tensor`.\ndataclass field `t`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 21,
        "line": 21,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `t`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `ts`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "ts",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult.ts",
      "searchText": "field\nts\ntorch_volpy.extraction.spikepursuit.spikepursuitresult.ts\n: torch.tensor\ndataclass field `ts`. type: `torch.tensor`.\ndataclass field `ts`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 22,
        "line": 22,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `ts`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `t_rec`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "t_rec",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult.t_rec",
      "searchText": "field\nt_rec\ntorch_volpy.extraction.spikepursuit.spikepursuitresult.t_rec\n: torch.tensor\ndataclass field `t_rec`. type: `torch.tensor`.\ndataclass field `t_rec`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 23,
        "line": 23,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `t_rec`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `t_sub`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "t_sub",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult.t_sub",
      "searchText": "field\nt_sub\ntorch_volpy.extraction.spikepursuit.spikepursuitresult.t_sub\n: torch.tensor\ndataclass field `t_sub`. type: `torch.tensor`.\ndataclass field `t_sub`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 24,
        "line": 24,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `t_sub`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `spikes`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "spikes",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult.spikes",
      "searchText": "field\nspikes\ntorch_volpy.extraction.spikepursuit.spikepursuitresult.spikes\n: torch.tensor\ndataclass field `spikes`. type: `torch.tensor`.\ndataclass field `spikes`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 25,
        "line": 25,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `spikes`. Type: `torch.Tensor`."
    },
    {
      "annotation": "List[int]",
      "decorators": [],
      "docstring": "Dataclass field `num_spikes`. Type: `List[int]`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "num_spikes",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult.num_spikes",
      "searchText": "field\nnum_spikes\ntorch_volpy.extraction.spikepursuit.spikepursuitresult.num_spikes\n: list[int]\ndataclass field `num_spikes`. type: `list[int]`.\ndataclass field `num_spikes`. type: `list[int]`.\nlist[int]",
      "signature": ": List[int]",
      "source": {
        "endLine": 26,
        "line": 26,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `num_spikes`. Type: `List[int]`."
    },
    {
      "annotation": "bool",
      "decorators": [],
      "docstring": "Dataclass field `low_spikes`. Type: `bool`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "low_spikes",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult.low_spikes",
      "searchText": "field\nlow_spikes\ntorch_volpy.extraction.spikepursuit.spikepursuitresult.low_spikes\n: bool\ndataclass field `low_spikes`. type: `bool`.\ndataclass field `low_spikes`. type: `bool`.\nbool",
      "signature": ": bool",
      "source": {
        "endLine": 27,
        "line": 27,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `low_spikes`. Type: `bool`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `templates`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "templates",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult.templates",
      "searchText": "field\ntemplates\ntorch_volpy.extraction.spikepursuit.spikepursuitresult.templates\n: torch.tensor\ndataclass field `templates`. type: `torch.tensor`.\ndataclass field `templates`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 28,
        "line": 28,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `templates`. Type: `torch.Tensor`."
    },
    {
      "annotation": "float",
      "decorators": [],
      "docstring": "Dataclass field `snr`. Type: `float`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "snr",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult.snr",
      "searchText": "field\nsnr\ntorch_volpy.extraction.spikepursuit.spikepursuitresult.snr\n: float\ndataclass field `snr`. type: `float`.\ndataclass field `snr`. type: `float`.\nfloat",
      "signature": ": float",
      "source": {
        "endLine": 29,
        "line": 29,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `snr`. Type: `float`."
    },
    {
      "annotation": "float",
      "decorators": [],
      "docstring": "Dataclass field `thresh`. Type: `float`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "thresh",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult.thresh",
      "searchText": "field\nthresh\ntorch_volpy.extraction.spikepursuit.spikepursuitresult.thresh\n: float\ndataclass field `thresh`. type: `float`.\ndataclass field `thresh`. type: `float`.\nfloat",
      "signature": ": float",
      "source": {
        "endLine": 30,
        "line": 30,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `thresh`. Type: `float`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `weights`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "weights",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult.weights",
      "searchText": "field\nweights\ntorch_volpy.extraction.spikepursuit.spikepursuitresult.weights\n: torch.tensor\ndataclass field `weights`. type: `torch.tensor`.\ndataclass field `weights`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 31,
        "line": 31,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `weights`. Type: `torch.Tensor`."
    },
    {
      "annotation": "bool",
      "decorators": [],
      "docstring": "Dataclass field `locality`. Type: `bool`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "locality",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult.locality",
      "searchText": "field\nlocality\ntorch_volpy.extraction.spikepursuit.spikepursuitresult.locality\n: bool\ndataclass field `locality`. type: `bool`.\ndataclass field `locality`. type: `bool`.\nbool",
      "signature": ": bool",
      "source": {
        "endLine": 32,
        "line": 32,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `locality`. Type: `bool`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `context_coord`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "context_coord",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult.context_coord",
      "searchText": "field\ncontext_coord\ntorch_volpy.extraction.spikepursuit.spikepursuitresult.context_coord\n: torch.tensor\ndataclass field `context_coord`. type: `torch.tensor`.\ndataclass field `context_coord`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 33,
        "line": 33,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `context_coord`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `mean_im`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "mean_im",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult.mean_im",
      "searchText": "field\nmean_im\ntorch_volpy.extraction.spikepursuit.spikepursuitresult.mean_im\n: torch.tensor\ndataclass field `mean_im`. type: `torch.tensor`.\ndataclass field `mean_im`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 34,
        "line": 34,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `mean_im`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `F0`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "F0",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult.F0",
      "searchText": "field\nf0\ntorch_volpy.extraction.spikepursuit.spikepursuitresult.f0\n: torch.tensor\ndataclass field `f0`. type: `torch.tensor`.\ndataclass field `f0`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 35,
        "line": 35,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `F0`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `dFF`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "dFF",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult.dFF",
      "searchText": "field\ndff\ntorch_volpy.extraction.spikepursuit.spikepursuitresult.dff\n: torch.tensor\ndataclass field `dff`. type: `torch.tensor`.\ndataclass field `dff`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 36,
        "line": 36,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `dFF`. Type: `torch.Tensor`."
    },
    {
      "annotation": "Dict[str, torch.Tensor]",
      "decorators": [],
      "docstring": "Dataclass field `rawROI`. Type: `Dict[str, torch.Tensor]`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "rawROI",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitResult.rawROI",
      "searchText": "field\nrawroi\ntorch_volpy.extraction.spikepursuit.spikepursuitresult.rawroi\n: dict[str, torch.tensor]\ndataclass field `rawroi`. type: `dict[str, torch.tensor]`.\ndataclass field `rawroi`. type: `dict[str, torch.tensor]`.\ndict[str, torch.tensor]",
      "signature": ": Dict[str, torch.Tensor]",
      "source": {
        "endLine": 37,
        "line": 37,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `rawROI`. Type: `Dict[str, torch.Tensor]`."
    },
    {
      "bases": [],
      "dataclass": true,
      "decorators": [
        "dataclass"
      ],
      "docstring": "Reusable prepared state for fitting one SpikePursuit ROI.",
      "kind": "class",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "SpikePursuitPreparedROI",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitPreparedROI",
      "searchText": "class\nspikepursuitpreparedroi\ntorch_volpy.extraction.spikepursuit.spikepursuitpreparedroi\n()\nreusable prepared state for fitting one spikepursuit roi.\nreusable prepared state for fitting one spikepursuit roi.\ndataclass",
      "signature": "()",
      "source": {
        "endLine": 57,
        "line": 41,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Reusable prepared state for fitting one SpikePursuit ROI."
    },
    {
      "annotation": "int",
      "decorators": [],
      "docstring": "Dataclass field `roi_id`. Type: `int`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "roi_id",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitPreparedROI",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitPreparedROI.roi_id",
      "searchText": "field\nroi_id\ntorch_volpy.extraction.spikepursuit.spikepursuitpreparedroi.roi_id\n: int\ndataclass field `roi_id`. type: `int`.\ndataclass field `roi_id`. type: `int`.\nint",
      "signature": ": int",
      "source": {
        "endLine": 43,
        "line": 43,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `roi_id`. Type: `int`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `t0`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "t0",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitPreparedROI",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitPreparedROI.t0",
      "searchText": "field\nt0\ntorch_volpy.extraction.spikepursuit.spikepursuitpreparedroi.t0\n: torch.tensor\ndataclass field `t0`. type: `torch.tensor`.\ndataclass field `t0`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 44,
        "line": 44,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `t0`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `weights0`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "weights0",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitPreparedROI",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitPreparedROI.weights0",
      "searchText": "field\nweights0\ntorch_volpy.extraction.spikepursuit.spikepursuitpreparedroi.weights0\n: torch.tensor\ndataclass field `weights0`. type: `torch.tensor`.\ndataclass field `weights0`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 45,
        "line": 45,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `weights0`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `bw`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "bw",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitPreparedROI",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitPreparedROI.bw",
      "searchText": "field\nbw\ntorch_volpy.extraction.spikepursuit.spikepursuitpreparedroi.bw\n: torch.tensor\ndataclass field `bw`. type: `torch.tensor`.\ndataclass field `bw`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 46,
        "line": 46,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `bw`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `bw_flat`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "bw_flat",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitPreparedROI",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitPreparedROI.bw_flat",
      "searchText": "field\nbw_flat\ntorch_volpy.extraction.spikepursuit.spikepursuitpreparedroi.bw_flat\n: torch.tensor\ndataclass field `bw_flat`. type: `torch.tensor`.\ndataclass field `bw_flat`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 47,
        "line": 47,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `bw_flat`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `notbw_flat`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "notbw_flat",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitPreparedROI",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitPreparedROI.notbw_flat",
      "searchText": "field\nnotbw_flat\ntorch_volpy.extraction.spikepursuit.spikepursuitpreparedroi.notbw_flat\n: torch.tensor\ndataclass field `notbw_flat`. type: `torch.tensor`.\ndataclass field `notbw_flat`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 48,
        "line": 48,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `notbw_flat`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `F0`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "F0",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitPreparedROI",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitPreparedROI.F0",
      "searchText": "field\nf0\ntorch_volpy.extraction.spikepursuit.spikepursuitpreparedroi.f0\n: torch.tensor\ndataclass field `f0`. type: `torch.tensor`.\ndataclass field `f0`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 49,
        "line": 49,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `F0`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `mean_im`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "mean_im",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitPreparedROI",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitPreparedROI.mean_im",
      "searchText": "field\nmean_im\ntorch_volpy.extraction.spikepursuit.spikepursuitpreparedroi.mean_im\n: torch.tensor\ndataclass field `mean_im`. type: `torch.tensor`.\ndataclass field `mean_im`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 50,
        "line": 50,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `mean_im`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `context_coord`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "context_coord",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitPreparedROI",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitPreparedROI.context_coord",
      "searchText": "field\ncontext_coord\ntorch_volpy.extraction.spikepursuit.spikepursuitpreparedroi.context_coord\n: torch.tensor\ndataclass field `context_coord`. type: `torch.tensor`.\ndataclass field `context_coord`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 51,
        "line": 51,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `context_coord`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `Ub`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "Ub",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitPreparedROI",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitPreparedROI.Ub",
      "searchText": "field\nub\ntorch_volpy.extraction.spikepursuit.spikepursuitpreparedroi.ub\n: torch.tensor\ndataclass field `ub`. type: `torch.tensor`.\ndataclass field `ub`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 52,
        "line": 52,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `Ub`. Type: `torch.Tensor`."
    },
    {
      "annotation": "Callable[[torch.Tensor], torch.Tensor]",
      "decorators": [],
      "docstring": "Dataclass field `solve_bg`. Type: `Callable[[torch.Tensor], torch.Tensor]`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "solve_bg",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitPreparedROI",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitPreparedROI.solve_bg",
      "searchText": "field\nsolve_bg\ntorch_volpy.extraction.spikepursuit.spikepursuitpreparedroi.solve_bg\n: callable[[torch.tensor], torch.tensor]\ndataclass field `solve_bg`. type: `callable[[torch.tensor], torch.tensor]`.\ndataclass field `solve_bg`. type: `callable[[torch.tensor], torch.tensor]`.\ncallable[[torch.tensor], torch.tensor]",
      "signature": ": Callable[[torch.Tensor], torch.Tensor]",
      "source": {
        "endLine": 53,
        "line": 53,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `solve_bg`. Type: `Callable[[torch.Tensor], torch.Tensor]`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `recon`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "recon",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitPreparedROI",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitPreparedROI.recon",
      "searchText": "field\nrecon\ntorch_volpy.extraction.spikepursuit.spikepursuitpreparedroi.recon\n: torch.tensor\ndataclass field `recon`. type: `torch.tensor`.\ndataclass field `recon`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 54,
        "line": 54,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `recon`. Type: `torch.Tensor`."
    },
    {
      "annotation": "torch.Tensor",
      "decorators": [],
      "docstring": "Dataclass field `pred_pixels`. Type: `torch.Tensor`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "pred_pixels",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitPreparedROI",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitPreparedROI.pred_pixels",
      "searchText": "field\npred_pixels\ntorch_volpy.extraction.spikepursuit.spikepursuitpreparedroi.pred_pixels\n: torch.tensor\ndataclass field `pred_pixels`. type: `torch.tensor`.\ndataclass field `pred_pixels`. type: `torch.tensor`.\ntorch.tensor",
      "signature": ": torch.Tensor",
      "source": {
        "endLine": 55,
        "line": 55,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `pred_pixels`. Type: `torch.Tensor`."
    },
    {
      "annotation": "float",
      "decorators": [],
      "docstring": "Dataclass field `ridge_alpha`. Type: `float`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "ridge_alpha",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitPreparedROI",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitPreparedROI.ridge_alpha",
      "searchText": "field\nridge_alpha\ntorch_volpy.extraction.spikepursuit.spikepursuitpreparedroi.ridge_alpha\n: float\ndataclass field `ridge_alpha`. type: `float`.\ndataclass field `ridge_alpha`. type: `float`.\nfloat",
      "signature": ": float",
      "source": {
        "endLine": 56,
        "line": 56,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `ridge_alpha`. Type: `float`."
    },
    {
      "annotation": "Optional[Callable[[torch.Tensor], torch.Tensor]]",
      "decorators": [],
      "docstring": "Dataclass field `solve_recon`. Type: `Optional[Callable[[torch.Tensor], torch.Tensor]]`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "solve_recon",
      "parent": "torch_volpy.extraction.Spikepursuit.SpikePursuitPreparedROI",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.SpikePursuitPreparedROI.solve_recon",
      "searchText": "field\nsolve_recon\ntorch_volpy.extraction.spikepursuit.spikepursuitpreparedroi.solve_recon\n: optional[callable[[torch.tensor], torch.tensor]]\ndataclass field `solve_recon`. type: `optional[callable[[torch.tensor], torch.tensor]]`.\ndataclass field `solve_recon`. type: `optional[callable[[torch.tensor], torch.tensor]]`.\noptional[callable[[torch.tensor], torch.tensor]]",
      "signature": ": Optional[Callable[[torch.Tensor], torch.Tensor]]",
      "source": {
        "endLine": 57,
        "line": 57,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `solve_recon`. Type: `Optional[Callable[[torch.Tensor], torch.Tensor]]`."
    },
    {
      "bases": [],
      "dataclass": true,
      "decorators": [
        "dataclass"
      ],
      "docstring": "",
      "kind": "class",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_ContextPatchSpec",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit._ContextPatchSpec",
      "searchText": "class\n_contextpatchspec\ntorch_volpy.extraction.spikepursuit._contextpatchspec\n()\ndataclass",
      "signature": "()",
      "source": {
        "endLine": 66,
        "line": 61,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "annotation": "int",
      "decorators": [],
      "docstring": "Dataclass field `roi_id`. Type: `int`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "roi_id",
      "parent": "torch_volpy.extraction.Spikepursuit._ContextPatchSpec",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit._ContextPatchSpec.roi_id",
      "searchText": "field\nroi_id\ntorch_volpy.extraction.spikepursuit._contextpatchspec.roi_id\n: int\ndataclass field `roi_id`. type: `int`.\ndataclass field `roi_id`. type: `int`.\nint",
      "signature": ": int",
      "source": {
        "endLine": 62,
        "line": 62,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `roi_id`. Type: `int`."
    },
    {
      "annotation": "int",
      "decorators": [],
      "docstring": "Dataclass field `x0`. Type: `int`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "x0",
      "parent": "torch_volpy.extraction.Spikepursuit._ContextPatchSpec",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit._ContextPatchSpec.x0",
      "searchText": "field\nx0\ntorch_volpy.extraction.spikepursuit._contextpatchspec.x0\n: int\ndataclass field `x0`. type: `int`.\ndataclass field `x0`. type: `int`.\nint",
      "signature": ": int",
      "source": {
        "endLine": 63,
        "line": 63,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `x0`. Type: `int`."
    },
    {
      "annotation": "int",
      "decorators": [],
      "docstring": "Dataclass field `x1`. Type: `int`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "x1",
      "parent": "torch_volpy.extraction.Spikepursuit._ContextPatchSpec",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit._ContextPatchSpec.x1",
      "searchText": "field\nx1\ntorch_volpy.extraction.spikepursuit._contextpatchspec.x1\n: int\ndataclass field `x1`. type: `int`.\ndataclass field `x1`. type: `int`.\nint",
      "signature": ": int",
      "source": {
        "endLine": 64,
        "line": 64,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `x1`. Type: `int`."
    },
    {
      "annotation": "int",
      "decorators": [],
      "docstring": "Dataclass field `y0`. Type: `int`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "y0",
      "parent": "torch_volpy.extraction.Spikepursuit._ContextPatchSpec",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit._ContextPatchSpec.y0",
      "searchText": "field\ny0\ntorch_volpy.extraction.spikepursuit._contextpatchspec.y0\n: int\ndataclass field `y0`. type: `int`.\ndataclass field `y0`. type: `int`.\nint",
      "signature": ": int",
      "source": {
        "endLine": 65,
        "line": 65,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `y0`. Type: `int`."
    },
    {
      "annotation": "int",
      "decorators": [],
      "docstring": "Dataclass field `y1`. Type: `int`.",
      "kind": "field",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "y1",
      "parent": "torch_volpy.extraction.Spikepursuit._ContextPatchSpec",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit._ContextPatchSpec.y1",
      "searchText": "field\ny1\ntorch_volpy.extraction.spikepursuit._contextpatchspec.y1\n: int\ndataclass field `y1`. type: `int`.\ndataclass field `y1`. type: `int`.\nint",
      "signature": ": int",
      "source": {
        "endLine": 66,
        "line": 66,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Dataclass field `y1`. Type: `int`."
    },
    {
      "bases": [],
      "dataclass": false,
      "decorators": [],
      "docstring": "PyTorch port of the original volspike/spikepursuit-style algorithm.\n\nAssumptions\n-----------\n- movie is a Movie instance backed by HDF5 with shape (T, Y, X) or (T, Y, X, C)\n- roi_mask is either a 2D label tensor where:\n    * background is 0\n    * each ROI has a unique non-zero integer/label value\n  or a 3D Mask-RCNN-style instance stack with shape (N, Y, X)\n- all numeric work is performed with PyTorch tensors\n\nNotes\n-----\nThis is algorithmically faithful to the original implementation, but a few\nscipy/sklearn operations are replaced with native torch equivalents:\n- spike denoising uses a Torch-native VolPy-compatible Butterworth filtfilt\n- peak finding is implemented with tensor comparisons\n- PCA/background extraction uses torch.pca_lowrank\n- ridge regression follows VolPy/scikit-learn LSQR semantics for parity\n- morphology uses conv2d-based binary dilation",
      "kind": "class",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "Spikepursuit",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "searchText": "class\nspikepursuit\ntorch_volpy.extraction.spikepursuit.spikepursuit\n(movie, roi_mask: torch.tensor, *, channel: optional[int] = none, fr: float = 400.0, device: optional[union[str, torch.device]] = none, dtype: torch.dtype = torch.float32, cache_movie: bool = false, cache_movie_device: union[str, torch.device] = 'cpu', template_size: float = 0.02, context_size: int = 35, censor_size: int = 12, visualize_roi: bool = false, flip_signal: bool = true, hp_freq_pb: float = 10.0, npc_bg: int = 8, ridge_bg: float = 0.01, hp_freq: float = 1.0, clip: int = 100, threshold_method: str = 'adaptive_threshold', min_spikes: int = 5, pnorm: float = 0.5, threshold: float = 2.0, sigmas: sequence[float] = (1.0, 1.5, 2.0), n_iter: int = 2, weight_update: str = 'ridge', do_plot: bool = false, do_cross_val: bool = false, sub_freq: float = 20.0, batch_filter_workspace_bytes: optional[int] = none, prefetch_next_batch_patch: bool = false, keep_cuda_cache_between_batches: bool = false, cuda_batch_safety_margin: float = 1.0, signal_filter_method: str = 'sos32', eps: float = 1e-08) -> none\npytorch port of the original volspike/spikepursuit-style algorithm.\npytorch port of the original volspike/spikepursuit-style algorithm.\n\nassumptions\n-----------\n- movie is a movie instance backed by hdf5 with shape (t, y, x) or (t, y, x, c)\n- roi_mask is either a 2d label tensor where:\n    * background is 0\n    * each roi has a unique non-zero integer/label value\n  or a 3d mask-rcnn-style instance stack with shape (n, y, x)\n- all numeric work is performed with pytorch tensors\n\nnotes\n-----\nthis is algorithmically faithful to the original implementation, but a few\nscipy/sklearn operations are replaced with native torch equivalents:\n- spike denoising uses a torch-native volpy-compatible butterworth filtfilt\n- peak finding is implemented with tensor comparisons\n- pca/background extraction uses torch.pca_lowrank\n- ridge regression follows volpy/scikit-learn lsqr semantics for parity\n- morphology uses conv2d-based binary dilation",
      "signature": "(movie, roi_mask: torch.Tensor, *, channel: Optional[int] = None, fr: float = 400.0, device: Optional[Union[str, torch.device]] = None, dtype: torch.dtype = torch.float32, cache_movie: bool = False, cache_movie_device: Union[str, torch.device] = 'cpu', template_size: float = 0.02, context_size: int = 35, censor_size: int = 12, visualize_roi: bool = False, flip_signal: bool = True, hp_freq_pb: float = 10.0, nPC_bg: int = 8, ridge_bg: float = 0.01, hp_freq: float = 1.0, clip: int = 100, threshold_method: str = 'adaptive_threshold', min_spikes: int = 5, pnorm: float = 0.5, threshold: float = 2.0, sigmas: Sequence[float] = (1.0, 1.5, 2.0), n_iter: int = 2, weight_update: str = 'ridge', do_plot: bool = False, do_cross_val: bool = False, sub_freq: float = 20.0, batch_filter_workspace_bytes: Optional[int] = None, prefetch_next_batch_patch: bool = False, keep_cuda_cache_between_batches: bool = False, cuda_batch_safety_margin: float = 1.0, signal_filter_method: str = 'sos32', eps: float = 1e-08) -> None",
      "source": {
        "endLine": 2340,
        "line": 69,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "PyTorch port of the original volspike/spikepursuit-style algorithm."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "__init__",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit.__init__",
      "searchText": "method\n__init__\ntorch_volpy.extraction.spikepursuit.spikepursuit.__init__\n(self, movie, roi_mask: torch.tensor, *, channel: optional[int] = none, fr: float = 400.0, device: optional[union[str, torch.device]] = none, dtype: torch.dtype = torch.float32, cache_movie: bool = false, cache_movie_device: union[str, torch.device] = 'cpu', template_size: float = 0.02, context_size: int = 35, censor_size: int = 12, visualize_roi: bool = false, flip_signal: bool = true, hp_freq_pb: float = 10.0, npc_bg: int = 8, ridge_bg: float = 0.01, hp_freq: float = 1.0, clip: int = 100, threshold_method: str = 'adaptive_threshold', min_spikes: int = 5, pnorm: float = 0.5, threshold: float = 2.0, sigmas: sequence[float] = (1.0, 1.5, 2.0), n_iter: int = 2, weight_update: str = 'ridge', do_plot: bool = false, do_cross_val: bool = false, sub_freq: float = 20.0, batch_filter_workspace_bytes: optional[int] = none, prefetch_next_batch_patch: bool = false, keep_cuda_cache_between_batches: bool = false, cuda_batch_safety_margin: float = 1.0, signal_filter_method: str = 'sos32', eps: float = 1e-08) -> none",
      "signature": "(self, movie, roi_mask: torch.Tensor, *, channel: Optional[int] = None, fr: float = 400.0, device: Optional[Union[str, torch.device]] = None, dtype: torch.dtype = torch.float32, cache_movie: bool = False, cache_movie_device: Union[str, torch.device] = 'cpu', template_size: float = 0.02, context_size: int = 35, censor_size: int = 12, visualize_roi: bool = False, flip_signal: bool = True, hp_freq_pb: float = 10.0, nPC_bg: int = 8, ridge_bg: float = 0.01, hp_freq: float = 1.0, clip: int = 100, threshold_method: str = 'adaptive_threshold', min_spikes: int = 5, pnorm: float = 0.5, threshold: float = 2.0, sigmas: Sequence[float] = (1.0, 1.5, 2.0), n_iter: int = 2, weight_update: str = 'ridge', do_plot: bool = False, do_cross_val: bool = False, sub_freq: float = 20.0, batch_filter_workspace_bytes: Optional[int] = None, prefetch_next_batch_patch: bool = False, keep_cuda_cache_between_batches: bool = False, cuda_batch_safety_margin: float = 1.0, signal_filter_method: str = 'sos32', eps: float = 1e-08) -> None",
      "source": {
        "endLine": 217,
        "line": 93,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Fit SpikePursuit traces for the selected ROIs and return them by ROI id.",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "fit",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit.fit",
      "searchText": "method\nfit\ntorch_volpy.extraction.spikepursuit.spikepursuit.fit\n(self, roi_ids: optional[iterable[int]] = none, *, batch_patch_bytes: optional[int] = none, max_rois_per_batch: optional[int] = none) -> dict[int, spikepursuitresult]\nfit spikepursuit traces for the selected rois and return them by roi id.\nfit spikepursuit traces for the selected rois and return them by roi id.",
      "signature": "(self, roi_ids: Optional[Iterable[int]] = None, *, batch_patch_bytes: Optional[int] = None, max_rois_per_batch: Optional[int] = None) -> Dict[int, SpikePursuitResult]",
      "source": {
        "endLine": 238,
        "line": 223,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Fit SpikePursuit traces for the selected ROIs and return them by ROI id."
    },
    {
      "decorators": [],
      "docstring": "Yield ROI fits while batching movie reads by spatial union patch.\n\nEach batch reads a shared movie patch once, high-pass filters the union\npatch once, then fits the ROIs whose context windows are contained in\nthat patch. This keeps peak memory bounded by ``batch_patch_bytes``\ninstead of loading/filtering all ROI patches independently.",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "iter_fit",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit.iter_fit",
      "searchText": "method\niter_fit\ntorch_volpy.extraction.spikepursuit.spikepursuit.iter_fit\n(self, roi_ids: optional[iterable[int]] = none, *, batch_patch_bytes: optional[int] = none, max_rois_per_batch: optional[int] = none) -> iterator[spikepursuitresult]\nyield roi fits while batching movie reads by spatial union patch.\nyield roi fits while batching movie reads by spatial union patch.\n\neach batch reads a shared movie patch once, high-pass filters the union\npatch once, then fits the rois whose context windows are contained in\nthat patch. this keeps peak memory bounded by ``batch_patch_bytes``\ninstead of loading/filtering all roi patches independently.",
      "signature": "(self, roi_ids: Optional[Iterable[int]] = None, *, batch_patch_bytes: Optional[int] = None, max_rois_per_batch: Optional[int] = None) -> Iterator[SpikePursuitResult]",
      "source": {
        "endLine": 260,
        "line": 240,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Yield ROI fits while batching movie reads by spatial union patch."
    },
    {
      "decorators": [],
      "docstring": "Yield prepared ROI state while batching movie reads by spatial union patch.\n\nThe prepared state contains the expensive movie/background/predictor\nterms and can be passed to ``fit_prepared_roi`` for multiple\nthreshold-parameter sweeps.",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "iter_prepare",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit.iter_prepare",
      "searchText": "method\niter_prepare\ntorch_volpy.extraction.spikepursuit.spikepursuit.iter_prepare\n(self, roi_ids: optional[iterable[int]] = none, *, batch_patch_bytes: optional[int] = none, max_rois_per_batch: optional[int] = none) -> iterator[spikepursuitpreparedroi]\nyield prepared roi state while batching movie reads by spatial union patch.\nyield prepared roi state while batching movie reads by spatial union patch.\n\nthe prepared state contains the expensive movie/background/predictor\nterms and can be passed to ``fit_prepared_roi`` for multiple\nthreshold-parameter sweeps.",
      "signature": "(self, roi_ids: Optional[Iterable[int]] = None, *, batch_patch_bytes: Optional[int] = None, max_rois_per_batch: Optional[int] = None) -> Iterator[SpikePursuitPreparedROI]",
      "source": {
        "endLine": 355,
        "line": 262,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Yield prepared ROI state while batching movie reads by spatial union patch."
    },
    {
      "decorators": [],
      "docstring": "Cache the full movie on CPU or GPU so ROI extraction does not reread\nfull-frame HDF5 chunks for every spatial crop.",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "preload_movie",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit.preload_movie",
      "searchText": "method\npreload_movie\ntorch_volpy.extraction.spikepursuit.spikepursuit.preload_movie\n(self, device: union[str, torch.device] = 'cpu') -> 'spikepursuit'\ncache the full movie on cpu or gpu so roi extraction does not reread\ncache the full movie on cpu or gpu so roi extraction does not reread\nfull-frame hdf5 chunks for every spatial crop.",
      "signature": "(self, device: Union[str, torch.device] = 'cpu') -> 'Spikepursuit'",
      "source": {
        "endLine": 378,
        "line": 357,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Cache the full movie on CPU or GPU so ROI extraction does not reread"
    },
    {
      "decorators": [
        "torch.inference_mode"
      ],
      "docstring": "Prepare and fit a single ROI.",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "fit_roi",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit.fit_roi",
      "searchText": "method\nfit_roi\ntorch_volpy.extraction.spikepursuit.spikepursuit.fit_roi\n(self, roi_id: int, weights_init: optional[torch.tensor] = none) -> spikepursuitresult\nprepare and fit a single roi.\nprepare and fit a single roi.\ntorch.inference_mode",
      "signature": "(self, roi_id: int, weights_init: Optional[torch.Tensor] = None) -> SpikePursuitResult",
      "source": {
        "endLine": 388,
        "line": 381,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Prepare and fit a single ROI."
    },
    {
      "decorators": [
        "torch.inference_mode"
      ],
      "docstring": "Build reusable background, predictor, and initial trace state for one ROI.",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "prepare_roi",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit.prepare_roi",
      "searchText": "method\nprepare_roi\ntorch_volpy.extraction.spikepursuit.spikepursuit.prepare_roi\n(self, roi_id: int, weights_init: optional[torch.tensor] = none) -> spikepursuitpreparedroi\nbuild reusable background, predictor, and initial trace state for one roi.\nbuild reusable background, predictor, and initial trace state for one roi.\ntorch.inference_mode",
      "signature": "(self, roi_id: int, weights_init: Optional[torch.Tensor] = None) -> SpikePursuitPreparedROI",
      "source": {
        "endLine": 487,
        "line": 391,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Build reusable background, predictor, and initial trace state for one ROI."
    },
    {
      "decorators": [
        "torch.inference_mode"
      ],
      "docstring": "Fit a previously prepared ROI state into a SpikePursuit result.",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "fit_prepared_roi",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit.fit_prepared_roi",
      "searchText": "method\nfit_prepared_roi\ntorch_volpy.extraction.spikepursuit.spikepursuit.fit_prepared_roi\n(self, prepared: spikepursuitpreparedroi) -> spikepursuitresult\nfit a previously prepared roi state into a spikepursuit result.\nfit a previously prepared roi state into a spikepursuit result.\ntorch.inference_mode",
      "signature": "(self, prepared: SpikePursuitPreparedROI) -> SpikePursuitResult",
      "source": {
        "endLine": 638,
        "line": 490,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Fit a previously prepared ROI state into a SpikePursuit result."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_get_roi_ids",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._get_roi_ids",
      "searchText": "method\n_get_roi_ids\ntorch_volpy.extraction.spikepursuit.spikepursuit._get_roi_ids\n(self, mask: torch.tensor) -> torch.tensor",
      "signature": "(self, mask: torch.Tensor) -> torch.Tensor",
      "source": {
        "endLine": 653,
        "line": 644,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_roi_binary_mask",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._roi_binary_mask",
      "searchText": "method\n_roi_binary_mask\ntorch_volpy.extraction.spikepursuit.spikepursuit._roi_binary_mask\n(self, roi_id: int) -> torch.tensor",
      "signature": "(self, roi_id: int) -> torch.Tensor",
      "source": {
        "endLine": 662,
        "line": 655,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_extract_context_patch",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._extract_context_patch",
      "searchText": "method\n_extract_context_patch\ntorch_volpy.extraction.spikepursuit.spikepursuit._extract_context_patch\n(self, bw_full: torch.tensor) -> tuple[torch.tensor, torch.tensor, torch.tensor, torch.tensor]",
      "signature": "(self, bw_full: torch.Tensor) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor, torch.Tensor]",
      "source": {
        "endLine": 676,
        "line": 664,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_prepare_context_batch_highpass",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._prepare_context_batch_highpass",
      "searchText": "method\n_prepare_context_batch_highpass\ntorch_volpy.extraction.spikepursuit.spikepursuit._prepare_context_batch_highpass\n(self, patch: torch.tensor, *, flip_signal: optional[bool] = none) -> torch.tensor",
      "signature": "(self, patch: torch.Tensor, *, flip_signal: Optional[bool] = None) -> torch.Tensor",
      "source": {
        "endLine": 725,
        "line": 678,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_extract_prepared_context_patch_data",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._extract_prepared_context_patch_data",
      "searchText": "method\n_extract_prepared_context_patch_data\ntorch_volpy.extraction.spikepursuit.spikepursuit._extract_prepared_context_patch_data\n(self, bw_full: torch.tensor) -> optional[tuple[torch.tensor, torch.tensor, torch.tensor, torch.tensor, torch.tensor, torch.tensor]]",
      "signature": "(self, bw_full: torch.Tensor) -> Optional[Tuple[torch.Tensor, torch.Tensor, torch.Tensor, torch.Tensor, torch.Tensor, torch.Tensor]]",
      "source": {
        "endLine": 777,
        "line": 727,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_context_patch_spec",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._context_patch_spec",
      "searchText": "method\n_context_patch_spec\ntorch_volpy.extraction.spikepursuit.spikepursuit._context_patch_spec\n(self, roi_id: int) -> _contextpatchspec",
      "signature": "(self, roi_id: int) -> _ContextPatchSpec",
      "source": {
        "endLine": 786,
        "line": 779,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_context_patch_spec_for_mask",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._context_patch_spec_for_mask",
      "searchText": "method\n_context_patch_spec_for_mask\ntorch_volpy.extraction.spikepursuit.spikepursuit._context_patch_spec_for_mask\n(self, bw_full: torch.tensor, roi_id: int) -> _contextpatchspec",
      "signature": "(self, bw_full: torch.Tensor, roi_id: int) -> _ContextPatchSpec",
      "source": {
        "endLine": 802,
        "line": 788,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_context_patch_batches",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._context_patch_batches",
      "searchText": "method\n_context_patch_batches\ntorch_volpy.extraction.spikepursuit.spikepursuit._context_patch_batches\n(self, specs: sequence[_contextpatchspec], *, max_patch_bytes: int, max_rois_per_batch: optional[int]) -> list[list[_contextpatchspec]]",
      "signature": "(self, specs: Sequence[_ContextPatchSpec], *, max_patch_bytes: int, max_rois_per_batch: Optional[int]) -> List[List[_ContextPatchSpec]]",
      "source": {
        "endLine": 843,
        "line": 804,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_context_batch_bounds",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._context_batch_bounds",
      "searchText": "staticmethod\n_context_batch_bounds\ntorch_volpy.extraction.spikepursuit.spikepursuit._context_batch_bounds\n(batch: sequence[_contextpatchspec]) -> tuple[int, int, int, int]\nstaticmethod",
      "signature": "(batch: Sequence[_ContextPatchSpec]) -> Tuple[int, int, int, int]",
      "source": {
        "endLine": 851,
        "line": 846,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_normalize_batch_patch_bytes",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._normalize_batch_patch_bytes",
      "searchText": "method\n_normalize_batch_patch_bytes\ntorch_volpy.extraction.spikepursuit.spikepursuit._normalize_batch_patch_bytes\n(self, batch_patch_bytes: optional[int]) -> int",
      "signature": "(self, batch_patch_bytes: Optional[int]) -> int",
      "source": {
        "endLine": 856,
        "line": 853,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_default_batch_patch_bytes",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._default_batch_patch_bytes",
      "searchText": "method\n_default_batch_patch_bytes\ntorch_volpy.extraction.spikepursuit.spikepursuit._default_batch_patch_bytes\n(self) -> int",
      "signature": "(self) -> int",
      "source": {
        "endLine": 867,
        "line": 858,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_estimate_patch_bytes",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._estimate_patch_bytes",
      "searchText": "method\n_estimate_patch_bytes\ntorch_volpy.extraction.spikepursuit.spikepursuit._estimate_patch_bytes\n(self, x0: int, x1: int, y0: int, y1: int) -> int",
      "signature": "(self, x0: int, x1: int, y0: int, y1: int) -> int",
      "source": {
        "endLine": 870,
        "line": 869,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_estimate_context_batch_bytes",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._estimate_context_batch_bytes",
      "searchText": "method\n_estimate_context_batch_bytes\ntorch_volpy.extraction.spikepursuit.spikepursuit._estimate_context_batch_bytes\n(self, specs: sequence[_contextpatchspec]) -> int",
      "signature": "(self, specs: Sequence[_ContextPatchSpec]) -> int",
      "source": {
        "endLine": 889,
        "line": 872,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_estimate_roi_fit_peak_bytes",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._estimate_roi_fit_peak_bytes",
      "searchText": "method\n_estimate_roi_fit_peak_bytes\ntorch_volpy.extraction.spikepursuit.spikepursuit._estimate_roi_fit_peak_bytes\n(self, roi_patch_bytes: int) -> int",
      "signature": "(self, roi_patch_bytes: int) -> int",
      "source": {
        "endLine": 901,
        "line": 891,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_estimate_context_prepare_peak_bytes",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._estimate_context_prepare_peak_bytes",
      "searchText": "method\n_estimate_context_prepare_peak_bytes\ntorch_volpy.extraction.spikepursuit.spikepursuit._estimate_context_prepare_peak_bytes\n(self, x0: int, x1: int, y0: int, y1: int) -> int",
      "signature": "(self, x0: int, x1: int, y0: int, y1: int) -> int",
      "source": {
        "endLine": 925,
        "line": 903,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_batch_highpass_chunk_pixels",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._batch_highpass_chunk_pixels",
      "searchText": "method\n_batch_highpass_chunk_pixels\ntorch_volpy.extraction.spikepursuit.spikepursuit._batch_highpass_chunk_pixels\n(self, frames: int, pixels: int, *, budget_bytes: optional[int] = none) -> int",
      "signature": "(self, frames: int, pixels: int, *, budget_bytes: Optional[int] = None) -> int",
      "source": {
        "endLine": 963,
        "line": 927,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_batch_filter_workspace_target_bytes",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._batch_filter_workspace_target_bytes",
      "searchText": "method\n_batch_filter_workspace_target_bytes\ntorch_volpy.extraction.spikepursuit.spikepursuit._batch_filter_workspace_target_bytes\n(self) -> optional[int]",
      "signature": "(self) -> Optional[int]",
      "source": {
        "endLine": 973,
        "line": 965,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_retained_highpass_bytes",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._retained_highpass_bytes",
      "searchText": "method\n_retained_highpass_bytes\ntorch_volpy.extraction.spikepursuit.spikepursuit._retained_highpass_bytes\n(self, frames: int, pixels: int) -> int",
      "signature": "(self, frames: int, pixels: int) -> int",
      "source": {
        "endLine": 980,
        "line": 975,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_estimate_signal_filter_workspace_bytes",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._estimate_signal_filter_workspace_bytes",
      "searchText": "method\n_estimate_signal_filter_workspace_bytes\ntorch_volpy.extraction.spikepursuit.spikepursuit._estimate_signal_filter_workspace_bytes\n(self, frames: int, rows: int, order: int) -> int",
      "signature": "(self, frames: int, rows: int, order: int) -> int",
      "source": {
        "endLine": 1017,
        "line": 982,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_estimate_signal_filter_retained_bytes",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._estimate_signal_filter_retained_bytes",
      "searchText": "method\n_estimate_signal_filter_retained_bytes\ntorch_volpy.extraction.spikepursuit.spikepursuit._estimate_signal_filter_retained_bytes\n(self, frames: int, rows: int, order: int) -> int",
      "signature": "(self, frames: int, rows: int, order: int) -> int",
      "source": {
        "endLine": 1029,
        "line": 1019,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_signal_filter_work_element_size",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._signal_filter_work_element_size",
      "searchText": "method\n_signal_filter_work_element_size\ntorch_volpy.extraction.spikepursuit.spikepursuit._signal_filter_work_element_size\n(self) -> int",
      "signature": "(self) -> int",
      "source": {
        "endLine": 1032,
        "line": 1031,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_release_filter_fft_cache",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._release_filter_fft_cache",
      "searchText": "method\n_release_filter_fft_cache\ntorch_volpy.extraction.spikepursuit.spikepursuit._release_filter_fft_cache\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 1035,
        "line": 1034,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_should_flush_cuda_batch_cache",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._should_flush_cuda_batch_cache",
      "searchText": "method\n_should_flush_cuda_batch_cache\ntorch_volpy.extraction.spikepursuit.spikepursuit._should_flush_cuda_batch_cache\n(self, next_batch: optional[sequence[_contextpatchspec]], *, max_bytes: int) -> bool",
      "signature": "(self, next_batch: Optional[Sequence[_ContextPatchSpec]], *, max_bytes: int) -> bool",
      "source": {
        "endLine": 1067,
        "line": 1037,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_flush_cuda_batch_cache",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._flush_cuda_batch_cache",
      "searchText": "method\n_flush_cuda_batch_cache\ntorch_volpy.extraction.spikepursuit.spikepursuit._flush_cuda_batch_cache\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 1077,
        "line": 1069,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_estimate_patch_tensor_bytes",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._estimate_patch_tensor_bytes",
      "searchText": "method\n_estimate_patch_tensor_bytes\ntorch_volpy.extraction.spikepursuit.spikepursuit._estimate_patch_tensor_bytes\n(self, x0: int, x1: int, y0: int, y1: int) -> int",
      "signature": "(self, x0: int, x1: int, y0: int, y1: int) -> int",
      "source": {
        "endLine": 1084,
        "line": 1079,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_read_movie_patch",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._read_movie_patch",
      "searchText": "method\n_read_movie_patch\ntorch_volpy.extraction.spikepursuit.spikepursuit._read_movie_patch\n(self, x0: int, x1: int, y0: int, y1: int) -> torch.tensor",
      "signature": "(self, x0: int, x1: int, y0: int, y1: int) -> torch.Tensor",
      "source": {
        "endLine": 1091,
        "line": 1086,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_create_patch_prefetch_executor",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._create_patch_prefetch_executor",
      "searchText": "method\n_create_patch_prefetch_executor\ntorch_volpy.extraction.spikepursuit.spikepursuit._create_patch_prefetch_executor\n(self) -> optional[threadpoolexecutor]",
      "signature": "(self) -> Optional[ThreadPoolExecutor]",
      "source": {
        "endLine": 1102,
        "line": 1093,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_submit_movie_patch_prefetch",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._submit_movie_patch_prefetch",
      "searchText": "method\n_submit_movie_patch_prefetch\ntorch_volpy.extraction.spikepursuit.spikepursuit._submit_movie_patch_prefetch\n(self, executor: threadpoolexecutor, x0: int, x1: int, y0: int, y1: int) -> future[torch.tensor]",
      "signature": "(self, executor: ThreadPoolExecutor, x0: int, x1: int, y0: int, y1: int) -> Future[torch.Tensor]",
      "source": {
        "endLine": 1112,
        "line": 1104,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_read_batch_patch",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._read_batch_patch",
      "searchText": "method\n_read_batch_patch\ntorch_volpy.extraction.spikepursuit.spikepursuit._read_batch_patch\n(self, x0: int, x1: int, y0: int, y1: int, *, prefetch_future: optional[future[torch.tensor]], prefetch_bounds: optional[tuple[int, int, int, int]]) -> torch.tensor",
      "signature": "(self, x0: int, x1: int, y0: int, y1: int, *, prefetch_future: Optional[Future[torch.Tensor]], prefetch_bounds: Optional[Tuple[int, int, int, int]]) -> torch.Tensor",
      "source": {
        "endLine": 1130,
        "line": 1114,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_move_cpu_patch_to_device",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._move_cpu_patch_to_device",
      "searchText": "method\n_move_cpu_patch_to_device\ntorch_volpy.extraction.spikepursuit.spikepursuit._move_cpu_patch_to_device\n(self, patch: torch.tensor) -> torch.tensor",
      "signature": "(self, patch: torch.Tensor) -> torch.Tensor",
      "source": {
        "endLine": 1135,
        "line": 1132,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_read_movie_patch_view",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._read_movie_patch_view",
      "searchText": "method\n_read_movie_patch_view\ntorch_volpy.extraction.spikepursuit.spikepursuit._read_movie_patch_view\n(self, x0: int, x1: int, y0: int, y1: int) -> optional[torch.tensor]",
      "signature": "(self, x0: int, x1: int, y0: int, y1: int) -> Optional[torch.Tensor]",
      "source": {
        "endLine": 1156,
        "line": 1137,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_read_movie_patch_cpu_from_fresh_source",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._read_movie_patch_cpu_from_fresh_source",
      "searchText": "method\n_read_movie_patch_cpu_from_fresh_source\ntorch_volpy.extraction.spikepursuit.spikepursuit._read_movie_patch_cpu_from_fresh_source\n(self, x0: int, x1: int, y0: int, y1: int) -> torch.tensor",
      "signature": "(self, x0: int, x1: int, y0: int, y1: int) -> torch.Tensor",
      "source": {
        "endLine": 1182,
        "line": 1158,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_read_movie_patch_from_source",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._read_movie_patch_from_source",
      "searchText": "method\n_read_movie_patch_from_source\ntorch_volpy.extraction.spikepursuit.spikepursuit._read_movie_patch_from_source\n(self, x0: int, x1: int, y0: int, y1: int) -> torch.tensor",
      "signature": "(self, x0: int, x1: int, y0: int, y1: int) -> torch.Tensor",
      "source": {
        "endLine": 1205,
        "line": 1184,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Denoise a trace and detect spikes with VolPy-compatible thresholding.",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "denoise_spikes",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit.denoise_spikes",
      "searchText": "method\ndenoise_spikes\ntorch_volpy.extraction.spikepursuit.spikepursuit.denoise_spikes\n(self, data: torch.tensor, *, window_length: int, fr: float, hp_freq: float = 1.0, clip: int = 100, threshold_method: str = 'adaptive_threshold', min_spikes: int = 5, pnorm: float = 0.5, threshold: float = 2.0, do_plot: bool = false) -> tuple[torch.tensor, torch.tensor, torch.tensor, torch.tensor, bool, float]\ndenoise a trace and detect spikes with volpy-compatible thresholding.\ndenoise a trace and detect spikes with volpy-compatible thresholding.",
      "signature": "(self, data: torch.Tensor, *, window_length: int, fr: float, hp_freq: float = 1.0, clip: int = 100, threshold_method: str = 'adaptive_threshold', min_spikes: int = 5, pnorm: float = 0.5, threshold: float = 2.0, do_plot: bool = False) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor, torch.Tensor, bool, float]",
      "source": {
        "endLine": 1296,
        "line": 1211,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Denoise a trace and detect spikes with VolPy-compatible thresholding."
    },
    {
      "decorators": [],
      "docstring": "Estimate an adaptive spike threshold from candidate peak amplitudes.",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "adaptive_thresh",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit.adaptive_thresh",
      "searchText": "method\nadaptive_thresh\ntorch_volpy.extraction.spikepursuit.spikepursuit.adaptive_thresh\n(self, pks: torch.tensor, clip: int, pnorm: float = 0.5, min_spikes: int = 5) -> tuple[float, float, float, bool]\nestimate an adaptive spike threshold from candidate peak amplitudes.\nestimate an adaptive spike threshold from candidate peak amplitudes.",
      "signature": "(self, pks: torch.Tensor, clip: int, pnorm: float = 0.5, min_spikes: int = 5) -> Tuple[float, float, float, bool]",
      "source": {
        "endLine": 1371,
        "line": 1298,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Estimate an adaptive spike threshold from candidate peak amplitudes."
    },
    {
      "decorators": [],
      "docstring": "Compute a noise-scaled spike threshold with low-spike fallback.",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "simple_thresh",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit.simple_thresh",
      "searchText": "method\nsimple_thresh\ntorch_volpy.extraction.spikepursuit.spikepursuit.simple_thresh\n(self, data: torch.tensor, pks: torch.tensor, clip: int, threshold: float = 2.0, min_spikes: int = 5) -> tuple[float, bool]\ncompute a noise-scaled spike threshold with low-spike fallback.\ncompute a noise-scaled spike threshold with low-spike fallback.",
      "signature": "(self, data: torch.Tensor, pks: torch.Tensor, clip: int, threshold: float = 2.0, min_spikes: int = 5) -> Tuple[float, bool]",
      "source": {
        "endLine": 1400,
        "line": 1373,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Compute a noise-scaled spike threshold with low-spike fallback."
    },
    {
      "decorators": [],
      "docstring": "Apply a whitened matched filter around candidate spike locations.",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "whitened_matched_filter",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit.whitened_matched_filter",
      "searchText": "method\nwhitened_matched_filter\ntorch_volpy.extraction.spikepursuit.spikepursuit.whitened_matched_filter\n(self, data: torch.tensor, locs: torch.tensor, window: torch.tensor) -> torch.tensor\napply a whitened matched filter around candidate spike locations.\napply a whitened matched filter around candidate spike locations.",
      "signature": "(self, data: torch.Tensor, locs: torch.Tensor, window: torch.Tensor) -> torch.Tensor",
      "source": {
        "endLine": 1440,
        "line": 1402,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Apply a whitened matched filter around candidate spike locations."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_volpy_signal_filter_1d",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._volpy_signal_filter_1d",
      "searchText": "method\n_volpy_signal_filter_1d\ntorch_volpy.extraction.spikepursuit.spikepursuit._volpy_signal_filter_1d\n(self, sg: torch.tensor, freq: float, fr: float, order: int = 3, mode: str = 'high') -> torch.tensor",
      "signature": "(self, sg: torch.Tensor, freq: float, fr: float, order: int = 3, mode: str = 'high') -> torch.Tensor",
      "source": {
        "endLine": 1457,
        "line": 1442,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_volpy_signal_filter_nd",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._volpy_signal_filter_nd",
      "searchText": "method\n_volpy_signal_filter_nd\ntorch_volpy.extraction.spikepursuit.spikepursuit._volpy_signal_filter_nd\n(self, sg: torch.tensor, freq: float, fr: float, order: int = 3, mode: str = 'high', dim: int = -1, method_override: optional[str] = none) -> torch.tensor",
      "signature": "(self, sg: torch.Tensor, freq: float, fr: float, order: int = 3, mode: str = 'high', dim: int = -1, method_override: Optional[str] = None) -> torch.Tensor",
      "source": {
        "endLine": 1492,
        "line": 1459,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_butter_sos_coefficients",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._butter_sos_coefficients",
      "searchText": "method\n_butter_sos_coefficients\ntorch_volpy.extraction.spikepursuit.spikepursuit._butter_sos_coefficients\n(self, order: int, norm_freq: float, mode: str, *, device: torch.device, dtype: torch.dtype) -> torch.tensor",
      "signature": "(self, order: int, norm_freq: float, mode: str, *, device: torch.device, dtype: torch.dtype) -> torch.Tensor",
      "source": {
        "endLine": 1525,
        "line": 1494,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_zpk2sos_butter",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._zpk2sos_butter",
      "searchText": "method\n_zpk2sos_butter\ntorch_volpy.extraction.spikepursuit.spikepursuit._zpk2sos_butter\n(self, z: torch.tensor, p: torch.tensor, k: torch.tensor, *, mode: str, order: int) -> torch.tensor",
      "signature": "(self, z: torch.Tensor, p: torch.Tensor, k: torch.Tensor, *, mode: str, order: int) -> torch.Tensor",
      "source": {
        "endLine": 1573,
        "line": 1527,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_buttap",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._buttap",
      "searchText": "method\n_buttap\ntorch_volpy.extraction.spikepursuit.spikepursuit._buttap\n(self, order: int, *, device: torch.device) -> tuple[torch.tensor, torch.tensor, torch.tensor]",
      "signature": "(self, order: int, *, device: torch.device) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]",
      "source": {
        "endLine": 1585,
        "line": 1575,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_lp2lp_zpk",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._lp2lp_zpk",
      "searchText": "method\n_lp2lp_zpk\ntorch_volpy.extraction.spikepursuit.spikepursuit._lp2lp_zpk\n(self, z: torch.tensor, p: torch.tensor, k: torch.tensor, *, wo: torch.tensor) -> tuple[torch.tensor, torch.tensor, torch.tensor]",
      "signature": "(self, z: torch.Tensor, p: torch.Tensor, k: torch.Tensor, *, wo: torch.Tensor) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]",
      "source": {
        "endLine": 1599,
        "line": 1587,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_lp2hp_zpk",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._lp2hp_zpk",
      "searchText": "method\n_lp2hp_zpk\ntorch_volpy.extraction.spikepursuit.spikepursuit._lp2hp_zpk\n(self, z: torch.tensor, p: torch.tensor, k: torch.tensor, *, wo: torch.tensor) -> tuple[torch.tensor, torch.tensor, torch.tensor]",
      "signature": "(self, z: torch.Tensor, p: torch.Tensor, k: torch.Tensor, *, wo: torch.Tensor) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]",
      "source": {
        "endLine": 1620,
        "line": 1601,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_bilinear_zpk",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._bilinear_zpk",
      "searchText": "method\n_bilinear_zpk\ntorch_volpy.extraction.spikepursuit.spikepursuit._bilinear_zpk\n(self, z: torch.tensor, p: torch.tensor, k: torch.tensor, *, fs: torch.tensor) -> tuple[torch.tensor, torch.tensor, torch.tensor]",
      "signature": "(self, z: torch.Tensor, p: torch.Tensor, k: torch.Tensor, *, fs: torch.Tensor) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]",
      "source": {
        "endLine": 1642,
        "line": 1622,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_poly_from_roots",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._poly_from_roots",
      "searchText": "method\n_poly_from_roots\ntorch_volpy.extraction.spikepursuit.spikepursuit._poly_from_roots\n(self, roots: torch.tensor) -> torch.tensor",
      "signature": "(self, roots: torch.Tensor) -> torch.Tensor",
      "source": {
        "endLine": 1652,
        "line": 1644,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_sosfiltfilt_fft_nd",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._sosfiltfilt_fft_nd",
      "searchText": "method\n_sosfiltfilt_fft_nd\ntorch_volpy.extraction.spikepursuit.spikepursuit._sosfiltfilt_fft_nd\n(self, sos: torch.tensor, x: torch.tensor, *, padlen: int) -> torch.tensor",
      "signature": "(self, sos: torch.Tensor, x: torch.Tensor, *, padlen: int) -> torch.Tensor",
      "source": {
        "endLine": 1669,
        "line": 1654,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_sosfilt_fft_nd",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._sosfilt_fft_nd",
      "searchText": "method\n_sosfilt_fft_nd\ntorch_volpy.extraction.spikepursuit.spikepursuit._sosfilt_fft_nd\n(self, sos: torch.tensor, x: torch.tensor, zi: optional[torch.tensor] = none) -> torch.tensor",
      "signature": "(self, sos: torch.Tensor, x: torch.Tensor, zi: Optional[torch.Tensor] = None) -> torch.Tensor",
      "source": {
        "endLine": 1682,
        "line": 1671,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_sosfilt_zi",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._sosfilt_zi",
      "searchText": "method\n_sosfilt_zi\ntorch_volpy.extraction.spikepursuit.spikepursuit._sosfilt_zi\n(self, sos: torch.tensor) -> torch.tensor",
      "signature": "(self, sos: torch.Tensor) -> torch.Tensor",
      "source": {
        "endLine": 1693,
        "line": 1684,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_lfilter_fft_nd",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._lfilter_fft_nd",
      "searchText": "method\n_lfilter_fft_nd\ntorch_volpy.extraction.spikepursuit.spikepursuit._lfilter_fft_nd\n(self, b: torch.tensor, a: torch.tensor, x: torch.tensor, zi: optional[torch.tensor] = none) -> torch.tensor",
      "signature": "(self, b: torch.Tensor, a: torch.Tensor, x: torch.Tensor, zi: Optional[torch.Tensor] = None) -> torch.Tensor",
      "source": {
        "endLine": 1737,
        "line": 1695,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_lfilter_fft_response_tensors",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._lfilter_fft_response_tensors",
      "searchText": "method\n_lfilter_fft_response_tensors\ntorch_volpy.extraction.spikepursuit.spikepursuit._lfilter_fft_response_tensors\n(self, b: torch.tensor, a: torch.tensor, *, length: int, n_conv: int, device: torch.device, dtype: torch.dtype) -> tuple[torch.tensor, torch.tensor]",
      "signature": "(self, b: torch.Tensor, a: torch.Tensor, *, length: int, n_conv: int, device: torch.device, dtype: torch.dtype) -> Tuple[torch.Tensor, torch.Tensor]",
      "source": {
        "endLine": 1772,
        "line": 1739,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_lfilter_responses_fast",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._lfilter_responses_fast",
      "searchText": "method\n_lfilter_responses_fast\ntorch_volpy.extraction.spikepursuit.spikepursuit._lfilter_responses_fast\n(self, b: torch.tensor, a: torch.tensor, length: int) -> tuple[torch.tensor, torch.tensor]",
      "signature": "(self, b: torch.Tensor, a: torch.Tensor, length: int) -> Tuple[torch.Tensor, torch.Tensor]",
      "source": {
        "endLine": 1783,
        "line": 1774,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_lfilter_responses_closed_form",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._lfilter_responses_closed_form",
      "searchText": "method\n_lfilter_responses_closed_form\ntorch_volpy.extraction.spikepursuit.spikepursuit._lfilter_responses_closed_form\n(self, b: torch.tensor, a: torch.tensor, length: int) -> tuple[torch.tensor, torch.tensor]",
      "signature": "(self, b: torch.Tensor, a: torch.Tensor, length: int) -> Tuple[torch.Tensor, torch.Tensor]",
      "source": {
        "endLine": 1824,
        "line": 1785,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_lfilter_responses_torch",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._lfilter_responses_torch",
      "searchText": "method\n_lfilter_responses_torch\ntorch_volpy.extraction.spikepursuit.spikepursuit._lfilter_responses_torch\n(self, b: torch.tensor, a: torch.tensor, length: int) -> tuple[torch.tensor, torch.tensor]",
      "signature": "(self, b: torch.Tensor, a: torch.Tensor, length: int) -> Tuple[torch.Tensor, torch.Tensor]",
      "source": {
        "endLine": 1867,
        "line": 1826,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_fft_lfilter_chunk_rows",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._fft_lfilter_chunk_rows",
      "searchText": "method\n_fft_lfilter_chunk_rows\ntorch_volpy.extraction.spikepursuit.spikepursuit._fft_lfilter_chunk_rows\n(self, rows: int, length: int, n_conv: int, dtype: torch.dtype, device: torch.device, *, target_bytes: optional[int] = none) -> int",
      "signature": "(self, rows: int, length: int, n_conv: int, dtype: torch.dtype, device: torch.device, *, target_bytes: Optional[int] = None) -> int",
      "source": {
        "endLine": 1900,
        "line": 1869,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_lfilter_zi",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._lfilter_zi",
      "searchText": "method\n_lfilter_zi\ntorch_volpy.extraction.spikepursuit.spikepursuit._lfilter_zi\n(self, b: torch.tensor, a: torch.tensor) -> torch.tensor",
      "signature": "(self, b: torch.Tensor, a: torch.Tensor) -> torch.Tensor",
      "source": {
        "endLine": 1924,
        "line": 1902,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Apply the VolPy-compatible Butterworth signal filter.",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "signal_filter",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit.signal_filter",
      "searchText": "method\nsignal_filter\ntorch_volpy.extraction.spikepursuit.spikepursuit.signal_filter\n(self, sg: torch.tensor, freq: float, fr: float, order: int = 3, mode: str = 'high', dim: int = 0) -> torch.tensor\napply the volpy-compatible butterworth signal filter.\napply the volpy-compatible butterworth signal filter.",
      "signature": "(self, sg: torch.Tensor, freq: float, fr: float, order: int = 3, mode: str = 'high', dim: int = 0) -> torch.Tensor",
      "source": {
        "endLine": 1936,
        "line": 1926,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Apply the VolPy-compatible Butterworth signal filter."
    },
    {
      "decorators": [],
      "docstring": "Return local-maximum sample indices, optionally above a minimum height.",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "find_peaks",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": true,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit.find_peaks",
      "searchText": "method\nfind_peaks\ntorch_volpy.extraction.spikepursuit.spikepursuit.find_peaks\n(self, x: torch.tensor, min_height: optional[float] = none) -> torch.tensor\nreturn local-maximum sample indices, optionally above a minimum height.\nreturn local-maximum sample indices, optionally above a minimum height.",
      "signature": "(self, x: torch.Tensor, min_height: Optional[float] = None) -> torch.Tensor",
      "source": {
        "endLine": 1952,
        "line": 1938,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": "Return local-maximum sample indices, optionally above a minimum height."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_background_components",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._background_components",
      "searchText": "method\n_background_components\ntorch_volpy.extraction.spikepursuit.spikepursuit._background_components\n(self, x: torch.tensor, k: int) -> torch.tensor",
      "signature": "(self, x: torch.Tensor, k: int) -> torch.Tensor",
      "source": {
        "endLine": 1980,
        "line": 1958,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_ridge_fit",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._ridge_fit",
      "searchText": "method\n_ridge_fit\ntorch_volpy.extraction.spikepursuit.spikepursuit._ridge_fit\n(self, x: torch.tensor, y: torch.tensor, alpha: float) -> torch.tensor",
      "signature": "(self, X: torch.Tensor, y: torch.Tensor, alpha: float) -> torch.Tensor",
      "source": {
        "endLine": 1989,
        "line": 1982,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_ridge_fit_intercept",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._ridge_fit_intercept",
      "searchText": "method\n_ridge_fit_intercept\ntorch_volpy.extraction.spikepursuit.spikepursuit._ridge_fit_intercept\n(self, x: torch.tensor, y: torch.tensor, alpha: float) -> torch.tensor",
      "signature": "(self, X: torch.Tensor, y: torch.Tensor, alpha: float) -> torch.Tensor",
      "source": {
        "endLine": 1992,
        "line": 1991,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_ridge_solver",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._ridge_solver",
      "searchText": "method\n_ridge_solver\ntorch_volpy.extraction.spikepursuit.spikepursuit._ridge_solver\n(self, x: torch.tensor, alpha: float) -> callable[[torch.tensor], torch.tensor]",
      "signature": "(self, X: torch.Tensor, alpha: float) -> Callable[[torch.Tensor], torch.Tensor]",
      "source": {
        "endLine": 2010,
        "line": 1994,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_ridge_solver_fit_intercept",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._ridge_solver_fit_intercept",
      "searchText": "method\n_ridge_solver_fit_intercept\ntorch_volpy.extraction.spikepursuit.spikepursuit._ridge_solver_fit_intercept\n(self, x: torch.tensor, alpha: float) -> callable[[torch.tensor], torch.tensor]",
      "signature": "(self, X: torch.Tensor, alpha: float) -> Callable[[torch.Tensor], torch.Tensor]",
      "source": {
        "endLine": 2034,
        "line": 2012,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_lsqr_dense",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._lsqr_dense",
      "searchText": "method\n_lsqr_dense\ntorch_volpy.extraction.spikepursuit.spikepursuit._lsqr_dense\n(self, a: torch.tensor, b: torch.tensor, *, damp: float = 0.0, atol: float = 1e-06, btol: float = 1e-06, conlim: float = 100000000.0, iter_lim: optional[int] = none, x0: optional[torch.tensor] = none) -> torch.tensor",
      "signature": "(self, A: torch.Tensor, b: torch.Tensor, *, damp: float = 0.0, atol: float = 1e-06, btol: float = 1e-06, conlim: float = 100000000.0, iter_lim: Optional[int] = None, x0: Optional[torch.Tensor] = None) -> torch.Tensor",
      "source": {
        "endLine": 2203,
        "line": 2036,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_build_predictor",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._build_predictor",
      "searchText": "method\n_build_predictor\ntorch_volpy.extraction.spikepursuit.spikepursuit._build_predictor\n(self, movie_patch: torch.tensor, sigma: float, kernel_size: optional[int] = none) -> torch.tensor",
      "signature": "(self, movie_patch: torch.Tensor, sigma: float, kernel_size: Optional[int] = None) -> torch.Tensor",
      "source": {
        "endLine": 2215,
        "line": 2205,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_gaussian_blur_2d",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._gaussian_blur_2d",
      "searchText": "method\n_gaussian_blur_2d\ntorch_volpy.extraction.spikepursuit.spikepursuit._gaussian_blur_2d\n(self, x: torch.tensor, sigma: float, kernel_size: optional[int] = none) -> torch.tensor",
      "signature": "(self, x: torch.Tensor, sigma: float, kernel_size: Optional[int] = None) -> torch.Tensor",
      "source": {
        "endLine": 2231,
        "line": 2217,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_gaussian_kernel2d",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._gaussian_kernel2d",
      "searchText": "method\n_gaussian_kernel2d\ntorch_volpy.extraction.spikepursuit.spikepursuit._gaussian_kernel2d\n(self, kernel_size: int, sigma: float, *, device: torch.device, dtype: torch.dtype) -> torch.tensor",
      "signature": "(self, kernel_size: int, sigma: float, *, device: torch.device, dtype: torch.dtype) -> torch.Tensor",
      "source": {
        "endLine": 2253,
        "line": 2233,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_disk",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._disk",
      "searchText": "method\n_disk\ntorch_volpy.extraction.spikepursuit.spikepursuit._disk\n(self, radius: int, *, device: torch.device, dtype: torch.dtype) -> torch.tensor",
      "signature": "(self, radius: int, *, device: torch.device, dtype: torch.dtype) -> torch.Tensor",
      "source": {
        "endLine": 2273,
        "line": 2255,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_binary_dilate",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._binary_dilate",
      "searchText": "method\n_binary_dilate\ntorch_volpy.extraction.spikepursuit.spikepursuit._binary_dilate\n(self, mask: torch.tensor, footprint: torch.tensor) -> torch.tensor",
      "signature": "(self, mask: torch.Tensor, footprint: torch.Tensor) -> torch.Tensor",
      "source": {
        "endLine": 2288,
        "line": 2275,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_same_conv1d",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._same_conv1d",
      "searchText": "method\n_same_conv1d\ntorch_volpy.extraction.spikepursuit.spikepursuit._same_conv1d\n(self, x: torch.tensor, kernel: torch.tensor) -> torch.tensor",
      "signature": "(self, x: torch.Tensor, kernel: torch.Tensor) -> torch.Tensor",
      "source": {
        "endLine": 2295,
        "line": 2290,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_numpy_median",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._numpy_median",
      "searchText": "method\n_numpy_median\ntorch_volpy.extraction.spikepursuit.spikepursuit._numpy_median\n(self, x: torch.tensor) -> torch.tensor",
      "signature": "(self, x: torch.Tensor) -> torch.Tensor",
      "source": {
        "endLine": 2298,
        "line": 2297,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_welch_psd",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._welch_psd",
      "searchText": "method\n_welch_psd\ntorch_volpy.extraction.spikepursuit.spikepursuit._welch_psd\n(self, x: torch.tensor, nfft: int) -> torch.tensor",
      "signature": "(self, x: torch.Tensor, nfft: int) -> torch.Tensor",
      "source": {
        "endLine": 2329,
        "line": 2300,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.extraction.Spikepursuit",
      "name": "_compute_snr",
      "parent": "torch_volpy.extraction.Spikepursuit.Spikepursuit",
      "public": false,
      "qualifiedName": "torch_volpy.extraction.Spikepursuit.Spikepursuit._compute_snr",
      "searchText": "method\n_compute_snr\ntorch_volpy.extraction.spikepursuit.spikepursuit._compute_snr\n(self, t: torch.tensor, spikes: torch.tensor) -> float",
      "signature": "(self, t: torch.Tensor, spikes: torch.Tensor) -> float",
      "source": {
        "endLine": 2340,
        "line": 2331,
        "path": "src/torch_volpy/extraction/Spikepursuit.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "exports": [
        "ALI",
        "ALIResult",
        "SpikePursuitResult",
        "Spikepursuit"
      ],
      "kind": "module",
      "module": "torch_volpy.extraction",
      "name": "torch_volpy.extraction",
      "public": true,
      "qualifiedName": "torch_volpy.extraction",
      "searchText": "module\ntorch_volpy.extraction\ntorch_volpy.extraction",
      "signature": "",
      "source": {
        "endLine": 1,
        "line": 1,
        "path": "src/torch_volpy/extraction/__init__.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "exports": [],
      "kind": "module",
      "module": "torch_volpy.filter.Filter",
      "name": "torch_volpy.filter.Filter",
      "public": true,
      "qualifiedName": "torch_volpy.filter.Filter",
      "searchText": "module\ntorch_volpy.filter.filter\ntorch_volpy.filter.filter",
      "signature": "",
      "source": {
        "endLine": 1,
        "line": 1,
        "path": "src/torch_volpy/filter/Filter.py"
      },
      "summary": ""
    },
    {
      "bases": [],
      "dataclass": false,
      "decorators": [],
      "docstring": "Gaussian-derived spatial high-pass filtering for movies using PyTorch.\n\nSupported input shapes:\n    - (T, X, Y)\n    - (T, X, Y, C)\n\nNotes:\n    - Filtering is applied per frame\n    - For multi-channel data, each channel is filtered independently\n    - The frame axis is NOT blurred\n    - This matches the kernel logic from the original OpenCV/Caiman code:\n      build a 2D Gaussian, keep only the central support, and subtract the\n      mean over that support so the kernel becomes zero-mean / high-pass-like",
      "kind": "class",
      "module": "torch_volpy.filter.Filter",
      "name": "Filter",
      "public": true,
      "qualifiedName": "torch_volpy.filter.Filter.Filter",
      "searchText": "class\nfilter\ntorch_volpy.filter.filter.filter\n()\ngaussian-derived spatial high-pass filtering for movies using pytorch.\ngaussian-derived spatial high-pass filtering for movies using pytorch.\n\nsupported input shapes:\n    - (t, x, y)\n    - (t, x, y, c)\n\nnotes:\n    - filtering is applied per frame\n    - for multi-channel data, each channel is filtered independently\n    - the frame axis is not blurred\n    - this matches the kernel logic from the original opencv/caiman code:\n      build a 2d gaussian, keep only the central support, and subtract the\n      mean over that support so the kernel becomes zero-mean / high-pass-like",
      "signature": "()",
      "source": {
        "endLine": 160,
        "line": 10,
        "path": "src/torch_volpy/filter/Filter.py"
      },
      "summary": "Gaussian-derived spatial high-pass filtering for movies using PyTorch."
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.filter.Filter",
      "name": "_caiman_highpass_kernel_2d",
      "parent": "torch_volpy.filter.Filter.Filter",
      "public": false,
      "qualifiedName": "torch_volpy.filter.Filter.Filter._caiman_highpass_kernel_2d",
      "searchText": "staticmethod\n_caiman_highpass_kernel_2d\ntorch_volpy.filter.filter.filter._caiman_highpass_kernel_2d\n(size: int, sigma: optional[float] = none, dtype: torch.dtype = torch.float32, device: optional[union[str, torch.device]] = none) -> torch.tensor\nstaticmethod",
      "signature": "(size: int, sigma: Optional[float] = None, dtype: torch.dtype = torch.float32, device: Optional[Union[str, torch.device]] = None) -> torch.Tensor",
      "source": {
        "endLine": 63,
        "line": 28,
        "path": "src/torch_volpy/filter/Filter.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.filter.Filter",
      "name": "_to_tensor",
      "parent": "torch_volpy.filter.Filter.Filter",
      "public": false,
      "qualifiedName": "torch_volpy.filter.Filter.Filter._to_tensor",
      "searchText": "staticmethod\n_to_tensor\ntorch_volpy.filter.filter.filter._to_tensor\n(movie: union[np.ndarray, torch.tensor], dtype: optional[torch.dtype] = none, device: optional[union[str, torch.device]] = none) -> torch.tensor\nstaticmethod",
      "signature": "(movie: Union[np.ndarray, torch.Tensor], dtype: Optional[torch.dtype] = None, device: Optional[Union[str, torch.device]] = None) -> torch.Tensor",
      "source": {
        "endLine": 82,
        "line": 66,
        "path": "src/torch_volpy/filter/Filter.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "classmethod"
      ],
      "docstring": "Apply the same Gaussian-derived high-pass kernel as the original code.\n\nArgs:\n    size:\n        Odd kernel size, e.g. 3, 5, 7\n    movie:\n        Shape (T, X, Y) or (T, X, Y, C)\n    sigma:\n        Gaussian sigma. If None, inferred from size\n    padding_mode:\n        Passed to torch.nn.functional.pad\n    dtype:\n        Internal compute dtype\n    device:\n        CPU or CUDA device\n\nReturns:\n    Filtered movie as a torch.Tensor with the same shape as input",
      "kind": "classmethod",
      "module": "torch_volpy.filter.Filter",
      "name": "hp_gaussian",
      "parent": "torch_volpy.filter.Filter.Filter",
      "public": true,
      "qualifiedName": "torch_volpy.filter.Filter.Filter.hp_gaussian",
      "searchText": "classmethod\nhp_gaussian\ntorch_volpy.filter.filter.filter.hp_gaussian\n(cls, size: int, movie: union[np.ndarray, torch.tensor], sigma: optional[float] = none, padding_mode: str = 'reflect', dtype: torch.dtype = torch.float32, device: optional[union[str, torch.device]] = none) -> torch.tensor\napply the same gaussian-derived high-pass kernel as the original code.\napply the same gaussian-derived high-pass kernel as the original code.\n\nargs:\n    size:\n        odd kernel size, e.g. 3, 5, 7\n    movie:\n        shape (t, x, y) or (t, x, y, c)\n    sigma:\n        gaussian sigma. if none, inferred from size\n    padding_mode:\n        passed to torch.nn.functional.pad\n    dtype:\n        internal compute dtype\n    device:\n        cpu or cuda device\n\nreturns:\n    filtered movie as a torch.tensor with the same shape as input\nclassmethod",
      "signature": "(cls, size: int, movie: Union[np.ndarray, torch.Tensor], sigma: Optional[float] = None, padding_mode: str = 'reflect', dtype: torch.dtype = torch.float32, device: Optional[Union[str, torch.device]] = None) -> torch.Tensor",
      "source": {
        "endLine": 160,
        "line": 85,
        "path": "src/torch_volpy/filter/Filter.py"
      },
      "summary": "Apply the same Gaussian-derived high-pass kernel as the original code."
    },
    {
      "decorators": [],
      "docstring": "",
      "exports": [
        "Filter"
      ],
      "kind": "module",
      "module": "torch_volpy.filter",
      "name": "torch_volpy.filter",
      "public": true,
      "qualifiedName": "torch_volpy.filter",
      "searchText": "module\ntorch_volpy.filter\ntorch_volpy.filter",
      "signature": "",
      "source": {
        "endLine": 1,
        "line": 1,
        "path": "src/torch_volpy/filter/__init__.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "GUI helpers for interactive voltage-imaging movie inspection.",
      "exports": [
        "ChannelMovie",
        "TiffMovie",
        "available_roi_ids",
        "bounding_box_from_mask",
        "build_cellpose_rois",
        "build_summary_image",
        "convert_tiff_to_h5",
        "crop_movie_hwt",
        "default_corrected_h5_path",
        "default_h5_path_for_movie",
        "extract_mean_trace",
        "freehand_to_mask",
        "is_motion_corrected_h5",
        "load_mask_file",
        "motion_correct_h5",
        "motion_correct_movie",
        "normalize_to_uint8",
        "open_movie",
        "polygon_to_mask",
        "read_display_frame",
        "rectangle_to_mask",
        "release_torch_memory"
      ],
      "kind": "module",
      "module": "torch_volpy.gui",
      "name": "torch_volpy.gui",
      "public": true,
      "qualifiedName": "torch_volpy.gui",
      "searchText": "module\ntorch_volpy.gui\ntorch_volpy.gui\ngui helpers for interactive voltage-imaging movie inspection.\ngui helpers for interactive voltage-imaging movie inspection.",
      "signature": "",
      "source": {
        "endLine": 1,
        "line": 1,
        "path": "src/torch_volpy/gui/__init__.py"
      },
      "summary": "GUI helpers for interactive voltage-imaging movie inspection."
    },
    {
      "decorators": [],
      "docstring": "",
      "exports": [],
      "kind": "module",
      "module": "torch_volpy.gui.__main__",
      "name": "torch_volpy.gui.__main__",
      "public": false,
      "qualifiedName": "torch_volpy.gui.__main__",
      "searchText": "module\ntorch_volpy.gui.__main__\ntorch_volpy.gui.__main__",
      "signature": "",
      "source": {
        "endLine": 1,
        "line": 1,
        "path": "src/torch_volpy/gui/__main__.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "exports": [],
      "kind": "module",
      "module": "torch_volpy.gui.core",
      "name": "torch_volpy.gui.core",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core",
      "searchText": "module\ntorch_volpy.gui.core\ntorch_volpy.gui.core",
      "signature": "",
      "source": {
        "endLine": 1,
        "line": 1,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "Union[str, Path]",
      "docstring": "",
      "kind": "alias",
      "module": "torch_volpy.gui.core",
      "name": "PathLike",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.PathLike",
      "searchText": "alias\npathlike\ntorch_volpy.gui.core.pathlike\nunion[str, path]",
      "signature": "",
      "source": {
        "endLine": 17,
        "line": 17,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "Tuple[float, float, float, float]",
      "docstring": "",
      "kind": "alias",
      "module": "torch_volpy.gui.core",
      "name": "Rect",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.Rect",
      "searchText": "alias\nrect\ntorch_volpy.gui.core.rect\ntuple[float, float, float, float]",
      "signature": "",
      "source": {
        "endLine": 18,
        "line": 18,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "Tuple[float, float]",
      "docstring": "",
      "kind": "alias",
      "module": "torch_volpy.gui.core",
      "name": "Point",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.Point",
      "searchText": "alias\npoint\ntorch_volpy.gui.core.point\ntuple[float, float]",
      "signature": "",
      "source": {
        "endLine": 19,
        "line": 19,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "_normalize_max_shifts",
      "public": false,
      "qualifiedName": "torch_volpy.gui.core._normalize_max_shifts",
      "searchText": "function\n_normalize_max_shifts\ntorch_volpy.gui.core._normalize_max_shifts\n(max_shifts: union[int, tuple[int, int]]) -> tuple[int, int]",
      "signature": "(max_shifts: Union[int, Tuple[int, int]]) -> Tuple[int, int]",
      "source": {
        "endLine": 34,
        "line": 22,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "_fit_max_shifts_to_frame_shape",
      "public": false,
      "qualifiedName": "torch_volpy.gui.core._fit_max_shifts_to_frame_shape",
      "searchText": "function\n_fit_max_shifts_to_frame_shape\ntorch_volpy.gui.core._fit_max_shifts_to_frame_shape\n(max_shifts: union[int, tuple[int, int]], frame_shape: sequence[int]) -> tuple[int, int]",
      "signature": "(max_shifts: Union[int, Tuple[int, int]], frame_shape: Sequence[int]) -> Tuple[int, int]",
      "source": {
        "endLine": 52,
        "line": 37,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": ""
    },
    {
      "bases": [],
      "dataclass": false,
      "decorators": [],
      "docstring": "Small Movie-compatible adapter for TIFF stacks used by the GUI.",
      "kind": "class",
      "module": "torch_volpy.gui.core",
      "name": "TiffMovie",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.TiffMovie",
      "searchText": "class\ntiffmovie\ntorch_volpy.gui.core.tiffmovie\n(path: pathlike) -> none\nsmall movie-compatible adapter for tiff stacks used by the gui.\nsmall movie-compatible adapter for tiff stacks used by the gui.",
      "signature": "(path: PathLike) -> None",
      "source": {
        "endLine": 194,
        "line": 55,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Small Movie-compatible adapter for TIFF stacks used by the GUI."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.core",
      "name": "__init__",
      "parent": "torch_volpy.gui.core.TiffMovie",
      "public": false,
      "qualifiedName": "torch_volpy.gui.core.TiffMovie.__init__",
      "searchText": "method\n__init__\ntorch_volpy.gui.core.tiffmovie.__init__\n(self, path: pathlike) -> none",
      "signature": "(self, path: PathLike) -> None",
      "source": {
        "endLine": 86,
        "line": 58,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "property"
      ],
      "docstring": "Number of frames in the TIFF stack.",
      "kind": "property",
      "module": "torch_volpy.gui.core",
      "name": "num_frames",
      "parent": "torch_volpy.gui.core.TiffMovie",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.TiffMovie.num_frames",
      "searchText": "property\nnum_frames\ntorch_volpy.gui.core.tiffmovie.num_frames\n(self) -> int\nnumber of frames in the tiff stack.\nnumber of frames in the tiff stack.\nproperty",
      "signature": "(self) -> int",
      "source": {
        "endLine": 91,
        "line": 89,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Number of frames in the TIFF stack."
    },
    {
      "decorators": [
        "property"
      ],
      "docstring": "Shape of one TIFF frame, excluding the time axis.",
      "kind": "property",
      "module": "torch_volpy.gui.core",
      "name": "frame_shape",
      "parent": "torch_volpy.gui.core.TiffMovie",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.TiffMovie.frame_shape",
      "searchText": "property\nframe_shape\ntorch_volpy.gui.core.tiffmovie.frame_shape\n(self) -> tuple[int, ...]\nshape of one tiff frame, excluding the time axis.\nshape of one tiff frame, excluding the time axis.\nproperty",
      "signature": "(self) -> Tuple[int, ...]",
      "source": {
        "endLine": 96,
        "line": 94,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Shape of one TIFF frame, excluding the time axis."
    },
    {
      "decorators": [],
      "docstring": "Close the TIFF file or memory map backing this adapter.",
      "kind": "method",
      "module": "torch_volpy.gui.core",
      "name": "close",
      "parent": "torch_volpy.gui.core.TiffMovie",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.TiffMovie.close",
      "searchText": "method\nclose\ntorch_volpy.gui.core.tiffmovie.close\n(self) -> none\nclose the tiff file or memory map backing this adapter.\nclose the tiff file or memory map backing this adapter.",
      "signature": "(self) -> None",
      "source": {
        "endLine": 110,
        "line": 98,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Close the TIFF file or memory map backing this adapter."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.core",
      "name": "_read_lazy_time_index",
      "parent": "torch_volpy.gui.core.TiffMovie",
      "public": false,
      "qualifiedName": "torch_volpy.gui.core.TiffMovie._read_lazy_time_index",
      "searchText": "method\n_read_lazy_time_index\ntorch_volpy.gui.core.tiffmovie._read_lazy_time_index\n(self, time_index)",
      "signature": "(self, time_index)",
      "source": {
        "endLine": 125,
        "line": 112,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.core",
      "name": "_read_lazy",
      "parent": "torch_volpy.gui.core.TiffMovie",
      "public": false,
      "qualifiedName": "torch_volpy.gui.core.TiffMovie._read_lazy",
      "searchText": "method\n_read_lazy\ntorch_volpy.gui.core.tiffmovie._read_lazy\n(self, index)",
      "signature": "(self, index)",
      "source": {
        "endLine": 150,
        "line": 127,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Read a TIFF frame or frame range as a numpy array or tensor.",
      "kind": "method",
      "module": "torch_volpy.gui.core",
      "name": "read",
      "parent": "torch_volpy.gui.core.TiffMovie",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.TiffMovie.read",
      "searchText": "method\nread\ntorch_volpy.gui.core.tiffmovie.read\n(self, index = ..., as_tensor: bool = true, dtype: optional[union[np.dtype, str]] = none, device: optional[union[str, torch.device]] = none, copy: bool = false)\nread a tiff frame or frame range as a numpy array or tensor.\nread a tiff frame or frame range as a numpy array or tensor.",
      "signature": "(self, index = ..., as_tensor: bool = True, dtype: Optional[Union[np.dtype, str]] = None, device: Optional[Union[str, torch.device]] = None, copy: bool = False)",
      "source": {
        "endLine": 177,
        "line": 152,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Read a TIFF frame or frame range as a numpy array or tensor."
    },
    {
      "decorators": [],
      "docstring": "Read a contiguous frame range from the TIFF stack.",
      "kind": "method",
      "module": "torch_volpy.gui.core",
      "name": "read_frames",
      "parent": "torch_volpy.gui.core.TiffMovie",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.TiffMovie.read_frames",
      "searchText": "method\nread_frames\ntorch_volpy.gui.core.tiffmovie.read_frames\n(self, start: int, stop: optional[int] = none, step: int = 1, as_tensor: bool = true, dtype: optional[union[np.dtype, str]] = none, device: optional[union[str, torch.device]] = none)\nread a contiguous frame range from the tiff stack.\nread a contiguous frame range from the tiff stack.",
      "signature": "(self, start: int, stop: Optional[int] = None, step: int = 1, as_tensor: bool = True, dtype: Optional[Union[np.dtype, str]] = None, device: Optional[Union[str, torch.device]] = None)",
      "source": {
        "endLine": 194,
        "line": 179,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Read a contiguous frame range from the TIFF stack."
    },
    {
      "bases": [],
      "dataclass": false,
      "decorators": [],
      "docstring": "Expose one channel of a movie as a grayscale `(T, Y, X)` movie.",
      "kind": "class",
      "module": "torch_volpy.gui.core",
      "name": "ChannelMovie",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.ChannelMovie",
      "searchText": "class\nchannelmovie\ntorch_volpy.gui.core.channelmovie\n(movie, channel: optional[int] = none) -> none\nexpose one channel of a movie as a grayscale `(t, y, x)` movie.\nexpose one channel of a movie as a grayscale `(t, y, x)` movie.",
      "signature": "(movie, channel: Optional[int] = None) -> None",
      "source": {
        "endLine": 228,
        "line": 197,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Expose one channel of a movie as a grayscale `(T, Y, X)` movie."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.core",
      "name": "__init__",
      "parent": "torch_volpy.gui.core.ChannelMovie",
      "public": false,
      "qualifiedName": "torch_volpy.gui.core.ChannelMovie.__init__",
      "searchText": "method\n__init__\ntorch_volpy.gui.core.channelmovie.__init__\n(self, movie, channel: optional[int] = none) -> none",
      "signature": "(self, movie, channel: Optional[int] = None) -> None",
      "source": {
        "endLine": 212,
        "line": 200,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Read grayscale frames from the selected channel.",
      "kind": "method",
      "module": "torch_volpy.gui.core",
      "name": "read_frames",
      "parent": "torch_volpy.gui.core.ChannelMovie",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.ChannelMovie.read_frames",
      "searchText": "method\nread_frames\ntorch_volpy.gui.core.channelmovie.read_frames\n(self, start: int, stop: optional[int] = none, step: int = 1, as_tensor: bool = true, dtype: optional[union[np.dtype, str]] = none, device: optional[union[str, torch.device]] = none)\nread grayscale frames from the selected channel.\nread grayscale frames from the selected channel.",
      "signature": "(self, start: int, stop: Optional[int] = None, step: int = 1, as_tensor: bool = True, dtype: Optional[Union[np.dtype, str]] = None, device: Optional[Union[str, torch.device]] = None)",
      "source": {
        "endLine": 228,
        "line": 214,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Read grayscale frames from the selected channel."
    },
    {
      "decorators": [],
      "docstring": "Open an HDF5 Movie or TIFF stack with a Movie-compatible interface.",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "open_movie",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.open_movie",
      "searchText": "function\nopen_movie\ntorch_volpy.gui.core.open_movie\n(path: pathlike, dataset: str = 'movie')\nopen an hdf5 movie or tiff stack with a movie-compatible interface.\nopen an hdf5 movie or tiff stack with a movie-compatible interface.",
      "signature": "(path: PathLike, dataset: str = 'movie')",
      "source": {
        "endLine": 239,
        "line": 231,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Open an HDF5 Movie or TIFF stack with a Movie-compatible interface."
    },
    {
      "decorators": [],
      "docstring": "Return the default HDF5 path corresponding to a source movie path.",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "default_h5_path_for_movie",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.default_h5_path_for_movie",
      "searchText": "function\ndefault_h5_path_for_movie\ntorch_volpy.gui.core.default_h5_path_for_movie\n(path: pathlike) -> path\nreturn the default hdf5 path corresponding to a source movie path.\nreturn the default hdf5 path corresponding to a source movie path.",
      "signature": "(path: PathLike) -> Path",
      "source": {
        "endLine": 247,
        "line": 242,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Return the default HDF5 path corresponding to a source movie path."
    },
    {
      "decorators": [],
      "docstring": "Return the default corrected HDF5 output path for a source movie.",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "default_corrected_h5_path",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.default_corrected_h5_path",
      "searchText": "function\ndefault_corrected_h5_path\ntorch_volpy.gui.core.default_corrected_h5_path\n(path: pathlike) -> path\nreturn the default corrected hdf5 output path for a source movie.\nreturn the default corrected hdf5 output path for a source movie.",
      "signature": "(path: PathLike) -> Path",
      "source": {
        "endLine": 255,
        "line": 250,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Return the default corrected HDF5 output path for a source movie."
    },
    {
      "decorators": [],
      "docstring": "Convert a TIFF stack to HDF5 with optional percent progress callback.",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "convert_tiff_to_h5",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.convert_tiff_to_h5",
      "searchText": "function\nconvert_tiff_to_h5\ntorch_volpy.gui.core.convert_tiff_to_h5\n(tiff_path: pathlike, h5_path: optional[pathlike] = none, *, dataset: str = 'movie', overwrite: bool = false, chunk_frames: int = 16, compression: optional[str] = none, compression_opts: optional[int] = none, progress_callback = none) -> path\nconvert a tiff stack to hdf5 with optional percent progress callback.\nconvert a tiff stack to hdf5 with optional percent progress callback.",
      "signature": "(tiff_path: PathLike, h5_path: Optional[PathLike] = None, *, dataset: str = 'movie', overwrite: bool = False, chunk_frames: int = 16, compression: Optional[str] = None, compression_opts: Optional[int] = None, progress_callback = None) -> Path",
      "source": {
        "endLine": 327,
        "line": 258,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Convert a TIFF stack to HDF5 with optional percent progress callback."
    },
    {
      "decorators": [],
      "docstring": "Return whether an HDF5 dataset is marked as motion corrected.",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "is_motion_corrected_h5",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.is_motion_corrected_h5",
      "searchText": "function\nis_motion_corrected_h5\ntorch_volpy.gui.core.is_motion_corrected_h5\n(path: pathlike, dataset: str = 'movie') -> bool\nreturn whether an hdf5 dataset is marked as motion corrected.\nreturn whether an hdf5 dataset is marked as motion corrected.",
      "signature": "(path: PathLike, dataset: str = 'movie') -> bool",
      "source": {
        "endLine": 341,
        "line": 330,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Return whether an HDF5 dataset is marked as motion corrected."
    },
    {
      "decorators": [
        "torch.inference_mode"
      ],
      "docstring": "Motion-correct a Movie-like object into a corrected HDF5 path.",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "motion_correct_movie",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.motion_correct_movie",
      "searchText": "function\nmotion_correct_movie\ntorch_volpy.gui.core.motion_correct_movie\n(movie, out_h5_path: optional[pathlike] = none, *, dataset: str = 'movie', overwrite: bool = false, max_shifts: union[int, tuple[int, int]] = (15, 15), frames_per_chunk: int = 256, device: union[str, torch.device] = 'cpu', progress_callback = none, source_path: optional[pathlike] = none, source_dataset: optional[str] = none, close_movie: bool = false, compression: optional[str] = none, compression_opts: optional[int] = none) -> path\nmotion-correct a movie-like object into a corrected hdf5 path.\nmotion-correct a movie-like object into a corrected hdf5 path.\ntorch.inference_mode",
      "signature": "(movie, out_h5_path: Optional[PathLike] = None, *, dataset: str = 'movie', overwrite: bool = False, max_shifts: Union[int, Tuple[int, int]] = (15, 15), frames_per_chunk: int = 256, device: Union[str, torch.device] = 'cpu', progress_callback = None, source_path: Optional[PathLike] = None, source_dataset: Optional[str] = None, close_movie: bool = False, compression: Optional[str] = None, compression_opts: Optional[int] = None) -> Path",
      "source": {
        "endLine": 474,
        "line": 345,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Motion-correct a Movie-like object into a corrected HDF5 path."
    },
    {
      "decorators": [
        "torch.inference_mode"
      ],
      "docstring": "Motion-correct an HDF5 movie into a corrected HDF5 path.",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "motion_correct_h5",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.motion_correct_h5",
      "searchText": "function\nmotion_correct_h5\ntorch_volpy.gui.core.motion_correct_h5\n(h5_path: pathlike, out_h5_path: optional[pathlike] = none, *, dataset: str = 'movie', overwrite: bool = false, max_shifts: union[int, tuple[int, int]] = (15, 15), frames_per_chunk: int = 256, device: union[str, torch.device] = 'cpu', progress_callback = none, compression: optional[str] = none, compression_opts: optional[int] = none) -> path\nmotion-correct an hdf5 movie into a corrected hdf5 path.\nmotion-correct an hdf5 movie into a corrected hdf5 path.\ntorch.inference_mode",
      "signature": "(h5_path: PathLike, out_h5_path: Optional[PathLike] = None, *, dataset: str = 'movie', overwrite: bool = False, max_shifts: Union[int, Tuple[int, int]] = (15, 15), frames_per_chunk: int = 256, device: Union[str, torch.device] = 'cpu', progress_callback = None, compression: Optional[str] = None, compression_opts: Optional[int] = None) -> Path",
      "source": {
        "endLine": 509,
        "line": 478,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Motion-correct an HDF5 movie into a corrected HDF5 path."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "_frame_index",
      "public": false,
      "qualifiedName": "torch_volpy.gui.core._frame_index",
      "searchText": "function\n_frame_index\ntorch_volpy.gui.core._frame_index\n(movie, frame_index: int, channel: optional[int])",
      "signature": "(movie, frame_index: int, channel: Optional[int])",
      "source": {
        "endLine": 520,
        "line": 512,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Read one movie frame as a 2D numpy array for display.",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "read_display_frame",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.read_display_frame",
      "searchText": "function\nread_display_frame\ntorch_volpy.gui.core.read_display_frame\n(movie, frame_index: int, channel: optional[int] = none) -> np.ndarray\nread one movie frame as a 2d numpy array for display.\nread one movie frame as a 2d numpy array for display.",
      "signature": "(movie, frame_index: int, channel: Optional[int] = None) -> np.ndarray",
      "source": {
        "endLine": 532,
        "line": 523,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Read one movie frame as a 2D numpy array for display."
    },
    {
      "decorators": [],
      "docstring": "Robustly normalize a 2D image into uint8 for Qt display.",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "normalize_to_uint8",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.normalize_to_uint8",
      "searchText": "function\nnormalize_to_uint8\ntorch_volpy.gui.core.normalize_to_uint8\n(image: np.ndarray, low_percentile: float = 1.0, high_percentile: float = 99.5) -> np.ndarray\nrobustly normalize a 2d image into uint8 for qt display.\nrobustly normalize a 2d image into uint8 for qt display.",
      "signature": "(image: np.ndarray, low_percentile: float = 1.0, high_percentile: float = 99.5) -> np.ndarray",
      "source": {
        "endLine": 559,
        "line": 535,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Robustly normalize a 2D image into uint8 for Qt display."
    },
    {
      "decorators": [],
      "docstring": "Release Python references and flush CUDA allocator caches when available.",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "release_torch_memory",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.release_torch_memory",
      "searchText": "function\nrelease_torch_memory\ntorch_volpy.gui.core.release_torch_memory\n(device: optional[union[str, torch.device]] = none, *, flush_cuda_cache: bool = true) -> none\nrelease python references and flush cuda allocator caches when available.\nrelease python references and flush cuda allocator caches when available.",
      "signature": "(device: Optional[Union[str, torch.device]] = None, *, flush_cuda_cache: bool = True) -> None",
      "source": {
        "endLine": 584,
        "line": 562,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Release Python references and flush CUDA allocator caches when available."
    },
    {
      "decorators": [
        "torch.inference_mode"
      ],
      "docstring": "Build the Cellpose input image used in the project tests: `[mean, mean, corr]`.",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "build_summary_image",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.build_summary_image",
      "searchText": "function\nbuild_summary_image\ntorch_volpy.gui.core.build_summary_image\n(movie, *, channel: optional[int] = none, window_size: int = 1000, baseline_percentile: float = 8.0, device: union[str, torch.device] = 'cpu') -> torch.tensor\nbuild the cellpose input image used in the project tests: `[mean, mean, corr]`.\nbuild the cellpose input image used in the project tests: `[mean, mean, corr]`.\ntorch.inference_mode",
      "signature": "(movie, *, channel: Optional[int] = None, window_size: int = 1000, baseline_percentile: float = 8.0, device: Union[str, torch.device] = 'cpu') -> torch.Tensor",
      "source": {
        "endLine": 606,
        "line": 588,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Build the Cellpose input image used in the project tests: `[mean, mean, corr]`."
    },
    {
      "decorators": [
        "torch.inference_mode"
      ],
      "docstring": "Build a summary image and run Cellpose segmentation to produce labeled ROIs.",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "build_cellpose_rois",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.build_cellpose_rois",
      "searchText": "function\nbuild_cellpose_rois\ntorch_volpy.gui.core.build_cellpose_rois\n(movie, *, model_path: pathlike, channel: optional[int] = none, summary_window_size: int = 1000, baseline_percentile: float = 8.0, device: union[str, torch.device] = 'cpu', gpu: bool = true, save_to_disk: bool = false, save_dir: optional[pathlike] = none) -> tuple[np.ndarray, torch.tensor]\nbuild a summary image and run cellpose segmentation to produce labeled rois.\nbuild a summary image and run cellpose segmentation to produce labeled rois.\ntorch.inference_mode",
      "signature": "(movie, *, model_path: PathLike, channel: Optional[int] = None, summary_window_size: int = 1000, baseline_percentile: float = 8.0, device: Union[str, torch.device] = 'cpu', gpu: bool = True, save_to_disk: bool = False, save_dir: Optional[PathLike] = None) -> Tuple[np.ndarray, torch.Tensor]",
      "source": {
        "endLine": 655,
        "line": 610,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Build a summary image and run Cellpose segmentation to produce labeled ROIs."
    },
    {
      "decorators": [],
      "docstring": "Convert an image-space rectangle `(x0, y0, x1, y1)` to a labeled mask.",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "rectangle_to_mask",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.rectangle_to_mask",
      "searchText": "function\nrectangle_to_mask\ntorch_volpy.gui.core.rectangle_to_mask\n(rect: rect, shape: tuple[int, int], label: int = 1) -> np.ndarray\nconvert an image-space rectangle `(x0, y0, x1, y1)` to a labeled mask.\nconvert an image-space rectangle `(x0, y0, x1, y1)` to a labeled mask.",
      "signature": "(rect: Rect, shape: Tuple[int, int], label: int = 1) -> np.ndarray",
      "source": {
        "endLine": 677,
        "line": 658,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Convert an image-space rectangle `(x0, y0, x1, y1)` to a labeled mask."
    },
    {
      "decorators": [],
      "docstring": "Rasterize a polygon into a labeled mask using pixel-center tests.",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "polygon_to_mask",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.polygon_to_mask",
      "searchText": "function\npolygon_to_mask\ntorch_volpy.gui.core.polygon_to_mask\n(points: sequence[point], shape: tuple[int, int], label: int = 1) -> np.ndarray\nrasterize a polygon into a labeled mask using pixel-center tests.\nrasterize a polygon into a labeled mask using pixel-center tests.",
      "signature": "(points: Sequence[Point], shape: Tuple[int, int], label: int = 1) -> np.ndarray",
      "source": {
        "endLine": 708,
        "line": 680,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Rasterize a polygon into a labeled mask using pixel-center tests."
    },
    {
      "decorators": [],
      "docstring": "Rasterize a freehand stroke into a labeled mask.",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "freehand_to_mask",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.freehand_to_mask",
      "searchText": "function\nfreehand_to_mask\ntorch_volpy.gui.core.freehand_to_mask\n(points: sequence[point], shape: tuple[int, int], radius: float = 2.5, label: int = 1, fill_closed: bool = true) -> np.ndarray\nrasterize a freehand stroke into a labeled mask.\nrasterize a freehand stroke into a labeled mask.",
      "signature": "(points: Sequence[Point], shape: Tuple[int, int], radius: float = 2.5, label: int = 1, fill_closed: bool = True) -> np.ndarray",
      "source": {
        "endLine": 764,
        "line": 711,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Rasterize a freehand stroke into a labeled mask."
    },
    {
      "decorators": [],
      "docstring": "Return non-background ROI ids present in a label mask or instance stack.",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "available_roi_ids",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.available_roi_ids",
      "searchText": "function\navailable_roi_ids\ntorch_volpy.gui.core.available_roi_ids\n(mask: np.ndarray) -> np.ndarray\nreturn non-background roi ids present in a label mask or instance stack.\nreturn non-background roi ids present in a label mask or instance stack.",
      "signature": "(mask: np.ndarray) -> np.ndarray",
      "source": {
        "endLine": 776,
        "line": 767,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Return non-background ROI ids present in a label mask or instance stack."
    },
    {
      "decorators": [],
      "docstring": "Return `(x0, y0, x1, y1)` bounds for a labeled ROI.",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "bounding_box_from_mask",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.bounding_box_from_mask",
      "searchText": "function\nbounding_box_from_mask\ntorch_volpy.gui.core.bounding_box_from_mask\n(mask: np.ndarray, roi_id: int = 1, padding: int = 0) -> tuple[int, int, int, int]\nreturn `(x0, y0, x1, y1)` bounds for a labeled roi.\nreturn `(x0, y0, x1, y1)` bounds for a labeled roi.",
      "signature": "(mask: np.ndarray, roi_id: int = 1, padding: int = 0) -> Tuple[int, int, int, int]",
      "source": {
        "endLine": 799,
        "line": 779,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Return `(x0, y0, x1, y1)` bounds for a labeled ROI."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "_movie_read_batch",
      "public": false,
      "qualifiedName": "torch_volpy.gui.core._movie_read_batch",
      "searchText": "function\n_movie_read_batch\ntorch_volpy.gui.core._movie_read_batch\n(movie, start: int, stop: int, channel: optional[int], device: torch.device)",
      "signature": "(movie, start: int, stop: int, channel: Optional[int], device: torch.device)",
      "source": {
        "endLine": 813,
        "line": 802,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "torch.inference_mode"
      ],
      "docstring": "Extract mean intensity traces for multiple labeled ROIs in one pass.",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "extract_mean_traces",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.extract_mean_traces",
      "searchText": "function\nextract_mean_traces\ntorch_volpy.gui.core.extract_mean_traces\n(movie, roi_mask: np.ndarray, roi_ids: optional[iterable[int]] = none, *, channel: optional[int] = none, batch_size: int = 256, device: union[str, torch.device] = 'cpu') -> dict[int, torch.tensor]\nextract mean intensity traces for multiple labeled rois in one pass.\nextract mean intensity traces for multiple labeled rois in one pass.\ntorch.inference_mode",
      "signature": "(movie, roi_mask: np.ndarray, roi_ids: Optional[Iterable[int]] = None, *, channel: Optional[int] = None, batch_size: int = 256, device: Union[str, torch.device] = 'cpu') -> dict[int, torch.Tensor]",
      "source": {
        "endLine": 897,
        "line": 817,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Extract mean intensity traces for multiple labeled ROIs in one pass."
    },
    {
      "decorators": [
        "torch.inference_mode"
      ],
      "docstring": "Extract a simple mean intensity trace from one labeled ROI.",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "extract_mean_trace",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.extract_mean_trace",
      "searchText": "function\nextract_mean_trace\ntorch_volpy.gui.core.extract_mean_trace\n(movie, roi_mask: np.ndarray, roi_id: int = 1, *, channel: optional[int] = none, batch_size: int = 256, device: union[str, torch.device] = 'cpu') -> torch.tensor\nextract a simple mean intensity trace from one labeled roi.\nextract a simple mean intensity trace from one labeled roi.\ntorch.inference_mode",
      "signature": "(movie, roi_mask: np.ndarray, roi_id: int = 1, *, channel: Optional[int] = None, batch_size: int = 256, device: Union[str, torch.device] = 'cpu') -> torch.Tensor",
      "source": {
        "endLine": 919,
        "line": 901,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Extract a simple mean intensity trace from one labeled ROI."
    },
    {
      "decorators": [],
      "docstring": "Read the ROI bounding crop and return it as `[H, W, T]` for ALI.",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "crop_movie_hwt",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.crop_movie_hwt",
      "searchText": "function\ncrop_movie_hwt\ntorch_volpy.gui.core.crop_movie_hwt\n(movie, roi_mask: np.ndarray, roi_id: int = 1, *, channel: optional[int] = none, padding: int = 0, device: union[str, torch.device] = 'cpu') -> tuple[torch.tensor, tuple[int, int, int, int]]\nread the roi bounding crop and return it as `[h, w, t]` for ali.\nread the roi bounding crop and return it as `[h, w, t]` for ali.",
      "signature": "(movie, roi_mask: np.ndarray, roi_id: int = 1, *, channel: Optional[int] = None, padding: int = 0, device: Union[str, torch.device] = 'cpu') -> Tuple[torch.Tensor, Tuple[int, int, int, int]]",
      "source": {
        "endLine": 945,
        "line": 922,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Read the ROI bounding crop and return it as `[H, W, T]` for ALI."
    },
    {
      "decorators": [
        "torch.inference_mode"
      ],
      "docstring": "Run SpikePursuit extraction for one ROI from the GUI pipeline.",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "run_spikepursuit",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.run_spikepursuit",
      "searchText": "function\nrun_spikepursuit\ntorch_volpy.gui.core.run_spikepursuit\n(movie, roi_mask: np.ndarray, roi_id: int, *, frame_rate: float, channel: optional[int] = none, device: union[str, torch.device] = 'cpu', flip_signal: bool = true, **spikepursuit_options)\nrun spikepursuit extraction for one roi from the gui pipeline.\nrun spikepursuit extraction for one roi from the gui pipeline.\ntorch.inference_mode",
      "signature": "(movie, roi_mask: np.ndarray, roi_id: int, *, frame_rate: float, channel: Optional[int] = None, device: Union[str, torch.device] = 'cpu', flip_signal: bool = True, **spikepursuit_options)",
      "source": {
        "endLine": 972,
        "line": 949,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Run SpikePursuit extraction for one ROI from the GUI pipeline."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "_split_spikepursuit_batch_options",
      "public": false,
      "qualifiedName": "torch_volpy.gui.core._split_spikepursuit_batch_options",
      "searchText": "function\n_split_spikepursuit_batch_options\ntorch_volpy.gui.core._split_spikepursuit_batch_options\n(options: dict) -> tuple[dict, optional[int], optional[int]]",
      "signature": "(options: dict) -> tuple[dict, Optional[int], Optional[int]]",
      "source": {
        "endLine": 989,
        "line": 975,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "torch.inference_mode"
      ],
      "docstring": "Yield SpikePursuit results for multiple ROIs from the GUI pipeline.",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "iter_spikepursuit_results",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.iter_spikepursuit_results",
      "searchText": "function\niter_spikepursuit_results\ntorch_volpy.gui.core.iter_spikepursuit_results\n(movie, roi_mask: np.ndarray, roi_ids: iterable[int], *, frame_rate: float, channel: optional[int] = none, device: union[str, torch.device] = 'cpu', flip_signal: bool = true, **spikepursuit_options) -> iterator\nyield spikepursuit results for multiple rois from the gui pipeline.\nyield spikepursuit results for multiple rois from the gui pipeline.\ntorch.inference_mode",
      "signature": "(movie, roi_mask: np.ndarray, roi_ids: Iterable[int], *, frame_rate: float, channel: Optional[int] = None, device: Union[str, torch.device] = 'cpu', flip_signal: bool = True, **spikepursuit_options) -> Iterator",
      "source": {
        "endLine": 1020,
        "line": 993,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Yield SpikePursuit results for multiple ROIs from the GUI pipeline."
    },
    {
      "decorators": [
        "torch.inference_mode"
      ],
      "docstring": "Run ALI extraction for one ROI and return the result with its crop box.",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "run_ali",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.run_ali",
      "searchText": "function\nrun_ali\ntorch_volpy.gui.core.run_ali\n(movie, roi_mask: np.ndarray, roi_id: int, *, frame_rate: float, channel: optional[int] = none, device: union[str, torch.device] = 'cpu', padding: int = 0, **ali_options)\nrun ali extraction for one roi and return the result with its crop box.\nrun ali extraction for one roi and return the result with its crop box.\ntorch.inference_mode",
      "signature": "(movie, roi_mask: np.ndarray, roi_id: int, *, frame_rate: float, channel: Optional[int] = None, device: Union[str, torch.device] = 'cpu', padding: int = 0, **ali_options)",
      "source": {
        "endLine": 1047,
        "line": 1024,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Run ALI extraction for one ROI and return the result with its crop box."
    },
    {
      "decorators": [],
      "default": "('masks', 'mask', 'roi_mask', 'labels', 'label', 'segmentation')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.core",
      "name": "_MASK_DATASET_NAMES",
      "public": false,
      "qualifiedName": "torch_volpy.gui.core._MASK_DATASET_NAMES",
      "searchText": "constant\n_mask_dataset_names\ntorch_volpy.gui.core._mask_dataset_names\n('masks', 'mask', 'roi_mask', 'labels', 'label', 'segmentation')",
      "signature": "",
      "source": {
        "endLine": 1050,
        "line": 1050,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "('ROI', 'roi', 'rois')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.core",
      "name": "_MASK_GROUP_NAMES",
      "public": false,
      "qualifiedName": "torch_volpy.gui.core._MASK_GROUP_NAMES",
      "searchText": "constant\n_mask_group_names\ntorch_volpy.gui.core._mask_group_names\n('roi', 'roi', 'rois')",
      "signature": "",
      "source": {
        "endLine": 1051,
        "line": 1051,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "_first_h5_dataset",
      "public": false,
      "qualifiedName": "torch_volpy.gui.core._first_h5_dataset",
      "searchText": "function\n_first_h5_dataset\ntorch_volpy.gui.core._first_h5_dataset\n(group: h5py.group) -> h5py.dataset",
      "signature": "(group: h5py.Group) -> h5py.Dataset",
      "source": {
        "endLine": 1079,
        "line": 1054,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "_float_mask_threshold",
      "public": false,
      "qualifiedName": "torch_volpy.gui.core._float_mask_threshold",
      "searchText": "function\n_float_mask_threshold\ntorch_volpy.gui.core._float_mask_threshold\n(arr: np.ndarray) -> float",
      "signature": "(arr: np.ndarray) -> float",
      "source": {
        "endLine": 1086,
        "line": 1082,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "_instance_stack_to_label_mask",
      "public": false,
      "qualifiedName": "torch_volpy.gui.core._instance_stack_to_label_mask",
      "searchText": "function\n_instance_stack_to_label_mask\ntorch_volpy.gui.core._instance_stack_to_label_mask\n(stack: np.ndarray) -> np.ndarray",
      "signature": "(stack: np.ndarray) -> np.ndarray",
      "source": {
        "endLine": 1105,
        "line": 1089,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "_instance_stack_to_binary_stack",
      "public": false,
      "qualifiedName": "torch_volpy.gui.core._instance_stack_to_binary_stack",
      "searchText": "function\n_instance_stack_to_binary_stack\ntorch_volpy.gui.core._instance_stack_to_binary_stack\n(stack: np.ndarray) -> np.ndarray",
      "signature": "(stack: np.ndarray) -> np.ndarray",
      "source": {
        "endLine": 1120,
        "line": 1108,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "_looks_like_instance_values",
      "public": false,
      "qualifiedName": "torch_volpy.gui.core._looks_like_instance_values",
      "searchText": "function\n_looks_like_instance_values\ntorch_volpy.gui.core._looks_like_instance_values\n(arr: np.ndarray) -> bool",
      "signature": "(arr: np.ndarray) -> bool",
      "source": {
        "endLine": 1136,
        "line": 1123,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "_looks_like_color_mask",
      "public": false,
      "qualifiedName": "torch_volpy.gui.core._looks_like_color_mask",
      "searchText": "function\n_looks_like_color_mask\ntorch_volpy.gui.core._looks_like_color_mask\n(arr: np.ndarray) -> bool",
      "signature": "(arr: np.ndarray) -> bool",
      "source": {
        "endLine": 1140,
        "line": 1139,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "_mask_stack_instance_axis",
      "public": false,
      "qualifiedName": "torch_volpy.gui.core._mask_stack_instance_axis",
      "searchText": "function\n_mask_stack_instance_axis\ntorch_volpy.gui.core._mask_stack_instance_axis\n(arr: np.ndarray) -> int",
      "signature": "(arr: np.ndarray) -> int",
      "source": {
        "endLine": 1153,
        "line": 1143,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "_coerce_mask_array",
      "public": false,
      "qualifiedName": "torch_volpy.gui.core._coerce_mask_array",
      "searchText": "function\n_coerce_mask_array\ntorch_volpy.gui.core._coerce_mask_array\n(arr, *, preserve_instances: bool = false) -> np.ndarray",
      "signature": "(arr, *, preserve_instances: bool = False) -> np.ndarray",
      "source": {
        "endLine": 1192,
        "line": 1156,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Load a labeled ROI mask from TIFF, NPY/NPZ, or HDF5.",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "load_mask_file",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.load_mask_file",
      "searchText": "function\nload_mask_file\ntorch_volpy.gui.core.load_mask_file\n(path: pathlike, dataset: optional[str] = none, *, preserve_instances: bool = false) -> np.ndarray\nload a labeled roi mask from tiff, npy/npz, or hdf5.\nload a labeled roi mask from tiff, npy/npz, or hdf5.",
      "signature": "(path: PathLike, dataset: Optional[str] = None, *, preserve_instances: bool = False) -> np.ndarray",
      "source": {
        "endLine": 1213,
        "line": 1195,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Load a labeled ROI mask from TIFF, NPY/NPZ, or HDF5."
    },
    {
      "decorators": [],
      "docstring": "Raise if an ROI mask shape does not match a movie frame shape.",
      "kind": "function",
      "module": "torch_volpy.gui.core",
      "name": "ensure_shape_matches",
      "public": true,
      "qualifiedName": "torch_volpy.gui.core.ensure_shape_matches",
      "searchText": "function\nensure_shape_matches\ntorch_volpy.gui.core.ensure_shape_matches\n(mask: np.ndarray, frame_shape: iterable[int]) -> none\nraise if an roi mask shape does not match a movie frame shape.\nraise if an roi mask shape does not match a movie frame shape.",
      "signature": "(mask: np.ndarray, frame_shape: Iterable[int]) -> None",
      "source": {
        "endLine": 1224,
        "line": 1216,
        "path": "src/torch_volpy/gui/core.py"
      },
      "summary": "Raise if an ROI mask shape does not match a movie frame shape."
    },
    {
      "decorators": [],
      "docstring": "",
      "exports": [],
      "kind": "module",
      "module": "torch_volpy.gui.qt_app",
      "name": "torch_volpy.gui.qt_app",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app",
      "searchText": "module\ntorch_volpy.gui.qt_app\ntorch_volpy.gui.qt_app",
      "signature": "",
      "source": {
        "endLine": 1,
        "line": 1,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "pyqtSignal",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "Signal",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.Signal",
      "searchText": "constant\nsignal\ntorch_volpy.gui.qt_app.signal\npyqtsignal",
      "signature": "",
      "source": {
        "endLine": 138,
        "line": 138,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_truthy_env",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._truthy_env",
      "searchText": "function\n_truthy_env\ntorch_volpy.gui.qt_app._truthy_env\n(value: optional[str]) -> bool",
      "signature": "(value: Optional[str]) -> bool",
      "source": {
        "endLine": 142,
        "line": 141,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_qt_debug_enabled",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._qt_debug_enabled",
      "searchText": "function\n_qt_debug_enabled\ntorch_volpy.gui.qt_app._qt_debug_enabled\n(argv: list[str]) -> bool",
      "signature": "(argv: list[str]) -> bool",
      "source": {
        "endLine": 146,
        "line": 145,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_quiet_qt_message_handler",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._quiet_qt_message_handler",
      "searchText": "function\n_quiet_qt_message_handler\ntorch_volpy.gui.qt_app._quiet_qt_message_handler\n(message_type, context, message: str) -> none",
      "signature": "(message_type, context, message: str) -> None",
      "source": {
        "endLine": 157,
        "line": 149,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_configure_qt_message_logging",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._configure_qt_message_logging",
      "searchText": "function\n_configure_qt_message_logging\ntorch_volpy.gui.qt_app._configure_qt_message_logging\n(argv: list[str]) -> list[str]",
      "signature": "(argv: list[str]) -> list[str]",
      "source": {
        "endLine": 165,
        "line": 160,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_qt_enum",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._qt_enum",
      "searchText": "function\n_qt_enum\ntorch_volpy.gui.qt_app._qt_enum\n(group: str, name: str)",
      "signature": "(group: str, name: str)",
      "source": {
        "endLine": 172,
        "line": 168,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_style_enum",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._style_enum",
      "searchText": "function\n_style_enum\ntorch_volpy.gui.qt_app._style_enum\n(group: str, name: str)",
      "signature": "(group: str, name: str)",
      "source": {
        "endLine": 179,
        "line": 175,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_box_direction",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._box_direction",
      "searchText": "function\n_box_direction\ntorch_volpy.gui.qt_app._box_direction\n(name: str)",
      "signature": "(name: str)",
      "source": {
        "endLine": 186,
        "line": 182,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_event_enum",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._event_enum",
      "searchText": "function\n_event_enum\ntorch_volpy.gui.qt_app._event_enum\n(name: str)",
      "signature": "(name: str)",
      "source": {
        "endLine": 193,
        "line": 189,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_qt_enum('MouseButton', 'LeftButton')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "LEFT_BUTTON",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.LEFT_BUTTON",
      "searchText": "constant\nleft_button\ntorch_volpy.gui.qt_app.left_button\n_qt_enum('mousebutton', 'leftbutton')",
      "signature": "",
      "source": {
        "endLine": 196,
        "line": 196,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_qt_enum('MouseButton', 'RightButton')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "RIGHT_BUTTON",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.RIGHT_BUTTON",
      "searchText": "constant\nright_button\ntorch_volpy.gui.qt_app.right_button\n_qt_enum('mousebutton', 'rightbutton')",
      "signature": "",
      "source": {
        "endLine": 197,
        "line": 197,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_qt_enum('Orientation', 'Horizontal')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "HORIZONTAL",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.HORIZONTAL",
      "searchText": "constant\nhorizontal\ntorch_volpy.gui.qt_app.horizontal\n_qt_enum('orientation', 'horizontal')",
      "signature": "",
      "source": {
        "endLine": 198,
        "line": 198,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_qt_enum('Orientation', 'Vertical')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "VERTICAL",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.VERTICAL",
      "searchText": "constant\nvertical\ntorch_volpy.gui.qt_app.vertical\n_qt_enum('orientation', 'vertical')",
      "signature": "",
      "source": {
        "endLine": 199,
        "line": 199,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_qt_enum('AlignmentFlag', 'AlignRight')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "ALIGN_RIGHT",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.ALIGN_RIGHT",
      "searchText": "constant\nalign_right\ntorch_volpy.gui.qt_app.align_right\n_qt_enum('alignmentflag', 'alignright')",
      "signature": "",
      "source": {
        "endLine": 200,
        "line": 200,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_qt_enum('AlignmentFlag', 'AlignLeft')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "ALIGN_LEFT",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.ALIGN_LEFT",
      "searchText": "constant\nalign_left\ntorch_volpy.gui.qt_app.align_left\n_qt_enum('alignmentflag', 'alignleft')",
      "signature": "",
      "source": {
        "endLine": 201,
        "line": 201,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_qt_enum('AlignmentFlag', 'AlignTop')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "ALIGN_TOP",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.ALIGN_TOP",
      "searchText": "constant\nalign_top\ntorch_volpy.gui.qt_app.align_top\n_qt_enum('alignmentflag', 'aligntop')",
      "signature": "",
      "source": {
        "endLine": 202,
        "line": 202,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_qt_enum('AlignmentFlag', 'AlignCenter')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "ALIGN_CENTER",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.ALIGN_CENTER",
      "searchText": "constant\nalign_center\ntorch_volpy.gui.qt_app.align_center\n_qt_enum('alignmentflag', 'aligncenter')",
      "signature": "",
      "source": {
        "endLine": 203,
        "line": 203,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_qt_enum('FocusPolicy', 'ClickFocus')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "CLICK_FOCUS",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.CLICK_FOCUS",
      "searchText": "constant\nclick_focus\ntorch_volpy.gui.qt_app.click_focus\n_qt_enum('focuspolicy', 'clickfocus')",
      "signature": "",
      "source": {
        "endLine": 204,
        "line": 204,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_qt_enum('AspectRatioMode', 'KeepAspectRatio')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "KEEP_ASPECT",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.KEEP_ASPECT",
      "searchText": "constant\nkeep_aspect\ntorch_volpy.gui.qt_app.keep_aspect\n_qt_enum('aspectratiomode', 'keepaspectratio')",
      "signature": "",
      "source": {
        "endLine": 205,
        "line": 205,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_qt_enum('TransformationMode', 'SmoothTransformation')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "SMOOTH_TRANSFORM",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.SMOOTH_TRANSFORM",
      "searchText": "constant\nsmooth_transform\ntorch_volpy.gui.qt_app.smooth_transform\n_qt_enum('transformationmode', 'smoothtransformation')",
      "signature": "",
      "source": {
        "endLine": 206,
        "line": 206,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_qt_enum('ScrollBarPolicy', 'ScrollBarAlwaysOff')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "SCROLLBAR_ALWAYS_OFF",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.SCROLLBAR_ALWAYS_OFF",
      "searchText": "constant\nscrollbar_always_off\ntorch_volpy.gui.qt_app.scrollbar_always_off\n_qt_enum('scrollbarpolicy', 'scrollbaralwaysoff')",
      "signature": "",
      "source": {
        "endLine": 207,
        "line": 207,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_qt_enum('BrushStyle', 'NoBrush')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "NO_BRUSH",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.NO_BRUSH",
      "searchText": "constant\nno_brush\ntorch_volpy.gui.qt_app.no_brush\n_qt_enum('brushstyle', 'nobrush')",
      "signature": "",
      "source": {
        "endLine": 208,
        "line": 208,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_qt_enum('PenStyle', 'SolidLine')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "SOLID_LINE",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.SOLID_LINE",
      "searchText": "constant\nsolid_line\ntorch_volpy.gui.qt_app.solid_line\n_qt_enum('penstyle', 'solidline')",
      "signature": "",
      "source": {
        "endLine": 209,
        "line": 209,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_qt_enum('PenCapStyle', 'RoundCap')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "ROUND_CAP",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.ROUND_CAP",
      "searchText": "constant\nround_cap\ntorch_volpy.gui.qt_app.round_cap\n_qt_enum('pencapstyle', 'roundcap')",
      "signature": "",
      "source": {
        "endLine": 210,
        "line": 210,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_qt_enum('PenJoinStyle', 'RoundJoin')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "ROUND_JOIN",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.ROUND_JOIN",
      "searchText": "constant\nround_join\ntorch_volpy.gui.qt_app.round_join\n_qt_enum('penjoinstyle', 'roundjoin')",
      "signature": "",
      "source": {
        "endLine": 211,
        "line": 211,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_box_direction('LeftToRight')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "BOX_LEFT_TO_RIGHT",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.BOX_LEFT_TO_RIGHT",
      "searchText": "constant\nbox_left_to_right\ntorch_volpy.gui.qt_app.box_left_to_right\n_box_direction('lefttoright')",
      "signature": "",
      "source": {
        "endLine": 212,
        "line": 212,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_box_direction('TopToBottom')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "BOX_TOP_TO_BOTTOM",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.BOX_TOP_TO_BOTTOM",
      "searchText": "constant\nbox_top_to_bottom\ntorch_volpy.gui.qt_app.box_top_to_bottom\n_box_direction('toptobottom')",
      "signature": "",
      "source": {
        "endLine": 213,
        "line": 213,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_qt_enum('WindowType', 'Popup')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "POPUP_WINDOW",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.POPUP_WINDOW",
      "searchText": "constant\npopup_window\ntorch_volpy.gui.qt_app.popup_window\n_qt_enum('windowtype', 'popup')",
      "signature": "",
      "source": {
        "endLine": 214,
        "line": 214,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_qt_enum('WindowType', 'ToolTip')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "TOOLTIP_WINDOW",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.TOOLTIP_WINDOW",
      "searchText": "constant\ntooltip_window\ntorch_volpy.gui.qt_app.tooltip_window\n_qt_enum('windowtype', 'tooltip')",
      "signature": "",
      "source": {
        "endLine": 215,
        "line": 215,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_qt_enum('WindowType', 'FramelessWindowHint')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "FRAMELESS_WINDOW_HINT",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.FRAMELESS_WINDOW_HINT",
      "searchText": "constant\nframeless_window_hint\ntorch_volpy.gui.qt_app.frameless_window_hint\n_qt_enum('windowtype', 'framelesswindowhint')",
      "signature": "",
      "source": {
        "endLine": 216,
        "line": 216,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_qt_enum('WindowType', 'NoDropShadowWindowHint')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "NO_DROP_SHADOW_WINDOW_HINT",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.NO_DROP_SHADOW_WINDOW_HINT",
      "searchText": "constant\nno_drop_shadow_window_hint\ntorch_volpy.gui.qt_app.no_drop_shadow_window_hint\n_qt_enum('windowtype', 'nodropshadowwindowhint')",
      "signature": "",
      "source": {
        "endLine": 217,
        "line": 217,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_qt_enum('WidgetAttribute', 'WA_StyledBackground')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "WA_STYLED_BACKGROUND",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.WA_STYLED_BACKGROUND",
      "searchText": "constant\nwa_styled_background\ntorch_volpy.gui.qt_app.wa_styled_background\n_qt_enum('widgetattribute', 'wa_styledbackground')",
      "signature": "",
      "source": {
        "endLine": 218,
        "line": 218,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_qt_enum('WidgetAttribute', 'WA_TranslucentBackground')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "WA_TRANSLUCENT_BACKGROUND",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.WA_TRANSLUCENT_BACKGROUND",
      "searchText": "constant\nwa_translucent_background\ntorch_volpy.gui.qt_app.wa_translucent_background\n_qt_enum('widgetattribute', 'wa_translucentbackground')",
      "signature": "",
      "source": {
        "endLine": 219,
        "line": 219,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_qt_enum('WidgetAttribute', 'WA_TransparentForMouseEvents')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "WA_TRANSPARENT_FOR_MOUSE_EVENTS",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.WA_TRANSPARENT_FOR_MOUSE_EVENTS",
      "searchText": "constant\nwa_transparent_for_mouse_events\ntorch_volpy.gui.qt_app.wa_transparent_for_mouse_events\n_qt_enum('widgetattribute', 'wa_transparentformouseevents')",
      "signature": "",
      "source": {
        "endLine": 220,
        "line": 220,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_event_enum('ToolTip')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "EVENT_TOOLTIP",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.EVENT_TOOLTIP",
      "searchText": "constant\nevent_tooltip\ntorch_volpy.gui.qt_app.event_tooltip\n_event_enum('tooltip')",
      "signature": "",
      "source": {
        "endLine": 221,
        "line": 221,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_event_enum('Leave')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "EVENT_LEAVE",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.EVENT_LEAVE",
      "searchText": "constant\nevent_leave\ntorch_volpy.gui.qt_app.event_leave\n_event_enum('leave')",
      "signature": "",
      "source": {
        "endLine": 222,
        "line": 222,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_event_enum('Hide')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "EVENT_HIDE",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.EVENT_HIDE",
      "searchText": "constant\nevent_hide\ntorch_volpy.gui.qt_app.event_hide\n_event_enum('hide')",
      "signature": "",
      "source": {
        "endLine": 223,
        "line": 223,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_event_enum('MouseButtonPress')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "EVENT_MOUSE_BUTTON_PRESS",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.EVENT_MOUSE_BUTTON_PRESS",
      "searchText": "constant\nevent_mouse_button_press\ntorch_volpy.gui.qt_app.event_mouse_button_press\n_event_enum('mousebuttonpress')",
      "signature": "",
      "source": {
        "endLine": 224,
        "line": 224,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_event_enum('MouseMove')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "EVENT_MOUSE_MOVE",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.EVENT_MOUSE_MOVE",
      "searchText": "constant\nevent_mouse_move\ntorch_volpy.gui.qt_app.event_mouse_move\n_event_enum('mousemove')",
      "signature": "",
      "source": {
        "endLine": 225,
        "line": 225,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_event_enum('MouseButtonRelease')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "EVENT_MOUSE_BUTTON_RELEASE",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.EVENT_MOUSE_BUTTON_RELEASE",
      "searchText": "constant\nevent_mouse_button_release\ntorch_volpy.gui.qt_app.event_mouse_button_release\n_event_enum('mousebuttonrelease')",
      "signature": "",
      "source": {
        "endLine": 226,
        "line": 226,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_event_enum('WindowDeactivate')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "EVENT_WINDOW_DEACTIVATE",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.EVENT_WINDOW_DEACTIVATE",
      "searchText": "constant\nevent_window_deactivate\ntorch_volpy.gui.qt_app.event_window_deactivate\n_event_enum('windowdeactivate')",
      "signature": "",
      "source": {
        "endLine": 227,
        "line": 227,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_style_enum('PrimitiveElement', 'PE_IndicatorSpinUp')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "SPIN_UP_INDICATOR",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.SPIN_UP_INDICATOR",
      "searchText": "constant\nspin_up_indicator\ntorch_volpy.gui.qt_app.spin_up_indicator\n_style_enum('primitiveelement', 'pe_indicatorspinup')",
      "signature": "",
      "source": {
        "endLine": 228,
        "line": 228,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_style_enum('PrimitiveElement', 'PE_IndicatorSpinDown')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "SPIN_DOWN_INDICATOR",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.SPIN_DOWN_INDICATOR",
      "searchText": "constant\nspin_down_indicator\ntorch_volpy.gui.qt_app.spin_down_indicator\n_style_enum('primitiveelement', 'pe_indicatorspindown')",
      "signature": "",
      "source": {
        "endLine": 229,
        "line": 229,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "_style_enum('StateFlag', 'State_Enabled')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "STATE_ENABLED",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.STATE_ENABLED",
      "searchText": "constant\nstate_enabled\ntorch_volpy.gui.qt_app.state_enabled\n_style_enum('stateflag', 'state_enabled')",
      "signature": "",
      "source": {
        "endLine": 230,
        "line": 230,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "1560",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "DEFAULT_WINDOW_WIDTH",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.DEFAULT_WINDOW_WIDTH",
      "searchText": "constant\ndefault_window_width\ntorch_volpy.gui.qt_app.default_window_width\n1560",
      "signature": "",
      "source": {
        "endLine": 231,
        "line": 231,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "980",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "DEFAULT_WINDOW_HEIGHT",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.DEFAULT_WINDOW_HEIGHT",
      "searchText": "constant\ndefault_window_height\ntorch_volpy.gui.qt_app.default_window_height\n980",
      "signature": "",
      "source": {
        "endLine": 232,
        "line": 232,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "820",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "MIN_WINDOW_WIDTH",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MIN_WINDOW_WIDTH",
      "searchText": "constant\nmin_window_width\ntorch_volpy.gui.qt_app.min_window_width\n820",
      "signature": "",
      "source": {
        "endLine": 233,
        "line": 233,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "520",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "MIN_WINDOW_HEIGHT",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MIN_WINDOW_HEIGHT",
      "searchText": "constant\nmin_window_height\ntorch_volpy.gui.qt_app.min_window_height\n520",
      "signature": "",
      "source": {
        "endLine": 234,
        "line": 234,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "0.92",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "INITIAL_SCREEN_WIDTH_FRACTION",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.INITIAL_SCREEN_WIDTH_FRACTION",
      "searchText": "constant\ninitial_screen_width_fraction\ntorch_volpy.gui.qt_app.initial_screen_width_fraction\n0.92",
      "signature": "",
      "source": {
        "endLine": 235,
        "line": 235,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "0.9",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "INITIAL_SCREEN_HEIGHT_FRACTION",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.INITIAL_SCREEN_HEIGHT_FRACTION",
      "searchText": "constant\ninitial_screen_height_fraction\ntorch_volpy.gui.qt_app.initial_screen_height_fraction\n0.9",
      "signature": "",
      "source": {
        "endLine": 236,
        "line": 236,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "120",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "MOVIE_VIEW_MIN_HEIGHT",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MOVIE_VIEW_MIN_HEIGHT",
      "searchText": "constant\nmovie_view_min_height\ntorch_volpy.gui.qt_app.movie_view_min_height\n120",
      "signature": "",
      "source": {
        "endLine": 237,
        "line": 237,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "32",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "ROI_MASK_HISTORY_LIMIT",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.ROI_MASK_HISTORY_LIMIT",
      "searchText": "constant\nroi_mask_history_limit\ntorch_volpy.gui.qt_app.roi_mask_history_limit\n32",
      "signature": "",
      "source": {
        "endLine": 238,
        "line": 238,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "10.0",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "MOVIE_ZOOM_MIN_PERCENT",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MOVIE_ZOOM_MIN_PERCENT",
      "searchText": "constant\nmovie_zoom_min_percent\ntorch_volpy.gui.qt_app.movie_zoom_min_percent\n10.0",
      "signature": "",
      "source": {
        "endLine": 239,
        "line": 239,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "100000.0",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "MOVIE_ZOOM_MAX_PERCENT",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MOVIE_ZOOM_MAX_PERCENT",
      "searchText": "constant\nmovie_zoom_max_percent\ntorch_volpy.gui.qt_app.movie_zoom_max_percent\n100000.0",
      "signature": "",
      "source": {
        "endLine": 240,
        "line": 240,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "'\\nQWidget {\\n color: #0f172a;\\n font-family: \"Segoe UI\";\\n font-size: 13px;\\n}\\n\\nQMainWindow,\\nQDialog#advancedOptionsDialog,\\nQDialog#traceWindow,\\nQWidget#appRoot,\\nQWidget#workspaceBody,\\nQWidget#centerWorkspace,\\nQWidget#controlPanel,\\nQWidget#inspectorPanel,\\nQScrollArea#controlsScroll,\\nQScrollArea#controlsScroll > QWidget > QWidget {\\n background-color: #f3f6fb;\\n}\\n\\nQWidget#topBar {\\n background-color: #ffffff;\\n border-bottom: 1px solid #dfe7f2;\\n}\\n\\nQLabel#topAppTitle {\\n color: #0f172a;\\n font-size: 18px;\\n font-weight: 800;\\n}\\n\\nQLabel#versionBadge,\\nQLabel#footerMetric,\\nQLabel[role=\"muted\"] {\\n color: #64748b;\\n}\\n\\nQLabel#versionBadge {\\n padding: 1px 10px;\\n border-left: 1px solid #e2e8f0;\\n}\\n\\nQWidget#footerBar {\\n background-color: #ffffff;\\n border-top: 1px solid #dfe7f2;\\n}\\n\\nQLabel#readyDot {\\n background-color: #10b981;\\n border-radius: 5px;\\n}\\n\\nQLabel#footerMetric {\\n padding: 0 12px;\\n border-left: 1px solid #e2e8f0;\\n}\\n\\nQWidget#tracePanel,\\nQDialog#traceWindow,\\nQFrame#inspectorCard,\\nQFrame#metricTile {\\n background-color: #ffffff;\\n border: 1px solid #dfe7f2;\\n border-radius: 8px;\\n}\\n\\nQFrame#viewerCard {\\n background-color: #ffffff;\\n border: none;\\n border-radius: 8px;\\n}\\n\\nQWidget#viewerToolbar,\\nQWidget#traceTabs,\\nQWidget#inspectorTabs {\\n background-color: #ffffff;\\n border-bottom: 1px solid #e2e8f0;\\n}\\n\\nQWidget#tracePlotArea {\\n background-color: #ffffff;\\n}\\n\\nQLabel[role=\"eyebrow\"] {\\n color: #334155;\\n font-size: 11px;\\n font-weight: 800;\\n letter-spacing: 0.4px;\\n text-transform: uppercase;\\n}\\n\\nQLabel[role=\"hero\"] {\\n color: #0f172a;\\n font-size: 20px;\\n font-weight: 700;\\n}\\n\\nQLabel[role=\"metricLabel\"] {\\n color: #475569;\\n font-size: 11px;\\n}\\n\\nQLabel[role=\"metricValue\"] {\\n color: #0f172a;\\n font-size: 18px;\\n font-weight: 700;\\n}\\n\\nQLabel[role=\"successValue\"] {\\n color: #059669;\\n font-size: 18px;\\n font-weight: 700;\\n}\\n\\nQLabel[role=\"pill\"],\\nQLabel[role=\"okPill\"] {\\n background-color: #eff6ff;\\n color: #1d4ed8;\\n border: 1px solid #bfdbfe;\\n border-radius: 5px;\\n padding: 4px 8px;\\n font-weight: 600;\\n}\\n\\nQLabel[role=\"okPill\"] {\\n background-color: #dcfce7;\\n color: #047857;\\n border-color: #a7f3d0;\\n}\\n\\nQLabel[role=\"warningDot\"] {\\n background-color: #facc15;\\n border-radius: 7px;\\n}\\n\\nQFrame#verticalDivider {\\n background-color: #e2e8f0;\\n border: none;\\n}\\n\\nQScrollArea#controlsScroll {\\n border: none;\\n background-color: transparent;\\n}\\n\\nQScrollArea#advancedOptionsScroll,\\nQWidget#advancedOptionsViewport,\\nQWidget#advancedOptionsForm {\\n background-color: #f3f6fb;\\n}\\n\\nQFrame#advancedOptionsPanel {\\n background-color: #f3f6fb;\\n border: 1px solid #cbd5e1;\\n border-radius: 8px;\\n}\\n\\nQScrollArea#advancedOptionsScroll {\\n border: none;\\n}\\n\\nQWidget#sidebarHeader {\\n background-color: transparent;\\n margin-bottom: 2px;\\n}\\n\\nQLabel#appMark {\\n background-color: #0f766e;\\n border-radius: 6px;\\n}\\n\\nQLabel#appTitle {\\n color: #0f172a;\\n font-size: 18px;\\n font-weight: 700;\\n}\\n\\nQLabel#appSubtitle {\\n color: #64748b;\\n}\\n\\nQLabel#frameCounter {\\n color: #334155;\\n background-color: #f8fafc;\\n border: 1px solid #e2e8f0;\\n border-radius: 6px;\\n padding: 6px 8px;\\n font-weight: 600;\\n}\\n\\nQLabel[role=\"status\"] {\\n color: #334155;\\n background-color: #f8fafc;\\n border: 1px solid #e2e8f0;\\n border-radius: 6px;\\n padding: 7px 8px;\\n}\\n\\nQGroupBox {\\n background-color: #ffffff;\\n border: 1px solid #dbe3ef;\\n border-radius: 8px;\\n margin-top: 0;\\n}\\n\\nQLineEdit,\\nQComboBox,\\nQSpinBox,\\nQDoubleSpinBox {\\n background-color: #ffffff;\\n border: 1px solid #cbd5e1;\\n border-radius: 6px;\\n padding: 5px 8px;\\n padding-right: 26px;\\n min-height: 24px;\\n selection-background-color: #2563eb;\\n}\\n\\nQLabel#sectionTitle {\\n color: #0f172a;\\n font-size: 14px;\\n font-weight: 700;\\n padding: 0 0 6px 0;\\n}\\n\\nQLineEdit:hover,\\nQComboBox:hover,\\nQSpinBox:hover,\\nQDoubleSpinBox:hover {\\n border-color: #94a3b8;\\n}\\n\\nQLineEdit:focus,\\nQComboBox:focus,\\nQSpinBox:focus,\\nQDoubleSpinBox:focus {\\n border: 1px solid #2563eb;\\n}\\n\\nQLineEdit:disabled,\\nQComboBox:disabled,\\nQSpinBox:disabled,\\nQDoubleSpinBox:disabled {\\n background-color: #f1f5f9;\\n border-color: #dbe3ef;\\n color: #94a3b8;\\n}\\n\\nQComboBox::drop-down {\\n border: none;\\n width: 26px;\\n}\\n\\nQComboBox::down-arrow {\\n image: url(\"__COMBOBOX_DOWN_ARROW__\");\\n width: 11px;\\n height: 11px;\\n}\\n\\nQComboBox::down-arrow:disabled {\\n image: url(\"__COMBOBOX_DOWN_ARROW_DISABLED__\");\\n}\\n\\nQComboBox QAbstractItemView {\\n background-color: #ffffff;\\n border: 1px solid #cbd5e1;\\n border-radius: 0;\\n color: #0f172a;\\n outline: 0;\\n padding: 3px;\\n selection-background-color: #dbeafe;\\n selection-color: #1d4ed8;\\n}\\n\\nQFrame#comboPopup {\\n background-color: #ffffff;\\n border: 1px solid #cbd5e1;\\n border-radius: 6px;\\n}\\n\\nQFrame#comboPopup QListView {\\n background-color: #ffffff;\\n border: none;\\n border-radius: 5px;\\n color: #0f172a;\\n outline: 0;\\n padding: 3px;\\n selection-background-color: #dbeafe;\\n selection-color: #1d4ed8;\\n}\\n\\nQComboBox QAbstractItemView::item,\\nQListView::item {\\n min-height: 28px;\\n padding: 6px 10px;\\n border-radius: 4px;\\n}\\n\\nQComboBox QAbstractItemView::item:hover,\\nQListView::item:hover {\\n background-color: #f1f5f9;\\n}\\n\\nQComboBox QAbstractItemView::item:selected,\\nQListView::item:selected {\\n background-color: #dbeafe;\\n color: #1d4ed8;\\n}\\n\\nQPushButton {\\n background-color: #ffffff;\\n border: 1px solid #cbd5e1;\\n border-radius: 6px;\\n color: #1e293b;\\n font-weight: 600;\\n min-height: 30px;\\n padding: 6px 10px;\\n}\\n\\nQPushButton:hover {\\n background-color: #f8fafc;\\n border-color: #94a3b8;\\n}\\n\\nQPushButton:pressed {\\n background-color: #e2e8f0;\\n}\\n\\nQPushButton:disabled {\\n background-color: #f1f5f9;\\n border-color: #dbe3ef;\\n color: #94a3b8;\\n}\\n\\nQPushButton[variant=\"primary\"] {\\n background-color: #2563eb;\\n border-color: #2563eb;\\n color: #ffffff;\\n}\\n\\nQPushButton[variant=\"primary\"]:hover {\\n background-color: #1d4ed8;\\n border-color: #1d4ed8;\\n}\\n\\nQPushButton[variant=\"primary\"]:pressed {\\n background-color: #1e40af;\\n border-color: #1e40af;\\n}\\n\\nQPushButton[variant=\"primary\"]:disabled {\\n background-color: #cbd5e1;\\n border-color: #cbd5e1;\\n color: #f8fafc;\\n}\\n\\nQPushButton[variant=\"secondary\"] {\\n background-color: #f8fafc;\\n}\\n\\nQPushButton[variant=\"toolbar\"],\\nQPushButton[variant=\"toggle\"],\\nQPushButton[variant=\"tab\"],\\nQPushButton[variant=\"link\"] {\\n background-color: transparent;\\n border-color: transparent;\\n min-height: 26px;\\n padding: 4px 8px;\\n color: #1e293b;\\n}\\n\\nQPushButton[variant=\"toolbar\"]:hover,\\nQPushButton[variant=\"toggle\"]:hover,\\nQPushButton[variant=\"tab\"]:hover {\\n background-color: #f1f5f9;\\n border-color: #e2e8f0;\\n}\\n\\nQPushButton[variant=\"toggle\"]:checked {\\n background-color: #2563eb;\\n border-color: #2563eb;\\n color: #ffffff;\\n}\\n\\nQPushButton[variant=\"tab\"] {\\n border-radius: 0;\\n border-bottom: 2px solid transparent;\\n font-weight: 700;\\n color: #334155;\\n}\\n\\nQPushButton[variant=\"tab\"]:checked {\\n color: #2563eb;\\n border-bottom-color: #2563eb;\\n}\\n\\nQPushButton[variant=\"link\"] {\\n color: #2563eb;\\n font-weight: 700;\\n}\\n\\nQPushButton[variant=\"quiet\"] {\\n background-color: transparent;\\n border-color: transparent;\\n}\\n\\nQPushButton[variant=\"icon\"] {\\n background-color: rgba(255, 255, 255, 210);\\n border: 1px solid #cbd5e1;\\n border-radius: 6px;\\n min-height: 24px;\\n min-width: 26px;\\n padding: 0;\\n}\\n\\nQPushButton[variant=\"iconQuiet\"] {\\n background-color: transparent;\\n border: none;\\n border-radius: 6px;\\n min-height: 24px;\\n min-width: 26px;\\n padding: 0;\\n}\\n\\nQPushButton[variant=\"iconQuiet\"]:hover {\\n background-color: #f1f5f9;\\n}\\n\\nQPushButton[variant=\"iconQuiet\"]:pressed {\\n background-color: #e2e8f0;\\n}\\n\\nQPushButton[variant=\"iconQuiet\"]:disabled {\\n background-color: transparent;\\n color: #94a3b8;\\n}\\n\\nQProgressBar {\\n background-color: #e2e8f0;\\n border: none;\\n border-radius: 4px;\\n height: 8px;\\n text-align: center;\\n color: transparent;\\n}\\n\\nQProgressBar::chunk {\\n background-color: #0f766e;\\n border-radius: 4px;\\n}\\n\\nQSlider {\\n min-height: 28px;\\n}\\n\\nQSlider::groove:horizontal {\\n height: 4px;\\n background-color: #dbe3ef;\\n border-radius: 2px;\\n margin: 0 8px;\\n}\\n\\nQSlider::sub-page:horizontal {\\n background-color: #2563eb;\\n border-radius: 2px;\\n margin: 0 8px;\\n}\\n\\nQSlider::add-page:horizontal {\\n background-color: #dbe3ef;\\n border-radius: 2px;\\n margin: 0 8px;\\n}\\n\\nQSlider::handle:horizontal {\\n background-color: #2563eb;\\n border: 2px solid #ffffff;\\n width: 16px;\\n height: 16px;\\n margin: -6px 0;\\n border-radius: 8px;\\n}\\n\\nQSlider::groove:horizontal:disabled {\\n background-color: #e2e8f0;\\n}\\n\\nQSlider::sub-page:horizontal:disabled,\\nQSlider::add-page:horizontal:disabled {\\n background-color: #e2e8f0;\\n}\\n\\nQSlider::handle:horizontal:disabled {\\n background-color: #cbd5e1;\\n border-color: #f8fafc;\\n}\\n\\nQCheckBox {\\n spacing: 8px;\\n color: #334155;\\n}\\n\\nQGraphicsView#movieView {\\n background-color: #f8fafc;\\n border: none;\\n}\\n\\nQFrame#roiToolIsland {\\n background-color: rgba(255, 255, 255, 236);\\n border: 1px solid #dfe7f2;\\n border-radius: 8px;\\n}\\n\\nQPushButton[variant=\"roiTool\"] {\\n background-color: transparent;\\n border: 1px solid transparent;\\n border-radius: 6px;\\n min-height: 28px;\\n min-width: 30px;\\n padding: 0;\\n}\\n\\nQPushButton[variant=\"roiTool\"]:hover {\\n background-color: #f1f5f9;\\n border-color: #e2e8f0;\\n}\\n\\nQPushButton[variant=\"roiTool\"]:checked {\\n background-color: #dbeafe;\\n border-color: #60a5fa;\\n}\\n\\nQWidget#tracePanel,\\nQWidget#traceContent {\\n background-color: #ffffff;\\n}\\n\\nQWidget#traceControls {\\n background-color: #ffffff;\\n border-top: 1px solid #e2e8f0;\\n}\\n\\nQWidget#traceRestoreBar {\\n background-color: #f8fafc;\\n border-top: 1px solid #cbd5e1;\\n}\\n\\nQScrollBar:vertical {\\n background-color: transparent;\\n width: 14px;\\n margin: 2px 0;\\n}\\n\\nQScrollBar::handle:vertical {\\n background-color: #cbd5e1;\\n border-radius: 3px;\\n min-height: 28px;\\n margin: 0 4px;\\n}\\n\\nQScrollBar::handle:vertical:hover {\\n background-color: #94a3b8;\\n}\\n\\nQScrollBar::add-page:vertical,\\nQScrollBar::sub-page:vertical {\\n background-color: transparent;\\n}\\n\\nQScrollBar::add-line:vertical,\\nQScrollBar::sub-line:vertical {\\n height: 0;\\n}\\n\\nQWidget#roundedTooltip QLabel {\\n background-color: transparent;\\n color: #f8fafc;\\n}\\n'",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "APP_STYLESHEET",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.APP_STYLESHEET",
      "searchText": "constant\napp_stylesheet\ntorch_volpy.gui.qt_app.app_stylesheet\n'\\nqwidget {\\n color: #0f172a;\\n font-family: \"segoe ui\";\\n font-size: 13px;\\n}\\n\\nqmainwindow,\\nqdialog#advancedoptionsdialog,\\nqdialog#tracewindow,\\nqwidget#approot,\\nqwidget#workspacebody,\\nqwidget#centerworkspace,\\nqwidget#controlpanel,\\nqwidget#inspectorpanel,\\nqscrollarea#controlsscroll,\\nqscrollarea#controlsscroll > qwidget > qwidget {\\n background-color: #f3f6fb;\\n}\\n\\nqwidget#topbar {\\n background-color: #ffffff;\\n border-bottom: 1px solid #dfe7f2;\\n}\\n\\nqlabel#topapptitle {\\n color: #0f172a;\\n font-size: 18px;\\n font-weight: 800;\\n}\\n\\nqlabel#versionbadge,\\nqlabel#footermetric,\\nqlabel[role=\"muted\"] {\\n color: #64748b;\\n}\\n\\nqlabel#versionbadge {\\n padding: 1px 10px;\\n border-left: 1px solid #e2e8f0;\\n}\\n\\nqwidget#footerbar {\\n background-color: #ffffff;\\n border-top: 1px solid #dfe7f2;\\n}\\n\\nqlabel#readydot {\\n background-color: #10b981;\\n border-radius: 5px;\\n}\\n\\nqlabel#footermetric {\\n padding: 0 12px;\\n border-left: 1px solid #e2e8f0;\\n}\\n\\nqwidget#tracepanel,\\nqdialog#tracewindow,\\nqframe#inspectorcard,\\nqframe#metrictile {\\n background-color: #ffffff;\\n border: 1px solid #dfe7f2;\\n border-radius: 8px;\\n}\\n\\nqframe#viewercard {\\n background-color: #ffffff;\\n border: none;\\n border-radius: 8px;\\n}\\n\\nqwidget#viewertoolbar,\\nqwidget#tracetabs,\\nqwidget#inspectortabs {\\n background-color: #ffffff;\\n border-bottom: 1px solid #e2e8f0;\\n}\\n\\nqwidget#traceplotarea {\\n background-color: #ffffff;\\n}\\n\\nqlabel[role=\"eyebrow\"] {\\n color: #334155;\\n font-size: 11px;\\n font-weight: 800;\\n letter-spacing: 0.4px;\\n text-transform: uppercase;\\n}\\n\\nqlabel[role=\"hero\"] {\\n color: #0f172a;\\n font-size: 20px;\\n font-weight: 700;\\n}\\n\\nqlabel[role=\"metriclabel\"] {\\n color: #475569;\\n font-size: 11px;\\n}\\n\\nqlabel[role=\"metricvalue\"] {\\n color: #0f172a;\\n font-size: 18px;\\n font-weight: 700;\\n}\\n\\nqlabel[role=\"successvalue\"] {\\n color: #059669;\\n font-size: 18px;\\n font-weight: 700;\\n}\\n\\nqlabel[role=\"pill\"],\\nqlabel[role=\"okpill\"] {\\n background-color: #eff6ff;\\n color: #1d4ed8;\\n border: 1px solid #bfdbfe;\\n border-radius: 5px;\\n padding: 4px 8px;\\n font-weight: 600;\\n}\\n\\nqlabel[role=\"okpill\"] {\\n background-color: #dcfce7;\\n color: #047857;\\n border-color: #a7f3d0;\\n}\\n\\nqlabel[role=\"warningdot\"] {\\n background-color: #facc15;\\n border-radius: 7px;\\n}\\n\\nqframe#verticaldivider {\\n background-color: #e2e8f0;\\n border: none;\\n}\\n\\nqscrollarea#controlsscroll {\\n border: none;\\n background-color: transparent;\\n}\\n\\nqscrollarea#advancedoptionsscroll,\\nqwidget#advancedoptionsviewport,\\nqwidget#advancedoptionsform {\\n background-color: #f3f6fb;\\n}\\n\\nqframe#advancedoptionspanel {\\n background-color: #f3f6fb;\\n border: 1px solid #cbd5e1;\\n border-radius: 8px;\\n}\\n\\nqscrollarea#advancedoptionsscroll {\\n border: none;\\n}\\n\\nqwidget#sidebarheader {\\n background-color: transparent;\\n margin-bottom: 2px;\\n}\\n\\nqlabel#appmark {\\n background-color: #0f766e;\\n border-radius: 6px;\\n}\\n\\nqlabel#apptitle {\\n color: #0f172a;\\n font-size: 18px;\\n font-weight: 700;\\n}\\n\\nqlabel#appsubtitle {\\n color: #64748b;\\n}\\n\\nqlabel#framecounter {\\n color: #334155;\\n background-color: #f8fafc;\\n border: 1px solid #e2e8f0;\\n border-radius: 6px;\\n padding: 6px 8px;\\n font-weight: 600;\\n}\\n\\nqlabel[role=\"status\"] {\\n color: #334155;\\n background-color: #f8fafc;\\n border: 1px solid #e2e8f0;\\n border-radius: 6px;\\n padding: 7px 8px;\\n}\\n\\nqgroupbox {\\n background-color: #ffffff;\\n border: 1px solid #dbe3ef;\\n border-radius: 8px;\\n margin-top: 0;\\n}\\n\\nqlineedit,\\nqcombobox,\\nqspinbox,\\nqdoublespinbox {\\n background-color: #ffffff;\\n border: 1px solid #cbd5e1;\\n border-radius: 6px;\\n padding: 5px 8px;\\n padding-right: 26px;\\n min-height: 24px;\\n selection-background-color: #2563eb;\\n}\\n\\nqlabel#sectiontitle {\\n color: #0f172a;\\n font-size: 14px;\\n font-weight: 700;\\n padding: 0 0 6px 0;\\n}\\n\\nqlineedit:hover,\\nqcombobox:hover,\\nqspinbox:hover,\\nqdoublespinbox:hover {\\n border-color: #94a3b8;\\n}\\n\\nqlineedit:focus,\\nqcombobox:focus,\\nqspinbox:focus,\\nqdoublespinbox:focus {\\n border: 1px solid #2563eb;\\n}\\n\\nqlineedit:disabled,\\nqcombobox:disabled,\\nqspinbox:disabled,\\nqdoublespinbox:disabled {\\n background-color: #f1f5f9;\\n border-color: #dbe3ef;\\n color: #94a3b8;\\n}\\n\\nqcombobox::drop-down {\\n border: none;\\n width: 26px;\\n}\\n\\nqcombobox::down-arrow {\\n image: url(\"__combobox_down_arrow__\");\\n width: 11px;\\n height: 11px;\\n}\\n\\nqcombobox::down-arrow:disabled {\\n image: url(\"__combobox_down_arrow_disabled__\");\\n}\\n\\nqcombobox qabstractitemview {\\n background-color: #ffffff;\\n border: 1px solid #cbd5e1;\\n border-radius: 0;\\n color: #0f172a;\\n outline: 0;\\n padding: 3px;\\n selection-background-color: #dbeafe;\\n selection-color: #1d4ed8;\\n}\\n\\nqframe#combopopup {\\n background-color: #ffffff;\\n border: 1px solid #cbd5e1;\\n border-radius: 6px;\\n}\\n\\nqframe#combopopup qlistview {\\n background-color: #ffffff;\\n border: none;\\n border-radius: 5px;\\n color: #0f172a;\\n outline: 0;\\n padding: 3px;\\n selection-background-color: #dbeafe;\\n selection-color: #1d4ed8;\\n}\\n\\nqcombobox qabstractitemview::item,\\nqlistview::item {\\n min-height: 28px;\\n padding: 6px 10px;\\n border-radius: 4px;\\n}\\n\\nqcombobox qabstractitemview::item:hover,\\nqlistview::item:hover {\\n background-color: #f1f5f9;\\n}\\n\\nqcombobox qabstractitemview::item:selected,\\nqlistview::item:selected {\\n background-color: #dbeafe;\\n color: #1d4ed8;\\n}\\n\\nqpushbutton {\\n background-color: #ffffff;\\n border: 1px solid #cbd5e1;\\n border-radius: 6px;\\n color: #1e293b;\\n font-weight: 600;\\n min-height: 30px;\\n padding: 6px 10px;\\n}\\n\\nqpushbutton:hover {\\n background-color: #f8fafc;\\n border-color: #94a3b8;\\n}\\n\\nqpushbutton:pressed {\\n background-color: #e2e8f0;\\n}\\n\\nqpushbutton:disabled {\\n background-color: #f1f5f9;\\n border-color: #dbe3ef;\\n color: #94a3b8;\\n}\\n\\nqpushbutton[variant=\"primary\"] {\\n background-color: #2563eb;\\n border-color: #2563eb;\\n color: #ffffff;\\n}\\n\\nqpushbutton[variant=\"primary\"]:hover {\\n background-color: #1d4ed8;\\n border-color: #1d4ed8;\\n}\\n\\nqpushbutton[variant=\"primary\"]:pressed {\\n background-color: #1e40af;\\n border-color: #1e40af;\\n}\\n\\nqpushbutton[variant=\"primary\"]:disabled {\\n background-color: #cbd5e1;\\n border-color: #cbd5e1;\\n color: #f8fafc;\\n}\\n\\nqpushbutton[variant=\"secondary\"] {\\n background-color: #f8fafc;\\n}\\n\\nqpushbutton[variant=\"toolbar\"],\\nqpushbutton[variant=\"toggle\"],\\nqpushbutton[variant=\"tab\"],\\nqpushbutton[variant=\"link\"] {\\n background-color: transparent;\\n border-color: transparent;\\n min-height: 26px;\\n padding: 4px 8px;\\n color: #1e293b;\\n}\\n\\nqpushbutton[variant=\"toolbar\"]:hover,\\nqpushbutton[variant=\"toggle\"]:hover,\\nqpushbutton[variant=\"tab\"]:hover {\\n background-color: #f1f5f9;\\n border-color: #e2e8f0;\\n}\\n\\nqpushbutton[variant=\"toggle\"]:checked {\\n background-color: #2563eb;\\n border-color: #2563eb;\\n color: #ffffff;\\n}\\n\\nqpushbutton[variant=\"tab\"] {\\n border-radius: 0;\\n border-bottom: 2px solid transparent;\\n font-weight: 700;\\n color: #334155;\\n}\\n\\nqpushbutton[variant=\"tab\"]:checked {\\n color: #2563eb;\\n border-bottom-color: #2563eb;\\n}\\n\\nqpushbutton[variant=\"link\"] {\\n color: #2563eb;\\n font-weight: 700;\\n}\\n\\nqpushbutton[variant=\"quiet\"] {\\n background-color: transparent;\\n border-color: transparent;\\n}\\n\\nqpushbutton[variant=\"icon\"] {\\n background-color: rgba(255, 255, 255, 210);\\n border: 1px solid #cbd5e1;\\n border-radius: 6px;\\n min-height: 24px;\\n min-width: 26px;\\n padding: 0;\\n}\\n\\nqpushbutton[variant=\"iconquiet\"] {\\n background-color: transparent;\\n border: none;\\n border-radius: 6px;\\n min-height: 24px;\\n min-width: 26px;\\n padding: 0;\\n}\\n\\nqpushbutton[variant=\"iconquiet\"]:hover {\\n background-color: #f1f5f9;\\n}\\n\\nqpushbutton[variant=\"iconquiet\"]:pressed {\\n background-color: #e2e8f0;\\n}\\n\\nqpushbutton[variant=\"iconquiet\"]:disabled {\\n background-color: transparent;\\n color: #94a3b8;\\n}\\n\\nqprogressbar {\\n background-color: #e2e8f0;\\n border: none;\\n border-radius: 4px;\\n height: 8px;\\n text-align: center;\\n color: transparent;\\n}\\n\\nqprogressbar::chunk {\\n background-color: #0f766e;\\n border-radius: 4px;\\n}\\n\\nqslider {\\n min-height: 28px;\\n}\\n\\nqslider::groove:horizontal {\\n height: 4px;\\n background-color: #dbe3ef;\\n border-radius: 2px;\\n margin: 0 8px;\\n}\\n\\nqslider::sub-page:horizontal {\\n background-color: #2563eb;\\n border-radius: 2px;\\n margin: 0 8px;\\n}\\n\\nqslider::add-page:horizontal {\\n background-color: #dbe3ef;\\n border-radius: 2px;\\n margin: 0 8px;\\n}\\n\\nqslider::handle:horizontal {\\n background-color: #2563eb;\\n border: 2px solid #ffffff;\\n width: 16px;\\n height: 16px;\\n margin: -6px 0;\\n border-radius: 8px;\\n}\\n\\nqslider::groove:horizontal:disabled {\\n background-color: #e2e8f0;\\n}\\n\\nqslider::sub-page:horizontal:disabled,\\nqslider::add-page:horizontal:disabled {\\n background-color: #e2e8f0;\\n}\\n\\nqslider::handle:horizontal:disabled {\\n background-color: #cbd5e1;\\n border-color: #f8fafc;\\n}\\n\\nqcheckbox {\\n spacing: 8px;\\n color: #334155;\\n}\\n\\nqgraphicsview#movieview {\\n background-color: #f8fafc;\\n border: none;\\n}\\n\\nqframe#roitoolisland {\\n background-color: rgba(255, 255, 255, 236);\\n border: 1px solid #dfe7f2;\\n border-radius: 8px;\\n}\\n\\nqpushbutton[variant=\"roitool\"] {\\n background-color: transparent;\\n border: 1px solid transparent;\\n border-radius: 6px;\\n min-height: 28px;\\n min-width: 30px;\\n padding: 0;\\n}\\n\\nqpushbutton[variant=\"roitool\"]:hover {\\n background-color: #f1f5f9;\\n border-color: #e2e8f0;\\n}\\n\\nqpushbutton[variant=\"roitool\"]:checked {\\n background-color: #dbeafe;\\n border-color: #60a5fa;\\n}\\n\\nqwidget#tracepanel,\\nqwidget#tracecontent {\\n background-color: #ffffff;\\n}\\n\\nqwidget#tracecontrols {\\n background-color: #ffffff;\\n border-top: 1px solid #e2e8f0;\\n}\\n\\nqwidget#tracerestorebar {\\n background-color: #f8fafc;\\n border-top: 1px solid #cbd5e1;\\n}\\n\\nqscrollbar:vertical {\\n background-color: transparent;\\n width: 14px;\\n margin: 2px 0;\\n}\\n\\nqscrollbar::handle:vertical {\\n background-color: #cbd5e1;\\n border-radius: 3px;\\n min-height: 28px;\\n margin: 0 4px;\\n}\\n\\nqscrollbar::handle:vertical:hover {\\n background-color: #94a3b8;\\n}\\n\\nqscrollbar::add-page:vertical,\\nqscrollbar::sub-page:vertical {\\n background-color: transparent;\\n}\\n\\nqscrollbar::add-line:vertical,\\nqscrollbar::sub-line:vertical {\\n height: 0;\\n}\\n\\nqwidget#roundedtooltip qlabel {\\n background-color: transparent;\\n color: #f8fafc;\\n}\\n'",
      "signature": "",
      "source": {
        "endLine": 819,
        "line": 241,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "('#2563eb', '#dc2626', '#059669', '#9333ea', '#ea580c', '#0891b2', '#be123c', '#65a30d', '#7c2d12', '#4f46e5', '#db2777', '#0f766e', '#ca8a04', '#7e22ce', '#16a34a', '#e11d48', '#0369a1', '#a16207', '#c026d3', '#15803d', '#f97316', '#0e7490', '#6d28d9', '#b91c1c', '#047857', '#a21caf', '#1d4ed8', '#854d0e', '#0d9488', '#9f1239', '#7c3aed', '#b45309')",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "TRACE_LINE_COLORS",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.TRACE_LINE_COLORS",
      "searchText": "constant\ntrace_line_colors\ntorch_volpy.gui.qt_app.trace_line_colors\n('#2563eb', '#dc2626', '#059669', '#9333ea', '#ea580c', '#0891b2', '#be123c', '#65a30d', '#7c2d12', '#4f46e5', '#db2777', '#0f766e', '#ca8a04', '#7e22ce', '#16a34a', '#e11d48', '#0369a1', '#a16207', '#c026d3', '#15803d', '#f97316', '#0e7490', '#6d28d9', '#b91c1c', '#047857', '#a21caf', '#1d4ed8', '#854d0e', '#0d9488', '#9f1239', '#7c3aed', '#b45309')",
      "signature": "",
      "source": {
        "endLine": 853,
        "line": 820,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "1.15",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "STACKED_TRACE_ROW_PADDING",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.STACKED_TRACE_ROW_PADDING",
      "searchText": "constant\nstacked_trace_row_padding\ntorch_volpy.gui.qt_app.stacked_trace_row_padding\n1.15",
      "signature": "",
      "source": {
        "endLine": 854,
        "line": 854,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "4000",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "STACKED_TRACE_RENDER_MAX_POINTS",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.STACKED_TRACE_RENDER_MAX_POINTS",
      "searchText": "constant\nstacked_trace_render_max_points\ntorch_volpy.gui.qt_app.stacked_trace_render_max_points\n4000",
      "signature": "",
      "source": {
        "endLine": 855,
        "line": 855,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "1200",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "STACKED_TRACE_OVERVIEW_MAX_POINTS",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.STACKED_TRACE_OVERVIEW_MAX_POINTS",
      "searchText": "constant\nstacked_trace_overview_max_points\ntorch_volpy.gui.qt_app.stacked_trace_overview_max_points\n1200",
      "signature": "",
      "source": {
        "endLine": 856,
        "line": 856,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "0.34",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "STACKED_DFF_ROW_HEIGHT",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.STACKED_DFF_ROW_HEIGHT",
      "searchText": "constant\nstacked_dff_row_height\ntorch_volpy.gui.qt_app.stacked_dff_row_height\n0.34",
      "signature": "",
      "source": {
        "endLine": 857,
        "line": 857,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "0.42",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "STACKED_DFF_CLIP_HEIGHT",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.STACKED_DFF_CLIP_HEIGHT",
      "searchText": "constant\nstacked_dff_clip_height\ntorch_volpy.gui.qt_app.stacked_dff_clip_height\n0.42",
      "signature": "",
      "source": {
        "endLine": 858,
        "line": 858,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "annotation": "dict[str, tuple[dict[str, Any], ...]]",
      "decorators": [],
      "default": "{'Spikepursuit': ({'key': 'template_size', 'label': 'Template size', 'type': 'float', 'default': 0.02, 'minimum': 0.001, 'maximum': 1.0, 'decimals': 4, 'step': 0.005, 'suffix': ' s'}, {'key': 'context_size', 'label': 'Context size', 'type': 'int', 'default': 35, 'minimum': 0, 'maximum': 1000, 'step': 5, 'suffix': ' px'}, {'key': 'censor_size', 'label': 'Censor size', 'type': 'int', 'default': 12, 'minimum': 0, 'maximum': 10000, 'step': 1, 'suffix': ' frames'}, {'key': 'hp_freq_pb', 'label': 'Background high-pass', 'type': 'float', 'default': 10.0, 'minimum': 0.0, 'maximum': 1000.0, 'decimals': 4, 'step': 0.1, 'suffix': ' Hz'}, {'key': 'nPC_bg', 'label': 'Background PCs', 'type': 'int', 'default': 8, 'minimum': 0, 'maximum': 100, 'step': 1}, {'key': 'ridge_bg', 'label': 'Background ridge', 'type': 'float', 'default': 0.01, 'minimum': 0.0, 'maximum': 1000.0, 'decimals': 5, 'step': 0.01}, {'key': 'hp_freq', 'label': 'Trace high-pass', 'type': 'float', 'default': 1.0, 'minimum': 0.0, 'maximum': 1000.0, 'decimals': 4, 'step': 0.1, 'suffix': ' Hz'}, {'key': 'clip', 'label': 'Max candidate spikes', 'type': 'int', 'default': 100, 'minimum': 0, 'maximum': 100000, 'step': 10}, {'key': 'threshold_method', 'label': 'Threshold method', 'type': 'choice', 'default': 'adaptive_threshold', 'choices': ('adaptive_threshold', 'simple')}, {'key': 'min_spikes', 'label': 'Minimum spikes', 'type': 'int', 'default': 5, 'minimum': 0, 'maximum': 100000, 'step': 1}, {'key': 'pnorm', 'label': 'Adaptive p-norm', 'type': 'float', 'default': 0.5, 'minimum': 0.0, 'maximum': 10.0, 'decimals': 4, 'step': 0.05}, {'key': 'threshold', 'label': 'Simple threshold', 'type': 'float', 'default': 2.0, 'minimum': 0.0, 'maximum': 1000.0, 'decimals': 4, 'step': 0.1}, {'key': 'sigmas', 'label': 'Spatial sigmas', 'type': 'float_list', 'default': (1.0, 1.5, 2.0)}, {'key': 'n_iter', 'label': 'Iterations', 'type': 'int', 'default': 2, 'minimum': 1, 'maximum': 100, 'step': 1}, {'key': 'weight_update', 'label': 'Weight update', 'type': 'choice', 'default': 'ridge', 'choices': ('ridge', 'NMF')}, {'key': 'sub_freq', 'label': 'Sub-frequency', 'type': 'float', 'default': 20.0, 'minimum': 0.0, 'maximum': 10000.0, 'decimals': 3, 'step': 1.0, 'suffix': ' Hz'}, {'key': 'roi_batch_patch_mb', 'label': 'ROI batch memory cap', 'type': 'float', 'default': 0.0, 'minimum': 0.0, 'maximum': 1048576.0, 'decimals': 1, 'step': 64.0, 'suffix': ' MB'}, {'key': 'roi_batch_max_rois', 'label': 'Max ROIs per batch', 'type': 'int', 'default': 0, 'minimum': 0, 'maximum': 100000, 'step': 1}, {'key': 'prefetch_next_batch_patch', 'label': 'Prefetch next batch patch', 'type': 'bool', 'default': True}), 'ALI': ({'key': 'padding', 'label': 'ROI crop padding', 'type': 'int', 'default': 0, 'minimum': 0, 'maximum': 1000, 'step': 1, 'suffix': ' px'}, {'key': 'hp_window_ms', 'label': 'High-pass window', 'type': 'float', 'default': 10.0, 'minimum': 0.1, 'maximum': 10000.0, 'decimals': 3, 'step': 1.0, 'suffix': ' ms'}, {'key': 'nsvd', 'label': 'SVD components', 'type': 'int', 'default': 25, 'minimum': 1, 'maximum': 1000, 'step': 1}, {'key': 'factor', 'label': 'Temporal factor', 'type': 'int', 'default': 4, 'minimum': 1, 'maximum': 1000, 'step': 1}, {'key': 'coarse_sigma', 'label': 'Coarse sigma', 'type': 'float', 'default': 1.8, 'minimum': 0.01, 'maximum': 100.0, 'decimals': 3, 'step': 0.1}, {'key': 'coarse_gaussian_radius', 'label': 'Coarse radius', 'type': 'int', 'default': 2, 'minimum': 1, 'maximum': 100, 'step': 1}, {'key': 'coarse_threshold_std', 'label': 'Coarse threshold', 'type': 'float', 'default': 3.0, 'minimum': 0.0, 'maximum': 100.0, 'decimals': 3, 'step': 0.1, 'suffix': ' std'}, {'key': 'min_component_size', 'label': 'Min component size', 'type': 'int', 'default': 4, 'minimum': 1, 'maximum': 100000, 'step': 1}, {'key': 'fine_npix', 'label': 'Fine pixels', 'type': 'int', 'default': 15, 'minimum': 1, 'maximum': 100000, 'step': 1}, {'key': 'fine_radius', 'label': 'Fine radius', 'type': 'float', 'default': 4.0, 'minimum': 0.0, 'maximum': 1000.0, 'decimals': 3, 'step': 0.5}, {'key': 'cluster_threshold', 'label': 'Cluster threshold', 'type': 'float', 'default': 2.0, 'minimum': 0.0, 'maximum': 1000.0, 'decimals': 3, 'step': 0.1}, {'key': 'peak_kernel_size', 'label': 'Peak kernel', 'type': 'int', 'default': 3, 'minimum': 1, 'maximum': 999, 'step': 2}, {'key': 'assign_radius', 'label': 'Assign radius', 'type': 'float', 'default': 1.5, 'minimum': 0.0, 'maximum': 1000.0, 'decimals': 3, 'step': 0.1}, {'key': 'alimap_sigma', 'label': 'ALI map sigma', 'type': 'float', 'default': 0.7, 'minimum': 0.01, 'maximum': 100.0, 'decimals': 3, 'step': 0.1}, {'key': 'alimap_gaussian_radius', 'label': 'ALI map radius', 'type': 'int', 'default': 2, 'minimum': 1, 'maximum': 100, 'step': 1}, {'key': 'footprint_radius', 'label': 'Footprint radius', 'type': 'float', 'default': 10.0, 'minimum': 0.0, 'maximum': 1000.0, 'decimals': 3, 'step': 1.0}, {'key': 'solve_eps', 'label': 'Solve epsilon', 'type': 'float', 'default': 1e-06, 'minimum': 0.0, 'maximum': 1.0, 'decimals': 8, 'step': 1e-06}, {'key': 'cc_max_iter', 'label': 'CC max iterations', 'type': 'int', 'default': 2048, 'minimum': 1, 'maximum': 1000000, 'step': 128}), 'Mean ROI': ({'key': 'batch_size', 'label': 'Batch size', 'type': 'int', 'default': 256, 'minimum': 1, 'maximum': 100000, 'step': 64, 'suffix': ' frames'},)}",
      "docstring": "",
      "kind": "alias",
      "module": "torch_volpy.gui.qt_app",
      "name": "ADVANCED_OPTION_SPECS",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.ADVANCED_OPTION_SPECS",
      "searchText": "alias\nadvanced_option_specs\ntorch_volpy.gui.qt_app.advanced_option_specs\n: dict[str, tuple[dict[str, any], ...]]\ndict[str, tuple[dict[str, any], ...]]\n{'spikepursuit': ({'key': 'template_size', 'label': 'template size', 'type': 'float', 'default': 0.02, 'minimum': 0.001, 'maximum': 1.0, 'decimals': 4, 'step': 0.005, 'suffix': ' s'}, {'key': 'context_size', 'label': 'context size', 'type': 'int', 'default': 35, 'minimum': 0, 'maximum': 1000, 'step': 5, 'suffix': ' px'}, {'key': 'censor_size', 'label': 'censor size', 'type': 'int', 'default': 12, 'minimum': 0, 'maximum': 10000, 'step': 1, 'suffix': ' frames'}, {'key': 'hp_freq_pb', 'label': 'background high-pass', 'type': 'float', 'default': 10.0, 'minimum': 0.0, 'maximum': 1000.0, 'decimals': 4, 'step': 0.1, 'suffix': ' hz'}, {'key': 'npc_bg', 'label': 'background pcs', 'type': 'int', 'default': 8, 'minimum': 0, 'maximum': 100, 'step': 1}, {'key': 'ridge_bg', 'label': 'background ridge', 'type': 'float', 'default': 0.01, 'minimum': 0.0, 'maximum': 1000.0, 'decimals': 5, 'step': 0.01}, {'key': 'hp_freq', 'label': 'trace high-pass', 'type': 'float', 'default': 1.0, 'minimum': 0.0, 'maximum': 1000.0, 'decimals': 4, 'step': 0.1, 'suffix': ' hz'}, {'key': 'clip', 'label': 'max candidate spikes', 'type': 'int', 'default': 100, 'minimum': 0, 'maximum': 100000, 'step': 10}, {'key': 'threshold_method', 'label': 'threshold method', 'type': 'choice', 'default': 'adaptive_threshold', 'choices': ('adaptive_threshold', 'simple')}, {'key': 'min_spikes', 'label': 'minimum spikes', 'type': 'int', 'default': 5, 'minimum': 0, 'maximum': 100000, 'step': 1}, {'key': 'pnorm', 'label': 'adaptive p-norm', 'type': 'float', 'default': 0.5, 'minimum': 0.0, 'maximum': 10.0, 'decimals': 4, 'step': 0.05}, {'key': 'threshold', 'label': 'simple threshold', 'type': 'float', 'default': 2.0, 'minimum': 0.0, 'maximum': 1000.0, 'decimals': 4, 'step': 0.1}, {'key': 'sigmas', 'label': 'spatial sigmas', 'type': 'float_list', 'default': (1.0, 1.5, 2.0)}, {'key': 'n_iter', 'label': 'iterations', 'type': 'int', 'default': 2, 'minimum': 1, 'maximum': 100, 'step': 1}, {'key': 'weight_update', 'label': 'weight update', 'type': 'choice', 'default': 'ridge', 'choices': ('ridge', 'nmf')}, {'key': 'sub_freq', 'label': 'sub-frequency', 'type': 'float', 'default': 20.0, 'minimum': 0.0, 'maximum': 10000.0, 'decimals': 3, 'step': 1.0, 'suffix': ' hz'}, {'key': 'roi_batch_patch_mb', 'label': 'roi batch memory cap', 'type': 'float', 'default': 0.0, 'minimum': 0.0, 'maximum': 1048576.0, 'decimals': 1, 'step': 64.0, 'suffix': ' mb'}, {'key': 'roi_batch_max_rois', 'label': 'max rois per batch', 'type': 'int', 'default': 0, 'minimum': 0, 'maximum': 100000, 'step': 1}, {'key': 'prefetch_next_batch_patch', 'label': 'prefetch next batch patch', 'type': 'bool', 'default': true}), 'ali': ({'key': 'padding', 'label': 'roi crop padding', 'type': 'int', 'default': 0, 'minimum': 0, 'maximum': 1000, 'step': 1, 'suffix': ' px'}, {'key': 'hp_window_ms', 'label': 'high-pass window', 'type': 'float', 'default': 10.0, 'minimum': 0.1, 'maximum': 10000.0, 'decimals': 3, 'step': 1.0, 'suffix': ' ms'}, {'key': 'nsvd', 'label': 'svd components', 'type': 'int', 'default': 25, 'minimum': 1, 'maximum': 1000, 'step': 1}, {'key': 'factor', 'label': 'temporal factor', 'type': 'int', 'default': 4, 'minimum': 1, 'maximum': 1000, 'step': 1}, {'key': 'coarse_sigma', 'label': 'coarse sigma', 'type': 'float', 'default': 1.8, 'minimum': 0.01, 'maximum': 100.0, 'decimals': 3, 'step': 0.1}, {'key': 'coarse_gaussian_radius', 'label': 'coarse radius', 'type': 'int', 'default': 2, 'minimum': 1, 'maximum': 100, 'step': 1}, {'key': 'coarse_threshold_std', 'label': 'coarse threshold', 'type': 'float', 'default': 3.0, 'minimum': 0.0, 'maximum': 100.0, 'decimals': 3, 'step': 0.1, 'suffix': ' std'}, {'key': 'min_component_size', 'label': 'min component size', 'type': 'int', 'default': 4, 'minimum': 1, 'maximum': 100000, 'step': 1}, {'key': 'fine_npix', 'label': 'fine pixels', 'type': 'int', 'default': 15, 'minimum': 1, 'maximum': 100000, 'step': 1}, {'key': 'fine_radius', 'label': 'fine radius', 'type': 'float', 'default': 4.0, 'minimum': 0.0, 'maximum': 1000.0, 'decimals': 3, 'step': 0.5}, {'key': 'cluster_threshold', 'label': 'cluster threshold', 'type': 'float', 'default': 2.0, 'minimum': 0.0, 'maximum': 1000.0, 'decimals': 3, 'step': 0.1}, {'key': 'peak_kernel_size', 'label': 'peak kernel', 'type': 'int', 'default': 3, 'minimum': 1, 'maximum': 999, 'step': 2}, {'key': 'assign_radius', 'label': 'assign radius', 'type': 'float', 'default': 1.5, 'minimum': 0.0, 'maximum': 1000.0, 'decimals': 3, 'step': 0.1}, {'key': 'alimap_sigma', 'label': 'ali map sigma', 'type': 'float', 'default': 0.7, 'minimum': 0.01, 'maximum': 100.0, 'decimals': 3, 'step': 0.1}, {'key': 'alimap_gaussian_radius', 'label': 'ali map radius', 'type': 'int', 'default': 2, 'minimum': 1, 'maximum': 100, 'step': 1}, {'key': 'footprint_radius', 'label': 'footprint radius', 'type': 'float', 'default': 10.0, 'minimum': 0.0, 'maximum': 1000.0, 'decimals': 3, 'step': 1.0}, {'key': 'solve_eps', 'label': 'solve epsilon', 'type': 'float', 'default': 1e-06, 'minimum': 0.0, 'maximum': 1.0, 'decimals': 8, 'step': 1e-06}, {'key': 'cc_max_iter', 'label': 'cc max iterations', 'type': 'int', 'default': 2048, 'minimum': 1, 'maximum': 1000000, 'step': 128}), 'mean roi': ({'key': 'batch_size', 'label': 'batch size', 'type': 'int', 'default': 256, 'minimum': 1, 'maximum': 100000, 'step': 64, 'suffix': ' frames'},)}",
      "signature": ": dict[str, tuple[dict[str, Any], ...]]",
      "source": {
        "endLine": 904,
        "line": 859,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "'\\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\">\\n <path d=\"M3.5 11h2.4l1.4-5.5 2.7 10 2-7.5 1.2 3h3.3\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\\n</svg>\\n'",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "TRACE_SIGNAL_SVG",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.TRACE_SIGNAL_SVG",
      "searchText": "constant\ntrace_signal_svg\ntorch_volpy.gui.qt_app.trace_signal_svg\n'\\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewbox=\"0 0 20 20\">\\n <path d=\"m3.5 11h2.4l1.4-5.5 2.7 10 2-7.5 1.2 3h3.3\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\\n</svg>\\n'",
      "signature": "",
      "source": {
        "endLine": 934,
        "line": 930,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "'\\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"64\" height=\"64\" viewBox=\"0 0 64 64\">\\n <rect x=\"7\" y=\"7\" width=\"50\" height=\"50\" rx=\"12\" fill=\"#0f172a\"/>\\n <path d=\"M15 38h7l4-14 7 25 5-18h11\" fill=\"none\" stroke=\"#38bdf8\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\\n <circle cx=\"47\" cy=\"25\" r=\"4\" fill=\"#14b8a6\"/>\\n</svg>\\n'",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "APP_ICON_SVG",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.APP_ICON_SVG",
      "searchText": "constant\napp_icon_svg\ntorch_volpy.gui.qt_app.app_icon_svg\n'\\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"64\" height=\"64\" viewbox=\"0 0 64 64\">\\n <rect x=\"7\" y=\"7\" width=\"50\" height=\"50\" rx=\"12\" fill=\"#0f172a\"/>\\n <path d=\"m15 38h7l4-14 7 25 5-18h11\" fill=\"none\" stroke=\"#38bdf8\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\\n <circle cx=\"47\" cy=\"25\" r=\"4\" fill=\"#14b8a6\"/>\\n</svg>\\n'",
      "signature": "",
      "source": {
        "endLine": 942,
        "line": 936,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "'\\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\">\\n <path d=\"M3 6.5A2.5 2.5 0 0 1 5.5 4h3l1.8 2h4.2A2.5 2.5 0 0 1 17 8.5v5A2.5 2.5 0 0 1 14.5 16h-9A2.5 2.5 0 0 1 3 13.5v-7Z\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\" stroke-linejoin=\"round\"/>\\n</svg>\\n'",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "FOLDER_SVG",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.FOLDER_SVG",
      "searchText": "constant\nfolder_svg\ntorch_volpy.gui.qt_app.folder_svg\n'\\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewbox=\"0 0 20 20\">\\n <path d=\"m3 6.5a2.5 2.5 0 0 1 5.5 4h3l1.8 2h4.2a2.5 2.5 0 0 1 17 8.5v5a2.5 2.5 0 0 1 14.5 16h-9a2.5 2.5 0 0 1 3 13.5v-7z\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\" stroke-linejoin=\"round\"/>\\n</svg>\\n'",
      "signature": "",
      "source": {
        "endLine": 948,
        "line": 944,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "'\\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\">\\n <path d=\"M7 5.5v9l7-4.5-7-4.5Z\" fill=\"{color}\"/>\\n</svg>\\n'",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "PLAY_SVG",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.PLAY_SVG",
      "searchText": "constant\nplay_svg\ntorch_volpy.gui.qt_app.play_svg\n'\\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewbox=\"0 0 20 20\">\\n <path d=\"m7 5.5v9l7-4.5-7-4.5z\" fill=\"{color}\"/>\\n</svg>\\n'",
      "signature": "",
      "source": {
        "endLine": 954,
        "line": 950,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "'\\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\">\\n <path d=\"M6 5h3v10H6V5Zm5 0h3v10h-3V5Z\" fill=\"{color}\"/>\\n</svg>\\n'",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "PAUSE_SVG",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.PAUSE_SVG",
      "searchText": "constant\npause_svg\ntorch_volpy.gui.qt_app.pause_svg\n'\\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewbox=\"0 0 20 20\">\\n <path d=\"m6 5h3v10h6v5zm5 0h3v10h-3v5z\" fill=\"{color}\"/>\\n</svg>\\n'",
      "signature": "",
      "source": {
        "endLine": 960,
        "line": 956,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "'\\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\">\\n <path d=\"M4 6h4m4 0h4M4 10h8m4 0h0M4 14h2m4 0h6\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\" stroke-linecap=\"round\"/>\\n <circle cx=\"10\" cy=\"6\" r=\"2\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\"/>\\n <circle cx=\"14\" cy=\"10\" r=\"2\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\"/>\\n <circle cx=\"8\" cy=\"14\" r=\"2\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\"/>\\n</svg>\\n'",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "SLIDERS_SVG",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.SLIDERS_SVG",
      "searchText": "constant\nsliders_svg\ntorch_volpy.gui.qt_app.sliders_svg\n'\\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewbox=\"0 0 20 20\">\\n <path d=\"m4 6h4m4 0h4m4 10h8m4 0h0m4 14h2m4 0h6\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\" stroke-linecap=\"round\"/>\\n <circle cx=\"10\" cy=\"6\" r=\"2\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\"/>\\n <circle cx=\"14\" cy=\"10\" r=\"2\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\"/>\\n <circle cx=\"8\" cy=\"14\" r=\"2\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\"/>\\n</svg>\\n'",
      "signature": "",
      "source": {
        "endLine": 969,
        "line": 962,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "'\\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\">\\n <circle cx=\"10\" cy=\"10\" r=\"6\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\"/>\\n <circle cx=\"10\" cy=\"10\" r=\"2\" fill=\"{color}\"/>\\n <path d=\"M10 2.5v2M10 15.5v2M2.5 10h2M15.5 10h2\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\" stroke-linecap=\"round\"/>\\n</svg>\\n'",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "TARGET_SVG",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.TARGET_SVG",
      "searchText": "constant\ntarget_svg\ntorch_volpy.gui.qt_app.target_svg\n'\\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewbox=\"0 0 20 20\">\\n <circle cx=\"10\" cy=\"10\" r=\"6\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\"/>\\n <circle cx=\"10\" cy=\"10\" r=\"2\" fill=\"{color}\"/>\\n <path d=\"m10 2.5v2m10 15.5v2m2.5 10h2m15.5 10h2\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\" stroke-linecap=\"round\"/>\\n</svg>\\n'",
      "signature": "",
      "source": {
        "endLine": 977,
        "line": 971,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "'\\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\">\\n <path d=\"M10 4v8m0 0 3-3m-3 3-3-3M4.5 15.5h11\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\\n</svg>\\n'",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "DOWNLOAD_SVG",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.DOWNLOAD_SVG",
      "searchText": "constant\ndownload_svg\ntorch_volpy.gui.qt_app.download_svg\n'\\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewbox=\"0 0 20 20\">\\n <path d=\"m10 4v8m0 0 3-3m-3 3-3-3m4.5 15.5h11\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\\n</svg>\\n'",
      "signature": "",
      "source": {
        "endLine": 983,
        "line": 979,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "'\\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\">\\n <path d=\"M10 3.5 11.7 8l4.8 1.7-4.8 1.6L10 16l-1.7-4.7-4.8-1.6L8.3 8 10 3.5Z\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\" stroke-linejoin=\"round\"/>\\n</svg>\\n'",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "SPARK_SVG",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.SPARK_SVG",
      "searchText": "constant\nspark_svg\ntorch_volpy.gui.qt_app.spark_svg\n'\\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewbox=\"0 0 20 20\">\\n <path d=\"m10 3.5 11.7 8l4.8 1.7-4.8 1.6l10 16l-1.7-4.7-4.8-1.6l8.3 8 10 3.5z\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\" stroke-linejoin=\"round\"/>\\n</svg>\\n'",
      "signature": "",
      "source": {
        "endLine": 989,
        "line": 985,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "'\\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\">\\n <circle cx=\"8.5\" cy=\"8.5\" r=\"5\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\"/>\\n <path d=\"M6.2 8.5h4.6m1.5 3.8 3.4 3.4\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\" stroke-linecap=\"round\"/>\\n</svg>\\n'",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "ZOOM_OUT_SVG",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.ZOOM_OUT_SVG",
      "searchText": "constant\nzoom_out_svg\ntorch_volpy.gui.qt_app.zoom_out_svg\n'\\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewbox=\"0 0 20 20\">\\n <circle cx=\"8.5\" cy=\"8.5\" r=\"5\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\"/>\\n <path d=\"m6.2 8.5h4.6m1.5 3.8 3.4 3.4\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\" stroke-linecap=\"round\"/>\\n</svg>\\n'",
      "signature": "",
      "source": {
        "endLine": 996,
        "line": 991,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "'\\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\">\\n <circle cx=\"8.5\" cy=\"8.5\" r=\"5\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\"/>\\n <path d=\"M6.2 8.5h4.6M8.5 6.2v4.6m3.8 1.5 3.4 3.4\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\" stroke-linecap=\"round\"/>\\n</svg>\\n'",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "ZOOM_IN_SVG",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.ZOOM_IN_SVG",
      "searchText": "constant\nzoom_in_svg\ntorch_volpy.gui.qt_app.zoom_in_svg\n'\\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewbox=\"0 0 20 20\">\\n <circle cx=\"8.5\" cy=\"8.5\" r=\"5\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\"/>\\n <path d=\"m6.2 8.5h4.6m8.5 6.2v4.6m3.8 1.5 3.4 3.4\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\" stroke-linecap=\"round\"/>\\n</svg>\\n'",
      "signature": "",
      "source": {
        "endLine": 1003,
        "line": 998,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "'\\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\">\\n <path d=\"M15.6 7.4A6 6 0 1 0 16 10\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\\n <path d=\"M15.8 3.8v3.6h-3.6\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\\n</svg>\\n'",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "RESET_VIEW_SVG",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.RESET_VIEW_SVG",
      "searchText": "constant\nreset_view_svg\ntorch_volpy.gui.qt_app.reset_view_svg\n'\\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewbox=\"0 0 20 20\">\\n <path d=\"m15.6 7.4a6 6 0 1 0 16 10\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\\n <path d=\"m15.8 3.8v3.6h-3.6\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\\n</svg>\\n'",
      "signature": "",
      "source": {
        "endLine": 1010,
        "line": 1005,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "'\\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\">\\n <path d=\"M12.8 4.2 16 7.4l-6.4 6.4H6.4v-3.2l6.4-6.4Z\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.6\" stroke-linejoin=\"round\"/>\\n <path d=\"M5.8 14.4c-.9.9-1.8 1.3-3.1 1.2.4-1.2.7-2.2 1.6-3.1\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.6\" stroke-linecap=\"round\"/>\\n</svg>\\n'",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "BRUSH_SVG",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.BRUSH_SVG",
      "searchText": "constant\nbrush_svg\ntorch_volpy.gui.qt_app.brush_svg\n'\\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewbox=\"0 0 20 20\">\\n <path d=\"m12.8 4.2 16 7.4l-6.4 6.4h6.4v-3.2l6.4-6.4z\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.6\" stroke-linejoin=\"round\"/>\\n <path d=\"m5.8 14.4c-.9.9-1.8 1.3-3.1 1.2.4-1.2.7-2.2 1.6-3.1\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.6\" stroke-linecap=\"round\"/>\\n</svg>\\n'",
      "signature": "",
      "source": {
        "endLine": 1017,
        "line": 1012,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "'\\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\">\\n <rect x=\"4.2\" y=\"5.2\" width=\"11.6\" height=\"9.6\" rx=\"1.2\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\"/>\\n</svg>\\n'",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "RECTANGLE_ROI_SVG",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.RECTANGLE_ROI_SVG",
      "searchText": "constant\nrectangle_roi_svg\ntorch_volpy.gui.qt_app.rectangle_roi_svg\n'\\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewbox=\"0 0 20 20\">\\n <rect x=\"4.2\" y=\"5.2\" width=\"11.6\" height=\"9.6\" rx=\"1.2\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\"/>\\n</svg>\\n'",
      "signature": "",
      "source": {
        "endLine": 1023,
        "line": 1019,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "'\\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\">\\n <path d=\"M8.1 15.2h7.2\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.6\" stroke-linecap=\"round\"/>\\n <path d=\"M4.1 10.5 10.8 3.8a1.7 1.7 0 0 1 2.4 0l2 2a1.7 1.7 0 0 1 0 2.4L8.7 14.7a1.9 1.9 0 0 1-2.7 0l-1.9-1.9a1.9 1.9 0 0 1 0-2.7Z\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.6\" stroke-linejoin=\"round\"/>\\n <path d=\"M7.1 7.5 11.5 12\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.6\" stroke-linecap=\"round\"/>\\n</svg>\\n'",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "ERASER_SVG",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.ERASER_SVG",
      "searchText": "constant\neraser_svg\ntorch_volpy.gui.qt_app.eraser_svg\n'\\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewbox=\"0 0 20 20\">\\n <path d=\"m8.1 15.2h7.2\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.6\" stroke-linecap=\"round\"/>\\n <path d=\"m4.1 10.5 10.8 3.8a1.7 1.7 0 0 1 2.4 0l2 2a1.7 1.7 0 0 1 0 2.4l8.7 14.7a1.9 1.9 0 0 1-2.7 0l-1.9-1.9a1.9 1.9 0 0 1 0-2.7z\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.6\" stroke-linejoin=\"round\"/>\\n <path d=\"m7.1 7.5 11.5 12\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.6\" stroke-linecap=\"round\"/>\\n</svg>\\n'",
      "signature": "",
      "source": {
        "endLine": 1031,
        "line": 1025,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "'\\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\">\\n <path d=\"M7.3 7H5.1V4.8\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\\n <path d=\"M5.4 7.1A5.6 5.6 0 1 1 5.1 12\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\" stroke-linecap=\"round\"/>\\n</svg>\\n'",
      "docstring": "",
      "kind": "constant",
      "module": "torch_volpy.gui.qt_app",
      "name": "UNDO_SVG",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.UNDO_SVG",
      "searchText": "constant\nundo_svg\ntorch_volpy.gui.qt_app.undo_svg\n'\\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewbox=\"0 0 20 20\">\\n <path d=\"m7.3 7h5.1v4.8\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\\n <path d=\"m5.4 7.1a5.6 5.6 0 1 1 5.1 12\" fill=\"none\" stroke=\"{color}\" stroke-width=\"1.7\" stroke-linecap=\"round\"/>\\n</svg>\\n'",
      "signature": "",
      "source": {
        "endLine": 1038,
        "line": 1033,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_icon_from_svg",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._icon_from_svg",
      "searchText": "function\n_icon_from_svg\ntorch_volpy.gui.qt_app._icon_from_svg\n(svg: str) -> qicon",
      "signature": "(svg: str) -> QIcon",
      "source": {
        "endLine": 1044,
        "line": 1041,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_icon_from_template",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._icon_from_template",
      "searchText": "function\n_icon_from_template\ntorch_volpy.gui.qt_app._icon_from_template\n(svg: str, color: str = '#334155') -> qicon",
      "signature": "(svg: str, color: str = '#334155') -> QIcon",
      "source": {
        "endLine": 1048,
        "line": 1047,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_set_button_icon",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._set_button_icon",
      "searchText": "function\n_set_button_icon\ntorch_volpy.gui.qt_app._set_button_icon\n(button: qpushbutton, svg: str, color: str = '#334155') -> none",
      "signature": "(button: QPushButton, svg: str, color: str = '#334155') -> None",
      "source": {
        "endLine": 1053,
        "line": 1051,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_set_button_role",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._set_button_role",
      "searchText": "function\n_set_button_role\ntorch_volpy.gui.qt_app._set_button_role\n(button: qpushbutton, role: str) -> none",
      "signature": "(button: QPushButton, role: str) -> None",
      "source": {
        "endLine": 1057,
        "line": 1056,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "bases": [],
      "dataclass": false,
      "decorators": [],
      "docstring": "",
      "kind": "class",
      "module": "torch_volpy.gui.qt_app",
      "name": "_ModernSpinBoxMixin",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._ModernSpinBoxMixin",
      "searchText": "class\n_modernspinboxmixin\ntorch_volpy.gui.qt_app._modernspinboxmixin\n()",
      "signature": "()",
      "source": {
        "endLine": 1206,
        "line": 1060,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_init_modern_spinbox",
      "parent": "torch_volpy.gui.qt_app._ModernSpinBoxMixin",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._ModernSpinBoxMixin._init_modern_spinbox",
      "searchText": "method\n_init_modern_spinbox\ntorch_volpy.gui.qt_app._modernspinboxmixin._init_modern_spinbox\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 1068,
        "line": 1064,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_spin_button_rect",
      "parent": "torch_volpy.gui.qt_app._ModernSpinBoxMixin",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._ModernSpinBoxMixin._spin_button_rect",
      "searchText": "method\n_spin_button_rect\ntorch_volpy.gui.qt_app._modernspinboxmixin._spin_button_rect\n(self) -> qrect",
      "signature": "(self) -> QRect",
      "source": {
        "endLine": 1073,
        "line": 1070,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_spin_button_at",
      "parent": "torch_volpy.gui.qt_app._ModernSpinBoxMixin",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._ModernSpinBoxMixin._spin_button_at",
      "searchText": "method\n_spin_button_at\ntorch_volpy.gui.qt_app._modernspinboxmixin._spin_button_at\n(self, point) -> optional[str]",
      "signature": "(self, point) -> Optional[str]",
      "source": {
        "endLine": 1079,
        "line": 1075,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_can_step_spin_button",
      "parent": "torch_volpy.gui.qt_app._ModernSpinBoxMixin",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._ModernSpinBoxMixin._can_step_spin_button",
      "searchText": "method\n_can_step_spin_button\ntorch_volpy.gui.qt_app._modernspinboxmixin._can_step_spin_button\n(self, button: str) -> bool",
      "signature": "(self, button: str) -> bool",
      "source": {
        "endLine": 1084,
        "line": 1081,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_step_spin_button",
      "parent": "torch_volpy.gui.qt_app._ModernSpinBoxMixin",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._ModernSpinBoxMixin._step_spin_button",
      "searchText": "method\n_step_spin_button\ntorch_volpy.gui.qt_app._modernspinboxmixin._step_spin_button\n(self, button: str) -> none",
      "signature": "(self, button: str) -> None",
      "source": {
        "endLine": 1088,
        "line": 1086,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_event_point",
      "parent": "torch_volpy.gui.qt_app._ModernSpinBoxMixin",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._ModernSpinBoxMixin._event_point",
      "searchText": "method\n_event_point\ntorch_volpy.gui.qt_app._modernspinboxmixin._event_point\n(self, event)",
      "signature": "(self, event)",
      "source": {
        "endLine": 1093,
        "line": 1090,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_draw_modern_spin_arrow",
      "parent": "torch_volpy.gui.qt_app._ModernSpinBoxMixin",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._ModernSpinBoxMixin._draw_modern_spin_arrow",
      "searchText": "method\n_draw_modern_spin_arrow\ntorch_volpy.gui.qt_app._modernspinboxmixin._draw_modern_spin_arrow\n(self, painter: qpainter, center: qpointf, *, up: bool, enabled: bool) -> none",
      "signature": "(self, painter: QPainter, center: QPointF, *, up: bool, enabled: bool) -> None",
      "source": {
        "endLine": 1114,
        "line": 1095,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_draw_modern_spin_buttons",
      "parent": "torch_volpy.gui.qt_app._ModernSpinBoxMixin",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._ModernSpinBoxMixin._draw_modern_spin_buttons",
      "searchText": "method\n_draw_modern_spin_buttons\ntorch_volpy.gui.qt_app._modernspinboxmixin._draw_modern_spin_buttons\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 1164,
        "line": 1116,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Paint the custom spinbox frame and arrow controls.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "paintEvent",
      "parent": "torch_volpy.gui.qt_app._ModernSpinBoxMixin",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._ModernSpinBoxMixin.paintEvent",
      "searchText": "method\npaintevent\ntorch_volpy.gui.qt_app._modernspinboxmixin.paintevent\n(self, event) -> none\npaint the custom spinbox frame and arrow controls.\npaint the custom spinbox frame and arrow controls.",
      "signature": "(self, event) -> None",
      "source": {
        "endLine": 1169,
        "line": 1166,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Paint the custom spinbox frame and arrow controls."
    },
    {
      "decorators": [],
      "docstring": "Track pointer presses on custom arrow controls.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "mousePressEvent",
      "parent": "torch_volpy.gui.qt_app._ModernSpinBoxMixin",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._ModernSpinBoxMixin.mousePressEvent",
      "searchText": "method\nmousepressevent\ntorch_volpy.gui.qt_app._modernspinboxmixin.mousepressevent\n(self, event) -> none\ntrack pointer presses on custom arrow controls.\ntrack pointer presses on custom arrow controls.",
      "signature": "(self, event) -> None",
      "source": {
        "endLine": 1181,
        "line": 1171,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Track pointer presses on custom arrow controls."
    },
    {
      "decorators": [],
      "docstring": "Complete a custom arrow press and trigger the step action.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "mouseReleaseEvent",
      "parent": "torch_volpy.gui.qt_app._ModernSpinBoxMixin",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._ModernSpinBoxMixin.mouseReleaseEvent",
      "searchText": "method\nmousereleaseevent\ntorch_volpy.gui.qt_app._modernspinboxmixin.mousereleaseevent\n(self, event) -> none\ncomplete a custom arrow press and trigger the step action.\ncomplete a custom arrow press and trigger the step action.",
      "signature": "(self, event) -> None",
      "source": {
        "endLine": 1190,
        "line": 1183,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Complete a custom arrow press and trigger the step action."
    },
    {
      "decorators": [],
      "docstring": "Update hover state for custom arrow controls.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "mouseMoveEvent",
      "parent": "torch_volpy.gui.qt_app._ModernSpinBoxMixin",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._ModernSpinBoxMixin.mouseMoveEvent",
      "searchText": "method\nmousemoveevent\ntorch_volpy.gui.qt_app._modernspinboxmixin.mousemoveevent\n(self, event) -> none\nupdate hover state for custom arrow controls.\nupdate hover state for custom arrow controls.",
      "signature": "(self, event) -> None",
      "source": {
        "endLine": 1199,
        "line": 1192,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Update hover state for custom arrow controls."
    },
    {
      "decorators": [],
      "docstring": "Clear hover state when the pointer leaves the spinbox.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "leaveEvent",
      "parent": "torch_volpy.gui.qt_app._ModernSpinBoxMixin",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._ModernSpinBoxMixin.leaveEvent",
      "searchText": "method\nleaveevent\ntorch_volpy.gui.qt_app._modernspinboxmixin.leaveevent\n(self, event) -> none\nclear hover state when the pointer leaves the spinbox.\nclear hover state when the pointer leaves the spinbox.",
      "signature": "(self, event) -> None",
      "source": {
        "endLine": 1206,
        "line": 1201,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Clear hover state when the pointer leaves the spinbox."
    },
    {
      "bases": [
        "_ModernSpinBoxMixin",
        "QSpinBox"
      ],
      "dataclass": false,
      "decorators": [],
      "docstring": "Integer spinbox with custom modern arrow rendering.",
      "kind": "class",
      "module": "torch_volpy.gui.qt_app",
      "name": "ModernSpinBox",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.ModernSpinBox",
      "searchText": "class\nmodernspinbox\ntorch_volpy.gui.qt_app.modernspinbox\n(parent: optional[qwidget] = none) -> none\ninteger spinbox with custom modern arrow rendering.\ninteger spinbox with custom modern arrow rendering.\n_modernspinboxmixin qspinbox",
      "signature": "(parent: Optional[QWidget] = None) -> None",
      "source": {
        "endLine": 1213,
        "line": 1209,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Integer spinbox with custom modern arrow rendering."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "__init__",
      "parent": "torch_volpy.gui.qt_app.ModernSpinBox",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.ModernSpinBox.__init__",
      "searchText": "method\n__init__\ntorch_volpy.gui.qt_app.modernspinbox.__init__\n(self, parent: optional[qwidget] = none) -> none",
      "signature": "(self, parent: Optional[QWidget] = None) -> None",
      "source": {
        "endLine": 1213,
        "line": 1211,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "bases": [
        "ModernSpinBox"
      ],
      "dataclass": false,
      "decorators": [],
      "docstring": "Spinbox for controlling ROI brush size in the movie view.",
      "kind": "class",
      "module": "torch_volpy.gui.qt_app",
      "name": "RoiBrushSizeSpinBox",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.RoiBrushSizeSpinBox",
      "searchText": "class\nroibrushsizespinbox\ntorch_volpy.gui.qt_app.roibrushsizespinbox\n(parent: optional[qwidget] = none) -> none\nspinbox for controlling roi brush size in the movie view.\nspinbox for controlling roi brush size in the movie view.\nmodernspinbox",
      "signature": "(parent: Optional[QWidget] = None) -> None",
      "source": {
        "endLine": 1329,
        "line": 1216,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Spinbox for controlling ROI brush size in the movie view."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "__init__",
      "parent": "torch_volpy.gui.qt_app.RoiBrushSizeSpinBox",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.RoiBrushSizeSpinBox.__init__",
      "searchText": "method\n__init__\ntorch_volpy.gui.qt_app.roibrushsizespinbox.__init__\n(self, parent: optional[qwidget] = none) -> none",
      "signature": "(self, parent: Optional[QWidget] = None) -> None",
      "source": {
        "endLine": 1220,
        "line": 1218,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Return the preferred size for the ROI brush spinbox.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "sizeHint",
      "parent": "torch_volpy.gui.qt_app.RoiBrushSizeSpinBox",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.RoiBrushSizeSpinBox.sizeHint",
      "searchText": "method\nsizehint\ntorch_volpy.gui.qt_app.roibrushsizespinbox.sizehint\n(self) -> qsize\nreturn the preferred size for the roi brush spinbox.\nreturn the preferred size for the roi brush spinbox.",
      "signature": "(self) -> QSize",
      "source": {
        "endLine": 1226,
        "line": 1222,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Return the preferred size for the ROI brush spinbox."
    },
    {
      "decorators": [],
      "docstring": "Return the minimum usable size for the ROI brush spinbox.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "minimumSizeHint",
      "parent": "torch_volpy.gui.qt_app.RoiBrushSizeSpinBox",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.RoiBrushSizeSpinBox.minimumSizeHint",
      "searchText": "method\nminimumsizehint\ntorch_volpy.gui.qt_app.roibrushsizespinbox.minimumsizehint\n(self) -> qsize\nreturn the minimum usable size for the roi brush spinbox.\nreturn the minimum usable size for the roi brush spinbox.",
      "signature": "(self) -> QSize",
      "source": {
        "endLine": 1232,
        "line": 1228,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Return the minimum usable size for the ROI brush spinbox."
    },
    {
      "decorators": [],
      "docstring": "Switch the brush-size control between vertical and horizontal display.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "set_vertical_display",
      "parent": "torch_volpy.gui.qt_app.RoiBrushSizeSpinBox",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.RoiBrushSizeSpinBox.set_vertical_display",
      "searchText": "method\nset_vertical_display\ntorch_volpy.gui.qt_app.roibrushsizespinbox.set_vertical_display\n(self, vertical: bool) -> none\nswitch the brush-size control between vertical and horizontal display.\nswitch the brush-size control between vertical and horizontal display.",
      "signature": "(self, vertical: bool) -> None",
      "source": {
        "endLine": 1248,
        "line": 1234,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Switch the brush-size control between vertical and horizontal display."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_sync_line_edit_visibility",
      "parent": "torch_volpy.gui.qt_app.RoiBrushSizeSpinBox",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.RoiBrushSizeSpinBox._sync_line_edit_visibility",
      "searchText": "method\n_sync_line_edit_visibility\ntorch_volpy.gui.qt_app.roibrushsizespinbox._sync_line_edit_visibility\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 1251,
        "line": 1250,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_spin_button_at",
      "parent": "torch_volpy.gui.qt_app.RoiBrushSizeSpinBox",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.RoiBrushSizeSpinBox._spin_button_at",
      "searchText": "method\n_spin_button_at\ntorch_volpy.gui.qt_app.roibrushsizespinbox._spin_button_at\n(self, point) -> optional[str]",
      "signature": "(self, point) -> Optional[str]",
      "source": {
        "endLine": 1262,
        "line": 1253,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Paint the ROI brush-size value and custom arrow controls.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "paintEvent",
      "parent": "torch_volpy.gui.qt_app.RoiBrushSizeSpinBox",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.RoiBrushSizeSpinBox.paintEvent",
      "searchText": "method\npaintevent\ntorch_volpy.gui.qt_app.roibrushsizespinbox.paintevent\n(self, event) -> none\npaint the roi brush-size value and custom arrow controls.\npaint the roi brush-size value and custom arrow controls.",
      "signature": "(self, event) -> None",
      "source": {
        "endLine": 1316,
        "line": 1264,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Paint the ROI brush-size value and custom arrow controls."
    },
    {
      "decorators": [],
      "docstring": "Recalculate arrow hit regions after resizing.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "resizeEvent",
      "parent": "torch_volpy.gui.qt_app.RoiBrushSizeSpinBox",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.RoiBrushSizeSpinBox.resizeEvent",
      "searchText": "method\nresizeevent\ntorch_volpy.gui.qt_app.roibrushsizespinbox.resizeevent\n(self, event) -> none\nrecalculate arrow hit regions after resizing.\nrecalculate arrow hit regions after resizing.",
      "signature": "(self, event) -> None",
      "source": {
        "endLine": 1322,
        "line": 1318,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Recalculate arrow hit regions after resizing."
    },
    {
      "decorators": [],
      "docstring": "Initialize arrow hit regions when the widget is shown.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "showEvent",
      "parent": "torch_volpy.gui.qt_app.RoiBrushSizeSpinBox",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.RoiBrushSizeSpinBox.showEvent",
      "searchText": "method\nshowevent\ntorch_volpy.gui.qt_app.roibrushsizespinbox.showevent\n(self, event) -> none\ninitialize arrow hit regions when the widget is shown.\ninitialize arrow hit regions when the widget is shown.",
      "signature": "(self, event) -> None",
      "source": {
        "endLine": 1329,
        "line": 1324,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Initialize arrow hit regions when the widget is shown."
    },
    {
      "bases": [
        "_ModernSpinBoxMixin",
        "QDoubleSpinBox"
      ],
      "dataclass": false,
      "decorators": [],
      "docstring": "Floating-point spinbox with custom modern arrow rendering.",
      "kind": "class",
      "module": "torch_volpy.gui.qt_app",
      "name": "ModernDoubleSpinBox",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.ModernDoubleSpinBox",
      "searchText": "class\nmoderndoublespinbox\ntorch_volpy.gui.qt_app.moderndoublespinbox\n(parent: optional[qwidget] = none) -> none\nfloating-point spinbox with custom modern arrow rendering.\nfloating-point spinbox with custom modern arrow rendering.\n_modernspinboxmixin qdoublespinbox",
      "signature": "(parent: Optional[QWidget] = None) -> None",
      "source": {
        "endLine": 1336,
        "line": 1332,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Floating-point spinbox with custom modern arrow rendering."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "__init__",
      "parent": "torch_volpy.gui.qt_app.ModernDoubleSpinBox",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.ModernDoubleSpinBox.__init__",
      "searchText": "method\n__init__\ntorch_volpy.gui.qt_app.moderndoublespinbox.__init__\n(self, parent: optional[qwidget] = none) -> none",
      "signature": "(self, parent: Optional[QWidget] = None) -> None",
      "source": {
        "endLine": 1336,
        "line": 1334,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_show_spinbox_buttons",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._show_spinbox_buttons",
      "searchText": "function\n_show_spinbox_buttons\ntorch_volpy.gui.qt_app._show_spinbox_buttons\n(spinbox: qabstractspinbox) -> none",
      "signature": "(spinbox: QAbstractSpinBox) -> None",
      "source": {
        "endLine": 1343,
        "line": 1339,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_section_title",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._section_title",
      "searchText": "function\n_section_title\ntorch_volpy.gui.qt_app._section_title\n(text: str) -> qlabel",
      "signature": "(text: str) -> QLabel",
      "source": {
        "endLine": 1349,
        "line": 1346,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_styled_frame",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._styled_frame",
      "searchText": "function\n_styled_frame\ntorch_volpy.gui.qt_app._styled_frame\n(name: str) -> qframe",
      "signature": "(name: str) -> QFrame",
      "source": {
        "endLine": 1356,
        "line": 1352,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_role_label",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._role_label",
      "searchText": "function\n_role_label\ntorch_volpy.gui.qt_app._role_label\n(text: str = '', role: str = 'muted') -> qlabel",
      "signature": "(text: str = '', role: str = 'muted') -> QLabel",
      "source": {
        "endLine": 1362,
        "line": 1359,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_make_tab_button",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._make_tab_button",
      "searchText": "function\n_make_tab_button\ntorch_volpy.gui.qt_app._make_tab_button\n(text: str, checked: bool = false) -> qpushbutton",
      "signature": "(text: str, checked: bool = False) -> QPushButton",
      "source": {
        "endLine": 1370,
        "line": 1365,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_make_metric_tile",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._make_metric_tile",
      "searchText": "function\n_make_metric_tile\ntorch_volpy.gui.qt_app._make_metric_tile\n(title: str, value: str = '--', role: str = 'metricvalue') -> tuple[qframe, qlabel]",
      "signature": "(title: str, value: str = '--', role: str = 'metricValue') -> tuple[QFrame, QLabel]",
      "source": {
        "endLine": 1382,
        "line": 1373,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_set_metric_value_color",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._set_metric_value_color",
      "searchText": "function\n_set_metric_value_color\ntorch_volpy.gui.qt_app._set_metric_value_color\n(label: qlabel, color: str) -> none",
      "signature": "(label: QLabel, color: str) -> None",
      "source": {
        "endLine": 1386,
        "line": 1385,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_normalize_rgb_to_uint8",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._normalize_rgb_to_uint8",
      "searchText": "function\n_normalize_rgb_to_uint8\ntorch_volpy.gui.qt_app._normalize_rgb_to_uint8\n(frame: np.ndarray) -> np.ndarray",
      "signature": "(frame: np.ndarray) -> np.ndarray",
      "source": {
        "endLine": 1404,
        "line": 1389,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_make_toolbar_button",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._make_toolbar_button",
      "searchText": "function\n_make_toolbar_button\ntorch_volpy.gui.qt_app._make_toolbar_button\n(text: str, svg: optional[str] = none, *, checkable: bool = false) -> qpushbutton",
      "signature": "(text: str, svg: Optional[str] = None, *, checkable: bool = False) -> QPushButton",
      "source": {
        "endLine": 1413,
        "line": 1407,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_make_roi_tool_button",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._make_roi_tool_button",
      "searchText": "function\n_make_roi_tool_button\ntorch_volpy.gui.qt_app._make_roi_tool_button\n(svg: str, tooltip: str, *, checkable: bool = true) -> qpushbutton",
      "signature": "(svg: str, tooltip: str, *, checkable: bool = True) -> QPushButton",
      "source": {
        "endLine": 1424,
        "line": 1416,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_make_divider",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._make_divider",
      "searchText": "function\n_make_divider\ntorch_volpy.gui.qt_app._make_divider\n() -> qframe",
      "signature": "() -> QFrame",
      "source": {
        "endLine": 1432,
        "line": 1427,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "bases": [
        "QFrame"
      ],
      "dataclass": false,
      "decorators": [],
      "docstring": "Floating toolbar that hosts ROI drawing and selection controls.",
      "kind": "class",
      "module": "torch_volpy.gui.qt_app",
      "name": "RoiToolIsland",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.RoiToolIsland",
      "searchText": "class\nroitoolisland\ntorch_volpy.gui.qt_app.roitoolisland\n(parent: optional[qwidget] = none) -> none\nfloating toolbar that hosts roi drawing and selection controls.\nfloating toolbar that hosts roi drawing and selection controls.\nqframe",
      "signature": "(parent: Optional[QWidget] = None) -> None",
      "source": {
        "endLine": 1572,
        "line": 1435,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Floating toolbar that hosts ROI drawing and selection controls."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "__init__",
      "parent": "torch_volpy.gui.qt_app.RoiToolIsland",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.RoiToolIsland.__init__",
      "searchText": "method\n__init__\ntorch_volpy.gui.qt_app.roitoolisland.__init__\n(self, parent: optional[qwidget] = none) -> none",
      "signature": "(self, parent: Optional[QWidget] = None) -> None",
      "source": {
        "endLine": 1457,
        "line": 1437,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Handle drag interactions for the floating ROI tool island.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "eventFilter",
      "parent": "torch_volpy.gui.qt_app.RoiToolIsland",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.RoiToolIsland.eventFilter",
      "searchText": "method\neventfilter\ntorch_volpy.gui.qt_app.roitoolisland.eventfilter\n(self, obj, event) -> bool\nhandle drag interactions for the floating roi tool island.\nhandle drag interactions for the floating roi tool island.",
      "signature": "(self, obj, event) -> bool",
      "source": {
        "endLine": 1499,
        "line": 1459,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Handle drag interactions for the floating ROI tool island."
    },
    {
      "decorators": [],
      "docstring": "Add a tool control to the ROI tool island.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "add_tool_widget",
      "parent": "torch_volpy.gui.qt_app.RoiToolIsland",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.RoiToolIsland.add_tool_widget",
      "searchText": "method\nadd_tool_widget\ntorch_volpy.gui.qt_app.roitoolisland.add_tool_widget\n(self, widget: qwidget) -> none\nadd a tool control to the roi tool island.\nadd a tool control to the roi tool island.",
      "signature": "(self, widget: QWidget) -> None",
      "source": {
        "endLine": 1504,
        "line": 1501,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Add a tool control to the ROI tool island."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_install_drag_filter",
      "parent": "torch_volpy.gui.qt_app.RoiToolIsland",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.RoiToolIsland._install_drag_filter",
      "searchText": "method\n_install_drag_filter\ntorch_volpy.gui.qt_app.roitoolisland._install_drag_filter\n(self, widget: qwidget) -> none",
      "signature": "(self, widget: QWidget) -> None",
      "source": {
        "endLine": 1509,
        "line": 1506,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Set the side of the movie stage where the island is docked.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "set_dock_side",
      "parent": "torch_volpy.gui.qt_app.RoiToolIsland",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.RoiToolIsland.set_dock_side",
      "searchText": "method\nset_dock_side\ntorch_volpy.gui.qt_app.roitoolisland.set_dock_side\n(self, side: str) -> none\nset the side of the movie stage where the island is docked.\nset the side of the movie stage where the island is docked.",
      "signature": "(self, side: str) -> None",
      "source": {
        "endLine": 1517,
        "line": 1511,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Set the side of the movie stage where the island is docked."
    },
    {
      "decorators": [],
      "docstring": "Dock the island to the nearest side of the target widget.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "snap_to_nearest_side",
      "parent": "torch_volpy.gui.qt_app.RoiToolIsland",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.RoiToolIsland.snap_to_nearest_side",
      "searchText": "method\nsnap_to_nearest_side\ntorch_volpy.gui.qt_app.roitoolisland.snap_to_nearest_side\n(self) -> none\ndock the island to the nearest side of the target widget.\ndock the island to the nearest side of the target widget.",
      "signature": "(self) -> None",
      "source": {
        "endLine": 1532,
        "line": 1519,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Dock the island to the nearest side of the target widget."
    },
    {
      "decorators": [],
      "docstring": "Move the island to its current docked position.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "reposition_to_dock",
      "parent": "torch_volpy.gui.qt_app.RoiToolIsland",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.RoiToolIsland.reposition_to_dock",
      "searchText": "method\nreposition_to_dock\ntorch_volpy.gui.qt_app.roitoolisland.reposition_to_dock\n(self) -> none\nmove the island to its current docked position.\nmove the island to its current docked position.",
      "signature": "(self) -> None",
      "source": {
        "endLine": 1547,
        "line": 1534,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Move the island to its current docked position."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_apply_orientation",
      "parent": "torch_volpy.gui.qt_app.RoiToolIsland",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.RoiToolIsland._apply_orientation",
      "searchText": "method\n_apply_orientation\ntorch_volpy.gui.qt_app.roitoolisland._apply_orientation\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 1561,
        "line": 1549,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_move_clamped",
      "parent": "torch_volpy.gui.qt_app.RoiToolIsland",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.RoiToolIsland._move_clamped",
      "searchText": "method\n_move_clamped\ntorch_volpy.gui.qt_app.roitoolisland._move_clamped\n(self, x: float, y: float) -> none",
      "signature": "(self, x: float, y: float) -> None",
      "source": {
        "endLine": 1572,
        "line": 1563,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "bases": [
        "QWidget"
      ],
      "dataclass": false,
      "decorators": [],
      "docstring": "Overlay widget that draws the movie card border.",
      "kind": "class",
      "module": "torch_volpy.gui.qt_app",
      "name": "MovieCardBorderOverlay",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieCardBorderOverlay",
      "searchText": "class\nmoviecardborderoverlay\ntorch_volpy.gui.qt_app.moviecardborderoverlay\n(parent: optional[qwidget] = none) -> none\noverlay widget that draws the movie card border.\noverlay widget that draws the movie card border.\nqwidget",
      "signature": "(parent: Optional[QWidget] = None) -> None",
      "source": {
        "endLine": 1603,
        "line": 1575,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Overlay widget that draws the movie card border."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "__init__",
      "parent": "torch_volpy.gui.qt_app.MovieCardBorderOverlay",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieCardBorderOverlay.__init__",
      "searchText": "method\n__init__\ntorch_volpy.gui.qt_app.moviecardborderoverlay.__init__\n(self, parent: optional[qwidget] = none) -> none",
      "signature": "(self, parent: Optional[QWidget] = None) -> None",
      "source": {
        "endLine": 1581,
        "line": 1577,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Paint the movie card border overlay.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "paintEvent",
      "parent": "torch_volpy.gui.qt_app.MovieCardBorderOverlay",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieCardBorderOverlay.paintEvent",
      "searchText": "method\npaintevent\ntorch_volpy.gui.qt_app.moviecardborderoverlay.paintevent\n(self, event) -> none\npaint the movie card border overlay.\npaint the movie card border overlay.",
      "signature": "(self, event) -> None",
      "source": {
        "endLine": 1603,
        "line": 1583,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Paint the movie card border overlay."
    },
    {
      "bases": [
        "QFrame"
      ],
      "dataclass": false,
      "decorators": [],
      "docstring": "Frame widget that keeps a border overlay above movie controls.",
      "kind": "class",
      "module": "torch_volpy.gui.qt_app",
      "name": "MovieCardFrame",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieCardFrame",
      "searchText": "class\nmoviecardframe\ntorch_volpy.gui.qt_app.moviecardframe\n() -> none\nframe widget that keeps a border overlay above movie controls.\nframe widget that keeps a border overlay above movie controls.\nqframe",
      "signature": "() -> None",
      "source": {
        "endLine": 1624,
        "line": 1606,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Frame widget that keeps a border overlay above movie controls."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "__init__",
      "parent": "torch_volpy.gui.qt_app.MovieCardFrame",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieCardFrame.__init__",
      "searchText": "method\n__init__\ntorch_volpy.gui.qt_app.moviecardframe.__init__\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 1613,
        "line": 1608,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Raise the border overlay above child widgets.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "raise_border",
      "parent": "torch_volpy.gui.qt_app.MovieCardFrame",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieCardFrame.raise_border",
      "searchText": "method\nraise_border\ntorch_volpy.gui.qt_app.moviecardframe.raise_border\n(self) -> none\nraise the border overlay above child widgets.\nraise the border overlay above child widgets.",
      "signature": "(self) -> None",
      "source": {
        "endLine": 1619,
        "line": 1615,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Raise the border overlay above child widgets."
    },
    {
      "decorators": [],
      "docstring": "Resize the border overlay with the movie card frame.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "resizeEvent",
      "parent": "torch_volpy.gui.qt_app.MovieCardFrame",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieCardFrame.resizeEvent",
      "searchText": "method\nresizeevent\ntorch_volpy.gui.qt_app.moviecardframe.resizeevent\n(self, event) -> none\nresize the border overlay with the movie card frame.\nresize the border overlay with the movie card frame.",
      "signature": "(self, event) -> None",
      "source": {
        "endLine": 1624,
        "line": 1621,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Resize the border overlay with the movie card frame."
    },
    {
      "bases": [
        "QWidget"
      ],
      "dataclass": false,
      "decorators": [],
      "docstring": "Movie viewing stage that positions floating ROI controls.",
      "kind": "class",
      "module": "torch_volpy.gui.qt_app",
      "name": "MovieStage",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieStage",
      "searchText": "class\nmoviestage\ntorch_volpy.gui.qt_app.moviestage\n()\nmovie viewing stage that positions floating roi controls.\nmovie viewing stage that positions floating roi controls.\nqwidget",
      "signature": "()",
      "source": {
        "endLine": 1634,
        "line": 1627,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Movie viewing stage that positions floating ROI controls."
    },
    {
      "decorators": [],
      "docstring": "Reposition floating controls when the movie stage resizes.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "resizeEvent",
      "parent": "torch_volpy.gui.qt_app.MovieStage",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieStage.resizeEvent",
      "searchText": "method\nresizeevent\ntorch_volpy.gui.qt_app.moviestage.resizeevent\n(self, event) -> none\nreposition floating controls when the movie stage resizes.\nreposition floating controls when the movie stage resizes.",
      "signature": "(self, event) -> None",
      "source": {
        "endLine": 1634,
        "line": 1631,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Reposition floating controls when the movie stage resizes."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_modernize_combo_box",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._modernize_combo_box",
      "searchText": "function\n_modernize_combo_box\ntorch_volpy.gui.qt_app._modernize_combo_box\n(combo_box: qcombobox) -> none",
      "signature": "(combo_box: QComboBox) -> None",
      "source": {
        "endLine": 1641,
        "line": 1637,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "bases": [
        "QFrame"
      ],
      "dataclass": false,
      "decorators": [],
      "docstring": "",
      "kind": "class",
      "module": "torch_volpy.gui.qt_app",
      "name": "_ComboPopupFrame",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._ComboPopupFrame",
      "searchText": "class\n_combopopupframe\ntorch_volpy.gui.qt_app._combopopupframe\n(combo_box: 'moderncombobox', flags) -> none\nqframe",
      "signature": "(combo_box: 'ModernComboBox', flags) -> None",
      "source": {
        "endLine": 1652,
        "line": 1644,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "__init__",
      "parent": "torch_volpy.gui.qt_app._ComboPopupFrame",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._ComboPopupFrame.__init__",
      "searchText": "method\n__init__\ntorch_volpy.gui.qt_app._combopopupframe.__init__\n(self, combo_box: 'moderncombobox', flags) -> none",
      "signature": "(self, combo_box: 'ModernComboBox', flags) -> None",
      "source": {
        "endLine": 1647,
        "line": 1645,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Notify the combo box when the custom popup frame closes.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "hideEvent",
      "parent": "torch_volpy.gui.qt_app._ComboPopupFrame",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._ComboPopupFrame.hideEvent",
      "searchText": "method\nhideevent\ntorch_volpy.gui.qt_app._combopopupframe.hideevent\n(self, event) -> none\nnotify the combo box when the custom popup frame closes.\nnotify the combo box when the custom popup frame closes.",
      "signature": "(self, event) -> None",
      "source": {
        "endLine": 1652,
        "line": 1649,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Notify the combo box when the custom popup frame closes."
    },
    {
      "bases": [
        "QComboBox"
      ],
      "dataclass": false,
      "decorators": [],
      "docstring": "Combo box with a custom popup frame and styling.",
      "kind": "class",
      "module": "torch_volpy.gui.qt_app",
      "name": "ModernComboBox",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.ModernComboBox",
      "searchText": "class\nmoderncombobox\ntorch_volpy.gui.qt_app.moderncombobox\n(parent: optional[qwidget] = none) -> none\ncombo box with a custom popup frame and styling.\ncombo box with a custom popup frame and styling.\nqcombobox",
      "signature": "(parent: Optional[QWidget] = None) -> None",
      "source": {
        "endLine": 1736,
        "line": 1655,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Combo box with a custom popup frame and styling."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "__init__",
      "parent": "torch_volpy.gui.qt_app.ModernComboBox",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.ModernComboBox.__init__",
      "searchText": "method\n__init__\ntorch_volpy.gui.qt_app.moderncombobox.__init__\n(self, parent: optional[qwidget] = none) -> none",
      "signature": "(self, parent: Optional[QWidget] = None) -> None",
      "source": {
        "endLine": 1664,
        "line": 1659,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Open the custom combo popup on mouse press.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "mousePressEvent",
      "parent": "torch_volpy.gui.qt_app.ModernComboBox",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.ModernComboBox.mousePressEvent",
      "searchText": "method\nmousepressevent\ntorch_volpy.gui.qt_app.moderncombobox.mousepressevent\n(self, event) -> none\nopen the custom combo popup on mouse press.\nopen the custom combo popup on mouse press.",
      "signature": "(self, event) -> None",
      "source": {
        "endLine": 1673,
        "line": 1666,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Open the custom combo popup on mouse press."
    },
    {
      "decorators": [],
      "docstring": "Display the custom-styled combo popup.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "showPopup",
      "parent": "torch_volpy.gui.qt_app.ModernComboBox",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.ModernComboBox.showPopup",
      "searchText": "method\nshowpopup\ntorch_volpy.gui.qt_app.moderncombobox.showpopup\n(self) -> none\ndisplay the custom-styled combo popup.\ndisplay the custom-styled combo popup.",
      "signature": "(self) -> None",
      "source": {
        "endLine": 1722,
        "line": 1675,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Display the custom-styled combo popup."
    },
    {
      "decorators": [],
      "docstring": "Hide the custom-styled combo popup.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "hidePopup",
      "parent": "torch_volpy.gui.qt_app.ModernComboBox",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.ModernComboBox.hidePopup",
      "searchText": "method\nhidepopup\ntorch_volpy.gui.qt_app.moderncombobox.hidepopup\n(self) -> none\nhide the custom-styled combo popup.\nhide the custom-styled combo popup.",
      "signature": "(self) -> None",
      "source": {
        "endLine": 1727,
        "line": 1724,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Hide the custom-styled combo popup."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_popup_frame_hidden",
      "parent": "torch_volpy.gui.qt_app.ModernComboBox",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.ModernComboBox._popup_frame_hidden",
      "searchText": "method\n_popup_frame_hidden\ntorch_volpy.gui.qt_app.moderncombobox._popup_frame_hidden\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 1731,
        "line": 1729,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_select_popup_index",
      "parent": "torch_volpy.gui.qt_app.ModernComboBox",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.ModernComboBox._select_popup_index",
      "searchText": "method\n_select_popup_index\ntorch_volpy.gui.qt_app.moderncombobox._select_popup_index\n(self, index) -> none",
      "signature": "(self, index) -> None",
      "source": {
        "endLine": 1736,
        "line": 1733,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "bases": [
        "QWidget"
      ],
      "dataclass": false,
      "decorators": [],
      "docstring": "Custom rounded tooltip widget for the GUI.",
      "kind": "class",
      "module": "torch_volpy.gui.qt_app",
      "name": "RoundedToolTip",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.RoundedToolTip",
      "searchText": "class\nroundedtooltip\ntorch_volpy.gui.qt_app.roundedtooltip\n() -> none\ncustom rounded tooltip widget for the gui.\ncustom rounded tooltip widget for the gui.\nqwidget",
      "signature": "() -> None",
      "source": {
        "endLine": 1782,
        "line": 1739,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Custom rounded tooltip widget for the GUI."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "__init__",
      "parent": "torch_volpy.gui.qt_app.RoundedToolTip",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.RoundedToolTip.__init__",
      "searchText": "method\n__init__\ntorch_volpy.gui.qt_app.roundedtooltip.__init__\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 1754,
        "line": 1741,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Paint the rounded tooltip background and text.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "paintEvent",
      "parent": "torch_volpy.gui.qt_app.RoundedToolTip",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.RoundedToolTip.paintEvent",
      "searchText": "method\npaintevent\ntorch_volpy.gui.qt_app.roundedtooltip.paintevent\n(self, event) -> none\npaint the rounded tooltip background and text.\npaint the rounded tooltip background and text.",
      "signature": "(self, event) -> None",
      "source": {
        "endLine": 1765,
        "line": 1756,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Paint the rounded tooltip background and text."
    },
    {
      "decorators": [],
      "docstring": "Show tooltip text near a global screen position.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "show_text",
      "parent": "torch_volpy.gui.qt_app.RoundedToolTip",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.RoundedToolTip.show_text",
      "searchText": "method\nshow_text\ntorch_volpy.gui.qt_app.roundedtooltip.show_text\n(self, text: str, pos) -> none\nshow tooltip text near a global screen position.\nshow tooltip text near a global screen position.",
      "signature": "(self, text: str, pos) -> None",
      "source": {
        "endLine": 1782,
        "line": 1767,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Show tooltip text near a global screen position."
    },
    {
      "bases": [
        "QObject"
      ],
      "dataclass": false,
      "decorators": [],
      "docstring": "Event filter that manages rounded tooltips for watched widgets.",
      "kind": "class",
      "module": "torch_volpy.gui.qt_app",
      "name": "RoundedToolTipFilter",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.RoundedToolTipFilter",
      "searchText": "class\nroundedtooltipfilter\ntorch_volpy.gui.qt_app.roundedtooltipfilter\n(parent: qapplication) -> none\nevent filter that manages rounded tooltips for watched widgets.\nevent filter that manages rounded tooltips for watched widgets.\nqobject",
      "signature": "(parent: QApplication) -> None",
      "source": {
        "endLine": 1803,
        "line": 1785,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Event filter that manages rounded tooltips for watched widgets."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "__init__",
      "parent": "torch_volpy.gui.qt_app.RoundedToolTipFilter",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.RoundedToolTipFilter.__init__",
      "searchText": "method\n__init__\ntorch_volpy.gui.qt_app.roundedtooltipfilter.__init__\n(self, parent: qapplication) -> none",
      "signature": "(self, parent: QApplication) -> None",
      "source": {
        "endLine": 1789,
        "line": 1787,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Show or hide a rounded tooltip for watched widgets.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "eventFilter",
      "parent": "torch_volpy.gui.qt_app.RoundedToolTipFilter",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.RoundedToolTipFilter.eventFilter",
      "searchText": "method\neventfilter\ntorch_volpy.gui.qt_app.roundedtooltipfilter.eventfilter\n(self, obj, event) -> bool\nshow or hide a rounded tooltip for watched widgets.\nshow or hide a rounded tooltip for watched widgets.",
      "signature": "(self, obj, event) -> bool",
      "source": {
        "endLine": 1803,
        "line": 1791,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Show or hide a rounded tooltip for watched widgets."
    },
    {
      "bases": [
        "QCheckBox"
      ],
      "dataclass": false,
      "decorators": [],
      "docstring": "Animated toggle switch used by the GUI.",
      "kind": "class",
      "module": "torch_volpy.gui.qt_app",
      "name": "SwitchButton",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.SwitchButton",
      "searchText": "class\nswitchbutton\ntorch_volpy.gui.qt_app.switchbutton\n(text: str, parent: optional[qwidget] = none) -> none\nanimated toggle switch used by the gui.\nanimated toggle switch used by the gui.\nqcheckbox",
      "signature": "(text: str, parent: Optional[QWidget] = None) -> None",
      "source": {
        "endLine": 1845,
        "line": 1806,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Animated toggle switch used by the GUI."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "__init__",
      "parent": "torch_volpy.gui.qt_app.SwitchButton",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.SwitchButton.__init__",
      "searchText": "method\n__init__\ntorch_volpy.gui.qt_app.switchbutton.__init__\n(self, text: str, parent: optional[qwidget] = none) -> none",
      "signature": "(self, text: str, parent: Optional[QWidget] = None) -> None",
      "source": {
        "endLine": 1811,
        "line": 1808,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Return the preferred size for the switch button.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "sizeHint",
      "parent": "torch_volpy.gui.qt_app.SwitchButton",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.SwitchButton.sizeHint",
      "searchText": "method\nsizehint\ntorch_volpy.gui.qt_app.switchbutton.sizehint\n(self) -> qsize\nreturn the preferred size for the switch button.\nreturn the preferred size for the switch button.",
      "signature": "(self) -> QSize",
      "source": {
        "endLine": 1816,
        "line": 1813,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Return the preferred size for the switch button."
    },
    {
      "decorators": [],
      "docstring": "Paint the switch track, thumb, and label.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "paintEvent",
      "parent": "torch_volpy.gui.qt_app.SwitchButton",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.SwitchButton.paintEvent",
      "searchText": "method\npaintevent\ntorch_volpy.gui.qt_app.switchbutton.paintevent\n(self, event) -> none\npaint the switch track, thumb, and label.\npaint the switch track, thumb, and label.",
      "signature": "(self, event) -> None",
      "source": {
        "endLine": 1845,
        "line": 1818,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Paint the switch track, thumb, and label."
    },
    {
      "bases": [
        "QWidget"
      ],
      "dataclass": false,
      "decorators": [],
      "docstring": "Two-option segmented switch for trace display scope.",
      "kind": "class",
      "module": "torch_volpy.gui.qt_app",
      "name": "SegmentedScopeSwitch",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.SegmentedScopeSwitch",
      "searchText": "class\nsegmentedscopeswitch\ntorch_volpy.gui.qt_app.segmentedscopeswitch\n(parent: optional[qwidget] = none) -> none\ntwo-option segmented switch for trace display scope.\ntwo-option segmented switch for trace display scope.\nqwidget",
      "signature": "(parent: Optional[QWidget] = None) -> None",
      "source": {
        "endLine": 2049,
        "line": 1848,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Two-option segmented switch for trace display scope."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "__init__",
      "parent": "torch_volpy.gui.qt_app.SegmentedScopeSwitch",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.SegmentedScopeSwitch.__init__",
      "searchText": "method\n__init__\ntorch_volpy.gui.qt_app.segmentedscopeswitch.__init__\n(self, parent: optional[qwidget] = none) -> none",
      "signature": "(self, parent: Optional[QWidget] = None) -> None",
      "source": {
        "endLine": 1871,
        "line": 1852,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Return the preferred size for the segmented scope switch.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "sizeHint",
      "parent": "torch_volpy.gui.qt_app.SegmentedScopeSwitch",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.SegmentedScopeSwitch.sizeHint",
      "searchText": "method\nsizehint\ntorch_volpy.gui.qt_app.segmentedscopeswitch.sizehint\n(self) -> qsize\nreturn the preferred size for the segmented scope switch.\nreturn the preferred size for the segmented scope switch.",
      "signature": "(self) -> QSize",
      "source": {
        "endLine": 1875,
        "line": 1873,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Return the preferred size for the segmented scope switch."
    },
    {
      "decorators": [],
      "docstring": "Return the currently selected segment value.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "value",
      "parent": "torch_volpy.gui.qt_app.SegmentedScopeSwitch",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.SegmentedScopeSwitch.value",
      "searchText": "method\nvalue\ntorch_volpy.gui.qt_app.segmentedscopeswitch.value\n(self) -> str\nreturn the currently selected segment value.\nreturn the currently selected segment value.",
      "signature": "(self) -> str",
      "source": {
        "endLine": 1879,
        "line": 1877,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Return the currently selected segment value."
    },
    {
      "decorators": [],
      "docstring": "Set the selected segment value.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "setValue",
      "parent": "torch_volpy.gui.qt_app.SegmentedScopeSwitch",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.SegmentedScopeSwitch.setValue",
      "searchText": "method\nsetvalue\ntorch_volpy.gui.qt_app.segmentedscopeswitch.setvalue\n(self, value: str, *, emit_signal: bool = false, animated: bool = true) -> none\nset the selected segment value.\nset the selected segment value.",
      "signature": "(self, value: str, *, emit_signal: bool = False, animated: bool = True) -> None",
      "source": {
        "endLine": 1903,
        "line": 1881,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Set the selected segment value."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_start_thumb_animation",
      "parent": "torch_volpy.gui.qt_app.SegmentedScopeSwitch",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.SegmentedScopeSwitch._start_thumb_animation",
      "searchText": "method\n_start_thumb_animation\ntorch_volpy.gui.qt_app.segmentedscopeswitch._start_thumb_animation\n(self, target: float) -> none",
      "signature": "(self, target: float) -> None",
      "source": {
        "endLine": 1919,
        "line": 1905,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_advance_thumb_animation",
      "parent": "torch_volpy.gui.qt_app.SegmentedScopeSwitch",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.SegmentedScopeSwitch._advance_thumb_animation",
      "searchText": "method\n_advance_thumb_animation\ntorch_volpy.gui.qt_app.segmentedscopeswitch._advance_thumb_animation\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 1934,
        "line": 1921,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_emit_pending_value_changed",
      "parent": "torch_volpy.gui.qt_app.SegmentedScopeSwitch",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.SegmentedScopeSwitch._emit_pending_value_changed",
      "searchText": "method\n_emit_pending_value_changed\ntorch_volpy.gui.qt_app.segmentedscopeswitch._emit_pending_value_changed\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 1940,
        "line": 1936,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.gui.qt_app",
      "name": "_tanh_ease",
      "parent": "torch_volpy.gui.qt_app.SegmentedScopeSwitch",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.SegmentedScopeSwitch._tanh_ease",
      "searchText": "staticmethod\n_tanh_ease\ntorch_volpy.gui.qt_app.segmentedscopeswitch._tanh_ease\n(progress: float) -> float\nstaticmethod",
      "signature": "(progress: float) -> float",
      "source": {
        "endLine": 1949,
        "line": 1943,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_index_for_value",
      "parent": "torch_volpy.gui.qt_app.SegmentedScopeSwitch",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.SegmentedScopeSwitch._index_for_value",
      "searchText": "method\n_index_for_value\ntorch_volpy.gui.qt_app.segmentedscopeswitch._index_for_value\n(self, value: str) -> int",
      "signature": "(self, value: str) -> int",
      "source": {
        "endLine": 1955,
        "line": 1951,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.gui.qt_app",
      "name": "_mix_color",
      "parent": "torch_volpy.gui.qt_app.SegmentedScopeSwitch",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.SegmentedScopeSwitch._mix_color",
      "searchText": "staticmethod\n_mix_color\ntorch_volpy.gui.qt_app.segmentedscopeswitch._mix_color\n(start: str, end: str, progress: float) -> qcolor\nstaticmethod",
      "signature": "(start: str, end: str, progress: float) -> QColor",
      "source": {
        "endLine": 1965,
        "line": 1958,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_label_color",
      "parent": "torch_volpy.gui.qt_app.SegmentedScopeSwitch",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.SegmentedScopeSwitch._label_color",
      "searchText": "method\n_label_color\ntorch_volpy.gui.qt_app.segmentedscopeswitch._label_color\n(self, index: int, *, enabled: bool) -> qcolor",
      "signature": "(self, index: int, *, enabled: bool) -> QColor",
      "source": {
        "endLine": 1977,
        "line": 1967,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_thumb_rect",
      "parent": "torch_volpy.gui.qt_app.SegmentedScopeSwitch",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.SegmentedScopeSwitch._thumb_rect",
      "searchText": "method\n_thumb_rect\ntorch_volpy.gui.qt_app.segmentedscopeswitch._thumb_rect\n(self) -> qrectf",
      "signature": "(self) -> QRectF",
      "source": {
        "endLine": 1983,
        "line": 1979,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_outer_rect",
      "parent": "torch_volpy.gui.qt_app.SegmentedScopeSwitch",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.SegmentedScopeSwitch._outer_rect",
      "searchText": "method\n_outer_rect\ntorch_volpy.gui.qt_app.segmentedscopeswitch._outer_rect\n(self) -> qrectf",
      "signature": "(self) -> QRectF",
      "source": {
        "endLine": 1986,
        "line": 1985,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Select a segment from a mouse press.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "mousePressEvent",
      "parent": "torch_volpy.gui.qt_app.SegmentedScopeSwitch",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.SegmentedScopeSwitch.mousePressEvent",
      "searchText": "method\nmousepressevent\ntorch_volpy.gui.qt_app.segmentedscopeswitch.mousepressevent\n(self, event) -> none\nselect a segment from a mouse press.\nselect a segment from a mouse press.",
      "signature": "(self, event) -> None",
      "source": {
        "endLine": 1994,
        "line": 1988,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Select a segment from a mouse press."
    },
    {
      "decorators": [],
      "docstring": "Handle keyboard navigation between switch segments.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "keyPressEvent",
      "parent": "torch_volpy.gui.qt_app.SegmentedScopeSwitch",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.SegmentedScopeSwitch.keyPressEvent",
      "searchText": "method\nkeypressevent\ntorch_volpy.gui.qt_app.segmentedscopeswitch.keypressevent\n(self, event) -> none\nhandle keyboard navigation between switch segments.\nhandle keyboard navigation between switch segments.",
      "signature": "(self, event) -> None",
      "source": {
        "endLine": 2013,
        "line": 1996,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Handle keyboard navigation between switch segments."
    },
    {
      "decorators": [],
      "docstring": "Paint the segmented switch and animated thumb.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "paintEvent",
      "parent": "torch_volpy.gui.qt_app.SegmentedScopeSwitch",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.SegmentedScopeSwitch.paintEvent",
      "searchText": "method\npaintevent\ntorch_volpy.gui.qt_app.segmentedscopeswitch.paintevent\n(self, event) -> none\npaint the segmented switch and animated thumb.\npaint the segmented switch and animated thumb.",
      "signature": "(self, event) -> None",
      "source": {
        "endLine": 2038,
        "line": 2015,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Paint the segmented switch and animated thumb."
    },
    {
      "decorators": [],
      "docstring": "Return the animated thumb position.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "getThumbPosition",
      "parent": "torch_volpy.gui.qt_app.SegmentedScopeSwitch",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.SegmentedScopeSwitch.getThumbPosition",
      "searchText": "method\ngetthumbposition\ntorch_volpy.gui.qt_app.segmentedscopeswitch.getthumbposition\n(self) -> float\nreturn the animated thumb position.\nreturn the animated thumb position.",
      "signature": "(self) -> float",
      "source": {
        "endLine": 2042,
        "line": 2040,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Return the animated thumb position."
    },
    {
      "decorators": [],
      "docstring": "Set the animated thumb position.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "setThumbPosition",
      "parent": "torch_volpy.gui.qt_app.SegmentedScopeSwitch",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.SegmentedScopeSwitch.setThumbPosition",
      "searchText": "method\nsetthumbposition\ntorch_volpy.gui.qt_app.segmentedscopeswitch.setthumbposition\n(self, value: float) -> none\nset the animated thumb position.\nset the animated thumb position.",
      "signature": "(self, value: float) -> None",
      "source": {
        "endLine": 2047,
        "line": 2044,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Set the animated thumb position."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_make_icon_button",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._make_icon_button",
      "searchText": "function\n_make_icon_button\ntorch_volpy.gui.qt_app._make_icon_button\n(svg: str, tooltip: str) -> qpushbutton",
      "signature": "(svg: str, tooltip: str) -> QPushButton",
      "source": {
        "endLine": 2059,
        "line": 2052,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_apply_app_theme",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._apply_app_theme",
      "searchText": "function\n_apply_app_theme\ntorch_volpy.gui.qt_app._apply_app_theme\n(app: qapplication) -> none",
      "signature": "(app: QApplication) -> None",
      "source": {
        "endLine": 2080,
        "line": 2062,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_event_pos",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._event_pos",
      "searchText": "function\n_event_pos\ntorch_volpy.gui.qt_app._event_pos\n(event)",
      "signature": "(event)",
      "source": {
        "endLine": 2086,
        "line": 2083,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_event_global_pos",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._event_global_pos",
      "searchText": "function\n_event_global_pos\ntorch_volpy.gui.qt_app._event_global_pos\n(event)",
      "signature": "(event)",
      "source": {
        "endLine": 2092,
        "line": 2089,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_advanced_defaults",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._advanced_defaults",
      "searchText": "function\n_advanced_defaults\ntorch_volpy.gui.qt_app._advanced_defaults\n(method: str) -> dict[str, any]",
      "signature": "(method: str) -> dict[str, Any]",
      "source": {
        "endLine": 2096,
        "line": 2095,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_mps_available",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._mps_available",
      "searchText": "function\n_mps_available\ntorch_volpy.gui.qt_app._mps_available\n() -> bool",
      "signature": "() -> bool",
      "source": {
        "endLine": 2100,
        "line": 2099,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_available_device_options",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._available_device_options",
      "searchText": "function\n_available_device_options\ntorch_volpy.gui.qt_app._available_device_options\n() -> list[tuple[str, str]]",
      "signature": "() -> list[tuple[str, str]]",
      "source": {
        "endLine": 2109,
        "line": 2103,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_validate_selected_device",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._validate_selected_device",
      "searchText": "function\n_validate_selected_device\ntorch_volpy.gui.qt_app._validate_selected_device\n(device: str, task: str) -> none",
      "signature": "(device: str, task: str) -> None",
      "source": {
        "endLine": 2116,
        "line": 2112,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_freeze_options",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._freeze_options",
      "searchText": "function\n_freeze_options\ntorch_volpy.gui.qt_app._freeze_options\n(value: any) -> any",
      "signature": "(value: Any) -> Any",
      "source": {
        "endLine": 2124,
        "line": 2119,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_dialog_exec",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._dialog_exec",
      "searchText": "function\n_dialog_exec\ntorch_volpy.gui.qt_app._dialog_exec\n(dialog: qdialog) -> int",
      "signature": "(dialog: QDialog) -> int",
      "source": {
        "endLine": 2128,
        "line": 2127,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_get_movie_frame_rate",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._get_movie_frame_rate",
      "searchText": "function\n_get_movie_frame_rate\ntorch_volpy.gui.qt_app._get_movie_frame_rate\n(parent: qwidget, current_value: float) -> tuple[float, bool]",
      "signature": "(parent: QWidget, current_value: float) -> tuple[float, bool]",
      "source": {
        "endLine": 2165,
        "line": 2131,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_format_float_list",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._format_float_list",
      "searchText": "function\n_format_float_list\ntorch_volpy.gui.qt_app._format_float_list\n(values: any) -> str",
      "signature": "(values: Any) -> str",
      "source": {
        "endLine": 2169,
        "line": 2168,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "_parse_float_list",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app._parse_float_list",
      "searchText": "function\n_parse_float_list\ntorch_volpy.gui.qt_app._parse_float_list\n(text: str, label: str) -> tuple[float, ...]",
      "signature": "(text: str, label: str) -> tuple[float, ...]",
      "source": {
        "endLine": 2179,
        "line": 2172,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "bases": [
        "QDialog"
      ],
      "dataclass": false,
      "decorators": [],
      "docstring": "Window that hosts the trace plotting canvas.",
      "kind": "class",
      "module": "torch_volpy.gui.qt_app",
      "name": "TraceWindow",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceWindow",
      "searchText": "class\ntracewindow\ntorch_volpy.gui.qt_app.tracewindow\n()\nwindow that hosts the trace plotting canvas.\nwindow that hosts the trace plotting canvas.\nqdialog",
      "signature": "()",
      "source": {
        "endLine": 2194,
        "line": 2182,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Window that hosts the trace plotting canvas."
    },
    {
      "decorators": [],
      "docstring": "Track when the trace window becomes visible.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "showEvent",
      "parent": "torch_volpy.gui.qt_app.TraceWindow",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceWindow.showEvent",
      "searchText": "method\nshowevent\ntorch_volpy.gui.qt_app.tracewindow.showevent\n(self, event) -> none\ntrack when the trace window becomes visible.\ntrack when the trace window becomes visible.",
      "signature": "(self, event) -> None",
      "source": {
        "endLine": 2189,
        "line": 2186,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Track when the trace window becomes visible."
    },
    {
      "decorators": [],
      "docstring": "Track when the trace window is hidden.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "hideEvent",
      "parent": "torch_volpy.gui.qt_app.TraceWindow",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceWindow.hideEvent",
      "searchText": "method\nhideevent\ntorch_volpy.gui.qt_app.tracewindow.hideevent\n(self, event) -> none\ntrack when the trace window is hidden.\ntrack when the trace window is hidden.",
      "signature": "(self, event) -> None",
      "source": {
        "endLine": 2194,
        "line": 2191,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Track when the trace window is hidden."
    },
    {
      "bases": [
        "QProxyStyle"
      ],
      "dataclass": false,
      "decorators": [],
      "docstring": "Proxy style for drawing custom spinbox arrows.",
      "kind": "class",
      "module": "torch_volpy.gui.qt_app",
      "name": "SpinBoxArrowStyle",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.SpinBoxArrowStyle",
      "searchText": "class\nspinboxarrowstyle\ntorch_volpy.gui.qt_app.spinboxarrowstyle\n()\nproxy style for drawing custom spinbox arrows.\nproxy style for drawing custom spinbox arrows.\nqproxystyle",
      "signature": "()",
      "source": {
        "endLine": 2234,
        "line": 2197,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Proxy style for drawing custom spinbox arrows."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_draw_spinbox_arrow",
      "parent": "torch_volpy.gui.qt_app.SpinBoxArrowStyle",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.SpinBoxArrowStyle._draw_spinbox_arrow",
      "searchText": "method\n_draw_spinbox_arrow\ntorch_volpy.gui.qt_app.spinboxarrowstyle._draw_spinbox_arrow\n(self, painter, center: qpointf, *, up: bool, enabled: bool) -> none",
      "signature": "(self, painter, center: QPointF, *, up: bool, enabled: bool) -> None",
      "source": {
        "endLine": 2219,
        "line": 2199,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Draw custom spinbox arrow primitives.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "drawPrimitive",
      "parent": "torch_volpy.gui.qt_app.SpinBoxArrowStyle",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.SpinBoxArrowStyle.drawPrimitive",
      "searchText": "method\ndrawprimitive\ntorch_volpy.gui.qt_app.spinboxarrowstyle.drawprimitive\n(self, element, option, painter, widget = none) -> none\ndraw custom spinbox arrow primitives.\ndraw custom spinbox arrow primitives.",
      "signature": "(self, element, option, painter, widget = None) -> None",
      "source": {
        "endLine": 2234,
        "line": 2221,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Draw custom spinbox arrow primitives."
    },
    {
      "bases": [
        "FigureCanvas"
      ],
      "dataclass": false,
      "decorators": [],
      "docstring": "Matplotlib canvas for ROI trace and spike visualizations.",
      "kind": "class",
      "module": "torch_volpy.gui.qt_app",
      "name": "TraceCanvas",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas",
      "searchText": "class\ntracecanvas\ntorch_volpy.gui.qt_app.tracecanvas\n(parent: optional[qwidget] = none) -> none\nmatplotlib canvas for roi trace and spike visualizations.\nmatplotlib canvas for roi trace and spike visualizations.\nfigurecanvas",
      "signature": "(parent: Optional[QWidget] = None) -> None",
      "source": {
        "endLine": 3002,
        "line": 2237,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Matplotlib canvas for ROI trace and spike visualizations."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "__init__",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas.__init__",
      "searchText": "method\n__init__\ntorch_volpy.gui.qt_app.tracecanvas.__init__\n(self, parent: optional[qwidget] = none) -> none",
      "signature": "(self, parent: Optional[QWidget] = None) -> None",
      "source": {
        "endLine": 2273,
        "line": 2242,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Render an empty trace plot state.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "plot_empty",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas.plot_empty",
      "searchText": "method\nplot_empty\ntorch_volpy.gui.qt_app.tracecanvas.plot_empty\n(self) -> none\nrender an empty trace plot state.\nrender an empty trace plot state.",
      "signature": "(self) -> None",
      "source": {
        "endLine": 2301,
        "line": 2275,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Render an empty trace plot state."
    },
    {
      "decorators": [],
      "docstring": "Plot extraction results and ROI trace data.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "plot_result",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas.plot_result",
      "searchText": "method\nplot_result\ntorch_volpy.gui.qt_app.tracecanvas.plot_result\n(self, result: dict, *, mode: str = 'trace', time_window: optional[tuple[float, float]] = none) -> none\nplot extraction results and roi trace data.\nplot extraction results and roi trace data.",
      "signature": "(self, result: dict, *, mode: str = 'trace', time_window: Optional[tuple[float, float]] = None) -> None",
      "source": {
        "endLine": 2427,
        "line": 2303,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Plot extraction results and ROI trace data."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_draw_time_axis_label",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas._draw_time_axis_label",
      "searchText": "method\n_draw_time_axis_label\ntorch_volpy.gui.qt_app.tracecanvas._draw_time_axis_label\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 2430,
        "line": 2429,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_apply_figure_layout",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas._apply_figure_layout",
      "searchText": "method\n_apply_figure_layout\ntorch_volpy.gui.qt_app.tracecanvas._apply_figure_layout\n(self, *, has_data: bool) -> none",
      "signature": "(self, *, has_data: bool) -> None",
      "source": {
        "endLine": 2436,
        "line": 2432,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_build_display_trace",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas._build_display_trace",
      "searchText": "method\n_build_display_trace\ntorch_volpy.gui.qt_app.tracecanvas._build_display_trace\n(self, trace: np.ndarray, *, stacked: bool = false, stack_groups: optional[list[int]] = none, min_row_spacing: float = 1.0) -> np.ndarray",
      "signature": "(self, trace: np.ndarray, *, stacked: bool = False, stack_groups: Optional[list[int]] = None, min_row_spacing: float = 1.0) -> np.ndarray",
      "source": {
        "endLine": 2473,
        "line": 2438,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_normalize_dff_for_display",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas._normalize_dff_for_display",
      "searchText": "method\n_normalize_dff_for_display\ntorch_volpy.gui.qt_app.tracecanvas._normalize_dff_for_display\n(self, trace: np.ndarray) -> np.ndarray",
      "signature": "(self, trace: np.ndarray) -> np.ndarray",
      "source": {
        "endLine": 2483,
        "line": 2475,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.gui.qt_app",
      "name": "_normalize_dff_column",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas._normalize_dff_column",
      "searchText": "staticmethod\n_normalize_dff_column\ntorch_volpy.gui.qt_app.tracecanvas._normalize_dff_column\n(y: np.ndarray) -> np.ndarray\nstaticmethod",
      "signature": "(y: np.ndarray) -> np.ndarray",
      "source": {
        "endLine": 2502,
        "line": 2486,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.gui.qt_app",
      "name": "_decimate_line_for_plot",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas._decimate_line_for_plot",
      "searchText": "staticmethod\n_decimate_line_for_plot\ntorch_volpy.gui.qt_app.tracecanvas._decimate_line_for_plot\n(x: np.ndarray, y: np.ndarray, *, max_points: int) -> tuple[np.ndarray, np.ndarray]\nstaticmethod",
      "signature": "(x: np.ndarray, y: np.ndarray, *, max_points: int) -> tuple[np.ndarray, np.ndarray]",
      "source": {
        "endLine": 2530,
        "line": 2505,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Return whether the canvas currently has plotted trace data.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "has_data",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas.has_data",
      "searchText": "method\nhas_data\ntorch_volpy.gui.qt_app.tracecanvas.has_data\n(self) -> bool\nreturn whether the canvas currently has plotted trace data.\nreturn whether the canvas currently has plotted trace data.",
      "signature": "(self) -> bool",
      "source": {
        "endLine": 2534,
        "line": 2532,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Return whether the canvas currently has plotted trace data."
    },
    {
      "decorators": [],
      "docstring": "Return the time range covered by the current trace data.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "time_bounds",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas.time_bounds",
      "searchText": "method\ntime_bounds\ntorch_volpy.gui.qt_app.tracecanvas.time_bounds\n(self) -> tuple[float, float]\nreturn the time range covered by the current trace data.\nreturn the time range covered by the current trace data.",
      "signature": "(self) -> tuple[float, float]",
      "source": {
        "endLine": 2540,
        "line": 2536,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Return the time range covered by the current trace data."
    },
    {
      "decorators": [],
      "docstring": "Return the currently visible time window.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "current_time_window",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas.current_time_window",
      "searchText": "method\ncurrent_time_window\ntorch_volpy.gui.qt_app.tracecanvas.current_time_window\n(self) -> tuple[float, float]\nreturn the currently visible time window.\nreturn the currently visible time window.",
      "signature": "(self) -> tuple[float, float]",
      "source": {
        "endLine": 2546,
        "line": 2542,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Return the currently visible time window."
    },
    {
      "decorators": [],
      "docstring": "Set the visible trace time window.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "set_time_window",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas.set_time_window",
      "searchText": "method\nset_time_window\ntorch_volpy.gui.qt_app.tracecanvas.set_time_window\n(self, xmin: float, xmax: float) -> none\nset the visible trace time window.\nset the visible trace time window.",
      "signature": "(self, xmin: float, xmax: float) -> None",
      "source": {
        "endLine": 2550,
        "line": 2548,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Set the visible trace time window."
    },
    {
      "decorators": [],
      "docstring": "Reset the trace canvas to the full time range.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "reset_view",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas.reset_view",
      "searchText": "method\nreset_view\ntorch_volpy.gui.qt_app.tracecanvas.reset_view\n(self) -> none\nreset the trace canvas to the full time range.\nreset the trace canvas to the full time range.",
      "signature": "(self) -> None",
      "source": {
        "endLine": 2555,
        "line": 2552,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Reset the trace canvas to the full time range."
    },
    {
      "decorators": [],
      "docstring": "Zoom the trace time window by a scale factor.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "zoom_view",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas.zoom_view",
      "searchText": "method\nzoom_view\ntorch_volpy.gui.qt_app.tracecanvas.zoom_view\n(self, factor: float) -> none\nzoom the trace time window by a scale factor.\nzoom the trace time window by a scale factor.",
      "signature": "(self, factor: float) -> None",
      "source": {
        "endLine": 2564,
        "line": 2557,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Zoom the trace time window by a scale factor."
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.gui.qt_app",
      "name": "_as_1d_float_array",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas._as_1d_float_array",
      "searchText": "staticmethod\n_as_1d_float_array\ntorch_volpy.gui.qt_app.tracecanvas._as_1d_float_array\n(value: any) -> np.ndarray\nstaticmethod",
      "signature": "(value: Any) -> np.ndarray",
      "source": {
        "endLine": 2575,
        "line": 2567,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_result_series_for_mode",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas._result_series_for_mode",
      "searchText": "method\n_result_series_for_mode\ntorch_volpy.gui.qt_app.tracecanvas._result_series_for_mode\n(self, result: dict, mode: str) -> tuple[np.ndarray, str, str, list[str], optional[list[int]], list[int]]",
      "signature": "(self, result: dict, mode: str) -> tuple[np.ndarray, str, str, list[str], Optional[list[int]], list[int]]",
      "source": {
        "endLine": 2642,
        "line": 2577,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_series_colors",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas._series_colors",
      "searchText": "method\n_series_colors\ntorch_volpy.gui.qt_app.tracecanvas._series_colors\n(self, result: dict, mode: str, n_traces: int) -> list[str]",
      "signature": "(self, result: dict, mode: str, n_traces: int) -> list[str]",
      "source": {
        "endLine": 2676,
        "line": 2644,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_on_overview_select",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas._on_overview_select",
      "searchText": "method\n_on_overview_select\ntorch_volpy.gui.qt_app.tracecanvas._on_overview_select\n(self, xmin: float, xmax: float) -> none",
      "signature": "(self, xmin: float, xmax: float) -> None",
      "source": {
        "endLine": 2679,
        "line": 2678,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_on_overview_move",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas._on_overview_move",
      "searchText": "method\n_on_overview_move\ntorch_volpy.gui.qt_app.tracecanvas._on_overview_move\n(self, xmin: float, xmax: float) -> none",
      "signature": "(self, xmin: float, xmax: float) -> None",
      "source": {
        "endLine": 2682,
        "line": 2681,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_on_draw",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas._on_draw",
      "searchText": "method\n_on_draw\ntorch_volpy.gui.qt_app.tracecanvas._on_draw\n(self, event) -> none",
      "signature": "(self, event) -> None",
      "source": {
        "endLine": 2692,
        "line": 2684,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_on_scroll",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas._on_scroll",
      "searchText": "method\n_on_scroll\ntorch_volpy.gui.qt_app.tracecanvas._on_scroll\n(self, event) -> none",
      "signature": "(self, event) -> None",
      "source": {
        "endLine": 2702,
        "line": 2694,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_on_button_press",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas._on_button_press",
      "searchText": "method\n_on_button_press\ntorch_volpy.gui.qt_app.tracecanvas._on_button_press\n(self, event) -> none",
      "signature": "(self, event) -> None",
      "source": {
        "endLine": 2711,
        "line": 2704,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_on_double_click",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas._on_double_click",
      "searchText": "method\n_on_double_click\ntorch_volpy.gui.qt_app.tracecanvas._on_double_click\n(self, event) -> none",
      "signature": "(self, event) -> None",
      "source": {
        "endLine": 2718,
        "line": 2713,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_roi_id_at_stacked_y",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas._roi_id_at_stacked_y",
      "searchText": "method\n_roi_id_at_stacked_y\ntorch_volpy.gui.qt_app.tracecanvas._roi_id_at_stacked_y\n(self, y: float) -> optional[int]",
      "signature": "(self, y: float) -> Optional[int]",
      "source": {
        "endLine": 2733,
        "line": 2720,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_on_motion",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas._on_motion",
      "searchText": "method\n_on_motion\ntorch_volpy.gui.qt_app.tracecanvas._on_motion\n(self, event) -> none",
      "signature": "(self, event) -> None",
      "source": {
        "endLine": 2740,
        "line": 2735,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_on_button_release",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas._on_button_release",
      "searchText": "method\n_on_button_release\ntorch_volpy.gui.qt_app.tracecanvas._on_button_release\n(self, event) -> none",
      "signature": "(self, event) -> None",
      "source": {
        "endLine": 2743,
        "line": 2742,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_set_view",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas._set_view",
      "searchText": "method\n_set_view\ntorch_volpy.gui.qt_app.tracecanvas._set_view\n(self, xmin: float, xmax: float, *, redraw: bool = true) -> none",
      "signature": "(self, xmin: float, xmax: float, *, redraw: bool = True) -> None",
      "source": {
        "endLine": 2772,
        "line": 2745,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_update_main_y_limits",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas._update_main_y_limits",
      "searchText": "method\n_update_main_y_limits\ntorch_volpy.gui.qt_app.tracecanvas._update_main_y_limits\n(self, xmin: float, xmax: float) -> none",
      "signature": "(self, xmin: float, xmax: float) -> None",
      "source": {
        "endLine": 2789,
        "line": 2774,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_style_main_axis",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas._style_main_axis",
      "searchText": "method\n_style_main_axis\ntorch_volpy.gui.qt_app.tracecanvas._style_main_axis\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 2803,
        "line": 2791,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_style_stacked_axes",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas._style_stacked_axes",
      "searchText": "method\n_style_stacked_axes\ntorch_volpy.gui.qt_app.tracecanvas._style_stacked_axes\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 2820,
        "line": 2805,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_stacked_group_count",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas._stacked_group_count",
      "searchText": "method\n_stacked_group_count\ntorch_volpy.gui.qt_app.tracecanvas._stacked_group_count\n(self) -> int",
      "signature": "(self) -> int",
      "source": {
        "endLine": 2827,
        "line": 2822,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_stacked_row_position",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas._stacked_row_position",
      "searchText": "method\n_stacked_row_position\ntorch_volpy.gui.qt_app.tracecanvas._stacked_row_position\n(self, group: int, n_groups: optional[int] = none) -> float",
      "signature": "(self, group: int, n_groups: Optional[int] = None) -> float",
      "source": {
        "endLine": 2832,
        "line": 2829,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_stacked_y_limits",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas._stacked_y_limits",
      "searchText": "method\n_stacked_y_limits\ntorch_volpy.gui.qt_app.tracecanvas._stacked_y_limits\n(self, xmin: optional[float] = none, xmax: optional[float] = none) -> tuple[float, float]",
      "signature": "(self, xmin: Optional[float] = None, xmax: Optional[float] = None) -> tuple[float, float]",
      "source": {
        "endLine": 2857,
        "line": 2834,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Save the current trace figure as a PNG file.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "save_png",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas.save_png",
      "searchText": "method\nsave_png\ntorch_volpy.gui.qt_app.tracecanvas.save_png\n(self, path: str, *, dpi: int = 300) -> none\nsave the current trace figure as a png file.\nsave the current trace figure as a png file.",
      "signature": "(self, path: str, *, dpi: int = 300) -> None",
      "source": {
        "endLine": 2880,
        "line": 2859,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Save the current trace figure as a PNG file."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_style_overview_axis",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas._style_overview_axis",
      "searchText": "method\n_style_overview_axis\ntorch_volpy.gui.qt_app.tracecanvas._style_overview_axis\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 2889,
        "line": 2882,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_overview_handle_positions",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas._overview_handle_positions",
      "searchText": "method\n_overview_handle_positions\ntorch_volpy.gui.qt_app.tracecanvas._overview_handle_positions\n(self, xmin: float, xmax: float) -> list[tuple[float, float]]",
      "signature": "(self, xmin: float, xmax: float) -> list[tuple[float, float]]",
      "source": {
        "endLine": 2913,
        "line": 2891,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_overview_selection_artists",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas._overview_selection_artists",
      "searchText": "method\n_overview_selection_artists\ntorch_volpy.gui.qt_app.tracecanvas._overview_selection_artists\n(self) -> list[any]",
      "signature": "(self) -> list[Any]",
      "source": {
        "endLine": 2920,
        "line": 2915,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_draw_overview_selection_artists",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas._draw_overview_selection_artists",
      "searchText": "method\n_draw_overview_selection_artists\ntorch_volpy.gui.qt_app.tracecanvas._draw_overview_selection_artists\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 2924,
        "line": 2922,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_blit_overview_selection",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas._blit_overview_selection",
      "searchText": "method\n_blit_overview_selection\ntorch_volpy.gui.qt_app.tracecanvas._blit_overview_selection\n(self) -> bool",
      "signature": "(self) -> bool",
      "source": {
        "endLine": 2932,
        "line": 2926,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_move_overview_selection",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas._move_overview_selection",
      "searchText": "method\n_move_overview_selection\ntorch_volpy.gui.qt_app.tracecanvas._move_overview_selection\n(self, xmin: float, xmax: float) -> none",
      "signature": "(self, xmin: float, xmax: float) -> None",
      "source": {
        "endLine": 2950,
        "line": 2934,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_update_overview_selection",
      "parent": "torch_volpy.gui.qt_app.TraceCanvas",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.TraceCanvas._update_overview_selection",
      "searchText": "method\n_update_overview_selection\ntorch_volpy.gui.qt_app.tracecanvas._update_overview_selection\n(self, xmin: float, xmax: float) -> none",
      "signature": "(self, xmin: float, xmax: float) -> None",
      "source": {
        "endLine": 3002,
        "line": 2952,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "bases": [
        "QGraphicsView"
      ],
      "dataclass": false,
      "decorators": [],
      "docstring": "Graphics view for movie frames, ROI drawing, and mask overlays.",
      "kind": "class",
      "module": "torch_volpy.gui.qt_app",
      "name": "MovieGraphicsView",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieGraphicsView",
      "searchText": "class\nmoviegraphicsview\ntorch_volpy.gui.qt_app.moviegraphicsview\n(parent: optional[qwidget] = none) -> none\ngraphics view for movie frames, roi drawing, and mask overlays.\ngraphics view for movie frames, roi drawing, and mask overlays.\nqgraphicsview",
      "signature": "(parent: Optional[QWidget] = None) -> None",
      "source": {
        "endLine": 3471,
        "line": 3005,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Graphics view for movie frames, ROI drawing, and mask overlays."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "__init__",
      "parent": "torch_volpy.gui.qt_app.MovieGraphicsView",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieGraphicsView.__init__",
      "searchText": "method\n__init__\ntorch_volpy.gui.qt_app.moviegraphicsview.__init__\n(self, parent: optional[qwidget] = none) -> none",
      "signature": "(self, parent: Optional[QWidget] = None) -> None",
      "source": {
        "endLine": 3057,
        "line": 3013,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_set_zoom_percent_value",
      "parent": "torch_volpy.gui.qt_app.MovieGraphicsView",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieGraphicsView._set_zoom_percent_value",
      "searchText": "method\n_set_zoom_percent_value\ntorch_volpy.gui.qt_app.moviegraphicsview._set_zoom_percent_value\n(self, percent: float, *, emit_signal: bool = true) -> none",
      "signature": "(self, percent: float, *, emit_signal: bool = True) -> None",
      "source": {
        "endLine": 3064,
        "line": 3059,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Enable or disable fit-to-view scaling.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "set_fit_mode",
      "parent": "torch_volpy.gui.qt_app.MovieGraphicsView",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieGraphicsView.set_fit_mode",
      "searchText": "method\nset_fit_mode\ntorch_volpy.gui.qt_app.moviegraphicsview.set_fit_mode\n(self, mode: str) -> none\nenable or disable fit-to-view scaling.\nenable or disable fit-to-view scaling.",
      "signature": "(self, mode: str) -> None",
      "source": {
        "endLine": 3072,
        "line": 3066,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Enable or disable fit-to-view scaling."
    },
    {
      "decorators": [],
      "docstring": "Display movie pixels at actual size.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "set_actual_size",
      "parent": "torch_volpy.gui.qt_app.MovieGraphicsView",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieGraphicsView.set_actual_size",
      "searchText": "method\nset_actual_size\ntorch_volpy.gui.qt_app.moviegraphicsview.set_actual_size\n(self) -> none\ndisplay movie pixels at actual size.\ndisplay movie pixels at actual size.",
      "signature": "(self) -> None",
      "source": {
        "endLine": 3078,
        "line": 3074,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Display movie pixels at actual size."
    },
    {
      "decorators": [],
      "docstring": "Set the movie view zoom as a percentage.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "set_zoom_percent",
      "parent": "torch_volpy.gui.qt_app.MovieGraphicsView",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieGraphicsView.set_zoom_percent",
      "searchText": "method\nset_zoom_percent\ntorch_volpy.gui.qt_app.moviegraphicsview.set_zoom_percent\n(self, percent: float) -> none\nset the movie view zoom as a percentage.\nset the movie view zoom as a percentage.",
      "signature": "(self, percent: float) -> None",
      "source": {
        "endLine": 3084,
        "line": 3080,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Set the movie view zoom as a percentage."
    },
    {
      "decorators": [],
      "docstring": "Scale the current movie view zoom by a factor.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "zoom_by",
      "parent": "torch_volpy.gui.qt_app.MovieGraphicsView",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieGraphicsView.zoom_by",
      "searchText": "method\nzoom_by\ntorch_volpy.gui.qt_app.moviegraphicsview.zoom_by\n(self, factor: float) -> none\nscale the current movie view zoom by a factor.\nscale the current movie view zoom by a factor.",
      "signature": "(self, factor: float) -> None",
      "source": {
        "endLine": 3088,
        "line": 3086,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Scale the current movie view zoom by a factor."
    },
    {
      "decorators": [],
      "docstring": "Apply the current fit or zoom transform to the view.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "apply_view_transform",
      "parent": "torch_volpy.gui.qt_app.MovieGraphicsView",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieGraphicsView.apply_view_transform",
      "searchText": "method\napply_view_transform\ntorch_volpy.gui.qt_app.moviegraphicsview.apply_view_transform\n(self) -> none\napply the current fit or zoom transform to the view.\napply the current fit or zoom transform to the view.",
      "signature": "(self) -> None",
      "source": {
        "endLine": 3112,
        "line": 3090,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Apply the current fit or zoom transform to the view."
    },
    {
      "decorators": [],
      "docstring": "Set the active ROI drawing or selection mode.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "set_roi_mode",
      "parent": "torch_volpy.gui.qt_app.MovieGraphicsView",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieGraphicsView.set_roi_mode",
      "searchText": "method\nset_roi_mode\ntorch_volpy.gui.qt_app.moviegraphicsview.set_roi_mode\n(self, mode: str) -> none\nset the active roi drawing or selection mode.\nset the active roi drawing or selection mode.",
      "signature": "(self, mode: str) -> None",
      "source": {
        "endLine": 3124,
        "line": 3114,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Set the active ROI drawing or selection mode."
    },
    {
      "decorators": [],
      "docstring": "Set the freehand ROI brush size.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "set_brush_size",
      "parent": "torch_volpy.gui.qt_app.MovieGraphicsView",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieGraphicsView.set_brush_size",
      "searchText": "method\nset_brush_size\ntorch_volpy.gui.qt_app.moviegraphicsview.set_brush_size\n(self, size: int) -> none\nset the freehand roi brush size.\nset the freehand roi brush size.",
      "signature": "(self, size: int) -> None",
      "source": {
        "endLine": 3128,
        "line": 3126,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Set the freehand ROI brush size."
    },
    {
      "decorators": [],
      "docstring": "Display a movie frame and optional mask overlay.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "set_frame",
      "parent": "torch_volpy.gui.qt_app.MovieGraphicsView",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieGraphicsView.set_frame",
      "searchText": "method\nset_frame\ntorch_volpy.gui.qt_app.moviegraphicsview.set_frame\n(self, frame: np.ndarray, *, rgb: bool = false) -> none\ndisplay a movie frame and optional mask overlay.\ndisplay a movie frame and optional mask overlay.",
      "signature": "(self, frame: np.ndarray, *, rgb: bool = False) -> None",
      "source": {
        "endLine": 3148,
        "line": 3130,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Display a movie frame and optional mask overlay."
    },
    {
      "decorators": [],
      "docstring": "Show a centered empty-state message in the movie view.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "show_empty_message",
      "parent": "torch_volpy.gui.qt_app.MovieGraphicsView",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieGraphicsView.show_empty_message",
      "searchText": "method\nshow_empty_message\ntorch_volpy.gui.qt_app.moviegraphicsview.show_empty_message\n(self, message: str = 'no movie loaded') -> none\nshow a centered empty-state message in the movie view.\nshow a centered empty-state message in the movie view.",
      "signature": "(self, message: str = 'No movie loaded') -> None",
      "source": {
        "endLine": 3162,
        "line": 3150,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Show a centered empty-state message in the movie view."
    },
    {
      "decorators": [],
      "docstring": "Clear the interactive ROI drawing overlay.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "clear_roi",
      "parent": "torch_volpy.gui.qt_app.MovieGraphicsView",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieGraphicsView.clear_roi",
      "searchText": "method\nclear_roi\ntorch_volpy.gui.qt_app.moviegraphicsview.clear_roi\n(self) -> none\nclear the interactive roi drawing overlay.\nclear the interactive roi drawing overlay.",
      "signature": "(self) -> None",
      "source": {
        "endLine": 3169,
        "line": 3164,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Clear the interactive ROI drawing overlay."
    },
    {
      "decorators": [],
      "docstring": "Remove the displayed ROI mask overlay.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "clear_mask_overlay",
      "parent": "torch_volpy.gui.qt_app.MovieGraphicsView",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieGraphicsView.clear_mask_overlay",
      "searchText": "method\nclear_mask_overlay\ntorch_volpy.gui.qt_app.moviegraphicsview.clear_mask_overlay\n(self) -> none\nremove the displayed roi mask overlay.\nremove the displayed roi mask overlay.",
      "signature": "(self) -> None",
      "source": {
        "endLine": 3179,
        "line": 3171,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Remove the displayed ROI mask overlay."
    },
    {
      "decorators": [],
      "docstring": "Display a labeled ROI mask overlay.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "set_mask_overlay",
      "parent": "torch_volpy.gui.qt_app.MovieGraphicsView",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieGraphicsView.set_mask_overlay",
      "searchText": "method\nset_mask_overlay\ntorch_volpy.gui.qt_app.moviegraphicsview.set_mask_overlay\n(self, mask: np.ndarray, roi_id: int) -> none\ndisplay a labeled roi mask overlay.\ndisplay a labeled roi mask overlay.",
      "signature": "(self, mask: np.ndarray, roi_id: int) -> None",
      "source": {
        "endLine": 3196,
        "line": 3181,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Display a labeled ROI mask overlay."
    },
    {
      "decorators": [],
      "docstring": "Center the view on a specific ROI label.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "center_on_roi",
      "parent": "torch_volpy.gui.qt_app.MovieGraphicsView",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieGraphicsView.center_on_roi",
      "searchText": "method\ncenter_on_roi\ntorch_volpy.gui.qt_app.moviegraphicsview.center_on_roi\n(self, roi_id: int) -> none\ncenter the view on a specific roi label.\ncenter the view on a specific roi label.",
      "signature": "(self, roi_id: int) -> None",
      "source": {
        "endLine": 3205,
        "line": 3198,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Center the view on a specific ROI label."
    },
    {
      "decorators": [],
      "docstring": "Show or hide the ROI mask overlay.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "set_overlay_visible",
      "parent": "torch_volpy.gui.qt_app.MovieGraphicsView",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieGraphicsView.set_overlay_visible",
      "searchText": "method\nset_overlay_visible\ntorch_volpy.gui.qt_app.moviegraphicsview.set_overlay_visible\n(self, visible: bool) -> none\nshow or hide the roi mask overlay.\nshow or hide the roi mask overlay.",
      "signature": "(self, visible: bool) -> None",
      "source": {
        "endLine": 3213,
        "line": 3207,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Show or hide the ROI mask overlay."
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.gui.qt_app",
      "name": "_mask_to_rgba",
      "parent": "torch_volpy.gui.qt_app.MovieGraphicsView",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieGraphicsView._mask_to_rgba",
      "searchText": "staticmethod\n_mask_to_rgba\ntorch_volpy.gui.qt_app.moviegraphicsview._mask_to_rgba\n(mask: np.ndarray, selected_roi_id: int) -> np.ndarray\nstaticmethod",
      "signature": "(mask: np.ndarray, selected_roi_id: int) -> np.ndarray",
      "source": {
        "endLine": 3235,
        "line": 3216,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_add_roi_labels",
      "parent": "torch_volpy.gui.qt_app.MovieGraphicsView",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieGraphicsView._add_roi_labels",
      "searchText": "method\n_add_roi_labels\ntorch_volpy.gui.qt_app.moviegraphicsview._add_roi_labels\n(self, mask: np.ndarray) -> none",
      "signature": "(self, mask: np.ndarray) -> None",
      "source": {
        "endLine": 3268,
        "line": 3237,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_center_empty_message",
      "parent": "torch_volpy.gui.qt_app.MovieGraphicsView",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieGraphicsView._center_empty_message",
      "searchText": "method\n_center_empty_message\ntorch_volpy.gui.qt_app.moviegraphicsview._center_empty_message\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 3275,
        "line": 3270,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_inside_image",
      "parent": "torch_volpy.gui.qt_app.MovieGraphicsView",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieGraphicsView._inside_image",
      "searchText": "method\n_inside_image\ntorch_volpy.gui.qt_app.moviegraphicsview._inside_image\n(self, point: qpointf) -> bool",
      "signature": "(self, point: QPointF) -> bool",
      "source": {
        "endLine": 3281,
        "line": 3277,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_map_event_to_image",
      "parent": "torch_volpy.gui.qt_app.MovieGraphicsView",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieGraphicsView._map_event_to_image",
      "searchText": "method\n_map_event_to_image\ntorch_volpy.gui.qt_app.moviegraphicsview._map_event_to_image\n(self, event) -> optional[qpointf]",
      "signature": "(self, event) -> Optional[QPointF]",
      "source": {
        "endLine": 3287,
        "line": 3283,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_remove_roi_item",
      "parent": "torch_volpy.gui.qt_app.MovieGraphicsView",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieGraphicsView._remove_roi_item",
      "searchText": "method\n_remove_roi_item\ntorch_volpy.gui.qt_app.moviegraphicsview._remove_roi_item\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 3292,
        "line": 3289,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_make_pen",
      "parent": "torch_volpy.gui.qt_app.MovieGraphicsView",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieGraphicsView._make_pen",
      "searchText": "method\n_make_pen\ntorch_volpy.gui.qt_app.moviegraphicsview._make_pen\n(self, width: float = 1.8, color: str = '#00bcd4') -> qpen",
      "signature": "(self, width: float = 1.8, color: str = '#00bcd4') -> QPen",
      "source": {
        "endLine": 3300,
        "line": 3294,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Handle movie-view mouse presses for ROI tools and panning.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "mousePressEvent",
      "parent": "torch_volpy.gui.qt_app.MovieGraphicsView",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieGraphicsView.mousePressEvent",
      "searchText": "method\nmousepressevent\ntorch_volpy.gui.qt_app.moviegraphicsview.mousepressevent\n(self, event) -> none\nhandle movie-view mouse presses for roi tools and panning.\nhandle movie-view mouse presses for roi tools and panning.",
      "signature": "(self, event) -> None",
      "source": {
        "endLine": 3339,
        "line": 3302,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Handle movie-view mouse presses for ROI tools and panning."
    },
    {
      "decorators": [],
      "docstring": "Handle movie-view mouse movement for ROI tools and panning.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "mouseMoveEvent",
      "parent": "torch_volpy.gui.qt_app.MovieGraphicsView",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieGraphicsView.mouseMoveEvent",
      "searchText": "method\nmousemoveevent\ntorch_volpy.gui.qt_app.moviegraphicsview.mousemoveevent\n(self, event) -> none\nhandle movie-view mouse movement for roi tools and panning.\nhandle movie-view mouse movement for roi tools and panning.",
      "signature": "(self, event) -> None",
      "source": {
        "endLine": 3362,
        "line": 3341,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Handle movie-view mouse movement for ROI tools and panning."
    },
    {
      "decorators": [],
      "docstring": "Complete ROI drawing or panning interactions.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "mouseReleaseEvent",
      "parent": "torch_volpy.gui.qt_app.MovieGraphicsView",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieGraphicsView.mouseReleaseEvent",
      "searchText": "method\nmousereleaseevent\ntorch_volpy.gui.qt_app.moviegraphicsview.mousereleaseevent\n(self, event) -> none\ncomplete roi drawing or panning interactions.\ncomplete roi drawing or panning interactions.",
      "signature": "(self, event) -> None",
      "source": {
        "endLine": 3400,
        "line": 3364,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Complete ROI drawing or panning interactions."
    },
    {
      "decorators": [],
      "docstring": "Handle double-click actions in the movie view.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "mouseDoubleClickEvent",
      "parent": "torch_volpy.gui.qt_app.MovieGraphicsView",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieGraphicsView.mouseDoubleClickEvent",
      "searchText": "method\nmousedoubleclickevent\ntorch_volpy.gui.qt_app.moviegraphicsview.mousedoubleclickevent\n(self, event) -> none\nhandle double-click actions in the movie view.\nhandle double-click actions in the movie view.",
      "signature": "(self, event) -> None",
      "source": {
        "endLine": 3404,
        "line": 3402,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Handle double-click actions in the movie view."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_update_freehand_preview",
      "parent": "torch_volpy.gui.qt_app.MovieGraphicsView",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieGraphicsView._update_freehand_preview",
      "searchText": "method\n_update_freehand_preview\ntorch_volpy.gui.qt_app.moviegraphicsview._update_freehand_preview\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 3423,
        "line": 3406,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_pick_roi_at",
      "parent": "torch_volpy.gui.qt_app.MovieGraphicsView",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieGraphicsView._pick_roi_at",
      "searchText": "method\n_pick_roi_at\ntorch_volpy.gui.qt_app.moviegraphicsview._pick_roi_at\n(self, point: qpointf) -> none",
      "signature": "(self, point: QPointF) -> None",
      "source": {
        "endLine": 3440,
        "line": 3425,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_finalize_freehand",
      "parent": "torch_volpy.gui.qt_app.MovieGraphicsView",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieGraphicsView._finalize_freehand",
      "searchText": "method\n_finalize_freehand\ntorch_volpy.gui.qt_app.moviegraphicsview._finalize_freehand\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 3463,
        "line": 3442,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Reapply the movie view transform after resizing.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "resizeEvent",
      "parent": "torch_volpy.gui.qt_app.MovieGraphicsView",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MovieGraphicsView.resizeEvent",
      "searchText": "method\nresizeevent\ntorch_volpy.gui.qt_app.moviegraphicsview.resizeevent\n(self, event) -> none\nreapply the movie view transform after resizing.\nreapply the movie view transform after resizing.",
      "signature": "(self, event) -> None",
      "source": {
        "endLine": 3471,
        "line": 3465,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Reapply the movie view transform after resizing."
    },
    {
      "bases": [
        "QObject"
      ],
      "dataclass": false,
      "decorators": [],
      "docstring": "Background worker for movie conversion and motion correction.",
      "kind": "class",
      "module": "torch_volpy.gui.qt_app",
      "name": "PreprocessWorker",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.PreprocessWorker",
      "searchText": "class\npreprocessworker\ntorch_volpy.gui.qt_app.preprocessworker\n(*, source_path: str, dataset: str, motion_correction: bool = true, max_shifts: tuple[int, int] = (15, 15), frames_per_chunk: int = 256, device: str = 'cpu') -> none\nbackground worker for movie conversion and motion correction.\nbackground worker for movie conversion and motion correction.\nqobject",
      "signature": "(*, source_path: str, dataset: str, motion_correction: bool = True, max_shifts: tuple[int, int] = (15, 15), frames_per_chunk: int = 256, device: str = 'cpu') -> None",
      "source": {
        "endLine": 3574,
        "line": 3474,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Background worker for movie conversion and motion correction."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "__init__",
      "parent": "torch_volpy.gui.qt_app.PreprocessWorker",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.PreprocessWorker.__init__",
      "searchText": "method\n__init__\ntorch_volpy.gui.qt_app.preprocessworker.__init__\n(self, *, source_path: str, dataset: str, motion_correction: bool = true, max_shifts: tuple[int, int] = (15, 15), frames_per_chunk: int = 256, device: str = 'cpu') -> none",
      "signature": "(self, *, source_path: str, dataset: str, motion_correction: bool = True, max_shifts: tuple[int, int] = (15, 15), frames_per_chunk: int = 256, device: str = 'cpu') -> None",
      "source": {
        "endLine": 3496,
        "line": 3480,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_emit_phase_progress",
      "parent": "torch_volpy.gui.qt_app.PreprocessWorker",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.PreprocessWorker._emit_phase_progress",
      "searchText": "method\n_emit_phase_progress\ntorch_volpy.gui.qt_app.preprocessworker._emit_phase_progress\n(self, phase_start: int, phase_span: int, value: int, message: str) -> none",
      "signature": "(self, phase_start: int, phase_span: int, value: int, message: str) -> None",
      "source": {
        "endLine": 3501,
        "line": 3498,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Run TIFF conversion and motion correction in a worker thread.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "run",
      "parent": "torch_volpy.gui.qt_app.PreprocessWorker",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.PreprocessWorker.run",
      "searchText": "method\nrun\ntorch_volpy.gui.qt_app.preprocessworker.run\n(self) -> none\nrun tiff conversion and motion correction in a worker thread.\nrun tiff conversion and motion correction in a worker thread.",
      "signature": "(self) -> None",
      "source": {
        "endLine": 3574,
        "line": 3503,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Run TIFF conversion and motion correction in a worker thread."
    },
    {
      "bases": [
        "QObject"
      ],
      "dataclass": false,
      "decorators": [],
      "docstring": "Background worker for ROI trace extraction.",
      "kind": "class",
      "module": "torch_volpy.gui.qt_app",
      "name": "ExtractionWorker",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.ExtractionWorker",
      "searchText": "class\nextractionworker\ntorch_volpy.gui.qt_app.extractionworker\n(*, movie_path: str, dataset: str, method: str, roi_mask: np.ndarray, roi_ids: list[int], channel: optional[int], frame_rate: float, device: str, flip_signal: bool, batch_size: int = 256, advanced_options: optional[dict[str, any]] = none, all_rois: bool = false) -> none\nbackground worker for roi trace extraction.\nbackground worker for roi trace extraction.\nqobject",
      "signature": "(*, movie_path: str, dataset: str, method: str, roi_mask: np.ndarray, roi_ids: list[int], channel: Optional[int], frame_rate: float, device: str, flip_signal: bool, batch_size: int = 256, advanced_options: Optional[dict[str, Any]] = None, all_rois: bool = False) -> None",
      "source": {
        "endLine": 3775,
        "line": 3577,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Background worker for ROI trace extraction."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "__init__",
      "parent": "torch_volpy.gui.qt_app.ExtractionWorker",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.ExtractionWorker.__init__",
      "searchText": "method\n__init__\ntorch_volpy.gui.qt_app.extractionworker.__init__\n(self, *, movie_path: str, dataset: str, method: str, roi_mask: np.ndarray, roi_ids: list[int], channel: optional[int], frame_rate: float, device: str, flip_signal: bool, batch_size: int = 256, advanced_options: optional[dict[str, any]] = none, all_rois: bool = false) -> none",
      "signature": "(self, *, movie_path: str, dataset: str, method: str, roi_mask: np.ndarray, roi_ids: list[int], channel: Optional[int], frame_rate: float, device: str, flip_signal: bool, batch_size: int = 256, advanced_options: Optional[dict[str, Any]] = None, all_rois: bool = False) -> None",
      "source": {
        "endLine": 3612,
        "line": 3584,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Run trace extraction in a worker thread.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "run",
      "parent": "torch_volpy.gui.qt_app.ExtractionWorker",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.ExtractionWorker.run",
      "searchText": "method\nrun\ntorch_volpy.gui.qt_app.extractionworker.run\n(self) -> none\nrun trace extraction in a worker thread.\nrun trace extraction in a worker thread.",
      "signature": "(self) -> None",
      "source": {
        "endLine": 3693,
        "line": 3614,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Run trace extraction in a worker thread."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_extract_one",
      "parent": "torch_volpy.gui.qt_app.ExtractionWorker",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.ExtractionWorker._extract_one",
      "searchText": "method\n_extract_one\ntorch_volpy.gui.qt_app.extractionworker._extract_one\n(self, movie, method: str, roi_id: int, prefix: str) -> dict",
      "signature": "(self, movie, method: str, roi_id: int, prefix: str) -> dict",
      "source": {
        "endLine": 3752,
        "line": 3695,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_spikepursuit_payload",
      "parent": "torch_volpy.gui.qt_app.ExtractionWorker",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.ExtractionWorker._spikepursuit_payload",
      "searchText": "method\n_spikepursuit_payload\ntorch_volpy.gui.qt_app.extractionworker._spikepursuit_payload\n(self, result) -> dict",
      "signature": "(self, result) -> dict",
      "source": {
        "endLine": 3775,
        "line": 3754,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "bases": [
        "QObject"
      ],
      "dataclass": false,
      "decorators": [],
      "docstring": "Background worker for Cellpose ROI segmentation.",
      "kind": "class",
      "module": "torch_volpy.gui.qt_app",
      "name": "SegmentationWorker",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.SegmentationWorker",
      "searchText": "class\nsegmentationworker\ntorch_volpy.gui.qt_app.segmentationworker\n(*, movie_path: str, dataset: str, model_path: str, channel: optional[int], summary_window_size: int, baseline_percentile: float, device: str, gpu: bool, save_to_disk: bool) -> none\nbackground worker for cellpose roi segmentation.\nbackground worker for cellpose roi segmentation.\nqobject",
      "signature": "(*, movie_path: str, dataset: str, model_path: str, channel: Optional[int], summary_window_size: int, baseline_percentile: float, device: str, gpu: bool, save_to_disk: bool) -> None",
      "source": {
        "endLine": 3849,
        "line": 3778,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Background worker for Cellpose ROI segmentation."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "__init__",
      "parent": "torch_volpy.gui.qt_app.SegmentationWorker",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.SegmentationWorker.__init__",
      "searchText": "method\n__init__\ntorch_volpy.gui.qt_app.segmentationworker.__init__\n(self, *, movie_path: str, dataset: str, model_path: str, channel: optional[int], summary_window_size: int, baseline_percentile: float, device: str, gpu: bool, save_to_disk: bool) -> none",
      "signature": "(self, *, movie_path: str, dataset: str, model_path: str, channel: Optional[int], summary_window_size: int, baseline_percentile: float, device: str, gpu: bool, save_to_disk: bool) -> None",
      "source": {
        "endLine": 3806,
        "line": 3784,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Run Cellpose segmentation in a worker thread.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "run",
      "parent": "torch_volpy.gui.qt_app.SegmentationWorker",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.SegmentationWorker.run",
      "searchText": "method\nrun\ntorch_volpy.gui.qt_app.segmentationworker.run\n(self) -> none\nrun cellpose segmentation in a worker thread.\nrun cellpose segmentation in a worker thread.",
      "signature": "(self) -> None",
      "source": {
        "endLine": 3849,
        "line": 3808,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Run Cellpose segmentation in a worker thread."
    },
    {
      "bases": [
        "QMainWindow"
      ],
      "dataclass": false,
      "decorators": [],
      "docstring": "Main torch-volpy GUI window.",
      "kind": "class",
      "module": "torch_volpy.gui.qt_app",
      "name": "MainWindow",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow",
      "searchText": "class\nmainwindow\ntorch_volpy.gui.qt_app.mainwindow\n() -> none\nmain torch-volpy gui window.\nmain torch-volpy gui window.\nqmainwindow",
      "signature": "() -> None",
      "source": {
        "endLine": 6175,
        "line": 3852,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Main torch-volpy GUI window."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "__init__",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow.__init__",
      "searchText": "method\n__init__\ntorch_volpy.gui.qt_app.mainwindow.__init__\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 3897,
        "line": 3854,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_build_ui",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._build_ui",
      "searchText": "method\n_build_ui\ntorch_volpy.gui.qt_app.mainwindow._build_ui\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 3930,
        "line": 3899,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_build_top_bar",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._build_top_bar",
      "searchText": "method\n_build_top_bar\ntorch_volpy.gui.qt_app.mainwindow._build_top_bar\n(self) -> qwidget",
      "signature": "(self) -> QWidget",
      "source": {
        "endLine": 3956,
        "line": 3932,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_build_center_workspace",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._build_center_workspace",
      "searchText": "method\n_build_center_workspace\ntorch_volpy.gui.qt_app.mainwindow._build_center_workspace\n(self) -> qwidget",
      "signature": "(self) -> QWidget",
      "source": {
        "endLine": 3965,
        "line": 3958,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_build_movie_view_card",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._build_movie_view_card",
      "searchText": "method\n_build_movie_view_card\ntorch_volpy.gui.qt_app.mainwindow._build_movie_view_card\n(self) -> qframe",
      "signature": "(self) -> QFrame",
      "source": {
        "endLine": 4023,
        "line": 3967,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_build_roi_tool_island",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._build_roi_tool_island",
      "searchText": "method\n_build_roi_tool_island\ntorch_volpy.gui.qt_app.mainwindow._build_roi_tool_island\n(self, parent: qwidget) -> roitoolisland",
      "signature": "(self, parent: QWidget) -> RoiToolIsland",
      "source": {
        "endLine": 4051,
        "line": 4025,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_build_trace_window",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._build_trace_window",
      "searchText": "method\n_build_trace_window\ntorch_volpy.gui.qt_app.mainwindow._build_trace_window\n(self) -> tracewindow",
      "signature": "(self) -> TraceWindow",
      "source": {
        "endLine": 4136,
        "line": 4053,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_build_inspector_panel",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._build_inspector_panel",
      "searchText": "method\n_build_inspector_panel\ntorch_volpy.gui.qt_app.mainwindow._build_inspector_panel\n(self) -> qwidget",
      "signature": "(self) -> QWidget",
      "source": {
        "endLine": 4225,
        "line": 4138,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_build_footer_bar",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._build_footer_bar",
      "searchText": "method\n_build_footer_bar\ntorch_volpy.gui.qt_app.mainwindow._build_footer_bar\n(self) -> qwidget",
      "signature": "(self) -> QWidget",
      "source": {
        "endLine": 4266,
        "line": 4227,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_resize_to_available_screen",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._resize_to_available_screen",
      "searchText": "method\n_resize_to_available_screen\ntorch_volpy.gui.qt_app.mainwindow._resize_to_available_screen\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 4279,
        "line": 4268,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_reset_movie_view",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._reset_movie_view",
      "searchText": "method\n_reset_movie_view\ntorch_volpy.gui.qt_app.mainwindow._reset_movie_view\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 4286,
        "line": 4281,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_set_movie_fit_mode",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._set_movie_fit_mode",
      "searchText": "method\n_set_movie_fit_mode\ntorch_volpy.gui.qt_app.mainwindow._set_movie_fit_mode\n(self, mode: str) -> none",
      "signature": "(self, mode: str) -> None",
      "source": {
        "endLine": 4293,
        "line": 4288,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_set_movie_actual_size",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._set_movie_actual_size",
      "searchText": "method\n_set_movie_actual_size\ntorch_volpy.gui.qt_app.mainwindow._set_movie_actual_size\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 4300,
        "line": 4295,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_zoom_movie_view",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._zoom_movie_view",
      "searchText": "method\n_zoom_movie_view\ntorch_volpy.gui.qt_app.mainwindow._zoom_movie_view\n(self, factor: float) -> none",
      "signature": "(self, factor: float) -> None",
      "source": {
        "endLine": 4309,
        "line": 4302,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_refresh_zoom_label",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._refresh_zoom_label",
      "searchText": "method\n_refresh_zoom_label\ntorch_volpy.gui.qt_app.mainwindow._refresh_zoom_label\n(self, zoom_percent: optional[float] = none) -> none",
      "signature": "(self, zoom_percent: Optional[float] = None) -> None",
      "source": {
        "endLine": 4313,
        "line": 4311,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_set_roi_tool_mode",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._set_roi_tool_mode",
      "searchText": "method\n_set_roi_tool_mode\ntorch_volpy.gui.qt_app.mainwindow._set_roi_tool_mode\n(self, mode: str) -> none",
      "signature": "(self, mode: str) -> None",
      "source": {
        "endLine": 4323,
        "line": 4315,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_set_movie_display_mode",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._set_movie_display_mode",
      "searchText": "method\n_set_movie_display_mode\ntorch_volpy.gui.qt_app.mainwindow._set_movie_display_mode\n(self, mode: str) -> none",
      "signature": "(self, mode: str) -> None",
      "source": {
        "endLine": 4327,
        "line": 4325,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_show_trace_window",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._show_trace_window",
      "searchText": "method\n_show_trace_window\ntorch_volpy.gui.qt_app.mainwindow._show_trace_window\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 4334,
        "line": 4329,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_hide_trace_window",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._hide_trace_window",
      "searchText": "method\n_hide_trace_window\ntorch_volpy.gui.qt_app.mainwindow._hide_trace_window\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 4339,
        "line": 4336,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_toggle_trace_window",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._toggle_trace_window",
      "searchText": "method\n_toggle_trace_window\ntorch_volpy.gui.qt_app.mainwindow._toggle_trace_window\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 4345,
        "line": 4341,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_update_trace_window_button",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._update_trace_window_button",
      "searchText": "method\n_update_trace_window_button\ntorch_volpy.gui.qt_app.mainwindow._update_trace_window_button\n(self, visible: optional[bool] = none) -> none",
      "signature": "(self, visible: Optional[bool] = None) -> None",
      "source": {
        "endLine": 4352,
        "line": 4347,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_set_trace_view_mode",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._set_trace_view_mode",
      "searchText": "method\n_set_trace_view_mode\ntorch_volpy.gui.qt_app.mainwindow._set_trace_view_mode\n(self, mode: str) -> none",
      "signature": "(self, mode: str) -> None",
      "source": {
        "endLine": 4363,
        "line": 4354,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_set_trace_display_scope",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._set_trace_display_scope",
      "searchText": "method\n_set_trace_display_scope\ntorch_volpy.gui.qt_app.mainwindow._set_trace_display_scope\n(self, scope: str) -> none",
      "signature": "(self, scope: str) -> None",
      "source": {
        "endLine": 4370,
        "line": 4365,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_extraction_setting_changed",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._extraction_setting_changed",
      "searchText": "method\n_extraction_setting_changed\ntorch_volpy.gui.qt_app.mainwindow._extraction_setting_changed\n(self, checked: bool) -> none",
      "signature": "(self, checked: bool) -> None",
      "source": {
        "endLine": 4382,
        "line": 4372,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_update_trace_scope_buttons",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._update_trace_scope_buttons",
      "searchText": "method\n_update_trace_scope_buttons\ntorch_volpy.gui.qt_app.mainwindow._update_trace_scope_buttons\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 4389,
        "line": 4384,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_trace_result_for_scope",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._trace_result_for_scope",
      "searchText": "method\n_trace_result_for_scope\ntorch_volpy.gui.qt_app.mainwindow._trace_result_for_scope\n(self) -> optional[dict]",
      "signature": "(self) -> Optional[dict]",
      "source": {
        "endLine": 4394,
        "line": 4391,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_set_last_batch_results",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._set_last_batch_results",
      "searchText": "method\n_set_last_batch_results\ntorch_volpy.gui.qt_app.mainwindow._set_last_batch_results\n(self, results: list[dict]) -> none",
      "signature": "(self, results: list[dict]) -> None",
      "source": {
        "endLine": 4399,
        "line": 4396,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.gui.qt_app",
      "name": "_with_result_colors",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._with_result_colors",
      "searchText": "staticmethod\n_with_result_colors\ntorch_volpy.gui.qt_app.mainwindow._with_result_colors\n(results: list[dict]) -> list[dict]\nstaticmethod",
      "signature": "(results: list[dict]) -> list[dict]",
      "source": {
        "endLine": 4405,
        "line": 4402,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_cached_combined_trace_result",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._cached_combined_trace_result",
      "searchText": "method\n_cached_combined_trace_result\ntorch_volpy.gui.qt_app.mainwindow._cached_combined_trace_result\n(self, results: list[dict]) -> dict",
      "signature": "(self, results: list[dict]) -> dict",
      "source": {
        "endLine": 4412,
        "line": 4407,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_all_roi_trace_result",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._all_roi_trace_result",
      "searchText": "method\n_all_roi_trace_result\ntorch_volpy.gui.qt_app.mainwindow._all_roi_trace_result\n(self) -> optional[dict]",
      "signature": "(self) -> Optional[dict]",
      "source": {
        "endLine": 4423,
        "line": 4414,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_selected_roi_trace_result",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._selected_roi_trace_result",
      "searchText": "method\n_selected_roi_trace_result\ntorch_volpy.gui.qt_app.mainwindow._selected_roi_trace_result\n(self) -> optional[dict]",
      "signature": "(self) -> Optional[dict]",
      "source": {
        "endLine": 4438,
        "line": 4425,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_refresh_trace_display_for_scope",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._refresh_trace_display_for_scope",
      "searchText": "method\n_refresh_trace_display_for_scope\ntorch_volpy.gui.qt_app.mainwindow._refresh_trace_display_for_scope\n(self) -> bool",
      "signature": "(self) -> bool",
      "source": {
        "endLine": 4460,
        "line": 4440,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_set_inspector_view_mode",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._set_inspector_view_mode",
      "searchText": "method\n_set_inspector_view_mode\ntorch_volpy.gui.qt_app.mainwindow._set_inspector_view_mode\n(self, mode: str) -> none",
      "signature": "(self, mode: str) -> None",
      "source": {
        "endLine": 4466,
        "line": 4462,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_set_trace_controls_enabled",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._set_trace_controls_enabled",
      "searchText": "method\n_set_trace_controls_enabled\ntorch_volpy.gui.qt_app.mainwindow._set_trace_controls_enabled\n(self, enabled: bool) -> none",
      "signature": "(self, enabled: bool) -> None",
      "source": {
        "endLine": 4475,
        "line": 4468,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_sync_trace_window_controls",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._sync_trace_window_controls",
      "searchText": "method\n_sync_trace_window_controls\ntorch_volpy.gui.qt_app.mainwindow._sync_trace_window_controls\n(self, xmin: optional[float] = none, xmax: optional[float] = none) -> none",
      "signature": "(self, xmin: Optional[float] = None, xmax: Optional[float] = None) -> None",
      "source": {
        "endLine": 4495,
        "line": 4477,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_apply_trace_time_window",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._apply_trace_time_window",
      "searchText": "method\n_apply_trace_time_window\ntorch_volpy.gui.qt_app.mainwindow._apply_trace_time_window\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 4504,
        "line": 4497,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_reset_trace_view",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._reset_trace_view",
      "searchText": "method\n_reset_trace_view\ntorch_volpy.gui.qt_app.mainwindow._reset_trace_view\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 4507,
        "line": 4506,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Prompt for a path and save the current trace plot as PNG.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "save_trace_png_dialog",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow.save_trace_png_dialog",
      "searchText": "method\nsave_trace_png_dialog\ntorch_volpy.gui.qt_app.mainwindow.save_trace_png_dialog\n(self) -> none\nprompt for a path and save the current trace plot as png.\nprompt for a path and save the current trace plot as png.",
      "signature": "(self) -> None",
      "source": {
        "endLine": 4529,
        "line": 4509,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Prompt for a path and save the current trace plot as PNG."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_run_primary_action",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._run_primary_action",
      "searchText": "method\n_run_primary_action\ntorch_volpy.gui.qt_app.mainwindow._run_primary_action\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 4538,
        "line": 4531,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_show_help_dialog",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._show_help_dialog",
      "searchText": "method\n_show_help_dialog\ntorch_volpy.gui.qt_app.mainwindow._show_help_dialog\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 4545,
        "line": 4540,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_update_top_actions",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._update_top_actions",
      "searchText": "method\n_update_top_actions\ntorch_volpy.gui.qt_app.mainwindow._update_top_actions\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 4553,
        "line": 4547,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_refresh_roi_inspector",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._refresh_roi_inspector",
      "searchText": "method\n_refresh_roi_inspector\ntorch_volpy.gui.qt_app.mainwindow._refresh_roi_inspector\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 4705,
        "line": 4555,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_build_controls",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._build_controls",
      "searchText": "method\n_build_controls\ntorch_volpy.gui.qt_app.mainwindow._build_controls\n(self) -> qwidget",
      "signature": "(self) -> QWidget",
      "source": {
        "endLine": 4891,
        "line": 4707,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_selected_device",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._selected_device",
      "searchText": "method\n_selected_device\ntorch_volpy.gui.qt_app.mainwindow._selected_device\n(self) -> str",
      "signature": "(self) -> str",
      "source": {
        "endLine": 4897,
        "line": 4893,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_connect_signals",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._connect_signals",
      "searchText": "method\n_connect_signals\ntorch_volpy.gui.qt_app.mainwindow._connect_signals\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 4944,
        "line": 4899,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_set_playback_button_active",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._set_playback_button_active",
      "searchText": "method\n_set_playback_button_active\ntorch_volpy.gui.qt_app.mainwindow._set_playback_button_active\n(self, active: bool) -> none",
      "signature": "(self, active: bool) -> None",
      "source": {
        "endLine": 4948,
        "line": 4946,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_set_controls_enabled",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._set_controls_enabled",
      "searchText": "method\n_set_controls_enabled\ntorch_volpy.gui.qt_app.mainwindow._set_controls_enabled\n(self, enabled: bool) -> none",
      "signature": "(self, enabled: bool) -> None",
      "source": {
        "endLine": 4980,
        "line": 4950,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_has_extractable_rois",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._has_extractable_rois",
      "searchText": "method\n_has_extractable_rois\ntorch_volpy.gui.qt_app.mainwindow._has_extractable_rois\n(self) -> bool",
      "signature": "(self) -> bool",
      "source": {
        "endLine": 4983,
        "line": 4982,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_update_roi_undo_button",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._update_roi_undo_button",
      "searchText": "method\n_update_roi_undo_button\ntorch_volpy.gui.qt_app.mainwindow._update_roi_undo_button\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 4988,
        "line": 4985,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_clear_roi_mask_history",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._clear_roi_mask_history",
      "searchText": "method\n_clear_roi_mask_history\ntorch_volpy.gui.qt_app.mainwindow._clear_roi_mask_history\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 4992,
        "line": 4990,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_push_roi_mask_history",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._push_roi_mask_history",
      "searchText": "method\n_push_roi_mask_history\ntorch_volpy.gui.qt_app.mainwindow._push_roi_mask_history\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 4999,
        "line": 4994,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_set_extraction_controls_enabled",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._set_extraction_controls_enabled",
      "searchText": "method\n_set_extraction_controls_enabled\ntorch_volpy.gui.qt_app.mainwindow._set_extraction_controls_enabled\n(self, enabled: bool) -> none",
      "signature": "(self, enabled: bool) -> None",
      "source": {
        "endLine": 5011,
        "line": 5001,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_set_segmentation_controls_enabled",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._set_segmentation_controls_enabled",
      "searchText": "method\n_set_segmentation_controls_enabled\ntorch_volpy.gui.qt_app.mainwindow._set_segmentation_controls_enabled\n(self, enabled: bool) -> none",
      "signature": "(self, enabled: bool) -> None",
      "source": {
        "endLine": 5024,
        "line": 5013,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_reset_loaded_movie_state",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._reset_loaded_movie_state",
      "searchText": "method\n_reset_loaded_movie_state\ntorch_volpy.gui.qt_app.mainwindow._reset_loaded_movie_state\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 5075,
        "line": 5026,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Prompt the user to choose and open a movie file.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "open_movie_dialog",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow.open_movie_dialog",
      "searchText": "method\nopen_movie_dialog\ntorch_volpy.gui.qt_app.mainwindow.open_movie_dialog\n(self) -> none\nprompt the user to choose and open a movie file.\nprompt the user to choose and open a movie file.",
      "signature": "(self) -> None",
      "source": {
        "endLine": 5091,
        "line": 5077,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Prompt the user to choose and open a movie file."
    },
    {
      "decorators": [],
      "docstring": "Preprocess a source movie and load the corrected result.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "preprocess_and_load_movie",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow.preprocess_and_load_movie",
      "searchText": "method\npreprocess_and_load_movie\ntorch_volpy.gui.qt_app.mainwindow.preprocess_and_load_movie\n(self, path: str) -> none\npreprocess a source movie and load the corrected result.\npreprocess a source movie and load the corrected result.",
      "signature": "(self, path: str) -> None",
      "source": {
        "endLine": 5132,
        "line": 5093,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Preprocess a source movie and load the corrected result."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_preprocess_progress",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._preprocess_progress",
      "searchText": "method\n_preprocess_progress\ntorch_volpy.gui.qt_app.mainwindow._preprocess_progress\n(self, value: int, message: str) -> none",
      "signature": "(self, value: int, message: str) -> None",
      "source": {
        "endLine": 5136,
        "line": 5134,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_preprocess_finished",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._preprocess_finished",
      "searchText": "method\n_preprocess_finished\ntorch_volpy.gui.qt_app.mainwindow._preprocess_finished\n(self, corrected_path: str) -> none",
      "signature": "(self, corrected_path: str) -> None",
      "source": {
        "endLine": 5144,
        "line": 5138,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_preprocess_failed",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._preprocess_failed",
      "searchText": "method\n_preprocess_failed\ntorch_volpy.gui.qt_app.mainwindow._preprocess_failed\n(self, message: str) -> none",
      "signature": "(self, message: str) -> None",
      "source": {
        "endLine": 5150,
        "line": 5146,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Load a movie into the GUI state and viewer.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "load_movie",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow.load_movie",
      "searchText": "method\nload_movie\ntorch_volpy.gui.qt_app.mainwindow.load_movie\n(self, path: str) -> none\nload a movie into the gui state and viewer.\nload a movie into the gui state and viewer.",
      "signature": "(self, path: str) -> None",
      "source": {
        "endLine": 5219,
        "line": 5152,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Load a movie into the GUI state and viewer."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_read_rgb_display_frame",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._read_rgb_display_frame",
      "searchText": "method\n_read_rgb_display_frame\ntorch_volpy.gui.qt_app.mainwindow._read_rgb_display_frame\n(self, frame_index: int) -> np.ndarray",
      "signature": "(self, frame_index: int) -> np.ndarray",
      "source": {
        "endLine": 5241,
        "line": 5221,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Display the current movie frame and synchronized overlays.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "show_frame",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow.show_frame",
      "searchText": "method\nshow_frame\ntorch_volpy.gui.qt_app.mainwindow.show_frame\n(self, frame_index: int) -> none\ndisplay the current movie frame and synchronized overlays.\ndisplay the current movie frame and synchronized overlays.",
      "signature": "(self, frame_index: int) -> None",
      "source": {
        "endLine": 5263,
        "line": 5243,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Display the current movie frame and synchronized overlays."
    },
    {
      "decorators": [],
      "docstring": "Start or stop movie playback.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "toggle_playback",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow.toggle_playback",
      "searchText": "method\ntoggle_playback\ntorch_volpy.gui.qt_app.mainwindow.toggle_playback\n(self) -> none\nstart or stop movie playback.\nstart or stop movie playback.",
      "signature": "(self) -> None",
      "source": {
        "endLine": 5277,
        "line": 5265,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Start or stop movie playback."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_update_timer_interval",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._update_timer_interval",
      "searchText": "method\n_update_timer_interval\ntorch_volpy.gui.qt_app.mainwindow._update_timer_interval\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 5283,
        "line": 5279,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_effective_playback_fps",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._effective_playback_fps",
      "searchText": "method\n_effective_playback_fps\ntorch_volpy.gui.qt_app.mainwindow._effective_playback_fps\n(self) -> float",
      "signature": "(self) -> float",
      "source": {
        "endLine": 5289,
        "line": 5285,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_advance_frame",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._advance_frame",
      "searchText": "method\n_advance_frame\ntorch_volpy.gui.qt_app.mainwindow._advance_frame\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 5315,
        "line": 5291,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Prompt the user to select a Cellpose model file.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "browse_cellpose_model",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow.browse_cellpose_model",
      "searchText": "method\nbrowse_cellpose_model\ntorch_volpy.gui.qt_app.mainwindow.browse_cellpose_model\n(self) -> none\nprompt the user to select a cellpose model file.\nprompt the user to select a cellpose model file.",
      "signature": "(self) -> None",
      "source": {
        "endLine": 5328,
        "line": 5317,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Prompt the user to select a Cellpose model file."
    },
    {
      "decorators": [],
      "docstring": "Prompt the user to load an ROI mask file.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "load_mask_dialog",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow.load_mask_dialog",
      "searchText": "method\nload_mask_dialog\ntorch_volpy.gui.qt_app.mainwindow.load_mask_dialog\n(self) -> none\nprompt the user to load an roi mask file.\nprompt the user to load an roi mask file.",
      "signature": "(self) -> None",
      "source": {
        "endLine": 5361,
        "line": 5330,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Prompt the user to load an ROI mask file."
    },
    {
      "decorators": [],
      "docstring": "Run Cellpose and load the generated ROI mask.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "run_cellpose_segmentation",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow.run_cellpose_segmentation",
      "searchText": "method\nrun_cellpose_segmentation\ntorch_volpy.gui.qt_app.mainwindow.run_cellpose_segmentation\n(self) -> none\nrun cellpose and load the generated roi mask.\nrun cellpose and load the generated roi mask.",
      "signature": "(self) -> None",
      "source": {
        "endLine": 5408,
        "line": 5363,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Run Cellpose and load the generated ROI mask."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_clear_trace_state_for_new_roi_mask",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._clear_trace_state_for_new_roi_mask",
      "searchText": "method\n_clear_trace_state_for_new_roi_mask\ntorch_volpy.gui.qt_app.mainwindow._clear_trace_state_for_new_roi_mask\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 5429,
        "line": 5410,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_apply_roi_mask",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._apply_roi_mask",
      "searchText": "method\n_apply_roi_mask\ntorch_volpy.gui.qt_app.mainwindow._apply_roi_mask\n(self, mask: np.ndarray) -> np.ndarray",
      "signature": "(self, mask: np.ndarray) -> np.ndarray",
      "source": {
        "endLine": 5439,
        "line": 5431,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_set_roi_mask_state",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._set_roi_mask_state",
      "searchText": "method\n_set_roi_mask_state\ntorch_volpy.gui.qt_app.mainwindow._set_roi_mask_state\n(self, mask: optional[np.ndarray], *, selected_roi_id: optional[int] = none) -> np.ndarray",
      "signature": "(self, mask: Optional[np.ndarray], *, selected_roi_id: Optional[int] = None) -> np.ndarray",
      "source": {
        "endLine": 5477,
        "line": 5441,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_undo_roi_mask_edit",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._undo_roi_mask_edit",
      "searchText": "method\n_undo_roi_mask_edit\ntorch_volpy.gui.qt_app.mainwindow._undo_roi_mask_edit\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 5493,
        "line": 5479,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_add_drawn_roi",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._add_drawn_roi",
      "searchText": "method\n_add_drawn_roi\ntorch_volpy.gui.qt_app.mainwindow._add_drawn_roi\n(self, mask: np.ndarray, metadata: dict) -> none",
      "signature": "(self, mask: np.ndarray, metadata: dict) -> None",
      "source": {
        "endLine": 5545,
        "line": 5495,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_segmentation_finished",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._segmentation_finished",
      "searchText": "method\n_segmentation_finished\ntorch_volpy.gui.qt_app.mainwindow._segmentation_finished\n(self, result: dict) -> none",
      "signature": "(self, result: dict) -> None",
      "source": {
        "endLine": 5554,
        "line": 5547,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_segmentation_failed",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._segmentation_failed",
      "searchText": "method\n_segmentation_failed\ntorch_volpy.gui.qt_app.mainwindow._segmentation_failed\n(self, message: str) -> none",
      "signature": "(self, message: str) -> None",
      "source": {
        "endLine": 5561,
        "line": 5556,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_update_roi_overlay",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._update_roi_overlay",
      "searchText": "method\n_update_roi_overlay\ntorch_volpy.gui.qt_app.mainwindow._update_roi_overlay\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 5567,
        "line": 5563,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_select_roi",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._select_roi",
      "searchText": "method\n_select_roi\ntorch_volpy.gui.qt_app.mainwindow._select_roi\n(self, roi_id: int) -> none",
      "signature": "(self, roi_id: int) -> None",
      "source": {
        "endLine": 5584,
        "line": 5569,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_clear_roi_selection",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._clear_roi_selection",
      "searchText": "method\n_clear_roi_selection\ntorch_volpy.gui.qt_app.mainwindow._clear_roi_selection\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 5595,
        "line": 5586,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_trace_roi_double_clicked",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._trace_roi_double_clicked",
      "searchText": "method\n_trace_roi_double_clicked\ntorch_volpy.gui.qt_app.mainwindow._trace_roi_double_clicked\n(self, roi_id: int) -> none",
      "signature": "(self, roi_id: int) -> None",
      "source": {
        "endLine": 5600,
        "line": 5597,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_advanced_options_for_method",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._advanced_options_for_method",
      "searchText": "method\n_advanced_options_for_method\ntorch_volpy.gui.qt_app.mainwindow._advanced_options_for_method\n(self, method: str) -> dict[str, any]",
      "signature": "(self, method: str) -> dict[str, Any]",
      "source": {
        "endLine": 5605,
        "line": 5602,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Open the advanced extraction options dialog.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "open_advanced_options_dialog",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow.open_advanced_options_dialog",
      "searchText": "method\nopen_advanced_options_dialog\ntorch_volpy.gui.qt_app.mainwindow.open_advanced_options_dialog\n(self) -> none\nopen the advanced extraction options dialog.\nopen the advanced extraction options dialog.",
      "signature": "(self) -> None",
      "source": {
        "endLine": 5749,
        "line": 5607,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Open the advanced extraction options dialog."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_current_extraction_channel",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._current_extraction_channel",
      "searchText": "method\n_current_extraction_channel\ntorch_volpy.gui.qt_app.mainwindow._current_extraction_channel\n(self) -> optional[int]",
      "signature": "(self) -> Optional[int]",
      "source": {
        "endLine": 5754,
        "line": 5751,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_roi_mask_fingerprint",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._roi_mask_fingerprint",
      "searchText": "method\n_roi_mask_fingerprint\ntorch_volpy.gui.qt_app.mainwindow._roi_mask_fingerprint\n(self, roi_id: int) -> optional[tuple]",
      "signature": "(self, roi_id: int) -> Optional[tuple]",
      "source": {
        "endLine": 5782,
        "line": 5756,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_current_roi_cache_scopes",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._current_roi_cache_scopes",
      "searchText": "method\n_current_roi_cache_scopes\ntorch_volpy.gui.qt_app.mainwindow._current_roi_cache_scopes\n(self) -> set[tuple]",
      "signature": "(self) -> set[tuple]",
      "source": {
        "endLine": 5794,
        "line": 5784,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_prune_trace_cache_for_current_roi_mask",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._prune_trace_cache_for_current_roi_mask",
      "searchText": "method\n_prune_trace_cache_for_current_roi_mask\ntorch_volpy.gui.qt_app.mainwindow._prune_trace_cache_for_current_roi_mask\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 5806,
        "line": 5796,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_current_extraction_key",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._current_extraction_key",
      "searchText": "method\n_current_extraction_key\ntorch_volpy.gui.qt_app.mainwindow._current_extraction_key\n(self, roi_id: optional[int] = none) -> optional[tuple]",
      "signature": "(self, roi_id: Optional[int] = None) -> Optional[tuple]",
      "source": {
        "endLine": 5833,
        "line": 5808,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_show_trace_result",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._show_trace_result",
      "searchText": "method\n_show_trace_result\ntorch_volpy.gui.qt_app.mainwindow._show_trace_result\n(self, result: dict, *, status: str) -> none",
      "signature": "(self, result: dict, *, status: str) -> None",
      "source": {
        "endLine": 5842,
        "line": 5835,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_remove_stale_trace_cache_entries",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._remove_stale_trace_cache_entries",
      "searchText": "method\n_remove_stale_trace_cache_entries\ntorch_volpy.gui.qt_app.mainwindow._remove_stale_trace_cache_entries\n(self, cache_key: optional[tuple]) -> none",
      "signature": "(self, cache_key: Optional[tuple]) -> None",
      "source": {
        "endLine": 5850,
        "line": 5844,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Extract traces for all available ROI labels.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "extract_all_traces",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow.extract_all_traces",
      "searchText": "method\nextract_all_traces\ntorch_volpy.gui.qt_app.mainwindow.extract_all_traces\n(self) -> none\nextract traces for all available roi labels.\nextract traces for all available roi labels.",
      "signature": "(self) -> None",
      "source": {
        "endLine": 5862,
        "line": 5852,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Extract traces for all available ROI labels."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_start_extraction",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._start_extraction",
      "searchText": "method\n_start_extraction\ntorch_volpy.gui.qt_app.mainwindow._start_extraction\n(self, roi_ids: list[int], *, all_rois: bool) -> none",
      "signature": "(self, roi_ids: list[int], *, all_rois: bool) -> None",
      "source": {
        "endLine": 5948,
        "line": 5864,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_extraction_progress",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._extraction_progress",
      "searchText": "method\n_extraction_progress\ntorch_volpy.gui.qt_app.mainwindow._extraction_progress\n(self, value: int, message: str) -> none",
      "signature": "(self, value: int, message: str) -> None",
      "source": {
        "endLine": 5953,
        "line": 5950,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_result_for_selected_roi",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._result_for_selected_roi",
      "searchText": "method\n_result_for_selected_roi\ntorch_volpy.gui.qt_app.mainwindow._result_for_selected_roi\n(self, results: list[dict]) -> optional[dict]",
      "signature": "(self, results: list[dict]) -> Optional[dict]",
      "source": {
        "endLine": 5962,
        "line": 5955,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.gui.qt_app",
      "name": "_stack_result_field",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._stack_result_field",
      "searchText": "staticmethod\n_stack_result_field\ntorch_volpy.gui.qt_app.mainwindow._stack_result_field\n(results: list[dict], field: str) -> tuple[np.ndarray, list[str], list[int]]\nstaticmethod",
      "signature": "(results: list[dict], field: str) -> tuple[np.ndarray, list[str], list[int]]",
      "source": {
        "endLine": 5995,
        "line": 5965,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.gui.qt_app",
      "name": "_stack_spike_trains_for_trace_columns",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._stack_spike_trains_for_trace_columns",
      "searchText": "staticmethod\n_stack_spike_trains_for_trace_columns\ntorch_volpy.gui.qt_app.mainwindow._stack_spike_trains_for_trace_columns\n(results: list[dict]) -> list[np.ndarray]\nstaticmethod",
      "signature": "(results: list[dict]) -> list[np.ndarray]",
      "source": {
        "endLine": 6011,
        "line": 5998,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_combined_trace_result",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._combined_trace_result",
      "searchText": "method\n_combined_trace_result\ntorch_volpy.gui.qt_app.mainwindow._combined_trace_result\n(self, results: list[dict]) -> dict",
      "signature": "(self, results: list[dict]) -> dict",
      "source": {
        "endLine": 6050,
        "line": 6013,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_extraction_finished",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._extraction_finished",
      "searchText": "method\n_extraction_finished\ntorch_volpy.gui.qt_app.mainwindow._extraction_finished\n(self, payload: dict) -> none",
      "signature": "(self, payload: dict) -> None",
      "source": {
        "endLine": 6088,
        "line": 6052,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_extraction_failed",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._extraction_failed",
      "searchText": "method\n_extraction_failed\ntorch_volpy.gui.qt_app.mainwindow._extraction_failed\n(self, message: str) -> none",
      "signature": "(self, message: str) -> None",
      "source": {
        "endLine": 6097,
        "line": 6090,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_cached_results_for_roi_ids",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._cached_results_for_roi_ids",
      "searchText": "method\n_cached_results_for_roi_ids\ntorch_volpy.gui.qt_app.mainwindow._cached_results_for_roi_ids\n(self, roi_ids: list[int]) -> list[dict]",
      "signature": "(self, roi_ids: list[int]) -> list[dict]",
      "source": {
        "endLine": 6106,
        "line": 6099,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "_cached_results_for_all_rois",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._cached_results_for_all_rois",
      "searchText": "method\n_cached_results_for_all_rois\ntorch_volpy.gui.qt_app.mainwindow._cached_results_for_all_rois\n(self) -> list[dict]",
      "signature": "(self) -> list[dict]",
      "source": {
        "endLine": 6111,
        "line": 6108,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.gui.qt_app",
      "name": "_csv_columns_for_results",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": false,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow._csv_columns_for_results",
      "searchText": "staticmethod\n_csv_columns_for_results\ntorch_volpy.gui.qt_app.mainwindow._csv_columns_for_results\n(results: list[dict]) -> tuple[np.ndarray, list[str]]\nstaticmethod",
      "signature": "(results: list[dict]) -> tuple[np.ndarray, list[str]]",
      "source": {
        "endLine": 6143,
        "line": 6114,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Prompt for a path and save all extracted traces.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "save_all_traces_dialog",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow.save_all_traces_dialog",
      "searchText": "method\nsave_all_traces_dialog\ntorch_volpy.gui.qt_app.mainwindow.save_all_traces_dialog\n(self) -> none\nprompt for a path and save all extracted traces.\nprompt for a path and save all extracted traces.",
      "signature": "(self) -> None",
      "source": {
        "endLine": 6168,
        "line": 6145,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Prompt for a path and save all extracted traces."
    },
    {
      "decorators": [],
      "docstring": "Clean up movie handles and worker state before closing.",
      "kind": "method",
      "module": "torch_volpy.gui.qt_app",
      "name": "closeEvent",
      "parent": "torch_volpy.gui.qt_app.MainWindow",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.MainWindow.closeEvent",
      "searchText": "method\ncloseevent\ntorch_volpy.gui.qt_app.mainwindow.closeevent\n(self, event) -> none\nclean up movie handles and worker state before closing.\nclean up movie handles and worker state before closing.",
      "signature": "(self, event) -> None",
      "source": {
        "endLine": 6175,
        "line": 6170,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Clean up movie handles and worker state before closing."
    },
    {
      "decorators": [],
      "docstring": "Start the torch-volpy Qt application.",
      "kind": "function",
      "module": "torch_volpy.gui.qt_app",
      "name": "main",
      "public": true,
      "qualifiedName": "torch_volpy.gui.qt_app.main",
      "searchText": "function\nmain\ntorch_volpy.gui.qt_app.main\n(argv: optional[list[str]] = none) -> int\nstart the torch-volpy qt application.\nstart the torch-volpy qt application.",
      "signature": "(argv: Optional[list[str]] = None) -> int",
      "source": {
        "endLine": 6185,
        "line": 6178,
        "path": "src/torch_volpy/gui/qt_app.py"
      },
      "summary": "Start the torch-volpy Qt application."
    },
    {
      "decorators": [],
      "docstring": "",
      "exports": [],
      "kind": "module",
      "module": "torch_volpy.model.Cellpose",
      "name": "torch_volpy.model.Cellpose",
      "public": true,
      "qualifiedName": "torch_volpy.model.Cellpose",
      "searchText": "module\ntorch_volpy.model.cellpose\ntorch_volpy.model.cellpose",
      "signature": "",
      "source": {
        "endLine": 1,
        "line": 1,
        "path": "src/torch_volpy/model/Cellpose.py"
      },
      "summary": ""
    },
    {
      "bases": [],
      "dataclass": false,
      "decorators": [],
      "docstring": "Wrapper around CellposeModel for torch-volpy segmentation workflows.",
      "kind": "class",
      "module": "torch_volpy.model.Cellpose",
      "name": "Cellpose",
      "public": true,
      "qualifiedName": "torch_volpy.model.Cellpose.Cellpose",
      "searchText": "class\ncellpose\ntorch_volpy.model.cellpose.cellpose\n(model_path: union[str, path], gpu: bool = true, batch_size: int = 32, flow_threshold: float = 0.4, cellprob_threshold: float = 0.0, tile_norm_blocksize: int = 0, device: optional[union[str, torch.device]] = none)\nwrapper around cellposemodel for torch-volpy segmentation workflows.\nwrapper around cellposemodel for torch-volpy segmentation workflows.",
      "signature": "(model_path: Union[str, Path], gpu: bool = True, batch_size: int = 32, flow_threshold: float = 0.4, cellprob_threshold: float = 0.0, tile_norm_blocksize: int = 0, device: Optional[Union[str, torch.device]] = None)",
      "source": {
        "endLine": 273,
        "line": 12,
        "path": "src/torch_volpy/model/Cellpose.py"
      },
      "summary": "Wrapper around CellposeModel for torch-volpy segmentation workflows."
    },
    {
      "decorators": [],
      "docstring": "Initialize a Cellpose segmentation model.\n\nArgs:\n    model_path: Path to the pretrained Cellpose model.\n    gpu: Whether to use GPU.\n    batch_size: Batch size passed to model.eval().\n    flow_threshold: Flow threshold for Cellpose.\n    cellprob_threshold: Cell probability threshold for Cellpose.\n    tile_norm_blocksize: Normalization block size.",
      "kind": "method",
      "module": "torch_volpy.model.Cellpose",
      "name": "__init__",
      "parent": "torch_volpy.model.Cellpose.Cellpose",
      "public": false,
      "qualifiedName": "torch_volpy.model.Cellpose.Cellpose.__init__",
      "searchText": "method\n__init__\ntorch_volpy.model.cellpose.cellpose.__init__\n(self, model_path: union[str, path], gpu: bool = true, batch_size: int = 32, flow_threshold: float = 0.4, cellprob_threshold: float = 0.0, tile_norm_blocksize: int = 0, device: optional[union[str, torch.device]] = none)\ninitialize a cellpose segmentation model.\ninitialize a cellpose segmentation model.\n\nargs:\n    model_path: path to the pretrained cellpose model.\n    gpu: whether to use gpu.\n    batch_size: batch size passed to model.eval().\n    flow_threshold: flow threshold for cellpose.\n    cellprob_threshold: cell probability threshold for cellpose.\n    tile_norm_blocksize: normalization block size.",
      "signature": "(self, model_path: Union[str, Path], gpu: bool = True, batch_size: int = 32, flow_threshold: float = 0.4, cellprob_threshold: float = 0.0, tile_norm_blocksize: int = 0, device: Optional[Union[str, torch.device]] = None)",
      "source": {
        "endLine": 56,
        "line": 14,
        "path": "src/torch_volpy/model/Cellpose.py"
      },
      "summary": "Initialize a Cellpose segmentation model."
    },
    {
      "decorators": [],
      "docstring": "Select channels from the image if requested.\nAssumes channel dimension is last: H x W x C",
      "kind": "method",
      "module": "torch_volpy.model.Cellpose",
      "name": "_prepare_image",
      "parent": "torch_volpy.model.Cellpose.Cellpose",
      "public": false,
      "qualifiedName": "torch_volpy.model.Cellpose.Cellpose._prepare_image",
      "searchText": "method\n_prepare_image\ntorch_volpy.model.cellpose.cellpose._prepare_image\n(self, img: np.ndarray, selected_channels: optional[list[int]] = none) -> np.ndarray\nselect channels from the image if requested.\nselect channels from the image if requested.\nassumes channel dimension is last: h x w x c",
      "signature": "(self, img: np.ndarray, selected_channels: Optional[List[int]] = None) -> np.ndarray",
      "source": {
        "endLine": 82,
        "line": 58,
        "path": "src/torch_volpy/model/Cellpose.py"
      },
      "summary": "Select channels from the image if requested."
    },
    {
      "decorators": [],
      "docstring": "Resolve the directory to save outputs into.",
      "kind": "method",
      "module": "torch_volpy.model.Cellpose",
      "name": "_resolve_save_dir",
      "parent": "torch_volpy.model.Cellpose.Cellpose",
      "public": false,
      "qualifiedName": "torch_volpy.model.Cellpose.Cellpose._resolve_save_dir",
      "searchText": "method\n_resolve_save_dir\ntorch_volpy.model.cellpose.cellpose._resolve_save_dir\n(self, image_source: optional[union[str, path]], save_dir: optional[union[str, path]]) -> path\nresolve the directory to save outputs into.\nresolve the directory to save outputs into.",
      "signature": "(self, image_source: Optional[Union[str, Path]], save_dir: Optional[Union[str, Path]]) -> Path",
      "source": {
        "endLine": 98,
        "line": 84,
        "path": "src/torch_volpy/model/Cellpose.py"
      },
      "summary": "Resolve the directory to save outputs into."
    },
    {
      "decorators": [],
      "docstring": "Save mask to disk as a TIFF file.",
      "kind": "method",
      "module": "torch_volpy.model.Cellpose",
      "name": "_save_mask",
      "parent": "torch_volpy.model.Cellpose.Cellpose",
      "public": false,
      "qualifiedName": "torch_volpy.model.Cellpose.Cellpose._save_mask",
      "searchText": "method\n_save_mask\ntorch_volpy.model.cellpose.cellpose._save_mask\n(self, mask: np.ndarray, image_source: optional[union[str, path]], save_dir: optional[union[str, path]], index: int) -> path\nsave mask to disk as a tiff file.\nsave mask to disk as a tiff file.",
      "signature": "(self, mask: np.ndarray, image_source: Optional[Union[str, Path]], save_dir: Optional[Union[str, Path]], index: int) -> Path",
      "source": {
        "endLine": 121,
        "line": 100,
        "path": "src/torch_volpy/model/Cellpose.py"
      },
      "summary": "Save mask to disk as a TIFF file."
    },
    {
      "decorators": [],
      "docstring": "Save Cellpose segmentation visualization to disk,\nwith mask IDs overlaid on subplot (1, 4, 2).",
      "kind": "method",
      "module": "torch_volpy.model.Cellpose",
      "name": "_save_segmentation_plot",
      "parent": "torch_volpy.model.Cellpose.Cellpose",
      "public": false,
      "qualifiedName": "torch_volpy.model.Cellpose.Cellpose._save_segmentation_plot",
      "searchText": "method\n_save_segmentation_plot\ntorch_volpy.model.cellpose.cellpose._save_segmentation_plot\n(self, img: np.ndarray, masks: np.ndarray, flows, image_source: optional[union[str, path]], save_dir: optional[union[str, path]], index: int) -> path\nsave cellpose segmentation visualization to disk,\nsave cellpose segmentation visualization to disk,\nwith mask ids overlaid on subplot (1, 4, 2).",
      "signature": "(self, img: np.ndarray, masks: np.ndarray, flows, image_source: Optional[Union[str, Path]], save_dir: Optional[Union[str, Path]], index: int) -> Path",
      "source": {
        "endLine": 184,
        "line": 123,
        "path": "src/torch_volpy/model/Cellpose.py"
      },
      "summary": "Save Cellpose segmentation visualization to disk,"
    },
    {
      "decorators": [
        "torch.inference_mode"
      ],
      "docstring": "Run segmentation.\n\nArgs:\n    images:\n        A single image path, a single numpy array, a single torch tensor,\n        or a list of image paths / numpy arrays / torch tensors.\n    selected_channels:\n        List of channel indices to keep, e.g. [0, 1, 2].\n        If None, uses the original image as-is.\n    save_to_disk:\n        Whether to save masks to disk.\n    save_dir:\n        Directory to save masks into. Required for numpy/tensor inputs\n        if save_to_disk=True.\n\nReturns:\n    For a single input: mask (torch.Tensor)\n    For multiple inputs: list of masks",
      "kind": "method",
      "module": "torch_volpy.model.Cellpose",
      "name": "build",
      "parent": "torch_volpy.model.Cellpose.Cellpose",
      "public": true,
      "qualifiedName": "torch_volpy.model.Cellpose.Cellpose.build",
      "searchText": "method\nbuild\ntorch_volpy.model.cellpose.cellpose.build\n(self, images: union[str, path, np.ndarray, torch.tensor, list[union[str, path, np.ndarray, torch.tensor]]], selected_channels: optional[list[int]] = none, save_to_disk: bool = false, save_dir: optional[union[str, path]] = none)\nrun segmentation.\nrun segmentation.\n\nargs:\n    images:\n        a single image path, a single numpy array, a single torch tensor,\n        or a list of image paths / numpy arrays / torch tensors.\n    selected_channels:\n        list of channel indices to keep, e.g. [0, 1, 2].\n        if none, uses the original image as-is.\n    save_to_disk:\n        whether to save masks to disk.\n    save_dir:\n        directory to save masks into. required for numpy/tensor inputs\n        if save_to_disk=true.\n\nreturns:\n    for a single input: mask (torch.tensor)\n    for multiple inputs: list of masks\ntorch.inference_mode",
      "signature": "(self, images: Union[str, Path, np.ndarray, torch.Tensor, List[Union[str, Path, np.ndarray, torch.Tensor]]], selected_channels: Optional[List[int]] = None, save_to_disk: bool = False, save_dir: Optional[Union[str, Path]] = None)",
      "source": {
        "endLine": 273,
        "line": 187,
        "path": "src/torch_volpy/model/Cellpose.py"
      },
      "summary": "Run segmentation."
    },
    {
      "decorators": [],
      "docstring": "",
      "exports": [],
      "kind": "module",
      "module": "torch_volpy.model.Summary",
      "name": "torch_volpy.model.Summary",
      "public": true,
      "qualifiedName": "torch_volpy.model.Summary",
      "searchText": "module\ntorch_volpy.model.summary\ntorch_volpy.model.summary",
      "signature": "",
      "source": {
        "endLine": 1,
        "line": 1,
        "path": "src/torch_volpy/model/Summary.py"
      },
      "summary": ""
    },
    {
      "bases": [],
      "dataclass": false,
      "decorators": [],
      "docstring": "Build two 2D summary images from a Movie:\n  1) Mean image\n  2) 8-neighbor correlation image after percentile-baseline removal\n\nAssumptions:\n- movie is an already-created Movie object\n- movie shape is (T, Y, X)\n- build() returns two tensors of shape (Y, X)\n\nMemory behavior:\n- reads one non-overlapping temporal window at a time\n- baseline is computed by sorting spatial tiles across frames\n- correlation image is computed in 2 passes to keep memory low",
      "kind": "class",
      "module": "torch_volpy.model.Summary",
      "name": "Summary",
      "public": true,
      "qualifiedName": "torch_volpy.model.Summary.Summary",
      "searchText": "class\nsummary\ntorch_volpy.model.summary.summary\n(movie, window_size: int = 100, baseline_percentile: float = 8.0, baseline_tile_shape: tuple[int, int] = (128, 128), compute_dtype: torch.dtype = torch.float32, device: str | torch.device = 'cpu', eps: float = 1e-06) -> none\nbuild two 2d summary images from a movie:\nbuild two 2d summary images from a movie:\n  1) mean image\n  2) 8-neighbor correlation image after percentile-baseline removal\n\nassumptions:\n- movie is an already-created movie object\n- movie shape is (t, y, x)\n- build() returns two tensors of shape (y, x)\n\nmemory behavior:\n- reads one non-overlapping temporal window at a time\n- baseline is computed by sorting spatial tiles across frames\n- correlation image is computed in 2 passes to keep memory low",
      "signature": "(movie, window_size: int = 100, baseline_percentile: float = 8.0, baseline_tile_shape: Tuple[int, int] = (128, 128), compute_dtype: torch.dtype = torch.float32, device: str | torch.device = 'cpu', eps: float = 1e-06) -> None",
      "source": {
        "endLine": 225,
        "line": 9,
        "path": "src/torch_volpy/model/Summary.py"
      },
      "summary": "Build two 2D summary images from a Movie:"
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.model.Summary",
      "name": "__init__",
      "parent": "torch_volpy.model.Summary.Summary",
      "public": false,
      "qualifiedName": "torch_volpy.model.Summary.Summary.__init__",
      "searchText": "method\n__init__\ntorch_volpy.model.summary.summary.__init__\n(self, movie, window_size: int = 100, baseline_percentile: float = 8.0, baseline_tile_shape: tuple[int, int] = (128, 128), compute_dtype: torch.dtype = torch.float32, device: str | torch.device = 'cpu', eps: float = 1e-06) -> none",
      "signature": "(self, movie, window_size: int = 100, baseline_percentile: float = 8.0, baseline_tile_shape: Tuple[int, int] = (128, 128), compute_dtype: torch.dtype = torch.float32, device: str | torch.device = 'cpu', eps: float = 1e-06) -> None",
      "source": {
        "endLine": 73,
        "line": 32,
        "path": "src/torch_volpy/model/Summary.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "torch.inference_mode"
      ],
      "docstring": "Returns\n-------\nmean_image : torch.Tensor\n    Shape (Y, X), normalized to zero mean and unit std over pixels\n\ncorr_image : torch.Tensor\n    Shape (Y, X), average temporal correlation with 8 neighbors\n    after percentile-baseline removal, then normalized over pixels",
      "kind": "method",
      "module": "torch_volpy.model.Summary",
      "name": "build",
      "parent": "torch_volpy.model.Summary.Summary",
      "public": true,
      "qualifiedName": "torch_volpy.model.Summary.Summary.build",
      "searchText": "method\nbuild\ntorch_volpy.model.summary.summary.build\n(self) -> tuple[torch.tensor, torch.tensor]\nreturns\nreturns\n-------\nmean_image : torch.tensor\n    shape (y, x), normalized to zero mean and unit std over pixels\n\ncorr_image : torch.tensor\n    shape (y, x), average temporal correlation with 8 neighbors\n    after percentile-baseline removal, then normalized over pixels\ntorch.inference_mode",
      "signature": "(self) -> tuple[torch.Tensor, torch.Tensor]",
      "source": {
        "endLine": 139,
        "line": 76,
        "path": "src/torch_volpy/model/Summary.py"
      },
      "summary": "Returns"
    },
    {
      "decorators": [],
      "docstring": "Iterate over non-overlapping temporal windows:\n[0:window_size], [window_size:2*window_size], ...",
      "kind": "method",
      "module": "torch_volpy.model.Summary",
      "name": "_iter_windows",
      "parent": "torch_volpy.model.Summary.Summary",
      "public": false,
      "qualifiedName": "torch_volpy.model.Summary.Summary._iter_windows",
      "searchText": "method\n_iter_windows\ntorch_volpy.model.summary.summary._iter_windows\n(self)\niterate over non-overlapping temporal windows:\niterate over non-overlapping temporal windows:\n[0:window_size], [window_size:2*window_size], ...",
      "signature": "(self)",
      "source": {
        "endLine": 149,
        "line": 141,
        "path": "src/torch_volpy/model/Summary.py"
      },
      "summary": "Iterate over non-overlapping temporal windows:"
    },
    {
      "decorators": [],
      "docstring": "Compute per-pixel percentile baseline over one temporal window.\n\nTo keep peak memory lower, the sort is done in spatial tiles:\n    tile shape = (T, tile_y, tile_x)\nand sorted only along T.",
      "kind": "method",
      "module": "torch_volpy.model.Summary",
      "name": "_percentile_baseline",
      "parent": "torch_volpy.model.Summary.Summary",
      "public": false,
      "qualifiedName": "torch_volpy.model.Summary.Summary._percentile_baseline",
      "searchText": "method\n_percentile_baseline\ntorch_volpy.model.summary.summary._percentile_baseline\n(self, window: torch.tensor) -> torch.tensor\ncompute per-pixel percentile baseline over one temporal window.\ncompute per-pixel percentile baseline over one temporal window.\n\nto keep peak memory lower, the sort is done in spatial tiles:\n    tile shape = (t, tile_y, tile_x)\nand sorted only along t.",
      "signature": "(self, window: torch.Tensor) -> torch.Tensor",
      "source": {
        "endLine": 174,
        "line": 151,
        "path": "src/torch_volpy/model/Summary.py"
      },
      "summary": "Compute per-pixel percentile baseline over one temporal window."
    },
    {
      "decorators": [],
      "docstring": "Order-statistic index for the requested percentile.\nUses the lower order statistic:\n    floor(p * (n_frames - 1))",
      "kind": "method",
      "module": "torch_volpy.model.Summary",
      "name": "_percentile_index",
      "parent": "torch_volpy.model.Summary.Summary",
      "public": false,
      "qualifiedName": "torch_volpy.model.Summary.Summary._percentile_index",
      "searchText": "method\n_percentile_index\ntorch_volpy.model.summary.summary._percentile_index\n(self, n_frames: int) -> int\norder-statistic index for the requested percentile.\norder-statistic index for the requested percentile.\nuses the lower order statistic:\n    floor(p * (n_frames - 1))",
      "signature": "(self, n_frames: int) -> int",
      "source": {
        "endLine": 186,
        "line": 176,
        "path": "src/torch_volpy/model/Summary.py"
      },
      "summary": "Order-statistic index for the requested percentile."
    },
    {
      "decorators": [],
      "docstring": "Number of valid neighbors for each pixel.\nInterior pixels get 8, borders get fewer.",
      "kind": "method",
      "module": "torch_volpy.model.Summary",
      "name": "_neighbor_count",
      "parent": "torch_volpy.model.Summary.Summary",
      "public": false,
      "qualifiedName": "torch_volpy.model.Summary.Summary._neighbor_count",
      "searchText": "method\n_neighbor_count\ntorch_volpy.model.summary.summary._neighbor_count\n(self, h: int, w: int) -> torch.tensor\nnumber of valid neighbors for each pixel.\nnumber of valid neighbors for each pixel.\ninterior pixels get 8, borders get fewer.",
      "signature": "(self, h: int, w: int) -> torch.Tensor",
      "source": {
        "endLine": 197,
        "line": 188,
        "path": "src/torch_volpy/model/Summary.py"
      },
      "summary": "Number of valid neighbors for each pixel."
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "Returns slices for:\n- center pixels\n- corresponding neighbor pixels",
      "kind": "staticmethod",
      "module": "torch_volpy.model.Summary",
      "name": "_axis_pair",
      "parent": "torch_volpy.model.Summary.Summary",
      "public": false,
      "qualifiedName": "torch_volpy.model.Summary.Summary._axis_pair",
      "searchText": "staticmethod\n_axis_pair\ntorch_volpy.model.summary.summary._axis_pair\n(delta: int, size: int)\nreturns slices for:\nreturns slices for:\n- center pixels\n- corresponding neighbor pixels\nstaticmethod",
      "signature": "(delta: int, size: int)",
      "source": {
        "endLine": 210,
        "line": 200,
        "path": "src/torch_volpy/model/Summary.py"
      },
      "summary": "Returns slices for:"
    },
    {
      "decorators": [
        "classmethod"
      ],
      "docstring": "",
      "kind": "classmethod",
      "module": "torch_volpy.model.Summary",
      "name": "_pair_slices",
      "parent": "torch_volpy.model.Summary.Summary",
      "public": false,
      "qualifiedName": "torch_volpy.model.Summary.Summary._pair_slices",
      "searchText": "classmethod\n_pair_slices\ntorch_volpy.model.summary.summary._pair_slices\n(cls, dy: int, dx: int, h: int, w: int)\nclassmethod",
      "signature": "(cls, dy: int, dx: int, h: int, w: int)",
      "source": {
        "endLine": 216,
        "line": 213,
        "path": "src/torch_volpy/model/Summary.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Normalize a 2D image by subtracting its pixel mean\nand dividing by its pixel std.",
      "kind": "method",
      "module": "torch_volpy.model.Summary",
      "name": "_normalize_image",
      "parent": "torch_volpy.model.Summary.Summary",
      "public": false,
      "qualifiedName": "torch_volpy.model.Summary.Summary._normalize_image",
      "searchText": "method\n_normalize_image\ntorch_volpy.model.summary.summary._normalize_image\n(self, image: torch.tensor) -> torch.tensor\nnormalize a 2d image by subtracting its pixel mean\nnormalize a 2d image by subtracting its pixel mean\nand dividing by its pixel std.",
      "signature": "(self, image: torch.Tensor) -> torch.Tensor",
      "source": {
        "endLine": 225,
        "line": 218,
        "path": "src/torch_volpy/model/Summary.py"
      },
      "summary": "Normalize a 2D image by subtracting its pixel mean"
    },
    {
      "decorators": [],
      "docstring": "",
      "exports": [
        "Cellpose",
        "Summary"
      ],
      "kind": "module",
      "module": "torch_volpy.model",
      "name": "torch_volpy.model",
      "public": true,
      "qualifiedName": "torch_volpy.model",
      "searchText": "module\ntorch_volpy.model\ntorch_volpy.model",
      "signature": "",
      "source": {
        "endLine": 1,
        "line": 1,
        "path": "src/torch_volpy/model/__init__.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "exports": [],
      "kind": "module",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "torch_volpy.motion.MotionCorrect",
      "public": true,
      "qualifiedName": "torch_volpy.motion.MotionCorrect",
      "searchText": "module\ntorch_volpy.motion.motioncorrect\ntorch_volpy.motion.motioncorrect",
      "signature": "",
      "source": {
        "endLine": 1,
        "line": 1,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "bases": [],
      "dataclass": false,
      "decorators": [],
      "docstring": "Build a template, estimate per-frame translational shifts, apply them,\nand save the corrected movie to disk.\n\nWorkflow\n--------\n1) Build template with Template\n2) Estimate shifts with Translation\n3) Apply rigid shifts to each frame\n4) Save corrected movie to HDF5\n\nNotes\n-----\n- Translation is assumed to return correction shifts [dy, dx]\n  that should be applied directly to the frame.\n- Subpixel correction uses batched torch grid_sample, so it runs on GPU\n  when device is a CUDA device.\n- Frames are processed in chunks; the whole movie is never loaded at once.",
      "kind": "class",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "MotionCorrect",
      "public": true,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "searchText": "class\nmotioncorrect\ntorch_volpy.motion.motioncorrect.motioncorrect\n(movie, max_shifts: union[int, tuple[int, int]], frames_per_chunk: int = 256, device: union[str, torch.device] = 'cpu', template = none, shifts: optional[union[np.ndarray, torch.tensor, sequence[sequence[int]]]] = none, template_kwargs: optional[dict[str, any]] = none, translation_kwargs: optional[dict[str, any]] = none, template_strategy: literal['binmedian', 'caiman_rigid'] = 'binmedian', high_pass_filter_size: optional[int] = none, upsample_factor: int = 10, interpolation: literal['integer', 'nearest', 'bilinear', 'bicubic', 'opencv_cubic'] = 'bicubic', padding_mode: literal['zeros', 'border', 'reflection'] = 'border', border_nan: union[bool, literal['copy', 'min', 'nan']] = false, copy_border_strips: bool = false, align_corners: bool = true, clip_interpolated: bool = true, add_to_movie: optional[float] = none, gsig_filt: optional[tuple[float, float]] = none) -> none\nbuild a template, estimate per-frame translational shifts, apply them,\nbuild a template, estimate per-frame translational shifts, apply them,\nand save the corrected movie to disk.\n\nworkflow\n--------\n1) build template with template\n2) estimate shifts with translation\n3) apply rigid shifts to each frame\n4) save corrected movie to hdf5\n\nnotes\n-----\n- translation is assumed to return correction shifts [dy, dx]\n  that should be applied directly to the frame.\n- subpixel correction uses batched torch grid_sample, so it runs on gpu\n  when device is a cuda device.\n- frames are processed in chunks; the whole movie is never loaded at once.",
      "signature": "(movie, max_shifts: Union[int, Tuple[int, int]], frames_per_chunk: int = 256, device: Union[str, torch.device] = 'cpu', template = None, shifts: Optional[Union[np.ndarray, torch.Tensor, Sequence[Sequence[int]]]] = None, template_kwargs: Optional[Dict[str, Any]] = None, translation_kwargs: Optional[Dict[str, Any]] = None, template_strategy: Literal['binmedian', 'caiman_rigid'] = 'binmedian', high_pass_filter_size: Optional[int] = None, upsample_factor: int = 10, interpolation: Literal['integer', 'nearest', 'bilinear', 'bicubic', 'opencv_cubic'] = 'bicubic', padding_mode: Literal['zeros', 'border', 'reflection'] = 'border', border_nan: Union[bool, Literal['copy', 'min', 'nan']] = False, copy_border_strips: bool = False, align_corners: bool = True, clip_interpolated: bool = True, add_to_movie: Optional[float] = None, gsig_filt: Optional[Tuple[float, float]] = None) -> None",
      "source": {
        "endLine": 1628,
        "line": 16,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": "Build a template, estimate per-frame translational shifts, apply them,"
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "__init__",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect.__init__",
      "searchText": "method\n__init__\ntorch_volpy.motion.motioncorrect.motioncorrect.__init__\n(self, movie, max_shifts: union[int, tuple[int, int]], frames_per_chunk: int = 256, device: union[str, torch.device] = 'cpu', template = none, shifts: optional[union[np.ndarray, torch.tensor, sequence[sequence[int]]]] = none, template_kwargs: optional[dict[str, any]] = none, translation_kwargs: optional[dict[str, any]] = none, template_strategy: literal['binmedian', 'caiman_rigid'] = 'binmedian', high_pass_filter_size: optional[int] = none, upsample_factor: int = 10, interpolation: literal['integer', 'nearest', 'bilinear', 'bicubic', 'opencv_cubic'] = 'bicubic', padding_mode: literal['zeros', 'border', 'reflection'] = 'border', border_nan: union[bool, literal['copy', 'min', 'nan']] = false, copy_border_strips: bool = false, align_corners: bool = true, clip_interpolated: bool = true, add_to_movie: optional[float] = none, gsig_filt: optional[tuple[float, float]] = none) -> none",
      "signature": "(self, movie, max_shifts: Union[int, Tuple[int, int]], frames_per_chunk: int = 256, device: Union[str, torch.device] = 'cpu', template = None, shifts: Optional[Union[np.ndarray, torch.Tensor, Sequence[Sequence[int]]]] = None, template_kwargs: Optional[Dict[str, Any]] = None, translation_kwargs: Optional[Dict[str, Any]] = None, template_strategy: Literal['binmedian', 'caiman_rigid'] = 'binmedian', high_pass_filter_size: Optional[int] = None, upsample_factor: int = 10, interpolation: Literal['integer', 'nearest', 'bilinear', 'bicubic', 'opencv_cubic'] = 'bicubic', padding_mode: Literal['zeros', 'border', 'reflection'] = 'border', border_nan: Union[bool, Literal['copy', 'min', 'nan']] = False, copy_border_strips: bool = False, align_corners: bool = True, clip_interpolated: bool = True, add_to_movie: Optional[float] = None, gsig_filt: Optional[Tuple[float, float]] = None) -> None",
      "source": {
        "endLine": 119,
        "line": 37,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_normalize_max_shifts",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._normalize_max_shifts",
      "searchText": "staticmethod\n_normalize_max_shifts\ntorch_volpy.motion.motioncorrect.motioncorrect._normalize_max_shifts\n(max_shifts: union[int, tuple[int, int]]) -> tuple[int, int]\nstaticmethod",
      "signature": "(max_shifts: Union[int, Tuple[int, int]]) -> Tuple[int, int]",
      "source": {
        "endLine": 132,
        "line": 122,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_normalize_gsig_filt",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._normalize_gsig_filt",
      "searchText": "staticmethod\n_normalize_gsig_filt\ntorch_volpy.motion.motioncorrect.motioncorrect._normalize_gsig_filt\n(gsig_filt: optional[sequence[float]]) -> optional[tuple[float, float]]\nstaticmethod",
      "signature": "(gsig_filt: Optional[Sequence[float]]) -> Optional[Tuple[float, float]]",
      "source": {
        "endLine": 153,
        "line": 135,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_normalize_shifts",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._normalize_shifts",
      "searchText": "staticmethod\n_normalize_shifts\ntorch_volpy.motion.motioncorrect.motioncorrect._normalize_shifts\n(shifts: union[np.ndarray, torch.tensor, sequence[sequence[int]]], num_frames: int, allow_subpixel: bool = true) -> torch.tensor\nstaticmethod",
      "signature": "(shifts: Union[np.ndarray, torch.Tensor, Sequence[Sequence[int]]], num_frames: int, allow_subpixel: bool = True) -> torch.Tensor",
      "source": {
        "endLine": 189,
        "line": 156,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_to_numpy",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._to_numpy",
      "searchText": "staticmethod\n_to_numpy\ntorch_volpy.motion.motioncorrect.motioncorrect._to_numpy\n(x)\nstaticmethod",
      "signature": "(x)",
      "source": {
        "endLine": 195,
        "line": 192,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_estimate_movie_min",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._estimate_movie_min",
      "searchText": "method\n_estimate_movie_min\ntorch_volpy.motion.motioncorrect.motioncorrect._estimate_movie_min\n(self, max_frames: int = 400) -> float",
      "signature": "(self, max_frames: int = 400) -> float",
      "source": {
        "endLine": 219,
        "line": 197,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_caiman_highpass_kernel_2d",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._caiman_highpass_kernel_2d",
      "searchText": "staticmethod\n_caiman_highpass_kernel_2d\ntorch_volpy.motion.motioncorrect.motioncorrect._caiman_highpass_kernel_2d\n(gsig_filt: tuple[float, float], *, dtype: torch.dtype, device: torch.device) -> torch.tensor\nstaticmethod",
      "signature": "(gsig_filt: Tuple[float, float], *, dtype: torch.dtype, device: torch.device) -> torch.Tensor",
      "source": {
        "endLine": 251,
        "line": 222,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_opencv_reflect_pad_nchw",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._opencv_reflect_pad_nchw",
      "searchText": "staticmethod\n_opencv_reflect_pad_nchw\ntorch_volpy.motion.motioncorrect.motioncorrect._opencv_reflect_pad_nchw\n(frames_nchw: torch.tensor, pad_y: int, pad_x: int) -> torch.tensor\nstaticmethod",
      "signature": "(frames_nchw: torch.Tensor, pad_y: int, pad_x: int) -> torch.Tensor",
      "source": {
        "endLine": 267,
        "line": 254,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_caiman_high_pass_filter_space_tensor",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._caiman_high_pass_filter_space_tensor",
      "searchText": "staticmethod\n_caiman_high_pass_filter_space_tensor\ntorch_volpy.motion.motioncorrect.motioncorrect._caiman_high_pass_filter_space_tensor\n(img_orig: torch.tensor, gsig_filt: tuple[float, float], *, dtype: torch.dtype = torch.float32, device: optional[union[str, torch.device]] = none) -> torch.tensor\nstaticmethod",
      "signature": "(img_orig: torch.Tensor, gsig_filt: Tuple[float, float], *, dtype: torch.dtype = torch.float32, device: Optional[Union[str, torch.device]] = None) -> torch.Tensor",
      "source": {
        "endLine": 297,
        "line": 270,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_caiman_high_pass_filter_space",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._caiman_high_pass_filter_space",
      "searchText": "staticmethod\n_caiman_high_pass_filter_space\ntorch_volpy.motion.motioncorrect.motioncorrect._caiman_high_pass_filter_space\n(img_orig: np.ndarray, gsig_filt: tuple[float, float]) -> np.ndarray\nstaticmethod",
      "signature": "(img_orig: np.ndarray, gsig_filt: Tuple[float, float]) -> np.ndarray",
      "source": {
        "endLine": 308,
        "line": 300,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_caiman_bin_median_array",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._caiman_bin_median_array",
      "searchText": "staticmethod\n_caiman_bin_median_array\ntorch_volpy.motion.motioncorrect.motioncorrect._caiman_bin_median_array\n(movie: np.ndarray, window: int = 10, exclude_nans: bool = true) -> np.ndarray\nstaticmethod",
      "signature": "(movie: np.ndarray, window: int = 10, exclude_nans: bool = True) -> np.ndarray",
      "source": {
        "endLine": 331,
        "line": 311,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_caiman_upsampled_dft",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._caiman_upsampled_dft",
      "searchText": "staticmethod\n_caiman_upsampled_dft\ntorch_volpy.motion.motioncorrect.motioncorrect._caiman_upsampled_dft\n(data: np.ndarray, upsampled_region_size, upsample_factor = 1, axis_offsets = none) -> np.ndarray\nstaticmethod",
      "signature": "(data: np.ndarray, upsampled_region_size, upsample_factor = 1, axis_offsets = None) -> np.ndarray",
      "source": {
        "endLine": 371,
        "line": 334,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_shift_from_match_response",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._shift_from_match_response",
      "searchText": "staticmethod\n_shift_from_match_response\ntorch_volpy.motion.motioncorrect.motioncorrect._shift_from_match_response\n(res: np.ndarray, *, max_shifts: tuple[int, int]) -> tuple[float, float, float]\nstaticmethod",
      "signature": "(res: np.ndarray, *, max_shifts: Tuple[int, int]) -> Tuple[float, float, float]",
      "source": {
        "endLine": 409,
        "line": 374,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_torch_extract_shifts",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._torch_extract_shifts",
      "searchText": "staticmethod\n_torch_extract_shifts\ntorch_volpy.motion.motioncorrect.motioncorrect._torch_extract_shifts\n(movie: np.ndarray, template: np.ndarray, max_shifts: tuple[int, int], *, device: union[str, torch.device] = 'cpu', batch_size: int = 64, dtype: torch.dtype = torch.float64, eps: float = 1e-12) -> tuple[np.ndarray, np.ndarray]\nstaticmethod",
      "signature": "(movie: np.ndarray, template: np.ndarray, max_shifts: Tuple[int, int], *, device: Union[str, torch.device] = 'cpu', batch_size: int = 64, dtype: torch.dtype = torch.float64, eps: float = 1e-12) -> Tuple[np.ndarray, np.ndarray]",
      "source": {
        "endLine": 478,
        "line": 412,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_build_caiman_search_mask",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._build_caiman_search_mask",
      "searchText": "staticmethod\n_build_caiman_search_mask\ntorch_volpy.motion.motioncorrect.motioncorrect._build_caiman_search_mask\n(height: int, width: int, max_shifts: tuple[int, int], *, device: torch.device) -> torch.tensor\nstaticmethod",
      "signature": "(height: int, width: int, max_shifts: Tuple[int, int], *, device: torch.device) -> torch.Tensor",
      "source": {
        "endLine": 494,
        "line": 481,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_upsampled_dft_batched_caiman",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._upsampled_dft_batched_caiman",
      "searchText": "staticmethod\n_upsampled_dft_batched_caiman\ntorch_volpy.motion.motioncorrect.motioncorrect._upsampled_dft_batched_caiman\n(data: torch.tensor, upsampled_region_size, upsample_factor, axis_offsets: torch.tensor) -> torch.tensor\nstaticmethod",
      "signature": "(data: torch.Tensor, upsampled_region_size, upsample_factor, axis_offsets: torch.Tensor) -> torch.Tensor",
      "source": {
        "endLine": 548,
        "line": 497,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_torch_register_translation_batch",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._torch_register_translation_batch",
      "searchText": "staticmethod\n_torch_register_translation_batch\ntorch_volpy.motion.motioncorrect.motioncorrect._torch_register_translation_batch\n(src_images: torch.tensor, target_image: torch.tensor, max_shifts: tuple[int, int], *, upsample_factor: int = 10) -> tuple[torch.tensor, torch.tensor]\nstaticmethod",
      "signature": "(src_images: torch.Tensor, target_image: torch.Tensor, max_shifts: Tuple[int, int], *, upsample_factor: int = 10) -> Tuple[torch.Tensor, torch.Tensor]",
      "source": {
        "endLine": 626,
        "line": 551,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_estimate_caiman_rigid_shifts",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._estimate_caiman_rigid_shifts",
      "searchText": "method\n_estimate_caiman_rigid_shifts\ntorch_volpy.motion.motioncorrect.motioncorrect._estimate_caiman_rigid_shifts\n(self, template: torch.tensor, *, return_scores: bool = false)",
      "signature": "(self, template: torch.Tensor, *, return_scores: bool = False)",
      "source": {
        "endLine": 693,
        "line": 628,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_apply_border_nan_policy_nchw",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._apply_border_nan_policy_nchw",
      "searchText": "staticmethod\n_apply_border_nan_policy_nchw\ntorch_volpy.motion.motioncorrect.motioncorrect._apply_border_nan_policy_nchw\n(frames_nchw: torch.tensor, shifts_chunk: torch.tensor, border_nan: union[bool, literal['copy', 'min', 'nan']], fill_values: optional[torch.tensor] = none) -> torch.tensor\nstaticmethod",
      "signature": "(frames_nchw: torch.Tensor, shifts_chunk: torch.Tensor, border_nan: Union[bool, Literal['copy', 'min', 'nan']], fill_values: Optional[torch.Tensor] = None) -> torch.Tensor",
      "source": {
        "endLine": 763,
        "line": 696,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_opencv_reflect_indices",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._opencv_reflect_indices",
      "searchText": "staticmethod\n_opencv_reflect_indices\ntorch_volpy.motion.motioncorrect.motioncorrect._opencv_reflect_indices\n(indices: torch.tensor, size: int) -> torch.tensor\nstaticmethod",
      "signature": "(indices: torch.Tensor, size: int) -> torch.Tensor",
      "source": {
        "endLine": 771,
        "line": 766,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_opencv_cubic_weights",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._opencv_cubic_weights",
      "searchText": "staticmethod\n_opencv_cubic_weights\ntorch_volpy.motion.motioncorrect.motioncorrect._opencv_cubic_weights\n(t: torch.tensor) -> torch.tensor\nstaticmethod",
      "signature": "(t: torch.Tensor) -> torch.Tensor",
      "source": {
        "endLine": 782,
        "line": 774,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_opencv_interpolation_table_fraction",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._opencv_interpolation_table_fraction",
      "searchText": "staticmethod\n_opencv_interpolation_table_fraction\ntorch_volpy.motion.motioncorrect.motioncorrect._opencv_interpolation_table_fraction\n(t: torch.tensor) -> torch.tensor\nstaticmethod",
      "signature": "(t: torch.Tensor) -> torch.Tensor",
      "source": {
        "endLine": 786,
        "line": 785,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "Build one-dimensional OpenCV warpAffine source indices/weights.\n\nOpenCV's affine path does not use the same float maps as cv2.remap.\nIt quantizes the inverse affine coordinate with AB_BITS=10, then\nstores interpolation-table coordinates with INTER_BITS=5. Reproducing\nthat fixed-point path is necessary for arbitrary subpixel bootstrap\nshifts to match VolPy/CaImAn's cv2.warpAffine(..., INTER_CUBIC).",
      "kind": "staticmethod",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_opencv_warp_affine_axis",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._opencv_warp_affine_axis",
      "searchText": "staticmethod\n_opencv_warp_affine_axis\ntorch_volpy.motion.motioncorrect.motioncorrect._opencv_warp_affine_axis\n(size: int, shifts: torch.tensor, *, device: torch.device, dtype: torch.dtype) -> tuple[torch.tensor, torch.tensor]\nbuild one-dimensional opencv warpaffine source indices/weights.\nbuild one-dimensional opencv warpaffine source indices/weights.\n\nopencv's affine path does not use the same float maps as cv2.remap.\nit quantizes the inverse affine coordinate with ab_bits=10, then\nstores interpolation-table coordinates with inter_bits=5. reproducing\nthat fixed-point path is necessary for arbitrary subpixel bootstrap\nshifts to match volpy/caiman's cv2.warpaffine(..., inter_cubic).\nstaticmethod",
      "signature": "(size: int, shifts: torch.Tensor, *, device: torch.device, dtype: torch.dtype) -> Tuple[torch.Tensor, torch.Tensor]",
      "source": {
        "endLine": 829,
        "line": 789,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": "Build one-dimensional OpenCV warpAffine source indices/weights."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_apply_shifts_tensor_opencv_cubic",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._apply_shifts_tensor_opencv_cubic",
      "searchText": "method\n_apply_shifts_tensor_opencv_cubic\ntorch_volpy.motion.motioncorrect.motioncorrect._apply_shifts_tensor_opencv_cubic\n(self, frames: torch.tensor, shifts_chunk: torch.tensor, *, add_to_movie: float = 0.0, border_nan: union[bool, literal['copy', 'min', 'nan']] = false) -> torch.tensor",
      "signature": "(self, frames: torch.Tensor, shifts_chunk: torch.Tensor, *, add_to_movie: float = 0.0, border_nan: Union[bool, Literal['copy', 'min', 'nan']] = False) -> torch.Tensor",
      "source": {
        "endLine": 923,
        "line": 831,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_torch_apply_shifts_array",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._torch_apply_shifts_array",
      "searchText": "method\n_torch_apply_shifts_array\ntorch_volpy.motion.motioncorrect.motioncorrect._torch_apply_shifts_array\n(self, movie: np.ndarray, shifts: np.ndarray, *, add_to_movie: float = 0.0, border_nan: union[bool, literal['copy', 'min', 'nan']] = false) -> np.ndarray",
      "signature": "(self, movie: np.ndarray, shifts: np.ndarray, *, add_to_movie: float = 0.0, border_nan: Union[bool, Literal['copy', 'min', 'nan']] = False) -> np.ndarray",
      "source": {
        "endLine": 945,
        "line": 925,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_motion_correct_array",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._motion_correct_array",
      "searchText": "method\n_motion_correct_array\ntorch_volpy.motion.motioncorrect.motioncorrect._motion_correct_array\n(self, movie: np.ndarray, template: optional[np.ndarray] = none) -> tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]",
      "signature": "(self, movie: np.ndarray, template: Optional[np.ndarray] = None) -> Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]",
      "source": {
        "endLine": 991,
        "line": 947,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_application_add_to_movie",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._application_add_to_movie",
      "searchText": "method\n_application_add_to_movie\ntorch_volpy.motion.motioncorrect.motioncorrect._application_add_to_movie\n(self) -> float",
      "signature": "(self) -> float",
      "source": {
        "endLine": 996,
        "line": 993,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_build_caiman_rigid_template",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._build_caiman_rigid_template",
      "searchText": "method\n_build_caiman_rigid_template\ntorch_volpy.motion.motioncorrect.motioncorrect._build_caiman_rigid_template\n(self) -> torch.tensor",
      "signature": "(self) -> torch.Tensor",
      "source": {
        "endLine": 1017,
        "line": 998,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "torch.inference_mode"
      ],
      "docstring": "Build and cache the motion-correction template using Template.",
      "kind": "method",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "build_template",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": true,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect.build_template",
      "searchText": "method\nbuild_template\ntorch_volpy.motion.motioncorrect.motioncorrect.build_template\n(self, force: bool = false)\nbuild and cache the motion-correction template using template.\nbuild and cache the motion-correction template using template.\ntorch.inference_mode",
      "signature": "(self, force: bool = False)",
      "source": {
        "endLine": 1041,
        "line": 1020,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": "Build and cache the motion-correction template using Template."
    },
    {
      "decorators": [
        "torch.inference_mode"
      ],
      "docstring": "Estimate and cache per-frame correction shifts.",
      "kind": "method",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "estimate_shifts",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": true,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect.estimate_shifts",
      "searchText": "method\nestimate_shifts\ntorch_volpy.motion.motioncorrect.motioncorrect.estimate_shifts\n(self, force: bool = false, return_scores: bool = false)\nestimate and cache per-frame correction shifts.\nestimate and cache per-frame correction shifts.\ntorch.inference_mode",
      "signature": "(self, force: bool = False, return_scores: bool = False)",
      "source": {
        "endLine": 1112,
        "line": 1044,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": "Estimate and cache per-frame correction shifts."
    },
    {
      "decorators": [
        "torch.inference_mode"
      ],
      "docstring": "Convenience method to build template and estimate shifts.",
      "kind": "method",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "prepare",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": true,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect.prepare",
      "searchText": "method\nprepare\ntorch_volpy.motion.motioncorrect.motioncorrect.prepare\n(self, force: bool = false, return_scores: bool = false)\nconvenience method to build template and estimate shifts.\nconvenience method to build template and estimate shifts.\ntorch.inference_mode",
      "signature": "(self, force: bool = False, return_scores: bool = False)",
      "source": {
        "endLine": 1124,
        "line": 1115,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": "Convenience method to build template and estimate shifts."
    },
    {
      "decorators": [],
      "docstring": "Convert frames to NCHW, pad spatially, and return padded NCHW tensor.",
      "kind": "method",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_pad_frames_for_correction",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._pad_frames_for_correction",
      "searchText": "method\n_pad_frames_for_correction\ntorch_volpy.motion.motioncorrect.motioncorrect._pad_frames_for_correction\n(self, frames: torch.tensor, pad_y: int, pad_x: int) -> torch.tensor\nconvert frames to nchw, pad spatially, and return padded nchw tensor.\nconvert frames to nchw, pad spatially, and return padded nchw tensor.",
      "signature": "(self, frames: torch.Tensor, pad_y: int, pad_x: int) -> torch.Tensor",
      "source": {
        "endLine": 1183,
        "line": 1126,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": "Convert frames to NCHW, pad spatially, and return padded NCHW tensor."
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_frames_to_nchw",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._frames_to_nchw",
      "searchText": "staticmethod\n_frames_to_nchw\ntorch_volpy.motion.motioncorrect.motioncorrect._frames_to_nchw\n(frames: torch.tensor) -> tuple[torch.tensor, str]\nstaticmethod",
      "signature": "(frames: torch.Tensor) -> Tuple[torch.Tensor, str]",
      "source": {
        "endLine": 1191,
        "line": 1186,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_nchw_to_frames",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._nchw_to_frames",
      "searchText": "staticmethod\n_nchw_to_frames\ntorch_volpy.motion.motioncorrect.motioncorrect._nchw_to_frames\n(frames_nchw: torch.tensor, layout: str) -> torch.tensor\nstaticmethod",
      "signature": "(frames_nchw: torch.Tensor, layout: str) -> torch.Tensor",
      "source": {
        "endLine": 1199,
        "line": 1194,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_base_grid",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._base_grid",
      "searchText": "method\n_base_grid\ntorch_volpy.motion.motioncorrect.motioncorrect._base_grid\n(self, height: int, width: int, *, device: torch.device, dtype: torch.dtype) -> torch.tensor",
      "signature": "(self, height: int, width: int, *, device: torch.device, dtype: torch.dtype) -> torch.Tensor",
      "source": {
        "endLine": 1224,
        "line": 1201,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_subpixel_grid_for_shifts",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._subpixel_grid_for_shifts",
      "searchText": "method\n_subpixel_grid_for_shifts\ntorch_volpy.motion.motioncorrect.motioncorrect._subpixel_grid_for_shifts\n(self, shifts_chunk: torch.tensor, height: int, width: int, *, device: torch.device, dtype: torch.dtype) -> torch.tensor",
      "signature": "(self, shifts_chunk: torch.Tensor, height: int, width: int, *, device: torch.device, dtype: torch.dtype) -> torch.Tensor",
      "source": {
        "endLine": 1253,
        "line": 1226,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_correct_chunk_integer",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._correct_chunk_integer",
      "searchText": "method\n_correct_chunk_integer\ntorch_volpy.motion.motioncorrect.motioncorrect._correct_chunk_integer\n(self, frames: torch.tensor, shifts_chunk: torch.tensor) -> torch.tensor",
      "signature": "(self, frames: torch.Tensor, shifts_chunk: torch.Tensor) -> torch.Tensor",
      "source": {
        "endLine": 1299,
        "line": 1255,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_correct_chunk_grid_sample",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._correct_chunk_grid_sample",
      "searchText": "method\n_correct_chunk_grid_sample\ntorch_volpy.motion.motioncorrect.motioncorrect._correct_chunk_grid_sample\n(self, frames: torch.tensor, shifts_chunk: torch.tensor) -> torch.tensor",
      "signature": "(self, frames: torch.Tensor, shifts_chunk: torch.Tensor) -> torch.Tensor",
      "source": {
        "endLine": 1311,
        "line": 1301,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_apply_shifts_tensor_grid_sample",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._apply_shifts_tensor_grid_sample",
      "searchText": "method\n_apply_shifts_tensor_grid_sample\ntorch_volpy.motion.motioncorrect.motioncorrect._apply_shifts_tensor_grid_sample\n(self, frames: torch.tensor, shifts_chunk: torch.tensor, *, add_to_movie: float = 0.0, border_nan: union[bool, literal['copy', 'min', 'nan']] = false) -> torch.tensor",
      "signature": "(self, frames: torch.Tensor, shifts_chunk: torch.Tensor, *, add_to_movie: float = 0.0, border_nan: Union[bool, Literal['copy', 'min', 'nan']] = False) -> torch.Tensor",
      "source": {
        "endLine": 1385,
        "line": 1313,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "Match CaImAn/VolPy border_nan='copy' after subpixel interpolation.",
      "kind": "staticmethod",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_copy_shifted_border_strips",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._copy_shifted_border_strips",
      "searchText": "staticmethod\n_copy_shifted_border_strips\ntorch_volpy.motion.motioncorrect.motioncorrect._copy_shifted_border_strips\n(frames_nchw: torch.tensor, shifts_chunk: torch.tensor) -> torch.tensor\nmatch caiman/volpy border_nan='copy' after subpixel interpolation.\nmatch caiman/volpy border_nan='copy' after subpixel interpolation.\nstaticmethod",
      "signature": "(frames_nchw: torch.Tensor, shifts_chunk: torch.Tensor) -> torch.Tensor",
      "source": {
        "endLine": 1430,
        "line": 1388,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": "Match CaImAn/VolPy border_nan='copy' after subpixel interpolation."
    },
    {
      "decorators": [
        "torch.inference_mode"
      ],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "_correct_chunk",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": false,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect._correct_chunk",
      "searchText": "method\n_correct_chunk\ntorch_volpy.motion.motioncorrect.motioncorrect._correct_chunk\n(self, frames: torch.tensor, shifts_chunk: torch.tensor) -> torch.tensor\ntorch.inference_mode",
      "signature": "(self, frames: torch.Tensor, shifts_chunk: torch.Tensor) -> torch.Tensor",
      "source": {
        "endLine": 1461,
        "line": 1433,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "torch.inference_mode"
      ],
      "docstring": "Build template/shifts if needed, apply shifts to the full movie,\nand save corrected frames to disk.\n\nReturns\n-------\nMovie\n    A Movie instance opened on the corrected dataset.",
      "kind": "method",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "save",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": true,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect.save",
      "searchText": "method\nsave\ntorch_volpy.motion.motioncorrect.motioncorrect.save\n(self, out_h5_path: union[str, path], dataset: str = 'movie', overwrite: bool = false, compression: optional[str] = none, compression_opts: optional[int] = none, output_dtype: optional[union[str, np.dtype]] = none, save_shifts_dataset: optional[str] = 'shifts', save_template_dataset: optional[str] = 'template', save_scores_dataset: optional[str] = none, extra_attrs: optional[dict] = none)\nbuild template/shifts if needed, apply shifts to the full movie,\nbuild template/shifts if needed, apply shifts to the full movie,\nand save corrected frames to disk.\n\nreturns\n-------\nmovie\n    a movie instance opened on the corrected dataset.\ntorch.inference_mode",
      "signature": "(self, out_h5_path: Union[str, Path], dataset: str = 'movie', overwrite: bool = False, compression: Optional[str] = None, compression_opts: Optional[int] = None, output_dtype: Optional[Union[str, np.dtype]] = None, save_shifts_dataset: Optional[str] = 'shifts', save_template_dataset: Optional[str] = 'template', save_scores_dataset: Optional[str] = None, extra_attrs: Optional[dict] = None)",
      "source": {
        "endLine": 1605,
        "line": 1464,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": "Build template/shifts if needed, apply shifts to the full movie,"
    },
    {
      "decorators": [],
      "docstring": "Return a dictionary describing the configured correction run.",
      "kind": "method",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "summary",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": true,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect.summary",
      "searchText": "method\nsummary\ntorch_volpy.motion.motioncorrect.motioncorrect.summary\n(self) -> dict\nreturn a dictionary describing the configured correction run.\nreturn a dictionary describing the configured correction run.",
      "signature": "(self) -> dict",
      "source": {
        "endLine": 1624,
        "line": 1607,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": "Return a dictionary describing the configured correction run."
    },
    {
      "decorators": [],
      "docstring": "Apply motion correction and save the corrected movie.",
      "kind": "method",
      "module": "torch_volpy.motion.MotionCorrect",
      "name": "__call__",
      "parent": "torch_volpy.motion.MotionCorrect.MotionCorrect",
      "public": true,
      "qualifiedName": "torch_volpy.motion.MotionCorrect.MotionCorrect.__call__",
      "searchText": "method\n__call__\ntorch_volpy.motion.motioncorrect.motioncorrect.__call__\n(self, *args, **kwargs)\napply motion correction and save the corrected movie.\napply motion correction and save the corrected movie.",
      "signature": "(self, *args, **kwargs)",
      "source": {
        "endLine": 1628,
        "line": 1626,
        "path": "src/torch_volpy/motion/MotionCorrect.py"
      },
      "summary": "Apply motion correction and save the corrected movie."
    },
    {
      "decorators": [],
      "docstring": "",
      "exports": [],
      "kind": "module",
      "module": "torch_volpy.motion.Template",
      "name": "torch_volpy.motion.Template",
      "public": true,
      "qualifiedName": "torch_volpy.motion.Template",
      "searchText": "module\ntorch_volpy.motion.template\ntorch_volpy.motion.template",
      "signature": "",
      "source": {
        "endLine": 1,
        "line": 1,
        "path": "src/torch_volpy/motion/Template.py"
      },
      "summary": ""
    },
    {
      "bases": [],
      "dataclass": false,
      "decorators": [],
      "docstring": "Build a motion-correction template from a lazily readable Movie.\n\nAssumptions\n-----------\n- axis 0 is time\n- all remaining axes are preserved as frame dimensions\n  (e.g. Y,X or Y,X,C)\n- \"binmedian\" is implemented as:\n    1) split frames into temporal bins\n    2) mean within each bin\n    3) median across bin means\n\nMemory behavior\n---------------\n- never loads the whole movie into memory\n- reads only one frame block at a time from Movie\n\nOptional filtering\n------------------\n- if high_pass_filter_size is not None, spatial high-pass Gaussian filtering is applied\n  to each chunk/bin immediately after reading frames\n- filtering happens before:\n    1) minimum estimation\n    2) bin-mean / bin-median template calculation",
      "kind": "class",
      "module": "torch_volpy.motion.Template",
      "name": "Template",
      "public": true,
      "qualifiedName": "torch_volpy.motion.Template.Template",
      "searchText": "class\ntemplate\ntorch_volpy.motion.template.template\n(movie, window: int = 10, min_value: optional[float] = none, estimate_min_frames: int = 400, negative_floor: float = -10.0, keep_partial_last_bin: bool = false, exclude_nans: bool = true, binning: literal['consecutive', 'caiman'] = 'consecutive', dtype: torch.dtype = torch.float32, device: union[str, torch.device] = 'cpu', high_pass_filter_size: optional[int] = none) -> none\nbuild a motion-correction template from a lazily readable movie.\nbuild a motion-correction template from a lazily readable movie.\n\nassumptions\n-----------\n- axis 0 is time\n- all remaining axes are preserved as frame dimensions\n  (e.g. y,x or y,x,c)\n- \"binmedian\" is implemented as:\n    1) split frames into temporal bins\n    2) mean within each bin\n    3) median across bin means\n\nmemory behavior\n---------------\n- never loads the whole movie into memory\n- reads only one frame block at a time from movie\n\noptional filtering\n------------------\n- if high_pass_filter_size is not none, spatial high-pass gaussian filtering is applied\n  to each chunk/bin immediately after reading frames\n- filtering happens before:\n    1) minimum estimation\n    2) bin-mean / bin-median template calculation",
      "signature": "(movie, window: int = 10, min_value: Optional[float] = None, estimate_min_frames: int = 400, negative_floor: float = -10.0, keep_partial_last_bin: bool = False, exclude_nans: bool = True, binning: Literal['consecutive', 'caiman'] = 'consecutive', dtype: torch.dtype = torch.float32, device: Union[str, torch.device] = 'cpu', high_pass_filter_size: Optional[int] = None) -> None",
      "source": {
        "endLine": 281,
        "line": 11,
        "path": "src/torch_volpy/motion/Template.py"
      },
      "summary": "Build a motion-correction template from a lazily readable Movie."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.motion.Template",
      "name": "__init__",
      "parent": "torch_volpy.motion.Template.Template",
      "public": false,
      "qualifiedName": "torch_volpy.motion.Template.Template.__init__",
      "searchText": "method\n__init__\ntorch_volpy.motion.template.template.__init__\n(self, movie, window: int = 10, min_value: optional[float] = none, estimate_min_frames: int = 400, negative_floor: float = -10.0, keep_partial_last_bin: bool = false, exclude_nans: bool = true, binning: literal['consecutive', 'caiman'] = 'consecutive', dtype: torch.dtype = torch.float32, device: union[str, torch.device] = 'cpu', high_pass_filter_size: optional[int] = none) -> none",
      "signature": "(self, movie, window: int = 10, min_value: Optional[float] = None, estimate_min_frames: int = 400, negative_floor: float = -10.0, keep_partial_last_bin: bool = False, exclude_nans: bool = True, binning: Literal['consecutive', 'caiman'] = 'consecutive', dtype: torch.dtype = torch.float32, device: Union[str, torch.device] = 'cpu', high_pass_filter_size: Optional[int] = None) -> None",
      "source": {
        "endLine": 90,
        "line": 39,
        "path": "src/torch_volpy/motion/Template.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.motion.Template",
      "name": "_finite_only",
      "parent": "torch_volpy.motion.Template.Template",
      "public": false,
      "qualifiedName": "torch_volpy.motion.Template.Template._finite_only",
      "searchText": "staticmethod\n_finite_only\ntorch_volpy.motion.template.template._finite_only\n(x: torch.tensor) -> torch.tensor\nstaticmethod",
      "signature": "(x: torch.Tensor) -> torch.Tensor",
      "source": {
        "endLine": 94,
        "line": 93,
        "path": "src/torch_volpy/motion/Template.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "torch.inference_mode"
      ],
      "docstring": "Apply spatial high-pass Gaussian filtering if enabled.\n\nAccepts:\n    - (T, X, Y)\n    - (T, X, Y, C)\n    - (X, Y)\n    - (X, Y, C)\n\nReturns the same shape as the input.",
      "kind": "method",
      "module": "torch_volpy.motion.Template",
      "name": "_maybe_filter",
      "parent": "torch_volpy.motion.Template.Template",
      "public": false,
      "qualifiedName": "torch_volpy.motion.Template.Template._maybe_filter",
      "searchText": "method\n_maybe_filter\ntorch_volpy.motion.template.template._maybe_filter\n(self, frames: torch.tensor) -> torch.tensor\napply spatial high-pass gaussian filtering if enabled.\napply spatial high-pass gaussian filtering if enabled.\n\naccepts:\n    - (t, x, y)\n    - (t, x, y, c)\n    - (x, y)\n    - (x, y, c)\n\nreturns the same shape as the input.\ntorch.inference_mode",
      "signature": "(self, frames: torch.Tensor) -> torch.Tensor",
      "source": {
        "endLine": 130,
        "line": 97,
        "path": "src/torch_volpy/motion/Template.py"
      },
      "summary": "Apply spatial high-pass Gaussian filtering if enabled."
    },
    {
      "decorators": [
        "torch.inference_mode"
      ],
      "docstring": "Estimate or return the movie minimum used for template offsetting.",
      "kind": "method",
      "module": "torch_volpy.motion.Template",
      "name": "estimate_min",
      "parent": "torch_volpy.motion.Template.Template",
      "public": true,
      "qualifiedName": "torch_volpy.motion.Template.Template.estimate_min",
      "searchText": "method\nestimate_min\ntorch_volpy.motion.template.template.estimate_min\n(self) -> float\nestimate or return the movie minimum used for template offsetting.\nestimate or return the movie minimum used for template offsetting.\ntorch.inference_mode",
      "signature": "(self) -> float",
      "source": {
        "endLine": 171,
        "line": 133,
        "path": "src/torch_volpy/motion/Template.py"
      },
      "summary": "Estimate or return the movie minimum used for template offsetting."
    },
    {
      "decorators": [
        "torch.inference_mode"
      ],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.motion.Template",
      "name": "_frame_block_mean",
      "parent": "torch_volpy.motion.Template.Template",
      "public": false,
      "qualifiedName": "torch_volpy.motion.Template.Template._frame_block_mean",
      "searchText": "method\n_frame_block_mean\ntorch_volpy.motion.template.template._frame_block_mean\n(self, frames: torch.tensor) -> torch.tensor\ntorch.inference_mode",
      "signature": "(self, frames: torch.Tensor) -> torch.Tensor",
      "source": {
        "endLine": 179,
        "line": 174,
        "path": "src/torch_volpy/motion/Template.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "torch.inference_mode"
      ],
      "docstring": "Compute the raw bin-median template before brightness offsetting.",
      "kind": "method",
      "module": "torch_volpy.motion.Template",
      "name": "compute_binmedian",
      "parent": "torch_volpy.motion.Template.Template",
      "public": true,
      "qualifiedName": "torch_volpy.motion.Template.Template.compute_binmedian",
      "searchText": "method\ncompute_binmedian\ntorch_volpy.motion.template.template.compute_binmedian\n(self) -> torch.tensor\ncompute the raw bin-median template before brightness offsetting.\ncompute the raw bin-median template before brightness offsetting.\ntorch.inference_mode",
      "signature": "(self) -> torch.Tensor",
      "source": {
        "endLine": 241,
        "line": 182,
        "path": "src/torch_volpy/motion/Template.py"
      },
      "summary": "Compute the raw bin-median template before brightness offsetting."
    },
    {
      "decorators": [
        "torch.inference_mode"
      ],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.motion.Template",
      "name": "_safe_quantile",
      "parent": "torch_volpy.motion.Template.Template",
      "public": false,
      "qualifiedName": "torch_volpy.motion.Template.Template._safe_quantile",
      "searchText": "method\n_safe_quantile\ntorch_volpy.motion.template.template._safe_quantile\n(self, x: torch.tensor, q: float) -> float\ntorch.inference_mode",
      "signature": "(self, x: torch.Tensor, q: float) -> float",
      "source": {
        "endLine": 252,
        "line": 244,
        "path": "src/torch_volpy/motion/Template.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "torch.inference_mode"
      ],
      "docstring": "Build and return the final motion template tensor.",
      "kind": "method",
      "module": "torch_volpy.motion.Template",
      "name": "build",
      "parent": "torch_volpy.motion.Template.Template",
      "public": true,
      "qualifiedName": "torch_volpy.motion.Template.Template.build",
      "searchText": "method\nbuild\ntorch_volpy.motion.template.template.build\n(self) -> torch.tensor\nbuild and return the final motion template tensor.\nbuild and return the final motion template tensor.\ntorch.inference_mode",
      "signature": "(self) -> torch.Tensor",
      "source": {
        "endLine": 277,
        "line": 255,
        "path": "src/torch_volpy/motion/Template.py"
      },
      "summary": "Build and return the final motion template tensor."
    },
    {
      "decorators": [],
      "docstring": "Build and return the final motion template tensor.",
      "kind": "method",
      "module": "torch_volpy.motion.Template",
      "name": "__call__",
      "parent": "torch_volpy.motion.Template.Template",
      "public": true,
      "qualifiedName": "torch_volpy.motion.Template.Template.__call__",
      "searchText": "method\n__call__\ntorch_volpy.motion.template.template.__call__\n(self) -> torch.tensor\nbuild and return the final motion template tensor.\nbuild and return the final motion template tensor.",
      "signature": "(self) -> torch.Tensor",
      "source": {
        "endLine": 281,
        "line": 279,
        "path": "src/torch_volpy/motion/Template.py"
      },
      "summary": "Build and return the final motion template tensor."
    },
    {
      "decorators": [],
      "docstring": "",
      "exports": [],
      "kind": "module",
      "module": "torch_volpy.motion.Translation",
      "name": "torch_volpy.motion.Translation",
      "public": true,
      "qualifiedName": "torch_volpy.motion.Translation",
      "searchText": "module\ntorch_volpy.motion.translation\ntorch_volpy.motion.translation",
      "signature": "",
      "source": {
        "endLine": 1,
        "line": 1,
        "path": "src/torch_volpy/motion/Translation.py"
      },
      "summary": ""
    },
    {
      "bases": [],
      "dataclass": false,
      "decorators": [],
      "docstring": "Estimate per-frame translational shifts against a template using\nFFT-based cross-correlation in PyTorch.\n\nReturns shifts as [dy, dx], meaning:\n    corrected_frame = shift(frame, dy, dx)\n\nAssumptions\n-----------\n- movie axis 0 is time\n- frame shape is either:\n    (Y, X)\n  or\n    (Y, X, C)   # channel-last\n- correlation is done on a 2D plane:\n    * (Y, X) directly\n    * (Y, X, C) reduced to mean over channels\n\nNotes\n-----\n- Integer-pixel shifts are estimated from the correlation peak.\n- If upsample_factor > 1, local DFT upsampling or quadratic peak\n  refinement returns subpixel shifts quantized to 1 / upsample_factor pixels.\n- It reads the movie in chunks, so it does not load the full movie.\n- The default normalized cross-power mode is phase correlation:\n      corr = ifft( FFT(template) * conj(FFT(frame)) / abs(...) )\n  normalization=\"none\" uses unnormalized FFT cross-correlation, closer\n  to CaImAn/VolPy rigid registration.",
      "kind": "class",
      "module": "torch_volpy.motion.Translation",
      "name": "Translation",
      "public": true,
      "qualifiedName": "torch_volpy.motion.Translation.Translation",
      "searchText": "class\ntranslation\ntorch_volpy.motion.translation.translation\n(movie, template: torch.tensor, max_shifts: union[int, tuple[int, int]], frames_per_chunk: int = 256, device: union[str, torch.device] = 'cpu', dtype: torch.dtype = torch.float32, use_hann: bool = true, center: bool = true, upsample_factor: int = 1, subpixel_method: literal['none', 'quadratic', 'dft'] = 'quadratic', normalization: literal['phase', 'none'] = 'phase', eps: float = 1e-08, high_pass_filter_size: optional[int] = none, add_to_movie: float = 0.0) -> none\nestimate per-frame translational shifts against a template using\nestimate per-frame translational shifts against a template using\nfft-based cross-correlation in pytorch.\n\nreturns shifts as [dy, dx], meaning:\n    corrected_frame = shift(frame, dy, dx)\n\nassumptions\n-----------\n- movie axis 0 is time\n- frame shape is either:\n    (y, x)\n  or\n    (y, x, c)   # channel-last\n- correlation is done on a 2d plane:\n    * (y, x) directly\n    * (y, x, c) reduced to mean over channels\n\nnotes\n-----\n- integer-pixel shifts are estimated from the correlation peak.\n- if upsample_factor > 1, local dft upsampling or quadratic peak\n  refinement returns subpixel shifts quantized to 1 / upsample_factor pixels.\n- it reads the movie in chunks, so it does not load the full movie.\n- the default normalized cross-power mode is phase correlation:\n      corr = ifft( fft(template) * conj(fft(frame)) / abs(...) )\n  normalization=\"none\" uses unnormalized fft cross-correlation, closer\n  to caiman/volpy rigid registration.",
      "signature": "(movie, template: torch.Tensor, max_shifts: Union[int, Tuple[int, int]], frames_per_chunk: int = 256, device: Union[str, torch.device] = 'cpu', dtype: torch.dtype = torch.float32, use_hann: bool = True, center: bool = True, upsample_factor: int = 1, subpixel_method: Literal['none', 'quadratic', 'dft'] = 'quadratic', normalization: Literal['phase', 'none'] = 'phase', eps: float = 1e-08, high_pass_filter_size: Optional[int] = None, add_to_movie: float = 0.0) -> None",
      "source": {
        "endLine": 612,
        "line": 11,
        "path": "src/torch_volpy/motion/Translation.py"
      },
      "summary": "Estimate per-frame translational shifts against a template using"
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.motion.Translation",
      "name": "__init__",
      "parent": "torch_volpy.motion.Translation.Translation",
      "public": false,
      "qualifiedName": "torch_volpy.motion.Translation.Translation.__init__",
      "searchText": "method\n__init__\ntorch_volpy.motion.translation.translation.__init__\n(self, movie, template: torch.tensor, max_shifts: union[int, tuple[int, int]], frames_per_chunk: int = 256, device: union[str, torch.device] = 'cpu', dtype: torch.dtype = torch.float32, use_hann: bool = true, center: bool = true, upsample_factor: int = 1, subpixel_method: literal['none', 'quadratic', 'dft'] = 'quadratic', normalization: literal['phase', 'none'] = 'phase', eps: float = 1e-08, high_pass_filter_size: optional[int] = none, add_to_movie: float = 0.0) -> none",
      "signature": "(self, movie, template: torch.Tensor, max_shifts: Union[int, Tuple[int, int]], frames_per_chunk: int = 256, device: Union[str, torch.device] = 'cpu', dtype: torch.dtype = torch.float32, use_hann: bool = True, center: bool = True, upsample_factor: int = 1, subpixel_method: Literal['none', 'quadratic', 'dft'] = 'quadratic', normalization: Literal['phase', 'none'] = 'phase', eps: float = 1e-08, high_pass_filter_size: Optional[int] = None, add_to_movie: float = 0.0) -> None",
      "source": {
        "endLine": 114,
        "line": 42,
        "path": "src/torch_volpy/motion/Translation.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.motion.Translation",
      "name": "_normalize_max_shifts",
      "parent": "torch_volpy.motion.Translation.Translation",
      "public": false,
      "qualifiedName": "torch_volpy.motion.Translation.Translation._normalize_max_shifts",
      "searchText": "staticmethod\n_normalize_max_shifts\ntorch_volpy.motion.translation.translation._normalize_max_shifts\n(max_shifts: union[int, tuple[int, int]]) -> tuple[int, int]\nstaticmethod",
      "signature": "(max_shifts: Union[int, Tuple[int, int]]) -> Tuple[int, int]",
      "source": {
        "endLine": 131,
        "line": 117,
        "path": "src/torch_volpy/motion/Translation.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Convert template/frame data to a 2D correlation plane on self.device/self.dtype.",
      "kind": "method",
      "module": "torch_volpy.motion.Translation",
      "name": "_prepare_image",
      "parent": "torch_volpy.motion.Translation.Translation",
      "public": false,
      "qualifiedName": "torch_volpy.motion.Translation.Translation._prepare_image",
      "searchText": "method\n_prepare_image\ntorch_volpy.motion.translation.translation._prepare_image\n(self, x: torch.tensor) -> torch.tensor\nconvert template/frame data to a 2d correlation plane on self.device/self.dtype.\nconvert template/frame data to a 2d correlation plane on self.device/self.dtype.",
      "signature": "(self, x: torch.Tensor) -> torch.Tensor",
      "source": {
        "endLine": 150,
        "line": 133,
        "path": "src/torch_volpy/motion/Translation.py"
      },
      "summary": "Convert template/frame data to a 2D correlation plane on self.device/self.dtype."
    },
    {
      "decorators": [],
      "docstring": "Convert frame batch to shape (B, Y, X) on self.device/self.dtype.",
      "kind": "method",
      "module": "torch_volpy.motion.Translation",
      "name": "_prepare_batch",
      "parent": "torch_volpy.motion.Translation.Translation",
      "public": false,
      "qualifiedName": "torch_volpy.motion.Translation.Translation._prepare_batch",
      "searchText": "method\n_prepare_batch\ntorch_volpy.motion.translation.translation._prepare_batch\n(self, frames: torch.tensor) -> torch.tensor\nconvert frame batch to shape (b, y, x) on self.device/self.dtype.\nconvert frame batch to shape (b, y, x) on self.device/self.dtype.",
      "signature": "(self, frames: torch.Tensor) -> torch.Tensor",
      "source": {
        "endLine": 170,
        "line": 152,
        "path": "src/torch_volpy/motion/Translation.py"
      },
      "summary": "Convert frame batch to shape (B, Y, X) on self.device/self.dtype."
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.motion.Translation",
      "name": "_make_window",
      "parent": "torch_volpy.motion.Translation.Translation",
      "public": false,
      "qualifiedName": "torch_volpy.motion.Translation.Translation._make_window",
      "searchText": "staticmethod\n_make_window\ntorch_volpy.motion.translation.translation._make_window\n(height: int, width: int) -> torch.tensor\nstaticmethod",
      "signature": "(height: int, width: int) -> torch.Tensor",
      "source": {
        "endLine": 176,
        "line": 173,
        "path": "src/torch_volpy/motion/Translation.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.motion.Translation",
      "name": "_precompute_template_fft",
      "parent": "torch_volpy.motion.Translation.Translation",
      "public": false,
      "qualifiedName": "torch_volpy.motion.Translation.Translation._precompute_template_fft",
      "searchText": "method\n_precompute_template_fft\ntorch_volpy.motion.translation.translation._precompute_template_fft\n(self, template_2d: torch.tensor) -> torch.tensor",
      "signature": "(self, template_2d: torch.Tensor) -> torch.Tensor",
      "source": {
        "endLine": 189,
        "line": 178,
        "path": "src/torch_volpy/motion/Translation.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.motion.Translation",
      "name": "_build_search_indices",
      "parent": "torch_volpy.motion.Translation.Translation",
      "public": false,
      "qualifiedName": "torch_volpy.motion.Translation.Translation._build_search_indices",
      "searchText": "staticmethod\n_build_search_indices\ntorch_volpy.motion.translation.translation._build_search_indices\n(height: int, width: int, max_shifts: tuple[int, int], device: torch.device) -> tuple[torch.tensor, torch.tensor]\nstaticmethod",
      "signature": "(height: int, width: int, max_shifts: Tuple[int, int], device: torch.device) -> Tuple[torch.Tensor, torch.Tensor]",
      "source": {
        "endLine": 220,
        "line": 192,
        "path": "src/torch_volpy/motion/Translation.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "Convert FFT-wrap index to signed shift.\nExample:\n    0 -> 0\n    1 -> +1\n    size-1 -> -1",
      "kind": "staticmethod",
      "module": "torch_volpy.motion.Translation",
      "name": "_to_signed_shift",
      "parent": "torch_volpy.motion.Translation.Translation",
      "public": false,
      "qualifiedName": "torch_volpy.motion.Translation.Translation._to_signed_shift",
      "searchText": "staticmethod\n_to_signed_shift\ntorch_volpy.motion.translation.translation._to_signed_shift\n(idx: torch.tensor, size: int) -> torch.tensor\nconvert fft-wrap index to signed shift.\nconvert fft-wrap index to signed shift.\nexample:\n    0 -> 0\n    1 -> +1\n    size-1 -> -1\nstaticmethod",
      "signature": "(idx: torch.Tensor, size: int) -> torch.Tensor",
      "source": {
        "endLine": 232,
        "line": 223,
        "path": "src/torch_volpy/motion/Translation.py"
      },
      "summary": "Convert FFT-wrap index to signed shift."
    },
    {
      "decorators": [],
      "docstring": "frames_2d: (B, Y, X)\nreturns corr: (B, Y, X)",
      "kind": "method",
      "module": "torch_volpy.motion.Translation",
      "name": "_phase_correlation",
      "parent": "torch_volpy.motion.Translation.Translation",
      "public": false,
      "qualifiedName": "torch_volpy.motion.Translation.Translation._phase_correlation",
      "searchText": "method\n_phase_correlation\ntorch_volpy.motion.translation.translation._phase_correlation\n(self, frames_2d: torch.tensor, return_cross_power: bool = false)\nframes_2d: (b, y, x)\nframes_2d: (b, y, x)\nreturns corr: (b, y, x)",
      "signature": "(self, frames_2d: torch.Tensor, return_cross_power: bool = False)",
      "source": {
        "endLine": 280,
        "line": 234,
        "path": "src/torch_volpy/motion/Translation.py"
      },
      "summary": "frames_2d: (B, Y, X)"
    },
    {
      "decorators": [],
      "docstring": "Batched matrix-multiply DFT in a small region around each frame's peak.\n\nThis is the torch/GPU analogue of the Guizar-Sicairos local DFT\nrefinement used by scikit-image/CaImAn, without zero-padding the full\nimage by upsample_factor.",
      "kind": "method",
      "module": "torch_volpy.motion.Translation",
      "name": "_upsampled_dft_batched",
      "parent": "torch_volpy.motion.Translation.Translation",
      "public": false,
      "qualifiedName": "torch_volpy.motion.Translation.Translation._upsampled_dft_batched",
      "searchText": "method\n_upsampled_dft_batched\ntorch_volpy.motion.translation.translation._upsampled_dft_batched\n(self, data: torch.tensor, upsampled_region_size: int, upsample_factor: int, axis_offsets: torch.tensor) -> torch.tensor\nbatched matrix-multiply dft in a small region around each frame's peak.\nbatched matrix-multiply dft in a small region around each frame's peak.\n\nthis is the torch/gpu analogue of the guizar-sicairos local dft\nrefinement used by scikit-image/caiman, without zero-padding the full\nimage by upsample_factor.",
      "signature": "(self, data: torch.Tensor, upsampled_region_size: int, upsample_factor: int, axis_offsets: torch.Tensor) -> torch.Tensor",
      "source": {
        "endLine": 339,
        "line": 282,
        "path": "src/torch_volpy/motion/Translation.py"
      },
      "summary": "Batched matrix-multiply DFT in a small region around each frame's peak."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.motion.Translation",
      "name": "_refine_subpixel_dft",
      "parent": "torch_volpy.motion.Translation.Translation",
      "public": false,
      "qualifiedName": "torch_volpy.motion.Translation.Translation._refine_subpixel_dft",
      "searchText": "method\n_refine_subpixel_dft\ntorch_volpy.motion.translation.translation._refine_subpixel_dft\n(self, cross_power: torch.tensor, dy: torch.tensor, dx: torch.tensor) -> tuple[torch.tensor, torch.tensor]",
      "signature": "(self, cross_power: torch.Tensor, dy: torch.Tensor, dx: torch.Tensor) -> Tuple[torch.Tensor, torch.Tensor]",
      "source": {
        "endLine": 382,
        "line": 341,
        "path": "src/torch_volpy/motion/Translation.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Refine integer FFT-correlation peaks with a separable quadratic fit.\n\nThis is a fast batched approximation to local DFT upsampling. It runs on\nthe same device as corr and avoids per-frame CPU/OpenCV work.",
      "kind": "method",
      "module": "torch_volpy.motion.Translation",
      "name": "_refine_subpixel_quadratic",
      "parent": "torch_volpy.motion.Translation.Translation",
      "public": false,
      "qualifiedName": "torch_volpy.motion.Translation.Translation._refine_subpixel_quadratic",
      "searchText": "method\n_refine_subpixel_quadratic\ntorch_volpy.motion.translation.translation._refine_subpixel_quadratic\n(self, corr: torch.tensor, peak_y: torch.tensor, peak_x: torch.tensor, dy: torch.tensor, dx: torch.tensor) -> tuple[torch.tensor, torch.tensor]\nrefine integer fft-correlation peaks with a separable quadratic fit.\nrefine integer fft-correlation peaks with a separable quadratic fit.\n\nthis is a fast batched approximation to local dft upsampling. it runs on\nthe same device as corr and avoids per-frame cpu/opencv work.",
      "signature": "(self, corr: torch.Tensor, peak_y: torch.Tensor, peak_x: torch.Tensor, dy: torch.Tensor, dx: torch.Tensor) -> Tuple[torch.Tensor, torch.Tensor]",
      "source": {
        "endLine": 445,
        "line": 384,
        "path": "src/torch_volpy/motion/Translation.py"
      },
      "summary": "Refine integer FFT-correlation peaks with a separable quadratic fit."
    },
    {
      "decorators": [],
      "docstring": "corr: (B, Y, X)",
      "kind": "method",
      "module": "torch_volpy.motion.Translation",
      "name": "_find_shifts_from_corr",
      "parent": "torch_volpy.motion.Translation.Translation",
      "public": false,
      "qualifiedName": "torch_volpy.motion.Translation.Translation._find_shifts_from_corr",
      "searchText": "method\n_find_shifts_from_corr\ntorch_volpy.motion.translation.translation._find_shifts_from_corr\n(self, corr: torch.tensor, cross_power: optional[torch.tensor] = none, return_scores: bool = false)\ncorr: (b, y, x)\ncorr: (b, y, x)",
      "signature": "(self, corr: torch.Tensor, cross_power: Optional[torch.Tensor] = None, return_scores: bool = False)",
      "source": {
        "endLine": 489,
        "line": 447,
        "path": "src/torch_volpy/motion/Translation.py"
      },
      "summary": "corr: (B, Y, X)"
    },
    {
      "decorators": [
        "torch.inference_mode"
      ],
      "docstring": "Estimate shifts for movie frames in [start, stop).\n\nReturns\n-------\nshifts : torch.Tensor, shape (N, 2), dtype int64\n    Each row is [dy, dx] to apply to the frame.\nscores : torch.Tensor, shape (N,), optional\n    Peak correlation score for each frame.",
      "kind": "method",
      "module": "torch_volpy.motion.Translation",
      "name": "estimate_range",
      "parent": "torch_volpy.motion.Translation.Translation",
      "public": true,
      "qualifiedName": "torch_volpy.motion.Translation.Translation.estimate_range",
      "searchText": "method\nestimate_range\ntorch_volpy.motion.translation.translation.estimate_range\n(self, start: int = 0, stop: optional[int] = none, return_scores: bool = false)\nestimate shifts for movie frames in [start, stop).\nestimate shifts for movie frames in [start, stop).\n\nreturns\n-------\nshifts : torch.tensor, shape (n, 2), dtype int64\n    each row is [dy, dx] to apply to the frame.\nscores : torch.tensor, shape (n,), optional\n    peak correlation score for each frame.\ntorch.inference_mode",
      "signature": "(self, start: int = 0, stop: Optional[int] = None, return_scores: bool = False)",
      "source": {
        "endLine": 563,
        "line": 492,
        "path": "src/torch_volpy/motion/Translation.py"
      },
      "summary": "Estimate shifts for movie frames in [start, stop)."
    },
    {
      "decorators": [
        "torch.inference_mode"
      ],
      "docstring": "Estimate shift for a single frame.",
      "kind": "method",
      "module": "torch_volpy.motion.Translation",
      "name": "estimate_frame",
      "parent": "torch_volpy.motion.Translation.Translation",
      "public": true,
      "qualifiedName": "torch_volpy.motion.Translation.Translation.estimate_frame",
      "searchText": "method\nestimate_frame\ntorch_volpy.motion.translation.translation.estimate_frame\n(self, index: int, return_score: bool = false)\nestimate shift for a single frame.\nestimate shift for a single frame.\ntorch.inference_mode",
      "signature": "(self, index: int, return_score: bool = False)",
      "source": {
        "endLine": 603,
        "line": 566,
        "path": "src/torch_volpy/motion/Translation.py"
      },
      "summary": "Estimate shift for a single frame."
    },
    {
      "decorators": [],
      "docstring": "Estimate shifts for a frame range.",
      "kind": "method",
      "module": "torch_volpy.motion.Translation",
      "name": "__call__",
      "parent": "torch_volpy.motion.Translation.Translation",
      "public": true,
      "qualifiedName": "torch_volpy.motion.Translation.Translation.__call__",
      "searchText": "method\n__call__\ntorch_volpy.motion.translation.translation.__call__\n(self, start: int = 0, stop: optional[int] = none, return_scores: bool = false)\nestimate shifts for a frame range.\nestimate shifts for a frame range.",
      "signature": "(self, start: int = 0, stop: Optional[int] = None, return_scores: bool = False)",
      "source": {
        "endLine": 612,
        "line": 605,
        "path": "src/torch_volpy/motion/Translation.py"
      },
      "summary": "Estimate shifts for a frame range."
    },
    {
      "decorators": [],
      "docstring": "",
      "exports": [
        "MotionCorrect",
        "Template",
        "Translation"
      ],
      "kind": "module",
      "module": "torch_volpy.motion",
      "name": "torch_volpy.motion",
      "public": true,
      "qualifiedName": "torch_volpy.motion",
      "searchText": "module\ntorch_volpy.motion\ntorch_volpy.motion",
      "signature": "",
      "source": {
        "endLine": 1,
        "line": 1,
        "path": "src/torch_volpy/motion/__init__.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "exports": [],
      "kind": "module",
      "module": "torch_volpy.movie.Movie",
      "name": "torch_volpy.movie.Movie",
      "public": true,
      "qualifiedName": "torch_volpy.movie.Movie",
      "searchText": "module\ntorch_volpy.movie.movie\ntorch_volpy.movie.movie",
      "signature": "",
      "source": {
        "endLine": 1,
        "line": 1,
        "path": "src/torch_volpy/movie/Movie.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "default": "Union[str, Path]",
      "docstring": "",
      "kind": "alias",
      "module": "torch_volpy.movie.Movie",
      "name": "PathLike",
      "public": true,
      "qualifiedName": "torch_volpy.movie.Movie.PathLike",
      "searchText": "alias\npathlike\ntorch_volpy.movie.movie.pathlike\nunion[str, path]",
      "signature": "",
      "source": {
        "endLine": 12,
        "line": 12,
        "path": "src/torch_volpy/movie/Movie.py"
      },
      "summary": ""
    },
    {
      "bases": [
        "Dataset"
      ],
      "dataclass": false,
      "decorators": [],
      "docstring": "HDF5-backed movie reader/writer for PyTorch.\n\nAssumptions:\n- The HDF5 dataset shape is usually (T, Y, X) or (T, Y, X, C)\n- Axis 0 is the frame/time axis\n- For TIFF conversion, the TIFF is a standard multi-page TIFF where each page is one frame\n\nKey properties:\n- Lazy HDF5 opening (safe pattern for PyTorch DataLoader workers)\n- Partial reads via slicing, so only requested frames enter memory\n- Save/append torch tensors to HDF5\n- Convert TIFF -> HDF5 page by page",
      "kind": "class",
      "module": "torch_volpy.movie.Movie",
      "name": "Movie",
      "public": true,
      "qualifiedName": "torch_volpy.movie.Movie.Movie",
      "searchText": "class\nmovie\ntorch_volpy.movie.movie.movie\n(h5_path: pathlike, dataset: str = 'movie', mode: str = 'r', transform = none, rdcc_nbytes: optional[int] = none) -> none\nhdf5-backed movie reader/writer for pytorch.\nhdf5-backed movie reader/writer for pytorch.\n\nassumptions:\n- the hdf5 dataset shape is usually (t, y, x) or (t, y, x, c)\n- axis 0 is the frame/time axis\n- for tiff conversion, the tiff is a standard multi-page tiff where each page is one frame\n\nkey properties:\n- lazy hdf5 opening (safe pattern for pytorch dataloader workers)\n- partial reads via slicing, so only requested frames enter memory\n- save/append torch tensors to hdf5\n- convert tiff -> hdf5 page by page\ndataset",
      "signature": "(h5_path: PathLike, dataset: str = 'movie', mode: str = 'r', transform = None, rdcc_nbytes: Optional[int] = None) -> None",
      "source": {
        "endLine": 584,
        "line": 15,
        "path": "src/torch_volpy/movie/Movie.py"
      },
      "summary": "HDF5-backed movie reader/writer for PyTorch."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.movie.Movie",
      "name": "__init__",
      "parent": "torch_volpy.movie.Movie.Movie",
      "public": false,
      "qualifiedName": "torch_volpy.movie.Movie.Movie.__init__",
      "searchText": "method\n__init__\ntorch_volpy.movie.movie.movie.__init__\n(self, h5_path: pathlike, dataset: str = 'movie', mode: str = 'r', transform = none, rdcc_nbytes: optional[int] = none) -> none",
      "signature": "(self, h5_path: PathLike, dataset: str = 'movie', mode: str = 'r', transform = None, rdcc_nbytes: Optional[int] = None) -> None",
      "source": {
        "endLine": 58,
        "line": 31,
        "path": "src/torch_volpy/movie/Movie.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.movie.Movie",
      "name": "_h5_open_kwargs",
      "parent": "torch_volpy.movie.Movie.Movie",
      "public": false,
      "qualifiedName": "torch_volpy.movie.Movie.Movie._h5_open_kwargs",
      "searchText": "method\n_h5_open_kwargs\ntorch_volpy.movie.movie.movie._h5_open_kwargs\n(self) -> dict[str, any]",
      "signature": "(self) -> dict[str, Any]",
      "source": {
        "endLine": 66,
        "line": 62,
        "path": "src/torch_volpy/movie/Movie.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.movie.Movie",
      "name": "_open_file_temporarily",
      "parent": "torch_volpy.movie.Movie.Movie",
      "public": false,
      "qualifiedName": "torch_volpy.movie.Movie.Movie._open_file_temporarily",
      "searchText": "method\n_open_file_temporarily\ntorch_volpy.movie.movie.movie._open_file_temporarily\n(self) -> h5py.file",
      "signature": "(self) -> h5py.File",
      "source": {
        "endLine": 69,
        "line": 68,
        "path": "src/torch_volpy/movie/Movie.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.movie.Movie",
      "name": "_ensure_open",
      "parent": "torch_volpy.movie.Movie.Movie",
      "public": false,
      "qualifiedName": "torch_volpy.movie.Movie.Movie._ensure_open",
      "searchText": "method\n_ensure_open\ntorch_volpy.movie.movie.movie._ensure_open\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 74,
        "line": 71,
        "path": "src/torch_volpy/movie/Movie.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.movie.Movie",
      "name": "_to_numpy",
      "parent": "torch_volpy.movie.Movie.Movie",
      "public": false,
      "qualifiedName": "torch_volpy.movie.Movie.Movie._to_numpy",
      "searchText": "staticmethod\n_to_numpy\ntorch_volpy.movie.movie.movie._to_numpy\n(data: union[np.ndarray, torch.tensor]) -> np.ndarray\nstaticmethod",
      "signature": "(data: Union[np.ndarray, torch.Tensor]) -> np.ndarray",
      "source": {
        "endLine": 80,
        "line": 77,
        "path": "src/torch_volpy/movie/Movie.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "Default chunking: chunk by frame blocks along axis 0, keep full frame shape.\nGood when most reads are frame-wise or short contiguous frame ranges.",
      "kind": "staticmethod",
      "module": "torch_volpy.movie.Movie",
      "name": "_normalize_chunks",
      "parent": "torch_volpy.movie.Movie.Movie",
      "public": false,
      "qualifiedName": "torch_volpy.movie.Movie.Movie._normalize_chunks",
      "searchText": "staticmethod\n_normalize_chunks\ntorch_volpy.movie.movie.movie._normalize_chunks\n(shape: sequence[int], chunk_frames: int = 1) -> tuple[int, ...]\ndefault chunking: chunk by frame blocks along axis 0, keep full frame shape.\ndefault chunking: chunk by frame blocks along axis 0, keep full frame shape.\ngood when most reads are frame-wise or short contiguous frame ranges.\nstaticmethod",
      "signature": "(shape: Sequence[int], chunk_frames: int = 1) -> Tuple[int, ...]",
      "source": {
        "endLine": 95,
        "line": 83,
        "path": "src/torch_volpy/movie/Movie.py"
      },
      "summary": "Default chunking: chunk by frame blocks along axis 0, keep full frame shape."
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.movie.Movie",
      "name": "_prepare_movie_array",
      "parent": "torch_volpy.movie.Movie.Movie",
      "public": false,
      "qualifiedName": "torch_volpy.movie.Movie.Movie._prepare_movie_array",
      "searchText": "staticmethod\n_prepare_movie_array\ntorch_volpy.movie.movie.movie._prepare_movie_array\n(data: union[np.ndarray, torch.tensor]) -> np.ndarray\nstaticmethod",
      "signature": "(data: Union[np.ndarray, torch.Tensor]) -> np.ndarray",
      "source": {
        "endLine": 108,
        "line": 98,
        "path": "src/torch_volpy/movie/Movie.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Refresh shape/dtype metadata from disk.",
      "kind": "method",
      "module": "torch_volpy.movie.Movie",
      "name": "refresh",
      "parent": "torch_volpy.movie.Movie.Movie",
      "public": true,
      "qualifiedName": "torch_volpy.movie.Movie.Movie.refresh",
      "searchText": "method\nrefresh\ntorch_volpy.movie.movie.movie.refresh\n(self) -> none\nrefresh shape/dtype metadata from disk.\nrefresh shape/dtype metadata from disk.",
      "signature": "(self) -> None",
      "source": {
        "endLine": 120,
        "line": 110,
        "path": "src/torch_volpy/movie/Movie.py"
      },
      "summary": "Refresh shape/dtype metadata from disk."
    },
    {
      "decorators": [
        "property"
      ],
      "docstring": "Shape of the backing HDF5 dataset.",
      "kind": "property",
      "module": "torch_volpy.movie.Movie",
      "name": "shape",
      "parent": "torch_volpy.movie.Movie.Movie",
      "public": true,
      "qualifiedName": "torch_volpy.movie.Movie.Movie.shape",
      "searchText": "property\nshape\ntorch_volpy.movie.movie.movie.shape\n(self) -> tuple[int, ...]\nshape of the backing hdf5 dataset.\nshape of the backing hdf5 dataset.\nproperty",
      "signature": "(self) -> Tuple[int, ...]",
      "source": {
        "endLine": 127,
        "line": 125,
        "path": "src/torch_volpy/movie/Movie.py"
      },
      "summary": "Shape of the backing HDF5 dataset."
    },
    {
      "decorators": [
        "property"
      ],
      "docstring": "NumPy dtype of the backing HDF5 dataset.",
      "kind": "property",
      "module": "torch_volpy.movie.Movie",
      "name": "dtype",
      "parent": "torch_volpy.movie.Movie.Movie",
      "public": true,
      "qualifiedName": "torch_volpy.movie.Movie.Movie.dtype",
      "searchText": "property\ndtype\ntorch_volpy.movie.movie.movie.dtype\n(self) -> np.dtype\nnumpy dtype of the backing hdf5 dataset.\nnumpy dtype of the backing hdf5 dataset.\nproperty",
      "signature": "(self) -> np.dtype",
      "source": {
        "endLine": 132,
        "line": 130,
        "path": "src/torch_volpy/movie/Movie.py"
      },
      "summary": "NumPy dtype of the backing HDF5 dataset."
    },
    {
      "decorators": [
        "property"
      ],
      "docstring": "Number of frames along the time axis.",
      "kind": "property",
      "module": "torch_volpy.movie.Movie",
      "name": "num_frames",
      "parent": "torch_volpy.movie.Movie.Movie",
      "public": true,
      "qualifiedName": "torch_volpy.movie.Movie.Movie.num_frames",
      "searchText": "property\nnum_frames\ntorch_volpy.movie.movie.movie.num_frames\n(self) -> int\nnumber of frames along the time axis.\nnumber of frames along the time axis.\nproperty",
      "signature": "(self) -> int",
      "source": {
        "endLine": 137,
        "line": 135,
        "path": "src/torch_volpy/movie/Movie.py"
      },
      "summary": "Number of frames along the time axis."
    },
    {
      "decorators": [
        "property"
      ],
      "docstring": "Shape of one frame, excluding the time axis.",
      "kind": "property",
      "module": "torch_volpy.movie.Movie",
      "name": "frame_shape",
      "parent": "torch_volpy.movie.Movie.Movie",
      "public": true,
      "qualifiedName": "torch_volpy.movie.Movie.Movie.frame_shape",
      "searchText": "property\nframe_shape\ntorch_volpy.movie.movie.movie.frame_shape\n(self) -> tuple[int, ...]\nshape of one frame, excluding the time axis.\nshape of one frame, excluding the time axis.\nproperty",
      "signature": "(self) -> Tuple[int, ...]",
      "source": {
        "endLine": 142,
        "line": 140,
        "path": "src/torch_volpy/movie/Movie.py"
      },
      "summary": "Shape of one frame, excluding the time axis."
    },
    {
      "decorators": [],
      "docstring": "Close any open HDF5 file handle held by this Movie.",
      "kind": "method",
      "module": "torch_volpy.movie.Movie",
      "name": "close",
      "parent": "torch_volpy.movie.Movie.Movie",
      "public": true,
      "qualifiedName": "torch_volpy.movie.Movie.Movie.close",
      "searchText": "method\nclose\ntorch_volpy.movie.movie.movie.close\n(self) -> none\nclose any open hdf5 file handle held by this movie.\nclose any open hdf5 file handle held by this movie.",
      "signature": "(self) -> None",
      "source": {
        "endLine": 151,
        "line": 146,
        "path": "src/torch_volpy/movie/Movie.py"
      },
      "summary": "Close any open HDF5 file handle held by this Movie."
    },
    {
      "decorators": [],
      "docstring": "Open the backing HDF5 file for context-manager usage.",
      "kind": "method",
      "module": "torch_volpy.movie.Movie",
      "name": "__enter__",
      "parent": "torch_volpy.movie.Movie.Movie",
      "public": true,
      "qualifiedName": "torch_volpy.movie.Movie.Movie.__enter__",
      "searchText": "method\n__enter__\ntorch_volpy.movie.movie.movie.__enter__\n(self) -> 'movie'\nopen the backing hdf5 file for context-manager usage.\nopen the backing hdf5 file for context-manager usage.",
      "signature": "(self) -> 'Movie'",
      "source": {
        "endLine": 156,
        "line": 153,
        "path": "src/torch_volpy/movie/Movie.py"
      },
      "summary": "Open the backing HDF5 file for context-manager usage."
    },
    {
      "decorators": [],
      "docstring": "Close the backing HDF5 file when leaving a context manager.",
      "kind": "method",
      "module": "torch_volpy.movie.Movie",
      "name": "__exit__",
      "parent": "torch_volpy.movie.Movie.Movie",
      "public": true,
      "qualifiedName": "torch_volpy.movie.Movie.Movie.__exit__",
      "searchText": "method\n__exit__\ntorch_volpy.movie.movie.movie.__exit__\n(self, exc_type, exc, tb) -> none\nclose the backing hdf5 file when leaving a context manager.\nclose the backing hdf5 file when leaving a context manager.",
      "signature": "(self, exc_type, exc, tb) -> None",
      "source": {
        "endLine": 160,
        "line": 158,
        "path": "src/torch_volpy/movie/Movie.py"
      },
      "summary": "Close the backing HDF5 file when leaving a context manager."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.movie.Movie",
      "name": "__del__",
      "parent": "torch_volpy.movie.Movie.Movie",
      "public": false,
      "qualifiedName": "torch_volpy.movie.Movie.Movie.__del__",
      "searchText": "method\n__del__\ntorch_volpy.movie.movie.movie.__del__\n(self) -> none",
      "signature": "(self) -> None",
      "source": {
        "endLine": 166,
        "line": 162,
        "path": "src/torch_volpy/movie/Movie.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Return the number of movie frames.",
      "kind": "method",
      "module": "torch_volpy.movie.Movie",
      "name": "__len__",
      "parent": "torch_volpy.movie.Movie.Movie",
      "public": true,
      "qualifiedName": "torch_volpy.movie.Movie.Movie.__len__",
      "searchText": "method\n__len__\ntorch_volpy.movie.movie.movie.__len__\n(self) -> int\nreturn the number of movie frames.\nreturn the number of movie frames.",
      "signature": "(self) -> int",
      "source": {
        "endLine": 172,
        "line": 170,
        "path": "src/torch_volpy/movie/Movie.py"
      },
      "summary": "Return the number of movie frames."
    },
    {
      "decorators": [],
      "docstring": "For DataLoader usage:\n- int -> one frame tensor\n- slice / tuple -> tensor block",
      "kind": "method",
      "module": "torch_volpy.movie.Movie",
      "name": "__getitem__",
      "parent": "torch_volpy.movie.Movie.Movie",
      "public": true,
      "qualifiedName": "torch_volpy.movie.Movie.Movie.__getitem__",
      "searchText": "method\n__getitem__\ntorch_volpy.movie.movie.movie.__getitem__\n(self, idx)\nfor dataloader usage:\nfor dataloader usage:\n- int -> one frame tensor\n- slice / tuple -> tensor block",
      "signature": "(self, idx)",
      "source": {
        "endLine": 180,
        "line": 174,
        "path": "src/torch_volpy/movie/Movie.py"
      },
      "summary": "For DataLoader usage:"
    },
    {
      "decorators": [],
      "docstring": "Read any valid h5py slice/index.\n\nExamples:\n    movie.read(0)                  -> one frame\n    movie.read(slice(10, 20))      -> frames 10:20\n    movie.read((slice(10, 20), ...))\n    movie.read((0, slice(None), slice(None)))",
      "kind": "method",
      "module": "torch_volpy.movie.Movie",
      "name": "read",
      "parent": "torch_volpy.movie.Movie.Movie",
      "public": true,
      "qualifiedName": "torch_volpy.movie.Movie.Movie.read",
      "searchText": "method\nread\ntorch_volpy.movie.movie.movie.read\n(self, index = ..., as_tensor: bool = true, dtype: optional[union[np.dtype, str]] = none, device: optional[union[str, torch.device]] = none, copy: bool = false)\nread any valid h5py slice/index.\nread any valid h5py slice/index.\n\nexamples:\n    movie.read(0)                  -> one frame\n    movie.read(slice(10, 20))      -> frames 10:20\n    movie.read((slice(10, 20), ...))\n    movie.read((0, slice(none), slice(none)))",
      "signature": "(self, index = ..., as_tensor: bool = True, dtype: Optional[Union[np.dtype, str]] = None, device: Optional[Union[str, torch.device]] = None, copy: bool = False)",
      "source": {
        "endLine": 225,
        "line": 184,
        "path": "src/torch_volpy/movie/Movie.py"
      },
      "summary": "Read any valid h5py slice/index."
    },
    {
      "decorators": [],
      "docstring": "Read a frame range along axis 0 only.",
      "kind": "method",
      "module": "torch_volpy.movie.Movie",
      "name": "read_frames",
      "parent": "torch_volpy.movie.Movie.Movie",
      "public": true,
      "qualifiedName": "torch_volpy.movie.Movie.Movie.read_frames",
      "searchText": "method\nread_frames\ntorch_volpy.movie.movie.movie.read_frames\n(self, start: int, stop: optional[int] = none, step: int = 1, as_tensor: bool = true, dtype: optional[union[np.dtype, str]] = none, device: optional[union[str, torch.device]] = none)\nread a frame range along axis 0 only.\nread a frame range along axis 0 only.",
      "signature": "(self, start: int, stop: Optional[int] = None, step: int = 1, as_tensor: bool = True, dtype: Optional[Union[np.dtype, str]] = None, device: Optional[Union[str, torch.device]] = None)",
      "source": {
        "endLine": 242,
        "line": 227,
        "path": "src/torch_volpy/movie/Movie.py"
      },
      "summary": "Read a frame range along axis 0 only."
    },
    {
      "decorators": [],
      "docstring": "Iterate through the movie in frame chunks.",
      "kind": "method",
      "module": "torch_volpy.movie.Movie",
      "name": "iter_chunks",
      "parent": "torch_volpy.movie.Movie.Movie",
      "public": true,
      "qualifiedName": "torch_volpy.movie.Movie.Movie.iter_chunks",
      "searchText": "method\niter_chunks\ntorch_volpy.movie.movie.movie.iter_chunks\n(self, frames_per_chunk: int, as_tensor: bool = true, dtype: optional[union[np.dtype, str]] = none, device: optional[union[str, torch.device]] = none) -> iterator[union[np.ndarray, torch.tensor]]\niterate through the movie in frame chunks.\niterate through the movie in frame chunks.",
      "signature": "(self, frames_per_chunk: int, as_tensor: bool = True, dtype: Optional[Union[np.dtype, str]] = None, device: Optional[Union[str, torch.device]] = None) -> Iterator[Union[np.ndarray, torch.Tensor]]",
      "source": {
        "endLine": 263,
        "line": 244,
        "path": "src/torch_volpy/movie/Movie.py"
      },
      "summary": "Iterate through the movie in frame chunks."
    },
    {
      "decorators": [
        "classmethod"
      ],
      "docstring": "Create an empty appendable movie dataset with shape (0, *frame_shape).",
      "kind": "classmethod",
      "module": "torch_volpy.movie.Movie",
      "name": "create_empty",
      "parent": "torch_volpy.movie.Movie.Movie",
      "public": true,
      "qualifiedName": "torch_volpy.movie.Movie.Movie.create_empty",
      "searchText": "classmethod\ncreate_empty\ntorch_volpy.movie.movie.movie.create_empty\n(cls, h5_path: pathlike, frame_shape: sequence[int], dtype: union[str, np.dtype], dataset: str = 'movie', overwrite: bool = false, chunk_frames: int = 1, compression: optional[str] = none, compression_opts: optional[int] = none, attrs: optional[dict] = none) -> 'movie'\ncreate an empty appendable movie dataset with shape (0, *frame_shape).\ncreate an empty appendable movie dataset with shape (0, *frame_shape).\nclassmethod",
      "signature": "(cls, h5_path: PathLike, frame_shape: Sequence[int], dtype: Union[str, np.dtype], dataset: str = 'movie', overwrite: bool = False, chunk_frames: int = 1, compression: Optional[str] = None, compression_opts: Optional[int] = None, attrs: Optional[dict] = None) -> 'Movie'",
      "source": {
        "endLine": 310,
        "line": 268,
        "path": "src/torch_volpy/movie/Movie.py"
      },
      "summary": "Create an empty appendable movie dataset with shape (0, *frame_shape)."
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.movie.Movie",
      "name": "_save_hdf5",
      "parent": "torch_volpy.movie.Movie.Movie",
      "public": false,
      "qualifiedName": "torch_volpy.movie.Movie.Movie._save_hdf5",
      "searchText": "staticmethod\n_save_hdf5\ntorch_volpy.movie.movie.movie._save_hdf5\n(h5_path: pathlike, data: union[np.ndarray, torch.tensor], overwrite: bool = false, dataset: str = 'movie', chunk_frames: int = 1, compression: optional[str] = none, compression_opts: optional[int] = none, attrs: optional[dict] = none) -> bool\nstaticmethod",
      "signature": "(h5_path: PathLike, data: Union[np.ndarray, torch.Tensor], overwrite: bool = False, dataset: str = 'movie', chunk_frames: int = 1, compression: Optional[str] = None, compression_opts: Optional[int] = None, attrs: Optional[dict] = None) -> bool",
      "source": {
        "endLine": 350,
        "line": 313,
        "path": "src/torch_volpy/movie/Movie.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.movie.Movie",
      "name": "_save_tiff",
      "parent": "torch_volpy.movie.Movie.Movie",
      "public": false,
      "qualifiedName": "torch_volpy.movie.Movie.Movie._save_tiff",
      "searchText": "staticmethod\n_save_tiff\ntorch_volpy.movie.movie.movie._save_tiff\n(tiff_path: pathlike, data: union[np.ndarray, torch.tensor], overwrite: bool = false, attrs: optional[dict] = none) -> bool\nstaticmethod",
      "signature": "(tiff_path: PathLike, data: Union[np.ndarray, torch.Tensor], overwrite: bool = False, attrs: Optional[dict] = None) -> bool",
      "source": {
        "endLine": 382,
        "line": 353,
        "path": "src/torch_volpy/movie/Movie.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "classmethod"
      ],
      "docstring": "Save a tensor or array to HDF5 or TIFF based on the path suffix.",
      "kind": "classmethod",
      "module": "torch_volpy.movie.Movie",
      "name": "save_tensor",
      "parent": "torch_volpy.movie.Movie.Movie",
      "public": true,
      "qualifiedName": "torch_volpy.movie.Movie.Movie.save_tensor",
      "searchText": "classmethod\nsave_tensor\ntorch_volpy.movie.movie.movie.save_tensor\n(cls, path: pathlike, data: union[np.ndarray, torch.tensor], *, overwrite: bool = false, **kwargs: any) -> bool\nsave a tensor or array to hdf5 or tiff based on the path suffix.\nsave a tensor or array to hdf5 or tiff based on the path suffix.\nclassmethod",
      "signature": "(cls, path: PathLike, data: Union[np.ndarray, torch.Tensor], *, overwrite: bool = False, **kwargs: Any) -> bool",
      "source": {
        "endLine": 401,
        "line": 385,
        "path": "src/torch_volpy/movie/Movie.py"
      },
      "summary": "Save a tensor or array to HDF5 or TIFF based on the path suffix."
    },
    {
      "decorators": [
        "classmethod"
      ],
      "docstring": "Append frames along axis 0.\nAccepts shape:\n    (T, ...)\nor a single frame shape:\n    (...)",
      "kind": "classmethod",
      "module": "torch_volpy.movie.Movie",
      "name": "append_tensor",
      "parent": "torch_volpy.movie.Movie.Movie",
      "public": true,
      "qualifiedName": "torch_volpy.movie.Movie.Movie.append_tensor",
      "searchText": "classmethod\nappend_tensor\ntorch_volpy.movie.movie.movie.append_tensor\n(cls, h5_path: pathlike, data: union[np.ndarray, torch.tensor], dataset: str = 'movie') -> none\nappend frames along axis 0.\nappend frames along axis 0.\naccepts shape:\n    (t, ...)\nor a single frame shape:\n    (...)\nclassmethod",
      "signature": "(cls, h5_path: PathLike, data: Union[np.ndarray, torch.Tensor], dataset: str = 'movie') -> None",
      "source": {
        "endLine": 441,
        "line": 404,
        "path": "src/torch_volpy/movie/Movie.py"
      },
      "summary": "Append frames along axis 0."
    },
    {
      "decorators": [
        "classmethod"
      ],
      "docstring": "Convert a standard multi-page TIFF movie to HDF5 without loading the whole movie.\n\nMemory behavior:\n- reads one TIFF page at a time\n- writes small frame batches into HDF5\n\nNotes:\n- This implementation assumes each TIFF page is one movie frame.\n- For more complex OME-TIFF axis layouts, adapt this method using tifffile metadata.",
      "kind": "classmethod",
      "module": "torch_volpy.movie.Movie",
      "name": "from_tiff",
      "parent": "torch_volpy.movie.Movie.Movie",
      "public": true,
      "qualifiedName": "torch_volpy.movie.Movie.Movie.from_tiff",
      "searchText": "classmethod\nfrom_tiff\ntorch_volpy.movie.movie.movie.from_tiff\n(cls, tiff_path: pathlike, h5_path: pathlike, dataset: str = 'movie', overwrite: bool = false, chunk_frames: int = 16, compression: optional[str] = none, compression_opts: optional[int] = none, attrs: optional[dict] = none) -> 'movie'\nconvert a standard multi-page tiff movie to hdf5 without loading the whole movie.\nconvert a standard multi-page tiff movie to hdf5 without loading the whole movie.\n\nmemory behavior:\n- reads one tiff page at a time\n- writes small frame batches into hdf5\n\nnotes:\n- this implementation assumes each tiff page is one movie frame.\n- for more complex ome-tiff axis layouts, adapt this method using tifffile metadata.\nclassmethod",
      "signature": "(cls, tiff_path: PathLike, h5_path: PathLike, dataset: str = 'movie', overwrite: bool = False, chunk_frames: int = 16, compression: Optional[str] = None, compression_opts: Optional[int] = None, attrs: Optional[dict] = None) -> 'Movie'",
      "source": {
        "endLine": 523,
        "line": 446,
        "path": "src/torch_volpy/movie/Movie.py"
      },
      "summary": "Convert a standard multi-page TIFF movie to HDF5 without loading the whole movie."
    },
    {
      "decorators": [
        "classmethod"
      ],
      "docstring": "Export an HDF5 movie dataset to a multi-page TIFF file.",
      "kind": "classmethod",
      "module": "torch_volpy.movie.Movie",
      "name": "to_tiff",
      "parent": "torch_volpy.movie.Movie.Movie",
      "public": true,
      "qualifiedName": "torch_volpy.movie.Movie.Movie.to_tiff",
      "searchText": "classmethod\nto_tiff\ntorch_volpy.movie.movie.movie.to_tiff\n(cls, h5_path: pathlike, tiff_path: pathlike, dataset: str = 'movie', dtype: optional[union[np.dtype, str]] = none, bigtiff: optional[bool] = none, overwrite: bool = false, rdcc_nbytes: optional[int] = none, batch_size: int = 64) -> path\nexport an hdf5 movie dataset to a multi-page tiff file.\nexport an hdf5 movie dataset to a multi-page tiff file.\nclassmethod",
      "signature": "(cls, h5_path: PathLike, tiff_path: PathLike, dataset: str = 'movie', dtype: Optional[Union[np.dtype, str]] = None, bigtiff: Optional[bool] = None, overwrite: bool = False, rdcc_nbytes: Optional[int] = None, batch_size: int = 64) -> Path",
      "source": {
        "endLine": 584,
        "line": 526,
        "path": "src/torch_volpy/movie/Movie.py"
      },
      "summary": "Export an HDF5 movie dataset to a multi-page TIFF file."
    },
    {
      "decorators": [],
      "docstring": "",
      "exports": [
        "Movie"
      ],
      "kind": "module",
      "module": "torch_volpy.movie",
      "name": "torch_volpy.movie",
      "public": true,
      "qualifiedName": "torch_volpy.movie",
      "searchText": "module\ntorch_volpy.movie\ntorch_volpy.movie",
      "signature": "",
      "source": {
        "endLine": 1,
        "line": 1,
        "path": "src/torch_volpy/movie/__init__.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "",
      "exports": [],
      "kind": "module",
      "module": "torch_volpy.util.IJAB",
      "name": "torch_volpy.util.IJAB",
      "public": true,
      "qualifiedName": "torch_volpy.util.IJAB",
      "searchText": "module\ntorch_volpy.util.ijab\ntorch_volpy.util.ijab",
      "signature": "",
      "source": {
        "endLine": 1,
        "line": 1,
        "path": "src/torch_volpy/util/IJAB.py"
      },
      "summary": ""
    },
    {
      "bases": [],
      "dataclass": false,
      "decorators": [],
      "docstring": "ImageJ-like Auto Brightness/Contrast for NumPy arrays.",
      "kind": "class",
      "module": "torch_volpy.util.IJAB",
      "name": "IJAB",
      "public": true,
      "qualifiedName": "torch_volpy.util.IJAB.IJAB",
      "searchText": "class\nijab\ntorch_volpy.util.ijab.ijab\n(clicks: int = 1, bins: int = 256)\nimagej-like auto brightness/contrast for numpy arrays.\nimagej-like auto brightness/contrast for numpy arrays.",
      "signature": "(clicks: int = 1, bins: int = 256)",
      "source": {
        "endLine": 185,
        "line": 5,
        "path": "src/torch_volpy/util/IJAB.py"
      },
      "summary": "ImageJ-like Auto Brightness/Contrast for NumPy arrays."
    },
    {
      "decorators": [],
      "docstring": "",
      "kind": "method",
      "module": "torch_volpy.util.IJAB",
      "name": "__init__",
      "parent": "torch_volpy.util.IJAB.IJAB",
      "public": false,
      "qualifiedName": "torch_volpy.util.IJAB.IJAB.__init__",
      "searchText": "method\n__init__\ntorch_volpy.util.ijab.ijab.__init__\n(self, clicks: int = 1, bins: int = 256)",
      "signature": "(self, clicks: int = 1, bins: int = 256)",
      "source": {
        "endLine": 10,
        "line": 8,
        "path": "src/torch_volpy/util/IJAB.py"
      },
      "summary": ""
    },
    {
      "decorators": [
        "classmethod"
      ],
      "docstring": ":contentReference[oaicite:0]{index=0}style display scaling.\n\nImageJ behavior for 32-bit -> 8-bit display:\n  - Linearly maps display_min..display_max to 0..255\n  - Clips values below display_min to 0\n  - Clips values above display_max to 255\n  - Rounds with +0.5 before integer conversion\n  - If display_min/display_max are not given, uses image min/max\n    while ignoring NaN for range calculation\n\nParameters\n----------\narr : np.ndarray\n    Input image as a NumPy array.\ndisplay_min : float | None\n    Lower bound of display range. If None, computed from data.\ndisplay_max : float | None\n    Upper bound of display range. If None, computed from data.\n\nReturns\n-------\nnp.ndarray\n    uint8 image with the same shape as input.",
      "kind": "classmethod",
      "module": "torch_volpy.util.IJAB",
      "name": "imagej_fp32_to_uint8",
      "parent": "torch_volpy.util.IJAB.IJAB",
      "public": true,
      "qualifiedName": "torch_volpy.util.IJAB.IJAB.imagej_fp32_to_uint8",
      "searchText": "classmethod\nimagej_fp32_to_uint8\ntorch_volpy.util.ijab.ijab.imagej_fp32_to_uint8\n(cls, arr: np.ndarray, display_min: float | none = none, display_max: float | none = none) -> np.ndarray\n:contentreference[oaicite:0]{index=0}style display scaling.\n:contentreference[oaicite:0]{index=0}style display scaling.\n\nimagej behavior for 32-bit -> 8-bit display:\n  - linearly maps display_min..display_max to 0..255\n  - clips values below display_min to 0\n  - clips values above display_max to 255\n  - rounds with +0.5 before integer conversion\n  - if display_min/display_max are not given, uses image min/max\n    while ignoring nan for range calculation\n\nparameters\n----------\narr : np.ndarray\n    input image as a numpy array.\ndisplay_min : float | none\n    lower bound of display range. if none, computed from data.\ndisplay_max : float | none\n    upper bound of display range. if none, computed from data.\n\nreturns\n-------\nnp.ndarray\n    uint8 image with the same shape as input.\nclassmethod",
      "signature": "(cls, arr: np.ndarray, display_min: float | None = None, display_max: float | None = None) -> np.ndarray",
      "source": {
        "endLine": 76,
        "line": 15,
        "path": "src/torch_volpy/util/IJAB.py"
      },
      "summary": ":contentReference[oaicite:0]{index=0}style display scaling."
    },
    {
      "decorators": [
        "staticmethod"
      ],
      "docstring": "",
      "kind": "staticmethod",
      "module": "torch_volpy.util.IJAB",
      "name": "_threshold_divisor",
      "parent": "torch_volpy.util.IJAB.IJAB",
      "public": false,
      "qualifiedName": "torch_volpy.util.IJAB.IJAB._threshold_divisor",
      "searchText": "staticmethod\n_threshold_divisor\ntorch_volpy.util.ijab.ijab._threshold_divisor\n(clicks: int) -> int\nstaticmethod",
      "signature": "(clicks: int) -> int",
      "source": {
        "endLine": 86,
        "line": 79,
        "path": "src/torch_volpy/util/IJAB.py"
      },
      "summary": ""
    },
    {
      "decorators": [],
      "docstring": "Compute ImageJ-style display min and max values.",
      "kind": "method",
      "module": "torch_volpy.util.IJAB",
      "name": "display_range",
      "parent": "torch_volpy.util.IJAB.IJAB",
      "public": true,
      "qualifiedName": "torch_volpy.util.IJAB.IJAB.display_range",
      "searchText": "method\ndisplay_range\ntorch_volpy.util.ijab.ijab.display_range\n(self, arr: np.ndarray, mask: optional[np.ndarray] = none) -> tuple[float, float]\ncompute imagej-style display min and max values.\ncompute imagej-style display min and max values.",
      "signature": "(self, arr: np.ndarray, mask: Optional[np.ndarray] = None) -> Tuple[float, float]",
      "source": {
        "endLine": 143,
        "line": 88,
        "path": "src/torch_volpy/util/IJAB.py"
      },
      "summary": "Compute ImageJ-style display min and max values."
    },
    {
      "decorators": [],
      "docstring": "Apply ImageJ-style auto brightness and contrast scaling.",
      "kind": "method",
      "module": "torch_volpy.util.IJAB",
      "name": "apply",
      "parent": "torch_volpy.util.IJAB.IJAB",
      "public": true,
      "qualifiedName": "torch_volpy.util.IJAB.IJAB.apply",
      "searchText": "method\napply\ntorch_volpy.util.ijab.ijab.apply\n(self, arr: np.ndarray, mask: optional[np.ndarray] = none, output_dtype = np.float32, out_range: optional[tuple[float, float]] = none, return_limits: bool = false)\napply imagej-style auto brightness and contrast scaling.\napply imagej-style auto brightness and contrast scaling.",
      "signature": "(self, arr: np.ndarray, mask: Optional[np.ndarray] = None, output_dtype = np.float32, out_range: Optional[Tuple[float, float]] = None, return_limits: bool = False)",
      "source": {
        "endLine": 181,
        "line": 145,
        "path": "src/torch_volpy/util/IJAB.py"
      },
      "summary": "Apply ImageJ-style auto brightness and contrast scaling."
    },
    {
      "decorators": [],
      "docstring": "Apply ImageJ-style auto brightness and contrast scaling.",
      "kind": "method",
      "module": "torch_volpy.util.IJAB",
      "name": "__call__",
      "parent": "torch_volpy.util.IJAB.IJAB",
      "public": true,
      "qualifiedName": "torch_volpy.util.IJAB.IJAB.__call__",
      "searchText": "method\n__call__\ntorch_volpy.util.ijab.ijab.__call__\n(self, arr: np.ndarray, **kwargs)\napply imagej-style auto brightness and contrast scaling.\napply imagej-style auto brightness and contrast scaling.",
      "signature": "(self, arr: np.ndarray, **kwargs)",
      "source": {
        "endLine": 185,
        "line": 183,
        "path": "src/torch_volpy/util/IJAB.py"
      },
      "summary": "Apply ImageJ-style auto brightness and contrast scaling."
    },
    {
      "decorators": [],
      "docstring": "",
      "exports": [
        "IJAB"
      ],
      "kind": "module",
      "module": "torch_volpy.util",
      "name": "torch_volpy.util",
      "public": true,
      "qualifiedName": "torch_volpy.util",
      "searchText": "module\ntorch_volpy.util\ntorch_volpy.util",
      "signature": "",
      "source": {
        "endLine": 1,
        "line": 1,
        "path": "src/torch_volpy/util/__init__.py"
      },
      "summary": ""
    }
  ],
  "project": {
    "dependencies": [
      "cellpose",
      "h5py>=3.8",
      "matplotlib>=3.7",
      "numpy>=1.24",
      "tifffile>=2023.7.10",
      "torch>=2.0"
    ],
    "description": "PyTorch tools for voltage imaging movie processing and signal extraction.",
    "name": "torch-volpy",
    "optionalDependencies": {
      "dev": [
        "build>=1.2",
        "pytest>=8",
        "twine>=5"
      ],
      "gui": [
        "PyQt6>=6.6"
      ],
      "segmentation": []
    },
    "requiresPython": ">=3.10",
    "version": "0.1.0"
  },
  "schemaVersion": 1,
  "sourceRoot": "src",
  "stats": {
    "alias": 5,
    "class": 38,
    "classmethod": 8,
    "constant": 72,
    "field": 61,
    "function": 76,
    "method": 433,
    "module": 21,
    "property": 6,
    "staticmethod": 50
  }
}
