Skip to content

A Python package for modeling and solving structured low-rank operator recovery problems using nuclear norms.

Notifications You must be signed in to change notification settings

jbruer/operfact

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Synopsis

The operfact package enables the modeling and solution of structured low-rank operator recovery problems using nuclear norms.

My thesis discusses these problems in more detail. Reference:

Bruer, John J. (2017) Recovering structured low-rank operators using nuclear norms. Dissertation (Ph.D.), California Institute of Technology. doi:10.7907/Z9F18WQS. http://resolver.caltech.edu/CaltechTHESIS:02082017-062956314

Code Example

The following code demonstrates the creation and solution of a synthetic operator denoising problem.

import numpy as np
from operfact import operators, measurements, solvers
from operfact import regularizers as regs

shape = (m, n, p, q)
nfactors = r
sigma = 0.1

# Create the true operator and noisy measurements
oper = operators.RandomDyadsOperator(shape, nfactors)
measobj = measurements.IdentityMeasurement(shape)
measvec = measobj.apply(oper) + sigma*np.random.normal(size=measobj.nmeas)

# Create the problem instance
prob = solvers.Problem()
prob.shape = shape
prob.measurementobj = measobj
prob.measurementvec = measvec
prob.norm = regs.NucNorm_Prod(regs.norm_l2, regs.norm_l2)
prob.penconst = regs.penconst_denoise(shape, sigma, prob.norm)
prob.solver = cvxpy.SCS
prob.rank = r  # altminsolve only

# Solve the problem
out = solvers.altminsolve(prob)

Installation

The easiest way to obtain this package is from PyPI:

pip install operfact

It requires CVXPY, NumPy, and SciPy.

API Reference

Documentation is included in the doc folder (autogenerated from docstrings). Background information is available in my thesis.

License

While appropriate licensing to this software is pending, the author reserves all rights.

About

A Python package for modeling and solving structured low-rank operator recovery problems using nuclear norms.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages