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

from sys import version_info as _swig_python_version_info
# Import the low-level C/C++ module
if getattr(globals().get("__spec__"), "parent", None) or __package__ or "." in __name__:
    from . import _ITKOptimizersBasePython
else:
    import _ITKOptimizersBasePython

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

_swig_new_instance_method = _ITKOptimizersBasePython.SWIG_PyInstanceMethod_New
_swig_new_static_method = _ITKOptimizersBasePython.SWIG_PyStaticMethod_New

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__)


import vnl_vectorPython
import stdcomplexPython
import pyBasePython
import vnl_matrixPython
import itkOptimizerParametersPython
import ITKCommonBasePython
import itkArrayPython
import itkArray2DPython
import ITKCostFunctionsPython
import itkCostFunctionPython
import vnl_cost_functionPython
import vnl_unary_functionPython
import vnl_least_squares_functionPython

def itkInitializationBiasedParticleSwarmOptimizer_New():
  return itkInitializationBiasedParticleSwarmOptimizer.New()


def itkParticleSwarmOptimizer_New():
  return itkParticleSwarmOptimizer.New()


def itkParticleSwarmOptimizerBase_New():
  return itkParticleSwarmOptimizerBase.New()


def itkVersorRigid3DTransformOptimizer_New():
  return itkVersorRigid3DTransformOptimizer.New()


def itkSPSAOptimizer_New():
  return itkSPSAOptimizer.New()


def itkPowellOptimizer_New():
  return itkPowellOptimizer.New()


def itkLBFGSBOptimizer_New():
  return itkLBFGSBOptimizer.New()


def itkFRPROptimizer_New():
  return itkFRPROptimizer.New()


def itkExhaustiveOptimizer_New():
  return itkExhaustiveOptimizer.New()


def itkCumulativeGaussianOptimizer_New():
  return itkCumulativeGaussianOptimizer.New()


def itkAmoebaOptimizer_New():
  return itkAmoebaOptimizer.New()


def itkVersorTransformOptimizer_New():
  return itkVersorTransformOptimizer.New()


def itkRegularStepGradientDescentOptimizer_New():
  return itkRegularStepGradientDescentOptimizer.New()


def itkRegularStepGradientDescentBaseOptimizer_New():
  return itkRegularStepGradientDescentBaseOptimizer.New()


def itkQuaternionRigidTransformGradientDescentOptimizer_New():
  return itkQuaternionRigidTransformGradientDescentOptimizer.New()


def itkOnePlusOneEvolutionaryOptimizer_New():
  return itkOnePlusOneEvolutionaryOptimizer.New()


def itkLevenbergMarquardtOptimizer_New():
  return itkLevenbergMarquardtOptimizer.New()


def itkLBFGSOptimizer_New():
  return itkLBFGSOptimizer.New()


def itkGradientDescentOptimizer_New():
  return itkGradientDescentOptimizer.New()


def itkConjugateGradientOptimizer_New():
  return itkConjugateGradientOptimizer.New()


def itkMultipleValuedNonLinearVnlOptimizer_New():
  return itkMultipleValuedNonLinearVnlOptimizer.New()


def itkMultipleValuedNonLinearOptimizer_New():
  return itkMultipleValuedNonLinearOptimizer.New()


def itkSingleValuedNonLinearVnlOptimizer_New():
  return itkSingleValuedNonLinearVnlOptimizer.New()


def itkSingleValuedNonLinearOptimizer_New():
  return itkSingleValuedNonLinearOptimizer.New()


def itkNonLinearOptimizer_New():
  return itkNonLinearOptimizer.New()


def itkOptimizer_New():
  return itkOptimizer.New()

