UNPKG

lomath

Version:

Lomath is a tensorial math library extended from lodash.

115 lines (79 loc) 3.78 kB
# lomath [![npm version](https://badge.fury.io/js/lomath.svg)](http://badge.fury.io/js/lomath) [![Build Status](https://travis-ci.org/kengz/lomath.svg?branch=master)](https://travis-ci.org/kengz/lomath) [![Coverage Status](https://coveralls.io/repos/kengz/lomath/badge.svg?branch=master)](https://coveralls.io/r/kengz/lomath?branch=master) [![Dependency Status](https://gemnasium.com/kengz/lomath.svg)](https://gemnasium.com/kengz/lomath) [**Lomath**](https://github.com/kengz/lomath) is a tensorial math library extended from [`lodash`](https://lodash.com), 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](http://kengz.github.io/lomath/). For the included functions, see the [lodash API documentation](https://lodash.com/docs). ## Community [![Join the chat at https://gitter.im/kengz/lomath](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/kengz/lomath?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) ## 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](http://kengz.github.io/lomath/) and [lodash API documentation](https://lodash.com/docs) for example usage. **Lomath** comes with the latest version of [`lodash`](https://lodash.com), 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 <img src="./docs/demo.gif" alt="Sample plot" width="100%" style="display:inline-block" /> `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