[ITK-users] Suggestions about Python wrapping of cpp project

Michka Popoff michkapopoff at gmail.com
Thu Jul 24 04:54:52 EDT 2014


Hi

I am currently maintaining the Python part of ITK, but I don’t know if I can help you. I just started with this some time ago and can not really compare it to the boost python method as I don’t know it.
There is an old (but outdated) discussion about boost and swig here [1]. But this was written for swig 1.34, and now we already have swig 3.0.2, which brought a lot of improvements.

Swig has been under heavy development lately. What I find nice with Swig is that you get other languages for free, it does not only support python but also Java, Ruby, TCL, … (you will need to write some code for this support though).
The Swig method is nice once you automatized your process. Depending on the c++ code you wrote, you don’t even need to write interface files for Swig.
For ITK, we have a small pipeline which reads the c++ code with gccxml, and uses a python script [3] (which uses pygccxml) to create interface files from the xml files.

What problems did you encounter when trying the Swig route ? Maybe I can help.

Michka

[1] https://dev.lsstcorp.org/trac/wiki/SwigVsBoostPython
[2] https://github.com/swig/swig
[3] https://github.com/InsightSoftwareConsortium/ITK/blob/master/Wrapping/Generators/SwigInterface/igenerator.py

On 23 juil. 2014, at 17:11, Satyananda Kashyap <ksatyananda at gmail.com> wrote:

> Hello,
> 
> I am looking for your expert opinions here. I have a relatively large C++ project I am working on which uses ITK mainly (hence the question here) and to some extent VTK and OpenCV. I do think that my code is fairly well written. I was thinking of wrapping my code to python using either SWIG or boost.python. Here are my questions : 
> 
> 
> 1. I am led to believe that prototyping and code development is much faster in Python. Given that I have such a big cpp base code is it really worth the effort to wrap into python and then continue there. 
> 
> 2. From what I have read ITK uses SWIG wrappings for wrapping into Python while VTK uses the boost.python route. My initial attempts with both have been relatively unsuccessful. Any opinion on which one is more user friendly/better when I have to wrap my own custom classes which use a combination of both ITK and VTK in them. 
> 
> 3. Any suggestion on a road map as to how to proceed. I am not sure at what base class level I should wrap them and rewrite the dependencies in python.  
> 
> Thanks,
> Regards,
> Kashyap
> _____________________________________
> Powered by www.kitware.com
> 
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
> 
> Kitware offers ITK Training Courses, for more information visit:
> http://www.kitware.com/products/protraining.php
> 
> Please keep messages on-topic and check the ITK FAQ at:
> http://www.itk.org/Wiki/ITK_FAQ
> 
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/insight-users



More information about the Insight-users mailing list