API Documentation for ITK's Functional Pythonic Interface

Greetings Everyone!

I’ve been exploring ITK’s Functional Pythonic Interface, as it is briefly mentioned in Python Quick Start (Python Quick Start - ITK's documentation) — it is absolutely yummy, delicious and just awesome! Who came up with this? :trophy:

I’m wondering, what’s is the way to list/see the filters available under the ITK’s Functional Pythonic Interface, short of looking through Python source files in Lib\site-packages\itk?

And, when I want to look into parameters for any given filter, say ChangeImageInformationFilter, with it’s corresponding change_information_image_filter(), there’s not much joy I get from this:

help(itk.change_information_image_filter)
Help on function change_information_image_filter in module itk.itkChangeInformationImageFilterPython:
change_information_image_filter(*args: Union[ForwardRef('itk.ImageBase'), collections.abc.Buffer, numpy._typing._array_like._SupportsArray[numpy.dtype[Any]], numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]], bool, int, float, complex, str, bytes, numpy._typing._nested_sequence._NestedSequence[Union[bool, int, float, complex, str, bytes]]], reference_image: 'itk.Image' = Ellipsis, use_reference_image: bool = Ellipsis, output_spacing: Sequence[float] = Ellipsis, output_origin: Sequence[float] = Ellipsis, output_direction=Ellipsis, output_offset: Sequence[int] = Ellipsis, change_spacing: bool = Ellipsis, change_origin: bool = Ellipsis, change_direction: bool = Ellipsis, change_region: bool = Ellipsis, center_image: bool = Ellipsis, **kwargs) -> Union[ForwardRef('itk.ImageBase'), collections.abc.Buffer, numpy._typing._array_like._SupportsArray[numpy.dtype[Any]], numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]], bool, int, float, complex, str, bytes, numpy._typing._nested_sequence._NestedSequence[Union[bool, int, float, complex, str, bytes]], Tuple[Union[ForwardRef('itk.ImageBase'), collections.abc.Buffer, numpy._typing._array_like._SupportsArray[numpy.dtype[Any]], numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]], bool, int, float, complex, str, bytes, numpy._typing._nested_sequence._NestedSequence[Union[bool, int, float, complex, str, bytes]]], ...]]
    Proxy of C++ itkChangeInformationImageFilterISS2 class.

… which is not immediately usable information, and then I find myself wading through code in ...\Lib\site-packages\itk\itkChangeInformationImageFilterPython.py.

Would it be possible to have Pydoc style documentation generated and made available alongside Doxygen to support/simplify/enhance the ITK functionality discovery and learning process?

Or, maybe I’m missing something big in this department?

My PyCharm is refusing to show proper code IntelliSense, code completion for ITK. :man_shrugging:

1 Like

Greetings @constantine !

Outstanding feedback! :clap: :thinking: :1st_place_medal: and #heard :-).

We will work towards readable, Pythonic, and searchable documentation for the function interfaces and also provide useful tab completions and type annotations in IDEs like PyCharm.

1 Like