# This file was automatically generated by SWIG (https://www.swig.org).
# Version 4.3.1
#
# Do not make changes to this file unless you know what you are doing - modify
# the SWIG interface file instead.


import collections

from sys import version_info as _version_info
if _version_info < (3, 7, 0):
    raise RuntimeError("Python 3.7 or later required")

from . import _ITKCommonPython


from . import _ITKOptimizersPython



from sys import version_info as _swig_python_version_info
# Import the low-level C/C++ module
if __package__ or "." in __name__:
    from . import _ITKOptimizersBasePython
else:
    import _ITKOptimizersBasePython

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

def _swig_repr(self):
    try:
        strthis = "proxy of " + self.this.__repr__()
    except __builtin__.Exception:
        strthis = ""
    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)


def _swig_setattr_nondynamic_instance_variable(set):
    def set_instance_attr(self, name, value):
        if name == "this":
            set(self, name, value)
        elif name == "thisown":
            self.this.own(value)
        elif hasattr(self, name) and isinstance(getattr(type(self), name), property):
            set(self, name, value)
        else:
            raise AttributeError("You cannot add instance attributes to %s" % self)
    return set_instance_attr


def _swig_setattr_nondynamic_class_variable(set):
    def set_class_attr(cls, name, value):
        if hasattr(cls, name) and not isinstance(getattr(cls, name), property):
            set(cls, name, value)
        else:
            raise AttributeError("You cannot add class attributes to %s" % cls)
    return set_class_attr


def _swig_add_metaclass(metaclass):
    """Class decorator for adding a metaclass to a SWIG wrapped class - a slimmed down version of six.add_metaclass"""
    def wrapper(cls):
        return metaclass(cls.__name__, cls.__bases__, cls.__dict__.copy())
    return wrapper


class _SwigNonDynamicMeta(type):
    """Meta class to enforce nondynamic attributes (no new attributes) for a class"""
    __setattr__ = _swig_setattr_nondynamic_class_variable(type.__setattr__)


if _swig_python_version_info[0:2] >= (3, 3):
    import collections.abc
else:
    import collections

import itk.vnl_vectorPython
import itk.stdcomplexPython
import itk.pyBasePython
import itk.vnl_matrixPython
import itk.itkArray2DPython
import itk.itkArrayPython
import itk.itkOptimizerParametersPython
import itk.ITKCommonBasePython
import itk.itkMatrixPython
import itk.vnl_matrix_fixedPython
import itk.itkCovariantVectorPython
import itk.itkFixedArrayPython
import itk.vnl_vector_refPython
import itk.itkVectorPython
import itk.itkPointPython
import itk.ITKCostFunctionsPython
import itk.vnl_cost_functionPython
import itk.vnl_unary_functionPython
import itk.itkCostFunctionPython
import itk.vnl_least_squares_functionPython
class itkFRPROptimizerEnums(object):
    r"""Proxy of C++ itkFRPROptimizerEnums class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    Optimization_FletchReeves = _ITKOptimizersBasePython.itkFRPROptimizerEnums_Optimization_FletchReeves
    
    Optimization_PolakRibiere = _ITKOptimizersBasePython.itkFRPROptimizerEnums_Optimization_PolakRibiere
    

    def __init__(self, *args):
        r"""
        __init__(self) -> itkFRPROptimizerEnums
        __init__(self, arg0) -> itkFRPROptimizerEnums

        Parameters
        ----------
        arg0: itkFRPROptimizerEnums const &

        """
        _ITKOptimizersBasePython.itkFRPROptimizerEnums_swiginit(self, _ITKOptimizersBasePython.new_itkFRPROptimizerEnums(*args))
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkFRPROptimizerEnums

# Register itkFRPROptimizerEnums in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkFRPROptimizerEnums_swigregister(itkFRPROptimizerEnums)
class itkGradientDescentOptimizerEnums(object):
    r"""Proxy of C++ itkGradientDescentOptimizerEnums class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    StopConditionGradientDescentOptimizer_MaximumNumberOfIterations = _ITKOptimizersBasePython.itkGradientDescentOptimizerEnums_StopConditionGradientDescentOptimizer_MaximumNumberOfIterations
    
    StopConditionGradientDescentOptimizer_MetricError = _ITKOptimizersBasePython.itkGradientDescentOptimizerEnums_StopConditionGradientDescentOptimizer_MetricError
    

    def __init__(self, *args):
        r"""
        __init__(self) -> itkGradientDescentOptimizerEnums
        __init__(self, arg0) -> itkGradientDescentOptimizerEnums

        Parameters
        ----------
        arg0: itkGradientDescentOptimizerEnums const &

        """
        _ITKOptimizersBasePython.itkGradientDescentOptimizerEnums_swiginit(self, _ITKOptimizersBasePython.new_itkGradientDescentOptimizerEnums(*args))
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkGradientDescentOptimizerEnums

# Register itkGradientDescentOptimizerEnums in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkGradientDescentOptimizerEnums_swigregister(itkGradientDescentOptimizerEnums)

def itkOptimizer_New():
    return itkOptimizer.New()

class itkOptimizer(itk.ITKCommonBasePython.itkObject):
    r"""Proxy of C++ itkOptimizer class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkOptimizer___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkOptimizer_Clone(self)

    def SetInitialPosition(self, param):
        r"""
        SetInitialPosition(self, param)

        Parameters
        ----------
        param: itkOptimizerParametersD const &

        """
        return _ITKOptimizersBasePython.itkOptimizer_SetInitialPosition(self, param)

    def GetInitialPosition(self):
        r"""GetInitialPosition(self) -> itkOptimizerParametersD"""
        return _ITKOptimizersBasePython.itkOptimizer_GetInitialPosition(self)

    def SetScales(self, scales):
        r"""
        SetScales(self, scales)

        Parameters
        ----------
        scales: itkArrayD const &

        """
        return _ITKOptimizersBasePython.itkOptimizer_SetScales(self, scales)

    def GetScales(self):
        r"""GetScales(self) -> itkArrayD"""
        return _ITKOptimizersBasePython.itkOptimizer_GetScales(self)

    def GetInverseScales(self):
        r"""GetInverseScales(self) -> itkArrayD"""
        return _ITKOptimizersBasePython.itkOptimizer_GetInverseScales(self)

    def GetCurrentPosition(self):
        r"""GetCurrentPosition(self) -> itkOptimizerParametersD"""
        return _ITKOptimizersBasePython.itkOptimizer_GetCurrentPosition(self)

    def StartOptimization(self):
        r"""StartOptimization(self)"""
        return _ITKOptimizersBasePython.itkOptimizer_StartOptimization(self)

    def GetStopConditionDescription(self):
        r"""GetStopConditionDescription(self) -> std::string const"""
        return _ITKOptimizersBasePython.itkOptimizer_GetStopConditionDescription(self)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkOptimizer

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkOptimizer

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _ITKOptimizersBasePython.itkOptimizer_cast(obj)

    def New(*args, **kargs):
        """New() -> itkOptimizer

        Create a new object of the class itkOptimizer and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkOptimizer.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkOptimizer.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkOptimizer.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkOptimizer_swigregister(itkOptimizer)
class itkRegularStepGradientDescentBaseOptimizerEnums(object):
    r"""Proxy of C++ itkRegularStepGradientDescentBaseOptimizerEnums class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    StopCondition_GradientMagnitudeTolerance = _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizerEnums_StopCondition_GradientMagnitudeTolerance
    
    StopCondition_StepTooSmall = _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizerEnums_StopCondition_StepTooSmall
    
    StopCondition_ImageNotAvailable = _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizerEnums_StopCondition_ImageNotAvailable
    
    StopCondition_CostFunctionError = _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizerEnums_StopCondition_CostFunctionError
    
    StopCondition_MaximumNumberOfIterations = _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizerEnums_StopCondition_MaximumNumberOfIterations
    
    StopCondition_Unknown = _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizerEnums_StopCondition_Unknown
    

    def __init__(self, *args):
        r"""
        __init__(self) -> itkRegularStepGradientDescentBaseOptimizerEnums
        __init__(self, arg0) -> itkRegularStepGradientDescentBaseOptimizerEnums

        Parameters
        ----------
        arg0: itkRegularStepGradientDescentBaseOptimizerEnums const &

        """
        _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizerEnums_swiginit(self, _ITKOptimizersBasePython.new_itkRegularStepGradientDescentBaseOptimizerEnums(*args))
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkRegularStepGradientDescentBaseOptimizerEnums

# Register itkRegularStepGradientDescentBaseOptimizerEnums in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizerEnums_swigregister(itkRegularStepGradientDescentBaseOptimizerEnums)
class itkSPSAOptimizerEnums(object):
    r"""Proxy of C++ itkSPSAOptimizerEnums class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    StopConditionSPSAOptimizer_Unknown = _ITKOptimizersBasePython.itkSPSAOptimizerEnums_StopConditionSPSAOptimizer_Unknown
    
    StopConditionSPSAOptimizer_MaximumNumberOfIterations = _ITKOptimizersBasePython.itkSPSAOptimizerEnums_StopConditionSPSAOptimizer_MaximumNumberOfIterations
    
    StopConditionSPSAOptimizer_BelowTolerance = _ITKOptimizersBasePython.itkSPSAOptimizerEnums_StopConditionSPSAOptimizer_BelowTolerance
    
    StopConditionSPSAOptimizer_MetricError = _ITKOptimizersBasePython.itkSPSAOptimizerEnums_StopConditionSPSAOptimizer_MetricError
    

    def __init__(self, *args):
        r"""
        __init__(self) -> itkSPSAOptimizerEnums
        __init__(self, arg0) -> itkSPSAOptimizerEnums

        Parameters
        ----------
        arg0: itkSPSAOptimizerEnums const &

        """
        _ITKOptimizersBasePython.itkSPSAOptimizerEnums_swiginit(self, _ITKOptimizersBasePython.new_itkSPSAOptimizerEnums(*args))
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkSPSAOptimizerEnums

# Register itkSPSAOptimizerEnums in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkSPSAOptimizerEnums_swigregister(itkSPSAOptimizerEnums)

def itkNonLinearOptimizer_New():
    return itkNonLinearOptimizer.New()

class itkNonLinearOptimizer(itkOptimizer):
    r"""Proxy of C++ itkNonLinearOptimizer class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkNonLinearOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkNonLinearOptimizer___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkNonLinearOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkNonLinearOptimizer_Clone(self)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkNonLinearOptimizer

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkNonLinearOptimizer

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _ITKOptimizersBasePython.itkNonLinearOptimizer_cast(obj)

    def New(*args, **kargs):
        """New() -> itkNonLinearOptimizer

        Create a new object of the class itkNonLinearOptimizer and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkNonLinearOptimizer.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkNonLinearOptimizer.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkNonLinearOptimizer.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkNonLinearOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkNonLinearOptimizer_swigregister(itkNonLinearOptimizer)

def itkSingleValuedNonLinearOptimizer_New():
    return itkSingleValuedNonLinearOptimizer.New()

