Metadata-Version: 2.4
Name: tunnelvision
Version: 0.3.4
Home-page: https://github.com/sluijs/tunnelvision
Author: Rogier van der Sluijs
Requires-Python: >=3.6
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: dataclasses==0.8
Requires-Dist: numpy
Requires-Dist: packaging
Requires-Dist: PyYAML==6.0.2
Requires-Dist: tabulate==0.9.0
Requires-Dist: termcolor==3.1.0
Requires-Dist: websockets==15.0.1
Requires-Dist: shortuuid==1.0.13
Requires-Dist: ipykernel>=6.29.5
Requires-Dist: requests
Requires-Dist: twine>=6.1.0
Requires-Dist: setuptools>=80.9.0
Dynamic: author
Dynamic: home-page
Dynamic: license-file
Dynamic: requires-python

# Tunnelvision

Tunnelvision is an experimental tensor viewer for IPython environments based on Voxel.

## Installation
Tunnelvision requires Python 3.7+. Binary wheels are available for MacOS (x86_64/arm64) and Linux.

To install Tunnelvision, run:

```bash
pip install tunnelvision
```

## Quick Start
The API of tunnelvision is very similar to that of [matplotlib](https://github.com/matplotlib/matplotlib). Tunnelvision is a 5D tensor viewer that requires tensors to have the following format: _Batch_ x _Depth_ x _Height_ x _Width_ x _Channels_, where channels can be 1 (grayscale/monochrome) or 3 (RGB). You can quickly plot (medical) images using:

```python
import numpy as np
import tunnelvision as tv

arr = np.random.randint(0, 2048, (2, 3, 224, 224, 1), dtype=np.uint16)
tv.show(arr)
```

More advanced plots with segmentation overlays (or colormaps in general) can be created as follows:
```python
ax = tv.Axes(figsize=(512, 512))
ax.imshow(arr1)
ax.imshow(arr2, cmap="seg")
ax.show()
```

## Medical Imaging
[Pyvoxel](https://github.com/pyvoxel/pyvoxel) has support for tunnelvision as well, which allows you to plot images with their correct orientation and spacing, without having to manually set those in the configuration:

```python
import voxel as vx

mv = vx.load("../data/ct/")
tv.show(mv)
```

## VS Code Remote
To use tunnelvision through VS Code remote, we need forward an arbitrary available port to the tunnelvision-server. Once you have forwarded a port from the `ports` pane within VS Code, make sure to add it to your configuration file for tunnelvision:

```yaml
# ~/.cache/tunnelvision/default_config.yaml
port: 1337
```

## Debug
Typically, problems will revolve around the WebSockets connection. Make sure your port is forwarded when working [remote](#VS-Code-Remote). Make sure the handshake between the client and server was successful by inspecting the `state.websocket` object. One can use `ps aux | grep tunnelvision` to inspect whether the server is running. Logs for the server are stored in `~/.cache/tunnelvision`. 
