Source code for magni.cs.reconstruction.sl0._mu_update

"""
..
    Copyright (c) 2015-2017, Magni developers.
    All rights reserved.
    See LICENSE.rst for further information.

Module providing functions for calculating the updated value of mu (the
relative step-size used in the gradient descent iteration)  used in the
Smoothed l0 algorithms.

Routine listings
----------------
calculate_using_fixed(var)
    Calculate the updated, fixed mu value.
calculate_using_step(var)
    Calculate an updated mu value in a 'step' way.
get_function_handle(method)
    Return a function handle to a given calculation method.

"""

from __future__ import division


[docs]def wrap_calculate_using_fixed(var): """ Arguments wrapper for calculate_using_fixed. """ convert = var['convert'] mu = convert(var['param']['mu_fixed']) def calculate_using_fixed(var): """ Calculate the updated, fixed mu value. Parameters ---------- var : dict Dictionary of variables used in the calculation of the updated mu value. Returns ------- mu : float The updated mu value to be used in the SL0 algorithm. """ return mu return calculate_using_fixed
[docs]def wrap_calculate_using_step(var): """ Arguments wrapper for calculate_using_step. """ convert = var['convert'] sigma_start = var['sigma_start'] sigma_geometric = var['sigma_geometric'] mu_start = convert(var['param']['mu_step_start']) mu_end = convert(var['param']['mu_step_end']) mu_iteration = var['param']['mu_step_iteration'] def calculate_using_step(var): """ Calculate an updated mu value in a 'step' way. Parameters ---------- var : dict Dictionary of variables used in the calculation of the updated mu value. Returns ------- mu : float The updated mu value to be used in the SL0 algorithm. """ i = var['i'] if i < mu_iteration or sigma_start * sigma_geometric**i > 0.75: mu = mu_start else: mu = mu_end return mu return calculate_using_step
[docs]def get_function_handle(method, var): """ Return a function handle to a given calculation method. Parameters ---------- method : str Identifier of the calculation method to return a handle to. var : dict Local variables needed in the mu update method. Returns ------- f_handle : function Handle to the calculation method defined in this globals scope. """ return globals()['wrap_calculate_using_' + method](var)