In the last two posts I introduced ndarrays, and explained the rationale and implementation details of the library. In this post I am going to show a few of the libraries that I have written using ndarrays. All of this code works in both node.js and within any browser that supports typed arrays. You can run the demos directly in node.js or else test them out in a browser using a bundler like browserify. You can click on the links for each of them to find out more details about a specific module.
Vector arithmetic
cwise: Array operation meta-programming library
ndarray-ops: Common array operations
ndarray-complex: Array operations for complex numbers
Image processing
get-pixels: Reads the pixels from an image as an ndarray
save-pixels: Writes a 2D ndarray to an image file
lena: The Lena test image as a require()able commonjs module.
luminance: Converts an rgb image into luminance.
normalize: Scales an ndarray to mean 0 and standard deviation 1
ndarray-warp: Apply a non-linear warp to an ndarray
Fourier analysis
ndarray-fft: Fast fourier transform for ndarrays
ndarray-convolve: Convolutions and correlations for ndarrays
phase-align: Pattern matching and alignment
ndarray-translate-fft: Phase shifts an ndarray
Morphology and miscellaneous stuff
ndarray-pack: Convert a numeric.js array to an ndarray
ndarray-moments: Calculate first few terms of moment generating function
distance-transform: Fast
distance transforms
ball-morphology: Mathematical morphology with ball-shaped structuring elements
Conclusions
This list is by no means exhaustive, and I have been writing more modules as I need them. One of the nice things about working with CommonJS modules is that it is pretty straight forward to create your own module on npm, and reuse its functionality. I think that this style of programming could make building large scientific computing projects like SciPy/NumPy much more manageable. Each function in such a project could be decomposed into a separate module, and it would be easy to experiment with different implementations.