ml-fcnnls

Fast Combinatorial Non-negative Least Squares

https://github.com/mljs/fcnnls

Science Score: 77.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 6 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
    3 of 9 committers (33.3%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.1%) to scientific vocabulary

Keywords

hacktoberfest
Last synced: 6 months ago · JSON representation ·

Repository

Fast Combinatorial Non-negative Least Squares

Basic Info
  • Host: GitHub
  • Owner: mljs
  • License: mit
  • Language: TypeScript
  • Default Branch: main
  • Homepage:
  • Size: 1.39 MB
Statistics
  • Stars: 6
  • Watchers: 8
  • Forks: 4
  • Open Issues: 1
  • Releases: 7
Topics
hacktoberfest
Created over 6 years ago · Last pushed over 1 year ago
Metadata Files
Readme Changelog License Citation

README.md

fcnnls

NPM version build status Test coverage npm download DOI

Fast Combinatorial Non-negative Least Squares.

As described in the publication by Van Benthem and Keenan (10.1002/cem.889), which is in turn based on the active-set method algorithm previously published by Lawson and Hanson. The basic active-set method is implemented in the nnls repository.

Given the matrices $\mathbf{X}$ and $\mathbf{Y}$, the code finds the matrix $\mathbf{K}$ that minimises the squared Frobenius norm $$\mathrm{argmin}K ||\mathbf{XK} -\mathbf{Y}||^2F$$ subject to $\mathbf{K}\geq 0$.

https://en.wikipedia.org/wiki/Non-negativeleastsquares

Installation

bash npm i ml-fcnnls

Usage Example

  1. Single $y$, using arrays as inputs.

```js import { fcnnlsVector } from 'ml-fcnnls';

const X = [ [1, 1, 2], [10, 11, -9], [-1, 0, 0], [-5, 6, -7], ]; const y = [-1, 11, 0, 1];

const k = fcnnlsVector(X, y).K.to1DArray(); /* k = [0.4610, 0.5611, 0] */ ```

  1. Multiple RHS, using Matrix instances as inputs.

```js import { fcnnls } from 'ml-fcnnls'; import { Matrix } from 'ml-matrix'; //npm i ml-matrix

// Example with multiple RHS

const X = new Matrix([ [1, 1, 2], [10, 11, -9], [-1, 0, 0], [-5, 6, -7], ]);

// Y can either be a Matrix or an array of arrays const Y = new Matrix([ [-1, 0, 0, 9], [11, -20, 103, 5], [0, 0, 0, 0], [1, 2, 3, 4], ]);

const K = fcnnls(X, Y).K; // K.to2DArray() converts the matrix to array. /* K = Matrix([ [0.4610, 0, 4.9714, 0], [0.5611, 0, 4.7362, 2.2404], [0, 1.2388, 0, 1.9136], ]) */ ```

  1. Using the options

js const K = fcnnls(X, Y, { info: true, // returns the error/iteration. maxIterations: 5, gradientTolerance: 0, }); /* same result than 2*/

API Documentation

License

MIT

Owner

  • Name: ml.js
  • Login: mljs
  • Kind: organization

Machine learning and numerical analysis tools in JavaScript for Node.js and the Browser

Citation (CITATION.cff)

cff-version: 1.2.0
title: 'Javascript library for Fast Combinatorial Non-negative Least Squares.'
repository-artifact: https://mljs.github.io/fcnnls/
repository-code: https://github.com/mljs/fcnnls
authors:
  - family-names: 'Zasso'
    given-names: 'Michaël'
    affiliation: 'Zakodium Sàrl, Switzerland'
    orcid: 'https://orcid.org/0000-0001-5295-2159'
  - family-names: 'Patiny'
    given-names: 'Luc'
    affiliation: 'Zakodium Sàrl, Switzerland'
    orcid: 'https://orcid.org/0000-0002-4943-2643'
  - family-names: 'Miranda'
    given-names: 'Santiago'
    affiliation: 'Zakodium Sàrl, Switzerland'
    orcid: 'https://orcid.org/0009-0002-2276-0265'
license: MIT
keywords:
  - FCNNLS
doi: 10.5281/zenodo.8189402

GitHub Events

Total
  • Issues event: 2
  • Issue comment event: 1
Last Year
  • Issues event: 2
  • Issue comment event: 1

Committers

Last synced: almost 3 years ago

All Time
  • Total Commits: 61
  • Total Committers: 9
  • Avg Commits per committer: 6.778
  • Development Distribution Score (DDS): 0.656
Top Committers
Name Email Commits
Jeremy Weymann j****n@e****h 21
Luc Patiny l****c@p****m 16
Michaël Zasso t****s@p****m 9
Jérémy Weymann j****n@t****h 6
Luc Patiny l****y@u****m 3
Jérémy Weymann j****n@t****h 3
Wadjih Bencheikh j****h@e****z 1
Jérémy Weymann j****n@M****l 1
mljs-bot 7****t@u****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 7
  • Total pull requests: 18
  • Average time to close issues: 11 months
  • Average time to close pull requests: 3 months
  • Total issue authors: 4
  • Total pull request authors: 5
  • Average comments per issue: 0.71
  • Average comments per pull request: 2.0
  • Merged pull requests: 15
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • lpatiny (3)
  • santimirandarp (2)
  • dbehringer (1)
  • targos (1)
  • matiasmorant (1)
Pull Request Authors
  • mljs-bot (7)
  • santimirandarp (6)
  • jeremyweymann (3)
  • wadjih-bencheikh18 (1)
  • targos (1)
Top Labels
Issue Labels
Pull Request Labels
autorelease: tagged (7)

Packages

  • Total packages: 1
  • Total downloads:
    • npm 1,082 last-month
  • Total docker downloads: 16
  • Total dependent packages: 4
  • Total dependent repositories: 9
  • Total versions: 9
  • Total maintainers: 5
npmjs.org: ml-fcnnls

Fast Combinatorial Non-negative Least Squares

  • Versions: 9
  • Dependent Packages: 4
  • Dependent Repositories: 9
  • Downloads: 1,082 Last month
  • Docker Downloads: 16
Rankings
Downloads: 1.6%
Dependent repos count: 3.9%
Dependent packages count: 4.5%
Average: 5.8%
Forks count: 7.7%
Stargazers count: 11.5%
Last synced: 6 months ago

Dependencies

package.json npm
  • @babel/plugin-transform-modules-commonjs ^7.16.8 development
  • eslint ^8.10.0 development
  • eslint-config-cheminfo ^7.2.2 development
  • esm ^3.2.25 development
  • jest ^27.5.1 development
  • jest-matcher-deep-close-to ^3.0.2 development
  • prettier ^2.5.1 development
  • rollup ^2.69.0 development
  • ml-matrix ^6.9.0
.github/workflows/nodejs.yml actions
.github/workflows/release.yml actions
.github/workflows/typedoc.yml actions
  • JamesIves/github-pages-deploy-action releases/v4 composite
  • actions/checkout v3 composite
  • actions/setup-node v3 composite
  • zakodium/typedoc-action v2 composite