lomath
lomath copied to clipboard
Lomath is a tensorial math library extended from lodash, with performant math functions applicable to tensors(multi-arrays). It also has a standalone plotting module that using HighCharts and BrowserS...
lomath
Lomath is a tensorial math library extended from lodash, with performant math functions applicable to tensors(multi-arrays). It also has a standalone plotting module that using HighCharts and BrowserSync.
See the API documentation. For the included functions, see the lodash API documentation.
Community
Installation
Installation:
npm install lomath
To use the plotting module, do:
// in the terminal at your project's root, do:
cd node_modules/lomath
npm install
Usage
See the API documentation and lodash API documentation for example usage.
Lomath comes with the latest version of lodash, and more. Use it as you would normally use lodash or underscore, and it has many math functions familiar to users of the R language.
For clearer terminology, we call tensors the generic data structures:
| data structure | terminology |
|---|---|
0 |
scalar = rank-0 tensor |
[1, 2, 3] |
vector = rank-1 tensor |
[[1, 2], [3, 4]] |
matrix = rank-2 tensor |
| ...and so on | rank-n tensor |
You can also extend lomath and define your own function that applies to tensors, using the function composition module such as _.distribute, _.asso, etc.
Plotting Module
lomath comes with a standalone plotting module that using HighCharts and BrowserSync. Just run your JS file normally when you plot (example below), and it will automatically pull up a browser showing you the charts; you can save them!
Demo: see demo/demo.js for magic.
var _ = require('lomath');
// use lodash as usual
var v = _.range(10);
// lomath: generalized math functions applicable to multi-array
var vv = _.square(v);
console.log(v);
console.log(vv);
// prints all the functions in lomath
// console.log(_.functions(_));
// data visualization: highcharts plotter
// call contructor of highcharts plotter. Note the ()
var hc = _.hc();
// first, list all you wish to plot.
hc.plot(
[{
name: "linear",
data: v
}, {
name: "square",
data: vv
}],
"Title 1"
)
hc.plot(
[{
name: "log",
data: _.log(v)
}],
"Title 2"
)
//optionally you can use the original HighCharts plot options object by:
hc.advPlot(HighChartsOptions);
// Magic here! Finally, the command to render all the plots above.
// Pulls up a browser (default to chrome for better support) with the charts.
// calling hc.render(true) will autosave all plots to your downloads folder.
hc.render();
Roadmap
- add timer tick tock
- Multivar methods for ML: special dot, matrix mult, sum of expression using index, trace, det, inverse, logistic fn.
- add aliases
- add Randomjs engine
- higher dimensional math
- JSON object methods
- more stats methods: sample, multidim probs, covarience, distributions
- performance benchmark