canns 0.13.1__py3-none-any.whl → 0.14.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- canns/analyzer/data/__init__.py +5 -1
- canns/analyzer/data/asa/__init__.py +27 -12
- canns/analyzer/data/asa/cohospace.py +336 -10
- canns/analyzer/data/asa/config.py +3 -0
- canns/analyzer/data/asa/embedding.py +48 -45
- canns/analyzer/data/asa/path.py +104 -2
- canns/analyzer/data/asa/plotting.py +88 -19
- canns/analyzer/data/asa/tda.py +11 -4
- canns/analyzer/data/cell_classification/__init__.py +97 -0
- canns/analyzer/data/cell_classification/core/__init__.py +26 -0
- canns/analyzer/data/cell_classification/core/grid_cells.py +633 -0
- canns/analyzer/data/cell_classification/core/grid_modules_leiden.py +288 -0
- canns/analyzer/data/cell_classification/core/head_direction.py +347 -0
- canns/analyzer/data/cell_classification/core/spatial_analysis.py +431 -0
- canns/analyzer/data/cell_classification/io/__init__.py +5 -0
- canns/analyzer/data/cell_classification/io/matlab_loader.py +417 -0
- canns/analyzer/data/cell_classification/utils/__init__.py +39 -0
- canns/analyzer/data/cell_classification/utils/circular_stats.py +383 -0
- canns/analyzer/data/cell_classification/utils/correlation.py +318 -0
- canns/analyzer/data/cell_classification/utils/geometry.py +442 -0
- canns/analyzer/data/cell_classification/utils/image_processing.py +416 -0
- canns/analyzer/data/cell_classification/visualization/__init__.py +19 -0
- canns/analyzer/data/cell_classification/visualization/grid_plots.py +292 -0
- canns/analyzer/data/cell_classification/visualization/hd_plots.py +200 -0
- canns/analyzer/metrics/__init__.py +2 -1
- canns/analyzer/visualization/core/config.py +46 -4
- canns/data/__init__.py +6 -1
- canns/data/datasets.py +154 -1
- canns/data/loaders.py +37 -0
- canns/pipeline/__init__.py +13 -9
- canns/pipeline/__main__.py +6 -0
- canns/pipeline/asa/runner.py +105 -41
- canns/pipeline/asa_gui/__init__.py +68 -0
- canns/pipeline/asa_gui/__main__.py +6 -0
- canns/pipeline/asa_gui/analysis_modes/__init__.py +42 -0
- canns/pipeline/asa_gui/analysis_modes/base.py +39 -0
- canns/pipeline/asa_gui/analysis_modes/batch_mode.py +21 -0
- canns/pipeline/asa_gui/analysis_modes/cohomap_mode.py +56 -0
- canns/pipeline/asa_gui/analysis_modes/cohospace_mode.py +194 -0
- canns/pipeline/asa_gui/analysis_modes/decode_mode.py +52 -0
- canns/pipeline/asa_gui/analysis_modes/fr_mode.py +81 -0
- canns/pipeline/asa_gui/analysis_modes/frm_mode.py +92 -0
- canns/pipeline/asa_gui/analysis_modes/gridscore_mode.py +123 -0
- canns/pipeline/asa_gui/analysis_modes/pathcompare_mode.py +199 -0
- canns/pipeline/asa_gui/analysis_modes/tda_mode.py +112 -0
- canns/pipeline/asa_gui/app.py +29 -0
- canns/pipeline/asa_gui/controllers/__init__.py +6 -0
- canns/pipeline/asa_gui/controllers/analysis_controller.py +59 -0
- canns/pipeline/asa_gui/controllers/preprocess_controller.py +89 -0
- canns/pipeline/asa_gui/core/__init__.py +15 -0
- canns/pipeline/asa_gui/core/cache.py +14 -0
- canns/pipeline/asa_gui/core/runner.py +1936 -0
- canns/pipeline/asa_gui/core/state.py +324 -0
- canns/pipeline/asa_gui/core/worker.py +260 -0
- canns/pipeline/asa_gui/main_window.py +184 -0
- canns/pipeline/asa_gui/models/__init__.py +7 -0
- canns/pipeline/asa_gui/models/config.py +14 -0
- canns/pipeline/asa_gui/models/job.py +31 -0
- canns/pipeline/asa_gui/models/presets.py +21 -0
- canns/pipeline/asa_gui/resources/__init__.py +16 -0
- canns/pipeline/asa_gui/resources/dark.qss +167 -0
- canns/pipeline/asa_gui/resources/light.qss +163 -0
- canns/pipeline/asa_gui/resources/styles.qss +130 -0
- canns/pipeline/asa_gui/utils/__init__.py +1 -0
- canns/pipeline/asa_gui/utils/formatters.py +15 -0
- canns/pipeline/asa_gui/utils/io_adapters.py +40 -0
- canns/pipeline/asa_gui/utils/validators.py +41 -0
- canns/pipeline/asa_gui/views/__init__.py +1 -0
- canns/pipeline/asa_gui/views/help_content.py +171 -0
- canns/pipeline/asa_gui/views/pages/__init__.py +6 -0
- canns/pipeline/asa_gui/views/pages/analysis_page.py +565 -0
- canns/pipeline/asa_gui/views/pages/preprocess_page.py +492 -0
- canns/pipeline/asa_gui/views/panels/__init__.py +1 -0
- canns/pipeline/asa_gui/views/widgets/__init__.py +21 -0
- canns/pipeline/asa_gui/views/widgets/artifacts_tab.py +44 -0
- canns/pipeline/asa_gui/views/widgets/drop_zone.py +80 -0
- canns/pipeline/asa_gui/views/widgets/file_list.py +27 -0
- canns/pipeline/asa_gui/views/widgets/gridscore_tab.py +308 -0
- canns/pipeline/asa_gui/views/widgets/help_dialog.py +27 -0
- canns/pipeline/asa_gui/views/widgets/image_tab.py +50 -0
- canns/pipeline/asa_gui/views/widgets/image_viewer.py +97 -0
- canns/pipeline/asa_gui/views/widgets/log_box.py +16 -0
- canns/pipeline/asa_gui/views/widgets/pathcompare_tab.py +200 -0
- canns/pipeline/asa_gui/views/widgets/popup_combo.py +25 -0
- canns/pipeline/gallery/__init__.py +15 -5
- canns/pipeline/gallery/__main__.py +11 -0
- canns/pipeline/gallery/app.py +705 -0
- canns/pipeline/gallery/runner.py +790 -0
- canns/pipeline/gallery/state.py +51 -0
- canns/pipeline/gallery/styles.tcss +123 -0
- canns/pipeline/launcher.py +81 -0
- {canns-0.13.1.dist-info → canns-0.14.0.dist-info}/METADATA +11 -1
- canns-0.14.0.dist-info/RECORD +163 -0
- canns-0.14.0.dist-info/entry_points.txt +5 -0
- canns/pipeline/_base.py +0 -50
- canns-0.13.1.dist-info/RECORD +0 -89
- canns-0.13.1.dist-info/entry_points.txt +0 -3
- {canns-0.13.1.dist-info → canns-0.14.0.dist-info}/WHEEL +0 -0
- {canns-0.13.1.dist-info → canns-0.14.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"""State management for the model gallery TUI."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from dataclasses import dataclass, field
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
|
|
8
|
+
MODEL_ANALYSIS_OPTIONS: dict[str, list[tuple[str, str]]] = {
|
|
9
|
+
"cann1d": [
|
|
10
|
+
("Connectivity Matrix", "connectivity"),
|
|
11
|
+
("Energy Landscape", "energy"),
|
|
12
|
+
("Tuning Curves", "tuning"),
|
|
13
|
+
("Template Matching", "template"),
|
|
14
|
+
("Neural Manifold", "manifold"),
|
|
15
|
+
],
|
|
16
|
+
"cann2d": [
|
|
17
|
+
("Connectivity Matrix", "connectivity"),
|
|
18
|
+
("Energy Landscape", "energy"),
|
|
19
|
+
("Firing Field", "firing_field"),
|
|
20
|
+
("Trajectory Comparison", "trajectory"),
|
|
21
|
+
("Neural Manifold", "manifold"),
|
|
22
|
+
],
|
|
23
|
+
"gridcell": [
|
|
24
|
+
("Connectivity Matrix", "connectivity"),
|
|
25
|
+
("Energy Landscape", "energy"),
|
|
26
|
+
("Firing Field", "firing_field"),
|
|
27
|
+
("Path Integration", "path_integration"),
|
|
28
|
+
("Neural Manifold", "manifold"),
|
|
29
|
+
],
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
@dataclass
|
|
34
|
+
class GalleryState:
|
|
35
|
+
"""Centralized state for the model gallery TUI."""
|
|
36
|
+
|
|
37
|
+
workdir: Path = field(default_factory=lambda: Path("."))
|
|
38
|
+
model: str = "cann1d"
|
|
39
|
+
analysis: str = "connectivity"
|
|
40
|
+
artifacts: dict[str, Path] = field(default_factory=dict)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def get_analysis_options(model: str) -> list[tuple[str, str]]:
|
|
44
|
+
"""Return analysis options for the selected model."""
|
|
45
|
+
return MODEL_ANALYSIS_OPTIONS.get(model, [("Connectivity Matrix", "connectivity")])
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def get_default_analysis(model: str) -> str:
|
|
49
|
+
"""Return the default analysis key for the selected model."""
|
|
50
|
+
options = get_analysis_options(model)
|
|
51
|
+
return options[0][1] if options else "connectivity"
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/* Gallery TUI Styles */
|
|
2
|
+
|
|
3
|
+
.hidden {
|
|
4
|
+
display: none;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
#main-container {
|
|
8
|
+
layout: horizontal;
|
|
9
|
+
height: 1fr;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
#left-panel {
|
|
13
|
+
width: 24;
|
|
14
|
+
min-width: 22;
|
|
15
|
+
max-width: 28;
|
|
16
|
+
height: 100%;
|
|
17
|
+
border-right: solid $primary;
|
|
18
|
+
padding: 1;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
#middle-panel {
|
|
22
|
+
layout: vertical;
|
|
23
|
+
width: 1fr;
|
|
24
|
+
min-width: 30;
|
|
25
|
+
height: 100%;
|
|
26
|
+
border-right: solid $primary;
|
|
27
|
+
overflow: hidden;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
#params-panel {
|
|
31
|
+
layout: vertical;
|
|
32
|
+
height: 100%;
|
|
33
|
+
width: 100%;
|
|
34
|
+
overflow: hidden;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
#right-panel {
|
|
38
|
+
width: 2fr;
|
|
39
|
+
min-width: 32;
|
|
40
|
+
height: 100%;
|
|
41
|
+
padding: 1;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
#params-header {
|
|
45
|
+
background: $boost;
|
|
46
|
+
padding: 1;
|
|
47
|
+
text-style: bold;
|
|
48
|
+
dock: top;
|
|
49
|
+
height: 3;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
#params-scroll {
|
|
53
|
+
height: 1fr;
|
|
54
|
+
width: 100%;
|
|
55
|
+
overflow-y: scroll;
|
|
56
|
+
scrollbar-size-vertical: 1;
|
|
57
|
+
padding: 0 1 2 1;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
#params-cann1d,
|
|
61
|
+
#params-cann2d,
|
|
62
|
+
#params-gridcell {
|
|
63
|
+
height: auto;
|
|
64
|
+
width: 100%;
|
|
65
|
+
overflow: auto;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
ParamGroup {
|
|
69
|
+
border: round $secondary;
|
|
70
|
+
padding: 1;
|
|
71
|
+
margin: 1 0;
|
|
72
|
+
height: auto;
|
|
73
|
+
width: 100%;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.param-group-title {
|
|
77
|
+
text-style: bold;
|
|
78
|
+
color: $accent;
|
|
79
|
+
dock: top;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
#workdir-label {
|
|
83
|
+
background: $boost;
|
|
84
|
+
padding: 1;
|
|
85
|
+
margin-bottom: 1;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
Button {
|
|
89
|
+
margin: 1 0;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
#progress-bar {
|
|
93
|
+
margin: 1 0;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
#run-status {
|
|
97
|
+
margin-top: 1;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
ImagePreview {
|
|
101
|
+
height: 3fr;
|
|
102
|
+
min-height: 20;
|
|
103
|
+
border: solid $accent;
|
|
104
|
+
padding: 1;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
#log-viewer {
|
|
108
|
+
height: 1fr;
|
|
109
|
+
border: solid $primary;
|
|
110
|
+
padding: 1;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.running {
|
|
114
|
+
background: $warning;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.success {
|
|
118
|
+
background: $success;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.error {
|
|
122
|
+
background: $error;
|
|
123
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"""Launcher for selecting ASA or Gallery TUI."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import os
|
|
6
|
+
|
|
7
|
+
from textual.app import App, ComposeResult
|
|
8
|
+
from textual.binding import Binding
|
|
9
|
+
from textual.containers import Container, Vertical
|
|
10
|
+
from textual.widgets import Button, Label
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class ModePicker(App[str | None]):
|
|
14
|
+
"""Select which TUI to run."""
|
|
15
|
+
|
|
16
|
+
TITLE = "CANNs TUI Launcher"
|
|
17
|
+
|
|
18
|
+
CSS = """
|
|
19
|
+
Screen {
|
|
20
|
+
align: center middle;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
#card {
|
|
24
|
+
width: 68;
|
|
25
|
+
height: 18;
|
|
26
|
+
border: thick $accent;
|
|
27
|
+
background: $surface;
|
|
28
|
+
padding: 2;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
#title {
|
|
32
|
+
text-style: bold;
|
|
33
|
+
margin-bottom: 1;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
#subtitle {
|
|
37
|
+
color: $text-muted;
|
|
38
|
+
margin-bottom: 2;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
Button {
|
|
42
|
+
width: 100%;
|
|
43
|
+
margin: 1 0;
|
|
44
|
+
}
|
|
45
|
+
"""
|
|
46
|
+
|
|
47
|
+
BINDINGS = [
|
|
48
|
+
Binding("escape", "quit", "Quit"),
|
|
49
|
+
]
|
|
50
|
+
|
|
51
|
+
def compose(self) -> ComposeResult:
|
|
52
|
+
with Container(id="card"):
|
|
53
|
+
yield Label("Choose a workflow", id="title")
|
|
54
|
+
yield Label("ASA analysis or Model Gallery", id="subtitle")
|
|
55
|
+
with Vertical():
|
|
56
|
+
yield Button("ASA (Attractor Structure Analyzer)", id="btn-asa", variant="primary")
|
|
57
|
+
yield Button("Model Gallery", id="btn-gallery", variant="primary")
|
|
58
|
+
yield Button("Quit", id="btn-quit")
|
|
59
|
+
|
|
60
|
+
def on_button_pressed(self, event: Button.Pressed) -> None:
|
|
61
|
+
if event.button.id == "btn-asa":
|
|
62
|
+
self.exit(result="asa")
|
|
63
|
+
elif event.button.id == "btn-gallery":
|
|
64
|
+
self.exit(result="gallery")
|
|
65
|
+
elif event.button.id == "btn-quit":
|
|
66
|
+
self.exit(result=None)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def main() -> None:
|
|
70
|
+
"""Entry point for the unified canns-tui launcher."""
|
|
71
|
+
os.environ.setdefault("MPLBACKEND", "Agg")
|
|
72
|
+
|
|
73
|
+
selection = ModePicker().run()
|
|
74
|
+
if selection == "gallery":
|
|
75
|
+
from .gallery import GalleryApp
|
|
76
|
+
|
|
77
|
+
GalleryApp().run()
|
|
78
|
+
elif selection == "asa":
|
|
79
|
+
from .asa import ASAApp
|
|
80
|
+
|
|
81
|
+
ASAApp().run()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: canns
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.14.0
|
|
4
4
|
Summary: A Python Library for Continuous Attractor Neural Networks
|
|
5
5
|
Project-URL: Repository, https://github.com/routhleck/canns
|
|
6
6
|
Author-email: Sichao He <sichaohe@outlook.com>
|
|
@@ -20,10 +20,15 @@ Requires-Dist: brainpy[cpu]
|
|
|
20
20
|
Requires-Dist: canns-lib>=0.6.2
|
|
21
21
|
Requires-Dist: climage>=0.2.2
|
|
22
22
|
Requires-Dist: furo>=2025.7.19
|
|
23
|
+
Requires-Dist: h5py>=3.7
|
|
24
|
+
Requires-Dist: igraph>=1.0.0
|
|
23
25
|
Requires-Dist: imageio[ffmpeg]>=2.37.0
|
|
26
|
+
Requires-Dist: leidenalg>=0.11.0
|
|
27
|
+
Requires-Dist: matplotlib>=3.5
|
|
24
28
|
Requires-Dist: notebook>=7.4.4
|
|
25
29
|
Requires-Dist: numba>=0.56.0
|
|
26
30
|
Requires-Dist: numpy<2.3,>=1.24
|
|
31
|
+
Requires-Dist: scikit-image>=0.19
|
|
27
32
|
Requires-Dist: scipy>=1.9.0
|
|
28
33
|
Requires-Dist: seaborn>=0.13.2
|
|
29
34
|
Requires-Dist: textual>=7.3.0
|
|
@@ -34,6 +39,11 @@ Provides-Extra: cuda12
|
|
|
34
39
|
Requires-Dist: brainpy[cuda12]; (platform_system == 'Linux') and extra == 'cuda12'
|
|
35
40
|
Provides-Extra: cuda13
|
|
36
41
|
Requires-Dist: brainpy[cuda13]; (platform_system == 'Linux') and extra == 'cuda13'
|
|
42
|
+
Provides-Extra: gui
|
|
43
|
+
Requires-Dist: imageio; extra == 'gui'
|
|
44
|
+
Requires-Dist: pillow; extra == 'gui'
|
|
45
|
+
Requires-Dist: pyside6>=6.6.0; extra == 'gui'
|
|
46
|
+
Requires-Dist: qtawesome; extra == 'gui'
|
|
37
47
|
Provides-Extra: tpu
|
|
38
48
|
Requires-Dist: brainpy[tpu]; (platform_system == 'Linux') and extra == 'tpu'
|
|
39
49
|
Description-Content-Type: text/markdown
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
canns/__init__.py,sha256=ZK4buN-csoLKXaKtoDrOoZbNGCoLCNuF2XS96X8LbH8,1523
|
|
2
|
+
canns/_version.py,sha256=zIvJPOGBFvo4VV6f586rlO_bvhuFp1fsxjf6xhsqkJY,1547
|
|
3
|
+
canns/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
+
canns/analyzer/__init__.py,sha256=EQ02fYHkpMADp-ojpVCVtapuSPkl6j5WVfdPy0mOTs4,506
|
|
5
|
+
canns/analyzer/data/__init__.py,sha256=RfS8vwApLkNF05Y_lfPaJpN_bRv-mOA_uFziaduDHgI,354
|
|
6
|
+
canns/analyzer/data/asa/__init__.py,sha256=w1RC5QbCXh9UH1PrrBXdclopH86jAJyxNw-nCymGgA8,2312
|
|
7
|
+
canns/analyzer/data/asa/cohospace.py,sha256=wiTu03IqxnkJeSRzlJpcN31OZRG3jfgq4TG8mVvs3R0,37246
|
|
8
|
+
canns/analyzer/data/asa/config.py,sha256=qm0k0nt0xuDUK5t63MG7ii7fgs2XbxyLxKOaOKJuB_s,6398
|
|
9
|
+
canns/analyzer/data/asa/decode.py,sha256=NG8vVx2cPG7uSJDovnC2vzk0dsqU8oR4jaNPxxrvCc0,16501
|
|
10
|
+
canns/analyzer/data/asa/embedding.py,sha256=fa1wEH2puMw8HiZIYCufas51uvnlduxwNMUPpwkbdoc,9643
|
|
11
|
+
canns/analyzer/data/asa/filters.py,sha256=D-1mDVn4hBEAphKUgx1gQEUfgbghKcNQhZmr4xEExQA,7146
|
|
12
|
+
canns/analyzer/data/asa/fly_roi.py,sha256=_scBOd-4t9yv_1tHk7wbXJwPieU-L-QtFJY6fhHpxDI,38031
|
|
13
|
+
canns/analyzer/data/asa/fr.py,sha256=jt99H50e1RRAQgMIdkfK0rBbembZJEr9SMrxK-ZI_LA,13449
|
|
14
|
+
canns/analyzer/data/asa/path.py,sha256=dL6hsqBoPFfC4ZrHDVFDWprbRfJAAYpiq4tIkZ6NvHY,15540
|
|
15
|
+
canns/analyzer/data/asa/plotting.py,sha256=o0fErGzDtbERiZK7uzyQN6Jd7Hm6jXZFg4aGZ100BQU,42766
|
|
16
|
+
canns/analyzer/data/asa/tda.py,sha256=7IdxhBNEE99qenG6Zi4B5tv_L9K6gAW6HHxYGiErx4c,30574
|
|
17
|
+
canns/analyzer/data/cell_classification/__init__.py,sha256=ho8yYcBf0Do_M3V1l0Li26gLDi_DIS4F-Pr5IMLcJ5A,2221
|
|
18
|
+
canns/analyzer/data/cell_classification/core/__init__.py,sha256=Lv1zkGI3UnFT4yGkj351Jj-KEVtZlmRUM37SDby1bIE,761
|
|
19
|
+
canns/analyzer/data/cell_classification/core/grid_cells.py,sha256=fRFixjvPVJy0QF9MygGqpIk1lnTToMZvvbGubM5woRk,21547
|
|
20
|
+
canns/analyzer/data/cell_classification/core/grid_modules_leiden.py,sha256=xWrbL51BeU9pIaCzak54upFBeSUtnx_V_naILjzzExk,9032
|
|
21
|
+
canns/analyzer/data/cell_classification/core/head_direction.py,sha256=CQKyon9pb3K5SBkesuqkBTU-QXx_-g0FBa0bblWDPOw,12060
|
|
22
|
+
canns/analyzer/data/cell_classification/core/spatial_analysis.py,sha256=VT00mKVdxmudTICHI3lAk4ppHM3UKwxd-t1kTsYoFpA,13315
|
|
23
|
+
canns/analyzer/data/cell_classification/io/__init__.py,sha256=ec9fN-abmsoQZH0pn0sEgrfFW0dtfXEuVFPOyRihvzM,132
|
|
24
|
+
canns/analyzer/data/cell_classification/io/matlab_loader.py,sha256=3Rj5Lu-Zzj-oxBKhgME541tZZJ_NztgXM7aNrK_Ivrw,13297
|
|
25
|
+
canns/analyzer/data/cell_classification/utils/__init__.py,sha256=Hplr3LWYLZqP-zRbGbU_EmuDR-Ayyt95JIJ6zc-43k0,969
|
|
26
|
+
canns/analyzer/data/cell_classification/utils/circular_stats.py,sha256=fQ1PNBiF_ZtHSVhL4FCWC49Y6qiMwq2hibOnXZnvoV8,11077
|
|
27
|
+
canns/analyzer/data/cell_classification/utils/correlation.py,sha256=57Ckn8OQGLipT7qZIGl6wgooQ_8gwp01g9lVc8I3Cs0,10354
|
|
28
|
+
canns/analyzer/data/cell_classification/utils/geometry.py,sha256=jOLh3GeO-riR5a7r7Q7uON3HU_bYOZZJLbokU5bjCOQ,12683
|
|
29
|
+
canns/analyzer/data/cell_classification/utils/image_processing.py,sha256=o9bLT4ycJ_IF7SKBe2RqSWIQwNcpi9v4AI-N5vpm_jM,12805
|
|
30
|
+
canns/analyzer/data/cell_classification/visualization/__init__.py,sha256=HJy71bZuvvfFxrd4PTj3AUon68FBjZjtmjgky20oo5o,450
|
|
31
|
+
canns/analyzer/data/cell_classification/visualization/grid_plots.py,sha256=NFtyYOe2Szt0EOIwQmZradwEvvRjjm7mm6VnnGThDQ0,7914
|
|
32
|
+
canns/analyzer/data/cell_classification/visualization/hd_plots.py,sha256=nzw1jck3VHvAFsJAGelhrJf1q27A5PI0r3NKVgeea8U,5670
|
|
33
|
+
canns/analyzer/metrics/__init__.py,sha256=DTsrv1HW133_RgvhWzz7Gx-bP2hOZbPO2unCPPyf9gs,178
|
|
34
|
+
canns/analyzer/metrics/spatial_metrics.py,sha256=ZdS7tGH3lMgNlSYoHlH8IPsCw4XL0KtEnGALg_WHRX8,8965
|
|
35
|
+
canns/analyzer/metrics/systematic_ratemap.py,sha256=MzXfa6_fGgrxD5xEd4hfrZR_fyUmhXQCxnPE3hUonE8,14004
|
|
36
|
+
canns/analyzer/metrics/utils.py,sha256=Ft6lagKdTRJIz6hj9Zmy0i-IU--_Kdrrfzh6xVOQb8g,7402
|
|
37
|
+
canns/analyzer/model_specific/__init__.py,sha256=UCw_MwJJh2AQtnfVeJSzvTVTdVN1ev5oGGoyZtSt1PU,80
|
|
38
|
+
canns/analyzer/model_specific/hopfield.py,sha256=zNPChxX_GuCgc5-KP1KMwHyUDVUh_5EMQzZygOGtIW0,7741
|
|
39
|
+
canns/analyzer/slow_points/__init__.py,sha256=teH7uaVLCXeZGirfez8i3VkbR49pd4isedEtSzweHQs,532
|
|
40
|
+
canns/analyzer/slow_points/checkpoint.py,sha256=s4_-5HZJvmnyFqpK1O9WWYkhAhZj1i5jn9SH6XTGwoY,2980
|
|
41
|
+
canns/analyzer/slow_points/finder.py,sha256=y-YKg-LI7lRM4JMghfcb5NGSYhIM2VPRA37YSCkVK_4,25437
|
|
42
|
+
canns/analyzer/slow_points/fixed_points.py,sha256=Qp-iezwydWWUTchb2hGXJv0QKJqIm9gSG6hh0H9Eb6E,10099
|
|
43
|
+
canns/analyzer/slow_points/visualization.py,sha256=sRmmxs900OSB680MTp0PNIGLpS5i5AmJ58ek20vmrSE,10610
|
|
44
|
+
canns/analyzer/visualization/__init__.py,sha256=pNIokzS8y3ydzEMmVm1FNrOMRALDeuOHbcwZicPUm90,2131
|
|
45
|
+
canns/analyzer/visualization/energy_plots.py,sha256=u0TOLzd7AWEfs-tRYZg1UBwsGYGPF_eWsMip1ZG9jPA,35671
|
|
46
|
+
canns/analyzer/visualization/spatial_plots.py,sha256=30m02xhYkZfEETCtvBSwLix9SEOPcLZTg0AGGFvPc2w,34605
|
|
47
|
+
canns/analyzer/visualization/spike_plots.py,sha256=wOm4gh_3obJy6gwo31maoaiZ7O8rsoYeFdhseoVmX78,12280
|
|
48
|
+
canns/analyzer/visualization/theta_sweep_plots.py,sha256=2kiP7-IizqGm0q-ohQ4HhDZpm3sqs_lgn3GErHEZzbI,62262
|
|
49
|
+
canns/analyzer/visualization/tuning_plots.py,sha256=9JOeC4dlulVzpHQWDVy3dlJnxcBZiOPeapPdVFR-7Zk,5178
|
|
50
|
+
canns/analyzer/visualization/core/__init__.py,sha256=Vngm2A05cTu9ZVEYepTF7lVpuwQvMRjXs9XPLfZzedI,1928
|
|
51
|
+
canns/analyzer/visualization/core/animation.py,sha256=qfBYMd81_GwWEw4MHOu3GrVXJtHS9W1xxtmOx-J5ZyM,7664
|
|
52
|
+
canns/analyzer/visualization/core/backend.py,sha256=Nbk-ARL_xeWlb3nl5SUPrFQNns2wq5BeHU3Q_tAbd_c,9539
|
|
53
|
+
canns/analyzer/visualization/core/config.py,sha256=PI4GnEwjwDhRpWPfe-bdYBLIO9ica5B3dYUC_VhpSek,25542
|
|
54
|
+
canns/analyzer/visualization/core/jupyter_utils.py,sha256=JD56VeeWb7w9t5DJ8TpgnxRWkUK46ArbbPSTlFdIM10,6034
|
|
55
|
+
canns/analyzer/visualization/core/rendering.py,sha256=YCbiXu8MOAqE9FVb_id5JKr5g9O64sCh-dOs0EK4gnU,18291
|
|
56
|
+
canns/analyzer/visualization/core/writers.py,sha256=HLsP953hgsv140ZX2XPzHfCUTqenjmjbLNrbknKam_s,15607
|
|
57
|
+
canns/data/__init__.py,sha256=cEHoZAgeTGVmPheo_GFijpoCr_al-FEwLr9VQbEe3_A,1030
|
|
58
|
+
canns/data/datasets.py,sha256=2Jp6hEb8PWkCq4JeiCbRKll5FZW693GuIVGr2v_WWtM,18664
|
|
59
|
+
canns/data/loaders.py,sha256=SuYH5tdcHmZXjWWEicaZVaIIhCD9DZR3IaMGyHXQXqI,14654
|
|
60
|
+
canns/models/__init__.py,sha256=2j5josUkwQQq8Of_gLjecYry65DuC96J8X-RlRqskYs,305
|
|
61
|
+
canns/models/basic/__init__.py,sha256=mNqyGz_z29YNMC345b_VyuVI9hQQ9NFe9mIU9f5KGVU,329
|
|
62
|
+
canns/models/basic/_base.py,sha256=L7oECkO5-5j9r1faaz6RDIqQKHy6DEflHRGHyaW9ARg,3800
|
|
63
|
+
canns/models/basic/cann.py,sha256=uR7j5u71b4qLFK_0xS5pXTZoLyEOa0tvsmT3D0O-CMQ,24588
|
|
64
|
+
canns/models/basic/grid_cell.py,sha256=8nGXgXAh8UDNx3j3taqwBOsgOBVxjIk9u45v9zFSvrE,31955
|
|
65
|
+
canns/models/basic/hierarchical_model.py,sha256=V2QRuTVirT3_7quFC6sJb1JyNIMbo5WlAo7BybV6QKE,53847
|
|
66
|
+
canns/models/basic/theta_sweep_model.py,sha256=GGd3_X81eNzPoguXbleVWO_ID253FzQOqdxEPA5VJUo,34075
|
|
67
|
+
canns/models/brain_inspired/__init__.py,sha256=MuG-adTkIIhOxs63u0f0b0oO6srilGQzR_Gta8qXeXY,620
|
|
68
|
+
canns/models/brain_inspired/_base.py,sha256=YyzgmCh-YzUsK22NbSAapUWHk03jwJ49b1kRCfMWbQk,3820
|
|
69
|
+
canns/models/brain_inspired/hopfield.py,sha256=KQmXWBvUTdQ17t9VG-8Sy_uJznEt4eunONYJsiN5GvY,6903
|
|
70
|
+
canns/models/brain_inspired/linear.py,sha256=oRjJnTqrheAADA5unYBu83RSm4UoUH-BK2Mt_liwDtw,6141
|
|
71
|
+
canns/models/brain_inspired/spiking.py,sha256=hr2w7c6Eobxwp2z6vkV9Yivpv1964-cno-XOfMSh3RU,5557
|
|
72
|
+
canns/models/hybrid/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
73
|
+
canns/pipeline/__init__.py,sha256=6NQqkpSV6AW83FxInGh44Xz0R-p-3B307Z3P2VIDDNA,454
|
|
74
|
+
canns/pipeline/__main__.py,sha256=wUC2N3YPdMpED1nlgmlnO19EcOaM303JxUiM5_an7p0,113
|
|
75
|
+
canns/pipeline/launcher.py,sha256=GASiWSfezljY56swjfLUR_QZCUU5Acm4v3mh9kNYayE,1988
|
|
76
|
+
canns/pipeline/asa/__init__.py,sha256=JR4T0onfmkKMOrUq-k0San1RTSb1om6cd27tWovBp0c,466
|
|
77
|
+
canns/pipeline/asa/__main__.py,sha256=_KgAeuGQ2-SXmuZhvZCkRx9luFf7VgKUCuszNlUswyA,197
|
|
78
|
+
canns/pipeline/asa/app.py,sha256=L5al6PrGoEzRNosZlHbn-VaTxXCoVyfKFn0f1e-0FUI,49906
|
|
79
|
+
canns/pipeline/asa/runner.py,sha256=Bq1uKEEtn-qzOnftpmQ1YCbDr_ygYFj98C1H2Oylkfo,45246
|
|
80
|
+
canns/pipeline/asa/screens.py,sha256=DbqidxmoKe4KzSLuxuriVv1PIVFn5Z-PfScVfjrIiEA,5954
|
|
81
|
+
canns/pipeline/asa/state.py,sha256=XukidfcFIOmm9ttT226FOTYR5hv2VAY8_DZt7V1Ml2g,6955
|
|
82
|
+
canns/pipeline/asa/styles.tcss,sha256=eaXI3rQeWdBYmWdLJMMiSO6acHtreLRVKKoIHb2-dBk,3349
|
|
83
|
+
canns/pipeline/asa/widgets.py,sha256=3vPGGQWP9V5FwuwqykCVp7dzAHdpcFkDqib0DtIw-lQ,8087
|
|
84
|
+
canns/pipeline/asa_gui/__init__.py,sha256=tkomNZgnipnsIf7BzP8rNZ4JLTVS-RZNPM7Et20Y4mI,1953
|
|
85
|
+
canns/pipeline/asa_gui/__main__.py,sha256=2UOQtIE5oXkcq9HcuY13M3Jk6-uaDu8A0VJfvr203ck,134
|
|
86
|
+
canns/pipeline/asa_gui/app.py,sha256=Wd-tVGNPE1mQ0S9bET-cyjfj5UWsTIFFHOQRu0lngBs,833
|
|
87
|
+
canns/pipeline/asa_gui/main_window.py,sha256=rZpqAXCY5KyrVQRmOzogX-8SaA-Xep7KyzJq34TIoA4,6927
|
|
88
|
+
canns/pipeline/asa_gui/analysis_modes/__init__.py,sha256=m5tra-3lOcKi09HV3WxvTnDuF5lgV92C_fHH_4V87zw,990
|
|
89
|
+
canns/pipeline/asa_gui/analysis_modes/base.py,sha256=-xuzrr5-XItZldl7DUYfeLLvvXi-i7wpzk1IkTaPAzQ,1220
|
|
90
|
+
canns/pipeline/asa_gui/analysis_modes/batch_mode.py,sha256=sua3cD6G4vTGT7fUSrdvYNwldA3KZ1O4MCCsSOX4knc,531
|
|
91
|
+
canns/pipeline/asa_gui/analysis_modes/cohomap_mode.py,sha256=RCZv2TZ7_BmaQZFFradsLlumB7MgfiMENxWjxGFZB8Q,1748
|
|
92
|
+
canns/pipeline/asa_gui/analysis_modes/cohospace_mode.py,sha256=HBb7nrdfKz8hY5QkY8YhKVWxtvRyyneFo6fN7dumVSw,7115
|
|
93
|
+
canns/pipeline/asa_gui/analysis_modes/decode_mode.py,sha256=wPuuoXA2eQt_tv4Nh57cBNvzrW87cqRlKS6ckVgt280,1586
|
|
94
|
+
canns/pipeline/asa_gui/analysis_modes/fr_mode.py,sha256=mS6FpLBwJB-ugYKgPBsVP6X4cKMlw6S0gsT5Q8qTNls,2928
|
|
95
|
+
canns/pipeline/asa_gui/analysis_modes/frm_mode.py,sha256=OYl0CkUjqy2azu_T7mFWJ58lSTaFCsFFfBhmg1nRebE,3038
|
|
96
|
+
canns/pipeline/asa_gui/analysis_modes/gridscore_mode.py,sha256=xcq-HLJxqYFu5Nck9cLN6Rp2g8eUDjSGI8_3AkEXNYg,4321
|
|
97
|
+
canns/pipeline/asa_gui/analysis_modes/pathcompare_mode.py,sha256=5aZpClyO813tXQsbUuBchR2uNHyjQXQeNEINNaZyfrM,6877
|
|
98
|
+
canns/pipeline/asa_gui/analysis_modes/tda_mode.py,sha256=jNlRwpzsYIKUKFqRyjDVChoJib7h_5iz2te-mK7Qf1I,4119
|
|
99
|
+
canns/pipeline/asa_gui/controllers/__init__.py,sha256=RuQz960T4kEuQsBI_cjS0cQgFyqAdblLXy_dDoLPbTE,198
|
|
100
|
+
canns/pipeline/asa_gui/controllers/analysis_controller.py,sha256=8cKs-RYHh_NflP7xeS0u0_y9WsZ268H1Wyp-wHZC97I,1769
|
|
101
|
+
canns/pipeline/asa_gui/controllers/preprocess_controller.py,sha256=uNZifNGadYPxAVyWnfonOs5pwCgxwB1nrBGqvv8Y3hU,2825
|
|
102
|
+
canns/pipeline/asa_gui/core/__init__.py,sha256=vfJVs5T999vh04Fi98kRLjD8AkbqpIGxmRiUhaxCNYY,371
|
|
103
|
+
canns/pipeline/asa_gui/core/cache.py,sha256=qAg9Su_T1xIR5j8DK9KzwSdCGs0lKtMaZKr0Lhcj0KU,327
|
|
104
|
+
canns/pipeline/asa_gui/core/runner.py,sha256=6Gz9ptWhVrUfsxW0EkyrSjilEj5GjyajhJ08RU8wye8,74509
|
|
105
|
+
canns/pipeline/asa_gui/core/state.py,sha256=hjv8NrgROlACgjm5VZtQL58_podJFWS2sLHi5YiVLJY,10148
|
|
106
|
+
canns/pipeline/asa_gui/core/worker.py,sha256=ig6fwcMLNR6N3oSX3LW-bJdXm3Hol29iAVX9pU6KWSc,7778
|
|
107
|
+
canns/pipeline/asa_gui/models/__init__.py,sha256=Pr5wfeu_iA8bh2ob9tfWQcWmzWydYjMwups29R6c8-U,217
|
|
108
|
+
canns/pipeline/asa_gui/models/config.py,sha256=oDAeNlReKJEITc8B5AT9xxQl3Ug1yaGs6DrzSJcABXc,314
|
|
109
|
+
canns/pipeline/asa_gui/models/job.py,sha256=_HdhJIzdH9OSKrRpcl3WCS4O04Bvur5uT9yb9oOWBuE,852
|
|
110
|
+
canns/pipeline/asa_gui/models/presets.py,sha256=zEtR1_35ovSuGa3xMOvZoVDJJUK0rSi8OOlfkQWFvFE,519
|
|
111
|
+
canns/pipeline/asa_gui/resources/__init__.py,sha256=t2gkV9PuOV_HVRqR7qzBOA4ADBlyTEnVHy-0jQlWJTA,432
|
|
112
|
+
canns/pipeline/asa_gui/resources/dark.qss,sha256=s9Uhyod7aLwIC5QqYOVIKN7NofcXbV1ESZk-j98YMY4,2990
|
|
113
|
+
canns/pipeline/asa_gui/resources/light.qss,sha256=B8rU85VrYMKf8QasvRiR-tCypov7pzIOFr7lcL81mcw,2883
|
|
114
|
+
canns/pipeline/asa_gui/resources/styles.qss,sha256=MaWWGn3f9yvOYpgdgy8VyITWk5vGGPut2H_rnQM4-EU,2188
|
|
115
|
+
canns/pipeline/asa_gui/utils/__init__.py,sha256=UDPlNIUi5Jl16YiQbmOWz7TTTjFFJn_nDwDuYleAlKM,35
|
|
116
|
+
canns/pipeline/asa_gui/utils/formatters.py,sha256=w9MP0mGior_hxPqGhjNCXxwNbItgnaCDTdxJ1zUPGgk,347
|
|
117
|
+
canns/pipeline/asa_gui/utils/io_adapters.py,sha256=MVYxpI6-TYbIJb1LpT2N24t2X7JlNhcUrEurs25pH_A,1144
|
|
118
|
+
canns/pipeline/asa_gui/utils/validators.py,sha256=x5Tw2Pk434vlfQKBYgUOJPL6MLw0OhlvI83xRgiebFI,1341
|
|
119
|
+
canns/pipeline/asa_gui/views/__init__.py,sha256=ThoLlMw7bKxA7lkv_AvIR1mbpaoM0vkIxVP1p7mlzQM,28
|
|
120
|
+
canns/pipeline/asa_gui/views/help_content.py,sha256=kL7MSwc9v3gHLz86Apiy64xbwymt9r7sPEjz5ka6EB0,8452
|
|
121
|
+
canns/pipeline/asa_gui/views/pages/__init__.py,sha256=xB7VTY_hKfoCNMGeWZbV3gHG9ErrzmwqW30UlUkbqgE,161
|
|
122
|
+
canns/pipeline/asa_gui/views/pages/analysis_page.py,sha256=CNt-ZXaWuHa1gOkTgBpZYYsrklW0L8WS74PL_9NnlZ4,22538
|
|
123
|
+
canns/pipeline/asa_gui/views/pages/preprocess_page.py,sha256=N7IwQCNtqd30cV81S2AgejWJKIJ2aD9IVHVWSFa26dA,19472
|
|
124
|
+
canns/pipeline/asa_gui/views/panels/__init__.py,sha256=Spqmc0Sjh38cgr42gszmiogZQFFOLN1yL7ekSpVJCrE,36
|
|
125
|
+
canns/pipeline/asa_gui/views/widgets/__init__.py,sha256=xaTYXw99OL8ye1cpfoKgSwqC7c2B6lrLLsYHRB16m64,481
|
|
126
|
+
canns/pipeline/asa_gui/views/widgets/artifacts_tab.py,sha256=U_fuOCfSmkDhx3G97aod-8UPSIFVz_MrsU4b_ik_5qE,1431
|
|
127
|
+
canns/pipeline/asa_gui/views/widgets/drop_zone.py,sha256=ubllx8LpkpodRRMxsbF9RLQFdEoeUmrSARCrqlDp8Lg,2493
|
|
128
|
+
canns/pipeline/asa_gui/views/widgets/file_list.py,sha256=Q4nXL0YQEdJ9hsMzkW9CaDb-t0I-p6zuu5cFsv0n-no,746
|
|
129
|
+
canns/pipeline/asa_gui/views/widgets/gridscore_tab.py,sha256=abiSsiv-kjR4rkf1aMkW-a0-oQQuoghCFDDSkw9mv9Y,10802
|
|
130
|
+
canns/pipeline/asa_gui/views/widgets/help_dialog.py,sha256=8basm3vFY_elYZKVb59Pc0xzCopi8KpqSN9ks5AO3bI,825
|
|
131
|
+
canns/pipeline/asa_gui/views/widgets/image_tab.py,sha256=_EFuN2cDR1JhkpXYfXNpBGGQm-KXofgEoVWPMIl0tD0,1618
|
|
132
|
+
canns/pipeline/asa_gui/views/widgets/image_viewer.py,sha256=HGTamX9ks2PBNRRk7L7RPhO4MEW4zcYGDFK3behbthY,3632
|
|
133
|
+
canns/pipeline/asa_gui/views/widgets/log_box.py,sha256=YNRU2eJcHtaM864bpGhkJM1SqmSSda3-A_8AgG-EWrc,394
|
|
134
|
+
canns/pipeline/asa_gui/views/widgets/pathcompare_tab.py,sha256=FsHYWjAO_RWu971anOnmEHpTLYxlO3E3x_PsQn2eSpY,6812
|
|
135
|
+
canns/pipeline/asa_gui/views/widgets/popup_combo.py,sha256=M_MbDNm7pbCr1xm2z6Ffge6tjEliAoOPc5LpJ29QHC0,857
|
|
136
|
+
canns/pipeline/gallery/__init__.py,sha256=Plw_j37H5R8-w4Xw29cCsTgh1CEe2rAJrGgX_F-iBG0,288
|
|
137
|
+
canns/pipeline/gallery/__main__.py,sha256=_WuxDPMKGrfvNTJvKRjXhgm9RxbhUsOXxrUIZziC7g0,213
|
|
138
|
+
canns/pipeline/gallery/app.py,sha256=gi5bd3eFVA4SFm7m8EJaOfBRdfquF_iHFu1ntLW6om4,31857
|
|
139
|
+
canns/pipeline/gallery/runner.py,sha256=oJ3VCanwlAukwPtkYid57jSFKZdneq5QGD6Ts_6Of_E,29842
|
|
140
|
+
canns/pipeline/gallery/state.py,sha256=UD1uP3xF2vYOQ0xj-o4117e83L2iQ7EAC3FTwhvV0d8,1635
|
|
141
|
+
canns/pipeline/gallery/styles.tcss,sha256=E2xDFpTp03t-L0uK1BW8YJztMJMQsg9p2e7Eh5zHwS0,1615
|
|
142
|
+
canns/task/__init__.py,sha256=sfo8TBBVAqkx73Nu5lVv77UCwZjKqjt042ezW4Wv2Ec,350
|
|
143
|
+
canns/task/_base.py,sha256=rdRy4mr6x53z4aJv04UJcpqCyv78AxB1k1DhxnriLpg,4401
|
|
144
|
+
canns/task/closed_loop_navigation.py,sha256=QxxLdAg4Zd8763bS001jFqfts3A6_r6hpTTfrh1LdW8,10204
|
|
145
|
+
canns/task/navigation_base.py,sha256=s7mgXKhJyxIEUnSY8zXL3k9kH26MMQDv2xptzObu7Fc,40692
|
|
146
|
+
canns/task/open_loop_navigation.py,sha256=jD77GVIGLaBVm0zKmOfghKk_Vj_9pjkjK8_a40907bU,45402
|
|
147
|
+
canns/task/tracking.py,sha256=KNJ7QkecRimxDa4lLC9JnzTvQGB-c0_lvU-InlmcLOY,31866
|
|
148
|
+
canns/trainer/__init__.py,sha256=ouHRuCuLuwFyrsOWbaotGxHIs5BdiYBtMhqE2k7HcKI,660
|
|
149
|
+
canns/trainer/_base.py,sha256=EQIXnvRvhCo0veTItGQumNeGuerHzsqipxyGZGIt2QI,1536
|
|
150
|
+
canns/trainer/bcm.py,sha256=-KjncsWsVGZVpmcIJIA9BvQf9AFw0M_4PcavAFIwkvA,6349
|
|
151
|
+
canns/trainer/hebbian.py,sha256=b6HcLrYPgcoBJUN6nZSoFILFMFaKYn-cz3FZ9SVOppI,23740
|
|
152
|
+
canns/trainer/oja.py,sha256=I6oCXmZj4wb30_cBVaNrye8YTxPRYLL2cdwULNaaops,5617
|
|
153
|
+
canns/trainer/sanger.py,sha256=cvBB7v9EA-69semVjJu_Pg9AQffZZ5sj0KGnw63CJAo,6638
|
|
154
|
+
canns/trainer/stdp.py,sha256=kH0FYkHbluPhczkTf7TxZrlFME65Y4fRY6b-jqPl10c,8670
|
|
155
|
+
canns/trainer/utils.py,sha256=ZdoLiRqFLfKXsWi0KX3wGUp0OqFikwiou8dPf3xvFhE,2847
|
|
156
|
+
canns/typing/__init__.py,sha256=mXySdfmD8fA56WqZTb1Nj-ZovcejwLzNjuk6PRfTwmA,156
|
|
157
|
+
canns/utils/__init__.py,sha256=OMyZ5jqZAIUS2Jr0qcnvvrx6YM-BZ1EJy5uZYeA3HC0,366
|
|
158
|
+
canns/utils/benchmark.py,sha256=oJ7nvbvnQMh4_MZh7z160NPLp-197X0rEnmnLHYlev4,1361
|
|
159
|
+
canns-0.14.0.dist-info/METADATA,sha256=ZU3RhccxC_TpCagJoT_ML-icvE2CcayxlrV-oMygYhE,9163
|
|
160
|
+
canns-0.14.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
161
|
+
canns-0.14.0.dist-info/entry_points.txt,sha256=57YF2HZp_BG3GeGB8L0m3wR1sSfNyMXF1q4CKEjce6U,164
|
|
162
|
+
canns-0.14.0.dist-info/licenses/LICENSE,sha256=u6NJ1N-QSnf5yTwSk5UvFAdU2yKD0jxG0Xa91n1cPO4,11306
|
|
163
|
+
canns-0.14.0.dist-info/RECORD,,
|
canns/pipeline/_base.py
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from abc import ABC, abstractmethod
|
|
4
|
-
from pathlib import Path
|
|
5
|
-
from typing import Any
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class Pipeline(ABC):
|
|
9
|
-
"""Abstract base class for CANNs pipelines.
|
|
10
|
-
|
|
11
|
-
Pipelines orchestrate multi-step workflows (data preparation, model execution,
|
|
12
|
-
visualization, etc.). This base class standardizes how we manage results and
|
|
13
|
-
output directories so derived pipelines can focus on domain-specific logic.
|
|
14
|
-
"""
|
|
15
|
-
|
|
16
|
-
def __init__(self) -> None:
|
|
17
|
-
self.results: dict[str, Any] | None = None
|
|
18
|
-
self.output_dir: Path | None = None
|
|
19
|
-
|
|
20
|
-
@abstractmethod
|
|
21
|
-
def run(self, *args: Any, **kwargs: Any) -> dict[str, Any]:
|
|
22
|
-
"""Execute the pipeline and return a mapping of generated artifacts."""
|
|
23
|
-
|
|
24
|
-
def reset(self) -> None:
|
|
25
|
-
"""Reset stored state so the pipeline can be executed again cleanly."""
|
|
26
|
-
self.results = None
|
|
27
|
-
self.output_dir = None
|
|
28
|
-
|
|
29
|
-
def prepare_output_dir(self, output_dir: str | Path, *, create: bool = True) -> Path:
|
|
30
|
-
"""Validate and optionally create the output directory for derived pipelines."""
|
|
31
|
-
path = Path(output_dir)
|
|
32
|
-
if create:
|
|
33
|
-
path.mkdir(parents=True, exist_ok=True)
|
|
34
|
-
self.output_dir = path
|
|
35
|
-
return path
|
|
36
|
-
|
|
37
|
-
def set_results(self, results: dict[str, Any]) -> dict[str, Any]:
|
|
38
|
-
"""Store pipeline results and return them for convenient chaining."""
|
|
39
|
-
self.results = results
|
|
40
|
-
return results
|
|
41
|
-
|
|
42
|
-
def get_results(self) -> dict[str, Any]:
|
|
43
|
-
"""Return stored results or raise if the pipeline has not been executed."""
|
|
44
|
-
if self.results is None:
|
|
45
|
-
raise RuntimeError("Pipeline results are not available; call run() first.")
|
|
46
|
-
return self.results
|
|
47
|
-
|
|
48
|
-
def has_results(self) -> bool:
|
|
49
|
-
"""Check whether the pipeline has already produced results."""
|
|
50
|
-
return self.results is not None
|
canns-0.13.1.dist-info/RECORD
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
canns/__init__.py,sha256=ZK4buN-csoLKXaKtoDrOoZbNGCoLCNuF2XS96X8LbH8,1523
|
|
2
|
-
canns/_version.py,sha256=zIvJPOGBFvo4VV6f586rlO_bvhuFp1fsxjf6xhsqkJY,1547
|
|
3
|
-
canns/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
-
canns/analyzer/__init__.py,sha256=EQ02fYHkpMADp-ojpVCVtapuSPkl6j5WVfdPy0mOTs4,506
|
|
5
|
-
canns/analyzer/data/__init__.py,sha256=5LJ8Q4SyDpi6CAzyW3lSpra3I0BgG20kmQMceONw7A4,158
|
|
6
|
-
canns/analyzer/data/asa/__init__.py,sha256=vfZCggZ_FvXwlYXLKErc_eltN6nOQiHWIivGYqpt8NM,1885
|
|
7
|
-
canns/analyzer/data/asa/cohospace.py,sha256=n6DfPWUH_k67KrPbNMt1EUdxMuRFFmXCaqh4gcuXngM,27847
|
|
8
|
-
canns/analyzer/data/asa/config.py,sha256=zVs-snLkD93hGc97GEX9CkcjTtUqORvMCs3khHhqd64,6288
|
|
9
|
-
canns/analyzer/data/asa/decode.py,sha256=NG8vVx2cPG7uSJDovnC2vzk0dsqU8oR4jaNPxxrvCc0,16501
|
|
10
|
-
canns/analyzer/data/asa/embedding.py,sha256=rT3hOHk6BzHF1X5YznIFxE_dDveklbT0fx9GtA2w3z0,9550
|
|
11
|
-
canns/analyzer/data/asa/filters.py,sha256=D-1mDVn4hBEAphKUgx1gQEUfgbghKcNQhZmr4xEExQA,7146
|
|
12
|
-
canns/analyzer/data/asa/fly_roi.py,sha256=_scBOd-4t9yv_1tHk7wbXJwPieU-L-QtFJY6fhHpxDI,38031
|
|
13
|
-
canns/analyzer/data/asa/fr.py,sha256=jt99H50e1RRAQgMIdkfK0rBbembZJEr9SMrxK-ZI_LA,13449
|
|
14
|
-
canns/analyzer/data/asa/path.py,sha256=p3r8EGcJi8NewNFutr3kdO-ekdU_5Icpy6nAoELzSq4,12233
|
|
15
|
-
canns/analyzer/data/asa/plotting.py,sha256=xuKRuq12pITK0BOC4Bj3ZfJs-07DA2OUHCpJmtJLOnw,40852
|
|
16
|
-
canns/analyzer/data/asa/tda.py,sha256=Hn110SBN4wKgHmcwPRkxHdbQ5DFW2xLdSv26J37_Zxc,30342
|
|
17
|
-
canns/analyzer/metrics/__init__.py,sha256=WaTCJE2WhqPtZXYTtMilF_f0LZUfz2h9a25HzwmCwP8,132
|
|
18
|
-
canns/analyzer/metrics/spatial_metrics.py,sha256=ZdS7tGH3lMgNlSYoHlH8IPsCw4XL0KtEnGALg_WHRX8,8965
|
|
19
|
-
canns/analyzer/metrics/systematic_ratemap.py,sha256=MzXfa6_fGgrxD5xEd4hfrZR_fyUmhXQCxnPE3hUonE8,14004
|
|
20
|
-
canns/analyzer/metrics/utils.py,sha256=Ft6lagKdTRJIz6hj9Zmy0i-IU--_Kdrrfzh6xVOQb8g,7402
|
|
21
|
-
canns/analyzer/model_specific/__init__.py,sha256=UCw_MwJJh2AQtnfVeJSzvTVTdVN1ev5oGGoyZtSt1PU,80
|
|
22
|
-
canns/analyzer/model_specific/hopfield.py,sha256=zNPChxX_GuCgc5-KP1KMwHyUDVUh_5EMQzZygOGtIW0,7741
|
|
23
|
-
canns/analyzer/slow_points/__init__.py,sha256=teH7uaVLCXeZGirfez8i3VkbR49pd4isedEtSzweHQs,532
|
|
24
|
-
canns/analyzer/slow_points/checkpoint.py,sha256=s4_-5HZJvmnyFqpK1O9WWYkhAhZj1i5jn9SH6XTGwoY,2980
|
|
25
|
-
canns/analyzer/slow_points/finder.py,sha256=y-YKg-LI7lRM4JMghfcb5NGSYhIM2VPRA37YSCkVK_4,25437
|
|
26
|
-
canns/analyzer/slow_points/fixed_points.py,sha256=Qp-iezwydWWUTchb2hGXJv0QKJqIm9gSG6hh0H9Eb6E,10099
|
|
27
|
-
canns/analyzer/slow_points/visualization.py,sha256=sRmmxs900OSB680MTp0PNIGLpS5i5AmJ58ek20vmrSE,10610
|
|
28
|
-
canns/analyzer/visualization/__init__.py,sha256=pNIokzS8y3ydzEMmVm1FNrOMRALDeuOHbcwZicPUm90,2131
|
|
29
|
-
canns/analyzer/visualization/energy_plots.py,sha256=u0TOLzd7AWEfs-tRYZg1UBwsGYGPF_eWsMip1ZG9jPA,35671
|
|
30
|
-
canns/analyzer/visualization/spatial_plots.py,sha256=30m02xhYkZfEETCtvBSwLix9SEOPcLZTg0AGGFvPc2w,34605
|
|
31
|
-
canns/analyzer/visualization/spike_plots.py,sha256=wOm4gh_3obJy6gwo31maoaiZ7O8rsoYeFdhseoVmX78,12280
|
|
32
|
-
canns/analyzer/visualization/theta_sweep_plots.py,sha256=2kiP7-IizqGm0q-ohQ4HhDZpm3sqs_lgn3GErHEZzbI,62262
|
|
33
|
-
canns/analyzer/visualization/tuning_plots.py,sha256=9JOeC4dlulVzpHQWDVy3dlJnxcBZiOPeapPdVFR-7Zk,5178
|
|
34
|
-
canns/analyzer/visualization/core/__init__.py,sha256=Vngm2A05cTu9ZVEYepTF7lVpuwQvMRjXs9XPLfZzedI,1928
|
|
35
|
-
canns/analyzer/visualization/core/animation.py,sha256=qfBYMd81_GwWEw4MHOu3GrVXJtHS9W1xxtmOx-J5ZyM,7664
|
|
36
|
-
canns/analyzer/visualization/core/backend.py,sha256=Nbk-ARL_xeWlb3nl5SUPrFQNns2wq5BeHU3Q_tAbd_c,9539
|
|
37
|
-
canns/analyzer/visualization/core/config.py,sha256=9_n5hrvJXZgv32OlE_PuNh4JaPgw3dRAp_8LRzYnt_w,24131
|
|
38
|
-
canns/analyzer/visualization/core/jupyter_utils.py,sha256=JD56VeeWb7w9t5DJ8TpgnxRWkUK46ArbbPSTlFdIM10,6034
|
|
39
|
-
canns/analyzer/visualization/core/rendering.py,sha256=YCbiXu8MOAqE9FVb_id5JKr5g9O64sCh-dOs0EK4gnU,18291
|
|
40
|
-
canns/analyzer/visualization/core/writers.py,sha256=HLsP953hgsv140ZX2XPzHfCUTqenjmjbLNrbknKam_s,15607
|
|
41
|
-
canns/data/__init__.py,sha256=BjQWgDYxh4jqtcKzcEZbdTech92AUzt_1KsDU1S88kM,864
|
|
42
|
-
canns/data/datasets.py,sha256=TRHxQGlMPoboiTPKhjTv1AMGbMnIt9T472Juyz4PYS0,13480
|
|
43
|
-
canns/data/loaders.py,sha256=S2JFUN83MsXCN0FBRIrxpJvW_EyXGGptis4QXvS3FSI,13622
|
|
44
|
-
canns/models/__init__.py,sha256=2j5josUkwQQq8Of_gLjecYry65DuC96J8X-RlRqskYs,305
|
|
45
|
-
canns/models/basic/__init__.py,sha256=mNqyGz_z29YNMC345b_VyuVI9hQQ9NFe9mIU9f5KGVU,329
|
|
46
|
-
canns/models/basic/_base.py,sha256=L7oECkO5-5j9r1faaz6RDIqQKHy6DEflHRGHyaW9ARg,3800
|
|
47
|
-
canns/models/basic/cann.py,sha256=uR7j5u71b4qLFK_0xS5pXTZoLyEOa0tvsmT3D0O-CMQ,24588
|
|
48
|
-
canns/models/basic/grid_cell.py,sha256=8nGXgXAh8UDNx3j3taqwBOsgOBVxjIk9u45v9zFSvrE,31955
|
|
49
|
-
canns/models/basic/hierarchical_model.py,sha256=V2QRuTVirT3_7quFC6sJb1JyNIMbo5WlAo7BybV6QKE,53847
|
|
50
|
-
canns/models/basic/theta_sweep_model.py,sha256=GGd3_X81eNzPoguXbleVWO_ID253FzQOqdxEPA5VJUo,34075
|
|
51
|
-
canns/models/brain_inspired/__init__.py,sha256=MuG-adTkIIhOxs63u0f0b0oO6srilGQzR_Gta8qXeXY,620
|
|
52
|
-
canns/models/brain_inspired/_base.py,sha256=YyzgmCh-YzUsK22NbSAapUWHk03jwJ49b1kRCfMWbQk,3820
|
|
53
|
-
canns/models/brain_inspired/hopfield.py,sha256=KQmXWBvUTdQ17t9VG-8Sy_uJznEt4eunONYJsiN5GvY,6903
|
|
54
|
-
canns/models/brain_inspired/linear.py,sha256=oRjJnTqrheAADA5unYBu83RSm4UoUH-BK2Mt_liwDtw,6141
|
|
55
|
-
canns/models/brain_inspired/spiking.py,sha256=hr2w7c6Eobxwp2z6vkV9Yivpv1964-cno-XOfMSh3RU,5557
|
|
56
|
-
canns/models/hybrid/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
57
|
-
canns/pipeline/__init__.py,sha256=OgFh5UXId99j_W4MkcpTaYD9qpQVXt-v9xN8cCY8sSc,371
|
|
58
|
-
canns/pipeline/_base.py,sha256=bYCmvXQ_0vGF-MEVpi0sUljrqmW6Ax8csQ5fcnX7nAE,1869
|
|
59
|
-
canns/pipeline/asa/__init__.py,sha256=JR4T0onfmkKMOrUq-k0San1RTSb1om6cd27tWovBp0c,466
|
|
60
|
-
canns/pipeline/asa/__main__.py,sha256=_KgAeuGQ2-SXmuZhvZCkRx9luFf7VgKUCuszNlUswyA,197
|
|
61
|
-
canns/pipeline/asa/app.py,sha256=L5al6PrGoEzRNosZlHbn-VaTxXCoVyfKFn0f1e-0FUI,49906
|
|
62
|
-
canns/pipeline/asa/runner.py,sha256=PfHXlI-m3m-IYVFcFRhSODfPoRlCrloDOqEftvAfasg,42723
|
|
63
|
-
canns/pipeline/asa/screens.py,sha256=DbqidxmoKe4KzSLuxuriVv1PIVFn5Z-PfScVfjrIiEA,5954
|
|
64
|
-
canns/pipeline/asa/state.py,sha256=XukidfcFIOmm9ttT226FOTYR5hv2VAY8_DZt7V1Ml2g,6955
|
|
65
|
-
canns/pipeline/asa/styles.tcss,sha256=eaXI3rQeWdBYmWdLJMMiSO6acHtreLRVKKoIHb2-dBk,3349
|
|
66
|
-
canns/pipeline/asa/widgets.py,sha256=3vPGGQWP9V5FwuwqykCVp7dzAHdpcFkDqib0DtIw-lQ,8087
|
|
67
|
-
canns/pipeline/gallery/__init__.py,sha256=PPOvxmTRzEnj33jHlsFlaWuEfhrcNe39pMPQkTisjlo,187
|
|
68
|
-
canns/task/__init__.py,sha256=sfo8TBBVAqkx73Nu5lVv77UCwZjKqjt042ezW4Wv2Ec,350
|
|
69
|
-
canns/task/_base.py,sha256=rdRy4mr6x53z4aJv04UJcpqCyv78AxB1k1DhxnriLpg,4401
|
|
70
|
-
canns/task/closed_loop_navigation.py,sha256=QxxLdAg4Zd8763bS001jFqfts3A6_r6hpTTfrh1LdW8,10204
|
|
71
|
-
canns/task/navigation_base.py,sha256=s7mgXKhJyxIEUnSY8zXL3k9kH26MMQDv2xptzObu7Fc,40692
|
|
72
|
-
canns/task/open_loop_navigation.py,sha256=jD77GVIGLaBVm0zKmOfghKk_Vj_9pjkjK8_a40907bU,45402
|
|
73
|
-
canns/task/tracking.py,sha256=KNJ7QkecRimxDa4lLC9JnzTvQGB-c0_lvU-InlmcLOY,31866
|
|
74
|
-
canns/trainer/__init__.py,sha256=ouHRuCuLuwFyrsOWbaotGxHIs5BdiYBtMhqE2k7HcKI,660
|
|
75
|
-
canns/trainer/_base.py,sha256=EQIXnvRvhCo0veTItGQumNeGuerHzsqipxyGZGIt2QI,1536
|
|
76
|
-
canns/trainer/bcm.py,sha256=-KjncsWsVGZVpmcIJIA9BvQf9AFw0M_4PcavAFIwkvA,6349
|
|
77
|
-
canns/trainer/hebbian.py,sha256=b6HcLrYPgcoBJUN6nZSoFILFMFaKYn-cz3FZ9SVOppI,23740
|
|
78
|
-
canns/trainer/oja.py,sha256=I6oCXmZj4wb30_cBVaNrye8YTxPRYLL2cdwULNaaops,5617
|
|
79
|
-
canns/trainer/sanger.py,sha256=cvBB7v9EA-69semVjJu_Pg9AQffZZ5sj0KGnw63CJAo,6638
|
|
80
|
-
canns/trainer/stdp.py,sha256=kH0FYkHbluPhczkTf7TxZrlFME65Y4fRY6b-jqPl10c,8670
|
|
81
|
-
canns/trainer/utils.py,sha256=ZdoLiRqFLfKXsWi0KX3wGUp0OqFikwiou8dPf3xvFhE,2847
|
|
82
|
-
canns/typing/__init__.py,sha256=mXySdfmD8fA56WqZTb1Nj-ZovcejwLzNjuk6PRfTwmA,156
|
|
83
|
-
canns/utils/__init__.py,sha256=OMyZ5jqZAIUS2Jr0qcnvvrx6YM-BZ1EJy5uZYeA3HC0,366
|
|
84
|
-
canns/utils/benchmark.py,sha256=oJ7nvbvnQMh4_MZh7z160NPLp-197X0rEnmnLHYlev4,1361
|
|
85
|
-
canns-0.13.1.dist-info/METADATA,sha256=4HIOm94szk2GaS6A9Kbp9nZHXfoqVvNj_rOBdrExZWE,8827
|
|
86
|
-
canns-0.13.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
87
|
-
canns-0.13.1.dist-info/entry_points.txt,sha256=HDzYp0e9E1wfKYRkYtnUgVKK_u33_7eIn9exgm7t-wg,75
|
|
88
|
-
canns-0.13.1.dist-info/licenses/LICENSE,sha256=u6NJ1N-QSnf5yTwSk5UvFAdU2yKD0jxG0Xa91n1cPO4,11306
|
|
89
|
-
canns-0.13.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|