pyvideo.org: Videos of Glen W. Mabeyhttp://www.pyvideo.org/speaker/579/glen-w-mabey/rssen-usWed, 18 Jul 2012 00:00:00 -0500500QNDArray: A Numpy Clone for C++/Qthttp://www.pyvideo.org/video/1203/qndarray-a-numpy-clone-for-cqt<p>Description</p>
While Numpy/Scipy is an attractive implementation platform for many
algorithms, in some cases C++ is mandated by a customer. However, a foundation
of numpy's behavior is the notion of reference-counted instances, and
implementing an efficient, cross-platform mechanism for reference counting is
no trivial prerequisite.
The reference counting mechanisms already implemented in the Qt C++ toolkit
provide a cross-platform foundation upon which a numpy-like array class can be
built. In this talk one such implementation is discussed, QNDArray. In fact,
by mimicking the numpy behaviors, the job of implementing QNDArray became much
easier, as the task of "defining the behavior" became "adopting the behavior,"
to include function names.
In particular, the following aspects of the implementation were found to be
tricky and deserve discussion in this presentation:
* slicing multidimensional arrays given the limitations of operator[] in C++,
* const
* partial specialization
* implicit vs. explicit data sharing in Qt
QNDArray has been deployed in scientific research applications and currently
has the following features:
* bit-packed boolean arrays
* nascent masked array support
* unit test suite that validates QNDArray behavior against numpy behavior
* bounds checking with Q_ASSERT() (becomes a no-op in release mode)
* memmap()ed arrays via QFile::map()
* easily integrated as a QVariant value, leading to a natural mapping from QVariantMap to Python dict.
* float16 implementation including in-place compare
The author has approval from his management to submit the source code for
QNDArray to the Qt Project and plans to have it freely available for download
via [http://qt.gitorious.org/](http://qt.gitorious.org/) before the SciPy
conference begins.
Glen W. MabeyWed, 18 Jul 2012 00:00:00 -0500http://www.pyvideo.org/video/1203/qndarray-a-numpy-clone-for-cqt