How to register custom colormapsΒΆ

Terracotta has a number of built-in colormaps, but if you find something missing, it is possible to supply your own.

Colormaps are shipped in .npy binary format and consist of a single array with shape (255, 4), 255 values and four (RGBA) channels, and dtype uint8. So you can e.g. create your own colormap files like this:

>>> import numpy as np
>>> cmap_data = np.stack((
...     np.arange(0, 255, dtype='uint8'),
...     np.arange(0, 255, dtype='uint8'),
...     np.arange(0, 255, dtype='uint8'),
...     np.full(255, 255, dtype='uint8')
... ), axis=1)
>>> np.save('mycmap_rgba.npy', cmap_data)

This creates a simple greyscale colormap (linearly increasing from 0 to 255 in all RGB channels, and constant alpha channel) and saves it as mycmap_rgba.npy.

Note

For Terracotta to recognize your custom colormaps, their filenames have to end with _rgba.npy.

To register your custom colormaps, you need to set the environment variable TC_EXTRA_CMAP_FOLDER before starting / importing Terracotta:

$ export TC_EXTRA_CMAP_FOLDER=$HOME/tc-cmaps
$ terracotta serve -d tc.sqlite

Terracotta will automatically discover your colormaps in the given folder (if they are in the correct format) and serve them in the same way as our built-in colormaps.