class itkSingleValuedNonLinearOptimizer(itkNonLinearOptimizer):
    r"""Proxy of C++ itkSingleValuedNonLinearOptimizer class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkSingleValuedNonLinearOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkSingleValuedNonLinearOptimizer___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkSingleValuedNonLinearOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkSingleValuedNonLinearOptimizer_Clone(self)

    def SetCostFunction(self, costFunction):
        r"""
        SetCostFunction(self, costFunction)

        Parameters
        ----------
        costFunction: itkSingleValuedCostFunction *

        """
        return _ITKOptimizersBasePython.itkSingleValuedNonLinearOptimizer_SetCostFunction(self, costFunction)

    def GetModifiableCostFunction(self):
        r"""GetModifiableCostFunction(self) -> itkSingleValuedCostFunction"""
        return _ITKOptimizersBasePython.itkSingleValuedNonLinearOptimizer_GetModifiableCostFunction(self)

    def GetCostFunction(self, *args):
        r"""
        GetCostFunction(self) -> itkSingleValuedCostFunction
        GetCostFunction(self) -> itkSingleValuedCostFunction
        """
        return _ITKOptimizersBasePython.itkSingleValuedNonLinearOptimizer_GetCostFunction(self, *args)

    def GetValue(self, parameters):
        r"""
        GetValue(self, parameters) -> double

        Parameters
        ----------
        parameters: itkOptimizerParametersD const &

        """
        return _ITKOptimizersBasePython.itkSingleValuedNonLinearOptimizer_GetValue(self, parameters)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkSingleValuedNonLinearOptimizer

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkSingleValuedNonLinearOptimizer

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _ITKOptimizersBasePython.itkSingleValuedNonLinearOptimizer_cast(obj)

    def New(*args, **kargs):
        """New() -> itkSingleValuedNonLinearOptimizer

        Create a new object of the class itkSingleValuedNonLinearOptimizer and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkSingleValuedNonLinearOptimizer.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkSingleValuedNonLinearOptimizer.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkSingleValuedNonLinearOptimizer.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkSingleValuedNonLinearOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkSingleValuedNonLinearOptimizer_swigregister(itkSingleValuedNonLinearOptimizer)