class itkOptimizer(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
    __New_orig__ = _swig_new_static_method(_ITKOptimizersBasePython.itkOptimizer___New_orig__)
    Clone = _swig_new_instance_method(_ITKOptimizersBasePython.itkOptimizer_Clone)
    SetInitialPosition = _swig_new_instance_method(_ITKOptimizersBasePython.itkOptimizer_SetInitialPosition)
    GetInitialPosition = _swig_new_instance_method(_ITKOptimizersBasePython.itkOptimizer_GetInitialPosition)
    SetScales = _swig_new_instance_method(_ITKOptimizersBasePython.itkOptimizer_SetScales)
    GetScales = _swig_new_instance_method(_ITKOptimizersBasePython.itkOptimizer_GetScales)
    GetInverseScales = _swig_new_instance_method(_ITKOptimizersBasePython.itkOptimizer_GetInverseScales)
    GetCurrentPosition = _swig_new_instance_method(_ITKOptimizersBasePython.itkOptimizer_GetCurrentPosition)
    StartOptimization = _swig_new_instance_method(_ITKOptimizersBasePython.itkOptimizer_StartOptimization)
    GetStopConditionDescription = _swig_new_instance_method(_ITKOptimizersBasePython.itkOptimizer_GetStopConditionDescription)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkOptimizer
    cast = _swig_new_static_method(_ITKOptimizersBasePython.itkOptimizer_cast)
    GetPointer = _swig_new_instance_method(_ITKOptimizersBasePython.itkOptimizer_GetPointer)

    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__()
        import itkTemplate
        itkTemplate.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkOptimizer_swigregister(itkOptimizer)
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
    __New_orig__ = _swig_new_static_method(_ITKOptimizersBasePython.itkNonLinearOptimizer___New_orig__)
    Clone = _swig_new_instance_method(_ITKOptimizersBasePython.itkNonLinearOptimizer_Clone)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkNonLinearOptimizer
    cast = _swig_new_static_method(_ITKOptimizersBasePython.itkNonLinearOptimizer_cast)
    GetPointer = _swig_new_instance_method(_ITKOptimizersBasePython.itkNonLinearOptimizer_GetPointer)

    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__()
        import itkTemplate
        itkTemplate.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkNonLinearOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkNonLinearOptimizer_swigregister(itkNonLinearOptimizer)
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
    __New_orig__ = _swig_new_static_method(_ITKOptimizersBasePython.itkSingleValuedNonLinearOptimizer___New_orig__)
    Clone = _swig_new_instance_method(_ITKOptimizersBasePython.itkSingleValuedNonLinearOptimizer_Clone)
    SetCostFunction = _swig_new_instance_method(_ITKOptimizersBasePython.itkSingleValuedNonLinearOptimizer_SetCostFunction)
    GetModifiableCostFunction = _swig_new_instance_method(_ITKOptimizersBasePython.itkSingleValuedNonLinearOptimizer_GetModifiableCostFunction)
    GetCostFunction = _swig_new_instance_method(_ITKOptimizersBasePython.itkSingleValuedNonLinearOptimizer_GetCostFunction)
    GetValue = _swig_new_instance_method(_ITKOptimizersBasePython.itkSingleValuedNonLinearOptimizer_GetValue)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkSingleValuedNonLinearOptimizer
    cast = _swig_new_static_method(_ITKOptimizersBasePython.itkSingleValuedNonLinearOptimizer_cast)
    GetPointer = _swig_new_instance_method(_ITKOptimizersBasePython.itkSingleValuedNonLinearOptimizer_GetPointer)

    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__()
        import itkTemplate
        itkTemplate.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
    GetMaximize = _swig_new_instance_method(_ITKOptimizersBasePython.itkSingleValuedNonLinearVnlOptimizer_GetMaximize)
    SetMaximize = _swig_new_instance_method(_ITKOptimizersBasePython.itkSingleValuedNonLinearVnlOptimizer_SetMaximize)
    MaximizeOn = _swig_new_instance_method(_ITKOptimizersBasePython.itkSingleValuedNonLinearVnlOptimizer_MaximizeOn)
    MaximizeOff = _swig_new_instance_method(_ITKOptimizersBasePython.itkSingleValuedNonLinearVnlOptimizer_MaximizeOff)
    GetMinimize = _swig_new_instance_method(_ITKOptimizersBasePython.itkSingleValuedNonLinearVnlOptimizer_GetMinimize)
    SetMinimize = _swig_new_instance_method(_ITKOptimizersBasePython.itkSingleValuedNonLinearVnlOptimizer_SetMinimize)
    MinimizeOn = _swig_new_instance_method(_ITKOptimizersBasePython.itkSingleValuedNonLinearVnlOptimizer_MinimizeOn)
    MinimizeOff = _swig_new_instance_method(_ITKOptimizersBasePython.itkSingleValuedNonLinearVnlOptimizer_MinimizeOff)
    GetCachedValue = _swig_new_instance_method(_ITKOptimizersBasePython.itkSingleValuedNonLinearVnlOptimizer_GetCachedValue)
    GetCachedDerivative = _swig_new_instance_method(_ITKOptimizersBasePython.itkSingleValuedNonLinearVnlOptimizer_GetCachedDerivative)
    GetCachedCurrentPosition = _swig_new_instance_method(_ITKOptimizersBasePython.itkSingleValuedNonLinearVnlOptimizer_GetCachedCurrentPosition)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkSingleValuedNonLinearVnlOptimizer
    cast = _swig_new_static_method(_ITKOptimizersBasePython.itkSingleValuedNonLinearVnlOptimizer_cast)
    GetPointer = _swig_new_instance_method(_ITKOptimizersBasePython.itkSingleValuedNonLinearVnlOptimizer_GetPointer)

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

        Create a new object of the class itkSingleValuedNonLinearVnlOptimizer 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:

          itkSingleValuedNonLinearVnlOptimizer.New( reader, Threshold=10 )

        is (most of the time) equivalent to:

          obj = itkSingleValuedNonLinearVnlOptimizer.New()
          obj.SetInput( 0, reader.GetOutput() )
          obj.SetThreshold( 10 )
        """
        obj = itkSingleValuedNonLinearVnlOptimizer.__New_orig__()
        import itkTemplate
        itkTemplate.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkSingleValuedNonLinearVnlOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkSingleValuedNonLinearVnlOptimizer_swigregister(itkSingleValuedNonLinearVnlOptimizer)
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
    __New_orig__ = _swig_new_static_method(_ITKOptimizersBasePython.itkAmoebaOptimizer___New_orig__)
    Clone = _swig_new_instance_method(_ITKOptimizersBasePython.itkAmoebaOptimizer_Clone)
    SetMaximumNumberOfIterations = _swig_new_instance_method(_ITKOptimizersBasePython.itkAmoebaOptimizer_SetMaximumNumberOfIterations)
    GetMaximumNumberOfIterations = _swig_new_instance_method(_ITKOptimizersBasePython.itkAmoebaOptimizer_GetMaximumNumberOfIterations)
    SetAutomaticInitialSimplex = _swig_new_instance_method(_ITKOptimizersBasePython.itkAmoebaOptimizer_SetAutomaticInitialSimplex)
    AutomaticInitialSimplexOn = _swig_new_instance_method(_ITKOptimizersBasePython.itkAmoebaOptimizer_AutomaticInitialSimplexOn)
    AutomaticInitialSimplexOff = _swig_new_instance_method(_ITKOptimizersBasePython.itkAmoebaOptimizer_AutomaticInitialSimplexOff)
    GetAutomaticInitialSimplex = _swig_new_instance_method(_ITKOptimizersBasePython.itkAmoebaOptimizer_GetAutomaticInitialSimplex)
    SetOptimizeWithRestarts = _swig_new_instance_method(_ITKOptimizersBasePython.itkAmoebaOptimizer_SetOptimizeWithRestarts)
    OptimizeWithRestartsOn = _swig_new_instance_method(_ITKOptimizersBasePython.itkAmoebaOptimizer_OptimizeWithRestartsOn)
    OptimizeWithRestartsOff = _swig_new_instance_method(_ITKOptimizersBasePython.itkAmoebaOptimizer_OptimizeWithRestartsOff)
    GetOptimizeWithRestarts = _swig_new_instance_method(_ITKOptimizersBasePython.itkAmoebaOptimizer_GetOptimizeWithRestarts)
    SetInitialSimplexDelta = _swig_new_instance_method(_ITKOptimizersBasePython.itkAmoebaOptimizer_SetInitialSimplexDelta)
    GetInitialSimplexDelta = _swig_new_instance_method(_ITKOptimizersBasePython.itkAmoebaOptimizer_GetInitialSimplexDelta)
    SetParametersConvergenceTolerance = _swig_new_instance_method(_ITKOptimizersBasePython.itkAmoebaOptimizer_SetParametersConvergenceTolerance)
    GetParametersConvergenceTolerance = _swig_new_instance_method(_ITKOptimizersBasePython.itkAmoebaOptimizer_GetParametersConvergenceTolerance)
    SetFunctionConvergenceTolerance = _swig_new_instance_method(_ITKOptimizersBasePython.itkAmoebaOptimizer_SetFunctionConvergenceTolerance)
    GetFunctionConvergenceTolerance = _swig_new_instance_method(_ITKOptimizersBasePython.itkAmoebaOptimizer_GetFunctionConvergenceTolerance)
    GetValue = _swig_new_instance_method(_ITKOptimizersBasePython.itkAmoebaOptimizer_GetValue)
    GetOptimizer = _swig_new_instance_method(_ITKOptimizersBasePython.itkAmoebaOptimizer_GetOptimizer)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkAmoebaOptimizer
    cast = _swig_new_static_method(_ITKOptimizersBasePython.itkAmoebaOptimizer_cast)
    GetPointer = _swig_new_instance_method(_ITKOptimizersBasePython.itkAmoebaOptimizer_GetPointer)

    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__()
        import itkTemplate
        itkTemplate.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkAmoebaOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkAmoebaOptimizer_swigregister(itkAmoebaOptimizer)
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
    __New_orig__ = _swig_new_static_method(_ITKOptimizersBasePython.itkConjugateGradientOptimizer___New_orig__)
    Clone = _swig_new_instance_method(_ITKOptimizersBasePython.itkConjugateGradientOptimizer_Clone)
    GetOptimizer = _swig_new_instance_method(_ITKOptimizersBasePython.itkConjugateGradientOptimizer_GetOptimizer)
    GetNumberOfIterations = _swig_new_instance_method(_ITKOptimizersBasePython.itkConjugateGradientOptimizer_GetNumberOfIterations)
    GetCurrentIteration = _swig_new_instance_method(_ITKOptimizersBasePython.itkConjugateGradientOptimizer_GetCurrentIteration)
    GetValue = _swig_new_instance_method(_ITKOptimizersBasePython.itkConjugateGradientOptimizer_GetValue)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkConjugateGradientOptimizer
    cast = _swig_new_static_method(_ITKOptimizersBasePython.itkConjugateGradientOptimizer_cast)
    GetPointer = _swig_new_instance_method(_ITKOptimizersBasePython.itkConjugateGradientOptimizer_GetPointer)

    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__()
        import itkTemplate
        itkTemplate.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkConjugateGradientOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkConjugateGradientOptimizer_swigregister(itkConjugateGradientOptimizer)
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
    __New_orig__ = _swig_new_static_method(_ITKOptimizersBasePython.itkExhaustiveOptimizer___New_orig__)
    Clone = _swig_new_instance_method(_ITKOptimizersBasePython.itkExhaustiveOptimizer_Clone)
    StartWalking = _swig_new_instance_method(_ITKOptimizersBasePython.itkExhaustiveOptimizer_StartWalking)
    ResumeWalking = _swig_new_instance_method(_ITKOptimizersBasePython.itkExhaustiveOptimizer_ResumeWalking)
    StopWalking = _swig_new_instance_method(_ITKOptimizersBasePython.itkExhaustiveOptimizer_StopWalking)
    SetStepLength = _swig_new_instance_method(_ITKOptimizersBasePython.itkExhaustiveOptimizer_SetStepLength)
    SetNumberOfSteps = _swig_new_instance_method(_ITKOptimizersBasePython.itkExhaustiveOptimizer_SetNumberOfSteps)
    GetStepLength = _swig_new_instance_method(_ITKOptimizersBasePython.itkExhaustiveOptimizer_GetStepLength)
    GetNumberOfSteps = _swig_new_instance_method(_ITKOptimizersBasePython.itkExhaustiveOptimizer_GetNumberOfSteps)
    GetCurrentValue = _swig_new_instance_method(_ITKOptimizersBasePython.itkExhaustiveOptimizer_GetCurrentValue)
    GetMaximumMetricValue = _swig_new_instance_method(_ITKOptimizersBasePython.itkExhaustiveOptimizer_GetMaximumMetricValue)
    GetMinimumMetricValue = _swig_new_instance_method(_ITKOptimizersBasePython.itkExhaustiveOptimizer_GetMinimumMetricValue)
    GetMinimumMetricValuePosition = _swig_new_instance_method(_ITKOptimizersBasePython.itkExhaustiveOptimizer_GetMinimumMetricValuePosition)
    GetMaximumMetricValuePosition = _swig_new_instance_method(_ITKOptimizersBasePython.itkExhaustiveOptimizer_GetMaximumMetricValuePosition)
    GetCurrentIndex = _swig_new_instance_method(_ITKOptimizersBasePython.itkExhaustiveOptimizer_GetCurrentIndex)
    GetMaximumNumberOfIterations = _swig_new_instance_method(_ITKOptimizersBasePython.itkExhaustiveOptimizer_GetMaximumNumberOfIterations)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkExhaustiveOptimizer
    cast = _swig_new_static_method(_ITKOptimizersBasePython.itkExhaustiveOptimizer_cast)
    GetPointer = _swig_new_instance_method(_ITKOptimizersBasePython.itkExhaustiveOptimizer_GetPointer)

    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__()
        import itkTemplate
        itkTemplate.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkExhaustiveOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkExhaustiveOptimizer_swigregister(itkExhaustiveOptimizer)
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
    __New_orig__ = _swig_new_static_method(_ITKOptimizersBasePython.itkGradientDescentOptimizer___New_orig__)
    Clone = _swig_new_instance_method(_ITKOptimizersBasePython.itkGradientDescentOptimizer_Clone)
    MaximumNumberOfIterations = _ITKOptimizersBasePython.itkGradientDescentOptimizer_MaximumNumberOfIterations
    
    MetricError = _ITKOptimizersBasePython.itkGradientDescentOptimizer_MetricError
    
    GetMaximize = _swig_new_instance_method(_ITKOptimizersBasePython.itkGradientDescentOptimizer_GetMaximize)
    SetMaximize = _swig_new_instance_method(_ITKOptimizersBasePython.itkGradientDescentOptimizer_SetMaximize)
    MaximizeOn = _swig_new_instance_method(_ITKOptimizersBasePython.itkGradientDescentOptimizer_MaximizeOn)
    MaximizeOff = _swig_new_instance_method(_ITKOptimizersBasePython.itkGradientDescentOptimizer_MaximizeOff)
    GetMinimize = _swig_new_instance_method(_ITKOptimizersBasePython.itkGradientDescentOptimizer_GetMinimize)
    SetMinimize = _swig_new_instance_method(_ITKOptimizersBasePython.itkGradientDescentOptimizer_SetMinimize)
    MinimizeOn = _swig_new_instance_method(_ITKOptimizersBasePython.itkGradientDescentOptimizer_MinimizeOn)
    MinimizeOff = _swig_new_instance_method(_ITKOptimizersBasePython.itkGradientDescentOptimizer_MinimizeOff)
    AdvanceOneStep = _swig_new_instance_method(_ITKOptimizersBasePython.itkGradientDescentOptimizer_AdvanceOneStep)
    ResumeOptimization = _swig_new_instance_method(_ITKOptimizersBasePython.itkGradientDescentOptimizer_ResumeOptimization)
    StopOptimization = _swig_new_instance_method(_ITKOptimizersBasePython.itkGradientDescentOptimizer_StopOptimization)
    SetLearningRate = _swig_new_instance_method(_ITKOptimizersBasePython.itkGradientDescentOptimizer_SetLearningRate)
    GetLearningRate = _swig_new_instance_method(_ITKOptimizersBasePython.itkGradientDescentOptimizer_GetLearningRate)
    SetNumberOfIterations = _swig_new_instance_method(_ITKOptimizersBasePython.itkGradientDescentOptimizer_SetNumberOfIterations)
    GetNumberOfIterations = _swig_new_instance_method(_ITKOptimizersBasePython.itkGradientDescentOptimizer_GetNumberOfIterations)
    GetCurrentIteration = _swig_new_instance_method(_ITKOptimizersBasePython.itkGradientDescentOptimizer_GetCurrentIteration)
    GetValue = _swig_new_instance_method(_ITKOptimizersBasePython.itkGradientDescentOptimizer_GetValue)
    GetStopCondition = _swig_new_instance_method(_ITKOptimizersBasePython.itkGradientDescentOptimizer_GetStopCondition)
    GetGradient = _swig_new_instance_method(_ITKOptimizersBasePython.itkGradientDescentOptimizer_GetGradient)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkGradientDescentOptimizer
    cast = _swig_new_static_method(_ITKOptimizersBasePython.itkGradientDescentOptimizer_cast)
    GetPointer = _swig_new_instance_method(_ITKOptimizersBasePython.itkGradientDescentOptimizer_GetPointer)

    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__()
        import itkTemplate
        itkTemplate.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkGradientDescentOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkGradientDescentOptimizer_swigregister(itkGradientDescentOptimizer)
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
    __New_orig__ = _swig_new_static_method(_ITKOptimizersBasePython.itkLBFGSBOptimizer___New_orig__)
    Clone = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSBOptimizer_Clone)
    SetTrace = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSBOptimizer_SetTrace)
    GetTrace = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSBOptimizer_GetTrace)
    TraceOn = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSBOptimizer_TraceOn)
    TraceOff = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSBOptimizer_TraceOff)
    SetLowerBound = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSBOptimizer_SetLowerBound)
    GetLowerBound = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSBOptimizer_GetLowerBound)
    SetUpperBound = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSBOptimizer_SetUpperBound)
    GetUpperBound = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSBOptimizer_GetUpperBound)
    SetBoundSelection = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSBOptimizer_SetBoundSelection)
    GetBoundSelection = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSBOptimizer_GetBoundSelection)
    SetCostFunctionConvergenceFactor = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSBOptimizer_SetCostFunctionConvergenceFactor)
    GetCostFunctionConvergenceFactor = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSBOptimizer_GetCostFunctionConvergenceFactor)
    SetProjectedGradientTolerance = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSBOptimizer_SetProjectedGradientTolerance)
    GetProjectedGradientTolerance = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSBOptimizer_GetProjectedGradientTolerance)
    SetMaximumNumberOfIterations = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSBOptimizer_SetMaximumNumberOfIterations)
    GetMaximumNumberOfIterations = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSBOptimizer_GetMaximumNumberOfIterations)
    SetMaximumNumberOfEvaluations = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSBOptimizer_SetMaximumNumberOfEvaluations)
    GetMaximumNumberOfEvaluations = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSBOptimizer_GetMaximumNumberOfEvaluations)
    SetMaximumNumberOfCorrections = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSBOptimizer_SetMaximumNumberOfCorrections)
    GetMaximumNumberOfCorrections = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSBOptimizer_GetMaximumNumberOfCorrections)
    SetScales = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSBOptimizer_SetScales)
    GetCurrentIteration = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSBOptimizer_GetCurrentIteration)
    GetValue = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSBOptimizer_GetValue)
    GetInfinityNormOfProjectedGradient = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSBOptimizer_GetInfinityNormOfProjectedGradient)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkLBFGSBOptimizer
    cast = _swig_new_static_method(_ITKOptimizersBasePython.itkLBFGSBOptimizer_cast)
    GetPointer = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSBOptimizer_GetPointer)

    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__()
        import itkTemplate
        itkTemplate.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkLBFGSBOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkLBFGSBOptimizer_swigregister(itkLBFGSBOptimizer)
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
    __New_orig__ = _swig_new_static_method(_ITKOptimizersBasePython.itkLBFGSOptimizer___New_orig__)
    Clone = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSOptimizer_Clone)
    GetOptimizer = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSOptimizer_GetOptimizer)
    SetTrace = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSOptimizer_SetTrace)
    GetTrace = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSOptimizer_GetTrace)
    TraceOn = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSOptimizer_TraceOn)
    TraceOff = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSOptimizer_TraceOff)
    SetMaximumNumberOfFunctionEvaluations = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSOptimizer_SetMaximumNumberOfFunctionEvaluations)
    GetMaximumNumberOfFunctionEvaluations = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSOptimizer_GetMaximumNumberOfFunctionEvaluations)
    SetGradientConvergenceTolerance = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSOptimizer_SetGradientConvergenceTolerance)
    GetGradientConvergenceTolerance = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSOptimizer_GetGradientConvergenceTolerance)
    SetLineSearchAccuracy = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSOptimizer_SetLineSearchAccuracy)
    GetLineSearchAccuracy = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSOptimizer_GetLineSearchAccuracy)
    SetDefaultStepLength = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSOptimizer_SetDefaultStepLength)
    GetDefaultStepLength = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSOptimizer_GetDefaultStepLength)
    GetValue = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSOptimizer_GetValue)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkLBFGSOptimizer
    cast = _swig_new_static_method(_ITKOptimizersBasePython.itkLBFGSOptimizer_cast)
    GetPointer = _swig_new_instance_method(_ITKOptimizersBasePython.itkLBFGSOptimizer_GetPointer)

    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__()
        import itkTemplate
        itkTemplate.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkLBFGSOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkLBFGSOptimizer_swigregister(itkLBFGSOptimizer)
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
    __New_orig__ = _swig_new_static_method(_ITKOptimizersBasePython.itkMultipleValuedNonLinearOptimizer___New_orig__)
    Clone = _swig_new_instance_method(_ITKOptimizersBasePython.itkMultipleValuedNonLinearOptimizer_Clone)
    SetCostFunction = _swig_new_instance_method(_ITKOptimizersBasePython.itkMultipleValuedNonLinearOptimizer_SetCostFunction)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkMultipleValuedNonLinearOptimizer
    cast = _swig_new_static_method(_ITKOptimizersBasePython.itkMultipleValuedNonLinearOptimizer_cast)
    GetPointer = _swig_new_instance_method(_ITKOptimizersBasePython.itkMultipleValuedNonLinearOptimizer_GetPointer)

    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__()
        import itkTemplate
        itkTemplate.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
    SetUseCostFunctionGradient = _swig_new_instance_method(_ITKOptimizersBasePython.itkMultipleValuedNonLinearVnlOptimizer_SetUseCostFunctionGradient)
    UseCostFunctionGradientOn = _swig_new_instance_method(_ITKOptimizersBasePython.itkMultipleValuedNonLinearVnlOptimizer_UseCostFunctionGradientOn)
    UseCostFunctionGradientOff = _swig_new_instance_method(_ITKOptimizersBasePython.itkMultipleValuedNonLinearVnlOptimizer_UseCostFunctionGradientOff)
    GetUseCostFunctionGradient = _swig_new_instance_method(_ITKOptimizersBasePython.itkMultipleValuedNonLinearVnlOptimizer_GetUseCostFunctionGradient)
    GetCachedValue = _swig_new_instance_method(_ITKOptimizersBasePython.itkMultipleValuedNonLinearVnlOptimizer_GetCachedValue)
    GetCachedDerivative = _swig_new_instance_method(_ITKOptimizersBasePython.itkMultipleValuedNonLinearVnlOptimizer_GetCachedDerivative)
    GetCachedCurrentPosition = _swig_new_instance_method(_ITKOptimizersBasePython.itkMultipleValuedNonLinearVnlOptimizer_GetCachedCurrentPosition)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkMultipleValuedNonLinearVnlOptimizer
    cast = _swig_new_static_method(_ITKOptimizersBasePython.itkMultipleValuedNonLinearVnlOptimizer_cast)
    GetPointer = _swig_new_instance_method(_ITKOptimizersBasePython.itkMultipleValuedNonLinearVnlOptimizer_GetPointer)

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

        Create a new object of the class itkMultipleValuedNonLinearVnlOptimizer 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:

          itkMultipleValuedNonLinearVnlOptimizer.New( reader, Threshold=10 )

        is (most of the time) equivalent to:

          obj = itkMultipleValuedNonLinearVnlOptimizer.New()
          obj.SetInput( 0, reader.GetOutput() )
          obj.SetThreshold( 10 )
        """
        obj = itkMultipleValuedNonLinearVnlOptimizer.__New_orig__()
        import itkTemplate
        itkTemplate.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkMultipleValuedNonLinearVnlOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkMultipleValuedNonLinearVnlOptimizer_swigregister(itkMultipleValuedNonLinearVnlOptimizer)
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
    __New_orig__ = _swig_new_static_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer___New_orig__)
    Clone = _swig_new_instance_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_Clone)
    SetMaximize = _swig_new_instance_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_SetMaximize)
    MaximizeOn = _swig_new_instance_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_MaximizeOn)
    MaximizeOff = _swig_new_instance_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_MaximizeOff)
    GetMaximize = _swig_new_instance_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_GetMaximize)
    GetMinimize = _swig_new_instance_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_GetMinimize)
    SetMinimize = _swig_new_instance_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_SetMinimize)
    MinimizeOn = _swig_new_instance_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_MinimizeOn)
    MinimizeOff = _swig_new_instance_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_MinimizeOff)
    SetMaximumIteration = _swig_new_instance_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_SetMaximumIteration)
    GetMaximumIteration = _swig_new_instance_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_GetMaximumIteration)
    SetGrowthFactor = _swig_new_instance_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_SetGrowthFactor)
    GetGrowthFactor = _swig_new_instance_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_GetGrowthFactor)
    SetShrinkFactor = _swig_new_instance_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_SetShrinkFactor)
    GetShrinkFactor = _swig_new_instance_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_GetShrinkFactor)
    SetInitialRadius = _swig_new_instance_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_SetInitialRadius)
    GetInitialRadius = _swig_new_instance_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_GetInitialRadius)
    SetEpsilon = _swig_new_instance_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_SetEpsilon)
    GetEpsilon = _swig_new_instance_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_GetEpsilon)
    GetFrobeniusNorm = _swig_new_instance_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_GetFrobeniusNorm)
    SetNormalVariateGenerator = _swig_new_instance_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_SetNormalVariateGenerator)
    Initialize = _swig_new_instance_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_Initialize)
    GetCurrentCost = _swig_new_instance_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_GetCurrentCost)
    GetValue = _swig_new_instance_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_GetValue)
    GetCurrentIteration = _swig_new_instance_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_GetCurrentIteration)
    GetInitialized = _swig_new_instance_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_GetInitialized)
    StopOptimization = _swig_new_instance_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_StopOptimization)
    GetCatchGetValueException = _swig_new_instance_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_GetCatchGetValueException)
    SetCatchGetValueException = _swig_new_instance_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_SetCatchGetValueException)
    GetMetricWorstPossibleValue = _swig_new_instance_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_GetMetricWorstPossibleValue)
    SetMetricWorstPossibleValue = _swig_new_instance_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_SetMetricWorstPossibleValue)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkOnePlusOneEvolutionaryOptimizer
    cast = _swig_new_static_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_cast)
    GetPointer = _swig_new_instance_method(_ITKOptimizersBasePython.itkOnePlusOneEvolutionaryOptimizer_GetPointer)

    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__()
        import itkTemplate
        itkTemplate.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
    SetInitializeNormalDistribution = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_SetInitializeNormalDistribution)
    GetInitializeNormalDistribution = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_GetInitializeNormalDistribution)
    InitializeNormalDistributionOn = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_InitializeNormalDistributionOn)
    InitializeNormalDistributionOff = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_InitializeNormalDistributionOff)
    SetInitialSwarm = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_SetInitialSwarm)
    ClearSwarm = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_ClearSwarm)
    SetPrintSwarm = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_SetPrintSwarm)
    GetPrintSwarm = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_GetPrintSwarm)
    PrintSwarmOn = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_PrintSwarmOn)
    PrintSwarmOff = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_PrintSwarmOff)
    SetNumberOfParticles = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_SetNumberOfParticles)
    GetNumberOfParticles = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_GetNumberOfParticles)
    SetMaximalNumberOfIterations = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_SetMaximalNumberOfIterations)
    GetMaximalNumberOfIterations = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_GetMaximalNumberOfIterations)
    SetNumberOfGenerationsWithMinimalImprovement = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_SetNumberOfGenerationsWithMinimalImprovement)
    GetNumberOfGenerationsWithMinimalImprovement = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_GetNumberOfGenerationsWithMinimalImprovement)
    SetParameterBounds = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_SetParameterBounds)
    GetParameterBounds = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_GetParameterBounds)
    SetFunctionConvergenceTolerance = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_SetFunctionConvergenceTolerance)
    GetFunctionConvergenceTolerance = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_GetFunctionConvergenceTolerance)
    SetParametersConvergenceTolerance = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_SetParametersConvergenceTolerance)
    GetParametersConvergenceTolerance = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_GetParametersConvergenceTolerance)
    GetPercentageParticlesConverged = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_GetPercentageParticlesConverged)
    SetPercentageParticlesConverged = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_SetPercentageParticlesConverged)
    SetSeed = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_SetSeed)
    GetSeed = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_GetSeed)
    SetUseSeed = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_SetUseSeed)
    GetUseSeed = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_GetUseSeed)
    UseSeedOn = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_UseSeedOn)
    UseSeedOff = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_UseSeedOff)
    GetValue = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_GetValue)
    PrintSwarm = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_PrintSwarm)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkParticleSwarmOptimizerBase
    cast = _swig_new_static_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_cast)
    GetPointer = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_GetPointer)

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

        Create a new object of the class itkParticleSwarmOptimizerBase 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:

          itkParticleSwarmOptimizerBase.New( reader, Threshold=10 )

        is (most of the time) equivalent to:

          obj = itkParticleSwarmOptimizerBase.New()
          obj.SetInput( 0, reader.GetOutput() )
          obj.SetThreshold( 10 )
        """
        obj = itkParticleSwarmOptimizerBase.__New_orig__()
        import itkTemplate
        itkTemplate.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkParticleSwarmOptimizerBase in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkParticleSwarmOptimizerBase_swigregister(itkParticleSwarmOptimizerBase)
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
    __New_orig__ = _swig_new_static_method(_ITKOptimizersBasePython.itkPowellOptimizer___New_orig__)
    Clone = _swig_new_instance_method(_ITKOptimizersBasePython.itkPowellOptimizer_Clone)
    SetMaximize = _swig_new_instance_method(_ITKOptimizersBasePython.itkPowellOptimizer_SetMaximize)
    MaximizeOn = _swig_new_instance_method(_ITKOptimizersBasePython.itkPowellOptimizer_MaximizeOn)
    MaximizeOff = _swig_new_instance_method(_ITKOptimizersBasePython.itkPowellOptimizer_MaximizeOff)
    GetMaximize = _swig_new_instance_method(_ITKOptimizersBasePython.itkPowellOptimizer_GetMaximize)
    SetMaximumIteration = _swig_new_instance_method(_ITKOptimizersBasePython.itkPowellOptimizer_SetMaximumIteration)
    GetMaximumIteration = _swig_new_instance_method(_ITKOptimizersBasePython.itkPowellOptimizer_GetMaximumIteration)
    SetMaximumLineIteration = _swig_new_instance_method(_ITKOptimizersBasePython.itkPowellOptimizer_SetMaximumLineIteration)
    GetMaximumLineIteration = _swig_new_instance_method(_ITKOptimizersBasePython.itkPowellOptimizer_GetMaximumLineIteration)
    SetStepLength = _swig_new_instance_method(_ITKOptimizersBasePython.itkPowellOptimizer_SetStepLength)
    GetStepLength = _swig_new_instance_method(_ITKOptimizersBasePython.itkPowellOptimizer_GetStepLength)
    SetStepTolerance = _swig_new_instance_method(_ITKOptimizersBasePython.itkPowellOptimizer_SetStepTolerance)
    GetStepTolerance = _swig_new_instance_method(_ITKOptimizersBasePython.itkPowellOptimizer_GetStepTolerance)
    SetValueTolerance = _swig_new_instance_method(_ITKOptimizersBasePython.itkPowellOptimizer_SetValueTolerance)
    GetValueTolerance = _swig_new_instance_method(_ITKOptimizersBasePython.itkPowellOptimizer_GetValueTolerance)
    GetCurrentCost = _swig_new_instance_method(_ITKOptimizersBasePython.itkPowellOptimizer_GetCurrentCost)
    GetValue = _swig_new_instance_method(_ITKOptimizersBasePython.itkPowellOptimizer_GetValue)
    GetCurrentIteration = _swig_new_instance_method(_ITKOptimizersBasePython.itkPowellOptimizer_GetCurrentIteration)
    GetCurrentLineIteration = _swig_new_instance_method(_ITKOptimizersBasePython.itkPowellOptimizer_GetCurrentLineIteration)
    StopOptimization = _swig_new_instance_method(_ITKOptimizersBasePython.itkPowellOptimizer_StopOptimization)
    GetCatchGetValueException = _swig_new_instance_method(_ITKOptimizersBasePython.itkPowellOptimizer_GetCatchGetValueException)
    SetCatchGetValueException = _swig_new_instance_method(_ITKOptimizersBasePython.itkPowellOptimizer_SetCatchGetValueException)
    GetMetricWorstPossibleValue = _swig_new_instance_method(_ITKOptimizersBasePython.itkPowellOptimizer_GetMetricWorstPossibleValue)
    SetMetricWorstPossibleValue = _swig_new_instance_method(_ITKOptimizersBasePython.itkPowellOptimizer_SetMetricWorstPossibleValue)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkPowellOptimizer
    cast = _swig_new_static_method(_ITKOptimizersBasePython.itkPowellOptimizer_cast)
    GetPointer = _swig_new_instance_method(_ITKOptimizersBasePython.itkPowellOptimizer_GetPointer)

    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__()
        import itkTemplate
        itkTemplate.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkPowellOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkPowellOptimizer_swigregister(itkPowellOptimizer)
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
    __New_orig__ = _swig_new_static_method(_ITKOptimizersBasePython.itkQuaternionRigidTransformGradientDescentOptimizer___New_orig__)
    Clone = _swig_new_instance_method(_ITKOptimizersBasePython.itkQuaternionRigidTransformGradientDescentOptimizer_Clone)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkQuaternionRigidTransformGradientDescentOptimizer
    cast = _swig_new_static_method(_ITKOptimizersBasePython.itkQuaternionRigidTransformGradientDescentOptimizer_cast)
    GetPointer = _swig_new_instance_method(_ITKOptimizersBasePython.itkQuaternionRigidTransformGradientDescentOptimizer_GetPointer)

    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__()
        import itkTemplate
        itkTemplate.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkQuaternionRigidTransformGradientDescentOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkQuaternionRigidTransformGradientDescentOptimizer_swigregister(itkQuaternionRigidTransformGradientDescentOptimizer)
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
    __New_orig__ = _swig_new_static_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer___New_orig__)
    Clone = _swig_new_instance_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_Clone)
    GradientMagnitudeTolerance = _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_GradientMagnitudeTolerance
    
    StepTooSmall = _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_StepTooSmall
    
    ImageNotAvailable = _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_ImageNotAvailable
    
    CostFunctionError = _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_CostFunctionError
    
    MaximumNumberOfIterations = _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_MaximumNumberOfIterations
    
    Unknown = _ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_Unknown
    
    SetMaximize = _swig_new_instance_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_SetMaximize)
    GetMaximize = _swig_new_instance_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_GetMaximize)
    MaximizeOn = _swig_new_instance_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_MaximizeOn)
    MaximizeOff = _swig_new_instance_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_MaximizeOff)
    GetMinimize = _swig_new_instance_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_GetMinimize)
    SetMinimize = _swig_new_instance_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_SetMinimize)
    MinimizeOn = _swig_new_instance_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_MinimizeOn)
    MinimizeOff = _swig_new_instance_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_MinimizeOff)
    ResumeOptimization = _swig_new_instance_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_ResumeOptimization)
    StopOptimization = _swig_new_instance_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_StopOptimization)
    SetMaximumStepLength = _swig_new_instance_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_SetMaximumStepLength)
    SetMinimumStepLength = _swig_new_instance_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_SetMinimumStepLength)
    SetRelaxationFactor = _swig_new_instance_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_SetRelaxationFactor)
    SetNumberOfIterations = _swig_new_instance_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_SetNumberOfIterations)
    SetGradientMagnitudeTolerance = _swig_new_instance_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_SetGradientMagnitudeTolerance)
    GetCurrentStepLength = _swig_new_instance_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_GetCurrentStepLength)
    GetMaximumStepLength = _swig_new_instance_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_GetMaximumStepLength)
    GetMinimumStepLength = _swig_new_instance_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_GetMinimumStepLength)
    GetRelaxationFactor = _swig_new_instance_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_GetRelaxationFactor)
    GetNumberOfIterations = _swig_new_instance_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_GetNumberOfIterations)
    GetGradientMagnitudeTolerance = _swig_new_instance_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_GetGradientMagnitudeTolerance)
    GetCurrentIteration = _swig_new_instance_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_GetCurrentIteration)
    GetStopCondition = _swig_new_instance_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_GetStopCondition)
    GetValue = _swig_new_instance_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_GetValue)
    GetGradient = _swig_new_instance_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_GetGradient)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkRegularStepGradientDescentBaseOptimizer
    cast = _swig_new_static_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_cast)
    GetPointer = _swig_new_instance_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_GetPointer)

    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__()
        import itkTemplate
        itkTemplate.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkRegularStepGradientDescentBaseOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkRegularStepGradientDescentBaseOptimizer_swigregister(itkRegularStepGradientDescentBaseOptimizer)
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
    __New_orig__ = _swig_new_static_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentOptimizer___New_orig__)
    Clone = _swig_new_instance_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentOptimizer_Clone)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkRegularStepGradientDescentOptimizer
    cast = _swig_new_static_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentOptimizer_cast)
    GetPointer = _swig_new_instance_method(_ITKOptimizersBasePython.itkRegularStepGradientDescentOptimizer_GetPointer)

    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__()
        import itkTemplate
        itkTemplate.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkRegularStepGradientDescentOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkRegularStepGradientDescentOptimizer_swigregister(itkRegularStepGradientDescentOptimizer)
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
    __New_orig__ = _swig_new_static_method(_ITKOptimizersBasePython.itkSPSAOptimizer___New_orig__)
    Clone = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_Clone)
    Unknown = _ITKOptimizersBasePython.itkSPSAOptimizer_Unknown
    
    MaximumNumberOfIterations = _ITKOptimizersBasePython.itkSPSAOptimizer_MaximumNumberOfIterations
    
    BelowTolerance = _ITKOptimizersBasePython.itkSPSAOptimizer_BelowTolerance
    
    MetricError = _ITKOptimizersBasePython.itkSPSAOptimizer_MetricError
    
    AdvanceOneStep = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_AdvanceOneStep)
    ResumeOptimization = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_ResumeOptimization)
    StopOptimization = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_StopOptimization)
    GetValue = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_GetValue)
    GuessParameters = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_GuessParameters)
    GetCurrentIteration = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_GetCurrentIteration)
    GetStopCondition = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_GetStopCondition)
    GetLearningRate = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_GetLearningRate)
    GetGradientMagnitude = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_GetGradientMagnitude)
    GetGradient = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_GetGradient)
    SetSa = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_SetSa)
    GetSa = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_GetSa)
    Seta = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_Seta)
    Geta = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_Geta)
    SetSc = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_SetSc)
    GetSc = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_GetSc)
    Setc = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_Setc)
    Getc = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_Getc)
    SetA = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_SetA)
    GetA = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_GetA)
    SetAlpha = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_SetAlpha)
    GetAlpha = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_GetAlpha)
    SetGamma = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_SetGamma)
    GetGamma = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_GetGamma)
    GetMaximize = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_GetMaximize)
    SetMaximize = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_SetMaximize)
    MaximizeOn = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_MaximizeOn)
    MaximizeOff = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_MaximizeOff)
    GetMinimize = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_GetMinimize)
    SetMinimize = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_SetMinimize)
    MinimizeOn = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_MinimizeOn)
    MinimizeOff = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_MinimizeOff)
    SetNumberOfPerturbations = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_SetNumberOfPerturbations)
    GetNumberOfPerturbations = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_GetNumberOfPerturbations)
    GetStateOfConvergence = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_GetStateOfConvergence)
    SetStateOfConvergenceDecayRate = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_SetStateOfConvergenceDecayRate)
    GetStateOfConvergenceDecayRate = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_GetStateOfConvergenceDecayRate)
    SetMinimumNumberOfIterations = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_SetMinimumNumberOfIterations)
    GetMinimumNumberOfIterations = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_GetMinimumNumberOfIterations)
    SetMaximumNumberOfIterations = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_SetMaximumNumberOfIterations)
    GetMaximumNumberOfIterations = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_GetMaximumNumberOfIterations)
    SetTolerance = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_SetTolerance)
    GetTolerance = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_GetTolerance)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkSPSAOptimizer
    cast = _swig_new_static_method(_ITKOptimizersBasePython.itkSPSAOptimizer_cast)
    GetPointer = _swig_new_instance_method(_ITKOptimizersBasePython.itkSPSAOptimizer_GetPointer)

    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__()
        import itkTemplate
        itkTemplate.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkSPSAOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkSPSAOptimizer_swigregister(itkSPSAOptimizer)
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
    __New_orig__ = _swig_new_static_method(_ITKOptimizersBasePython.itkVersorRigid3DTransformOptimizer___New_orig__)
    Clone = _swig_new_instance_method(_ITKOptimizersBasePython.itkVersorRigid3DTransformOptimizer_Clone)
    StepAlongGradient = _swig_new_instance_method(_ITKOptimizersBasePython.itkVersorRigid3DTransformOptimizer_StepAlongGradient)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkVersorRigid3DTransformOptimizer
    cast = _swig_new_static_method(_ITKOptimizersBasePython.itkVersorRigid3DTransformOptimizer_cast)
    GetPointer = _swig_new_instance_method(_ITKOptimizersBasePython.itkVersorRigid3DTransformOptimizer_GetPointer)

    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__()
        import itkTemplate
        itkTemplate.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkVersorRigid3DTransformOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkVersorRigid3DTransformOptimizer_swigregister(itkVersorRigid3DTransformOptimizer)
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
    __New_orig__ = _swig_new_static_method(_ITKOptimizersBasePython.itkVersorTransformOptimizer___New_orig__)
    Clone = _swig_new_instance_method(_ITKOptimizersBasePython.itkVersorTransformOptimizer_Clone)
    StepAlongGradient = _swig_new_instance_method(_ITKOptimizersBasePython.itkVersorTransformOptimizer_StepAlongGradient)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkVersorTransformOptimizer
    cast = _swig_new_static_method(_ITKOptimizersBasePython.itkVersorTransformOptimizer_cast)
    GetPointer = _swig_new_instance_method(_ITKOptimizersBasePython.itkVersorTransformOptimizer_GetPointer)

    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__()
        import itkTemplate
        itkTemplate.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkVersorTransformOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkVersorTransformOptimizer_swigregister(itkVersorTransformOptimizer)
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
    __New_orig__ = _swig_new_static_method(_ITKOptimizersBasePython.itkCumulativeGaussianOptimizer___New_orig__)
    Clone = _swig_new_instance_method(_ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_Clone)
    SetDifferenceTolerance = _swig_new_instance_method(_ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_SetDifferenceTolerance)
    GetDifferenceTolerance = _swig_new_instance_method(_ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_GetDifferenceTolerance)
    SetVerbose = _swig_new_instance_method(_ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_SetVerbose)
    GetVerbose = _swig_new_instance_method(_ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_GetVerbose)
    GetComputedMean = _swig_new_instance_method(_ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_GetComputedMean)
    GetComputedStandardDeviation = _swig_new_instance_method(_ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_GetComputedStandardDeviation)
    GetUpperAsymptote = _swig_new_instance_method(_ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_GetUpperAsymptote)
    GetLowerAsymptote = _swig_new_instance_method(_ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_GetLowerAsymptote)
    GetFinalSampledArray = _swig_new_instance_method(_ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_GetFinalSampledArray)
    GetFitError = _swig_new_instance_method(_ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_GetFitError)
    SetDataArray = _swig_new_instance_method(_ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_SetDataArray)
    PrintArray = _swig_new_instance_method(_ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_PrintArray)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkCumulativeGaussianOptimizer
    cast = _swig_new_static_method(_ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_cast)
    GetPointer = _swig_new_instance_method(_ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_GetPointer)

    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__()
        import itkTemplate
        itkTemplate.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkCumulativeGaussianOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkCumulativeGaussianOptimizer_swigregister(itkCumulativeGaussianOptimizer)
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
    __New_orig__ = _swig_new_static_method(_ITKOptimizersBasePython.itkFRPROptimizer___New_orig__)
    Clone = _swig_new_instance_method(_ITKOptimizersBasePython.itkFRPROptimizer_Clone)
    SetUseUnitLengthGradient = _swig_new_instance_method(_ITKOptimizersBasePython.itkFRPROptimizer_SetUseUnitLengthGradient)
    GetUseUnitLengthGradient = _swig_new_instance_method(_ITKOptimizersBasePython.itkFRPROptimizer_GetUseUnitLengthGradient)
    SetToFletchReeves = _swig_new_instance_method(_ITKOptimizersBasePython.itkFRPROptimizer_SetToFletchReeves)
    SetToPolakRibiere = _swig_new_instance_method(_ITKOptimizersBasePython.itkFRPROptimizer_SetToPolakRibiere)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkFRPROptimizer
    cast = _swig_new_static_method(_ITKOptimizersBasePython.itkFRPROptimizer_cast)
    GetPointer = _swig_new_instance_method(_ITKOptimizersBasePython.itkFRPROptimizer_GetPointer)

    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__()
        import itkTemplate
        itkTemplate.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkFRPROptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkFRPROptimizer_swigregister(itkFRPROptimizer)
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
    __New_orig__ = _swig_new_static_method(_ITKOptimizersBasePython.itkInitializationBiasedParticleSwarmOptimizer___New_orig__)
    Clone = _swig_new_instance_method(_ITKOptimizersBasePython.itkInitializationBiasedParticleSwarmOptimizer_Clone)
    SetInertiaCoefficient = _swig_new_instance_method(_ITKOptimizersBasePython.itkInitializationBiasedParticleSwarmOptimizer_SetInertiaCoefficient)
    GetInertiaCoefficient = _swig_new_instance_method(_ITKOptimizersBasePython.itkInitializationBiasedParticleSwarmOptimizer_GetInertiaCoefficient)
    SetPersonalCoefficient = _swig_new_instance_method(_ITKOptimizersBasePython.itkInitializationBiasedParticleSwarmOptimizer_SetPersonalCoefficient)
    GetPersonalCoefficient = _swig_new_instance_method(_ITKOptimizersBasePython.itkInitializationBiasedParticleSwarmOptimizer_GetPersonalCoefficient)
    SetGlobalCoefficient = _swig_new_instance_method(_ITKOptimizersBasePython.itkInitializationBiasedParticleSwarmOptimizer_SetGlobalCoefficient)
    GetGlobalCoefficient = _swig_new_instance_method(_ITKOptimizersBasePython.itkInitializationBiasedParticleSwarmOptimizer_GetGlobalCoefficient)
    SetInitializationCoefficient = _swig_new_instance_method(_ITKOptimizersBasePython.itkInitializationBiasedParticleSwarmOptimizer_SetInitializationCoefficient)
    GetInitializationCoefficient = _swig_new_instance_method(_ITKOptimizersBasePython.itkInitializationBiasedParticleSwarmOptimizer_GetInitializationCoefficient)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkInitializationBiasedParticleSwarmOptimizer
    cast = _swig_new_static_method(_ITKOptimizersBasePython.itkInitializationBiasedParticleSwarmOptimizer_cast)
    GetPointer = _swig_new_instance_method(_ITKOptimizersBasePython.itkInitializationBiasedParticleSwarmOptimizer_GetPointer)

    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__()
        import itkTemplate
        itkTemplate.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkInitializationBiasedParticleSwarmOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkInitializationBiasedParticleSwarmOptimizer_swigregister(itkInitializationBiasedParticleSwarmOptimizer)
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
    __New_orig__ = _swig_new_static_method(_ITKOptimizersBasePython.itkLevenbergMarquardtOptimizer___New_orig__)
    Clone = _swig_new_instance_method(_ITKOptimizersBasePython.itkLevenbergMarquardtOptimizer_Clone)
    GetOptimizer = _swig_new_instance_method(_ITKOptimizersBasePython.itkLevenbergMarquardtOptimizer_GetOptimizer)
    SetNumberOfIterations = _swig_new_instance_method(_ITKOptimizersBasePython.itkLevenbergMarquardtOptimizer_SetNumberOfIterations)
    SetValueTolerance = _swig_new_instance_method(_ITKOptimizersBasePython.itkLevenbergMarquardtOptimizer_SetValueTolerance)
    SetGradientTolerance = _swig_new_instance_method(_ITKOptimizersBasePython.itkLevenbergMarquardtOptimizer_SetGradientTolerance)
    SetEpsilonFunction = _swig_new_instance_method(_ITKOptimizersBasePython.itkLevenbergMarquardtOptimizer_SetEpsilonFunction)
    GetValue = _swig_new_instance_method(_ITKOptimizersBasePython.itkLevenbergMarquardtOptimizer_GetValue)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkLevenbergMarquardtOptimizer
    cast = _swig_new_static_method(_ITKOptimizersBasePython.itkLevenbergMarquardtOptimizer_cast)
    GetPointer = _swig_new_instance_method(_ITKOptimizersBasePython.itkLevenbergMarquardtOptimizer_GetPointer)

    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__()
        import itkTemplate
        itkTemplate.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkLevenbergMarquardtOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkLevenbergMarquardtOptimizer_swigregister(itkLevenbergMarquardtOptimizer)
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
    __New_orig__ = _swig_new_static_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizer___New_orig__)
    Clone = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizer_Clone)
    SetInertiaCoefficient = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizer_SetInertiaCoefficient)
    GetInertiaCoefficient = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizer_GetInertiaCoefficient)
    SetPersonalCoefficient = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizer_SetPersonalCoefficient)
    GetPersonalCoefficient = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizer_GetPersonalCoefficient)
    SetGlobalCoefficient = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizer_SetGlobalCoefficient)
    GetGlobalCoefficient = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizer_GetGlobalCoefficient)
    __swig_destroy__ = _ITKOptimizersBasePython.delete_itkParticleSwarmOptimizer
    cast = _swig_new_static_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizer_cast)
    GetPointer = _swig_new_instance_method(_ITKOptimizersBasePython.itkParticleSwarmOptimizer_GetPointer)

    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__()
        import itkTemplate
        itkTemplate.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkParticleSwarmOptimizer in _ITKOptimizersBasePython:
_ITKOptimizersBasePython.itkParticleSwarmOptimizer_swigregister(itkParticleSwarmOptimizer)

