#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Python binding to the levmar library using Cython.
"""
from __future__ import (absolute_import, division, print_function)
from numpy.testing import Tester as __Tester
from . import _levmar
from ._release import __version__
# Add test function to the package.
test = __Tester().test
[docs]def levmar(func, p0, y, args=(), jacf=None,
mu=1.0e-03, eps1=1.5e-08, eps2=1.5e-08, eps3=1.5e-08,
maxit=1000, cdiff=False):
"""
Parameters
----------
func: callable
Function or method computing the model function.
p0: array_like, shape (m,)
Initial estimate of the parameters.
y: array_like, shape (n,)
Dependent data, or the observation.
args: tuple, optional
Extra arguments passed to `func` (and `jacf`).
jacf: callable, optional
Function or method computing the Jacobian of `func`. If it is None, the
Jacobian will be approximated.
mu: float, optional
Scale factor for initial mu.
eps1: float, optional
Stopping threshold for ||J^T e||_inf.
eps2: float, optional
Stopping threshold for ||Dp||_2.
eps3: float, optional
Stopping threshold for ||e||_2.
maxit: int, optional
The maximum number of iterations.
cdiff: {True, False}, optional
If this is True, the Jacobian is approximated with central
differentiation.
Returns
-------
p: ndarray, shape=(m,)
Best-fit parameters.
pcov: ndarray, shape=(m,m)
Covariance of the best-fit parameters.
info: tuple
Information regarding minimization.
0: ||e||_2 at `p0`
1:
0: 2-norm of e
1: infinity-norm of J^T.e
2: 2-norm of Dp
3: mu / max{(J^T.J)_ii}
2: The number of iterations
3: The reason for termination
4: The number of `func` evaluations
5: The number of `jacf` evaluations
6: The number of the linear system solved
"""
return _levmar.levmar(func, p0, y, args, jacf,
mu, eps1, eps2, eps3, maxit, cdiff)
[docs]def levmar_bc(func, p0, y, bc, args=(), jacf=None,
mu=1.0e-03, eps1=1.5e-08, eps2=1.5e-08, eps3=1.5e-08,
maxit=1000, cdiff=False):
"""
Parameters
----------
func: callable
Function or method computing the model function, `y = func(p, *args)`.
p0: array_like, shape (m,)
Initial estimate of the parameters.
y: array_like, shape (n,)
Dependent data, or the observation.
bc: sequence of 2-tuples
`(min, max)` pairs for each element of the parameters, specifying the
(inclusive) upper and lower bounds. Use None for one of `min` or `max`
for specifying no bound in that direction.
args: tuple, optional
Extra arguments passed to `func` (and `jacf`).
jacf: callable, optional
Function or method computing the Jacobian of `func`. If it is None, the
Jacobian will be approximated.
mu: float, optional
Scale factor for initial mu.
eps1: float, optional
Stopping threshold for ||J^T e||_inf.
eps2: float, optional
Stopping threshold for ||Dp||_2.
eps3: float, optional
Stopping threshold for ||e||_2.
maxit: int, optional
The maximum number of iterations.
cdiff: {True, False}, optional
If this is True, the Jacobian is approximated with central
differentiation.
Returns
-------
p: ndarray, shape=(m,)
Best-fit parameters.
pcov: ndarray, shape=(m,m)
Covariance of the best-fit parameters.
info: tuple
Information regarding minimization.
0: ||e||_2 at `p0`
1:
0: 2-norm of e
1: infinity-norm of J^T.e
2: 2-norm of Dp
3: mu / max{(J^T.J)_ii}
2: The number of iterations
3: The reason for termination
4: The number of `func` evaluations
5: The number of `jacf` evaluations
6: The number of the linear system solved
"""
return _levmar.levmar_bc(func, p0, y, bc, args, jacf,
mu, eps1, eps2, eps3, maxit, cdiff)
[docs]def levmar_lec(func, p0, y, lec, args=(), jacf=None,
mu=1.0e-03, eps1=1.5e-08, eps2=1.5e-08, eps3=1.5e-08,
maxit=1000, cdiff=False):
"""
Parameters
----------
func: callable
Function or method computing the model function.
p0: array_like, shape (m,)
Initial estimate of the parameters.
y: array_like, shape (n,)
Dependent data, or the observation.
lec: 2-tuple of ndarray
`(A, b)` pair specifying a linear equation constraint, where `A` and `b`
are a matrix of shape (k1, m) and a vector of shape (k1,) respectively.
args: tuple, optional
Extra arguments passed to `func` (and `jacf`).
jacf: callable, optional
Function or method computing the Jacobian of `func`. If it is None, the
Jacobian will be approximated.
mu: float, optional
Scale factor for initial mu.
eps1: float, optional
Stopping threshold for ||J^T e||_inf.
eps2: float, optional
Stopping threshold for ||Dp||_2.
eps3: float, optional
Stopping threshold for ||e||_2.
maxit: int, optional
The maximum number of iterations.
cdiff: {True, False}, optional
If this is True, the Jacobian is approximated with central
differentiation.
Returns
-------
p: ndarray, shape=(m,)
Best-fit parameters.
pcov: ndarray, shape=(m,m)
Covariance of the best-fit parameters.
info: tuple
Information regarding minimization.
0: ||e||_2 at `p0`
1:
0: 2-norm of e
1: infinity-norm of J^T.e
2: 2-norm of Dp
3: mu / max{(J^T.J)_ii}
2: The number of iterations
3: The reason for termination
4: The number of `func` evaluations
5: The number of `jacf` evaluations
6: The number of the linear system solved
"""
return _levmar.levmar_lec(func, p0, y, lec, args, jacf,
mu, eps1, eps2, eps3, maxit, cdiff)
[docs]def levmar_blec(func, p0, y, bc, lec, args=(), jacf=None,
mu=1.0e-03, eps1=1.5e-08, eps2=1.5e-08, eps3=1.5e-08,
maxit=1000, cdiff=False):
"""
Parameters
----------
func: callable
Function or method computing the model function.
p0: array_like, shape (m,)
Initial estimate of the parameters.
y: array_like, shape (n,)
Dependent data, or the observation.
bc: sequence of 2-tuples
`(min, max)` pairs for each element of the parameters, specifying the
(inclusive) upper and lower bounds. Use None for one of `min` or `max`
for specifying no bound in that direction.
lec: 2-tuple of ndarray
`(A, b)` pair specifying a linear equation constraint, where `A` and `b`
are a matrix of shape (k1, m) and a vector of shape (k1,) respectively.
args: tuple, optional
Extra arguments passed to `func` (and `jacf`).
jacf: callable, optional
Function or method computing the Jacobian of `func`. If it is None, the
Jacobian will be approximated.
mu: float, optional
Scale factor for initial mu.
eps1: float, optional
Stopping threshold for ||J^T e||_inf.
eps2: float, optional
Stopping threshold for ||Dp||_2.
eps3: float, optional
Stopping threshold for ||e||_2.
maxit: int, optional
The maximum number of iterations.
cdiff: {True, False}, optional
If this is True, the Jacobian is approximated with central
differentiation.
Returns
-------
p: ndarray, shape=(m,)
Best-fit parameters.
pcov: ndarray, shape=(m,m)
Covariance of the best-fit parameters.
info: tuple
Information regarding minimization.
0: ||e||_2 at `p0`
1:
0: 2-norm of e
1: infinity-norm of J^T.e
2: 2-norm of Dp
3: mu / max{(J^T.J)_ii}
2: The number of iterations
3: The reason for termination
4: The number of `func` evaluations
5: The number of `jacf` evaluations
6: The number of the linear system solved
"""
return _levmar.levmar_blec(func, p0, y, bc, lec, args, jacf,
mu, eps1, eps2, eps3, maxit, cdiff)
[docs]def levmar_bleic(func, p0, y, bc, lec, lic, args=(), jacf=None,
mu=1.0e-03, eps1=1.5e-08, eps2=1.5e-08, eps3=1.5e-08,
maxit=1000, cdiff=False):
"""
Parameters
----------
func: callable
Function or method computing the model function.
p0: array_like, shape (m,)
Initial estimate of the parameters.
y: array_like, shape (n,)
Dependent data, or the observation.
bc: sequence of 2-tuples
`(min, max)` pairs for each element of the parameters, specifying the
(inclusive) upper and lower bounds. Use None for one of `min` or `max`
for specifying no bound in that direction.
lec: 2-tuple of ndarray
`(A, b)` pair specifying a linear equation constraint, where `A` and `b`
are a matrix of shape (k1, m) and a vector of shape (k1,) respectively.
lic: 2-tuple of ndarray
`(C, d)` pair specifying a linear inequality constraint, where `C` and
`d` are a matrix of shape (k2, m) and a vector of shape (k2,)
respectively.
args: tuple, optional
Extra arguments passed to `func` (and `jacf`).
jacf: callable, optional
Function or method computing the Jacobian of `func`. If it is None, the
Jacobian will be approximated.
mu: float, optional
Scale factor for initial mu.
eps1: float, optional
Stopping threshold for ||J^T e||_inf.
eps2: float, optional
Stopping threshold for ||Dp||_2.
eps3: float, optional
Stopping threshold for ||e||_2.
maxit: int, optional
The maximum number of iterations.
cdiff: {True, False}, optional
If this is True, the Jacobian is approximated with central
differentiation.
Returns
-------
p: ndarray, shape=(m,)
Best-fit parameters.
pcov: ndarray, shape=(m,m)
Covariance of the best-fit parameters.
info: tuple
Information regarding minimization.
0: ||e||_2 at `p0`
1:
0: 2-norm of e
1: infinity-norm of J^T.e
2: 2-norm of Dp
3: mu / max{(J^T.J)_ii}
2: The number of iterations
3: The reason for termination
4: The number of `func` evaluations
5: The number of `jacf` evaluations
6: The number of the linear system solved
"""
return _levmar.levmar_bleic(func, p0, y, bc, lec, lic, args, jacf,
mu, eps1, eps2, eps3, maxit, cdiff)
[docs]def levmar_blic(func, p0, y, bc, lic, args=(), jacf=None,
mu=1.0e-03, eps1=1.5e-08, eps2=1.5e-08, eps3=1.5e-08,
maxit=1000, cdiff=False):
"""
Parameters
----------
func: callable
Function or method computing the model function.
p0: array_like, shape (m,)
Initial estimate of the parameters.
y: array_like, shape (n,)
Dependent data, or the observation.
bc: sequence of 2-tuples
`(min, max)` pairs for each element of the parameters, specifying the
(inclusive) upper and lower bounds. Use None for one of `min` or `max`
for specifying no bound in that direction.
lic: 2-tuple of ndarray
`(C, d)` pair specifying a linear inequality constraint, where `C` and
`d` are a matrix of shape (k2, m) and a vector of shape (k2,)
respectively.
args: tuple, optional
Extra arguments passed to `func` (and `jacf`).
jacf: callable, optional
Function or method computing the Jacobian of `func`. If it is None, the
Jacobian will be approximated.
mu: float, optional
Scale factor for initial mu.
eps1: float, optional
Stopping threshold for ||J^T e||_inf.
eps2: float, optional
Stopping threshold for ||Dp||_2.
eps3: float, optional
Stopping threshold for ||e||_2.
maxit: int, optional
The maximum number of iterations.
cdiff: {True, False}, optional
If this is True, the Jacobian is approximated with central
differentiation.
Returns
-------
p: ndarray, shape=(m,)
Best-fit parameters.
pcov: ndarray, shape=(m,m)
Covariance of the best-fit parameters.
info: tuple
Information regarding minimization.
0: ||e||_2 at `p0`
1:
0: 2-norm of e
1: infinity-norm of J^T.e
2: 2-norm of Dp
3: mu / max{(J^T.J)_ii}
2: The number of iterations
3: The reason for termination
4: The number of `func` evaluations
5: The number of `jacf` evaluations
6: The number of the linear system solved
"""
return _levmar.levmar_blic(func, p0, y, bc, lic, args, jacf,
mu, eps1, eps2, eps3, maxit, cdiff)
[docs]def levmar_leic(func, p0, y, lec, lic, args=(), jacf=None,
mu=1.0e-03, eps1=1.5e-08, eps2=1.5e-08, eps3=1.5e-08,
maxit=1000, cdiff=False):
"""
Parameters
----------
func: callable
Function or method computing the model function.
p0: array_like, shape (m,)
Initial estimate of the parameters.
y: array_like, shape (n,)
Dependent data, or the observation.
lec: 2-tuple of ndarray
`(A, b)` pair specifying a linear equation constraint, where `A` and `b`
are a matrix of shape (k1, m) and a vector of shape (k1,) respectively.
lic: 2-tuple of ndarray
`(C, d)` pair specifying a linear inequality constraint, where `C` and
`d` are a matrix of shape (k2, m) and a vector of shape (k2,)
respectively.
args: tuple, optional
Extra arguments passed to `func` (and `jacf`).
jacf: callable, optional
Function or method computing the Jacobian of `func`. If it is None, the
Jacobian will be approximated.
mu: float, optional
Scale factor for initial mu.
eps1: float, optional
Stopping threshold for ||J^T e||_inf.
eps2: float, optional
Stopping threshold for ||Dp||_2.
eps3: float, optional
Stopping threshold for ||e||_2.
maxit: int, optional
The maximum number of iterations.
cdiff: {True, False}, optional
If this is True, the Jacobian is approximated with central
differentiation.
Returns
-------
p: ndarray, shape=(m,)
Best-fit parameters.
pcov: ndarray, shape=(m,m)
Covariance of the best-fit parameters.
info: tuple
Information regarding minimization.
0: ||e||_2 at `p0`
1:
0: 2-norm of e
1: infinity-norm of J^T.e
2: 2-norm of Dp
3: mu / max{(J^T.J)_ii}
2: The number of iterations
3: The reason for termination
4: The number of `func` evaluations
5: The number of `jacf` evaluations
6: The number of the linear system solved
"""
return _levmar.levmar_leic(func, p0, y, lec, lic, args, jacf,
mu, eps1, eps2, eps3, maxit, cdiff)
[docs]def levmar_lic(func, p0, y, lic, args=(), jacf=None,
mu=1.0e-03, eps1=1.5e-08, eps2=1.5e-08, eps3=1.5e-08,
maxit=1000, cdiff=False):
"""
Parameters
----------
func: callable
Function or method computing the model function.
p0: array_like, shape (m,)
Initial estimate of the parameters.
y: array_like, shape (n,)
Dependent data, or the observation.
lic: 2-tuple of ndarray
`(C, d)` pair specifying a linear inequality constraint, where `C` and
`d` are a matrix of shape (k2, m) and a vector of shape (k2,)
respectively.
args: tuple, optional
Extra arguments passed to `func` (and `jacf`).
jacf: callable, optional
Function or method computing the Jacobian of `func`. If it is None, the
Jacobian will be approximated.
mu: float, optional
Scale factor for initial mu.
eps1: float, optional
Stopping threshold for ||J^T e||_inf.
eps2: float, optional
Stopping threshold for ||Dp||_2.
eps3: float, optional
Stopping threshold for ||e||_2.
maxit: int, optional
The maximum number of iterations.
cdiff: {True, False}, optional
If this is True, the Jacobian is approximated with central
differentiation.
Returns
-------
p: ndarray, shape=(m,)
Best-fit parameters.
pcov: ndarray, shape=(m,m)
Covariance of the best-fit parameters.
info: tuple
Information regarding minimization.
0: ||e||_2 at `p0`
1:
0: 2-norm of e
1: infinity-norm of J^T.e
2: 2-norm of Dp
3: mu / max{(J^T.J)_ii}
2: The number of iterations
3: The reason for termination
4: The number of `func` evaluations
5: The number of `jacf` evaluations
6: The number of the linear system solved
"""
return _levmar.levmar_lic(func, p0, y, lic, args, jacf,
mu, eps1, eps2, eps3, maxit, cdiff)