https://github.com/geraintluff/ndarray-bundle
Bundle many ndarray modules into a single import
https://github.com/geraintluff/ndarray-bundle
Last synced: 4 months ago
JSON representation
Bundle many ndarray modules into a single import
- Host: GitHub
- URL: https://github.com/geraintluff/ndarray-bundle
- Owner: geraintluff
- Created: 2014-04-26T13:24:02.000Z (about 12 years ago)
- Default Branch: gh-pages
- Last Pushed: 2014-04-28T09:29:20.000Z (about 12 years ago)
- Last Synced: 2025-09-30T05:27:24.713Z (9 months ago)
- Language: JavaScript
- Homepage: http://geraintluff.github.io/ndarray-bundle/
- Size: 160 KB
- Stars: 4
- Watchers: 3
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ndarray-bundle
This module packages up `ndarray` and other related modules into a single include. The goal is to be a single-stop ndarray-based module (similar to SciPy).
### Generating a cut-down version for Browserify
Browserify scans for every module that is `require()`d, so Browserify-ing the larger bundle ends up packaging up a bunch of things you don't need.
This module also includes code-generation, so you can generate your *own* version of the bundle that only includes the modules you need. This means you can work with the comprehensive bundle during dev, but swap it out for a compatible, minimal bundle when you know which modules you need.
## Inclusion via Node
When included as a Node module, the result is based on the [`ndarray`](https://www.npmjs.org/package/ndarray) package:
```javascript
var ndarray = require('ndarray-bundle');
var arr1 = ndarray(new Float32Array(100), [10, 10]);
```
However, other modules are included and added to this bundle, e.g.:
```javascript
var matrix = ndarray.zeros([4, 4]); // included from the "zeros" module
ndarray.fill(nd1, function (i, j) { // included from "ndarray-fill"
return i + j;
});
```
Some of the modules are grouped together by functionality:
```javascript
assert(ndarray.signals.fft); // included from the "ndarray-fft" module
assert(ndarray.signals.convolve); // included from the "ndarray-convolve" module
```
The structure of the included modules is defined in `module-map.json`.
## Generating your own code
When bundling up using a tool like Browserify, you don't want to `require()` modules that you're not using.
As such, you can generate code that just includes the modules you need. You'll probably do this as part of your build script (so `ndarray-bundle` is only a dev-dependency):
```javascript
var codeGen = require('ndarray-bundle/generate');
codeGen.generateFile('./ndarray-bundle.js'); // writes to file, including all known modules by default
var jsCode = codeGen.generateString(); // or get as string
```
### Selecting certain packages
To select certain packages, you can specify the packages you need by supplying an object argument:
```javascript
codeGen.generateFile('./ndarray-bundle.js', {
ops: true,
complex: true,
signal: true
});
```
The structure of this argument is recursive. If you want to pick and choose from sub-groups, then you can supply an object instead of `true`:
```javascript
codeGen.generateFile('./ndarray-bundle.js', {
ops: true,
complex: true,
signal: {
fft: true
}
});
```
You can also enhance this structure with other modules, by providing a string:
```javascript
codeGen.generateFile('./my-ndarray-bundle.js', {
ops: true,
myCustomModule: 'ndarray-my-custom-module'
});
```
The resulting code only references the modules you want, but it maintains the same data structure. This means that if you only reference `my-ndarray-bundle.js`, then Browserify will only package up the modules you need.