GSoC 2012 Ideas
This page documents ideas for the 2012 Google Summer of Code for the PDL data language project. The ideas proposed can be organized here and any thoughts about scope, implementation, or other details can be collected.
Expand and enhance PDL's help database API
... so that other PDL modules can add to it it at install time and other projects can tap into it more easily (pure-perl, may be too small)
- Refactor to use official Pod::Parser and other modules
- Add support for updating the database for new modules
- Maybe allow for multiple database files
- Would need to handle name collisions
- Improve PDL docs to allow better searching and multiple functions with same name
Design and Implement PDL::Expt
(should be all Perl)
MATLAB + perl/PDL
Make perl/PDL routines callable from MATLAB (some Perl, some PDL::PP, some MEX programming)
- Need to translate matlab arrays to piddles
- Ideally we could call matlab from pdl as well
- Inline::MATLAB anyone?
PDL equivalent of Matlab's Signal Processing Toolkit
(some Perl, some PDL::PP)
Design and implement new PDL::PP functionality
PDL::Pointer, PDL::SV, and PDL::Struct (mostly PDL core hacking, some PDL::PP and Perl)
64-bit support for PDL
Allow PDL objects to have more than 2**32 elements by changing nvals from an int type to a 64bit type. (PDL core hacking)
- Need to detect whether 64bit ints are supported from Config.pm
- Add tests to the test suite to verify correct operation
- Change nvals data type
- Trace impacts of new nvals type on the perl/PDL API
- Is there a way to give diagnostic errors to help 3rd party PDL module developers?
Make PDL thread-safe
(PDL core hacking)
Update FFTW to FFTW3
This could include not only FFTW3 support but also unifying the existing PDL ::FFT* functionality and provide improved support for complex data. (PDL::PP and XS)
- Implement low-level FFTW3 bindings
- Use FFTW3 multiple FFT calculation to implement threaded computations
- Harmonize FFT and FFTW and Complex modules
- Make the FFTs interoperable at some level
- Reduce/eliminate duplicate implementations of complex
- Extend Complex to use [2,N] as well as [N] [N] Re,Im
Full GSL support
(PDL::PP and XS)
Memory Mapping support for Windows
This involves implementing a basic mmap function for PDL using win32 routines. (PDL core hacking, working with PDL magic)
- See comments in the code for implementations to start with
- Ideally we would like to support out-of-core pdls
- This may require PDL::PP support (is it even possible?)
Python/Numpy + Perl/PDL
This could start by updating pyperl and include the ability to map from PDL to NumPy objects transparently. (Requires Perl/XS, PDL::PP, and corresponding python skills)
- The current pyperl has not been supported
- Allowing PDL to call python/numpy code would allow us to use matplotlib
Ability to read more data formats
- ERDAS Imagine
- Arc GRID
Resolve existing issues with PDL's GD module
NOTE: There are currently no reported issues with the PDL GD module. The existing PDL GD module works well in regular mode, but is very limited. It has much more capabilities exposed in the OO mode, but last I tried, it was seg faulting on Mac OS X. I tried troubleshooting it, and the module author, Judd Taylor, very kindly and patiently helped me in the process, but we never resolved it. Besides making the module rock-solid, its documentation also needs to be improved.
Improve PDL's graphics output capabilities
NOTE: PDL-2.4.11 is planned to include new graphics output options. Perhaps by perhaps leveraging a library such as Cairo instead of, or, along with, libgd.
Create PDL Bindings to the OpenCV library
- There is an existing perlXS bindings to OpenCV http://search.cpan.org/~yuta/Cv-0.12/, but it will be nice to leverage PDL's threading and general number crunching capabilities with OpenCV.
- There is some initial work interfacing PDL with OpenCV from Dima Kogan
- "These are autogenerated from the opencv headers, so only those opencv routines that use their custom matrices are supported. This covers a fair number of OpenCV routines, but not all of them. I use these bindings all the time, and they work well for my purposes :)"
- There is work in progress from Joel Berger for managing external dependency for PDL with the Alien module framework.