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

Satyananda Kashyap ksatyananda at gmail.com
Thu Jul 24 14:47:54 EDT 2014


Thank you for that. VTK is pretty deeply nested in my code. I will have to
write a similar interface file.

Can you suggest a starting point in the ITK interface files I can start
looking at. I want to try and wrap a simple piece of my code modifying them.

Regards,
Kashyap


On Thu, Jul 24, 2014 at 12:15 PM, Michka Popoff <michkapopoff at gmail.com>
wrote:

> Nested classes are supported by Swig 3.0.0 natively:
> http://www.swig.org/Doc3.0/SWIGDocumentation.html#SWIGPlus_nested_classes
> I have no clue if we have nested classes in ITK, and how it was wrapped.
> Maybe I’ll stumble upon this one day.
> So I can not really help here but should work.
>
> 1. gccxml is limited to VS2008, and we have no replacement for it. This is
> a known limitation which is also blocking for ITK.
>
> 2. For VTK, is this deeply nested in your c++ code ? Maybe you could just
> rewrite the VTK part using python directly ? This would remove one
> dependency.
> For OpenCV, I don’t know how this could be done. This would need to be
> researched on google, I found this blog post for example:
>
>
> Michka
>
>
>
> On 24 juil. 2014, at 17:41, Satyananda Kashyap <ksatyananda at gmail.com>
> wrote:
>
> Hi Mickha,
>
> When using SWIG I read that it cannot handle nested classes and that the
> interface classes would be needed to expose them separately to python. So I
> did actually try to use the interface file pipeline designed for ITK  with
> gccxml to see if I could exposes the classes I had written. I am using a
> Visual Studio 2010 build. I had two main issues with it :
>
> 1. gccxml does not seem to be compatible with versions beyond VS2008. Now
> I wasn't sure if redoing my full cpp development in VS2008 would be a good
> idea. I could not find a workaround for this (Hence my attempt to try and
> use boost.python).
>
> 2. Also I needed to modify the interface files so that the other packages
> dependencies (i.e. VTK and OpenCV) could also work. I was not sure how to
> do that.
>
> Any suggestions on how/where I could start modifying. I like the fact that
> I will be able to automate the process and not write any interface files
> once I can get it working.
>
> Thanks,
> Regards,
> Kashyap
>
>
> On Thu, Jul 24, 2014 at 3:54 AM, Michka Popoff <michkapopoff at gmail.com>
> wrote:
>
>> 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
>>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/insight-users/attachments/20140724/0e8a9492/attachment.html>


More information about the Insight-users mailing list