Python bindings to the ClearVolume project.
With it you can either serve numpy data directly from within python to any running ClearVolume client or send/watch a folder via pyclearvolume_serve and serve its content to the client (making it useful e.g. for remote scopes)
A working installation of ClearVolume.
Either via pip
pip install git+https://github.com/ClearVolume/pyclearvolume
or classically
cd pyclearvolume
python setup.py install
to test if everything worked just run from the command line
python -m pyclearvolume
which will serve some dummy data to the default port (9140 on localhost) ClearVolume is listening to. After that you can open the ClearVolume client and should see some colorful volumes popping up.
Pyclearvolume comes with an executable script pyclearvolume_serve that provides a fast way to serve single files (tif or czi) or folder to the client renderer. It further allows to watch a folder for changes and stream any newly arriving data. See the options for all available parameters:
pyclearvolume_serve [-h] [-a ADDRESS] [-p PORT] [-w] [-t DTIME] [-u UNITS UNITS UNITS] [-c COLOR COLOR COLOR] files [files ...] serves 3d image files or folder to a clearvolume client pyclearvolume_serve myfile.tif pyclearvolume_serve -u 1. 1. 2. -a remote.domain.com -p 9140 myfile.tif positional arguments: files image files or folder to send/watch (currently supported: ['.tif', '.czi', '.tiff'] optional arguments: -h, --help show this help message and exit -a ADDRESS, --address ADDRESS address to bind to (default: ) -p PORT, --port PORT port to bind to (default: 9140) -w, --watch watch folder (default: False) -t DTIME, --time DTIME time in secs in watch mode to wait for file not having changed (default: 1.0) -u UNITS UNITS UNITS, --units UNITS UNITS UNITS relative units of voxels e.g. -u 1. 1. 2. (default: [1.0, 1.0, 1.0]) -c COLOR COLOR COLOR, --color COLOR COLOR COLOR color rgb in 0..1 (default: [1.0, 1.0, 1.0]) To create a instance of the data server just do
d = pyclearvolume.DataServer( address = "localhost", port = 9140, maxVolumeNumber = 20, dropVolumeOnFull = True)then start the server
d.start()and send some data
d.sendData(data, time = 0, channel = 1, color ="1.0 0.4 0.2 1.0") ###Example
import numpy as np import time import pyclearvolume print "creating the server" d = pyclearvolume.DataServer(maxVolumeNumber=20) print "starting the server" d.start() print "starting to serve data" N = 128 data = np.linspace(0,65000,N**3).reshape((N,)*3).astype(np.uint16) t = 0 while True: args = {} args["color"] = "%s %s %s 1."%tuple([str(c) for c in np.random.uniform(0,1,3)]) args["voxelwidth"] = np.random.uniform(.2,1.6) args["voxelheight"] = np.random.uniform(.2,1.6) args["voxeldepth"] = np.random.uniform(.2,1.6) args["index"] = t print "sending..." d.sendData(data,**args) time.sleep(2) t += 1For opening tif and czi files pyclearvolume uses the excellent modules "tifffile" and "czifile" from Christoph Gohlke.