class itkSingleValuedNonLinearVnlOptimizer(itkSingleValuedNonLinearOptimizer):
    r"""Proxy of C++ itkSingleValuedNonLinearVnlOptimizer class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr

    def GetMaximize(self):
        r"""GetMaximize(self) -> bool const &"""
        return _ITKOptimizersBasePython.itkSingleValuedNonLinearVnlOptimizer_GetMaximize(self)

    def SetMaximize(self, _arg):
        r"""
        SetMaximize(self, _arg)

        Parameters
        ----------
        _arg: bool

        """
        return _ITKOptimizersBasePython.itkSingleValuedNonLinearVnlOptimizer_SetMaximize(self, _arg)

    def MaximizeOn(self):
        r"""MaximizeOn(self)"""
        return _ITKOptimizersBasePython.itkSingleValuedNonLinearVnlOptimizer_MaximizeOn(self)

    def MaximizeOff(self):
        r"""MaximizeOff(self)"""
        return _ITKOptimizersBasePython.itkSingleValuedNonLinearVnlOptimizer_MaximizeOff(self)

    def GetMinimize(self):
        r"""GetMinimize(self) -> bool"""
        return _ITKOptimizersBasePython.itkSingleValuedNonLinearVnlOptimizer_GetMinimize(self)

    def SetMinimize(self, v):
        r"""
        SetMinimize(self, v)

        Parameters
        ----------
        v: bool

        """
        return _ITKOptimizersBasePython.itkSingleValuedNonLinearVnlOptimizer_SetMinimize(self, v)

    def MinimizeOn(self):
        r"""MinimizeOn(self)"""
        return _ITKOptimizersBasePython.itkSingleValuedNonLinearVnlOptimizer_MinimizeOn(self)

    def MinimizeOff(self):
        r"""MinimizeOff(self)"""
        return _ITKOptimizersBasePython.itkSingleValuedNonLinearVnlOptimizer_MinimizeOff(self)

    def GetCachedValue(self):
        r"""GetCachedValue(self) -> double const &"""
        return _ITKOptimizersBasePython.itkSingleValuedNonLinearVnlOptimizer_GetCachedValue(self)

    def GetCachedDerivative(self):
        r"""GetCachedDerivative(self) -> itkArrayD"""
        return _ITKOptimizersBasePython.itkSingleValuedNonLinearVnlOptimizer_GetCachedDerivative(self)

    def GetCachedCurrentPosition(self):
        r"""GetCachedCurrentPosition(self) -> itkOptimizerParametersD"""
        return _ITKOptimizersBasePython.itkSingleValuedNonLinearVnlOptimizer_GetCachedCurrentPosition(self)

    def CanUseScales(self):
        r"""CanUseScales(self) -> bool"""
        return _ITKOptimizersBasePython.itkSingleValuedNonLinearVnlOptimizer_CanUseScales(self)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkSingleValuedNonLinearVnlOptimizer

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkSingleValuedNonLinearVnlOptimizer

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _ITKOptimizersBasePython.itkSingleValuedNonLinearVnlOptimizer_cast(obj)

# Register itkSingleValuedNonLinearVnlOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkSingleValuedNonLinearVnlOptimizer_swigregister(itkSingleValuedNonLinearVnlOptimizer)

def itkAmoebaOptimizer_New():
    return itkAmoebaOptimizer.New()

class itkAmoebaOptimizer(itkSingleValuedNonLinearVnlOptimizer):
    r"""Proxy of C++ itkAmoebaOptimizer class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkAmoebaOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkAmoebaOptimizer___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkAmoebaOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkAmoebaOptimizer_Clone(self)

    def SetMaximumNumberOfIterations(self, _arg):
        r"""
        SetMaximumNumberOfIterations(self, _arg)

        Parameters
        ----------
        _arg: unsigned int

        """
        return _ITKOptimizersBasePython.itkAmoebaOptimizer_SetMaximumNumberOfIterations(self, _arg)

    def GetMaximumNumberOfIterations(self):
        r"""GetMaximumNumberOfIterations(self) -> unsigned int"""
        return _ITKOptimizersBasePython.itkAmoebaOptimizer_GetMaximumNumberOfIterations(self)

    def SetAutomaticInitialSimplex(self, _arg):
        r"""
        SetAutomaticInitialSimplex(self, _arg)

        Parameters
        ----------
        _arg: bool

        """
        return _ITKOptimizersBasePython.itkAmoebaOptimizer_SetAutomaticInitialSimplex(self, _arg)

    def AutomaticInitialSimplexOn(self):
        r"""AutomaticInitialSimplexOn(self)"""
        return _ITKOptimizersBasePython.itkAmoebaOptimizer_AutomaticInitialSimplexOn(self)

    def AutomaticInitialSimplexOff(self):
        r"""AutomaticInitialSimplexOff(self)"""
        return _ITKOptimizersBasePython.itkAmoebaOptimizer_AutomaticInitialSimplexOff(self)

    def GetAutomaticInitialSimplex(self):
        r"""GetAutomaticInitialSimplex(self) -> bool"""
        return _ITKOptimizersBasePython.itkAmoebaOptimizer_GetAutomaticInitialSimplex(self)

    def SetOptimizeWithRestarts(self, _arg):
        r"""
        SetOptimizeWithRestarts(self, _arg)

        Parameters
        ----------
        _arg: bool

        """
        return _ITKOptimizersBasePython.itkAmoebaOptimizer_SetOptimizeWithRestarts(self, _arg)

    def OptimizeWithRestartsOn(self):
        r"""OptimizeWithRestartsOn(self)"""
        return _ITKOptimizersBasePython.itkAmoebaOptimizer_OptimizeWithRestartsOn(self)

    def OptimizeWithRestartsOff(self):
        r"""OptimizeWithRestartsOff(self)"""
        return _ITKOptimizersBasePython.itkAmoebaOptimizer_OptimizeWithRestartsOff(self)

    def GetOptimizeWithRestarts(self):
        r"""GetOptimizeWithRestarts(self) -> bool"""
        return _ITKOptimizersBasePython.itkAmoebaOptimizer_GetOptimizeWithRestarts(self)

    def SetInitialSimplexDelta(self, initialSimplexDelta, automaticInitialSimplex=False):
        r"""
        SetInitialSimplexDelta(self, initialSimplexDelta, automaticInitialSimplex=False)

        Parameters
        ----------
        initialSimplexDelta: itkOptimizerParametersD
        automaticInitialSimplex: bool

        """
        return _ITKOptimizersBasePython.itkAmoebaOptimizer_SetInitialSimplexDelta(self, initialSimplexDelta, automaticInitialSimplex)

    def GetInitialSimplexDelta(self):
        r"""GetInitialSimplexDelta(self) -> itkOptimizerParametersD"""
        return _ITKOptimizersBasePython.itkAmoebaOptimizer_GetInitialSimplexDelta(self)

    def SetParametersConvergenceTolerance(self, _arg):
        r"""
        SetParametersConvergenceTolerance(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkAmoebaOptimizer_SetParametersConvergenceTolerance(self, _arg)

    def GetParametersConvergenceTolerance(self):
        r"""GetParametersConvergenceTolerance(self) -> double"""
        return _ITKOptimizersBasePython.itkAmoebaOptimizer_GetParametersConvergenceTolerance(self)

    def SetFunctionConvergenceTolerance(self, _arg):
        r"""
        SetFunctionConvergenceTolerance(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkAmoebaOptimizer_SetFunctionConvergenceTolerance(self, _arg)

    def GetFunctionConvergenceTolerance(self):
        r"""GetFunctionConvergenceTolerance(self) -> double"""
        return _ITKOptimizersBasePython.itkAmoebaOptimizer_GetFunctionConvergenceTolerance(self)

    def GetValue(self):
        r"""GetValue(self) -> double"""
        return _ITKOptimizersBasePython.itkAmoebaOptimizer_GetValue(self)

    def GetOptimizer(self):
        r"""GetOptimizer(self) -> vnl_amoeba *"""
        return _ITKOptimizersBasePython.itkAmoebaOptimizer_GetOptimizer(self)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkAmoebaOptimizer

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkAmoebaOptimizer

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _ITKOptimizersBasePython.itkAmoebaOptimizer_cast(obj)

    def New(*args, **kargs):
        """New() -> itkAmoebaOptimizer

        Create a new object of the class itkAmoebaOptimizer and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkAmoebaOptimizer.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkAmoebaOptimizer.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkAmoebaOptimizer.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkAmoebaOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkAmoebaOptimizer_swigregister(itkAmoebaOptimizer)

def itkConjugateGradientOptimizer_New():
    return itkConjugateGradientOptimizer.New()

class itkConjugateGradientOptimizer(itkSingleValuedNonLinearVnlOptimizer):
    r"""Proxy of C++ itkConjugateGradientOptimizer class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkConjugateGradientOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkConjugateGradientOptimizer___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkConjugateGradientOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkConjugateGradientOptimizer_Clone(self)

    def GetOptimizer(self):
        r"""GetOptimizer(self) -> vnl_conjugate_gradient *"""
        return _ITKOptimizersBasePython.itkConjugateGradientOptimizer_GetOptimizer(self)

    def GetNumberOfIterations(self):
        r"""GetNumberOfIterations(self) -> unsigned long"""
        return _ITKOptimizersBasePython.itkConjugateGradientOptimizer_GetNumberOfIterations(self)

    def GetCurrentIteration(self):
        r"""GetCurrentIteration(self) -> unsigned long"""
        return _ITKOptimizersBasePython.itkConjugateGradientOptimizer_GetCurrentIteration(self)

    def GetValue(self):
        r"""GetValue(self) -> double"""
        return _ITKOptimizersBasePython.itkConjugateGradientOptimizer_GetValue(self)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkConjugateGradientOptimizer

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkConjugateGradientOptimizer

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _ITKOptimizersBasePython.itkConjugateGradientOptimizer_cast(obj)

    def New(*args, **kargs):
        """New() -> itkConjugateGradientOptimizer

        Create a new object of the class itkConjugateGradientOptimizer and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkConjugateGradientOptimizer.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkConjugateGradientOptimizer.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkConjugateGradientOptimizer.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkConjugateGradientOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkConjugateGradientOptimizer_swigregister(itkConjugateGradientOptimizer)

def itkExhaustiveOptimizer_New():
    return itkExhaustiveOptimizer.New()

class itkExhaustiveOptimizer(itkSingleValuedNonLinearOptimizer):
    r"""Proxy of C++ itkExhaustiveOptimizer class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkExhaustiveOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkExhaustiveOptimizer___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkExhaustiveOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkExhaustiveOptimizer_Clone(self)

    def StartWalking(self):
        r"""StartWalking(self)"""
        return _ITKOptimizersBasePython.itkExhaustiveOptimizer_StartWalking(self)

    def ResumeWalking(self):
        r"""ResumeWalking(self)"""
        return _ITKOptimizersBasePython.itkExhaustiveOptimizer_ResumeWalking(self)

    def StopWalking(self):
        r"""StopWalking(self)"""
        return _ITKOptimizersBasePython.itkExhaustiveOptimizer_StopWalking(self)

    def SetStepLength(self, _arg):
        r"""
        SetStepLength(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkExhaustiveOptimizer_SetStepLength(self, _arg)

    def SetNumberOfSteps(self, _arg):
        r"""
        SetNumberOfSteps(self, _arg)

        Parameters
        ----------
        _arg: itkArrayUL

        """
        return _ITKOptimizersBasePython.itkExhaustiveOptimizer_SetNumberOfSteps(self, _arg)

    def GetStepLength(self):
        r"""GetStepLength(self) -> double const &"""
        return _ITKOptimizersBasePython.itkExhaustiveOptimizer_GetStepLength(self)

    def GetNumberOfSteps(self):
        r"""GetNumberOfSteps(self) -> itkArrayUL"""
        return _ITKOptimizersBasePython.itkExhaustiveOptimizer_GetNumberOfSteps(self)

    def GetCurrentValue(self):
        r"""GetCurrentValue(self) -> double const &"""
        return _ITKOptimizersBasePython.itkExhaustiveOptimizer_GetCurrentValue(self)

    def GetMaximumMetricValue(self):
        r"""GetMaximumMetricValue(self) -> double const &"""
        return _ITKOptimizersBasePython.itkExhaustiveOptimizer_GetMaximumMetricValue(self)

    def GetMinimumMetricValue(self):
        r"""GetMinimumMetricValue(self) -> double const &"""
        return _ITKOptimizersBasePython.itkExhaustiveOptimizer_GetMinimumMetricValue(self)

    def GetMinimumMetricValuePosition(self):
        r"""GetMinimumMetricValuePosition(self) -> itkOptimizerParametersD"""
        return _ITKOptimizersBasePython.itkExhaustiveOptimizer_GetMinimumMetricValuePosition(self)

    def GetMaximumMetricValuePosition(self):
        r"""GetMaximumMetricValuePosition(self) -> itkOptimizerParametersD"""
        return _ITKOptimizersBasePython.itkExhaustiveOptimizer_GetMaximumMetricValuePosition(self)

    def GetCurrentIndex(self):
        r"""GetCurrentIndex(self) -> itkOptimizerParametersD"""
        return _ITKOptimizersBasePython.itkExhaustiveOptimizer_GetCurrentIndex(self)

    def GetMaximumNumberOfIterations(self):
        r"""GetMaximumNumberOfIterations(self) -> unsigned long const &"""
        return _ITKOptimizersBasePython.itkExhaustiveOptimizer_GetMaximumNumberOfIterations(self)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkExhaustiveOptimizer

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkExhaustiveOptimizer

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _ITKOptimizersBasePython.itkExhaustiveOptimizer_cast(obj)

    def New(*args, **kargs):
        """New() -> itkExhaustiveOptimizer

        Create a new object of the class itkExhaustiveOptimizer and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkExhaustiveOptimizer.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkExhaustiveOptimizer.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkExhaustiveOptimizer.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkExhaustiveOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkExhaustiveOptimizer_swigregister(itkExhaustiveOptimizer)

def itkGradientDescentOptimizer_New():
    return itkGradientDescentOptimizer.New()

class itkGradientDescentOptimizer(itkSingleValuedNonLinearOptimizer):
    r"""Proxy of C++ itkGradientDescentOptimizer class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkGradientDescentOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkGradientDescentOptimizer___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkGradientDescentOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkGradientDescentOptimizer_Clone(self)

    def GetMaximize(self):
        r"""GetMaximize(self) -> bool const &"""
        return _ITKOptimizersBasePython.itkGradientDescentOptimizer_GetMaximize(self)

    def SetMaximize(self, _arg):
        r"""
        SetMaximize(self, _arg)

        Parameters
        ----------
        _arg: bool

        """
        return _ITKOptimizersBasePython.itkGradientDescentOptimizer_SetMaximize(self, _arg)

    def MaximizeOn(self):
        r"""MaximizeOn(self)"""
        return _ITKOptimizersBasePython.itkGradientDescentOptimizer_MaximizeOn(self)

    def MaximizeOff(self):
        r"""MaximizeOff(self)"""
        return _ITKOptimizersBasePython.itkGradientDescentOptimizer_MaximizeOff(self)

    def GetMinimize(self):
        r"""GetMinimize(self) -> bool"""
        return _ITKOptimizersBasePython.itkGradientDescentOptimizer_GetMinimize(self)

    def SetMinimize(self, v):
        r"""
        SetMinimize(self, v)

        Parameters
        ----------
        v: bool

        """
        return _ITKOptimizersBasePython.itkGradientDescentOptimizer_SetMinimize(self, v)

    def MinimizeOn(self):
        r"""MinimizeOn(self)"""
        return _ITKOptimizersBasePython.itkGradientDescentOptimizer_MinimizeOn(self)

    def MinimizeOff(self):
        r"""MinimizeOff(self)"""
        return _ITKOptimizersBasePython.itkGradientDescentOptimizer_MinimizeOff(self)

    def AdvanceOneStep(self):
        r"""AdvanceOneStep(self)"""
        return _ITKOptimizersBasePython.itkGradientDescentOptimizer_AdvanceOneStep(self)

    def ResumeOptimization(self):
        r"""ResumeOptimization(self)"""
        return _ITKOptimizersBasePython.itkGradientDescentOptimizer_ResumeOptimization(self)

    def StopOptimization(self):
        r"""StopOptimization(self)"""
        return _ITKOptimizersBasePython.itkGradientDescentOptimizer_StopOptimization(self)

    def SetLearningRate(self, _arg):
        r"""
        SetLearningRate(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkGradientDescentOptimizer_SetLearningRate(self, _arg)

    def GetLearningRate(self):
        r"""GetLearningRate(self) -> double const &"""
        return _ITKOptimizersBasePython.itkGradientDescentOptimizer_GetLearningRate(self)

    def SetNumberOfIterations(self, _arg):
        r"""
        SetNumberOfIterations(self, _arg)

        Parameters
        ----------
        _arg: unsigned long

        """
        return _ITKOptimizersBasePython.itkGradientDescentOptimizer_SetNumberOfIterations(self, _arg)

    def GetNumberOfIterations(self):
        r"""GetNumberOfIterations(self) -> unsigned long const &"""
        return _ITKOptimizersBasePython.itkGradientDescentOptimizer_GetNumberOfIterations(self)

    def GetCurrentIteration(self):
        r"""GetCurrentIteration(self) -> unsigned long"""
        return _ITKOptimizersBasePython.itkGradientDescentOptimizer_GetCurrentIteration(self)

    def GetValue(self):
        r"""GetValue(self) -> double const &"""
        return _ITKOptimizersBasePython.itkGradientDescentOptimizer_GetValue(self)

    def GetStopCondition(self):
        r"""GetStopCondition(self) -> itkGradientDescentOptimizerEnums::StopConditionGradientDescentOptimizer const &"""
        return _ITKOptimizersBasePython.itkGradientDescentOptimizer_GetStopCondition(self)

    def GetGradient(self):
        r"""GetGradient(self) -> itkArrayD"""
        return _ITKOptimizersBasePython.itkGradientDescentOptimizer_GetGradient(self)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkGradientDescentOptimizer

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkGradientDescentOptimizer

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _ITKOptimizersBasePython.itkGradientDescentOptimizer_cast(obj)

    def New(*args, **kargs):
        """New() -> itkGradientDescentOptimizer

        Create a new object of the class itkGradientDescentOptimizer and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkGradientDescentOptimizer.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkGradientDescentOptimizer.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkGradientDescentOptimizer.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkGradientDescentOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkGradientDescentOptimizer_swigregister(itkGradientDescentOptimizer)

def itkLBFGSBOptimizer_New():
    return itkLBFGSBOptimizer.New()

class itkLBFGSBOptimizer(itkSingleValuedNonLinearVnlOptimizer):
    r"""Proxy of C++ itkLBFGSBOptimizer class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkLBFGSBOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkLBFGSBOptimizer___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkLBFGSBOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkLBFGSBOptimizer_Clone(self)

    def SetTrace(self, flag):
        r"""
        SetTrace(self, flag)

        Parameters
        ----------
        flag: bool

        """
        return _ITKOptimizersBasePython.itkLBFGSBOptimizer_SetTrace(self, flag)

    def GetTrace(self):
        r"""GetTrace(self) -> bool"""
        return _ITKOptimizersBasePython.itkLBFGSBOptimizer_GetTrace(self)

    def TraceOn(self):
        r"""TraceOn(self)"""
        return _ITKOptimizersBasePython.itkLBFGSBOptimizer_TraceOn(self)

    def TraceOff(self):
        r"""TraceOff(self)"""
        return _ITKOptimizersBasePython.itkLBFGSBOptimizer_TraceOff(self)

    def SetLowerBound(self, value):
        r"""
        SetLowerBound(self, value)

        Parameters
        ----------
        value: itkArrayD const &

        """
        return _ITKOptimizersBasePython.itkLBFGSBOptimizer_SetLowerBound(self, value)

    def GetLowerBound(self):
        r"""GetLowerBound(self) -> itkArrayD"""
        return _ITKOptimizersBasePython.itkLBFGSBOptimizer_GetLowerBound(self)

    def SetUpperBound(self, value):
        r"""
        SetUpperBound(self, value)

        Parameters
        ----------
        value: itkArrayD const &

        """
        return _ITKOptimizersBasePython.itkLBFGSBOptimizer_SetUpperBound(self, value)

    def GetUpperBound(self):
        r"""GetUpperBound(self) -> itkArrayD"""
        return _ITKOptimizersBasePython.itkLBFGSBOptimizer_GetUpperBound(self)

    def SetBoundSelection(self, value):
        r"""
        SetBoundSelection(self, value)

        Parameters
        ----------
        value: itkArraySL const &

        """
        return _ITKOptimizersBasePython.itkLBFGSBOptimizer_SetBoundSelection(self, value)

    def GetBoundSelection(self):
        r"""GetBoundSelection(self) -> itkArraySL"""
        return _ITKOptimizersBasePython.itkLBFGSBOptimizer_GetBoundSelection(self)

    def SetCostFunctionConvergenceFactor(self, arg0):
        r"""
        SetCostFunctionConvergenceFactor(self, arg0)

        Parameters
        ----------
        arg0: double

        """
        return _ITKOptimizersBasePython.itkLBFGSBOptimizer_SetCostFunctionConvergenceFactor(self, arg0)

    def GetCostFunctionConvergenceFactor(self):
        r"""GetCostFunctionConvergenceFactor(self) -> double"""
        return _ITKOptimizersBasePython.itkLBFGSBOptimizer_GetCostFunctionConvergenceFactor(self)

    def SetProjectedGradientTolerance(self, arg0):
        r"""
        SetProjectedGradientTolerance(self, arg0)

        Parameters
        ----------
        arg0: double

        """
        return _ITKOptimizersBasePython.itkLBFGSBOptimizer_SetProjectedGradientTolerance(self, arg0)

    def GetProjectedGradientTolerance(self):
        r"""GetProjectedGradientTolerance(self) -> double"""
        return _ITKOptimizersBasePython.itkLBFGSBOptimizer_GetProjectedGradientTolerance(self)

    def SetMaximumNumberOfIterations(self, arg0):
        r"""
        SetMaximumNumberOfIterations(self, arg0)

        Parameters
        ----------
        arg0: unsigned int

        """
        return _ITKOptimizersBasePython.itkLBFGSBOptimizer_SetMaximumNumberOfIterations(self, arg0)

    def GetMaximumNumberOfIterations(self):
        r"""GetMaximumNumberOfIterations(self) -> unsigned int"""
        return _ITKOptimizersBasePython.itkLBFGSBOptimizer_GetMaximumNumberOfIterations(self)

    def SetMaximumNumberOfEvaluations(self, arg0):
        r"""
        SetMaximumNumberOfEvaluations(self, arg0)

        Parameters
        ----------
        arg0: unsigned int

        """
        return _ITKOptimizersBasePython.itkLBFGSBOptimizer_SetMaximumNumberOfEvaluations(self, arg0)

    def GetMaximumNumberOfEvaluations(self):
        r"""GetMaximumNumberOfEvaluations(self) -> unsigned int"""
        return _ITKOptimizersBasePython.itkLBFGSBOptimizer_GetMaximumNumberOfEvaluations(self)

    def SetMaximumNumberOfCorrections(self, arg0):
        r"""
        SetMaximumNumberOfCorrections(self, arg0)

        Parameters
        ----------
        arg0: unsigned int

        """
        return _ITKOptimizersBasePython.itkLBFGSBOptimizer_SetMaximumNumberOfCorrections(self, arg0)

    def GetMaximumNumberOfCorrections(self):
        r"""GetMaximumNumberOfCorrections(self) -> unsigned int"""
        return _ITKOptimizersBasePython.itkLBFGSBOptimizer_GetMaximumNumberOfCorrections(self)

    def SetScales(self, arg0):
        r"""
        SetScales(self, arg0)

        Parameters
        ----------
        arg0: itkArrayD const &

        """
        return _ITKOptimizersBasePython.itkLBFGSBOptimizer_SetScales(self, arg0)

    def GetCurrentIteration(self):
        r"""GetCurrentIteration(self) -> unsigned int const &"""
        return _ITKOptimizersBasePython.itkLBFGSBOptimizer_GetCurrentIteration(self)

    def GetValue(self):
        r"""GetValue(self) -> double"""
        return _ITKOptimizersBasePython.itkLBFGSBOptimizer_GetValue(self)

    def GetInfinityNormOfProjectedGradient(self):
        r"""GetInfinityNormOfProjectedGradient(self) -> double const &"""
        return _ITKOptimizersBasePython.itkLBFGSBOptimizer_GetInfinityNormOfProjectedGradient(self)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkLBFGSBOptimizer

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkLBFGSBOptimizer

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _ITKOptimizersBasePython.itkLBFGSBOptimizer_cast(obj)

    def New(*args, **kargs):
        """New() -> itkLBFGSBOptimizer

        Create a new object of the class itkLBFGSBOptimizer and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkLBFGSBOptimizer.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkLBFGSBOptimizer.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkLBFGSBOptimizer.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkLBFGSBOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkLBFGSBOptimizer_swigregister(itkLBFGSBOptimizer)

def itkLBFGSOptimizer_New():
    return itkLBFGSOptimizer.New()

class itkLBFGSOptimizer(itkSingleValuedNonLinearVnlOptimizer):
    r"""Proxy of C++ itkLBFGSOptimizer class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkLBFGSOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkLBFGSOptimizer___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkLBFGSOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkLBFGSOptimizer_Clone(self)

    def GetOptimizer(self):
        r"""GetOptimizer(self) -> vnl_lbfgs *"""
        return _ITKOptimizersBasePython.itkLBFGSOptimizer_GetOptimizer(self)

    def SetTrace(self, flag):
        r"""
        SetTrace(self, flag)

        Parameters
        ----------
        flag: bool

        """
        return _ITKOptimizersBasePython.itkLBFGSOptimizer_SetTrace(self, flag)

    def GetTrace(self):
        r"""GetTrace(self) -> bool"""
        return _ITKOptimizersBasePython.itkLBFGSOptimizer_GetTrace(self)

    def TraceOn(self):
        r"""TraceOn(self)"""
        return _ITKOptimizersBasePython.itkLBFGSOptimizer_TraceOn(self)

    def TraceOff(self):
        r"""TraceOff(self)"""
        return _ITKOptimizersBasePython.itkLBFGSOptimizer_TraceOff(self)

    def SetMaximumNumberOfFunctionEvaluations(self, n):
        r"""
        SetMaximumNumberOfFunctionEvaluations(self, n)

        Parameters
        ----------
        n: unsigned int

        """
        return _ITKOptimizersBasePython.itkLBFGSOptimizer_SetMaximumNumberOfFunctionEvaluations(self, n)

    def GetMaximumNumberOfFunctionEvaluations(self):
        r"""GetMaximumNumberOfFunctionEvaluations(self) -> unsigned int"""
        return _ITKOptimizersBasePython.itkLBFGSOptimizer_GetMaximumNumberOfFunctionEvaluations(self)

    def SetGradientConvergenceTolerance(self, f):
        r"""
        SetGradientConvergenceTolerance(self, f)

        Parameters
        ----------
        f: double

        """
        return _ITKOptimizersBasePython.itkLBFGSOptimizer_SetGradientConvergenceTolerance(self, f)

    def GetGradientConvergenceTolerance(self):
        r"""GetGradientConvergenceTolerance(self) -> double"""
        return _ITKOptimizersBasePython.itkLBFGSOptimizer_GetGradientConvergenceTolerance(self)

    def SetLineSearchAccuracy(self, f):
        r"""
        SetLineSearchAccuracy(self, f)

        Parameters
        ----------
        f: double

        """
        return _ITKOptimizersBasePython.itkLBFGSOptimizer_SetLineSearchAccuracy(self, f)

    def GetLineSearchAccuracy(self):
        r"""GetLineSearchAccuracy(self) -> double"""
        return _ITKOptimizersBasePython.itkLBFGSOptimizer_GetLineSearchAccuracy(self)

    def SetDefaultStepLength(self, f):
        r"""
        SetDefaultStepLength(self, f)

        Parameters
        ----------
        f: double

        """
        return _ITKOptimizersBasePython.itkLBFGSOptimizer_SetDefaultStepLength(self, f)

    def GetDefaultStepLength(self):
        r"""GetDefaultStepLength(self) -> double"""
        return _ITKOptimizersBasePython.itkLBFGSOptimizer_GetDefaultStepLength(self)

    def GetValue(self):
        r"""GetValue(self) -> double"""
        return _ITKOptimizersBasePython.itkLBFGSOptimizer_GetValue(self)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkLBFGSOptimizer

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkLBFGSOptimizer

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _ITKOptimizersBasePython.itkLBFGSOptimizer_cast(obj)

    def New(*args, **kargs):
        """New() -> itkLBFGSOptimizer

        Create a new object of the class itkLBFGSOptimizer and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkLBFGSOptimizer.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkLBFGSOptimizer.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkLBFGSOptimizer.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkLBFGSOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkLBFGSOptimizer_swigregister(itkLBFGSOptimizer)

def itkMultipleValuedNonLinearOptimizer_New():
    return itkMultipleValuedNonLinearOptimizer.New()

class itkMultipleValuedNonLinearOptimizer(itkNonLinearOptimizer):
    r"""Proxy of C++ itkMultipleValuedNonLinearOptimizer class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkMultipleValuedNonLinearOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkMultipleValuedNonLinearOptimizer___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkMultipleValuedNonLinearOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkMultipleValuedNonLinearOptimizer_Clone(self)

    def SetCostFunction(self, costFunction):
        r"""
        SetCostFunction(self, costFunction)

        Parameters
        ----------
        costFunction: itkMultipleValuedCostFunction *

        """
        return _ITKOptimizersBasePython.itkMultipleValuedNonLinearOptimizer_SetCostFunction(self, costFunction)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkMultipleValuedNonLinearOptimizer

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkMultipleValuedNonLinearOptimizer

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _ITKOptimizersBasePython.itkMultipleValuedNonLinearOptimizer_cast(obj)

    def New(*args, **kargs):
        """New() -> itkMultipleValuedNonLinearOptimizer

        Create a new object of the class itkMultipleValuedNonLinearOptimizer and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkMultipleValuedNonLinearOptimizer.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkMultipleValuedNonLinearOptimizer.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkMultipleValuedNonLinearOptimizer.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkMultipleValuedNonLinearOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkMultipleValuedNonLinearOptimizer_swigregister(itkMultipleValuedNonLinearOptimizer)
class itkMultipleValuedNonLinearVnlOptimizer(itkMultipleValuedNonLinearOptimizer):
    r"""Proxy of C++ itkMultipleValuedNonLinearVnlOptimizer class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr

    def SetUseCostFunctionGradient(self, arg0):
        r"""
        SetUseCostFunctionGradient(self, arg0)

        Parameters
        ----------
        arg0: bool

        """
        return _ITKOptimizersBasePython.itkMultipleValuedNonLinearVnlOptimizer_SetUseCostFunctionGradient(self, arg0)

    def UseCostFunctionGradientOn(self):
        r"""UseCostFunctionGradientOn(self)"""
        return _ITKOptimizersBasePython.itkMultipleValuedNonLinearVnlOptimizer_UseCostFunctionGradientOn(self)

    def UseCostFunctionGradientOff(self):
        r"""UseCostFunctionGradientOff(self)"""
        return _ITKOptimizersBasePython.itkMultipleValuedNonLinearVnlOptimizer_UseCostFunctionGradientOff(self)

    def GetUseCostFunctionGradient(self):
        r"""GetUseCostFunctionGradient(self) -> bool"""
        return _ITKOptimizersBasePython.itkMultipleValuedNonLinearVnlOptimizer_GetUseCostFunctionGradient(self)

    def GetCachedValue(self):
        r"""GetCachedValue(self) -> itkArrayD"""
        return _ITKOptimizersBasePython.itkMultipleValuedNonLinearVnlOptimizer_GetCachedValue(self)

    def GetCachedDerivative(self):
        r"""GetCachedDerivative(self) -> itkArray2DD"""
        return _ITKOptimizersBasePython.itkMultipleValuedNonLinearVnlOptimizer_GetCachedDerivative(self)

    def GetCachedCurrentPosition(self):
        r"""GetCachedCurrentPosition(self) -> itkOptimizerParametersD"""
        return _ITKOptimizersBasePython.itkMultipleValuedNonLinearVnlOptimizer_GetCachedCurrentPosition(self)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkMultipleValuedNonLinearVnlOptimizer

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkMultipleValuedNonLinearVnlOptimizer

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _ITKOptimizersBasePython.itkMultipleValuedNonLinearVnlOptimizer_cast(obj)

# Register itkMultipleValuedNonLinearVnlOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkMultipleValuedNonLinearVnlOptimizer_swigregister(itkMultipleValuedNonLinearVnlOptimizer)

def itkOnePlusOneEvolutionaryOptimizer_New():
    return itkOnePlusOneEvolutionaryOptimizer.New()

class itkOnePlusOneEvolutionaryOptimizer(itkSingleValuedNonLinearOptimizer):
    r"""Proxy of C++ itkOnePlusOneEvolutionaryOptimizer class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkOnePlusOneEvolutionaryOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkOnePlusOneEvolutionaryOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_Clone(self)

    def SetMaximize(self, _arg):
        r"""
        SetMaximize(self, _arg)

        Parameters
        ----------
        _arg: bool

        """
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_SetMaximize(self, _arg)

    def MaximizeOn(self):
        r"""MaximizeOn(self)"""
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_MaximizeOn(self)

    def MaximizeOff(self):
        r"""MaximizeOff(self)"""
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_MaximizeOff(self)

    def GetMaximize(self):
        r"""GetMaximize(self) -> bool const &"""
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_GetMaximize(self)

    def GetMinimize(self):
        r"""GetMinimize(self) -> bool"""
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_GetMinimize(self)

    def SetMinimize(self, v):
        r"""
        SetMinimize(self, v)

        Parameters
        ----------
        v: bool

        """
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_SetMinimize(self, v)

    def MinimizeOn(self):
        r"""MinimizeOn(self)"""
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_MinimizeOn(self)

    def MinimizeOff(self):
        r"""MinimizeOff(self)"""
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_MinimizeOff(self)

    def SetMaximumIteration(self, _arg):
        r"""
        SetMaximumIteration(self, _arg)

        Parameters
        ----------
        _arg: unsigned int

        """
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_SetMaximumIteration(self, _arg)

    def GetMaximumIteration(self):
        r"""GetMaximumIteration(self) -> unsigned int const &"""
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_GetMaximumIteration(self)

    def SetGrowthFactor(self, _arg):
        r"""
        SetGrowthFactor(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_SetGrowthFactor(self, _arg)

    def GetGrowthFactor(self):
        r"""GetGrowthFactor(self) -> double const &"""
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_GetGrowthFactor(self)

    def SetShrinkFactor(self, _arg):
        r"""
        SetShrinkFactor(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_SetShrinkFactor(self, _arg)

    def GetShrinkFactor(self):
        r"""GetShrinkFactor(self) -> double const &"""
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_GetShrinkFactor(self)

    def SetInitialRadius(self, _arg):
        r"""
        SetInitialRadius(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_SetInitialRadius(self, _arg)

    def GetInitialRadius(self):
        r"""GetInitialRadius(self) -> double const &"""
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_GetInitialRadius(self)

    def SetEpsilon(self, _arg):
        r"""
        SetEpsilon(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_SetEpsilon(self, _arg)

    def GetEpsilon(self):
        r"""GetEpsilon(self) -> double const &"""
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_GetEpsilon(self)

    def GetFrobeniusNorm(self):
        r"""GetFrobeniusNorm(self) -> double const &"""
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_GetFrobeniusNorm(self)

    def SetNormalVariateGenerator(self, generator):
        r"""
        SetNormalVariateGenerator(self, generator)

        Parameters
        ----------
        generator: itkRandomVariateGeneratorBase *

        """
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_SetNormalVariateGenerator(self, generator)

    def Initialize(self, initialRadius, grow=-1, shrink=-1):
        r"""
        Initialize(self, initialRadius, grow=-1, shrink=-1)

        Parameters
        ----------
        initialRadius: double
        grow: double
        shrink: double

        """
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_Initialize(self, initialRadius, grow, shrink)

    def GetCurrentCost(self):
        r"""GetCurrentCost(self) -> double const &"""
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_GetCurrentCost(self)

    def GetValue(self):
        r"""GetValue(self) -> double"""
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_GetValue(self)

    def GetCurrentIteration(self):
        r"""GetCurrentIteration(self) -> unsigned int const &"""
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_GetCurrentIteration(self)

    def GetInitialized(self):
        r"""GetInitialized(self) -> bool const &"""
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_GetInitialized(self)

    def StopOptimization(self):
        r"""StopOptimization(self)"""
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_StopOptimization(self)

    def GetCatchGetValueException(self):
        r"""GetCatchGetValueException(self) -> bool const &"""
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_GetCatchGetValueException(self)

    def SetCatchGetValueException(self, _arg):
        r"""
        SetCatchGetValueException(self, _arg)

        Parameters
        ----------
        _arg: bool

        """
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_SetCatchGetValueException(self, _arg)

    def GetMetricWorstPossibleValue(self):
        r"""GetMetricWorstPossibleValue(self) -> double const &"""
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_GetMetricWorstPossibleValue(self)

    def SetMetricWorstPossibleValue(self, _arg):
        r"""
        SetMetricWorstPossibleValue(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_SetMetricWorstPossibleValue(self, _arg)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkOnePlusOneEvolutionaryOptimizer

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkOnePlusOneEvolutionaryOptimizer

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_cast(obj)

    def New(*args, **kargs):
        """New() -> itkOnePlusOneEvolutionaryOptimizer

        Create a new object of the class itkOnePlusOneEvolutionaryOptimizer and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkOnePlusOneEvolutionaryOptimizer.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkOnePlusOneEvolutionaryOptimizer.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkOnePlusOneEvolutionaryOptimizer.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkOnePlusOneEvolutionaryOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_swigregister(itkOnePlusOneEvolutionaryOptimizer)
class itkParticleSwarmOptimizerBase(itkSingleValuedNonLinearOptimizer):
    r"""Proxy of C++ itkParticleSwarmOptimizerBase class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr

    def SetInitializeNormalDistribution(self, _arg):
        r"""
        SetInitializeNormalDistribution(self, _arg)

        Parameters
        ----------
        _arg: bool

        """
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_SetInitializeNormalDistribution(self, _arg)

    def GetInitializeNormalDistribution(self):
        r"""GetInitializeNormalDistribution(self) -> bool"""
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_GetInitializeNormalDistribution(self)

    def InitializeNormalDistributionOn(self):
        r"""InitializeNormalDistributionOn(self)"""
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_InitializeNormalDistributionOn(self)

    def InitializeNormalDistributionOff(self):
        r"""InitializeNormalDistributionOff(self)"""
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_InitializeNormalDistributionOff(self)

    def SetInitialSwarm(self, initialSwarm):
        r"""
        SetInitialSwarm(self, initialSwarm)

        Parameters
        ----------
        initialSwarm: std::vector< itkParticleSwarmOptimizerBase::ParticleData,std::allocator< itkParticleSwarmOptimizerBase::ParticleData > > const &

        """
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_SetInitialSwarm(self, initialSwarm)

    def ClearSwarm(self):
        r"""ClearSwarm(self)"""
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_ClearSwarm(self)

    def SetPrintSwarm(self, _arg):
        r"""
        SetPrintSwarm(self, _arg)

        Parameters
        ----------
        _arg: bool

        """
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_SetPrintSwarm(self, _arg)

    def GetPrintSwarm(self):
        r"""GetPrintSwarm(self) -> bool"""
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_GetPrintSwarm(self)

    def PrintSwarmOn(self):
        r"""PrintSwarmOn(self)"""
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_PrintSwarmOn(self)

    def PrintSwarmOff(self):
        r"""PrintSwarmOff(self)"""
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_PrintSwarmOff(self)

    def SetNumberOfParticles(self, n):
        r"""
        SetNumberOfParticles(self, n)

        Parameters
        ----------
        n: unsigned int

        """
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_SetNumberOfParticles(self, n)

    def GetNumberOfParticles(self):
        r"""GetNumberOfParticles(self) -> unsigned int"""
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_GetNumberOfParticles(self)

    def SetMaximalNumberOfIterations(self, _arg):
        r"""
        SetMaximalNumberOfIterations(self, _arg)

        Parameters
        ----------
        _arg: unsigned int

        """
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_SetMaximalNumberOfIterations(self, _arg)

    def GetMaximalNumberOfIterations(self):
        r"""GetMaximalNumberOfIterations(self) -> unsigned int"""
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_GetMaximalNumberOfIterations(self)

    def SetNumberOfGenerationsWithMinimalImprovement(self, _arg):
        r"""
        SetNumberOfGenerationsWithMinimalImprovement(self, _arg)

        Parameters
        ----------
        _arg: unsigned int

        """
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_SetNumberOfGenerationsWithMinimalImprovement(self, _arg)

    def GetNumberOfGenerationsWithMinimalImprovement(self):
        r"""GetNumberOfGenerationsWithMinimalImprovement(self) -> unsigned int"""
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_GetNumberOfGenerationsWithMinimalImprovement(self)

    def SetParameterBounds(self, *args):
        r"""
        SetParameterBounds(self, bounds)

        Parameters
        ----------
        bounds: std::vector< std::pair< double,double >,std::allocator< std::pair< double,double > > > &

        SetParameterBounds(self, bounds, n)

        Parameters
        ----------
        bounds: std::pair< double,double > &
        n: unsigned int

        """
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_SetParameterBounds(self, *args)

    def GetParameterBounds(self):
        r"""GetParameterBounds(self) -> std::vector< std::pair< double,double >,std::allocator< std::pair< double,double > > >"""
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_GetParameterBounds(self)

    def SetFunctionConvergenceTolerance(self, _arg):
        r"""
        SetFunctionConvergenceTolerance(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_SetFunctionConvergenceTolerance(self, _arg)

    def GetFunctionConvergenceTolerance(self):
        r"""GetFunctionConvergenceTolerance(self) -> double"""
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_GetFunctionConvergenceTolerance(self)

    def SetParametersConvergenceTolerance(self, *args):
        r"""
        SetParametersConvergenceTolerance(self, convergenceTolerance, sz)

        Parameters
        ----------
        convergenceTolerance: double
        sz: unsigned int

        SetParametersConvergenceTolerance(self, _arg)

        Parameters
        ----------
        _arg: itkOptimizerParametersD

        """
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_SetParametersConvergenceTolerance(self, *args)

    def GetParametersConvergenceTolerance(self):
        r"""GetParametersConvergenceTolerance(self) -> itkOptimizerParametersD"""
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_GetParametersConvergenceTolerance(self)

    def GetPercentageParticlesConverged(self):
        r"""GetPercentageParticlesConverged(self) -> double"""
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_GetPercentageParticlesConverged(self)

    def SetPercentageParticlesConverged(self, _arg):
        r"""
        SetPercentageParticlesConverged(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_SetPercentageParticlesConverged(self, _arg)

    def SetSeed(self, _arg):
        r"""
        SetSeed(self, _arg)

        Parameters
        ----------
        _arg: unsigned int

        """
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_SetSeed(self, _arg)

    def GetSeed(self):
        r"""GetSeed(self) -> unsigned int"""
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_GetSeed(self)

    def SetUseSeed(self, _arg):
        r"""
        SetUseSeed(self, _arg)

        Parameters
        ----------
        _arg: bool

        """
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_SetUseSeed(self, _arg)

    def GetUseSeed(self):
        r"""GetUseSeed(self) -> bool"""
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_GetUseSeed(self)

    def UseSeedOn(self):
        r"""UseSeedOn(self)"""
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_UseSeedOn(self)

    def UseSeedOff(self):
        r"""UseSeedOff(self)"""
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_UseSeedOff(self)

    def GetValue(self):
        r"""GetValue(self) -> double"""
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_GetValue(self)

    def PrintSwarm(self, os, indent):
        r"""
        PrintSwarm(self, os, indent)

        Parameters
        ----------
        os: std::basic_ostream< char,std::char_traits< char > > &
        indent: itkIndent

        """
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_PrintSwarm(self, os, indent)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkParticleSwarmOptimizerBase

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkParticleSwarmOptimizerBase

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_cast(obj)

# Register itkParticleSwarmOptimizerBase in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_swigregister(itkParticleSwarmOptimizerBase)

def itkPowellOptimizer_New():
    return itkPowellOptimizer.New()

class itkPowellOptimizer(itkSingleValuedNonLinearOptimizer):
    r"""Proxy of C++ itkPowellOptimizer class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkPowellOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkPowellOptimizer___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkPowellOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkPowellOptimizer_Clone(self)

    def SetMaximize(self, _arg):
        r"""
        SetMaximize(self, _arg)

        Parameters
        ----------
        _arg: bool

        """
        return _ITKOptimizersBasePython.itkPowellOptimizer_SetMaximize(self, _arg)

    def MaximizeOn(self):
        r"""MaximizeOn(self)"""
        return _ITKOptimizersBasePython.itkPowellOptimizer_MaximizeOn(self)

    def MaximizeOff(self):
        r"""MaximizeOff(self)"""
        return _ITKOptimizersBasePython.itkPowellOptimizer_MaximizeOff(self)

    def GetMaximize(self):
        r"""GetMaximize(self) -> bool const &"""
        return _ITKOptimizersBasePython.itkPowellOptimizer_GetMaximize(self)

    def SetMaximumIteration(self, _arg):
        r"""
        SetMaximumIteration(self, _arg)

        Parameters
        ----------
        _arg: unsigned int

        """
        return _ITKOptimizersBasePython.itkPowellOptimizer_SetMaximumIteration(self, _arg)

    def GetMaximumIteration(self):
        r"""GetMaximumIteration(self) -> unsigned int const &"""
        return _ITKOptimizersBasePython.itkPowellOptimizer_GetMaximumIteration(self)

    def SetMaximumLineIteration(self, _arg):
        r"""
        SetMaximumLineIteration(self, _arg)

        Parameters
        ----------
        _arg: unsigned int

        """
        return _ITKOptimizersBasePython.itkPowellOptimizer_SetMaximumLineIteration(self, _arg)

    def GetMaximumLineIteration(self):
        r"""GetMaximumLineIteration(self) -> unsigned int"""
        return _ITKOptimizersBasePython.itkPowellOptimizer_GetMaximumLineIteration(self)

    def SetStepLength(self, _arg):
        r"""
        SetStepLength(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkPowellOptimizer_SetStepLength(self, _arg)

    def GetStepLength(self):
        r"""GetStepLength(self) -> double const &"""
        return _ITKOptimizersBasePython.itkPowellOptimizer_GetStepLength(self)

    def SetStepTolerance(self, _arg):
        r"""
        SetStepTolerance(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkPowellOptimizer_SetStepTolerance(self, _arg)

    def GetStepTolerance(self):
        r"""GetStepTolerance(self) -> double const &"""
        return _ITKOptimizersBasePython.itkPowellOptimizer_GetStepTolerance(self)

    def SetValueTolerance(self, _arg):
        r"""
        SetValueTolerance(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkPowellOptimizer_SetValueTolerance(self, _arg)

    def GetValueTolerance(self):
        r"""GetValueTolerance(self) -> double const &"""
        return _ITKOptimizersBasePython.itkPowellOptimizer_GetValueTolerance(self)

    def GetCurrentCost(self):
        r"""GetCurrentCost(self) -> double const &"""
        return _ITKOptimizersBasePython.itkPowellOptimizer_GetCurrentCost(self)

    def GetValue(self):
        r"""GetValue(self) -> double"""
        return _ITKOptimizersBasePython.itkPowellOptimizer_GetValue(self)

    def GetCurrentIteration(self):
        r"""GetCurrentIteration(self) -> unsigned int const &"""
        return _ITKOptimizersBasePython.itkPowellOptimizer_GetCurrentIteration(self)

    def GetCurrentLineIteration(self):
        r"""GetCurrentLineIteration(self) -> unsigned int const &"""
        return _ITKOptimizersBasePython.itkPowellOptimizer_GetCurrentLineIteration(self)

    def StopOptimization(self):
        r"""StopOptimization(self)"""
        return _ITKOptimizersBasePython.itkPowellOptimizer_StopOptimization(self)

    def GetCatchGetValueException(self):
        r"""GetCatchGetValueException(self) -> bool const &"""
        return _ITKOptimizersBasePython.itkPowellOptimizer_GetCatchGetValueException(self)

    def SetCatchGetValueException(self, _arg):
        r"""
        SetCatchGetValueException(self, _arg)

        Parameters
        ----------
        _arg: bool

        """
        return _ITKOptimizersBasePython.itkPowellOptimizer_SetCatchGetValueException(self, _arg)

    def GetMetricWorstPossibleValue(self):
        r"""GetMetricWorstPossibleValue(self) -> double const &"""
        return _ITKOptimizersBasePython.itkPowellOptimizer_GetMetricWorstPossibleValue(self)

    def SetMetricWorstPossibleValue(self, _arg):
        r"""
        SetMetricWorstPossibleValue(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkPowellOptimizer_SetMetricWorstPossibleValue(self, _arg)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkPowellOptimizer

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkPowellOptimizer

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _ITKOptimizersBasePython.itkPowellOptimizer_cast(obj)

    def New(*args, **kargs):
        """New() -> itkPowellOptimizer

        Create a new object of the class itkPowellOptimizer and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkPowellOptimizer.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkPowellOptimizer.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkPowellOptimizer.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkPowellOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkPowellOptimizer_swigregister(itkPowellOptimizer)

def itkQuaternionRigidTransformGradientDescentOptimizer_New():
    return itkQuaternionRigidTransformGradientDescentOptimizer.New()

class itkQuaternionRigidTransformGradientDescentOptimizer(itkGradientDescentOptimizer):
    r"""Proxy of C++ itkQuaternionRigidTransformGradientDescentOptimizer class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkQuaternionRigidTransformGradientDescentOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkQuaternionRigidTransformGradientDescentOptimizer___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkQuaternionRigidTransformGradientDescentOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkQuaternionRigidTransformGradientDescentOptimizer_Clone(self)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkQuaternionRigidTransformGradientDescentOptimizer

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkQuaternionRigidTransformGradientDescentOptimizer

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _ITKOptimizersBasePython.itkQuaternionRigidTransformGradientDescentOptimizer_cast(obj)

    def New(*args, **kargs):
        """New() -> itkQuaternionRigidTransformGradientDescentOptimizer

        Create a new object of the class itkQuaternionRigidTransformGradientDescentOptimizer and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkQuaternionRigidTransformGradientDescentOptimizer.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkQuaternionRigidTransformGradientDescentOptimizer.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkQuaternionRigidTransformGradientDescentOptimizer.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkQuaternionRigidTransformGradientDescentOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkQuaternionRigidTransformGradientDescentOptimizer_swigregister(itkQuaternionRigidTransformGradientDescentOptimizer)

def itkRegularStepGradientDescentBaseOptimizer_New():
    return itkRegularStepGradientDescentBaseOptimizer.New()

class itkRegularStepGradientDescentBaseOptimizer(itkSingleValuedNonLinearOptimizer):
    r"""Proxy of C++ itkRegularStepGradientDescentBaseOptimizer class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkRegularStepGradientDescentBaseOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkRegularStepGradientDescentBaseOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_Clone(self)

    def SetMaximize(self, _arg):
        r"""
        SetMaximize(self, _arg)

        Parameters
        ----------
        _arg: bool

        """
        return _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_SetMaximize(self, _arg)

    def GetMaximize(self):
        r"""GetMaximize(self) -> bool const &"""
        return _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_GetMaximize(self)

    def MaximizeOn(self):
        r"""MaximizeOn(self)"""
        return _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_MaximizeOn(self)

    def MaximizeOff(self):
        r"""MaximizeOff(self)"""
        return _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_MaximizeOff(self)

    def GetMinimize(self):
        r"""GetMinimize(self) -> bool"""
        return _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_GetMinimize(self)

    def SetMinimize(self, v):
        r"""
        SetMinimize(self, v)

        Parameters
        ----------
        v: bool

        """
        return _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_SetMinimize(self, v)

    def MinimizeOn(self):
        r"""MinimizeOn(self)"""
        return _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_MinimizeOn(self)

    def MinimizeOff(self):
        r"""MinimizeOff(self)"""
        return _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_MinimizeOff(self)

    def ResumeOptimization(self):
        r"""ResumeOptimization(self)"""
        return _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_ResumeOptimization(self)

    def StopOptimization(self):
        r"""StopOptimization(self)"""
        return _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_StopOptimization(self)

    def SetMaximumStepLength(self, _arg):
        r"""
        SetMaximumStepLength(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_SetMaximumStepLength(self, _arg)

    def SetMinimumStepLength(self, _arg):
        r"""
        SetMinimumStepLength(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_SetMinimumStepLength(self, _arg)

    def SetRelaxationFactor(self, _arg):
        r"""
        SetRelaxationFactor(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_SetRelaxationFactor(self, _arg)

    def SetNumberOfIterations(self, _arg):
        r"""
        SetNumberOfIterations(self, _arg)

        Parameters
        ----------
        _arg: unsigned long

        """
        return _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_SetNumberOfIterations(self, _arg)

    def SetGradientMagnitudeTolerance(self, _arg):
        r"""
        SetGradientMagnitudeTolerance(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_SetGradientMagnitudeTolerance(self, _arg)

    def GetCurrentStepLength(self):
        r"""GetCurrentStepLength(self) -> double const &"""
        return _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_GetCurrentStepLength(self)

    def GetMaximumStepLength(self):
        r"""GetMaximumStepLength(self) -> double const &"""
        return _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_GetMaximumStepLength(self)

    def GetMinimumStepLength(self):
        r"""GetMinimumStepLength(self) -> double const &"""
        return _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_GetMinimumStepLength(self)

    def GetRelaxationFactor(self):
        r"""GetRelaxationFactor(self) -> double const &"""
        return _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_GetRelaxationFactor(self)

    def GetNumberOfIterations(self):
        r"""GetNumberOfIterations(self) -> unsigned long const &"""
        return _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_GetNumberOfIterations(self)

    def GetGradientMagnitudeTolerance(self):
        r"""GetGradientMagnitudeTolerance(self) -> double const &"""
        return _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_GetGradientMagnitudeTolerance(self)

    def GetCurrentIteration(self):
        r"""GetCurrentIteration(self) -> unsigned int"""
        return _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_GetCurrentIteration(self)

    def GetStopCondition(self):
        r"""GetStopCondition(self) -> itkRegularStepGradientDescentBaseOptimizerEnums::StopCondition const &"""
        return _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_GetStopCondition(self)

    def GetValue(self):
        r"""GetValue(self) -> double const &"""
        return _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_GetValue(self)

    def GetGradient(self):
        r"""GetGradient(self) -> itkArrayD"""
        return _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_GetGradient(self)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkRegularStepGradientDescentBaseOptimizer

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkRegularStepGradientDescentBaseOptimizer

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_cast(obj)

    def New(*args, **kargs):
        """New() -> itkRegularStepGradientDescentBaseOptimizer

        Create a new object of the class itkRegularStepGradientDescentBaseOptimizer and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkRegularStepGradientDescentBaseOptimizer.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkRegularStepGradientDescentBaseOptimizer.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkRegularStepGradientDescentBaseOptimizer.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkRegularStepGradientDescentBaseOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_swigregister(itkRegularStepGradientDescentBaseOptimizer)

def itkRegularStepGradientDescentOptimizer_New():
    return itkRegularStepGradientDescentOptimizer.New()

class itkRegularStepGradientDescentOptimizer(itkRegularStepGradientDescentBaseOptimizer):
    r"""Proxy of C++ itkRegularStepGradientDescentOptimizer class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkRegularStepGradientDescentOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkRegularStepGradientDescentOptimizer___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkRegularStepGradientDescentOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkRegularStepGradientDescentOptimizer_Clone(self)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkRegularStepGradientDescentOptimizer

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkRegularStepGradientDescentOptimizer

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _ITKOptimizersBasePython.itkRegularStepGradientDescentOptimizer_cast(obj)

    def New(*args, **kargs):
        """New() -> itkRegularStepGradientDescentOptimizer

        Create a new object of the class itkRegularStepGradientDescentOptimizer and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkRegularStepGradientDescentOptimizer.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkRegularStepGradientDescentOptimizer.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkRegularStepGradientDescentOptimizer.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkRegularStepGradientDescentOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkRegularStepGradientDescentOptimizer_swigregister(itkRegularStepGradientDescentOptimizer)

def itkSPSAOptimizer_New():
    return itkSPSAOptimizer.New()

class itkSPSAOptimizer(itkSingleValuedNonLinearOptimizer):
    r"""Proxy of C++ itkSPSAOptimizer class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkSPSAOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkSPSAOptimizer___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkSPSAOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkSPSAOptimizer_Clone(self)

    def AdvanceOneStep(self):
        r"""AdvanceOneStep(self)"""
        return _ITKOptimizersBasePython.itkSPSAOptimizer_AdvanceOneStep(self)

    def ResumeOptimization(self):
        r"""ResumeOptimization(self)"""
        return _ITKOptimizersBasePython.itkSPSAOptimizer_ResumeOptimization(self)

    def StopOptimization(self):
        r"""StopOptimization(self)"""
        return _ITKOptimizersBasePython.itkSPSAOptimizer_StopOptimization(self)

    def GetValue(self, *args):
        r"""
        GetValue(self) -> double
        GetValue(self, parameters) -> double

        Parameters
        ----------
        parameters: itkOptimizerParametersD const &

        """
        return _ITKOptimizersBasePython.itkSPSAOptimizer_GetValue(self, *args)

    def GuessParameters(self, numberOfGradientEstimates, initialStepSize):
        r"""
        GuessParameters(self, numberOfGradientEstimates, initialStepSize)

        Parameters
        ----------
        numberOfGradientEstimates: unsigned long
        initialStepSize: double

        """
        return _ITKOptimizersBasePython.itkSPSAOptimizer_GuessParameters(self, numberOfGradientEstimates, initialStepSize)

    def GetCurrentIteration(self):
        r"""GetCurrentIteration(self) -> unsigned long"""
        return _ITKOptimizersBasePython.itkSPSAOptimizer_GetCurrentIteration(self)

    def GetStopCondition(self):
        r"""GetStopCondition(self) -> itkSPSAOptimizerEnums::StopConditionSPSAOptimizer"""
        return _ITKOptimizersBasePython.itkSPSAOptimizer_GetStopCondition(self)

    def GetLearningRate(self):
        r"""GetLearningRate(self) -> double"""
        return _ITKOptimizersBasePython.itkSPSAOptimizer_GetLearningRate(self)

    def GetGradientMagnitude(self):
        r"""GetGradientMagnitude(self) -> double"""
        return _ITKOptimizersBasePython.itkSPSAOptimizer_GetGradientMagnitude(self)

    def GetGradient(self):
        r"""GetGradient(self) -> itkArrayD"""
        return _ITKOptimizersBasePython.itkSPSAOptimizer_GetGradient(self)

    def SetSa(self, _arg):
        r"""
        SetSa(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkSPSAOptimizer_SetSa(self, _arg)

    def GetSa(self):
        r"""GetSa(self) -> double"""
        return _ITKOptimizersBasePython.itkSPSAOptimizer_GetSa(self)

    def Seta(self, a):
        r"""
        Seta(self, a)

        Parameters
        ----------
        a: double

        """
        return _ITKOptimizersBasePython.itkSPSAOptimizer_Seta(self, a)

    def Geta(self):
        r"""Geta(self) -> double"""
        return _ITKOptimizersBasePython.itkSPSAOptimizer_Geta(self)

    def SetSc(self, _arg):
        r"""
        SetSc(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkSPSAOptimizer_SetSc(self, _arg)

    def GetSc(self):
        r"""GetSc(self) -> double"""
        return _ITKOptimizersBasePython.itkSPSAOptimizer_GetSc(self)

    def Setc(self, c):
        r"""
        Setc(self, c)

        Parameters
        ----------
        c: double

        """
        return _ITKOptimizersBasePython.itkSPSAOptimizer_Setc(self, c)

    def Getc(self):
        r"""Getc(self) -> double"""
        return _ITKOptimizersBasePython.itkSPSAOptimizer_Getc(self)

    def SetA(self, _arg):
        r"""
        SetA(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkSPSAOptimizer_SetA(self, _arg)

    def GetA(self):
        r"""GetA(self) -> double"""
        return _ITKOptimizersBasePython.itkSPSAOptimizer_GetA(self)

    def SetAlpha(self, _arg):
        r"""
        SetAlpha(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkSPSAOptimizer_SetAlpha(self, _arg)

    def GetAlpha(self):
        r"""GetAlpha(self) -> double"""
        return _ITKOptimizersBasePython.itkSPSAOptimizer_GetAlpha(self)

    def SetGamma(self, _arg):
        r"""
        SetGamma(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkSPSAOptimizer_SetGamma(self, _arg)

    def GetGamma(self):
        r"""GetGamma(self) -> double"""
        return _ITKOptimizersBasePython.itkSPSAOptimizer_GetGamma(self)

    def GetMaximize(self):
        r"""GetMaximize(self) -> bool"""
        return _ITKOptimizersBasePython.itkSPSAOptimizer_GetMaximize(self)

    def SetMaximize(self, _arg):
        r"""
        SetMaximize(self, _arg)

        Parameters
        ----------
        _arg: bool

        """
        return _ITKOptimizersBasePython.itkSPSAOptimizer_SetMaximize(self, _arg)

    def MaximizeOn(self):
        r"""MaximizeOn(self)"""
        return _ITKOptimizersBasePython.itkSPSAOptimizer_MaximizeOn(self)

    def MaximizeOff(self):
        r"""MaximizeOff(self)"""
        return _ITKOptimizersBasePython.itkSPSAOptimizer_MaximizeOff(self)

    def GetMinimize(self):
        r"""GetMinimize(self) -> bool"""
        return _ITKOptimizersBasePython.itkSPSAOptimizer_GetMinimize(self)

    def SetMinimize(self, v):
        r"""
        SetMinimize(self, v)

        Parameters
        ----------
        v: bool

        """
        return _ITKOptimizersBasePython.itkSPSAOptimizer_SetMinimize(self, v)

    def MinimizeOn(self):
        r"""MinimizeOn(self)"""
        return _ITKOptimizersBasePython.itkSPSAOptimizer_MinimizeOn(self)

    def MinimizeOff(self):
        r"""MinimizeOff(self)"""
        return _ITKOptimizersBasePython.itkSPSAOptimizer_MinimizeOff(self)

    def SetNumberOfPerturbations(self, _arg):
        r"""
        SetNumberOfPerturbations(self, _arg)

        Parameters
        ----------
        _arg: unsigned long

        """
        return _ITKOptimizersBasePython.itkSPSAOptimizer_SetNumberOfPerturbations(self, _arg)

    def GetNumberOfPerturbations(self):
        r"""GetNumberOfPerturbations(self) -> unsigned long"""
        return _ITKOptimizersBasePython.itkSPSAOptimizer_GetNumberOfPerturbations(self)

    def GetStateOfConvergence(self):
        r"""GetStateOfConvergence(self) -> double"""
        return _ITKOptimizersBasePython.itkSPSAOptimizer_GetStateOfConvergence(self)

    def SetStateOfConvergenceDecayRate(self, _arg):
        r"""
        SetStateOfConvergenceDecayRate(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkSPSAOptimizer_SetStateOfConvergenceDecayRate(self, _arg)

    def GetStateOfConvergenceDecayRate(self):
        r"""GetStateOfConvergenceDecayRate(self) -> double"""
        return _ITKOptimizersBasePython.itkSPSAOptimizer_GetStateOfConvergenceDecayRate(self)

    def SetMinimumNumberOfIterations(self, _arg):
        r"""
        SetMinimumNumberOfIterations(self, _arg)

        Parameters
        ----------
        _arg: unsigned long

        """
        return _ITKOptimizersBasePython.itkSPSAOptimizer_SetMinimumNumberOfIterations(self, _arg)

    def GetMinimumNumberOfIterations(self):
        r"""GetMinimumNumberOfIterations(self) -> unsigned long"""
        return _ITKOptimizersBasePython.itkSPSAOptimizer_GetMinimumNumberOfIterations(self)

    def SetMaximumNumberOfIterations(self, _arg):
        r"""
        SetMaximumNumberOfIterations(self, _arg)

        Parameters
        ----------
        _arg: unsigned long

        """
        return _ITKOptimizersBasePython.itkSPSAOptimizer_SetMaximumNumberOfIterations(self, _arg)

    def GetMaximumNumberOfIterations(self):
        r"""GetMaximumNumberOfIterations(self) -> unsigned long"""
        return _ITKOptimizersBasePython.itkSPSAOptimizer_GetMaximumNumberOfIterations(self)

    def SetTolerance(self, _arg):
        r"""
        SetTolerance(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkSPSAOptimizer_SetTolerance(self, _arg)

    def GetTolerance(self):
        r"""GetTolerance(self) -> double"""
        return _ITKOptimizersBasePython.itkSPSAOptimizer_GetTolerance(self)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkSPSAOptimizer

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkSPSAOptimizer

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _ITKOptimizersBasePython.itkSPSAOptimizer_cast(obj)

    def New(*args, **kargs):
        """New() -> itkSPSAOptimizer

        Create a new object of the class itkSPSAOptimizer and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkSPSAOptimizer.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkSPSAOptimizer.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkSPSAOptimizer.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkSPSAOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkSPSAOptimizer_swigregister(itkSPSAOptimizer)

def itkVersorRigid3DTransformOptimizer_New():
    return itkVersorRigid3DTransformOptimizer.New()

class itkVersorRigid3DTransformOptimizer(itkRegularStepGradientDescentBaseOptimizer):
    r"""Proxy of C++ itkVersorRigid3DTransformOptimizer class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkVersorTransformOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkVersorRigid3DTransformOptimizer___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkVersorTransformOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkVersorRigid3DTransformOptimizer_Clone(self)

    def StepAlongGradient(self, factor, transformedGradient):
        r"""
        StepAlongGradient(self, factor, transformedGradient)

        Parameters
        ----------
        factor: double
        transformedGradient: itkArrayD const &

        """
        return _ITKOptimizersBasePython.itkVersorRigid3DTransformOptimizer_StepAlongGradient(self, factor, transformedGradient)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkVersorRigid3DTransformOptimizer

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkVersorRigid3DTransformOptimizer

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _ITKOptimizersBasePython.itkVersorRigid3DTransformOptimizer_cast(obj)

    def New(*args, **kargs):
        """New() -> itkVersorRigid3DTransformOptimizer

        Create a new object of the class itkVersorRigid3DTransformOptimizer and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkVersorRigid3DTransformOptimizer.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkVersorRigid3DTransformOptimizer.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkVersorRigid3DTransformOptimizer.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkVersorRigid3DTransformOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkVersorRigid3DTransformOptimizer_swigregister(itkVersorRigid3DTransformOptimizer)

def itkVersorTransformOptimizer_New():
    return itkVersorTransformOptimizer.New()

class itkVersorTransformOptimizer(itkRegularStepGradientDescentBaseOptimizer):
    r"""Proxy of C++ itkVersorTransformOptimizer class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkVersorTransformOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkVersorTransformOptimizer___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkVersorTransformOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkVersorTransformOptimizer_Clone(self)

    def StepAlongGradient(self, factor, transformedGradient):
        r"""
        StepAlongGradient(self, factor, transformedGradient)

        Parameters
        ----------
        factor: double
        transformedGradient: itkArrayD const &

        """
        return _ITKOptimizersBasePython.itkVersorTransformOptimizer_StepAlongGradient(self, factor, transformedGradient)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkVersorTransformOptimizer

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkVersorTransformOptimizer

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _ITKOptimizersBasePython.itkVersorTransformOptimizer_cast(obj)

    def New(*args, **kargs):
        """New() -> itkVersorTransformOptimizer

        Create a new object of the class itkVersorTransformOptimizer and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkVersorTransformOptimizer.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkVersorTransformOptimizer.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkVersorTransformOptimizer.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkVersorTransformOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkVersorTransformOptimizer_swigregister(itkVersorTransformOptimizer)

def itkCumulativeGaussianOptimizer_New():
    return itkCumulativeGaussianOptimizer.New()

class itkCumulativeGaussianOptimizer(itkMultipleValuedNonLinearOptimizer):
    r"""Proxy of C++ itkCumulativeGaussianOptimizer class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkCumulativeGaussianOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkCumulativeGaussianOptimizer___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkCumulativeGaussianOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_Clone(self)

    def SetDifferenceTolerance(self, _arg):
        r"""
        SetDifferenceTolerance(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_SetDifferenceTolerance(self, _arg)

    def GetDifferenceTolerance(self):
        r"""GetDifferenceTolerance(self) -> double"""
        return _ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_GetDifferenceTolerance(self)

    def SetVerbose(self, _arg):
        r"""
        SetVerbose(self, _arg)

        Parameters
        ----------
        _arg: bool

        """
        return _ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_SetVerbose(self, _arg)

    def GetVerbose(self):
        r"""GetVerbose(self) -> bool"""
        return _ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_GetVerbose(self)

    def VerboseOn(self):
        r"""VerboseOn(self)"""
        return _ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_VerboseOn(self)

    def VerboseOff(self):
        r"""VerboseOff(self)"""
        return _ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_VerboseOff(self)

    def GetComputedMean(self):
        r"""GetComputedMean(self) -> double"""
        return _ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_GetComputedMean(self)

    def GetComputedStandardDeviation(self):
        r"""GetComputedStandardDeviation(self) -> double"""
        return _ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_GetComputedStandardDeviation(self)

    def GetUpperAsymptote(self):
        r"""GetUpperAsymptote(self) -> double"""
        return _ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_GetUpperAsymptote(self)

    def GetLowerAsymptote(self):
        r"""GetLowerAsymptote(self) -> double"""
        return _ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_GetLowerAsymptote(self)

    def GetFinalSampledArray(self):
        r"""GetFinalSampledArray(self) -> itkArrayD"""
        return _ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_GetFinalSampledArray(self)

    def GetFitError(self):
        r"""GetFitError(self) -> double"""
        return _ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_GetFitError(self)

    def SetDataArray(self, cumGaussianArray):
        r"""
        SetDataArray(self, cumGaussianArray)

        Parameters
        ----------
        cumGaussianArray: itkArrayD *

        """
        return _ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_SetDataArray(self, cumGaussianArray)

    def PrintArray(self, array):
        r"""
        PrintArray(self, array)

        Parameters
        ----------
        array: itkArrayD *

        """
        return _ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_PrintArray(self, array)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkCumulativeGaussianOptimizer

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkCumulativeGaussianOptimizer

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_cast(obj)

    def New(*args, **kargs):
        """New() -> itkCumulativeGaussianOptimizer

        Create a new object of the class itkCumulativeGaussianOptimizer and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkCumulativeGaussianOptimizer.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkCumulativeGaussianOptimizer.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkCumulativeGaussianOptimizer.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkCumulativeGaussianOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_swigregister(itkCumulativeGaussianOptimizer)

def itkFRPROptimizer_New():
    return itkFRPROptimizer.New()

class itkFRPROptimizer(itkPowellOptimizer):
    r"""Proxy of C++ itkFRPROptimizer class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkFRPROptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkFRPROptimizer___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkFRPROptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkFRPROptimizer_Clone(self)

    def SetUseUnitLengthGradient(self, _arg):
        r"""
        SetUseUnitLengthGradient(self, _arg)

        Parameters
        ----------
        _arg: bool

        """
        return _ITKOptimizersBasePython.itkFRPROptimizer_SetUseUnitLengthGradient(self, _arg)

    def GetUseUnitLengthGradient(self):
        r"""GetUseUnitLengthGradient(self) -> bool"""
        return _ITKOptimizersBasePython.itkFRPROptimizer_GetUseUnitLengthGradient(self)

    def UseUnitLengthGradientOn(self):
        r"""UseUnitLengthGradientOn(self)"""
        return _ITKOptimizersBasePython.itkFRPROptimizer_UseUnitLengthGradientOn(self)

    def UseUnitLengthGradientOff(self):
        r"""UseUnitLengthGradientOff(self)"""
        return _ITKOptimizersBasePython.itkFRPROptimizer_UseUnitLengthGradientOff(self)

    def SetToFletchReeves(self):
        r"""SetToFletchReeves(self)"""
        return _ITKOptimizersBasePython.itkFRPROptimizer_SetToFletchReeves(self)

    def SetToPolakRibiere(self):
        r"""SetToPolakRibiere(self)"""
        return _ITKOptimizersBasePython.itkFRPROptimizer_SetToPolakRibiere(self)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkFRPROptimizer

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkFRPROptimizer

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _ITKOptimizersBasePython.itkFRPROptimizer_cast(obj)

    def New(*args, **kargs):
        """New() -> itkFRPROptimizer

        Create a new object of the class itkFRPROptimizer and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkFRPROptimizer.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkFRPROptimizer.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkFRPROptimizer.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkFRPROptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkFRPROptimizer_swigregister(itkFRPROptimizer)

def itkInitializationBiasedParticleSwarmOptimizer_New():
    return itkInitializationBiasedParticleSwarmOptimizer.New()

class itkInitializationBiasedParticleSwarmOptimizer(itkParticleSwarmOptimizerBase):
    r"""Proxy of C++ itkInitializationBiasedParticleSwarmOptimizer class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkInitializationBiasedParticleSwarmOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkInitializationBiasedParticleSwarmOptimizer___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkInitializationBiasedParticleSwarmOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkInitializationBiasedParticleSwarmOptimizer_Clone(self)

    def SetInertiaCoefficient(self, _arg):
        r"""
        SetInertiaCoefficient(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkInitializationBiasedParticleSwarmOptimizer_SetInertiaCoefficient(self, _arg)

    def GetInertiaCoefficient(self):
        r"""GetInertiaCoefficient(self) -> double"""
        return _ITKOptimizersBasePython.itkInitializationBiasedParticleSwarmOptimizer_GetInertiaCoefficient(self)

    def SetPersonalCoefficient(self, _arg):
        r"""
        SetPersonalCoefficient(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkInitializationBiasedParticleSwarmOptimizer_SetPersonalCoefficient(self, _arg)

    def GetPersonalCoefficient(self):
        r"""GetPersonalCoefficient(self) -> double"""
        return _ITKOptimizersBasePython.itkInitializationBiasedParticleSwarmOptimizer_GetPersonalCoefficient(self)

    def SetGlobalCoefficient(self, _arg):
        r"""
        SetGlobalCoefficient(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkInitializationBiasedParticleSwarmOptimizer_SetGlobalCoefficient(self, _arg)

    def GetGlobalCoefficient(self):
        r"""GetGlobalCoefficient(self) -> double"""
        return _ITKOptimizersBasePython.itkInitializationBiasedParticleSwarmOptimizer_GetGlobalCoefficient(self)

    def SetInitializationCoefficient(self, _arg):
        r"""
        SetInitializationCoefficient(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkInitializationBiasedParticleSwarmOptimizer_SetInitializationCoefficient(self, _arg)

    def GetInitializationCoefficient(self):
        r"""GetInitializationCoefficient(self) -> double"""
        return _ITKOptimizersBasePython.itkInitializationBiasedParticleSwarmOptimizer_GetInitializationCoefficient(self)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkInitializationBiasedParticleSwarmOptimizer

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkInitializationBiasedParticleSwarmOptimizer

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _ITKOptimizersBasePython.itkInitializationBiasedParticleSwarmOptimizer_cast(obj)

    def New(*args, **kargs):
        """New() -> itkInitializationBiasedParticleSwarmOptimizer

        Create a new object of the class itkInitializationBiasedParticleSwarmOptimizer and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkInitializationBiasedParticleSwarmOptimizer.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkInitializationBiasedParticleSwarmOptimizer.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkInitializationBiasedParticleSwarmOptimizer.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkInitializationBiasedParticleSwarmOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkInitializationBiasedParticleSwarmOptimizer_swigregister(itkInitializationBiasedParticleSwarmOptimizer)

def itkLevenbergMarquardtOptimizer_New():
    return itkLevenbergMarquardtOptimizer.New()

class itkLevenbergMarquardtOptimizer(itkMultipleValuedNonLinearVnlOptimizer):
    r"""Proxy of C++ itkLevenbergMarquardtOptimizer class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkLevenbergMarquardtOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkLevenbergMarquardtOptimizer___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkLevenbergMarquardtOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkLevenbergMarquardtOptimizer_Clone(self)

    def GetOptimizer(self):
        r"""GetOptimizer(self) -> vnl_levenberg_marquardt *"""
        return _ITKOptimizersBasePython.itkLevenbergMarquardtOptimizer_GetOptimizer(self)

    def SetNumberOfIterations(self, iterations):
        r"""
        SetNumberOfIterations(self, iterations)

        Parameters
        ----------
        iterations: unsigned int

        """
        return _ITKOptimizersBasePython.itkLevenbergMarquardtOptimizer_SetNumberOfIterations(self, iterations)

    def SetValueTolerance(self, tol):
        r"""
        SetValueTolerance(self, tol)

        Parameters
        ----------
        tol: double

        """
        return _ITKOptimizersBasePython.itkLevenbergMarquardtOptimizer_SetValueTolerance(self, tol)

    def SetGradientTolerance(self, tol):
        r"""
        SetGradientTolerance(self, tol)

        Parameters
        ----------
        tol: double

        """
        return _ITKOptimizersBasePython.itkLevenbergMarquardtOptimizer_SetGradientTolerance(self, tol)

    def SetEpsilonFunction(self, epsilon):
        r"""
        SetEpsilonFunction(self, epsilon)

        Parameters
        ----------
        epsilon: double

        """
        return _ITKOptimizersBasePython.itkLevenbergMarquardtOptimizer_SetEpsilonFunction(self, epsilon)

    def GetValue(self):
        r"""GetValue(self) -> itkArrayD"""
        return _ITKOptimizersBasePython.itkLevenbergMarquardtOptimizer_GetValue(self)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkLevenbergMarquardtOptimizer

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkLevenbergMarquardtOptimizer

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _ITKOptimizersBasePython.itkLevenbergMarquardtOptimizer_cast(obj)

    def New(*args, **kargs):
        """New() -> itkLevenbergMarquardtOptimizer

        Create a new object of the class itkLevenbergMarquardtOptimizer and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkLevenbergMarquardtOptimizer.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkLevenbergMarquardtOptimizer.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkLevenbergMarquardtOptimizer.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkLevenbergMarquardtOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkLevenbergMarquardtOptimizer_swigregister(itkLevenbergMarquardtOptimizer)

def itkParticleSwarmOptimizer_New():
    return itkParticleSwarmOptimizer.New()

class itkParticleSwarmOptimizer(itkParticleSwarmOptimizerBase):
    r"""Proxy of C++ itkParticleSwarmOptimizer class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkParticleSwarmOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizer___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkParticleSwarmOptimizer_Pointer"""
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizer_Clone(self)

    def SetInertiaCoefficient(self, _arg):
        r"""
        SetInertiaCoefficient(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizer_SetInertiaCoefficient(self, _arg)

    def GetInertiaCoefficient(self):
        r"""GetInertiaCoefficient(self) -> double"""
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizer_GetInertiaCoefficient(self)

    def SetPersonalCoefficient(self, _arg):
        r"""
        SetPersonalCoefficient(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizer_SetPersonalCoefficient(self, _arg)

    def GetPersonalCoefficient(self):
        r"""GetPersonalCoefficient(self) -> double"""
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizer_GetPersonalCoefficient(self)

    def SetGlobalCoefficient(self, _arg):
        r"""
        SetGlobalCoefficient(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizer_SetGlobalCoefficient(self, _arg)

    def GetGlobalCoefficient(self):
        r"""GetGlobalCoefficient(self) -> double"""
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizer_GetGlobalCoefficient(self)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkParticleSwarmOptimizer

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkParticleSwarmOptimizer

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _ITKOptimizersBasePython.itkParticleSwarmOptimizer_cast(obj)

    def New(*args, **kargs):
        """New() -> itkParticleSwarmOptimizer

        Create a new object of the class itkParticleSwarmOptimizer and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkParticleSwarmOptimizer.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkParticleSwarmOptimizer.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkParticleSwarmOptimizer.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkParticleSwarmOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkParticleSwarmOptimizer_swigregister(itkParticleSwarmOptimizer)

