Code

This is an overview of projects that I work on (or have worked on).

Pyzo

Pyzo is a cross-platform Python IDE focused on interactivity and introspection, which makes it very suitable for scientific computing. We have developed Pyzo to have a simplistic design while still providing a powerful programming environment; all the good stuff, without the clutter.

Pyzo is my longest running project. I've not been able to work on it very actively lately, but I am still eager to bring this project to a next level.

Web backend

As I started to gain an interest for the web, I've created several web sites and apps (e.g TimeTurtle). From this work, several open source projects have spawned. The website that you're visiting now is using all of the below :)

Asgineer is a truely minimalistic async web framework based on the awesome uvicorn. It allows one to create bloody fast web servers that are easy to maintain.

Fastuaparser is a small utility to parse user-agent strings, focussed on speed.

ItemDB is a small library that provides a simple API to store and retrieve (JSON-compatible) Python dicts in an SQLite database.

MyPaas is a tool to manage a PaaS using Traefik and Docker, e.g. to run multiple websites.

Python in the browser

PScript is a Python to JavaScript compiler, enabling writing JavaScript using a Python syntax, and handling several (but not all) JavaScript pitfalls.

Flexx is a pure Python toolkit for creating graphical user interfaces (GUI’s), that uses PScript and web technology for its rendering. You can use Flexx to create desktop applications, web applications, and (if designed well) export an app to a standalone HTML document. It also works in the Jupyter notebook.

Flexx is very powerful, but it turns out to be easy to create code with it that becomes hard to maintain, because its so easy to mix real Python with Python that runs in the browser (PScript). This makes these tools less suited for wide adoption.

Imageio

Imageio aims to support reading and writing a wide range of image data, including animated images, volumetric data, and scientific formats. It is designed to be powerful, yet simple in usage and installation. It is also easy to extend new formats to imageio.

The imageio-ffmpeg project is a spin-off of imageio, to handle the task of reading and writing videos.

Imageio is a mature library and plugins keep getting improved/added. It's used as a basis in e.g. scikit-image and Visvis.

Visualization libraries

Visvis is a pure Python library for visualization of 1D to 4D data in an object oriented way. Essentially, visvis is an object oriented layer of Python on top of OpenGl, thereby combining the power of OpenGl with the usability of Python.

Visvis is mature, though a bit idiosyncratic. I am not actively developing it anymore except fixing bugs and implementing small features.

The Vispy project was originally intended to replace a number of visualization projects, including Visvis. But to date Vispy has not converged to a broadly usable state yet.

In 2020 I started working on a new viz stack based on wgpu (which wraps Vulkan, Matal and DX12), see wgpu-py and pyshader, and pygfx.

Image registration

PyElastix is a project that has spun out of the PIRT project. It provides a Pythonic interface to the awesome Elastix image registration toolkit. I created this (pure Python) library to enable people to do image registration in a simple way, while making it easy to maintain.

PIRT, the Python Image Registration Toolkit, is a project to make powerful image registration algorihms easily accessible. It wraps PyElastix and also includes custom algorithms, including a diffeomorphic version of the Demons algorithm. Originally written in Cython, but now that it uses Numba it is pure Python (i.e. much easier to install).

Stentseg

Stentseg is a library to perform segmentation of stent grafts in CT data. Mostly developed during my PhD, but in a rather good state. I managed to make it Pure Python by moving a critical part (a specific variant of the MPC algorithm) to scikit-image.

BSDF

The Binary Structured Data Format (BSDF) is an open specification for serializing (scientific) data, for the purpose of storage and (inter process) communication. It's designed to be a simple format, making it easy to implement in many programming languages. However, the format allows implementations to support powerful mechanics such as lazy loading of binary data, and streamed reading/writing. BSDF is a binary format; by giving up on human readability, BSDF can be simple, compact and fast.