[Insight-developers] [ITK + Python] Wrapping classes proposal

Gaetan Lehmann gaetan.lehmann at jouy.inra.fr
Wed Jun 15 09:37:58 EDT 2005


On Wed, 15 Jun 2005 15:35:35 +0200, Gaetan Lehmann  
<gaetan.lehmann at jouy.inra.fr> wrote:

> On Wed, 15 Jun 2005 14:12:37 +0200, Benoit Regrain
> <benoit.regrain at creatis.insa-lyon.fr> wrote:
>
>>>> I have finished to mix our 2 codes. The result is very good and offers
>>>> a simple use
>>>> But with a first parse of the itk classes :-(
>>>> I have used my parsing and adapted it to your classes. I have added
>>>> some usefull
>>>> methods in classes to have facilities.
>>>
>>> Great:-), but sadely you took an old version of my module, and lots of
>>> things are better now, without talking of New method facilities (dict
>>> interface for types, no names with _ prefix in itk module, better
>>> management of __call__ to be consistent with vtk, ...)
>>> I'm modifying it to integrate changes.
>> Where could I get the last version of your module ?
>
> http://voxel.jouy.inra.fr/darcs/pitk
> it's a darcs repository, but you can get last version without darcs
>
> I attach changes I made to your module (in fact, I import your changes in
> mine).
>
> Some comments :
> I import import itkClassParser instead of import everything in it to be
> able to keep only interesting attributes (for user) in itk module
> I use True and False instead of 1 and 0
> I haven't imported ItkBase because the unique method it contains is used
> only in one class. But it may be nice to have one common class for all  
> itk
> classes
> I have used ''.join([]) instead of string.join([], '') because  
> string.join
> should be deprecated in future python
> I remove ITK_ prefix of types (itk.ITK_US -> itk.US). itk.US seems enough
> to me :-)

ho, and I forgot : items() is now called keys() to be consistent with dict  
interface :-)

>
>
>>
>>
>>> Also, I don't really understand the can_instanciate method : some
>>> classes can be instanciated without New method, just with () (Ex:
>>> itk.Index[2]())
>> But some classes found like ImageToImageFilter aren't instanciable
>> because
>> they haven't the ::New method (in the C++ code). The can_instanciate
>> method
>> is to differenciate super classes and instanciable classes
>
> ok
> To be consistent with VTK, I have made classes callable (it delegates to
> New if New exists). Doing that unify classes with New method and classes
> without New method.
> As there is no way to know in a class is really callable, I'm not sure
> this method is really useful, or it should return True (when New method  
> is
> avaible) or Perhaps if New is not avaible ;-)
>
>>
>>
>>>
>>>>
>>>> In your solution, you have kept the _New, _Pointer, _SuperClass, etc.
>>>> extentions
>>>> to create corresponding methods New, Pointer, SuperClass. What is the
>>>> interest
>>>> to keep Pointer, Superclas, etc. ? Have the New method seems to me the
>>>> only
>>>> usefull method.
>>>
>>> I don't know if other methods are useful. In doubt, I kept them. The
>>> goal was to make everything in InsightToolkit module avaible in itk
>>> module.
>> But in your solution, you don't make difference between
>>  - classes : _Pointer, _SuperClass
>>  - methods : _New
>
> you're right, but is it really a problem ? Everything is object in python
> ;-)
> I don't care to remove them : I don't use them, and I don't know if they
> are useful.
>
> But there is a problem with your module : static methods such as
> InsightToolkit.itkVersion_GetITKVersion() are not avaible :-/
>
>> Having methods is usefull but I don't see the interest to have the
>> _SuperClass.
>> Concerning _Pointer, it may be usefull, but I'm not sure.
>>
>>
>>
>>>>> Can we get your code somewhere ?
>>>> Yes, I have made a CVS repository on our server :
>>>>    CVSROOT :
>>>> :pserver:anonymous at cvs.creatis.insa-lyon.fr:2402/cvs/public
>>>>    password  : anonymous Module name : itkWrapping
>>>>
>>>> All is in the python directory :
>>>>  itkParser.py : the parser of the itk classes
>>>>  itk.py : creation of classes
>>>>  itkTestX.py : 3 tests presenting the use and limitations
>>
>> Benoit Regrain
>
>
>



-- 
Gaetan Lehmann <gaetan.lehmann at jouy.inra.fr>
Tel: +33 1 34 65 29 66
Biologie du Développement et de la Reproduction
INRA de Jouy-en-Josas (France)
Web: http://voxel.jouy.inra.fr


More information about the Insight-developers mailing list