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

Williams, Norman K norman-k-williams at uiowa.edu
Mon Jul 28 17:11:59 EDT 2014


The biggest plus in using Python with C++ back end for the compute/graphics intensive stuff is interactive development without a compile/link stage.

There are great python debug tools.  Debugging python in Emacs is easy enough using pdb.  You can set breakpoint in the source code, examine variables, etc.  Debugging python is no more difficult than debugging C++.  There are python IDE that allow source debugging as well.  PyCharm is well regarded.

From: vincent ngai <vincent.ngai at gmail.com<mailto:vincent.ngai at gmail.com>>
Date: Friday, July 25, 2014 at 2:39 AM
To: Satyananda Kashyap <ksatyananda at gmail.com<mailto:ksatyananda at gmail.com>>
Cc: Insight <insight-users at itk.org<mailto:insight-users at itk.org>>
Subject: Re: [ITK-users] Suggestions about Python wrapping of cpp project

My project was designed as a C++ framework with functionality exposed to scripts, so it acts like an executable that runs a script that determines the program behaviour rather than a pure python program. It might be an important factor whether its a pure python app or an app that runs python.

Honestly I can't tell if relegating some application logic to scripts is more productive, it works for sure, how productive it is ultimately depends on how many of our next projects rely on using the existing framework. :)

Sorry I don't have a clear cut answer its a bit early to tell for my project.


On Fri, Jul 25, 2014 at 12:22 PM, Satyananda Kashyap <ksatyananda at gmail.com<mailto:ksatyananda at gmail.com>> wrote:
Thanks for your perspective Vincent.

One of my initial questions were about the productivity boost which you get when using scripting languages. I am reasonably comfortable coding in C++ toolchain. From your experience do you really see a spike in productivity when you shift over. Is it worth the effort ?

I think I will do some of the core development in C++ and expose them to Python. I wanted to use the scripting side more for prototyping and testing purposes.

Regards,
Kashyap


On Thu, Jul 24, 2014 at 10:18 PM, vincent ngai <vincent.ngai at gmail.com<mailto:vincent.ngai at gmail.com>> wrote:
I'm no expert, but previously when I worked on projects where we exposed almost all core functionalities via scripts, it seemed like a good initially, but what really happened is a shifting of complexities. Rather than have the complexity on the C++/Compiled codebase side shifted over to the scripts, in situation where you need to be able to change functionality without recompiling the source, or even have access to the source, scripts are the way to go. But shifting complexities to the runtime/script side has its own issues, I'm happy with the C/C++ toolchain maturity, Visual C++, GCC, GDB etc, you have very comprehensive debugging and editor facilities available for C++, but on the script side you have far less tools, and debugging may be a hassle.

Also for scripts that are scoped by whitespace/tabs and are not strictly typed, we found that scripts exceeding 1/2 pages in length tend to be less maintainable, and the chances of nuking a whitespace or overwriting a variable gets higher.

Just my 2 cents

On Wed, Jul 23, 2014 at 11:11 PM, Satyananda Kashyap <ksatyananda at gmail.com<mailto: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<http://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




--
Regards,
Vincent




--
Regards,
Vincent


________________________________
Notice: This UI Health Care e-mail (including attachments) is covered by the Electronic Communications Privacy Act, 18 U.S.C. 2510-2521, is confidential and may be legally privileged.  If you are not the intended recipient, you are hereby notified that any retention, dissemination, distribution, or copying of this communication is strictly prohibited.  Please reply to the sender that you have received the message in error, then delete it.  Thank you.
________________________________
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/insight-users/attachments/20140728/64d95136/attachment.html>


More information about the Insight-users mailing list