arrayview 0.6.0__tar.gz → 0.7.0__tar.gz
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.
- arrayview-0.7.0/.github/workflows/docs.yml +20 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/.gitignore +2 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/AGENTS.md +7 -2
- {arrayview-0.6.0 → arrayview-0.7.0}/PKG-INFO +54 -2
- arrayview-0.7.0/README.md +85 -0
- arrayview-0.7.0/docs/superpowers/plans/2026-03-27-mode-dispatch-refactor.md +717 -0
- arrayview-0.7.0/docs/superpowers/plans/2026-03-28-exploded-volume-view.md +854 -0
- arrayview-0.7.0/docs/superpowers/plans/2026-03-28-instance-previewer-ram-guard.md +601 -0
- arrayview-0.7.0/docs/superpowers/plans/2026-03-29-multi-array-immersive.md +726 -0
- arrayview-0.7.0/docs/superpowers/plans/2026-03-30-loading-screen.md +192 -0
- arrayview-0.7.0/docs/superpowers/plans/2026-03-30-pytorch-dl-integration.md +807 -0
- arrayview-0.7.0/docs/superpowers/specs/2026-03-27-islands-immersive-only-design.md +60 -0
- arrayview-0.7.0/docs/superpowers/specs/2026-03-28-exploded-volume-view-design.md +94 -0
- arrayview-0.7.0/docs/superpowers/specs/2026-03-28-instance-previewer-ram-guard-design.md +158 -0
- arrayview-0.7.0/docs/superpowers/specs/2026-03-29-multi-array-immersive-design.md +84 -0
- arrayview-0.7.0/docs/superpowers/specs/2026-03-30-loading-screen-design.md +33 -0
- arrayview-0.7.0/docs/superpowers/specs/2026-03-30-pytorch-dl-integration-design.md +205 -0
- arrayview-0.7.0/matlab/arrayview.m +74 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/mkdocs.yml +2 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/pyproject.toml +1 -1
- {arrayview-0.6.0 → arrayview-0.7.0}/src/arrayview/__init__.py +2 -1
- {arrayview-0.6.0 → arrayview-0.7.0}/src/arrayview/_app.py +0 -2
- {arrayview-0.6.0 → arrayview-0.7.0}/src/arrayview/_config.py +12 -0
- arrayview-0.7.0/src/arrayview/_icon.png +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/src/arrayview/_io.py +4 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/src/arrayview/_launcher.py +215 -87
- {arrayview-0.6.0 → arrayview-0.7.0}/src/arrayview/_render.py +10 -37
- {arrayview-0.6.0 → arrayview-0.7.0}/src/arrayview/_server.py +242 -123
- {arrayview-0.6.0 → arrayview-0.7.0}/src/arrayview/_session.py +8 -3
- arrayview-0.7.0/src/arrayview/_torch.py +217 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/src/arrayview/_viewer.html +2609 -1175
- {arrayview-0.6.0 → arrayview-0.7.0}/src/arrayview/_vscode.py +143 -88
- arrayview-0.7.0/src/arrayview/arrayview-opener.vsix +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/tests/test_api.py +36 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/tests/test_config.py +27 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/tests/test_mode_consistency.py +38 -22
- arrayview-0.7.0/tests/test_torch.py +223 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/tests/ui_audit.py +14 -5
- {arrayview-0.6.0 → arrayview-0.7.0}/tests/visual_smoke.py +59 -5
- {arrayview-0.6.0 → arrayview-0.7.0}/vscode-extension/extension.js +23 -3
- {arrayview-0.6.0 → arrayview-0.7.0}/vscode-extension/package.json +1 -1
- arrayview-0.6.0/README.md +0 -33
- arrayview-0.6.0/src/arrayview/arrayview-opener.vsix +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/.claude/skills/invocation-consistency/SKILL.md +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/.claude/skills/modes-consistency/SKILL.md +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/.claude/skills/task-workflow/SKILL.md +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/.claude/skills/ui-consistency-audit/SKILL.md +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/.claude/skills/viewer-ui-checklist/SKILL.md +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/.github/workflows/python-publish.yml +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/.python-version +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/.tmp-vsix/extension/extension.js +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/.tmp-vsix/extension/package.json +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/LICENSE +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/docs/comparing.md +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/docs/configuration.md +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/docs/display.md +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/docs/index.md +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/docs/loading.md +0 -0
- /arrayview-0.6.0/src/arrayview/_icon.png → /arrayview-0.7.0/docs/logo.png +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/docs/measurement.md +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/docs/remote.md +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/docs/stylesheets/extra.css +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/docs/superpowers/plans/2026-03-27-colorbar-class-refactor.md +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/docs/viewing.md +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/scripts/demo.py +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/src/arrayview/_platform.py +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/src/arrayview/_shell.html +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/tests/conftest.py +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/tests/make_vectorfield_test_arrays.py +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/tests/test_browser.py +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/tests/test_cli.py +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/tests/test_interactions.py +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/tests/test_large_arrays.py +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/tests/test_mode_matrix.py +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/tests/test_rgb_pixel_art.py +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/uv.lock +0 -0
- {arrayview-0.6.0 → arrayview-0.7.0}/vscode-extension/LICENSE +0 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
name: Deploy docs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
paths: [docs/**, mkdocs.yml]
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: write
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
deploy:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
steps:
|
|
15
|
+
- uses: actions/checkout@v4
|
|
16
|
+
- uses: actions/setup-python@v5
|
|
17
|
+
with:
|
|
18
|
+
python-version: "3.x"
|
|
19
|
+
- run: pip install mkdocs-material
|
|
20
|
+
- run: mkdocs gh-deploy --force
|
|
@@ -11,6 +11,7 @@ wheels/
|
|
|
11
11
|
|
|
12
12
|
*.npy
|
|
13
13
|
.claude/
|
|
14
|
+
.worktrees/
|
|
14
15
|
!.claude/skills/
|
|
15
16
|
!.claude/skills/**
|
|
16
17
|
CLAUDE.md
|
|
@@ -24,6 +25,7 @@ tests/smoke_output/
|
|
|
24
25
|
dev/
|
|
25
26
|
*.png
|
|
26
27
|
!src/arrayview/_icon.png
|
|
28
|
+
!docs/logo.png
|
|
27
29
|
|
|
28
30
|
benchmarks/data
|
|
29
31
|
.superpowers/brainstorm
|
|
@@ -44,6 +44,7 @@ CLI / Python API
|
|
|
44
44
|
| `_vscode.py` | Extension management, signal-file IPC, browser opening |
|
|
45
45
|
| `_platform.py` | Platform/environment detection |
|
|
46
46
|
| `_io.py` | Array I/O, format detection |
|
|
47
|
+
| `_torch.py` | PyTorch DL integration: `view_batch()`, `TrainingMonitor` |
|
|
47
48
|
| `_app.py` | **Compat shim only** — re-exports; add no logic here |
|
|
48
49
|
|
|
49
50
|
### Frontend
|
|
@@ -74,6 +75,10 @@ Load the relevant skill before touching the corresponding area.
|
|
|
74
75
|
| `docs-style` | Updating README, in-app help overlay, or docstrings |
|
|
75
76
|
| `task-workflow` | Feature or fix tasks |
|
|
76
77
|
|
|
78
|
+
## Execution Preferences
|
|
79
|
+
|
|
80
|
+
When implementing plans, always use **subagent-driven development** (`superpowers:subagent-driven-development`) — not inline execution.
|
|
81
|
+
|
|
77
82
|
## Non-Negotiables
|
|
78
83
|
|
|
79
84
|
- Always use `localhost` (not `127.0.0.1`) — required for VS Code port forwarding
|
|
@@ -95,8 +100,6 @@ uv run pytest tests/ # all
|
|
|
95
100
|
uv run python tests/visual_smoke.py # screenshots → tests/smoke_output/
|
|
96
101
|
```
|
|
97
102
|
|
|
98
|
-
Visual baselines: `tests/snapshots/` — delete a file to reset.
|
|
99
|
-
|
|
100
103
|
| What changed | Run |
|
|
101
104
|
|---|---|
|
|
102
105
|
| Server / API | `test_api.py` |
|
|
@@ -104,6 +107,8 @@ Visual baselines: `tests/snapshots/` — delete a file to reset.
|
|
|
104
107
|
| Viewer UI | `test_browser.py` + `visual_smoke.py` |
|
|
105
108
|
| VS Code / platform | manual: VS Code local terminal, VS Code tunnel |
|
|
106
109
|
|
|
110
|
+
**Visual consistency:** After any UI change, use the `/ui-consistency-audit` skill to verify the feature works consistently across all viewing modes (normal, multi-view, compare, immersive, inline). This replaces reference screenshot comparisons — the UI changes frequently, so consistency across modes matters more than pixel-matching baselines.
|
|
111
|
+
|
|
107
112
|
## VS Code Integration
|
|
108
113
|
|
|
109
114
|
All key functions live in `_vscode.py`:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: arrayview
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.7.0
|
|
4
4
|
Summary: Fast multi-dimensional array viewer
|
|
5
5
|
Project-URL: Home, https://github.com/oscarvanderheide/arrayview
|
|
6
6
|
Project-URL: Source, https://github.com/oscarvanderheide/arrayview
|
|
@@ -57,12 +57,64 @@ from arrayview import view
|
|
|
57
57
|
view(arr)
|
|
58
58
|
```
|
|
59
59
|
|
|
60
|
+
## MATLAB
|
|
61
|
+
|
|
62
|
+
Add the `matlab/` directory to your MATLAB path, then:
|
|
63
|
+
|
|
64
|
+
```matlab
|
|
65
|
+
addpath('/path/to/arrayview/matlab')
|
|
66
|
+
|
|
67
|
+
A = rand(100, 200, 10);
|
|
68
|
+
arrayview(A)
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Requires arrayview installed in [MATLAB's Python environment](https://www.mathworks.com/help/matlab/matlab_external/install-supported-python-implementation.html):
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
pip install arrayview
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Arrays are passed zero-copy via the buffer protocol (in-process Python). `arrayview()` enables this automatically — just call it before any other `py.*` call in your MATLAB session.
|
|
78
|
+
|
|
79
|
+
## PyTorch / Deep Learning
|
|
80
|
+
|
|
81
|
+
```python
|
|
82
|
+
from arrayview import view_batch, TrainingMonitor
|
|
83
|
+
|
|
84
|
+
# Browse a DataLoader batch
|
|
85
|
+
view_batch(train_loader)
|
|
86
|
+
view_batch(train_loader, overlay='label')
|
|
87
|
+
|
|
88
|
+
# Live training monitor — updates every N epochs
|
|
89
|
+
monitor = TrainingMonitor(every=5, samples=3)
|
|
90
|
+
for epoch in range(100):
|
|
91
|
+
for batch in val_loader:
|
|
92
|
+
pred = model(batch['image'])
|
|
93
|
+
monitor.step(input=batch['image'], target=batch['label'],
|
|
94
|
+
prediction=pred, epoch=epoch)
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
`view_batch()` accepts DataLoaders, Datasets, dicts, tuples, or raw tensors. `TrainingMonitor` opens a compare window and calls `handle.update()` automatically. PyTorch is not required at import time.
|
|
98
|
+
|
|
99
|
+
|
|
60
100
|
## Formats
|
|
61
101
|
|
|
62
102
|
`.npy` `.npz` `.nii` `.nii.gz` `.zarr` `.pt` `.h5` `.tif` `.mat`
|
|
63
103
|
|
|
64
104
|
## Once open
|
|
65
105
|
|
|
66
|
-
`c` colormaps · `d`
|
|
106
|
+
`c` colormaps · `d` dynamic range · `v` 3-plane · `z` mosaic · `Shift+O` overlay toggle · `?` help · colorbar dblclick histogram
|
|
107
|
+
|
|
108
|
+
## Config
|
|
109
|
+
|
|
110
|
+
`~/.arrayview/config.toml`:
|
|
111
|
+
|
|
112
|
+
```toml
|
|
113
|
+
[viewer]
|
|
114
|
+
colormaps = ["gray", "viridis", "plasma"] # colormaps cycled by 'c'
|
|
115
|
+
|
|
116
|
+
[window]
|
|
117
|
+
default = "browser" # browser | native | vscode | inline
|
|
118
|
+
```
|
|
67
119
|
|
|
68
120
|
[Full documentation →](https://oscarvanderheide.github.io/arrayview/)
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# arrayview
|
|
2
|
+
|
|
3
|
+
A viewer for multi-dimensional arrays.
|
|
4
|
+
|
|
5
|
+
- CLI and Python
|
|
6
|
+
- Jupyter / VS Code
|
|
7
|
+
- Browser / native
|
|
8
|
+
- SSH / tunnels
|
|
9
|
+
|
|
10
|
+
## CLI
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
uvx arrayview scan.nii.gz
|
|
14
|
+
uvx arrayview --window browser scan.npy
|
|
15
|
+
uvx arrayview # demo
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Python
|
|
19
|
+
|
|
20
|
+
```python
|
|
21
|
+
from arrayview import view
|
|
22
|
+
view(arr)
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## MATLAB
|
|
26
|
+
|
|
27
|
+
Add the `matlab/` directory to your MATLAB path, then:
|
|
28
|
+
|
|
29
|
+
```matlab
|
|
30
|
+
addpath('/path/to/arrayview/matlab')
|
|
31
|
+
|
|
32
|
+
A = rand(100, 200, 10);
|
|
33
|
+
arrayview(A)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Requires arrayview installed in [MATLAB's Python environment](https://www.mathworks.com/help/matlab/matlab_external/install-supported-python-implementation.html):
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
pip install arrayview
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Arrays are passed zero-copy via the buffer protocol (in-process Python). `arrayview()` enables this automatically — just call it before any other `py.*` call in your MATLAB session.
|
|
43
|
+
|
|
44
|
+
## PyTorch / Deep Learning
|
|
45
|
+
|
|
46
|
+
```python
|
|
47
|
+
from arrayview import view_batch, TrainingMonitor
|
|
48
|
+
|
|
49
|
+
# Browse a DataLoader batch
|
|
50
|
+
view_batch(train_loader)
|
|
51
|
+
view_batch(train_loader, overlay='label')
|
|
52
|
+
|
|
53
|
+
# Live training monitor — updates every N epochs
|
|
54
|
+
monitor = TrainingMonitor(every=5, samples=3)
|
|
55
|
+
for epoch in range(100):
|
|
56
|
+
for batch in val_loader:
|
|
57
|
+
pred = model(batch['image'])
|
|
58
|
+
monitor.step(input=batch['image'], target=batch['label'],
|
|
59
|
+
prediction=pred, epoch=epoch)
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
`view_batch()` accepts DataLoaders, Datasets, dicts, tuples, or raw tensors. `TrainingMonitor` opens a compare window and calls `handle.update()` automatically. PyTorch is not required at import time.
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
## Formats
|
|
66
|
+
|
|
67
|
+
`.npy` `.npz` `.nii` `.nii.gz` `.zarr` `.pt` `.h5` `.tif` `.mat`
|
|
68
|
+
|
|
69
|
+
## Once open
|
|
70
|
+
|
|
71
|
+
`c` colormaps · `d` dynamic range · `v` 3-plane · `z` mosaic · `Shift+O` overlay toggle · `?` help · colorbar dblclick histogram
|
|
72
|
+
|
|
73
|
+
## Config
|
|
74
|
+
|
|
75
|
+
`~/.arrayview/config.toml`:
|
|
76
|
+
|
|
77
|
+
```toml
|
|
78
|
+
[viewer]
|
|
79
|
+
colormaps = ["gray", "viridis", "plasma"] # colormaps cycled by 'c'
|
|
80
|
+
|
|
81
|
+
[window]
|
|
82
|
+
default = "browser" # browser | native | vscode | inline
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
[Full documentation →](https://oscarvanderheide.github.io/arrayview/)
|