https://github.com/cvxgrp/signal-decomposition

A simple and general framework for signal decomposition

https://github.com/cvxgrp/signal-decomposition

Science Score: 23.0%

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

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    2 of 6 committers (33.3%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.6%) to scientific vocabulary
Last synced: 11 months ago · JSON representation

Repository

A simple and general framework for signal decomposition

Basic Info
  • Host: GitHub
  • Owner: cvxgrp
  • License: bsd-3-clause
  • Language: Jupyter Notebook
  • Default Branch: main
  • Homepage:
  • Size: 91.5 MB
Statistics
  • Stars: 67
  • Watchers: 4
  • Forks: 10
  • Open Issues: 2
  • Releases: 10
Created over 6 years ago · Last pushed over 1 year ago
Metadata Files
Readme License

README.md

OSD: Optimization(-based) Signal Decomposition

Modeling language for finding signal decompositions

This software provides a modeling language for describing and solving signal decomposition problems. This framework is described in detail in an acompanying monograph, and examples are available in the notebooks directory.

New users are encouraged to try out our no-code, no-math introduction to signal decomposition, available here: http://signal-decomp-tutorial.org/

Brief overview

We formulate the problem of decomposing a signal into components as an optimization problem, where components are described by their loss functions. Once the component class loss functions are chosen, we minimize the total loss subject to replicating the given signal with the components. Our software provides a robust algorithm for carying out this decomposition, which is guaranteed to find the globally optimal descomposition when the loss functions are all convex, and is a good heuristic when they are not.

Vector times series signals with missing entries

We consider a vector time series or signal, y, which possibly has missing entries. We represent the signal compactly as a T x p matrix, with T time steps and p entries at each time. Some of these entries may be missing—filled with NaN or some other missing value indicator. We will be concerned with finding decompositions that exactly match the data at the known entries.

Signal decomposition

We model the given signal y as a sum (or decomposition) of K component, x^1,...,x^K. Each component x^k is also a T x p matrix, but they do not have any missing values. Indeed, we can use the values of x^1,...,x^K as estimates of the missing values in the original signal. This is useful for data imputation as well as model validation.

Component classes

The K components are characterized by cost functions that encode the loss of or impolausibility that a component takes on a certaint value. (In some cases, we can interpret the classes statistically, with the cost function corresponding to the negative log-likelihood of some probability density function, but this is not necessary.) Our solution method is based on evaluating the masked proximal operators of the class cost functions. These operators have been defined for many useful classes in the classes module.

Installation

You can pip install this package (pip install sig-decomp) or install from conda-forge (conda install conda-forge::sig-decomp).

For a dev environment, please clone the repository and install within a fresh environment using pip install -e ..

Owner

  • Name: Stanford University Convex Optimization Group
  • Login: cvxgrp
  • Kind: organization
  • Location: Stanford, CA

GitHub Events

Total
  • Watch event: 9
  • Push event: 3
  • Pull request event: 8
  • Fork event: 3
  • Create event: 1
Last Year
  • Watch event: 9
  • Push event: 3
  • Pull request event: 8
  • Fork event: 3
  • Create event: 1

Committers

Last synced: about 1 year ago

All Time
  • Total Commits: 292
  • Total Committers: 6
  • Avg Commits per committer: 48.667
  • Development Distribution Score (DDS): 0.144
Past Year
  • Commits: 17
  • Committers: 2
  • Avg Commits per committer: 8.5
  • Development Distribution Score (DDS): 0.059
Top Committers
Name Email Commits
Bennet Meyers b****m@s****u 250
Sara A. Miskovich s****h@g****m 18
thistleman c****6@g****m 15
Stanford-CVX-group 1****p 4
Luke Volpatti l****i@g****m 4
Akshay Agrawal a****a@c****u 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 11 months ago

All Time
  • Total issues: 3
  • Total pull requests: 27
  • Average time to close issues: 21 days
  • Average time to close pull requests: about 1 month
  • Total issue authors: 2
  • Total pull request authors: 6
  • Average comments per issue: 1.33
  • Average comments per pull request: 0.11
  • Merged pull requests: 26
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 6
  • Average time to close issues: N/A
  • Average time to close pull requests: 11 minutes
  • Issue authors: 0
  • Pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 6
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • bmeyers (2)
  • andrewcz (1)
Pull Request Authors
  • bmeyers (16)
  • pluflou (11)
  • Thistleman (2)
  • lukevolpatti (1)
  • giray98 (1)
  • akshayka (1)
Top Labels
Issue Labels
help wanted (1) enhancement (1)
Pull Request Labels

Dependencies

requirements.txt pypi
  • cvxpy *
  • matplotlib *
  • numpy *
  • scipy *
  • sklearn *
.github/workflows/build.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v3 composite
  • conda-incubator/setup-miniconda v2 composite
  • pypa/gh-action-pypi-publish release/v1 composite
.github/workflows/test.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v3 composite
  • conda-incubator/setup-miniconda v2 composite
pyproject.toml pypi