node package manager
Orgs are free. Discover, share, and reuse code in your team. Create a free org »

lomath

lomath

npm version Build Status Coverage Status Dependency Status

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

Join the chat at https://gitter.im/kengz/lomath

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

Sample plot

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