I think the value of Cython is in the inner loop. For the rest, it is much more convenient to have the code in Python, for debugging purposes. After this is done I intend to add support for different z resolutions. I'd rather not be moving back and forth between having and not having the Python wrapper file.